summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/link.s672
-rw-r--r--asm/link_rfu_2.s74
-rw-r--r--include/link.h6
-rw-r--r--src/ereader_helpers.c14
-rw-r--r--src/intro.c2
-rw-r--r--src/link.c164
-rw-r--r--src/mevent.c2
-rw-r--r--sym_bss.txt53
-rw-r--r--sym_common.txt14
-rw-r--r--sym_ewram.txt52
10 files changed, 425 insertions, 628 deletions
diff --git a/asm/link.s b/asm/link.s
index b5eefe73e..db9b022bd 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -5,282 +5,6 @@
.text
- thumb_func_start sub_800978C
-sub_800978C: @ 800978C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_800978C
-
- thumb_func_start sub_80097A0
-sub_80097A0: @ 80097A0
- push {lr}
- ldr r3, _080097C0 @ =gLinkOpen
- ldr r1, _080097C4 @ =gUnknown_3003F50
- ldr r2, _080097C8 @ =0x0000efff
- adds r0, r1, 0
- adds r0, 0xE
-_080097AC:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _080097AC
- movs r0, 0x1
- strb r0, [r3]
- bl sub_800B2F4
- pop {r0}
- bx r0
- .align 2, 0
-_080097C0: .4byte gLinkOpen
-_080097C4: .4byte gUnknown_3003F50
-_080097C8: .4byte 0x0000efff
- thumb_func_end sub_80097A0
-
- thumb_func_start task02_080097CC
-task02_080097CC: @ 80097CC
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080097FC @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080097F6
- ldr r1, _08009800 @ =gUnknown_3003F84
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r2, 0
- bl DestroyTask
-_080097F6:
- pop {r0}
- bx r0
- .align 2, 0
-_080097FC: .4byte gTasks
-_08009800: .4byte gUnknown_3003F84
- thumb_func_end task02_080097CC
-
- thumb_func_start OpenLink
-OpenLink: @ 8009804
- push {r4-r6,lr}
- ldr r0, _0800984C @ =gWirelessCommType
- ldrb r4, [r0]
- cmp r4, 0
- bne _08009878
- bl sub_800B388
- bl sub_80097A0
- ldr r1, _08009850 @ =gUnknown_3003F80
- ldr r0, _08009854 @ =sub_800A720
- str r0, [r1]
- ldr r0, _08009858 @ =gLinkVSyncDisabled
- strb r4, [r0]
- ldr r0, _0800985C @ =gUnknown_3003EAC
- strb r4, [r0]
- ldr r0, _08009860 @ =gUnknown_3003F38
- strb r4, [r0]
- bl ResetBlockReceivedFlags
- bl ResetBlockSend
- ldr r0, _08009864 @ =gUnknown_3000E4C
- str r4, [r0]
- ldr r0, _08009868 @ =gUnknown_3003F28
- strb r4, [r0]
- ldr r0, _0800986C @ =gUnknown_3003F24
- strb r4, [r0]
- ldr r0, _08009870 @ =gUnknown_3003F34
- strh r4, [r0]
- ldr r0, _08009874 @ =task02_080097CC
- movs r1, 0x2
- bl CreateTask
- b _0800987C
- .align 2, 0
-_0800984C: .4byte gWirelessCommType
-_08009850: .4byte gUnknown_3003F80
-_08009854: .4byte sub_800A720
-_08009858: .4byte gLinkVSyncDisabled
-_0800985C: .4byte gUnknown_3003EAC
-_08009860: .4byte gUnknown_3003F38
-_08009864: .4byte gUnknown_3000E4C
-_08009868: .4byte gUnknown_3003F28
-_0800986C: .4byte gUnknown_3003F24
-_08009870: .4byte gUnknown_3003F34
-_08009874: .4byte task02_080097CC
-_08009878:
- bl sub_80F86F4
-_0800987C:
- ldr r1, _080098A8 @ =gReceivedRemoteLinkPlayers
- movs r0, 0
- strb r0, [r1]
- movs r1, 0
- ldr r6, _080098AC @ =gUnknown_3003EB8
- movs r2, 0
- movs r5, 0x1
- ldr r4, _080098B0 @ =gUnknown_3003F30
- ldr r3, _080098B4 @ =gUnknown_3003F2C
-_0800988E:
- adds r0, r1, r6
- strb r5, [r0]
- adds r0, r1, r4
- strb r2, [r0]
- adds r0, r1, r3
- strb r2, [r0]
- adds r1, 0x1
- cmp r1, 0x3
- ble _0800988E
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080098A8: .4byte gReceivedRemoteLinkPlayers
-_080098AC: .4byte gUnknown_3003EB8
-_080098B0: .4byte gUnknown_3003F30
-_080098B4: .4byte gUnknown_3003F2C
- thumb_func_end OpenLink
-
- thumb_func_start CloseLink
-CloseLink: @ 80098B8
- push {r4,lr}
- ldr r0, _080098DC @ =gReceivedRemoteLinkPlayers
- movs r4, 0
- strb r4, [r0]
- ldr r0, _080098E0 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _080098CC
- bl sub_80F8DC0
-_080098CC:
- ldr r0, _080098E4 @ =gLinkOpen
- strb r4, [r0]
- bl sub_800B29C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080098DC: .4byte gReceivedRemoteLinkPlayers
-_080098E0: .4byte gWirelessCommType
-_080098E4: .4byte gLinkOpen
- thumb_func_end CloseLink
-
- thumb_func_start TestBlockTransfer
-TestBlockTransfer: @ 80098E8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r5, _080099AC @ =gUnknown_3000E5C
- ldr r4, _080099B0 @ =gUnknown_3000E08
- ldrb r0, [r5]
- ldrh r1, [r4]
- cmp r0, r1
- beq _0800990C
- ldrh r0, [r4]
- movs r1, 0x2
- movs r2, 0x3
- movs r3, 0x2
- bl sub_800A684
- ldrh r0, [r4]
- strb r0, [r5]
-_0800990C:
- movs r5, 0
- ldr r7, _080099B4 @ =gUnknown_3000E18
-_08009910:
- ldr r0, _080099B8 @ =gUnknown_3000E60
- adds r6, r5, r0
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 2
- adds r4, r0, r7
- ldrb r0, [r6]
- ldrh r1, [r4]
- cmp r0, r1
- beq _08009938
- ldrh r0, [r4]
- adds r2, r5, 0x4
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x2
- movs r3, 0x2
- bl sub_800A684
- ldrh r0, [r4]
- strb r0, [r6]
-_08009938:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _08009910
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xF
- bne _0800999E
- movs r5, 0
- ldr r0, _080099B4 @ =gUnknown_3000E18
- mov r9, r0
- ldr r1, _080099BC @ =0x00000342
- mov r8, r1
-_08009958:
- adds r0, r7, 0
- asrs r0, r5
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08009994
- lsls r0, r5, 8
- ldr r1, _080099C0 @ =gBlockRecvBuffer
- adds r0, r1
- lsls r4, r5, 1
- adds r1, r4, r5
- lsls r1, 2
- add r1, r9
- ldrh r1, [r1, 0x2]
- bl LinkTestCalcBlockChecksum
- ldr r1, _080099C4 @ =gUnknown_3003F88
- adds r4, r1
- movs r6, 0
- strh r0, [r4]
- adds r0, r5, 0
- bl ResetBlockReceivedFlag
- ldrh r0, [r4]
- cmp r0, r8
- beq _08009994
- ldr r0, _080099C8 @ =gLinkTestDebugValuesEnabled
- strb r6, [r0]
- ldr r0, _080099CC @ =gUnknown_2022111
- strb r6, [r0]
-_08009994:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _08009958
-_0800999E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080099AC: .4byte gUnknown_3000E5C
-_080099B0: .4byte gUnknown_3000E08
-_080099B4: .4byte gUnknown_3000E18
-_080099B8: .4byte gUnknown_3000E60
-_080099BC: .4byte 0x00000342
-_080099C0: .4byte gBlockRecvBuffer
-_080099C4: .4byte gUnknown_3003F88
-_080099C8: .4byte gLinkTestDebugValuesEnabled
-_080099CC: .4byte gUnknown_2022111
- thumb_func_end TestBlockTransfer
-
thumb_func_start LinkTestProcessKeyInput
LinkTestProcessKeyInput: @ 80099D0
push {r4,r5,lr}
@@ -291,7 +15,7 @@ LinkTestProcessKeyInput: @ 80099D0
ands r0, r1
cmp r0, 0
beq _080099E6
- ldr r1, _08009A74 @ =gUnknown_3003F84
+ ldr r1, _08009A74 @ =gShouldAdvanceLinkState
movs r0, 0x1
strb r0, [r1]
_080099E6:
@@ -350,7 +74,7 @@ _08009A46:
ldr r2, [r4, 0x24]
ldr r0, _08009A84 @ =gLinkVSyncDisabled
ldrb r1, [r0]
- ldr r0, _08009A88 @ =gUnknown_3003F80
+ ldr r0, _08009A88 @ =gLinkCallback
ldr r0, [r0]
cmp r0, 0
bne _08009A60
@@ -366,12 +90,12 @@ _08009A66:
bx r0
.align 2, 0
_08009A70: .4byte gMain
-_08009A74: .4byte gUnknown_3003F84
+_08009A74: .4byte gShouldAdvanceLinkState
_08009A78: .4byte gHeap + 0x4000
_08009A7C: .4byte 0x00002004
_08009A80: .4byte gLinkTestDebugValuesEnabled
_08009A84: .4byte gLinkVSyncDisabled
-_08009A88: .4byte gUnknown_3003F80
+_08009A88: .4byte gLinkCallback
thumb_func_end LinkTestProcessKeyInput
thumb_func_start CB2_LinkTest
@@ -405,7 +129,7 @@ _08009AC0: .4byte gLinkOpen
_08009AC4:
movs r1, 0
ldr r5, _08009B14 @ =gUnknown_3003EC4
- ldr r3, _08009B18 @ =gUnknown_3003F50
+ ldr r3, _08009B18 @ =gSendCmd
movs r2, 0
_08009ACC:
lsls r0, r1, 1
@@ -429,7 +153,7 @@ _08009ACC:
lsls r0, 26
lsrs r0, 30
bl sub_8009B70
- ldr r0, _08009B24 @ =gUnknown_3003F80
+ ldr r0, _08009B24 @ =gLinkCallback
ldr r0, [r0]
cmp r0, 0
beq _08009B04
@@ -445,10 +169,10 @@ _08009B0C:
bx r1
.align 2, 0
_08009B14: .4byte gUnknown_3003EC4
-_08009B18: .4byte gUnknown_3003F50
+_08009B18: .4byte gSendCmd
_08009B1C: .4byte gUnknown_3003F20
_08009B20: .4byte 0x04000128
-_08009B24: .4byte gUnknown_3003F80
+_08009B24: .4byte gLinkCallback
thumb_func_end LinkMain2
thumb_func_start HandleReceiveRemoteLinkPlayer
@@ -457,14 +181,14 @@ HandleReceiveRemoteLinkPlayer: @ 8009B28
lsls r0, 24
lsrs r0, 24
movs r5, 0
- ldr r1, _08009B3C @ =gUnknown_3003EB8
+ ldr r1, _08009B3C @ =gRemoteLinkPlayersNotReceived
adds r0, r1
strb r5, [r0]
movs r4, 0
adds r6, r1, 0
b _08009B48
.align 2, 0
-_08009B3C: .4byte gUnknown_3003EB8
+_08009B3C: .4byte gRemoteLinkPlayersNotReceived
_08009B40:
adds r0, r4, r6
ldrb r0, [r0]
@@ -640,7 +364,7 @@ _08009C94:
mov r7, r12
adds r1, r7, r6
lsls r1, 2
- ldr r0, _08009CB8 @ =gUnknown_3000E18
+ ldr r0, _08009CB8 @ =sBlockRecv
adds r1, r0
movs r2, 0
strh r2, [r1]
@@ -656,13 +380,13 @@ _08009C94:
strb r0, [r1, 0x9]
b _08009E3E
.align 2, 0
-_08009CB8: .4byte gUnknown_3000E18
+_08009CB8: .4byte sBlockRecv
_08009CBC: .4byte gRecvCmds
_08009CC0:
mov r3, r12
adds r0, r3, r6
lsls r0, 2
- ldr r5, _08009D04 @ =gUnknown_3000E18
+ ldr r5, _08009D04 @ =sBlockRecv
adds r3, r0, r5
ldrh r1, [r3, 0x2]
movs r0, 0x80
@@ -695,7 +419,7 @@ _08009CE4:
bls _08009CE4
b _08009D40
.align 2, 0
-_08009D04: .4byte gUnknown_3000E18
+_08009D04: .4byte sBlockRecv
_08009D08: .4byte gDecompressionBuffer
_08009D0C: .4byte gRecvCmds
_08009D10:
@@ -738,7 +462,7 @@ _08009D40:
ldrh r1, [r1, 0x2]
cmp r0, r1
bcc _08009E3E
- ldr r0, _08009DCC @ =gUnknown_3003EB8
+ ldr r0, _08009DCC @ =gRemoteLinkPlayersNotReceived
adds r0, r6, r0
ldrb r0, [r0]
cmp r0, 0x1
@@ -792,7 +516,7 @@ _08009DBC:
.align 2, 0
_08009DC4: .4byte gBlockRecvBuffer
_08009DC8: .4byte gRecvCmds
-_08009DCC: .4byte gUnknown_3003EB8
+_08009DCC: .4byte gRemoteLinkPlayersNotReceived
_08009DD0: .4byte gLinkPlayers
_08009DD4: .4byte gUnknown_82345C0
_08009DD8: .4byte c2_800ACD4
@@ -954,31 +678,31 @@ _08009EFC:
.align 2, 0
_08009F04: .4byte 0x0000cccc
_08009F08:
- ldr r0, _08009F14 @ =gUnknown_3003F50
+ ldr r0, _08009F14 @ =gSendCmd
strh r2, [r0]
ldr r1, _08009F18 @ =gLinkType
ldrh r1, [r1]
b _08009FD4
.align 2, 0
-_08009F14: .4byte gUnknown_3003F50
+_08009F14: .4byte gSendCmd
_08009F18: .4byte gLinkType
_08009F1C:
- ldr r0, _08009F28 @ =gUnknown_3003F50
+ ldr r0, _08009F28 @ =gSendCmd
strh r2, [r0]
ldr r1, _08009F2C @ =gMain
ldrh r1, [r1, 0x2C]
b _08009FD4
.align 2, 0
-_08009F28: .4byte gUnknown_3003F50
+_08009F28: .4byte gSendCmd
_08009F2C: .4byte gMain
_08009F30:
- ldr r0, _08009F38 @ =gUnknown_3003F50
+ ldr r0, _08009F38 @ =gSendCmd
movs r1, 0
b _08009FD2
.align 2, 0
-_08009F38: .4byte gUnknown_3003F50
+_08009F38: .4byte gSendCmd
_08009F3C:
- ldr r0, _08009F58 @ =gUnknown_3003F50
+ ldr r0, _08009F58 @ =gSendCmd
strh r2, [r0]
movs r1, 0
adds r3, r0, 0
@@ -994,11 +718,11 @@ _08009F46:
bls _08009F46
b _08009FD6
.align 2, 0
-_08009F58: .4byte gUnknown_3003F50
+_08009F58: .4byte gSendCmd
_08009F5C:
- ldr r1, _08009F70 @ =gUnknown_3003F50
+ ldr r1, _08009F70 @ =gSendCmd
strh r2, [r1]
- ldr r2, _08009F74 @ =gUnknown_3000E08
+ ldr r2, _08009F74 @ =sBlockSend
ldrh r0, [r2, 0x2]
strh r0, [r1, 0x2]
ldrb r0, [r2, 0x9]
@@ -1006,41 +730,41 @@ _08009F5C:
strh r0, [r1, 0x4]
b _08009FD6
.align 2, 0
-_08009F70: .4byte gUnknown_3003F50
-_08009F74: .4byte gUnknown_3000E08
+_08009F70: .4byte gSendCmd
+_08009F74: .4byte sBlockSend
_08009F78:
- ldr r0, _08009F84 @ =gUnknown_3003F50
+ ldr r0, _08009F84 @ =gSendCmd
strh r2, [r0]
ldr r1, _08009F88 @ =gSpecialVar_ItemId
ldrh r1, [r1]
b _08009FD4
.align 2, 0
-_08009F84: .4byte gUnknown_3003F50
+_08009F84: .4byte gSendCmd
_08009F88: .4byte gSpecialVar_ItemId
_08009F8C:
- ldr r0, _08009F98 @ =gUnknown_3003F50
+ ldr r0, _08009F98 @ =gSendCmd
strh r2, [r0]
ldr r1, _08009F9C @ =gUnknown_3003F90
ldrb r1, [r1]
b _08009FD4
.align 2, 0
-_08009F98: .4byte gUnknown_3003F50
+_08009F98: .4byte gSendCmd
_08009F9C: .4byte gUnknown_3003F90
_08009FA0:
- ldr r0, _08009FAC @ =gUnknown_3003F50
+ ldr r0, _08009FAC @ =gSendCmd
strh r2, [r0]
ldr r1, _08009FB0 @ =gUnknown_3003F34
ldrh r1, [r1]
b _08009FD4
.align 2, 0
-_08009FAC: .4byte gUnknown_3003F50
+_08009FAC: .4byte gSendCmd
_08009FB0: .4byte gUnknown_3003F34
_08009FB4:
- ldr r0, _08009FBC @ =gUnknown_3003F50
+ ldr r0, _08009FBC @ =gSendCmd
strh r2, [r0]
b _08009FD6
.align 2, 0
-_08009FBC: .4byte gUnknown_3003F50
+_08009FBC: .4byte gSendCmd
_08009FC0:
ldr r0, _08009FDC @ =gUnknown_3005028
ldrh r1, [r0]
@@ -1050,7 +774,7 @@ _08009FC0:
ldrb r0, [r0]
cmp r0, 0
bne _08009FD6
- ldr r0, _08009FE4 @ =gUnknown_3003F50
+ ldr r0, _08009FE4 @ =gSendCmd
_08009FD2:
strh r2, [r0]
_08009FD4:
@@ -1061,7 +785,7 @@ _08009FD6:
.align 2, 0
_08009FDC: .4byte gUnknown_3005028
_08009FE0: .4byte gLinkTransferringData
-_08009FE4: .4byte gUnknown_3003F50
+_08009FE4: .4byte gSendCmd
thumb_func_end sub_8009E60
thumb_func_start sub_8009FE8
@@ -1073,14 +797,14 @@ sub_8009FE8: @ 8009FE8
beq _08009FF6
bl sub_80F9828
_08009FF6:
- ldr r1, _0800A004 @ =gUnknown_3003F80
+ ldr r1, _0800A004 @ =gLinkCallback
ldr r0, _0800A008 @ =sub_800A040
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0800A000: .4byte gWirelessCommType
-_0800A004: .4byte gUnknown_3003F80
+_0800A004: .4byte gLinkCallback
_0800A008: .4byte sub_800A040
thumb_func_end sub_8009FE8
@@ -1096,7 +820,7 @@ sub_800A00C: @ 800A00C
.align 2, 0
_0800A01C: .4byte gWirelessCommType
_0800A020:
- ldr r0, _0800A030 @ =gUnknown_3003F80
+ ldr r0, _0800A030 @ =gLinkCallback
ldr r1, [r0]
ldr r0, _0800A034 @ =sub_800A040
cmp r1, r0
@@ -1104,7 +828,7 @@ _0800A020:
movs r0, 0
b _0800A03A
.align 2, 0
-_0800A030: .4byte gUnknown_3003F80
+_0800A030: .4byte gLinkCallback
_0800A034: .4byte sub_800A040
_0800A038:
movs r0, 0x1
@@ -1132,12 +856,12 @@ _0800A058: .4byte 0x0000cafe
thumb_func_start sub_800A05C
sub_800A05C: @ 800A05C
- ldr r1, _0800A064 @ =gUnknown_3003F80
+ ldr r1, _0800A064 @ =gLinkCallback
movs r0, 0
str r0, [r1]
bx lr
.align 2, 0
-_0800A064: .4byte gUnknown_3003F80
+_0800A064: .4byte gLinkCallback
thumb_func_end sub_800A05C
thumb_func_start sub_800A068
@@ -1152,13 +876,13 @@ sub_800A068: @ 800A068
.align 2, 0
_0800A078: .4byte gWirelessCommType
_0800A07C:
- ldr r0, _0800A084 @ =gUnknown_3003F80
+ ldr r0, _0800A084 @ =gLinkCallback
str r1, [r0]
_0800A080:
pop {r0}
bx r0
.align 2, 0
-_0800A084: .4byte gUnknown_3003F80
+_0800A084: .4byte gLinkCallback
thumb_func_end sub_800A068
thumb_func_start GetLinkPlayerCount
@@ -1189,7 +913,7 @@ _0800A0B0:
thumb_func_start sub_800A0B4
sub_800A0B4: @ 800A0B4
push {lr}
- ldr r0, _0800A0C8 @ =gUnknown_3000E54
+ ldr r0, _0800A0C8 @ =sPlayerDataExchangeStatus
movs r1, 0
str r1, [r0]
ldr r0, _0800A0CC @ =gLinkTimeOutCounter
@@ -1198,7 +922,7 @@ sub_800A0B4: @ 800A0B4
pop {r0}
bx r0
.align 2, 0
-_0800A0C8: .4byte gUnknown_3000E54
+_0800A0C8: .4byte sPlayerDataExchangeStatus
_0800A0CC: .4byte gLinkTimeOutCounter
thumb_func_end sub_800A0B4
@@ -1220,19 +944,19 @@ sub_800A0D0: @ 800A0D0
cmp r0, r6
ble _0800A100
_0800A0F0:
- ldr r1, _0800A0FC @ =gUnknown_3000E54
+ ldr r1, _0800A0FC @ =sPlayerDataExchangeStatus
movs r0, 0x6
str r0, [r1]
b _0800A1E2
.align 2, 0
_0800A0F8: .4byte gReceivedRemoteLinkPlayers
-_0800A0FC: .4byte gUnknown_3000E54
+_0800A0FC: .4byte sPlayerDataExchangeStatus
_0800A100:
bl GetLinkPlayerCount
lsls r0, 24
cmp r0, 0
bne _0800A112
- ldr r0, _0800A11C @ =gUnknown_3003EAC
+ ldr r0, _0800A11C @ =gLinkErrorOccurred
strb r4, [r0]
bl CloseLink
_0800A112:
@@ -1241,7 +965,7 @@ _0800A112:
movs r5, 0
b _0800A138
.align 2, 0
-_0800A11C: .4byte gUnknown_3003EAC
+_0800A11C: .4byte gLinkErrorOccurred
_0800A120: .4byte gLinkPlayers
_0800A124:
adds r0, r4, 0
@@ -1278,52 +1002,52 @@ _0800A138:
bgt _0800A17C
cmp r0, 0
beq _0800A188
- ldr r2, _0800A178 @ =gUnknown_3000E54
+ ldr r2, _0800A178 @ =sPlayerDataExchangeStatus
b _0800A1E0
.align 2, 0
_0800A170: .4byte gLinkPlayers
_0800A174: .4byte 0x00001133
-_0800A178: .4byte gUnknown_3000E54
+_0800A178: .4byte sPlayerDataExchangeStatus
_0800A17C:
cmp r0, 0x2
beq _0800A1A0
- ldr r2, _0800A184 @ =gUnknown_3000E54
+ ldr r2, _0800A184 @ =sPlayerDataExchangeStatus
b _0800A1E0
.align 2, 0
-_0800A184: .4byte gUnknown_3000E54
+_0800A184: .4byte sPlayerDataExchangeStatus
_0800A188:
- ldr r1, _0800A190 @ =gUnknown_3000E54
+ ldr r1, _0800A190 @ =sPlayerDataExchangeStatus
movs r0, 0x1
b _0800A1BC
.align 2, 0
-_0800A190: .4byte gUnknown_3000E54
+_0800A190: .4byte sPlayerDataExchangeStatus
_0800A194:
- ldr r1, _0800A19C @ =gUnknown_3000E54
+ ldr r1, _0800A19C @ =sPlayerDataExchangeStatus
movs r0, 0x4
b _0800A1BC
.align 2, 0
-_0800A19C: .4byte gUnknown_3000E54
+_0800A19C: .4byte sPlayerDataExchangeStatus
_0800A1A0:
- ldr r1, _0800A1A8 @ =gUnknown_3000E54
+ ldr r1, _0800A1A8 @ =sPlayerDataExchangeStatus
movs r0, 0x5
b _0800A1BC
.align 2, 0
-_0800A1A8: .4byte gUnknown_3000E54
+_0800A1A8: .4byte sPlayerDataExchangeStatus
_0800A1AC:
- ldr r1, _0800A1B4 @ =gUnknown_3000E54
+ ldr r1, _0800A1B4 @ =sPlayerDataExchangeStatus
movs r0, 0x1
b _0800A1BC
.align 2, 0
-_0800A1B4: .4byte gUnknown_3000E54
+_0800A1B4: .4byte sPlayerDataExchangeStatus
_0800A1B8:
- ldr r1, _0800A1C4 @ =gUnknown_3000E54
+ ldr r1, _0800A1C4 @ =sPlayerDataExchangeStatus
movs r0, 0x3
_0800A1BC:
str r0, [r1]
adds r2, r1, 0
b _0800A1E0
.align 2, 0
-_0800A1C4: .4byte gUnknown_3000E54
+_0800A1C4: .4byte sPlayerDataExchangeStatus
_0800A1C8:
ldr r0, _0800A1E8 @ =gLinkTimeOutCounter
ldrh r1, [r0]
@@ -1332,7 +1056,7 @@ _0800A1C8:
lsls r1, 16
movs r0, 0x96
lsls r0, 18
- ldr r2, _0800A1EC @ =gUnknown_3000E54
+ ldr r2, _0800A1EC @ =sPlayerDataExchangeStatus
cmp r1, r0
bls _0800A1E0
movs r0, 0x2
@@ -1345,7 +1069,7 @@ _0800A1E2:
bx r1
.align 2, 0
_0800A1E8: .4byte gLinkTimeOutCounter
-_0800A1EC: .4byte gUnknown_3000E54
+_0800A1EC: .4byte sPlayerDataExchangeStatus
thumb_func_end sub_800A0D0
thumb_func_start IsLinkPlayerDataExchangeComplete
@@ -1387,14 +1111,14 @@ _0800A220:
cmp r6, r0
bne _0800A244
movs r2, 0x1
- ldr r0, _0800A240 @ =gUnknown_3000E54
+ ldr r0, _0800A240 @ =sPlayerDataExchangeStatus
str r2, [r0]
b _0800A24C
.align 2, 0
-_0800A240: .4byte gUnknown_3000E54
+_0800A240: .4byte sPlayerDataExchangeStatus
_0800A244:
movs r2, 0
- ldr r1, _0800A254 @ =gUnknown_3000E54
+ ldr r1, _0800A254 @ =sPlayerDataExchangeStatus
movs r0, 0x3
str r0, [r1]
_0800A24C:
@@ -1403,7 +1127,7 @@ _0800A24C:
pop {r1}
bx r1
.align 2, 0
-_0800A254: .4byte gUnknown_3000E54
+_0800A254: .4byte sPlayerDataExchangeStatus
thumb_func_end IsLinkPlayerDataExchangeComplete
thumb_func_start GetLinkPlayerTrainerId
@@ -1445,7 +1169,7 @@ _0800A290: .4byte gLinkPlayers
thumb_func_start ResetBlockSend
ResetBlockSend: @ 800A294
- ldr r1, _0800A2A4 @ =gUnknown_3000E08
+ ldr r1, _0800A2A4 @ =sBlockSend
movs r0, 0
strb r0, [r1, 0x8]
strh r0, [r1]
@@ -1453,7 +1177,7 @@ ResetBlockSend: @ 800A294
str r0, [r1, 0x4]
bx lr
.align 2, 0
-_0800A2A4: .4byte gUnknown_3000E08
+_0800A2A4: .4byte sBlockSend
thumb_func_end ResetBlockSend
thumb_func_start InitBlockSend
@@ -1461,14 +1185,14 @@ InitBlockSend: @ 800A2A8
push {r4-r7,lr}
adds r7, r0, 0
adds r6, r1, 0
- ldr r4, _0800A2BC @ =gUnknown_3000E08
+ ldr r4, _0800A2BC @ =sBlockSend
ldrb r5, [r4, 0x8]
cmp r5, 0
beq _0800A2C0
movs r0, 0
b _0800A2FE
.align 2, 0
-_0800A2BC: .4byte gUnknown_3000E08
+_0800A2BC: .4byte sBlockSend
_0800A2C0:
bl GetMultiplayerId
strb r0, [r4, 0x9]
@@ -1494,10 +1218,10 @@ _0800A2E8:
_0800A2EA:
ldr r0, _0800A308 @ =0x0000bbbb
bl sub_8009E60
- ldr r1, _0800A30C @ =gUnknown_3003F80
+ ldr r1, _0800A30C @ =gLinkCallback
ldr r0, _0800A310 @ =LinkCB_BlockSendBegin
str r0, [r1]
- ldr r1, _0800A314 @ =gUnknown_3000E48
+ ldr r1, _0800A314 @ =sBlockSendDelayCounter
movs r0, 0
str r0, [r1]
movs r0, 0x1
@@ -1508,38 +1232,38 @@ _0800A2FE:
.align 2, 0
_0800A304: .4byte gBlockSendBuffer
_0800A308: .4byte 0x0000bbbb
-_0800A30C: .4byte gUnknown_3003F80
+_0800A30C: .4byte gLinkCallback
_0800A310: .4byte LinkCB_BlockSendBegin
-_0800A314: .4byte gUnknown_3000E48
+_0800A314: .4byte sBlockSendDelayCounter
thumb_func_end InitBlockSend
thumb_func_start LinkCB_BlockSendBegin
LinkCB_BlockSendBegin: @ 800A318
push {lr}
- ldr r1, _0800A330 @ =gUnknown_3000E48
+ ldr r1, _0800A330 @ =sBlockSendDelayCounter
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
cmp r0, 0x2
bls _0800A32C
- ldr r1, _0800A334 @ =gUnknown_3003F80
+ ldr r1, _0800A334 @ =gLinkCallback
ldr r0, _0800A338 @ =LinkCB_BlockSend
str r0, [r1]
_0800A32C:
pop {r0}
bx r0
.align 2, 0
-_0800A330: .4byte gUnknown_3000E48
-_0800A334: .4byte gUnknown_3003F80
+_0800A330: .4byte sBlockSendDelayCounter
+_0800A334: .4byte gLinkCallback
_0800A338: .4byte LinkCB_BlockSend
thumb_func_end LinkCB_BlockSendBegin
thumb_func_start LinkCB_BlockSend
LinkCB_BlockSend: @ 800A33C
push {r4-r6,lr}
- ldr r0, _0800A38C @ =gUnknown_3000E08
+ ldr r0, _0800A38C @ =sBlockSend
ldr r5, [r0, 0x4]
- ldr r2, _0800A390 @ =gUnknown_3003F50
+ ldr r2, _0800A390 @ =gSendCmd
ldr r1, _0800A394 @ =0x00008888
strh r1, [r2]
movs r3, 0
@@ -1570,7 +1294,7 @@ _0800A350:
bhi _0800A384
movs r0, 0
strb r0, [r4, 0x8]
- ldr r1, _0800A398 @ =gUnknown_3003F80
+ ldr r1, _0800A398 @ =gLinkCallback
ldr r0, _0800A39C @ =sub_800A3A0
str r0, [r1]
_0800A384:
@@ -1578,21 +1302,21 @@ _0800A384:
pop {r0}
bx r0
.align 2, 0
-_0800A38C: .4byte gUnknown_3000E08
-_0800A390: .4byte gUnknown_3003F50
+_0800A38C: .4byte sBlockSend
+_0800A390: .4byte gSendCmd
_0800A394: .4byte 0x00008888
-_0800A398: .4byte gUnknown_3003F80
+_0800A398: .4byte gLinkCallback
_0800A39C: .4byte sub_800A3A0
thumb_func_end LinkCB_BlockSend
thumb_func_start sub_800A3A0
sub_800A3A0: @ 800A3A0
- ldr r1, _0800A3A8 @ =gUnknown_3003F80
+ ldr r1, _0800A3A8 @ =gLinkCallback
movs r0, 0
str r0, [r1]
bx lr
.align 2, 0
-_0800A3A8: .4byte gUnknown_3003F80
+_0800A3A8: .4byte gLinkCallback
thumb_func_end sub_800A3A0
thumb_func_start sub_800A3AC
@@ -1617,13 +1341,13 @@ sub_800A3CC: @ 800A3CC
ldr r1, _0800A3DC @ =gUnknown_2022114
movs r0, 0
str r0, [r1]
- ldr r1, _0800A3E0 @ =gUnknown_3003F80
+ ldr r1, _0800A3E0 @ =gLinkCallback
ldr r0, _0800A3E4 @ =sub_800A3AC
str r0, [r1]
bx lr
.align 2, 0
_0800A3DC: .4byte gUnknown_2022114
-_0800A3E0: .4byte gUnknown_3003F80
+_0800A3E0: .4byte gLinkCallback
_0800A3E4: .4byte sub_800A3AC
thumb_func_end sub_800A3CC
@@ -1731,14 +1455,14 @@ sub_800A474: @ 800A474
.align 2, 0
_0800A490: .4byte gWirelessCommType
_0800A494:
- ldr r0, _0800A4A0 @ =gUnknown_3003F80
+ ldr r0, _0800A4A0 @ =gLinkCallback
ldr r0, [r0]
cmp r0, 0
beq _0800A4A4
movs r0, 0
b _0800A4B0
.align 2, 0
-_0800A4A0: .4byte gUnknown_3003F80
+_0800A4A0: .4byte gLinkCallback
_0800A4A4:
ldr r0, _0800A4B4 @ =gUnknown_3003F90
strb r2, [r0]
@@ -1768,7 +1492,7 @@ IsLinkTaskFinished: @ 800A4BC
_0800A4D0: .4byte gWirelessCommType
_0800A4D4:
movs r1, 0
- ldr r0, _0800A4E8 @ =gUnknown_3003F80
+ ldr r0, _0800A4E8 @ =gLinkCallback
ldr r0, [r0]
cmp r0, 0
bne _0800A4E0
@@ -1779,7 +1503,7 @@ _0800A4E2:
pop {r1}
bx r1
.align 2, 0
-_0800A4E8: .4byte gUnknown_3003F80
+_0800A4E8: .4byte gLinkCallback
thumb_func_end IsLinkTaskFinished
thumb_func_start GetBlockReceivedStatus
@@ -1916,7 +1640,7 @@ CheckShouldAdvanceLinkState: @ 800A5BC
ands r1, r0
cmp r1, 0x4
bls _0800A5D8
- ldr r1, _0800A5E0 @ =gUnknown_3003F84
+ ldr r1, _0800A5E0 @ =gShouldAdvanceLinkState
movs r0, 0x1
strb r0, [r1]
_0800A5D8:
@@ -1924,7 +1648,7 @@ _0800A5D8:
bx r0
.align 2, 0
_0800A5DC: .4byte gUnknown_3003F20
-_0800A5E0: .4byte gUnknown_3003F84
+_0800A5E0: .4byte gShouldAdvanceLinkState
thumb_func_end CheckShouldAdvanceLinkState
thumb_func_start LinkTestCalcBlockChecksum
@@ -2019,8 +1743,8 @@ sub_800A64C: @ 800A64C
_0800A680: .4byte gLinkTestBGInfo
thumb_func_end sub_800A64C
- thumb_func_start sub_800A684
-sub_800A684: @ 800A684
+ thumb_func_start LinkTest_prnthex
+LinkTest_prnthex: @ 800A684
push {r4-r7,lr}
sub sp, 0x10
adds r5, r0, 0
@@ -2066,7 +1790,7 @@ _0800A6D0:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_800A684
+ thumb_func_end LinkTest_prnthex
thumb_func_start sub_800A6D8
sub_800A6D8: @ 800A6D8
@@ -2110,8 +1834,8 @@ _0800A718:
bx r0
thumb_func_end sub_800A6D8
- thumb_func_start sub_800A720
-sub_800A720: @ 800A720
+ thumb_func_start LinkCB_RequestPlayerDataExchange
+LinkCB_RequestPlayerDataExchange: @ 800A720
push {lr}
ldr r0, _0800A740 @ =gUnknown_3003F20
ldr r0, [r0]
@@ -2122,7 +1846,7 @@ sub_800A720: @ 800A720
ldr r0, _0800A744 @ =0x00002222
bl sub_8009E60
_0800A734:
- ldr r1, _0800A748 @ =gUnknown_3003F80
+ ldr r1, _0800A748 @ =gLinkCallback
movs r0, 0
str r0, [r1]
pop {r0}
@@ -2130,8 +1854,8 @@ _0800A734:
.align 2, 0
_0800A740: .4byte gUnknown_3003F20
_0800A744: .4byte 0x00002222
-_0800A748: .4byte gUnknown_3003F80
- thumb_func_end sub_800A720
+_0800A748: .4byte gLinkCallback
+ thumb_func_end LinkCB_RequestPlayerDataExchange
thumb_func_start task00_link_test
task00_link_test: @ 800A74C
@@ -2144,24 +1868,24 @@ task00_link_test: @ 800A74C
movs r1, 0x5
movs r2, 0x2
bl sub_800A6D8
- ldr r0, _0800A870 @ =gUnknown_3003F84
+ ldr r0, _0800A870 @ =gShouldAdvanceLinkState
ldrb r0, [r0]
movs r1, 0x2
movs r2, 0x1
movs r3, 0x2
- bl sub_800A684
+ bl LinkTest_prnthex
ldr r4, _0800A874 @ =gUnknown_3003F20
ldr r0, [r4]
movs r1, 0xF
movs r2, 0x1
movs r3, 0x8
- bl sub_800A684
+ bl LinkTest_prnthex
ldr r0, _0800A878 @ =gUnknown_3003FB0
ldrb r0, [r0, 0x1]
movs r1, 0x2
movs r2, 0xA
movs r3, 0x2
- bl sub_800A684
+ bl LinkTest_prnthex
ldr r0, [r4]
movs r1, 0x1C
ands r0, r1
@@ -2169,83 +1893,83 @@ task00_link_test: @ 800A74C
movs r1, 0xF
movs r2, 0xA
movs r3, 0x2
- bl sub_800A684
+ bl LinkTest_prnthex
bl GetMultiplayerId
lsls r0, 24
lsrs r0, 24
movs r1, 0xF
movs r2, 0xC
movs r3, 0x2
- bl sub_800A684
+ bl LinkTest_prnthex
ldr r0, _0800A87C @ =gUnknown_3003FA0
ldrb r0, [r0]
movs r1, 0x19
movs r2, 0x1
movs r3, 0x2
- bl sub_800A684
+ bl LinkTest_prnthex
ldr r0, _0800A880 @ =gUnknown_3004F70
ldrb r0, [r0]
movs r1, 0x19
movs r2, 0x2
movs r3, 0x2
- bl sub_800A684
+ bl LinkTest_prnthex
bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
movs r1, 0xF
movs r2, 0x5
movs r3, 0x2
- bl sub_800A684
+ bl LinkTest_prnthex
ldr r0, _0800A884 @ =gUnknown_3003E6C
ldr r0, [r0]
movs r1, 0x2
movs r2, 0xC
movs r3, 0x8
- bl sub_800A684
+ bl LinkTest_prnthex
ldr r0, _0800A888 @ =gUnknown_3003EB0
ldr r0, [r0]
movs r1, 0x2
movs r2, 0xD
movs r3, 0x8
- bl sub_800A684
+ bl LinkTest_prnthex
bl GetSioMultiSI
lsls r0, 24
lsrs r0, 24
movs r1, 0x19
movs r2, 0x5
movs r3, 0x1
- bl sub_800A684
+ bl LinkTest_prnthex
bl IsSioMultiMaster
lsls r0, 24
lsrs r0, 24
movs r1, 0x19
movs r2, 0x6
movs r3, 0x1
- bl sub_800A684
+ bl LinkTest_prnthex
bl IsLinkConnectionEstablished
lsls r0, 24
lsrs r0, 24
movs r1, 0x19
movs r2, 0x7
movs r3, 0x1
- bl sub_800A684
+ bl LinkTest_prnthex
bl HasLinkErrorOccurred
lsls r0, 24
lsrs r0, 24
movs r1, 0x19
movs r2, 0x8
movs r3, 0x1
- bl sub_800A684
+ bl LinkTest_prnthex
movs r6, 0
movs r5, 0x80
lsls r5, 19
- ldr r4, _0800A88C @ =gUnknown_3003F88
+ ldr r4, _0800A88C @ =gLinkTestBlockChecksums
_0800A84A:
ldrh r0, [r4]
lsrs r2, r5, 24
movs r1, 0xA
movs r3, 0x4
- bl sub_800A684
+ bl LinkTest_prnthex
movs r0, 0x80
lsls r0, 17
adds r5, r0
@@ -2259,14 +1983,14 @@ _0800A84A:
bx r0
.align 2, 0
_0800A86C: .4byte gUnknown_82345D0
-_0800A870: .4byte gUnknown_3003F84
+_0800A870: .4byte gShouldAdvanceLinkState
_0800A874: .4byte gUnknown_3003F20
_0800A878: .4byte gUnknown_3003FB0
_0800A87C: .4byte gUnknown_3003FA0
_0800A880: .4byte gUnknown_3004F70
_0800A884: .4byte gUnknown_3003E6C
_0800A888: .4byte gUnknown_3003EB0
-_0800A88C: .4byte gUnknown_3003F88
+_0800A88C: .4byte gLinkTestBlockChecksums
thumb_func_end task00_link_test
thumb_func_start SetLinkDebugValues
@@ -2468,7 +2192,7 @@ _0800A9C2:
cmp r0, 0
beq _0800A9F6
_0800A9E6:
- ldr r1, _0800AA1C @ =gUnknown_3003EAC
+ ldr r1, _0800AA1C @ =gLinkErrorOccurred
movs r0, 0x1
strb r0, [r1]
bl CloseLink
@@ -2492,7 +2216,7 @@ _0800AA04:
_0800AA10: .4byte gUnknown_3003F40
_0800AA14: .4byte gSavedLinkPlayers
_0800AA18: .4byte gLinkPlayers
-_0800AA1C: .4byte gUnknown_3003EAC
+_0800AA1C: .4byte gLinkErrorOccurred
_0800AA20: .4byte c2_800ACD4
thumb_func_end sub_800A9A4
@@ -2569,7 +2293,7 @@ sub_800AA80: @ 800AA80
.align 2, 0
_0800AA94: .4byte gWirelessCommType
_0800AA98:
- ldr r2, _0800AAB0 @ =gUnknown_3003F80
+ ldr r2, _0800AAB0 @ =gLinkCallback
ldr r1, [r2]
cmp r1, 0
bne _0800AAAC
@@ -2583,7 +2307,7 @@ _0800AAAC:
pop {r0}
bx r0
.align 2, 0
-_0800AAB0: .4byte gUnknown_3003F80
+_0800AAB0: .4byte gLinkCallback
_0800AAB4: .4byte sub_800AB0C
_0800AAB8: .4byte gUnknown_3003F24
_0800AABC: .4byte gUnknown_3003F34
@@ -2601,7 +2325,7 @@ sub_800AAC0: @ 800AAC0
.align 2, 0
_0800AAD0: .4byte gWirelessCommType
_0800AAD4:
- ldr r2, _0800AAE8 @ =gUnknown_3003F80
+ ldr r2, _0800AAE8 @ =gLinkCallback
ldr r1, [r2]
cmp r1, 0
beq _0800AAF0
@@ -2611,7 +2335,7 @@ _0800AAD4:
strh r0, [r1]
b _0800AAFC
.align 2, 0
-_0800AAE8: .4byte gUnknown_3003F80
+_0800AAE8: .4byte gLinkCallback
_0800AAEC: .4byte gUnknown_202285C
_0800AAF0:
ldr r0, _0800AB00 @ =sub_800AB0C
@@ -2638,7 +2362,7 @@ sub_800AB0C: @ 800AB0C
bne _0800AB22
ldr r0, _0800AB2C @ =0x00005fff
bl sub_8009E60
- ldr r1, _0800AB30 @ =gUnknown_3003F80
+ ldr r1, _0800AB30 @ =gLinkCallback
ldr r0, _0800AB34 @ =sub_800AB38
str r0, [r1]
_0800AB22:
@@ -2647,7 +2371,7 @@ _0800AB22:
.align 2, 0
_0800AB28: .4byte gUnknown_3004F70
_0800AB2C: .4byte 0x00005fff
-_0800AB30: .4byte gUnknown_3003F80
+_0800AB30: .4byte gLinkCallback
_0800AB34: .4byte sub_800AB38
thumb_func_end sub_800AB0C
@@ -2684,7 +2408,7 @@ _0800AB5C:
movs r4, 0x1
strb r4, [r0]
bl CloseLink
- ldr r1, _0800AB94 @ =gUnknown_3003F80
+ ldr r1, _0800AB94 @ =gLinkCallback
movs r0, 0
str r0, [r1]
ldr r0, _0800AB98 @ =gUnknown_3003F24
@@ -2698,7 +2422,7 @@ _0800AB84: .4byte gUnknown_3003F30
_0800AB88: .4byte gBattleTypeFlags
_0800AB8C: .4byte 0x0000ffdf
_0800AB90: .4byte gLinkVSyncDisabled
-_0800AB94: .4byte gUnknown_3003F80
+_0800AB94: .4byte gLinkCallback
_0800AB98: .4byte gUnknown_3003F24
thumb_func_end sub_800AB38
@@ -2714,7 +2438,7 @@ sub_800AB9C: @ 800AB9C
.align 2, 0
_0800ABAC: .4byte gWirelessCommType
_0800ABB0:
- ldr r1, _0800ABC8 @ =gUnknown_3003F80
+ ldr r1, _0800ABC8 @ =gLinkCallback
ldr r0, [r1]
cmp r0, 0
bne _0800ABBC
@@ -2728,7 +2452,7 @@ _0800ABC2:
pop {r0}
bx r0
.align 2, 0
-_0800ABC8: .4byte gUnknown_3003F80
+_0800ABC8: .4byte gLinkCallback
_0800ABCC: .4byte sub_800ABD4
_0800ABD0: .4byte gUnknown_3003F24
thumb_func_end sub_800AB9C
@@ -2742,7 +2466,7 @@ sub_800ABD4: @ 800ABD4
bne _0800ABEA
ldr r0, _0800ABF4 @ =0x00002ffe
bl sub_8009E60
- ldr r1, _0800ABF8 @ =gUnknown_3003F80
+ ldr r1, _0800ABF8 @ =gLinkCallback
ldr r0, _0800ABFC @ =sub_800AC00
str r0, [r1]
_0800ABEA:
@@ -2751,7 +2475,7 @@ _0800ABEA:
.align 2, 0
_0800ABF0: .4byte gUnknown_3004F70
_0800ABF4: .4byte 0x00002ffe
-_0800ABF8: .4byte gUnknown_3003F80
+_0800ABF8: .4byte gLinkCallback
_0800ABFC: .4byte sub_800AC00
thumb_func_end sub_800ABD4
@@ -2782,7 +2506,7 @@ _0800AC2A:
cmp r1, r2
bne _0800AC48
movs r1, 0
- ldr r4, _0800AC54 @ =gUnknown_3003F80
+ ldr r4, _0800AC54 @ =gLinkCallback
ldr r3, _0800AC50 @ =gUnknown_3003F2C
movs r2, 0
_0800AC36:
@@ -2801,7 +2525,7 @@ _0800AC48:
bx r0
.align 2, 0
_0800AC50: .4byte gUnknown_3003F2C
-_0800AC54: .4byte gUnknown_3003F80
+_0800AC54: .4byte gLinkCallback
thumb_func_end sub_800AC00
thumb_func_start sub_800AC58
@@ -2818,7 +2542,7 @@ sub_800AC58: @ 800AC58
ands r0, r2
cmp r0, 0
beq _0800AC98
- ldr r0, _0800ACA4 @ =gUnknown_3003F38
+ ldr r0, _0800ACA4 @ =gSuppressLinkErrorMessage
ldrb r0, [r0]
cmp r0, 0
bne _0800AC8E
@@ -2833,7 +2557,7 @@ sub_800AC58: @ 800AC58
ldr r0, _0800ACB4 @ =c2_800ACD4
bl SetMainCallback2
_0800AC8E:
- ldr r1, _0800ACB8 @ =gUnknown_3003EAC
+ ldr r1, _0800ACB8 @ =gLinkErrorOccurred
movs r0, 0x1
strb r0, [r1]
bl CloseLink
@@ -2843,12 +2567,12 @@ _0800AC98:
.align 2, 0
_0800AC9C: .4byte gLinkOpen
_0800ACA0: .4byte gUnknown_3003F20
-_0800ACA4: .4byte gUnknown_3003F38
+_0800ACA4: .4byte gSuppressLinkErrorMessage
_0800ACA8: .4byte sLinkErrorBuffer
_0800ACAC: .4byte gUnknown_3004F70
_0800ACB0: .4byte gUnknown_3003FA0
_0800ACB4: .4byte c2_800ACD4
-_0800ACB8: .4byte gUnknown_3003EAC
+_0800ACB8: .4byte gLinkErrorOccurred
thumb_func_end sub_800AC58
thumb_func_start sub_800ACBC
@@ -3298,20 +3022,20 @@ _0800B098: .4byte gUnknown_3003F20
thumb_func_start SetSuppressLinkErrorMessage
SetSuppressLinkErrorMessage: @ 800B09C
- ldr r1, _0800B0A4 @ =gUnknown_3003F38
+ ldr r1, _0800B0A4 @ =gSuppressLinkErrorMessage
strb r0, [r1]
bx lr
.align 2, 0
-_0800B0A4: .4byte gUnknown_3003F38
+_0800B0A4: .4byte gSuppressLinkErrorMessage
thumb_func_end SetSuppressLinkErrorMessage
thumb_func_start HasLinkErrorOccurred
HasLinkErrorOccurred: @ 800B0A8
- ldr r0, _0800B0B0 @ =gUnknown_3003EAC
+ ldr r0, _0800B0B0 @ =gLinkErrorOccurred
ldrb r0, [r0]
bx lr
.align 2, 0
-_0800B0B0: .4byte gUnknown_3003EAC
+_0800B0B0: .4byte gLinkErrorOccurred
thumb_func_end HasLinkErrorOccurred
thumb_func_start sub_800B0B4
@@ -3415,8 +3139,8 @@ HandleLinkConnection: @ 800B178
ldrb r0, [r0]
cmp r0, 0
bne _0800B1C8
- ldr r0, _0800B1B4 @ =gUnknown_3003F84
- ldr r1, _0800B1B8 @ =gUnknown_3003F50
+ ldr r0, _0800B1B4 @ =gShouldAdvanceLinkState
+ ldr r1, _0800B1B8 @ =gSendCmd
ldr r2, _0800B1BC @ =gRecvCmds
bl LinkMain1
ldr r4, _0800B1C0 @ =gUnknown_3003F20
@@ -3437,8 +3161,8 @@ _0800B1AA:
b _0800B1EE
.align 2, 0
_0800B1B0: .4byte gWirelessCommType
-_0800B1B4: .4byte gUnknown_3003F84
-_0800B1B8: .4byte gUnknown_3003F50
+_0800B1B4: .4byte gShouldAdvanceLinkState
+_0800B1B8: .4byte gSendCmd
_0800B1BC: .4byte gRecvCmds
_0800B1C0: .4byte gUnknown_3003F20
_0800B1C4: .4byte gMain + 0x2C
@@ -3569,8 +3293,8 @@ sub_800B284: @ 800B284
bx r0
thumb_func_end sub_800B284
- thumb_func_start sub_800B29C
-sub_800B29C: @ 800B29C
+ thumb_func_start DisableSerial
+DisableSerial: @ 800B29C
push {lr}
sub sp, 0x4
movs r0, 0xC0
@@ -3608,10 +3332,10 @@ _0800B2E4: .4byte 0x0400012a
_0800B2E8: .4byte 0x04000120
_0800B2EC: .4byte gUnknown_3003FB0
_0800B2F0: .4byte 0x050003f0
- thumb_func_end sub_800B29C
+ thumb_func_end DisableSerial
- thumb_func_start sub_800B2F4
-sub_800B2F4: @ 800B2F4
+ thumb_func_start EnableSerial
+EnableSerial: @ 800B2F4
push {r4,r5,lr}
sub sp, 0x4
movs r0, 0xC0
@@ -3639,15 +3363,15 @@ sub_800B2F4: @ 800B2F4
ldr r2, _0800B368 @ =0x050003f0
mov r0, sp
bl CpuSet
- ldr r0, _0800B36C @ =gUnknown_3000E64
+ ldr r0, _0800B36C @ =sNumVBlanksWithoutSerialIntr
strb r4, [r0]
- ldr r0, _0800B370 @ =gUnknown_3000E66
+ ldr r0, _0800B370 @ =sSendNonzeroCheck
strh r5, [r0]
- ldr r0, _0800B374 @ =gUnknown_3000E68
+ ldr r0, _0800B374 @ =sRecvNonzeroCheck
strh r5, [r0]
- ldr r0, _0800B378 @ =gUnknown_3000E6A
+ ldr r0, _0800B378 @ =sChecksumAvailable
strb r4, [r0]
- ldr r0, _0800B37C @ =gUnknown_3000E6B
+ ldr r0, _0800B37C @ =sHandshakePlayerCount
strb r4, [r0]
ldr r0, _0800B380 @ =gUnknown_3003FA0
strb r4, [r0]
@@ -3664,23 +3388,23 @@ _0800B35C: .4byte 0x00004003
_0800B360: .4byte 0x0400012a
_0800B364: .4byte gUnknown_3003FB0
_0800B368: .4byte 0x050003f0
-_0800B36C: .4byte gUnknown_3000E64
-_0800B370: .4byte gUnknown_3000E66
-_0800B374: .4byte gUnknown_3000E68
-_0800B378: .4byte gUnknown_3000E6A
-_0800B37C: .4byte gUnknown_3000E6B
+_0800B36C: .4byte sNumVBlanksWithoutSerialIntr
+_0800B370: .4byte sSendNonzeroCheck
+_0800B374: .4byte sRecvNonzeroCheck
+_0800B378: .4byte sChecksumAvailable
+_0800B37C: .4byte sHandshakePlayerCount
_0800B380: .4byte gUnknown_3003FA0
_0800B384: .4byte gUnknown_3004F70
- thumb_func_end sub_800B2F4
+ thumb_func_end EnableSerial
- thumb_func_start sub_800B388
-sub_800B388: @ 800B388
+ thumb_func_start ResetSerial
+ResetSerial: @ 800B388
push {lr}
- bl sub_800B2F4
- bl sub_800B29C
+ bl EnableSerial
+ bl DisableSerial
pop {r0}
bx r0
- thumb_func_end sub_800B388
+ thumb_func_end ResetSerial
thumb_func_start LinkMain1
LinkMain1: @ 800B398
@@ -3708,7 +3432,7 @@ _0800B3BC:
.4byte _0800B434
.4byte _0800B43E
_0800B3D0:
- bl sub_800B29C
+ bl DisableSerial
ldr r1, _0800B3DC @ =gUnknown_3003FB0
movs r0, 0x1
strb r0, [r1, 0x1]
@@ -3719,7 +3443,7 @@ _0800B3E0:
ldrb r0, [r4]
cmp r0, 0x1
bne _0800B44A
- bl sub_800B2F4
+ bl EnableSerial
ldr r1, _0800B3F4 @ =gUnknown_3003FB0
movs r0, 0x2
strb r0, [r1, 0x1]
@@ -3921,7 +3645,7 @@ sub_800B520: @ 800B520
lsrs r0, 24
_0800B55E:
movs r2, 0
- ldr r4, _0800B5A8 @ =gUnknown_3000E66
+ ldr r4, _0800B5A8 @ =sSendNonzeroCheck
mov r9, r4
ldr r1, _0800B5AC @ =gUnknown_3003FA0
mov r10, r1
@@ -3955,12 +3679,12 @@ _0800B598: .4byte gUnknown_3004F74
_0800B59C: .4byte 0x04000208
_0800B5A0: .4byte gUnknown_3003FB0
_0800B5A4: .4byte 0x00000339
-_0800B5A8: .4byte gUnknown_3000E66
+_0800B5A8: .4byte sSendNonzeroCheck
_0800B5AC: .4byte gUnknown_3003FA0
_0800B5B0:
movs r0, 0x1
strb r0, [r6, 0x12]
- ldr r2, _0800B5F4 @ =gUnknown_3000E66
+ ldr r2, _0800B5F4 @ =sSendNonzeroCheck
mov r9, r2
ldr r4, _0800B5F8 @ =gUnknown_3003FA0
mov r10, r4
@@ -3995,7 +3719,7 @@ _0800B5D4:
pop {r0}
bx r0
.align 2, 0
-_0800B5F4: .4byte gUnknown_3000E66
+_0800B5F4: .4byte sSendNonzeroCheck
_0800B5F8: .4byte gUnknown_3003FA0
_0800B5FC: .4byte 0x00000339
_0800B600: .4byte 0x04000208
@@ -4183,7 +3907,7 @@ _0800B754:
cmp r2, 0x2
bne _0800B77E
_0800B75E:
- ldr r1, _0800B784 @ =gUnknown_3000E64
+ ldr r1, _0800B784 @ =sNumVBlanksWithoutSerialIntr
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
@@ -4205,7 +3929,7 @@ _0800B77E:
pop {r0}
bx r0
.align 2, 0
-_0800B784: .4byte gUnknown_3000E64
+_0800B784: .4byte sNumVBlanksWithoutSerialIntr
thumb_func_end LinkVSync
thumb_func_start Timer3Intr
@@ -4263,7 +3987,7 @@ _0800B7EA:
adds r0, 0x1
movs r2, 0
strb r0, [r3, 0xD]
- ldr r1, _0800B814 @ =gUnknown_3000E64
+ ldr r1, _0800B814 @ =sNumVBlanksWithoutSerialIntr
strb r2, [r1]
lsls r0, 24
asrs r0, 24
@@ -4280,7 +4004,7 @@ _0800B80A:
bx r0
.align 2, 0
_0800B810: .4byte gUnknown_3003FB0
-_0800B814: .4byte gUnknown_3000E64
+_0800B814: .4byte sNumVBlanksWithoutSerialIntr
_0800B818: .4byte gUnknown_3004F70
_0800B81C: .4byte 0x00000fbd
thumb_func_end SerialCB
@@ -4336,7 +4060,7 @@ _0800B860:
str r1, [r3, 0x4]
strb r0, [r2, 0xA]
movs r4, 0
- ldr r0, _0800B8C4 @ =gUnknown_3000E6B
+ ldr r0, _0800B8C4 @ =sHandshakePlayerCount
mov r9, r0
mov r8, r2
ldr r2, _0800B8C8 @ =0x00008fff
@@ -4371,7 +4095,7 @@ _0800B8B4: .4byte 0x0400012a
_0800B8B8: .4byte 0x0000b9a0
_0800B8BC: .4byte gSioMlt_Recv
_0800B8C0: .4byte 0x04000120
-_0800B8C4: .4byte gUnknown_3000E6B
+_0800B8C4: .4byte sHandshakePlayerCount
_0800B8C8: .4byte 0x00008fff
_0800B8CC: .4byte 0x0000ffff
_0800B8D0:
@@ -4444,7 +4168,7 @@ DoRecv: @ 800B92C
cmp r1, 0
bne _0800B990
movs r4, 0
- ldr r7, _0800B98C @ =gUnknown_3000E6A
+ ldr r7, _0800B98C @ =sChecksumAvailable
ldrb r0, [r6, 0x3]
cmp r4, r0
bcs _0800B97A
@@ -4479,7 +4203,7 @@ _0800B97A:
.align 2, 0
_0800B984: .4byte 0x04000120
_0800B988: .4byte gUnknown_3003FB0
-_0800B98C: .4byte gUnknown_3000E6A
+_0800B98C: .4byte sChecksumAvailable
_0800B990:
ldr r2, _0800BA00 @ =0x00000fbc
adds r1, r6, r2
@@ -4503,7 +4227,7 @@ _0800B9AC:
cmp r4, r1
bcs _0800BA0C
adds r5, r6, 0
- ldr r7, _0800BA04 @ =gUnknown_3000E68
+ ldr r7, _0800BA04 @ =sRecvNonzeroCheck
lsls r0, 1
mov r12, r0
movs r2, 0xCF
@@ -4541,7 +4265,7 @@ _0800B9C8:
b _0800BA0C
.align 2, 0
_0800BA00: .4byte 0x00000fbc
-_0800BA04: .4byte gUnknown_3000E68
+_0800BA04: .4byte sRecvNonzeroCheck
_0800BA08:
movs r0, 0x2
strb r0, [r6, 0x12]
@@ -4553,7 +4277,7 @@ _0800BA0C:
lsrs r0, 24
cmp r0, 0x8
bne _0800BA30
- ldr r2, _0800BA3C @ =gUnknown_3000E68
+ ldr r2, _0800BA3C @ =sRecvNonzeroCheck
ldrh r0, [r2]
cmp r0, 0
beq _0800BA30
@@ -4572,7 +4296,7 @@ _0800BA30:
pop {r0}
bx r0
.align 2, 0
-_0800BA3C: .4byte gUnknown_3000E68
+_0800BA3C: .4byte sRecvNonzeroCheck
_0800BA40: .4byte 0x00000fbd
thumb_func_end DoRecv
@@ -4587,7 +4311,7 @@ DoSend: @ 800BA44
ldr r1, _0800BA84 @ =0x0400012a
ldrh r0, [r4, 0x14]
strh r0, [r1]
- ldr r1, _0800BA88 @ =gUnknown_3000E65
+ ldr r1, _0800BA88 @ =sSendBufferEmpty
ldrb r2, [r1]
cmp r2, 0
bne _0800BA90
@@ -4611,14 +4335,14 @@ DoSend: @ 800BA44
.align 2, 0
_0800BA80: .4byte gUnknown_3003FB0
_0800BA84: .4byte 0x0400012a
-_0800BA88: .4byte gUnknown_3000E65
+_0800BA88: .4byte sSendBufferEmpty
_0800BA8C: .4byte 0x00000339
_0800BA90:
movs r0, 0
strb r0, [r1]
b _0800BAEC
_0800BA96:
- ldr r1, _0800BABC @ =gUnknown_3000E65
+ ldr r1, _0800BABC @ =sSendBufferEmpty
ldrb r0, [r1]
cmp r0, 0
bne _0800BAB2
@@ -4639,7 +4363,7 @@ _0800BAB2:
strh r0, [r1]
b _0800BAE6
.align 2, 0
-_0800BABC: .4byte gUnknown_3000E65
+_0800BABC: .4byte sSendBufferEmpty
_0800BAC0: .4byte 0x00000339
_0800BAC4: .4byte 0x0400012a
_0800BAC8:
diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s
index 316b994a0..582cc073e 100644
--- a/asm/link_rfu_2.s
+++ b/asm/link_rfu_2.s
@@ -71,7 +71,7 @@ _080F863E:
adds r0, r4, 0
bl sub_80FC4D4
strh r5, [r7]
- ldr r1, _080F86AC @ =gUnknown_3003F50
+ ldr r1, _080F86AC @ =gSendCmd
ldr r2, _080F86B0 @ =0x01000008
adds r0, r7, 0
bl CpuSet
@@ -97,7 +97,7 @@ _080F869C: .4byte gUnknown_3005450
_080F86A0: .4byte 0x010004d6
_080F86A4: .4byte gUnknown_30054BC
_080F86A8: .4byte 0x00000634
-_080F86AC: .4byte gUnknown_3003F50
+_080F86AC: .4byte gSendCmd
_080F86B0: .4byte 0x01000008
_080F86B4: .4byte gRecvCmds
_080F86B8: .4byte 0x01000028
@@ -1277,7 +1277,7 @@ _080F9034: .4byte 0x01000028
thumb_func_start sub_80F9038
sub_80F9038: @ 80F9038
push {lr}
- ldr r3, _080F9064 @ =gUnknown_3003F50
+ ldr r3, _080F9064 @ =gSendCmd
ldr r2, _080F9068 @ =gRecvCmds
movs r1, 0x6
_080F9040:
@@ -1288,7 +1288,7 @@ _080F9040:
subs r1, 0x1
cmp r1, 0
bge _080F9040
- ldr r1, _080F9064 @ =gUnknown_3003F50
+ ldr r1, _080F9064 @ =gSendCmd
movs r2, 0
adds r0, r1, 0
adds r0, 0xC
@@ -1300,7 +1300,7 @@ _080F9056:
pop {r0}
bx r0
.align 2, 0
-_080F9064: .4byte gUnknown_3003F50
+_080F9064: .4byte gSendCmd
_080F9068: .4byte gRecvCmds
thumb_func_end sub_80F9038
@@ -2007,7 +2007,7 @@ _080F95E4:
ldrb r1, [r2]
strb r0, [r2]
bl sub_80FA510
- ldr r5, _080F9658 @ =gUnknown_3003F50
+ ldr r5, _080F9658 @ =gSendCmd
add r4, sp, 0x48
adds r0, r5, 0
adds r1, r4, 0
@@ -2045,7 +2045,7 @@ _080F9648: .4byte 0x0000099c
_080F964C: .4byte gUnknown_3007460
_080F9650: .4byte gReceivedRemoteLinkPlayers
_080F9654: .4byte 0x00000988
-_080F9658: .4byte gUnknown_3003F50
+_080F9658: .4byte gSendCmd
thumb_func_end sub_80F9514
thumb_func_start sub_80F965C
@@ -2723,7 +2723,7 @@ _080F9B68:
movs r0, 0xEE
lsls r0, 8
bl sub_80F9D04
- ldr r1, _080F9B90 @ =gUnknown_3003F50
+ ldr r1, _080F9B90 @ =gSendCmd
ldr r3, _080F9B94 @ =gUnknown_3003ED2
adds r0, r5, r3
ldrh r0, [r0]
@@ -2739,7 +2739,7 @@ _080F9B68:
strh r0, [r1, 0x6]
b _080F9BF4
.align 2, 0
-_080F9B90: .4byte gUnknown_3003F50
+_080F9B90: .4byte gSendCmd
_080F9B94: .4byte gUnknown_3003ED2
_080F9B98: .4byte gUnknown_3003ED4
_080F9B9C: .4byte gRecvCmds
@@ -2949,7 +2949,7 @@ sub_80F9D04: @ 80F9D04
push {r4,r5,lr}
lsls r0, 16
lsrs r1, r0, 16
- ldr r5, _080F9D34 @ =gUnknown_3003F50
+ ldr r5, _080F9D34 @ =gSendCmd
strh r1, [r5]
movs r0, 0xF0
lsls r0, 7
@@ -2970,7 +2970,7 @@ sub_80F9D04: @ 80F9D04
beq _080F9DFC
b _080F9E22
.align 2, 0
-_080F9D34: .4byte gUnknown_3003F50
+_080F9D34: .4byte gSendCmd
_080F9D38:
movs r0, 0xCC
lsls r0, 7
@@ -3103,7 +3103,7 @@ _080F9E28: .4byte gUnknown_3005028
sub_80F9E2C: @ 80F9E2C
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080F9E58 @ =gUnknown_3003F50
+ ldr r0, _080F9E58 @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080F9E52
@@ -3122,7 +3122,7 @@ _080F9E52:
pop {r0}
bx r0
.align 2, 0
-_080F9E58: .4byte gUnknown_3003F50
+_080F9E58: .4byte gSendCmd
_080F9E5C: .4byte gUnknown_3005542
thumb_func_end sub_80F9E2C
@@ -3146,7 +3146,7 @@ _080F9E7C:
ldr r0, [r5]
cmp r0, 0
bne _080F9EA4
- ldr r0, _080F9EB8 @ =gUnknown_3003F50
+ ldr r0, _080F9EB8 @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080F9EA4
@@ -3170,7 +3170,7 @@ _080F9EA8: .4byte gUnknown_843ED94
_080F9EAC: .4byte 0x00000701
_080F9EB0: .4byte gUnknown_843EDD8
_080F9EB4: .4byte gUnknown_3005450
-_080F9EB8: .4byte gUnknown_3003F50
+_080F9EB8: .4byte gSendCmd
_080F9EBC: .4byte gUnknown_203AC08
_080F9EC0:
adds r0, r6, 0
@@ -3240,7 +3240,7 @@ _080F9F40: .4byte rfufunc_80F9F44
thumb_func_start rfufunc_80F9F44
rfufunc_80F9F44: @ 80F9F44
push {r4,r5,lr}
- ldr r0, _080F9F74 @ =gUnknown_3003F50
+ ldr r0, _080F9F74 @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080F9F98
@@ -3263,7 +3263,7 @@ rfufunc_80F9F44: @ 80F9F44
bls _080F9F98
b _080F9F94
.align 2, 0
-_080F9F74: .4byte gUnknown_3003F50
+_080F9F74: .4byte gSendCmd
_080F9F78: .4byte gUnknown_3005450
_080F9F7C:
bl GetMultiplayerId
@@ -3295,7 +3295,7 @@ sub_80F9FA8: @ 80F9FA8
ldr r0, _080FA014 @ =gUnknown_3005450
mov r12, r0
ldr r5, [r0, 0x70]
- ldr r3, _080FA018 @ =gUnknown_3003F50
+ ldr r3, _080FA018 @ =gSendCmd
mov r2, r12
adds r2, 0x6C
ldrh r1, [r2]
@@ -3348,7 +3348,7 @@ _080FA00C:
bx r0
.align 2, 0
_080FA014: .4byte gUnknown_3005450
-_080FA018: .4byte gUnknown_3003F50
+_080FA018: .4byte gSendCmd
_080FA01C: .4byte rfufunc_80FA020
thumb_func_end sub_80F9FA8
@@ -3367,7 +3367,7 @@ rfufunc_80FA020: @ 80FA020
ldrb r0, [r5, 0xC]
cmp r0, 0
bne _080FA0E8
- ldr r3, _080FA0CC @ =gUnknown_3003F50
+ ldr r3, _080FA0CC @ =gSendCmd
adds r2, r5, 0
adds r2, 0x6E
ldrh r0, [r2]
@@ -3439,7 +3439,7 @@ _080FA05C:
b _080FA0EC
.align 2, 0
_080FA0C8: .4byte gUnknown_3005450
-_080FA0CC: .4byte gUnknown_3003F50
+_080FA0CC: .4byte gSendCmd
_080FA0D0: .4byte 0xffff8900
_080FA0D4: .4byte gRecvCmds
_080FA0D8: .4byte gUnknown_843EBD4
@@ -3624,7 +3624,7 @@ _080FA220: .4byte sub_80FA160
thumb_func_start sub_80FA224
sub_80FA224: @ 80FA224
push {r4,lr}
- ldr r0, _080FA250 @ =gUnknown_3003F50
+ ldr r0, _080FA250 @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080FA248
@@ -3645,7 +3645,7 @@ _080FA248:
pop {r0}
bx r0
.align 2, 0
-_080FA250: .4byte gUnknown_3003F50
+_080FA250: .4byte gSendCmd
_080FA254: .4byte gUnknown_3005450
_080FA258: .4byte sub_80FA1C4
thumb_func_end sub_80FA224
@@ -3789,7 +3789,7 @@ sub_80FA350: @ 80FA350
ldrb r0, [r0]
cmp r0, 0
bne _080FA372
- ldr r0, _080FA380 @ =gUnknown_3003F50
+ ldr r0, _080FA380 @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080FA372
@@ -3805,7 +3805,7 @@ _080FA372:
.align 2, 0
_080FA378: .4byte gUnknown_3005450
_080FA37C: .4byte 0x0000069e
-_080FA380: .4byte gUnknown_3003F50
+_080FA380: .4byte gSendCmd
_080FA384: .4byte sub_80FA2B0
thumb_func_end sub_80FA350
@@ -3822,7 +3822,7 @@ sub_80FA388: @ 80FA388
ldrb r0, [r0]
cmp r0, 0
bne _080FA416
- ldr r0, _080FA3BC @ =gUnknown_3003F50
+ ldr r0, _080FA3BC @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080FA416
@@ -3834,7 +3834,7 @@ sub_80FA388: @ 80FA388
.align 2, 0
_080FA3B4: .4byte gUnknown_3005450
_080FA3B8: .4byte 0x0000069e
-_080FA3BC: .4byte gUnknown_3003F50
+_080FA3BC: .4byte gSendCmd
_080FA3C0: .4byte sub_80FA2B0
_080FA3C4:
bl GetLinkPlayerCount
@@ -3869,7 +3869,7 @@ _080FA3F2:
ldrb r0, [r0]
cmp r0, 0
bne _080FA416
- ldr r0, _080FA424 @ =gUnknown_3003F50
+ ldr r0, _080FA424 @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080FA416
@@ -3886,7 +3886,7 @@ _080FA416:
.align 2, 0
_080FA41C: .4byte gUnknown_3005450
_080FA420: .4byte 0x0000069e
-_080FA424: .4byte gUnknown_3003F50
+_080FA424: .4byte gSendCmd
_080FA428: .4byte sub_80FA350
thumb_func_end sub_80FA388
@@ -4540,7 +4540,7 @@ _080FA8D8:
.align 2, 0
_080FA8E8: .4byte gTasks
_080FA8EC:
- ldr r0, _080FA8FC @ =gUnknown_3003F50
+ ldr r0, _080FA8FC @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080FA9BC
@@ -4549,7 +4549,7 @@ _080FA8F4:
strh r0, [r4, 0x8]
b _080FA9BC
.align 2, 0
-_080FA8FC: .4byte gUnknown_3003F50
+_080FA8FC: .4byte gSendCmd
_080FA900:
ldrb r0, [r5, 0xD]
b _080FA92C
@@ -4831,7 +4831,7 @@ _080FAB0C:
.4byte _080FABEE
.4byte _080FAC78
_080FAB24:
- ldr r0, _080FAB40 @ =gUnknown_3003F50
+ ldr r0, _080FAB40 @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
beq _080FAB2E
@@ -4844,9 +4844,9 @@ _080FAB2E:
bl sub_80F9D04
b _080FAC2E
.align 2, 0
-_080FAB40: .4byte gUnknown_3003F50
+_080FAB40: .4byte gSendCmd
_080FAB44:
- ldr r0, _080FAB58 @ =gUnknown_3003F50
+ ldr r0, _080FAB58 @ =gSendCmd
ldrh r0, [r0]
cmp r0, 0
beq _080FAB4E
@@ -4857,7 +4857,7 @@ _080FAB4E:
adds r1, r3
b _080FAC36
.align 2, 0
-_080FAB58: .4byte gUnknown_3003F50
+_080FAB58: .4byte gSendCmd
_080FAB5C:
bl GetBlockReceivedStatus
lsls r0, 24
@@ -7269,7 +7269,7 @@ sub_80FBDB8: @ 80FBDB8
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r6, _080FBE10 @ =gUnknown_3003F50
+ ldr r6, _080FBE10 @ =gSendCmd
ldrh r0, [r6]
cmp r0, 0
bne _080FBE08
@@ -7309,7 +7309,7 @@ _080FBE08:
pop {r0}
bx r0
.align 2, 0
-_080FBE10: .4byte gUnknown_3003F50
+_080FBE10: .4byte gSendCmd
_080FBE14: .4byte gUnknown_3005450
_080FBE18: .4byte gTasks
_080FBE1C: .4byte gUnknown_843EC41
diff --git a/include/link.h b/include/link.h
index d5d3f08a3..22667cc11 100644
--- a/include/link.h
+++ b/include/link.h
@@ -138,7 +138,7 @@ extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH];
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
extern u16 gLinkType;
extern u32 gLinkStatus;
-extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
+extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2];
extern u16 gSendCmd[CMD_LENGTH];
extern u8 gShouldAdvanceLinkState;
extern struct LinkPlayer gLinkPlayers[];
@@ -147,7 +147,7 @@ extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkVSyncDisabled;
extern u8 gWirelessCommType;
-extern u8 gUnknown_3003F84;
+extern u8 gShouldAdvanceLinkState;
extern u64 gSioMlt_Recv;
void Task_DestroySelf(u8);
@@ -208,7 +208,7 @@ void sub_80098D8(void);
void CloseLink(void);
bool8 IsLinkTaskFinished(void);
bool32 sub_800B270(void);
-void sub_800B388(void);
+void ResetSerial(void);
void sub_8054A28(void);
void sub_800B1F4(void);
void LoadWirelessStatusIndicatorSpriteGfx(void);
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
index 2a9b9ea71..cce6cefca 100644
--- a/src/ereader_helpers.c
+++ b/src/ereader_helpers.c
@@ -51,7 +51,7 @@ int EReader_Send(size_t r6, const void * r5)
{
GetKeyInput();
if (TEST_BUTTON(sJoyNew, B_BUTTON))
- gUnknown_3003F84 = 2;
+ gShouldAdvanceLinkState = 2;
sSendRecvStatus = EReaderHandleTransfer(1, r6, r5, NULL);
if ((sSendRecvStatus & 0x13) == 0x10)
@@ -71,7 +71,7 @@ int EReader_Send(size_t r6, const void * r5)
}
else
{
- gUnknown_3003F84 = 0;
+ gShouldAdvanceLinkState = 0;
VBlankIntrWait();
}
}
@@ -90,7 +90,7 @@ int EReader_Recv(void * r5)
{
GetKeyInput();
if (TEST_BUTTON(sJoyNew, B_BUTTON))
- gUnknown_3003F84 = 2;
+ gShouldAdvanceLinkState = 2;
sSendRecvStatus = EReaderHandleTransfer(0, 0, NULL, r5);
if ((sSendRecvStatus & 0x13) == 0x10)
@@ -110,7 +110,7 @@ int EReader_Recv(void * r5)
}
else
{
- gUnknown_3003F84 = 0;
+ gShouldAdvanceLinkState = 0;
VBlankIntrWait();
}
}
@@ -150,7 +150,7 @@ static void OpenSerial32(void)
REG_RCNT = 0;
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE;
REG_SIOCNT |= SIO_MULTI_SD;
- gUnknown_3003F84 = 0;
+ gShouldAdvanceLinkState = 0;
sCounter1 = 0;
sCounter2 = 0;
}
@@ -167,7 +167,7 @@ u16 EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBu
case 1:
if (DetermineSendRecvState(mode))
EnableSio();
- if (gUnknown_3003F84 == 2)
+ if (gShouldAdvanceLinkState == 2)
{
sSendRecvMgr.field_04 = 2;
sSendRecvMgr.state = 6;
@@ -179,7 +179,7 @@ u16 EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBu
sSendRecvMgr.state = 3;
// fallthrough
case 3:
- if (gUnknown_3003F84 == 2)
+ if (gShouldAdvanceLinkState == 2)
{
sSendRecvMgr.field_04 = 2;
sSendRecvMgr.state = 6;
diff --git a/src/intro.c b/src/intro.c
index bb7242f2f..c15f40dd3 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -561,7 +561,7 @@ static bool8 sub_80EC62C(void)
}
break;
case 142:
- sub_800B388();
+ ResetSerial();
SetMainCallback2(sub_80EC5B8);
break;
}
diff --git a/src/link.c b/src/link.c
index f63b2fcd7..b1e1466fc 100644
--- a/src/link.c
+++ b/src/link.c
@@ -27,18 +27,68 @@ struct LinkTestBGInfo
u32 dummy_C;
};
-u32 gUnknown_3000E58;
+#define static __attribute__((section(".bss")))
+static struct BlockTransfer sBlockSend;
+ALIGNED(8) static struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS];
+static u32 sBlockSendDelayCounter;
+static u32 gUnknown_3000E4C;
+static u8 gUnknown_3000E50;
+static u32 sPlayerDataExchangeStatus;
+static u32 gUnknown_3000E58;
+static u8 sLinkTestLastBlockSendPos;
+ALIGNED(8) static u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS];
+static u8 sNumVBlanksWithoutSerialIntr;
+static bool8 sSendBufferEmpty;
+static u16 sSendNonzeroCheck;
+static u16 sRecvNonzeroCheck;
+static u8 sChecksumAvailable;
+static u8 sHandshakePlayerCount;
+#undef static
struct LinkTestBGInfo gLinkTestBGInfo;
+bool8 gLinkErrorOccurred;
+bool8 gSuppressLinkErrorMessage;
+void (*gLinkCallback)(void);
+bool8 gUnknown_3003F28;
+bool8 gUnknown_3003F24;
+u16 gUnknown_3003F34;
+u8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS];
+u8 gUnknown_3003F30[MAX_LINK_PLAYERS];
+u8 gUnknown_3003F2C[MAX_LINK_PLAYERS];
+u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
+EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = FALSE;
+EWRAM_DATA bool8 gUnknown_2022111 = FALSE;
+EWRAM_DATA u32 gUnknown_2022114 = 0;
+EWRAM_DATA u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2] = {};
+EWRAM_DATA u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE] = {};
+EWRAM_DATA bool8 gLinkOpen = FALSE;
+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 gSavedLinkPlayers[MAX_RFU_PLAYERS] = {};
+EWRAM_DATA struct {
+ u32 status;
+ u8 lastRecvQueueCount;
+ u8 lastSendQueueCount;
+ u8 unk_06;
+} sLinkErrorBuffer = {};
+EWRAM_DATA u16 gUnknown_202285C = 0;
+EWRAM_DATA void *gUnknown_2022860 = NULL;
-void sub_800B210(void);
void InitLocalLinkPlayer(void);
void sub_800978C(void);
+u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size);
+void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2);
+void LinkCB_RequestPlayerDataExchange(void);
void ResetBlockSend(void);
void task00_link_test(u8 taskId);
void CB2_LinkTest(void);
+void EnableSerial(void);
+void sub_800B210(void);
+void sub_80F8DC0(void);
+void DisableSerial(void);
extern const u16 gLinkTestDigitsPal[0x20];
extern const u16 gLinkTestDigitsGfx[0x1000];
@@ -151,3 +201,113 @@ void InitLocalLinkPlayer(void)
gLocalLinkPlayer.name[8] |= 0x10;
}
}
+
+void sub_800978C(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void InitLink(void)
+{
+ int i;
+
+ for (i = 0; i < 8; i++)
+ {
+ gSendCmd[i] = 0xEFFF;
+ }
+ gLinkOpen = TRUE;
+ EnableSerial();
+}
+
+void Task_TriggerHandshake(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] == 5)
+ {
+ gShouldAdvanceLinkState = 1;
+ DestroyTask(taskId);
+ }
+}
+
+void OpenLink(void)
+{
+ int i;
+
+ if (!gWirelessCommType)
+ {
+ ResetSerial();
+ InitLink();
+ gLinkCallback = LinkCB_RequestPlayerDataExchange;
+ gLinkVSyncDisabled = FALSE;
+ gLinkErrorOccurred = FALSE;
+ gSuppressLinkErrorMessage = FALSE;
+ ResetBlockReceivedFlags();
+ ResetBlockSend();
+ gUnknown_3000E4C = 0;
+ gUnknown_3003F28 = FALSE;
+ gUnknown_3003F24 = FALSE;
+ gUnknown_3003F34 = 0;
+ CreateTask(Task_TriggerHandshake, 2);
+ }
+ else
+ {
+ sub_80F86F4();
+ }
+ gReceivedRemoteLinkPlayers = 0;
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ gRemoteLinkPlayersNotReceived[i] = TRUE;
+ gUnknown_3003F30[i] = FALSE;
+ gUnknown_3003F2C[i] = FALSE;
+ }
+}
+
+void CloseLink(void)
+{
+ gReceivedRemoteLinkPlayers = FALSE;
+ if (gWirelessCommType)
+ {
+ sub_80F8DC0();
+ }
+ gLinkOpen = FALSE;
+ DisableSerial();
+}
+
+void TestBlockTransfer(u8 nothing, u8 is, u8 used)
+{
+ u8 i;
+ u8 status;
+
+ if (sLinkTestLastBlockSendPos != sBlockSend.pos)
+ {
+ LinkTest_prnthex(sBlockSend.pos, 2, 3, 2);
+ sLinkTestLastBlockSendPos = sBlockSend.pos;
+ }
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ if (sLinkTestLastBlockRecvPos[i] != sBlockRecv[i].pos)
+ {
+ LinkTest_prnthex(sBlockRecv[i].pos, 2, i + 4, 2);
+ sLinkTestLastBlockRecvPos[i] = sBlockRecv[i].pos;
+ }
+ }
+ status = GetBlockReceivedStatus();
+ if (status == 0xF) // 0b1111
+ {
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ if ((status >> i) & 1)
+ {
+ gLinkTestBlockChecksums[i] = LinkTestCalcBlockChecksum(gBlockRecvBuffer[i], sBlockRecv[i].size);
+ ResetBlockReceivedFlag(i);
+ if (gLinkTestBlockChecksums[i] != 0x0342)
+ {
+ gLinkTestDebugValuesEnabled = FALSE;
+ gUnknown_2022111 = FALSE;
+ }
+ }
+ }
+ }
+}
+
diff --git a/src/mevent.c b/src/mevent.c
index d0d7f59aa..a4a9ea82d 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -126,7 +126,7 @@ u8 sub_8143674(struct MEvent_Str_1 *mgr)
resp = 2;
if (mgr->status & 4)
resp = 3;
- gUnknown_3003F84 = 0;
+ gShouldAdvanceLinkState = 0;
return resp;
}
diff --git a/sym_bss.txt b/sym_bss.txt
index 22b6dfdc8..a2cf9ccd8 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -6,58 +6,19 @@
.space 0x4
+ .align 2
.include "src/bg.o"
+ .align 2
.include "src/malloc.o"
+ .align 2
.include "src/text_printer.o"
+ .align 2
.include "src/sprite.o"
-
.align 2
-gUnknown_3000E08: @ 3000E08
- .space 0x10
-
-gUnknown_3000E18: @ 3000E18
- .space 0x30
-
-gUnknown_3000E48: @ 3000E48
- .space 0x4
-
-gUnknown_3000E4C: @ 3000E4C
- .space 0x4
-
-gUnknown_3000E50: @ 3000E50
- .space 0x4
-
-gUnknown_3000E54: @ 3000E54
- .space 0x4
-
-gUnknown_3000E58: @ 3000E58
- .space 0x4
-
-gUnknown_3000E5C: @ 3000E5C
- .space 0x4
-
-gUnknown_3000E60: @ 3000E60
- .space 0x4
-
-gUnknown_3000E64: @ 3000E64
- .space 0x1
-
-gUnknown_3000E65: @ 3000E65
- .space 0x1
-
-gUnknown_3000E66: @ 3000E66
- .space 0x2
-
-gUnknown_3000E68: @ 3000E68
- .space 0x2
-
-gUnknown_3000E6A: @ 3000E6A
- .space 0x1
-
-gUnknown_3000E6B: @ 3000E6B
- .space 0x1
-
+ .include "src/link.o"
+ .align 2
.include "src/multiboot.o"
+ .align 2
.include "src/daycare.o"
gUnknown_3000E78: @ 3000E78
diff --git a/sym_common.txt b/sym_common.txt
index b2c86b705..646d333cb 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -15,13 +15,13 @@ gUnknown_3003E6C: @ 3003E6C
gUnknown_3003E70: @ 3003E70
.space 0x3C
-gUnknown_3003EAC: @ 3003EAC
+gLinkErrorOccurred: @ 3003EAC
.space 0x4
gUnknown_3003EB0: @ 3003EB0
.space 0x8
-gUnknown_3003EB8: @ 3003EB8
+gRemoteLinkPlayersNotReceived: @ 3003EB8
.space 0x4
gUnknown_3003EBC: @ 3003EBC
@@ -57,7 +57,7 @@ gUnknown_3003F30: @ 3003F30
gUnknown_3003F34: @ 3003F34
.space 0x4
-gUnknown_3003F38: @ 3003F38
+gSuppressLinkErrorMessage: @ 3003F38
.space 0x4
gWirelessCommType: @ 3003F3C
@@ -66,7 +66,7 @@ gWirelessCommType: @ 3003F3C
gUnknown_3003F40: @ 3003F40
.space 0x10
-gUnknown_3003F50: @ 3003F50
+gSendCmd: @ 3003F50
.space 0x10
gUnknown_3003F60: @ 3003F60
@@ -78,13 +78,13 @@ gReceivedRemoteLinkPlayers: @ 3003F64
gLinkTestBGInfo: @ 3003F70
.space 0x10
-gUnknown_3003F80: @ 3003F80
+gLinkCallback: @ 3003F80
.space 0x4
-gUnknown_3003F84: @ 3003F84
+gShouldAdvanceLinkState: @ 3003F84
.space 0x4
-gUnknown_3003F88: @ 3003F88
+gLinkTestBlockChecksums: @ 3003F88
.space 0x8
gUnknown_3003F90: @ 3003F90
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 194f7fe5d..edc7471bb 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -13,57 +13,9 @@
.include "src/sprite.o"
.align 2
.include "src/string_util.o"
-
- @ .include "src/link.o"
-gLinkTestDebugValuesEnabled: @ 2022110
- .space 0x1
-
-gUnknown_2022111: @ 2022111
- .space 0x1
-
- .align 2
-gUnknown_2022114: @ 2022114
- .space 0x4
-
-gBlockRecvBuffer: @ 2022118
- .space 0x500
-
-gBlockSendBuffer: @ 2022618
- .space 0x100
-
-gLinkOpen: @ 2022718
- .space 0x1
-
- .align 1
-gLinkType: @ 202271A
- .space 0x2
-
-gLinkTimeOutCounter: @ 202271C
- .space 0x2
-
- .align 2
-gLocalLinkPlayer: @ 2022720
- .space 0x1C
-
- .align 2
-gLinkPlayers: @ 202273C
- .space 0x8C
-
- .align 2
-gSavedLinkPlayers: @ 20227C8
- .space 0x8C
-
.align 2
-sLinkErrorBuffer: @ 2022854
- .space 0x8
-
- .align 1
-gUnknown_202285C: @ 202285C
- .space 0x2
-
- .align 2
-gUnknown_2022860: @ 2022860
- .space 0xC
+ .include "src/link.o"
+ .space 8
@ .include "src/link_rfu.o"
.include "src/battle_controllers.o"