mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-13 15:13:42 +01:00
sub_800A0C8
This commit is contained in:
parent
d76901ff64
commit
27f9dd0a97
167
asm/link.s
167
asm/link.s
@ -5,173 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_800A0C8
|
|
||||||
sub_800A0C8: @ 800A0C8
|
|
||||||
push {r4-r7,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
adds r6, r1, 0
|
|
||||||
movs r7, 0
|
|
||||||
ldr r0, =gReceivedRemoteLinkPlayers
|
|
||||||
ldrb r4, [r0]
|
|
||||||
cmp r4, 0x1
|
|
||||||
beq _0800A0DA
|
|
||||||
b _0800A214
|
|
||||||
_0800A0DA:
|
|
||||||
bl sub_800ABAC
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r5, r0
|
|
||||||
bgt _0800A0EA
|
|
||||||
cmp r0, r6
|
|
||||||
ble _0800A0FC
|
|
||||||
_0800A0EA:
|
|
||||||
ldr r1, =gUnknown_03000D5C
|
|
||||||
movs r0, 0x6
|
|
||||||
str r0, [r1]
|
|
||||||
b _0800A22E
|
|
||||||
.pool
|
|
||||||
_0800A0FC:
|
|
||||||
bl GetLinkPlayerCount
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0800A10E
|
|
||||||
ldr r0, =gUnknown_0300306C
|
|
||||||
strb r4, [r0]
|
|
||||||
bl sub_80097E8
|
|
||||||
_0800A10E:
|
|
||||||
movs r6, 0
|
|
||||||
ldr r4, =gLinkPlayers
|
|
||||||
movs r5, 0
|
|
||||||
b _0800A134
|
|
||||||
.pool
|
|
||||||
_0800A120:
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r0, 0x14
|
|
||||||
adds r0, r5, r0
|
|
||||||
ldr r1, [r0]
|
|
||||||
ldr r0, [r4, 0x14]
|
|
||||||
cmp r1, r0
|
|
||||||
bne _0800A130
|
|
||||||
adds r7, 0x1
|
|
||||||
_0800A130:
|
|
||||||
adds r5, 0x1C
|
|
||||||
adds r6, 0x1
|
|
||||||
_0800A134:
|
|
||||||
bl GetLinkPlayerCount
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r6, r0
|
|
||||||
blt _0800A120
|
|
||||||
bl GetLinkPlayerCount
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r7, r0
|
|
||||||
bne _0800A1AC
|
|
||||||
ldr r0, =gLinkPlayers
|
|
||||||
ldr r1, [r0, 0x14]
|
|
||||||
ldr r0, =0x00001133
|
|
||||||
cmp r1, r0
|
|
||||||
bne _0800A19C
|
|
||||||
bl sub_807A728
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _0800A184
|
|
||||||
cmp r0, 0x1
|
|
||||||
bgt _0800A178
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0800A19C
|
|
||||||
ldr r3, =gUnknown_03000D5C
|
|
||||||
b _0800A22C
|
|
||||||
.pool
|
|
||||||
_0800A178:
|
|
||||||
cmp r0, 0x2
|
|
||||||
beq _0800A190
|
|
||||||
ldr r3, =gUnknown_03000D5C
|
|
||||||
b _0800A22C
|
|
||||||
.pool
|
|
||||||
_0800A184:
|
|
||||||
ldr r1, =gUnknown_03000D5C
|
|
||||||
movs r0, 0x4
|
|
||||||
b _0800A1A0
|
|
||||||
.pool
|
|
||||||
_0800A190:
|
|
||||||
ldr r1, =gUnknown_03000D5C
|
|
||||||
movs r0, 0x5
|
|
||||||
b _0800A1A0
|
|
||||||
.pool
|
|
||||||
_0800A19C:
|
|
||||||
ldr r1, =gUnknown_03000D5C
|
|
||||||
movs r0, 0x1
|
|
||||||
_0800A1A0:
|
|
||||||
str r0, [r1]
|
|
||||||
adds r3, r1, 0
|
|
||||||
b _0800A22C
|
|
||||||
.pool
|
|
||||||
_0800A1AC:
|
|
||||||
ldr r6, =gUnknown_03000D5C
|
|
||||||
movs r0, 0x3
|
|
||||||
str r0, [r6]
|
|
||||||
ldr r4, =gLinkPlayers
|
|
||||||
bl GetMultiplayerId
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r1, r0, 3
|
|
||||||
subs r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r4, 0x14
|
|
||||||
adds r1, r4
|
|
||||||
ldr r5, [r1]
|
|
||||||
bl GetMultiplayerId
|
|
||||||
movs r1, 0x1
|
|
||||||
eors r0, r1
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
lsls r1, r0, 3
|
|
||||||
subs r1, r0
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r4
|
|
||||||
ldr r1, [r1]
|
|
||||||
ldr r2, =0x00002266
|
|
||||||
cmp r5, r2
|
|
||||||
bne _0800A1EA
|
|
||||||
ldr r0, =0x00002277
|
|
||||||
cmp r1, r0
|
|
||||||
beq _0800A1F6
|
|
||||||
_0800A1EA:
|
|
||||||
ldr r0, =0x00002277
|
|
||||||
adds r3, r6, 0
|
|
||||||
cmp r5, r0
|
|
||||||
bne _0800A22C
|
|
||||||
cmp r1, r2
|
|
||||||
bne _0800A22C
|
|
||||||
_0800A1F6:
|
|
||||||
ldr r1, =gSpecialVar_0x8005
|
|
||||||
movs r0, 0x3
|
|
||||||
strh r0, [r1]
|
|
||||||
ldr r3, =gUnknown_03000D5C
|
|
||||||
b _0800A22C
|
|
||||||
.pool
|
|
||||||
_0800A214:
|
|
||||||
ldr r0, =gUnknown_020229C8
|
|
||||||
ldrh r1, [r0]
|
|
||||||
adds r1, 0x1
|
|
||||||
strh r1, [r0]
|
|
||||||
lsls r1, 16
|
|
||||||
movs r0, 0x96
|
|
||||||
lsls r0, 18
|
|
||||||
ldr r3, =gUnknown_03000D5C
|
|
||||||
cmp r1, r0
|
|
||||||
bls _0800A22C
|
|
||||||
movs r0, 0x2
|
|
||||||
str r0, [r3]
|
|
||||||
_0800A22C:
|
|
||||||
ldrb r0, [r3]
|
|
||||||
_0800A22E:
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_800A0C8
|
|
||||||
|
|
||||||
thumb_func_start sub_800A23C
|
thumb_func_start sub_800A23C
|
||||||
sub_800A23C: @ 800A23C
|
sub_800A23C: @ 800A23C
|
||||||
push {r4-r6,lr}
|
push {r4-r6,lr}
|
||||||
|
12
include/trade.h
Normal file
12
include/trade.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#ifndef GUARD_TRADE_H
|
||||||
|
#define GUARD_TRADE_H
|
||||||
|
|
||||||
|
// Exported type declarations
|
||||||
|
|
||||||
|
// Exported RAM declarations
|
||||||
|
|
||||||
|
// Exported ROM declarations
|
||||||
|
|
||||||
|
int sub_807A728(void);
|
||||||
|
|
||||||
|
#endif //GUARD_TRADE_H
|
74
src/link.c
74
src/link.c
@ -13,6 +13,7 @@
|
|||||||
#include "gpu_regs.h"
|
#include "gpu_regs.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
|
#include "trade.h"
|
||||||
#include "link.h"
|
#include "link.h"
|
||||||
|
|
||||||
// Static type declarations
|
// Static type declarations
|
||||||
@ -768,3 +769,76 @@ void sub_800A0AC(void)
|
|||||||
gUnknown_020229C8 = 0;
|
gUnknown_020229C8 = 0;
|
||||||
sub_8009734();
|
sub_8009734();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 sub_800A0C8(int lower, int upper)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int count;
|
||||||
|
u32 index;
|
||||||
|
u8 cmpVal;
|
||||||
|
u32 linkType1;
|
||||||
|
u32 linkType2;
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
if (gReceivedRemoteLinkPlayers == TRUE)
|
||||||
|
{
|
||||||
|
cmpVal = sub_800ABAC();
|
||||||
|
if (lower > cmpVal || cmpVal > upper)
|
||||||
|
{
|
||||||
|
gUnknown_03000D5C = 6;
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (GetLinkPlayerCount() == 0)
|
||||||
|
{
|
||||||
|
gUnknown_0300306C = TRUE;
|
||||||
|
sub_80097E8();
|
||||||
|
}
|
||||||
|
for (i = 0, index = 0; i < GetLinkPlayerCount(); index ++, i ++)
|
||||||
|
{
|
||||||
|
if (gLinkPlayers[index].linkType == gLinkPlayers[0].linkType)
|
||||||
|
{
|
||||||
|
count ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (count == GetLinkPlayerCount())
|
||||||
|
{
|
||||||
|
if (gLinkPlayers[0].linkType == 0x1133)
|
||||||
|
{
|
||||||
|
switch (sub_807A728())
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
gUnknown_03000D5C = 4;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
gUnknown_03000D5C = 5;
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
gUnknown_03000D5C = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gUnknown_03000D5C = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gUnknown_03000D5C = 3;
|
||||||
|
linkType1 = gLinkPlayers[GetMultiplayerId()].linkType;
|
||||||
|
linkType2 = gLinkPlayers[GetMultiplayerId() ^ 1].linkType;
|
||||||
|
if ((linkType1 == 0x2266 && linkType2 == 0x2277) || (linkType1 == 0x2277 && linkType2 == 0x2266))
|
||||||
|
{
|
||||||
|
gSpecialVar_0x8005 = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (++ gUnknown_020229C8 > 600)
|
||||||
|
{
|
||||||
|
gUnknown_03000D5C = 2;
|
||||||
|
}
|
||||||
|
return gUnknown_03000D5C;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user