summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-11-12 22:30:00 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-11-12 22:30:00 -0500
commit16dba15c1c80ce545b4ed4178d42412bb98bdd33 (patch)
tree9143d3d72a6c19f74342100d71dde9c1375e5e4f
parent6fe7b33ae15d33896f7808e52ca921d4f5881941 (diff)
through sub_800AD88
-rw-r--r--asm/link.s70
-rw-r--r--src/link.c41
2 files changed, 40 insertions, 71 deletions
diff --git a/asm/link.s b/asm/link.s
index 0ba740590..d333c26f5 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -5,76 +5,6 @@
.text
- thumb_func_start sub_800AD5C
-sub_800AD5C: @ 800AD5C
- push {lr}
- ldr r0, =gUnknown_03004130
- ldrb r0, [r0]
- cmp r0, 0
- bne _0800AD72
- ldr r0, =0x00005fff
- bl BuildSendCmd
- ldr r1, =gLinkCallback
- ldr r0, =sub_800AD88
- str r0, [r1]
-_0800AD72:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800AD5C
-
- thumb_func_start sub_800AD88
-sub_800AD88: @ 800AD88
- push {r4,r5,lr}
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r3, r0, 24
- movs r1, 0
- movs r2, 0
- cmp r1, r3
- bge _0800ADB6
- ldr r5, =gUnknown_030030F0
- ldr r4, =gLinkPlayers
-_0800AD9E:
- ldrh r0, [r4, 0x1A]
- cmp r0, 0x1
- beq _0800ADAC
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, 0
- beq _0800ADAE
-_0800ADAC:
- adds r1, 0x1
-_0800ADAE:
- adds r4, 0x1C
- adds r2, 0x1
- cmp r2, r3
- blt _0800AD9E
-_0800ADB6:
- cmp r1, r3
- bne _0800ADDA
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x21
- negs r1, r1
- ands r0, r1
- str r0, [r2]
- ldr r0, =gLinkVSyncDisabled
- movs r4, 0x1
- strb r4, [r0]
- bl CloseLink
- ldr r1, =gLinkCallback
- movs r0, 0
- str r0, [r1]
- ldr r0, =gUnknown_030030E4
- strb r4, [r0]
-_0800ADDA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800AD88
-
thumb_func_start sub_800ADF8
sub_800ADF8: @ 800ADF8
push {lr}
diff --git a/src/link.c b/src/link.c
index ab1b9174c..b01e53789 100644
--- a/src/link.c
+++ b/src/link.c
@@ -134,7 +134,8 @@ static void LinkCB_RequestPlayerDataExchange(void);
static void Task_PrintTestData(u8 taskId);
static void sub_800AC80(void);
static void sub_800ACAC(void);
-void sub_800AD5C(void);
+static void sub_800AD5C(void);
+static void sub_800AD88(void);
void sub_800AEB4(void);
u8 sub_800B2F8(void);
void sub_800B4A4(void);
@@ -1485,3 +1486,41 @@ void sub_800AD10(void)
}
}
}
+
+static void sub_800AD5C(void)
+{
+ if (gUnknown_03004130 == 0)
+ {
+ BuildSendCmd(0x5fff);
+ gLinkCallback = sub_800AD88;
+ }
+}
+
+static void sub_800AD88(void)
+{
+ int i;
+ unsigned count;
+ u8 linkPlayerCount;
+
+ linkPlayerCount = GetLinkPlayerCount();
+ count = 0;
+ for (i = 0; i < linkPlayerCount; i ++)
+ {
+ if (gLinkPlayers[i].language == LANGUAGE_JAPANESE)
+ {
+ count ++;
+ }
+ else if (gUnknown_030030F0[i])
+ {
+ count ++;
+ }
+ }
+ if (count == linkPlayerCount)
+ {
+ gBattleTypeFlags &= ~BATTLE_TYPE_20;
+ gLinkVSyncDisabled = TRUE;
+ CloseLink();
+ gLinkCallback = NULL;
+ gUnknown_030030E4 = 1;
+ }
+}