summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-11-12 20:57:21 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-11-12 20:57:21 -0500
commit2e95c5575fb53107501f1a9a950d453048297148 (patch)
tree5018df60f9a8c750b50ce1ebff20456b6869a4c5
parentd0578ca9e0c144a8e2c32d874be2d48af65f4403 (diff)
sub_800AA60
-rw-r--r--asm/link.s83
-rw-r--r--common_syms/link.txt2
-rw-r--r--include/link.h2
-rw-r--r--src/link.c45
4 files changed, 46 insertions, 86 deletions
diff --git a/asm/link.s b/asm/link.s
index 60d1c9a8f..0d97ed0ca 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -5,83 +5,10 @@
.text
- thumb_func_start sub_800AA60
-sub_800AA60: @ 800AA60
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r3, 0
- ldr r0, =gUnknown_03003100
- ldrb r1, [r0]
- mov r9, r0
- cmp r3, r1
- bge _0800AAB4
- ldr r0, =gLinkPlayers
- mov r12, r0
- ldr r0, =gUnknown_02022A74
- ldr r2, =0x00002288
- mov r8, r2
- ldr r7, =gLinkType
- mov r6, r12
- adds r6, 0x14
- adds r5, r0, 0x4
- movs r4, 0
- adds r2, r1, 0
-_0800AA8A:
- mov r0, r12
- adds r0, 0x4
- adds r0, r4, r0
- ldr r1, [r0]
- ldr r0, [r5]
- cmp r1, r0
- bne _0800AAA8
- ldrh r0, [r7]
- cmp r0, r8
- bne _0800AAA6
- adds r1, r0, 0
- ldr r0, [r6]
- cmp r1, r0
- bne _0800AAA8
-_0800AAA6:
- adds r3, 0x1
-_0800AAA8:
- adds r6, 0x1C
- adds r5, 0x1C
- adds r4, 0x1C
- subs r2, 0x1
- cmp r2, 0
- bne _0800AA8A
-_0800AAB4:
- mov r0, r9
- ldrb r0, [r0]
- cmp r3, r0
- bne _0800AAE4
- bl sub_800ABAC
- lsls r0, 24
- lsrs r0, 24
- mov r1, r9
- ldrb r1, [r1]
- cmp r0, r1
- bne _0800AAE4
- movs r0, 0x1
- b _0800AAE6
- .pool
-_0800AAE4:
- movs r0, 0
-_0800AAE6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_800AA60
-
thumb_func_start sub_800AAF4
sub_800AAF4: @ 800AAF4
push {r4,r5,lr}
- ldr r5, =gUnknown_02022A74
+ ldr r5, =gSavedLinkPlayers
movs r4, 0x3
_0800AAFA:
adds r0, r5, 0
@@ -104,11 +31,11 @@ sub_800AB18: @ 800AB18
mov r7, r8
push {r7}
movs r4, 0
- ldr r0, =gUnknown_03003100
+ ldr r0, =gSavedLinkPlayerCount
ldrb r0, [r0]
cmp r4, r0
bcs _0800AB78
- ldr r6, =gUnknown_02022A74
+ ldr r6, =gSavedLinkPlayers
ldr r5, =gLinkPlayers
movs r0, 0x8
adds r0, r6
@@ -144,7 +71,7 @@ _0800AB6A:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_03003100
+ ldr r0, =gSavedLinkPlayerCount
ldrb r0, [r0]
cmp r4, r0
bcc _0800AB36
@@ -159,7 +86,7 @@ _0800AB78:
thumb_func_start sub_800AB98
sub_800AB98: @ 800AB98
- ldr r0, =gUnknown_03003100
+ ldr r0, =gSavedLinkPlayerCount
movs r1, 0
strb r1, [r0]
ldr r0, =gUnknown_03003120
diff --git a/common_syms/link.txt b/common_syms/link.txt
index 150e93e88..7ac33a869 100644
--- a/common_syms/link.txt
+++ b/common_syms/link.txt
@@ -17,7 +17,7 @@ gUnknown_030030F0
gUnknown_030030F4
gSuppressLinkErrorMessage
gSerialIsRFU
-gUnknown_03003100
+gSavedLinkPlayerCount
gSendCmd
gUnknown_03003120
gReceivedRemoteLinkPlayers
diff --git a/include/link.h b/include/link.h
index 283e13aa1..6231dd9e4 100644
--- a/include/link.h
+++ b/include/link.h
@@ -233,7 +233,7 @@ extern u8 gUnknown_030030F0[MAX_LINK_PLAYERS];
extern u16 gUnknown_030030F4;
extern u8 gSuppressLinkErrorMessage;
extern bool8 gSerialIsRFU;
-extern bool8 gUnknown_03003100;
+extern bool8 gSavedLinkPlayerCount;
extern u8 gUnknown_03003120;
extern struct LinkTestBGInfo gLinkTestBGInfo;
extern void (*gLinkCallback)(void);
diff --git a/src/link.c b/src/link.c
index d6bb7bd7d..1ccfb5158 100644
--- a/src/link.c
+++ b/src/link.c
@@ -77,7 +77,7 @@ u8 gUnknown_030030F0[MAX_LINK_PLAYERS];
u16 gUnknown_030030F4;
u8 gSuppressLinkErrorMessage;
bool8 gSerialIsRFU;
-bool8 gUnknown_03003100;
+bool8 gSavedLinkPlayerCount;
u16 gSendCmd[8];
u8 gUnknown_03003120;
bool8 gReceivedRemoteLinkPlayers;
@@ -106,7 +106,7 @@ EWRAM_DATA u16 gLinkType = 0;
EWRAM_DATA u16 gLinkTimeOutCounter = 0;
EWRAM_DATA struct LinkPlayer gLocalLinkPlayer = {};
EWRAM_DATA struct LinkPlayer gLinkPlayers[MAX_RFU_PLAYERS] = {};
-EWRAM_DATA struct LinkPlayer gUnknown_02022A74[MAX_RFU_PLAYERS] = {};
+EWRAM_DATA struct LinkPlayer gSavedLinkPlayers[MAX_RFU_PLAYERS] = {};
// Static ROM declarations
@@ -1257,7 +1257,7 @@ u8 sub_800A9A8(void)
u8 flags;
flags = 0;
- for (i = 0; i < gUnknown_03003100; i ++)
+ for (i = 0; i < gSavedLinkPlayerCount; i ++)
{
flags |= (1 << i);
}
@@ -1281,20 +1281,53 @@ void sub_800AA04(u8 a0)
{
int i;
- gUnknown_03003100 = a0;
+ gSavedLinkPlayerCount = a0;
gUnknown_03003120 = GetMultiplayerId();
for (i = 0; i < MAX_RFU_PLAYERS; i ++)
{
- gUnknown_02022A74[i] = gLinkPlayers[i];
+ gSavedLinkPlayers[i] = gLinkPlayers[i];
}
}
u8 sub_800AA48(void)
{
- return gUnknown_03003100;
+ return gSavedLinkPlayerCount;
}
u8 sub_800AA54(void)
{
return gUnknown_03003120;
}
+
+bool8 sub_800AA60(void)
+{
+ int i;
+ unsigned count;
+
+ count = 0;
+ for (i = 0; i < gSavedLinkPlayerCount; i ++)
+ {
+ if (gLinkPlayers[i].trainerId == gSavedLinkPlayers[i].trainerId)
+ {
+ if (gLinkType == 0x2288)
+ {
+ if (gLinkType == gLinkPlayers[i].linkType)
+ {
+ count ++;
+ }
+ }
+ else
+ {
+ count ++;
+ }
+ }
+ }
+ if (count == gSavedLinkPlayerCount)
+ {
+ if (sub_800ABAC() == gSavedLinkPlayerCount)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}