summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/berry_blender.s76
-rw-r--r--asm/cable_club.s94
-rw-r--r--asm/contest_link_80FC4F4.s8
-rw-r--r--asm/field_screen.s2
-rw-r--r--asm/intro.s2
-rw-r--r--asm/link.s328
-rw-r--r--asm/link_rfu.s112
-rw-r--r--asm/mystery_event_menu.s20
-rwxr-xr-xasm/pokenav.s38
-rw-r--r--asm/record_mixing.s4
-rw-r--r--asm/rom4.s4
-rw-r--r--asm/rom_8011DC0.s70
-rw-r--r--asm/trade.s30
-rw-r--r--common_syms/link.txt2
-rw-r--r--common_syms/main.txt4
-rw-r--r--data/link_rfu.s10
-rw-r--r--data/specials.inc2
-rw-r--r--include/link.h45
-rw-r--r--include/main.h4
-rw-r--r--src/battle_controllers.c2
-rw-r--r--src/link.c584
-rw-r--r--src/main.c18
-rw-r--r--sym_common.txt26
23 files changed, 688 insertions, 797 deletions
diff --git a/asm/berry_blender.s b/asm/berry_blender.s
index fc7e747b9..511120f2d 100644
--- a/asm/berry_blender.s
+++ b/asm/berry_blender.s
@@ -1021,7 +1021,7 @@ _0808003C:
.4byte _08080508
_08080094:
bl sub_8080588
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00004422
adds r0, r2, 0
strh r0, [r1]
@@ -1193,7 +1193,7 @@ _080801F8:
ldr r1, =gScriptItemId
ldrh r1, [r1]
bl sub_807FE14
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, [r4]
adds r1, r5
movs r2, 0x10
@@ -2063,7 +2063,7 @@ _08080950:
bl sub_8080674
movs r4, 0
movs r6, 0
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
mov r12, r0
movs r7, 0x92
lsls r7, 1
@@ -2571,9 +2571,9 @@ _08080DAE:
thumb_func_start sub_8080DF8
sub_8080DF8: @ 8080DF8
push {lr}
- ldr r3, =gUnknown_03003110
+ ldr r3, =gSendCmd
movs r0, 0
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
movs r2, 0x3
_08080E02:
strh r0, [r3]
@@ -2608,7 +2608,7 @@ sub_8080E20: @ 8080E20
ldrsh r1, [r2, r4]
cmp r0, r1
ble _08080E58
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
movs r4, 0xC
ldrsh r1, [r2, r4]
lsls r1, 4
@@ -2704,12 +2704,12 @@ _08080ED8:
bgt _08080F40
cmp r1, 0x4B
bls _08080F2C
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00004523
b _08080F30
.pool
_08080F2C:
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00005432
_08080F30:
strh r0, [r1, 0x14]
@@ -2728,7 +2728,7 @@ _08080F40:
lsrs r0, 24
cmp r0, 0x3B
bhi _08080F68
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00005432
b _08080F9E
.pool
@@ -2745,7 +2745,7 @@ _08080F6E:
lsrs r0, 24
cmp r0, 0x13
bhi _08080F8C
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00005432
b _08080F9E
.pool
@@ -2758,7 +2758,7 @@ _08080F90:
bl sub_8080E6C
b _08080FA0
_08080F9A:
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00004523
_08080F9E:
strh r0, [r1, 0x14]
@@ -2847,13 +2847,13 @@ sub_8080FD0: @ 8080FD0
bgt _08081088
cmp r2, 0x42
bls _08081078
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00004523
strh r0, [r1, 0x24]
b _080810B0
.pool
_08081078:
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00005432
strh r0, [r1, 0x24]
b _080810B0
@@ -2861,7 +2861,7 @@ _08081078:
_08081088:
cmp r2, 0x41
bls _08081092
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00004523
strh r0, [r1, 0x24]
_08081092:
@@ -2871,7 +2871,7 @@ _08081092:
lsrs r0, 24
cmp r0, 0x18
bhi _080810A4
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00005432
strh r0, [r1, 0x24]
_080810A4:
@@ -2889,7 +2889,7 @@ _080810B0:
b _080810EC
.pool
_080810CC:
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
ldr r1, =0x00004523
strh r1, [r0, 0x24]
movs r0, 0x1
@@ -2972,13 +2972,13 @@ sub_80810F8: @ 80810F8
bgt _080811AC
cmp r2, 0x58
bls _0808119C
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00004523
strh r0, [r1, 0x34]
b _080811DE
.pool
_0808119C:
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00005432
strh r0, [r1, 0x34]
b _080811DE
@@ -2986,7 +2986,7 @@ _0808119C:
_080811AC:
cmp r2, 0x3C
bls _080811C0
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00004523
b _080811D0
.pool
@@ -2997,7 +2997,7 @@ _080811C0:
lsrs r0, 24
cmp r0, 0x4
bhi _080811D2
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r0, =0x00005432
_080811D0:
strh r0, [r1, 0x34]
@@ -3016,7 +3016,7 @@ _080811DE:
b _08081218
.pool
_080811F8:
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
ldr r1, =0x00004523
strh r1, [r0, 0x34]
movs r0, 0x1
@@ -3063,7 +3063,7 @@ sub_8081224: @ 8081224
ldrsh r0, [r2, r1]
cmp r0, 0
bne _0808127E
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
ldr r1, =0x00004523
strh r1, [r0, 0x14]
movs r0, 0x1
@@ -3370,9 +3370,9 @@ sub_80814F4: @ 80814F4
ldrh r0, [r0]
cmp r0, 0
beq _0808153C
- ldr r3, =gUnknown_03003110
+ ldr r3, =gSendCmd
ldrh r0, [r3, 0x4]
- ldr r2, =gUnknown_03003090
+ ldr r2, =gRecvCmds
cmp r0, 0
beq _0808151C
movs r1, 0
@@ -3381,7 +3381,7 @@ sub_80814F4: @ 80814F4
strh r0, [r2]
strh r1, [r3, 0x4]
_0808151C:
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
ldr r3, =0x00004444
adds r1, r2, 0
adds r1, 0x10
@@ -3409,7 +3409,7 @@ _0808153C:
blt _0808154C
b _080816F6
_0808154C:
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r2, r0, 0
adds r2, 0x20
str r2, [sp]
@@ -3605,7 +3605,7 @@ _080816F6:
cmp r7, r0
bge _08081722
movs r2, 0
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
_08081710:
strh r2, [r1]
strh r2, [r1, 0x4]
@@ -3711,19 +3711,19 @@ _080817BA:
lsrs r0, 24
cmp r0, 0x2
bne _08081810
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
ldr r0, =0x00004523
b _08081828
.pool
_08081810:
cmp r0, 0x1
bne _08081824
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
ldr r0, =0x00005432
b _08081828
.pool
_08081824:
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
ldr r0, =0x00002345
_08081828:
strh r0, [r1, 0x4]
@@ -3804,7 +3804,7 @@ _080818B4:
lsls r5, 1
adds r1, r5
ldrh r1, [r1]
- bl sub_800A994
+ bl SetLinkDebugValues
bl sub_80814F4
ldr r0, [r4]
adds r0, r5
@@ -4804,7 +4804,7 @@ _08082078:
lsls r0, 16
cmp r0, 0
bgt _080820C6
- bl sub_8009F8C
+ bl ClearLinkCallback
ldr r2, [r4]
adds r1, r2, 0
adds r1, 0x4C
@@ -5176,7 +5176,7 @@ _0808239E:
b _0808249E
.pool
_080823B0:
- ldr r6, =gUnknown_03003110
+ ldr r6, =gSendCmd
adds r0, r6, 0
bl sub_8081F94
ldr r4, =gUnknown_020322A4
@@ -5972,7 +5972,7 @@ sub_8082AD4: @ 8082AD4
bne _08082AE0
b _08082CA4
_08082AE0:
- ldr r4, =gUnknown_03003090
+ ldr r4, =gRecvCmds
ldrh r0, [r4]
ldr r1, =0x00002fff
movs r2, 0xBC
@@ -6051,7 +6051,7 @@ _08082B8A:
b _08082BF4
.pool
_08082B9C:
- ldr r6, =gUnknown_03003090
+ ldr r6, =gRecvCmds
lsls r4, r5, 4
adds r0, r4, r6
ldrh r0, [r0]
@@ -6146,7 +6146,7 @@ _08082C4E:
cmp r0, r4
beq _08082C48
_08082C6A:
- ldr r4, =gUnknown_03003110
+ ldr r4, =gSendCmd
adds r0, r4, 0
bl sub_8081F94
bl GetLinkPlayerCount
@@ -6269,7 +6269,7 @@ _08082D3C:
ldrh r1, [r2]
adds r0, r1
strh r0, [r2]
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
movs r4, 0x8B
lsls r4, 1
adds r0, r3, r4
@@ -6284,7 +6284,7 @@ _08082D3C:
b _08082DEA
.pool
_08082D90:
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r0, [r3]
movs r1, 0xFF
lsls r1, 8
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 254272c4d..df8e248ad 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -143,7 +143,7 @@ sub_80B2478: @ 80B2478
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
- bl sub_800A0C8
+ bl GetLinkPlayerDataExchangeStatusTimed
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
@@ -244,7 +244,7 @@ sub_80B252C: @ 80B252C
lsrs r1, r0, 24
cmp r1, 0
bne _080B2570
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
strh r1, [r0]
ldr r1, =gTasks
lsls r0, r4, 2
@@ -274,7 +274,7 @@ sub_80B2578: @ 80B2578
cmp r0, 0
beq _080B258E
movs r0, 0x1
- bl sub_800B330
+ bl SetSuppressLinkErrorMessage
_080B258E:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
@@ -286,7 +286,7 @@ _080B258E:
b _080B25BA
.pool
_080B25A4:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
movs r0, 0
strh r0, [r1]
ldr r1, =gTasks
@@ -374,9 +374,9 @@ sub_80B2634: @ 80B2634
ldrsh r2, [r4, r3]
cmp r2, 0
bne _080B266C
- bl sub_800A0AC
+ bl OpenLinkTimed
bl sub_800AB98
- bl sub_800A2BC
+ bl ResetLinkPlayers
ldr r0, =gUnknown_08550594
bl AddWindow
strh r0, [r4, 0xA]
@@ -418,7 +418,7 @@ sub_80B2688: @ 80B2688
cmp r5, 0x1
bls _080B26FC
movs r0, 0x1
- bl sub_800B330
+ bl SetSuppressLinkErrorMessage
ldr r1, =gTasks
lsls r0, r4, 2
adds r0, r4
@@ -729,7 +729,7 @@ _080B297C:
cmp r2, 0x9
bne _080B2994
_080B2984:
- bl sub_80097E8
+ bl CloseLink
bl HideFieldMessageBox
ldr r0, =sub_80B2CB0
b _080B29E4
@@ -743,7 +743,7 @@ _080B2994:
strb r0, [r1]
ldrb r0, [r4]
bl sub_800AA04
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
adds r0, r4, 0
bl sub_80C30A4
ldr r0, =gUnknown_0203CEF8
@@ -812,7 +812,7 @@ _080B2A42:
cmp r0, 0x9
bne _080B2A6C
_080B2A4A:
- bl sub_80097E8
+ bl CloseLink
_080B2A4E:
bl HideFieldMessageBox
ldr r0, =gTasks
@@ -833,7 +833,7 @@ _080B2A6C:
strb r0, [r1]
ldrb r0, [r4]
bl sub_800AA04
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
adds r0, r4, 0
bl sub_80C30A4
ldr r0, =gUnknown_0203CEF8
@@ -964,7 +964,7 @@ task_map_chg_seq_0807EC34: @ 80B2B94
ldrh r0, [r5]
cmp r0, 0x1
bne _080B2C10
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
ldrh r2, [r0]
ldr r0, =0x00002266
cmp r2, r0
@@ -1065,7 +1065,7 @@ _080B2C7E:
cmp r4, r0
bcc _080B2C5C
movs r0, 0
- bl sub_800B330
+ bl SetSuppressLinkErrorMessage
bl ResetBlockReceivedFlags
ldr r0, =gScriptResult
adds r1, r5, 0
@@ -1215,20 +1215,20 @@ _080B2DC0:
b _080B2E34
_080B2DCA:
movs r3, 0x2
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002233
b _080B2E30
.pool
_080B2DDC:
movs r3, 0x2
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002244
b _080B2E30
.pool
_080B2DEC:
movs r3, 0x4
movs r2, 0x4
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002255
b _080B2E30
.pool
@@ -1243,12 +1243,12 @@ _080B2E00:
ands r0, r1
cmp r0, 0
bne _080B2E2C
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002266
b _080B2E30
.pool
_080B2E2C:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002277
_080B2E30:
adds r0, r4, 0
@@ -1266,7 +1266,7 @@ _080B2E34:
thumb_func_start sub_80B2E4C
sub_80B2E4C: @ 80B2E4C
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001133
adds r0, r2, 0
strh r0, [r1]
@@ -1287,7 +1287,7 @@ sub_80B2E74: @ 80B2E74
ldr r1, =gScriptResult
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00003311
adds r0, r2, 0
strh r0, [r1]
@@ -1454,7 +1454,7 @@ _080B2FC6:
thumb_func_start sub_80B2FD8
sub_80B2FD8: @ 80B2FD8
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00004411
adds r0, r2, 0
strh r0, [r1]
@@ -1472,7 +1472,7 @@ sub_80B2FD8: @ 80B2FD8
thumb_func_start sub_80B3000
sub_80B3000: @ 80B3000
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00006601
adds r0, r2, 0
strh r0, [r1]
@@ -1490,7 +1490,7 @@ sub_80B3000: @ 80B3000
thumb_func_start sub_80B3028
sub_80B3028: @ 80B3028
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00006602
adds r0, r2, 0
strh r0, [r1]
@@ -1540,17 +1540,17 @@ _080B3084:
.4byte _080B3128
.4byte _080B30D8
_080B30A8:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002233
b _080B3124
.pool
_080B30B8:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002244
b _080B3124
.pool
_080B30C8:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002255
b _080B3124
.pool
@@ -1564,22 +1564,22 @@ _080B30D8:
ands r0, r1
cmp r0, 0
bne _080B3100
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002266
b _080B3124
.pool
_080B3100:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002277
b _080B3124
.pool
_080B3110:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001111
b _080B3124
.pool
_080B3120:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00003322
_080B3124:
adds r0, r2, 0
@@ -1610,8 +1610,8 @@ sub_80B3144: @ 80B3144
ldrsh r2, [r4, r3]
cmp r2, 0
bne _080B3178
- bl sub_8009734
- bl sub_800A2BC
+ bl OpenLink
+ bl ResetLinkPlayers
ldr r0, =task00_08081A90
movs r1, 0x50
bl CreateTask
@@ -1710,7 +1710,7 @@ sub_80B3220: @ 80B3220
ldrb r0, [r0]
cmp r0, 0x1
bne _080B3248
- bl sub_800A23C
+ bl IsLinkPlayerDataExchangeComplete
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1809,11 +1809,11 @@ _080B32F8:
movs r0, 0x1
movs r1, 0
bl fade_screen
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002211
adds r0, r2, 0
strh r0, [r1]
- bl sub_8009FAC
+ bl ClearLinkCallback_2
b _080B3346
.pool
_080B3318:
@@ -1922,11 +1922,11 @@ _080B3408:
movs r0, 0x1
movs r1, 0
bl fade_screen
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
ldr r2, =0x00002211
adds r1, r2, 0
strh r1, [r0]
- bl sub_8009FAC
+ bl ClearLinkCallback_2
movs r0, 0x1
strh r0, [r6]
b _080B3532
@@ -1945,7 +1945,7 @@ _080B343A:
b _080B3532
.pool
_080B3444:
- ldr r1, =gUnknown_020229CC
+ ldr r1, =gLocalLinkPlayer
movs r0, 0
movs r2, 0x1C
bl SendBlock
@@ -2400,7 +2400,7 @@ _080B382E:
movs r0, 0x1
movs r1, 0
bl fade_screen
- bl sub_8009FAC
+ bl ClearLinkCallback_2
b _080B3864
_080B3840:
ldr r0, =gPaletteFade
@@ -2548,7 +2548,7 @@ nullsub_37: @ 80B3964
thumb_func_start sub_80B3968
sub_80B3968: @ 80B3968
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002211
adds r0, r2, 0
strh r0, [r1]
@@ -2651,8 +2651,8 @@ task00_08081A90: @ 80B3A30
lsls r0, 17
cmp r1, r0
ble _080B3A62
- bl sub_80097E8
- ldr r0, =c2_800ACD4
+ bl CloseLink
+ ldr r0, =CB2_LinkError
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
@@ -2669,8 +2669,8 @@ _080B3A62:
lsls r0, 24
cmp r0, 0
bne _080B3A86
- bl sub_80097E8
- ldr r0, =c2_800ACD4
+ bl CloseLink
+ ldr r0, =CB2_LinkError
bl SetMainCallback2
_080B3A86:
adds r0, r4, 0
@@ -2761,7 +2761,7 @@ _080B3B2A:
b _080B3BB8
.pool
_080B3B40:
- bl sub_8009734
+ bl OpenLink
ldr r0, =task00_08081A90
movs r1, 0x1
bl CreateTask
@@ -2808,7 +2808,7 @@ _080B3B9E:
ldrb r0, [r0]
cmp r0, 0x1
bne _080B3BB8
- bl sub_800A23C
+ bl IsLinkPlayerDataExchangeComplete
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2829,7 +2829,7 @@ sub_80B3BC4: @ 80B3BC4
ldrb r0, [r0]
cmp r0, 0
bne _080B3BD6
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002288
adds r0, r2, 0
strh r0, [r1]
diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s
index 953f69479..135e04e5e 100644
--- a/asm/contest_link_80FC4F4.s
+++ b/asm/contest_link_80FC4F4.s
@@ -284,7 +284,7 @@ _080FC6FE:
lsls r0, 24
cmp r0, 0
beq _080FC7F4
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gUnknown_02039F25
ldrb r1, [r1]
lsls r1, 6
@@ -297,7 +297,7 @@ _080FC6FE:
b _080FC7F4
.pool
_080FC738:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gUnknown_02039F25
ldrb r1, [r1]
lsls r1, 6
@@ -487,7 +487,7 @@ _080FC8D8:
beq _080FC954
b _080FC96E
_080FC8DE:
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
ldrh r0, [r4, 0x1A]
strb r0, [r1]
bl GetMultiplayerId
@@ -1142,7 +1142,7 @@ _080FCE8C:
beq _080FCEFC
b _080FCF16
_080FCE92:
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
movs r0, 0x6E
strb r0, [r1]
bl GetMultiplayerId
diff --git a/asm/field_screen.s b/asm/field_screen.s
index 4ab8a5a53..462237bee 100644
--- a/asm/field_screen.s
+++ b/asm/field_screen.s
@@ -8987,7 +8987,7 @@ _080AF994:
beq _080AF9D0
b _080AF9E8
_080AF99A:
- bl sub_8009FAC
+ bl ClearLinkCallback_2
movs r0, 0x1
movs r1, 0
bl fade_screen
diff --git a/asm/intro.s b/asm/intro.s
index 32b52ed06..c4d7f80e8 100644
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -562,7 +562,7 @@ task_intro_2: @ 816D12C
movs r0, 0xCF
lsls r0, 1
bl m4aSongNumStart
- bl sub_800B628
+ bl ResetSerial
add sp, 0x4
pop {r4,r5}
pop {r0}
diff --git a/asm/link.s b/asm/link.s
index 5edbc7e6d..b3b2d77c2 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -5,163 +5,15 @@
.text
- thumb_func_start sub_800A824
-sub_800A824: @ 800A824
- push {lr}
- ldr r0, =gUnknown_030030E0
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
-_0800A830:
- beq _0800A838
- ldr r0, =0x00002222
- bl sub_8009D90
-_0800A838:
- ldr r1, =gUnknown_03003140
- movs r0, 0
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800A824
-
- thumb_func_start task00_link_test
-task00_link_test: @ 800A850
- push {r4-r6,lr}
- sub sp, 0x20
- ldr r1, =gASCIITestPrint
- mov r0, sp
- bl strcpy
- mov r0, sp
- movs r1, 0x5
- movs r2, 0x2
- bl sub_800A7DC
- ldr r0, =gUnknown_03003144
- ldrb r0, [r0]
- movs r1, 0x2
- movs r2, 0x1
- movs r3, 0x2
- bl sub_800A6E8
- ldr r4, =gUnknown_030030E0
- ldr r0, [r4]
- movs r1, 0xF
- movs r2, 0x1
- movs r3, 0x8
- bl sub_800A6E8
- ldr r0, =gUnknown_03003170
- ldrb r0, [r0, 0x1]
- movs r1, 0x2
- movs r2, 0xA
- movs r3, 0x2
- bl sub_800A6E8
- ldr r0, [r4]
- movs r1, 0x1C
- ands r0, r1
- lsrs r0, 2
- movs r1, 0xF
- movs r2, 0xA
- movs r3, 0x2
- bl sub_800A6E8
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xF
- movs r2, 0xC
- movs r3, 0x2
- bl sub_800A6E8
- ldr r0, =gUnknown_03003160
- ldrb r0, [r0]
- movs r1, 0x19
- movs r2, 0x1
- movs r3, 0x2
- bl sub_800A6E8
- ldr r0, =gUnknown_03004130
- ldrb r0, [r0]
- movs r1, 0x19
- movs r2, 0x2
- movs r3, 0x2
- bl sub_800A6E8
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xF
- movs r2, 0x5
- movs r3, 0x2
- bl sub_800A6E8
- ldr r0, =gUnknown_0300302C
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xC
- movs r3, 0x8
- bl sub_800A6E8
- ldr r0, =gUnknown_03003070
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xD
- movs r3, 0x8
- bl sub_800A6E8
- bl sub_800B2E8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0x5
- movs r3, 0x1
- bl sub_800A6E8
- bl sub_800B2F8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0x6
- movs r3, 0x1
- bl sub_800A6E8
- bl sub_800B320
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0x7
- movs r3, 0x1
- bl sub_800A6E8
- bl sub_800B33C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0x8
- movs r3, 0x1
- bl sub_800A6E8
- movs r6, 0
- movs r5, 0x80
- lsls r5, 19
- ldr r4, =gUnknown_03003148
-_0800A94E:
- ldrh r0, [r4]
- lsrs r2, r5, 24
- movs r1, 0xA
- movs r3, 0x4
- bl sub_800A6E8
- movs r0, 0x80
- lsls r0, 17
- adds r5, r0
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0800A94E
- add sp, 0x20
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task00_link_test
-
- thumb_func_start sub_800A994
-sub_800A994: @ 800A994
+ thumb_func_start SetLinkDebugValues
+SetLinkDebugValues: @ 800A994
ldr r2, =gUnknown_0300302C
str r0, [r2]
ldr r0, =gUnknown_03003070
str r1, [r0]
bx lr
.pool
- thumb_func_end sub_800A994
+ thumb_func_end SetLinkDebugValues
thumb_func_start sub_800A9A8
sub_800A9A8: @ 800A9A8
@@ -281,7 +133,7 @@ sub_800AA60: @ 800AA60
ldr r0, =gUnknown_02022A74
ldr r2, =0x00002288
mov r8, r2
- ldr r7, =gUnknown_020229C6
+ ldr r7, =gLinkType
mov r6, r12
adds r6, 0x14
adds r5, r0, 0x4
@@ -393,11 +245,11 @@ _0800AB36:
cmp r0, 0
beq _0800AB6A
_0800AB5A:
- ldr r1, =gUnknown_0300306C
+ ldr r1, =gLinkErrorOccurred
movs r0, 0x1
strb r0, [r1]
- bl sub_80097E8
- ldr r0, =c2_800ACD4
+ bl CloseLink
+ ldr r0, =CB2_LinkError
bl SetMainCallback2
_0800AB6A:
adds r0, r4, 0x1
@@ -429,7 +281,7 @@ sub_800AB98: @ 800AB98
thumb_func_start sub_800ABAC
sub_800ABAC: @ 800ABAC
- ldr r0, =gUnknown_030030E0
+ ldr r0, =gLinkStatus
ldr r0, [r0]
movs r1, 0x1C
ands r0, r1
@@ -445,7 +297,7 @@ sub_800ABBC: @ 800ABBC
ldrb r0, [r0]
cmp r0, 0
bne _0800ABDC
- ldr r0, =gUnknown_030030E0
+ ldr r0, =gLinkStatus
ldr r0, [r0]
lsrs r0, 5
movs r1, 0x1
@@ -482,7 +334,7 @@ sub_800ABF4: @ 800ABF4
b _0800AC20
.pool
_0800AC0C:
- ldr r2, =gUnknown_03003140
+ ldr r2, =gLinkCallback
ldr r1, [r2]
cmp r1, 0
bne _0800AC20
@@ -509,7 +361,7 @@ sub_800AC34: @ 800AC34
b _0800AC70
.pool
_0800AC48:
- ldr r2, =gUnknown_03003140
+ ldr r2, =gLinkCallback
ldr r1, [r2]
cmp r1, 0
beq _0800AC64
@@ -540,8 +392,8 @@ sub_800AC80: @ 800AC80
cmp r0, 0
bne _0800AC96
ldr r0, =0x00005fff
- bl sub_8009D90
- ldr r1, =gUnknown_03003140
+ bl BuildSendCmd
+ ldr r1, =gLinkCallback
ldr r0, =sub_800ACAC
str r0, [r1]
_0800AC96:
@@ -580,11 +432,11 @@ _0800ACD0:
negs r1, r1
ands r0, r1
str r0, [r2]
- ldr r0, =gUnknown_03002748
+ ldr r0, =gLinkVSyncDisabled
movs r4, 0x1
strb r4, [r0]
- bl sub_80097E8
- ldr r1, =gUnknown_03003140
+ bl CloseLink
+ ldr r1, =gLinkCallback
movs r0, 0
str r0, [r1]
ldr r0, =gUnknown_030030E4
@@ -607,7 +459,7 @@ sub_800AD10: @ 800AD10
b _0800AD4C
.pool
_0800AD24:
- ldr r2, =gUnknown_03003140
+ ldr r2, =gLinkCallback
ldr r1, [r2]
cmp r1, 0
beq _0800AD40
@@ -638,8 +490,8 @@ sub_800AD5C: @ 800AD5C
cmp r0, 0
bne _0800AD72
ldr r0, =0x00005fff
- bl sub_8009D90
- ldr r1, =gUnknown_03003140
+ bl BuildSendCmd
+ ldr r1, =gLinkCallback
ldr r0, =sub_800AD88
str r0, [r1]
_0800AD72:
@@ -684,11 +536,11 @@ _0800ADB6:
negs r1, r1
ands r0, r1
str r0, [r2]
- ldr r0, =gUnknown_03002748
+ ldr r0, =gLinkVSyncDisabled
movs r4, 0x1
strb r4, [r0]
- bl sub_80097E8
- ldr r1, =gUnknown_03003140
+ bl CloseLink
+ ldr r1, =gLinkCallback
movs r0, 0
str r0, [r1]
ldr r0, =gUnknown_030030E4
@@ -711,7 +563,7 @@ sub_800ADF8: @ 800ADF8
b _0800AE1E
.pool
_0800AE0C:
- ldr r1, =gUnknown_03003140
+ ldr r1, =gLinkCallback
ldr r0, [r1]
cmp r0, 0
bne _0800AE18
@@ -735,8 +587,8 @@ sub_800AE30: @ 800AE30
cmp r0, 0
bne _0800AE46
ldr r0, =0x00002ffe
- bl sub_8009D90
- ldr r1, =gUnknown_03003140
+ bl BuildSendCmd
+ ldr r1, =gLinkCallback
ldr r0, =sub_800AE5C
str r0, [r1]
_0800AE46:
@@ -772,7 +624,7 @@ _0800AE86:
cmp r1, r2
bne _0800AEA4
movs r1, 0
- ldr r4, =gUnknown_03003140
+ ldr r4, =gLinkCallback
ldr r3, =gUnknown_030030EC
movs r2, 0
_0800AE92:
@@ -795,18 +647,18 @@ _0800AEA4:
thumb_func_start sub_800AEB4
sub_800AEB4: @ 800AEB4
push {lr}
- ldr r0, =gUnknown_020229C4
+ ldr r0, =gLinkOpen
ldrb r0, [r0]
cmp r0, 0
beq _0800AEF4
- ldr r0, =gUnknown_030030E0
+ ldr r0, =gLinkStatus
ldr r2, [r0]
movs r0, 0xFE
lsls r0, 11
ands r0, r2
cmp r0, 0
beq _0800AEF4
- ldr r0, =gUnknown_030030F8
+ ldr r0, =gSuppressLinkErrorMessage
ldrb r0, [r0]
cmp r0, 0
bne _0800AEEA
@@ -818,13 +670,13 @@ sub_800AEB4: @ 800AEB4
ldr r0, =gUnknown_03003160
ldrb r0, [r0]
strb r0, [r1, 0x5]
- ldr r0, =c2_800ACD4
+ ldr r0, =CB2_LinkError
bl SetMainCallback2
_0800AEEA:
- ldr r1, =gUnknown_0300306C
+ ldr r1, =gLinkErrorOccurred
movs r0, 0x1
strb r0, [r1]
- bl sub_80097E8
+ bl CloseLink
_0800AEF4:
pop {r0}
bx r0
@@ -845,8 +697,8 @@ sub_800AF18: @ 800AF18
.pool
thumb_func_end sub_800AF18
- thumb_func_start c2_800ACD4
-c2_800ACD4: @ 800AF30
+ thumb_func_start CB2_LinkError
+CB2_LinkError: @ 800AF30
push {r4,lr}
movs r0, 0
movs r1, 0
@@ -935,7 +787,7 @@ _0800AF8C:
ldr r1, =gSoftResetDisabled
movs r0, 0
strb r0, [r1]
- ldr r0, =sub_8009404
+ ldr r0, =Task_DestroySelf
movs r1, 0
bl CreateTask
bl StopMapMusic
@@ -953,7 +805,7 @@ _0800B03C:
pop {r0}
bx r0
.pool
- thumb_func_end c2_800ACD4
+ thumb_func_end CB2_LinkError
thumb_func_start sub_800B080
sub_800B080: @ 800B080
@@ -1251,7 +1103,7 @@ _0800B314:
thumb_func_start sub_800B320
sub_800B320: @ 800B320
- ldr r0, =gUnknown_030030E0
+ ldr r0, =gLinkStatus
ldr r0, [r0]
lsrs r0, 6
movs r1, 0x1
@@ -1260,17 +1112,17 @@ sub_800B320: @ 800B320
.pool
thumb_func_end sub_800B320
- thumb_func_start sub_800B330
-sub_800B330: @ 800B330
- ldr r1, =gUnknown_030030F8
+ thumb_func_start SetSuppressLinkErrorMessage
+SetSuppressLinkErrorMessage: @ 800B330
+ ldr r1, =gSuppressLinkErrorMessage
strb r0, [r1]
bx lr
.pool
- thumb_func_end sub_800B330
+ thumb_func_end SetSuppressLinkErrorMessage
thumb_func_start sub_800B33C
sub_800B33C: @ 800B33C
- ldr r0, =gUnknown_0300306C
+ ldr r0, =gLinkErrorOccurred
ldrb r0, [r0]
bx lr
.pool
@@ -1279,11 +1131,11 @@ sub_800B33C: @ 800B33C
thumb_func_start sub_800B348
sub_800B348: @ 800B348
push {r4-r6,lr}
- bl sub_8009638
- ldr r1, =gUnknown_03003030
+ bl InitLocalLinkPlayer
+ ldr r1, =gLocalLinkPlayerBlock
adds r2, r1, 0
adds r2, 0x10
- ldr r0, =gUnknown_020229CC
+ ldr r0, =gLocalLinkPlayer
ldm r0!, {r3-r5}
stm r2!, {r3-r5}
ldm r0!, {r3,r4,r6}
@@ -1307,7 +1159,7 @@ sub_800B348: @ 800B348
strh r2, [r0]
ldrb r2, [r3, 0x2]
strb r2, [r0, 0x2]
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r2, 0x3C
bl memcpy
pop {r4-r6}
@@ -1353,7 +1205,7 @@ sub_800B3A4: @ 800B3A4
cmp r0, 0
beq _0800B3F4
_0800B3EE:
- ldr r0, =c2_800ACD4
+ ldr r0, =CB2_LinkError
bl SetMainCallback2
_0800B3F4:
pop {r4-r6}
@@ -1369,14 +1221,14 @@ HandleLinkConnection: @ 800B40C
ldrb r0, [r0]
cmp r0, 0
bne _0800B45C
- ldr r0, =gUnknown_03003144
- ldr r1, =gUnknown_03003110
- ldr r2, =gUnknown_03003090
+ ldr r0, =gShouldAdvanceLinkState
+ ldr r1, =gSendCmd
+ ldr r2, =gRecvCmds
bl sub_800B638
- ldr r4, =gUnknown_030030E0
+ ldr r4, =gLinkStatus
str r0, [r4]
ldr r0, =gMain+0x2c
- bl sub_80099E0
+ bl LinkMain2
ldr r0, [r4]
movs r1, 0x80
lsls r1, 1
@@ -1466,7 +1318,7 @@ sub_800B4DC: @ 800B4DC
ldrb r0, [r0]
cmp r0, 0
bne _0800B4FC
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
ldr r1, =0x00000fbd
adds r0, r1
ldrb r0, [r0]
@@ -1516,8 +1368,8 @@ sub_800B524: @ 800B524
bx r0
thumb_func_end sub_800B524
- thumb_func_start sub_800B53C
-sub_800B53C: @ 800B53C
+ thumb_func_start DisableSerial
+DisableSerial: @ 800B53C
push {lr}
sub sp, 0x4
movs r0, 0xC0
@@ -1541,7 +1393,7 @@ sub_800B53C: @ 800B53C
str r0, [r2]
str r1, [r2, 0x4]
str r0, [sp]
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
ldr r2, =0x050003f0
mov r0, sp
bl CpuSet
@@ -1549,10 +1401,10 @@ sub_800B53C: @ 800B53C
pop {r0}
bx r0
.pool
- thumb_func_end sub_800B53C
+ thumb_func_end DisableSerial
- thumb_func_start sub_800B594
-sub_800B594: @ 800B594
+ thumb_func_start EnableSerial
+EnableSerial: @ 800B594
push {r4,r5,lr}
sub sp, 0x4
movs r0, 0xC0
@@ -1576,7 +1428,7 @@ sub_800B594: @ 800B594
strh r4, [r0]
movs r5, 0
str r5, [sp]
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
ldr r2, =0x050003f0
mov r0, sp
bl CpuSet
@@ -1599,16 +1451,16 @@ sub_800B594: @ 800B594
pop {r0}
bx r0
.pool
- thumb_func_end sub_800B594
+ thumb_func_end EnableSerial
- thumb_func_start sub_800B628
-sub_800B628: @ 800B628
+ thumb_func_start ResetSerial
+ResetSerial: @ 800B628
push {lr}
- bl sub_800B594
- bl sub_800B53C
+ bl EnableSerial
+ bl DisableSerial
pop {r0}
bx r0
- thumb_func_end sub_800B628
+ thumb_func_end ResetSerial
thumb_func_start sub_800B638
sub_800B638: @ 800B638
@@ -1616,7 +1468,7 @@ sub_800B638: @ 800B638
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
ldrb r0, [r0, 0x1]
cmp r0, 0x4
bhi _0800B6EA
@@ -1634,8 +1486,8 @@ _0800B65C:
.4byte _0800B6D4
.4byte _0800B6DE
_0800B670:
- bl sub_800B53C
- ldr r1, =gUnknown_03003170
+ bl DisableSerial
+ ldr r1, =gLink
movs r0, 0x1
strb r0, [r1, 0x1]
b _0800B6EA
@@ -1644,8 +1496,8 @@ _0800B680:
ldrb r0, [r4]
cmp r0, 0x1
bne _0800B6EA
- bl sub_800B594
- ldr r1, =gUnknown_03003170
+ bl EnableSerial
+ ldr r1, =gLink
movs r0, 0x2
strb r0, [r1, 0x1]
b _0800B6EA
@@ -1659,7 +1511,7 @@ _0800B698:
bl sub_800B764
b _0800B6EA
_0800B6A8:
- ldr r2, =gUnknown_03003170
+ ldr r2, =gLink
ldrb r0, [r2]
cmp r0, 0x8
bne _0800B6EA
@@ -1670,7 +1522,7 @@ _0800B6A8:
b _0800B6EA
.pool
_0800B6C0:
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
movs r1, 0
strb r1, [r0, 0x1]
ldr r0, =0x0400012a
@@ -1679,7 +1531,7 @@ _0800B6C0:
.pool
_0800B6D4:
bl sub_800B790
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
movs r0, 0x4
strb r0, [r1, 0x1]
_0800B6DE:
@@ -1690,7 +1542,7 @@ _0800B6DE:
_0800B6EA:
movs r0, 0
strb r0, [r4]
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
ldrb r2, [r1, 0x2]
ldrb r0, [r1, 0x3]
lsls r0, 2
@@ -1762,7 +1614,7 @@ sub_800B764: @ 800B764
ldr r1, [r0]
movs r0, 0xC
ands r1, r0
- ldr r2, =gUnknown_03003170
+ ldr r2, =gLink
cmp r1, 0x8
bne _0800B788
ldrb r0, [r2, 0x2]
@@ -1782,7 +1634,7 @@ _0800B78C:
thumb_func_start sub_800B790
sub_800B790: @ 800B790
push {lr}
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
ldrb r0, [r0]
cmp r0, 0
beq _0800B7AE
@@ -1815,7 +1667,7 @@ sub_800B7C0: @ 800B7C0
strh r0, [r2]
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
ldr r4, =0x00000339
adds r0, r1, r4
ldrb r4, [r0]
@@ -1920,7 +1772,7 @@ sub_800B8A8: @ 800B8A8
strh r0, [r2]
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
ldr r3, =0x00000fbd
adds r0, r1, r3
ldrb r0, [r0]
@@ -2042,7 +1894,7 @@ _0800B990:
thumb_func_start sub_800B9B8
sub_800B9B8: @ 800B9B8
push {r4,lr}
- ldr r3, =gUnknown_03003170
+ ldr r3, =gLink
ldrb r4, [r3]
cmp r4, 0
beq _0800B9F4
@@ -2114,7 +1966,7 @@ Timer3Intr: @ 800BA28
thumb_func_start sub_800BA38
sub_800BA38: @ 800BA38
push {r4,lr}
- ldr r4, =gUnknown_03003170
+ ldr r4, =gLink
ldr r0, =0x04000128
ldr r1, [r0]
lsls r0, r1, 26
@@ -2150,7 +2002,7 @@ _0800BA86:
movs r0, 0x4
strb r0, [r4, 0x1]
_0800BA8A:
- ldr r3, =gUnknown_03003170
+ ldr r3, =gLink
ldrb r0, [r3, 0xD]
adds r0, 0x1
movs r2, 0
@@ -2192,7 +2044,7 @@ sub_800BAD0: @ 800BAD0
push {r6,r7}
movs r5, 0
ldr r6, =0x0000ffff
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
ldrb r1, [r0, 0xE]
adds r7, r0, 0
cmp r1, 0x1
@@ -2207,7 +2059,7 @@ _0800BAFC:
_0800BB00:
adds r0, r2, 0
strh r0, [r1]
- ldr r2, =gUnknown_03003170+0x4
+ ldr r2, =gLink+0x4
ldr r3, =0x04000120
ldr r0, [r3]
ldr r1, [r3, 0x4]
@@ -2313,7 +2165,7 @@ sub_800BBCC: @ 800BBCC
ldr r0, [r0]
str r0, [sp]
str r1, [sp, 0x4]
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
ldrb r1, [r0, 0x16]
adds r6, r0, 0
cmp r1, 0
@@ -2447,7 +2299,7 @@ _0800BCD0:
thumb_func_start sub_800BCE4
sub_800BCE4: @ 800BCE4
push {r4,lr}
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
ldrb r1, [r0, 0x16]
adds r4, r0, 0
cmp r1, 0x8
@@ -2533,7 +2385,7 @@ _0800BD8C:
thumb_func_start sub_800BD98
sub_800BD98: @ 800BD98
push {lr}
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
ldrb r0, [r0]
cmp r0, 0
beq _0800BDB4
@@ -2555,7 +2407,7 @@ _0800BDB4:
thumb_func_start sub_800BDCC
sub_800BDCC: @ 800BDCC
push {lr}
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
ldrb r0, [r1, 0x17]
cmp r0, 0x8
bne _0800BDE4
@@ -2582,7 +2434,7 @@ _0800BDF4:
thumb_func_start sub_800BDFC
sub_800BDFC: @ 800BDFC
push {r4-r6,lr}
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
ldr r2, =0x00000339
adds r0, r1, r2
movs r2, 0
@@ -2624,7 +2476,7 @@ _0800BE22:
thumb_func_start sub_800BE50
sub_800BE50: @ 800BE50
push {r4-r7,lr}
- ldr r1, =gUnknown_03003170
+ ldr r1, =gLink
ldr r2, =0x00000fbd
adds r0, r1, r2
movs r2, 0
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index a2b90dc7a..4b5a3b6b5 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -5084,13 +5084,13 @@ _0800E64A:
adds r0, r4, 0
bl sub_800D724
strh r5, [r7]
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
ldr r2, =0x01000008
adds r0, r7, 0
bl CpuSet
mov r0, r8
strh r5, [r0]
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r2, =0x01000028
bl CpuSet
mov r0, r9
@@ -5143,7 +5143,7 @@ sub_800E700: @ 800E700
lsrs r1, r0, 16
cmp r1, 0
bne _0800E732
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
strh r1, [r0]
bl sub_800AAF4
movs r0, 0
@@ -6115,7 +6115,7 @@ sub_800EFB0: @ 800EFB0
push {r4-r7,lr}
sub sp, 0x4
movs r2, 0
- ldr r7, =gUnknown_03003090
+ ldr r7, =gRecvCmds
ldr r0, =gUnknown_03005000
adds r6, r7, 0
ldr r1, =0x00000c87
@@ -6160,8 +6160,8 @@ _0800EFD0:
thumb_func_start sub_800F014
sub_800F014: @ 800F014
push {lr}
- ldr r3, =gUnknown_03003110
- ldr r2, =gUnknown_03003090
+ ldr r3, =gSendCmd
+ ldr r2, =gRecvCmds
movs r1, 0x6
_0800F01C:
ldrh r0, [r3]
@@ -6171,7 +6171,7 @@ _0800F01C:
subs r1, 0x1
cmp r1, 0
bge _0800F01C
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
movs r2, 0
adds r0, r1, 0
adds r0, 0xC
@@ -6250,7 +6250,7 @@ _0800F0C4:
.pool
_0800F0CC:
movs r3, 0
- ldr r4, =gUnknown_03003090
+ ldr r4, =gRecvCmds
_0800F0D0:
movs r2, 0
lsls r0, r3, 4
@@ -6518,7 +6518,7 @@ _0800F2E0:
str r2, [sp, 0x4]
adds r5, 0x1
str r5, [sp]
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
mov r9, r1
adds r5, r3, 0
adds r7, r4, 0
@@ -6745,7 +6745,7 @@ sub_800F4F0: @ 800F4F0
mov r1, sp
bl sub_800D934
movs r1, 0
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
mov r12, r0
_0800F506:
movs r4, 0
@@ -6849,7 +6849,7 @@ _0800F5C0:
ldrb r1, [r2]
strb r0, [r2]
bl sub_8010528
- ldr r5, =gUnknown_03003110
+ ldr r5, =gSendCmd
add r4, sp, 0x48
adds r0, r5, 0
adds r1, r4, 0
@@ -7069,7 +7069,7 @@ rfu_func_080F97B8: @ 800F794
ldrh r2, [r3]
cmp r2, 0
beq _0800F7C6
- ldr r0, =gUnknown_030022B4
+ ldr r0, =gLinkTransferringData
ldrb r0, [r0]
cmp r0, 0x1
beq _0800F7C6
@@ -7143,7 +7143,7 @@ sub_800F820: @ 800F820
cmp r0, 0
bne _0800F83C
bl sub_8082D18
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
strh r0, [r1, 0xC]
_0800F83C:
ldr r1, =gUnknown_020223C0
@@ -7182,7 +7182,7 @@ sub_800F86C: @ 800F86C
_0800F87A:
mov r1, r8
lsls r0, r1, 4
- ldr r2, =gUnknown_03003090
+ ldr r2, =gRecvCmds
adds r1, r0, r2
ldrh r7, [r1]
movs r3, 0xFF
@@ -7282,12 +7282,12 @@ _0800F920:
beq _0800F930
b _0800FC08
_0800F930:
- ldr r1, =gUnknown_03003090+0x2
+ ldr r1, =gRecvCmds+0x2
adds r0, r5, r1
ldrh r0, [r0]
ldr r2, =gUnknown_03005000
strb r0, [r2, 0xD]
- ldr r3, =gUnknown_03003090+0x4
+ ldr r3, =gRecvCmds+0x4
adds r0, r5, r3
bl sub_800F74C
ldr r4, =gUnknown_03005CCE
@@ -7317,13 +7317,13 @@ _0800F982:
adds r0, 0x80
movs r2, 0
strh r4, [r0]
- ldr r1, =gUnknown_03003090+0x2
+ ldr r1, =gRecvCmds+0x2
adds r0, r5, r1
ldrh r0, [r0]
adds r1, r3, 0
adds r1, 0x82
strh r0, [r1]
- ldr r1, =gUnknown_03003090+0x4
+ ldr r1, =gRecvCmds+0x4
adds r0, r5, r1
ldrh r1, [r0]
adds r0, r3, 0
@@ -7392,7 +7392,7 @@ _0800FA0E:
adds r2, r4, 0x1
lsls r0, r2, 1
adds r0, r3
- ldr r4, =gUnknown_03003090
+ ldr r4, =gRecvCmds
adds r0, r4
ldrh r0, [r0]
strh r0, [r1]
@@ -7453,7 +7453,7 @@ _0800FA90:
.pool
_0800FAAC:
ldr r2, =gUnknown_082ED6B8
- ldr r3, =gUnknown_03003090+0x2
+ ldr r3, =gRecvCmds+0x2
adds r0, r5, r3
ldrh r1, [r0]
lsls r1, 3
@@ -7477,7 +7477,7 @@ _0800FAE0:
movs r4, 0x80
lsls r4, 1
adds r0, r2, r4
- ldr r3, =gUnknown_03003090+0x2
+ ldr r3, =gRecvCmds+0x2
adds r1, r5, r3
ldrh r0, [r0]
mov r6, r8
@@ -7505,7 +7505,7 @@ _0800FB10:
adds r6, 0x1
cmp r0, 0
beq _0800FC08
- ldr r0, =gUnknown_03003090+0x2
+ ldr r0, =gRecvCmds+0x2
adds r4, r5, r0
ldrh r1, [r4]
ldr r0, =gUnknown_03007890
@@ -7516,14 +7516,14 @@ _0800FB10:
beq _0800FB48
strb r2, [r3]
bl sub_800D630
- ldr r1, =gUnknown_03003090+0x4
+ ldr r1, =gRecvCmds+0x4
adds r0, r5, r1
ldrh r1, [r0]
ldr r2, =0x00000ce4
adds r0, r7, r2
strb r1, [r0]
_0800FB48:
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r0, 0x6
adds r0, r5, r0
ldrh r0, [r0]
@@ -7536,16 +7536,16 @@ _0800FB78:
movs r0, 0xEE
lsls r0, 8
bl sub_800FD14
- ldr r1, =gUnknown_03003110
- ldr r3, =gUnknown_03003090+0x2
+ ldr r1, =gSendCmd
+ ldr r3, =gRecvCmds+0x2
adds r0, r5, r3
ldrh r0, [r0]
strh r0, [r1, 0x2]
- ldr r4, =gUnknown_03003090+0x4
+ ldr r4, =gRecvCmds+0x4
adds r0, r5, r4
ldrh r0, [r0]
strh r0, [r1, 0x4]
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r0, 0x6
adds r0, r5, r0
ldrh r0, [r0]
@@ -7561,13 +7561,13 @@ _0800FBB0:
bne _0800FC44
ldr r0, =0x00000ce3
adds r2, r4, r0
- ldr r1, =gUnknown_03003090+0x2
+ ldr r1, =gRecvCmds+0x2
adds r3, r5, r1
ldrb r1, [r3]
ldrb r0, [r2]
orrs r0, r1
strb r0, [r2]
- ldr r2, =gUnknown_03003090+0x4
+ ldr r2, =gRecvCmds+0x4
adds r0, r5, r2
ldrh r1, [r0]
ldr r2, =0x00000ce4
@@ -7582,7 +7582,7 @@ _0800FBF4:
mov r3, r8
lsls r1, r3, 1
adds r1, r0
- ldr r4, =gUnknown_03003090+0x2
+ ldr r4, =gRecvCmds+0x2
adds r0, r5, r4
ldrh r0, [r0]
strh r0, [r1]
@@ -7747,7 +7747,7 @@ sub_800FD14: @ 800FD14
push {r4,r5,lr}
lsls r0, 16
lsrs r1, r0, 16
- ldr r5, =gUnknown_03003110
+ ldr r5, =gSendCmd
strh r1, [r5]
movs r0, 0xF0
lsls r0, 7
@@ -7900,7 +7900,7 @@ _0800FE46:
sub_800FE50: @ 800FE50
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0800FE76
@@ -7934,7 +7934,7 @@ sub_800FE84: @ 800FE84
ldr r0, [r5]
cmp r0, 0
bne _0800FEB8
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0800FEB8
@@ -7986,7 +7986,7 @@ _0800FEC8:
str r7, [r5, 0x70]
b _0800FF1C
_0800FF0A:
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
cmp r7, r4
beq _0800FF1A
adds r0, r4, 0
@@ -8019,7 +8019,7 @@ _0800FF32:
thumb_func_start rfufunc_80F9F44
rfufunc_80F9F44: @ 800FF4C
push {r4,r5,lr}
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0800FFA0
@@ -8044,7 +8044,7 @@ rfufunc_80F9F44: @ 800FF4C
.pool
_0800FF84:
bl GetMultiplayerId
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
lsls r0, 24
lsrs r0, 20
adds r0, r1
@@ -8070,7 +8070,7 @@ sub_800FFB0: @ 800FFB0
ldr r0, =gUnknown_03005000
mov r12, r0
ldr r5, [r0, 0x70]
- ldr r3, =gUnknown_03003110
+ ldr r3, =gSendCmd
mov r2, r12
adds r2, 0x6C
ldrh r1, [r2]
@@ -8139,7 +8139,7 @@ rfufunc_80FA020: @ 8010028
ldrb r0, [r5, 0xC]
cmp r0, 0
bne _080100F0
- ldr r3, =gUnknown_03003110
+ ldr r3, =gSendCmd
adds r2, r5, 0
adds r2, 0x6E
ldrh r0, [r2]
@@ -8150,7 +8150,7 @@ rfufunc_80FA020: @ 8010028
strh r0, [r3]
movs r4, 0
mov r9, r5
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
mov r12, r0
lsls r5, r6, 4
adds r7, r2, 0
@@ -8376,7 +8376,7 @@ _08010220:
thumb_func_start sub_801022C
sub_801022C: @ 801022C
push {r4,lr}
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801024E
@@ -8531,7 +8531,7 @@ sub_8010358: @ 8010358
ldrb r0, [r0]
cmp r0, 0
bne _0801037A
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801037A
@@ -8560,7 +8560,7 @@ sub_8010390: @ 8010390
ldrb r0, [r0]
cmp r0, 0
bne _0801041E
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801041E
@@ -8603,7 +8603,7 @@ _080103FA:
ldrb r0, [r0]
cmp r0, 0
bne _0801041E
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801041E
@@ -9241,7 +9241,7 @@ _080108F0:
b _080109D2
.pool
_08010904:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080109D2
@@ -9513,7 +9513,7 @@ _08010B28:
.4byte _08010C0A
.4byte _08010C94
_08010B40:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
beq _08010B4A
@@ -9527,7 +9527,7 @@ _08010B4A:
b _08010C4A
.pool
_08010B60:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
beq _08010B6A
@@ -9571,7 +9571,7 @@ _08010B8C:
b _08010C4A
.pool
_08010BC0:
- ldr r5, =gUnknown_020228C4
+ ldr r5, =gBlockSendBuffer
adds r1, r5, 0
ldr r0, =gUnknown_082ED7EC
ldm r0!, {r2-r4}
@@ -9609,7 +9609,7 @@ _08010BE2:
adds r0, 0x1
strh r0, [r1, 0x8]
_08010C0A:
- ldr r5, =gUnknown_020228C4
+ ldr r5, =gBlockSendBuffer
ldr r1, =gUnknown_03005000
ldrb r0, [r1, 0xD]
strb r0, [r5, 0xF]
@@ -9633,7 +9633,7 @@ _08010C20:
mov r1, r12
movs r2, 0x8C
bl memcpy
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
movs r0, 0
movs r2, 0xA0
bl SendBlock
@@ -9758,7 +9758,7 @@ _08010D56:
cmp r0, 0
beq _08010DA6
bl sub_800B348
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
movs r0, 0
movs r2, 0x3C
bl SendBlock
@@ -9824,7 +9824,7 @@ _08010DDE:
movs r0, 0x2
strb r0, [r1]
_08010DE4:
- ldr r4, =c2_800ACD4
+ ldr r4, =CB2_LinkError
adds r0, r4, 0
bl SetMainCallback2
ldr r0, =gMain
@@ -9862,7 +9862,7 @@ _08010E20:
ldrb r1, [r0]
movs r1, 0x2
strb r1, [r0]
- bl sub_80097E8
+ bl CloseLink
b _08010E8E
.pool
_08010E5C:
@@ -11412,7 +11412,7 @@ sub_8011AC8: @ 8011AC8
sub sp, 0x4
movs r0, 0
str r0, [sp]
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r2, =0x05000014
mov r0, sp
bl CpuSet
@@ -11445,12 +11445,12 @@ sub_8011AFC: @ 8011AFC
lsls r0, 24
cmp r0, 0
beq _08011B70
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001111
adds r0, r2, 0
strh r0, [r1]
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
ldr r0, =gMain
ldrh r0, [r0, 0x24]
bl SeedRng
diff --git a/asm/mystery_event_menu.s b/asm/mystery_event_menu.s
index df8e443a1..a1a90cd4d 100644
--- a/asm/mystery_event_menu.s
+++ b/asm/mystery_event_menu.s
@@ -84,7 +84,7 @@ _081789AC:
movs r0, 0x50
movs r1, 0
bl SetGpuReg
- ldr r0, =sub_8009404
+ ldr r0, =Task_DestroySelf
movs r1, 0
bl CreateTask
bl StopMapMusic
@@ -232,15 +232,15 @@ _08178B56:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00005501
adds r0, r2, 0
strh r0, [r1]
- bl sub_8009734
+ bl OpenLink
b _08178E58
.pool
_08178B80:
- ldr r0, =gUnknown_030030E0
+ ldr r0, =gLinkStatus
ldr r1, [r0]
movs r0, 0x20
ands r0, r1
@@ -327,7 +327,7 @@ _08178C38:
_08178C42:
movs r0, 0x5
bl PlaySE
- bl sub_80097E8
+ bl CloseLink
movs r0, 0x87
lsls r0, 3
adds r1, r4, r0
@@ -345,7 +345,7 @@ _08178C54:
_08178C68:
movs r0, 0x2
movs r1, 0x2
- bl sub_800A0C8
+ bl GetLinkPlayerDataExchangeStatusTimed
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@@ -383,7 +383,7 @@ _08178CAC:
b _08178E34
.pool
_08178CCC:
- bl sub_80097E8
+ bl CloseLink
_08178CD0:
ldr r4, =gStringVar4
adds r0, r4, 0
@@ -416,7 +416,7 @@ _08178D00:
_08178D0E:
movs r0, 0x5
bl PlaySE
- bl sub_80097E8
+ bl CloseLink
movs r2, 0x87
lsls r2, 3
adds r1, r4, r2
@@ -560,7 +560,7 @@ _08178E48:
bne _08178E58
bl DoSoftReset
_08178E58:
- ldr r0, =gUnknown_030030E0
+ ldr r0, =gLinkStatus
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
@@ -570,7 +570,7 @@ _08178E58:
lsls r0, 24
cmp r0, 0
bne _08178E98
- bl sub_80097E8
+ bl CloseLink
ldr r4, =gStringVar4
adds r0, r4, 0
movs r1, 0x1
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 86fe8813e..1ccb893af 100755
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -25789,7 +25789,7 @@ sub_81D3B54: @ 81D3B54
adds r5, r1, 0
bl sub_81D41A0
movs r7, 0x2
- ldr r4, =gUnknown_03003144
+ ldr r4, =gShouldAdvanceLinkState
_081D3B64:
bl sub_81D4170
ldr r0, =gUnknown_030012E2
@@ -25857,7 +25857,7 @@ sub_81D3BE8: @ 81D3BE8
adds r5, r0, 0
bl sub_81D41A0
movs r6, 0x2
- ldr r4, =gUnknown_03003144
+ ldr r4, =gShouldAdvanceLinkState
_081D3BF6:
bl sub_81D4170
ldr r0, =gUnknown_030012E2
@@ -26006,7 +26006,7 @@ sub_81D3D34: @ 81D3D34
movs r1, 0x8
orrs r0, r1
strh r0, [r2]
- ldr r0, =gUnknown_03003144
+ ldr r0, =gShouldAdvanceLinkState
strb r3, [r0]
ldr r0, =gUnknown_030012E6
strh r3, [r0]
@@ -26062,7 +26062,7 @@ _081D3DC8:
beq _081D3DD8
bl sub_81D413C
_081D3DD8:
- ldr r0, =gUnknown_03003144
+ ldr r0, =gShouldAdvanceLinkState
ldrb r0, [r0]
cmp r0, 0x2
beq _081D3DE2
@@ -26080,7 +26080,7 @@ _081D3DE8:
movs r0, 0x3
strb r0, [r1, 0x1]
_081D3DFC:
- ldr r0, =gUnknown_03003144
+ ldr r0, =gShouldAdvanceLinkState
ldrb r0, [r0]
cmp r0, 0x2
bne _081D3E18
@@ -28050,7 +28050,7 @@ _081D4E12:
beq _081D4E1C
movs r5, 0x3
_081D4E1C:
- ldr r1, =gUnknown_03003144
+ ldr r1, =gShouldAdvanceLinkState
movs r0, 0
strb r0, [r1]
adds r0, r5, 0
@@ -28068,13 +28068,13 @@ sub_81D4E30: @ 81D4E30
lsls r2, 6
movs r1, 0
bl memset
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00005503
adds r0, r2, 0
strh r0, [r1]
- bl sub_8009734
+ bl OpenLink
movs r0, 0x1
- bl sub_800B330
+ bl SetSuppressLinkErrorMessage
pop {r0}
bx r0
.pool
@@ -28090,7 +28090,7 @@ sub_81D4E60: @ 81D4E60
strh r0, [r1]
movs r0, 0
strh r0, [r2]
- ldr r0, =gUnknown_03003170+0x4
+ ldr r0, =gLink+0x4
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [sp, 0x4]
@@ -28256,7 +28256,7 @@ _081D4FB6:
ldrb r0, [r0]
cmp r0, 0
beq _081D4FE6
- bl sub_800A23C
+ bl IsLinkPlayerDataExchangeComplete
lsls r0, 24
cmp r0, 0
beq _081D4FE0
@@ -28447,7 +28447,7 @@ _081D515C:
beq _081D5166
b _081D52FC
_081D5166:
- bl sub_80097E8
+ bl CloseLink
b _081D525C
_081D516C:
adds r0, r4, 0
@@ -28500,7 +28500,7 @@ _081D51D0:
beq _081D51F4
movs r0, 0x5
bl PlaySE
- bl sub_80097E8
+ bl CloseLink
adds r0, r4, 0
bl sub_81D505C
b _081D535A
@@ -28513,7 +28513,7 @@ _081D51F4:
bls _081D5210
adds r0, r4, 0
bl sub_81D505C
- bl sub_80097E8
+ bl CloseLink
movs r0, 0x7
strb r0, [r4, 0x8]
b _081D548A
@@ -28523,7 +28523,7 @@ _081D5210:
beq _081D522E
movs r0, 0x5
bl PlaySE
- bl sub_80097E8
+ bl CloseLink
adds r0, r4, 0
bl sub_81D505C
movs r0, 0x8
@@ -28537,7 +28537,7 @@ _081D522E:
bne _081D523C
b _081D548A
_081D523C:
- bl sub_80097E8
+ bl CloseLink
bl sub_81D4E30
adds r0, r4, 0
bl sub_81D505C
@@ -28654,13 +28654,13 @@ _081D5340:
_081D5350:
movs r0, 0x5
bl PlaySE
- bl sub_80097E8
+ bl CloseLink
_081D535A:
movs r0, 0x17
strb r0, [r4, 0x8]
b _081D548A
_081D5360:
- bl sub_80097E8
+ bl CloseLink
movs r0, 0x15
strb r0, [r4, 0x8]
b _081D548A
@@ -28670,7 +28670,7 @@ _081D536A:
cmp r0, 0
beq _081D537A
_081D5374:
- bl sub_80097E8
+ bl CloseLink
b _081D53C0
_081D537A:
bl GetBlockReceivedStatus
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
index 8a1f41126..89507d3f3 100644
--- a/asm/record_mixing.s
+++ b/asm/record_mixing.s
@@ -747,7 +747,7 @@ _080E7384:
movs r0, 0xC8
lsls r0, 1
strh r0, [r5, 0x8]
- bl sub_8009FAC
+ bl ClearLinkCallback_2
b _080E7566
.pool
_080E73A0:
@@ -993,7 +993,7 @@ _080E75AC:
movs r0, 0xC8
muls r0, r2
adds r1, r0
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r2, 0xC8
bl memcpy
b _080E75FC
diff --git a/asm/rom4.s b/asm/rom4.s
index a7e98d013..819cbea81 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -3584,7 +3584,7 @@ sub_808631C: @ 808631C
lsrs r0, 24
cmp r0, 0x1
bne _0808632E
- bl sub_80097E8
+ bl CloseLink
_0808632E:
ldr r0, =gSerialIsRFU
ldrb r0, [r0]
@@ -5950,7 +5950,7 @@ sub_8087690: @ 8087690
ldrb r0, [r0]
cmp r0, 0
bne _080876B0
- ldr r0, =gUnknown_03003170
+ ldr r0, =gLink
ldr r1, =0x00000339
adds r0, r1
ldrb r0, [r0]
diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s
index fc70f498a..e429ae6af 100644
--- a/asm/rom_8011DC0.s
+++ b/asm/rom_8011DC0.s
@@ -70,7 +70,7 @@ sub_8011E2C: @ 8011E2C
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r6, =gUnknown_03003110
+ ldr r6, =gSendCmd
ldrh r0, [r6]
cmp r0, 0
bne _08011E7A
@@ -1244,7 +1244,7 @@ _08012848:
movs r2, 0
bl sub_8010F84
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
ldrb r1, [r4]
movs r0, 0xF
ands r0, r1
@@ -2752,7 +2752,7 @@ _08013590:
movs r2, 0
bl sub_8010F84
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
bl sub_8011C5C
movs r0, 0x70
bl AllocZeroed
@@ -3500,7 +3500,7 @@ _08013CD0:
movs r2, 0
bl sub_8010F84
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
bl sub_8011C5C
movs r0, 0x1
bl sub_80111B0
@@ -3934,7 +3934,7 @@ _08013FFC:
b _0801405A
.pool
_08014038:
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
ldr r0, =gSaveBlock1Ptr
ldr r1, [r0]
ldr r0, =0x00002be0
@@ -4505,7 +4505,7 @@ _080145D8:
.pool
_080145F4:
bl overworld_free_bg_tilemaps
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
bl sp000_heal_pokemon
@@ -4524,7 +4524,7 @@ _08014620:
bl sp000_heal_pokemon
bl copy_player_party_to_sav1
bl copy_bags_and_unk_data_from_save_blocks
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
movs r0, 0x2
@@ -4540,7 +4540,7 @@ _0801464C:
bl sp000_heal_pokemon
bl copy_player_party_to_sav1
bl copy_bags_and_unk_data_from_save_blocks
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
movs r0, 0x5
@@ -4552,7 +4552,7 @@ _0801464C:
b _080146B0
.pool
_08014678:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
bl overworld_free_bg_tilemaps
@@ -4565,7 +4565,7 @@ _08014678:
b _080146B0
.pool
_08014698:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
bl overworld_free_bg_tilemaps
@@ -4605,7 +4605,7 @@ _080146F6:
bl sub_801DD98
b _08014764
_080146FC:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0
bl sub_80143E4
ldr r0, =sub_80141A4
@@ -4675,7 +4675,7 @@ sub_8014790: @ 8014790
lsls r0, 3
ldr r1, =gTasks + 0x8
adds r7, r0, r1
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
mov r9, r0
movs r1, 0
ldrsh r0, [r7, r1]
@@ -4999,7 +4999,7 @@ _08014AB0:
movs r1, 0
bl sub_8010FA0
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
movs r0, 0x2
bl sub_8011C10
movs r0, 0x1
@@ -5537,7 +5537,7 @@ _08014FA4:
movs r2, 0
bl sub_8010F84
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
bl sub_8011C5C
movs r0, 0x70
bl AllocZeroed
@@ -5925,7 +5925,7 @@ _08015358:
movs r2, 0
bl sub_8010F84
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
bl sub_8011C5C
movs r0, 0x70
bl AllocZeroed
@@ -6475,7 +6475,7 @@ _08015878:
ldrh r2, [r2, 0xC]
bl sub_8010FCC
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
bl sub_8011C84
ldr r0, [r6, 0x8]
movs r1, 0x1
@@ -6822,7 +6822,7 @@ _08015BBE:
bne _08015BCA
bl _08016878
_08015BCA:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
ldr r0, =sub_80140E0
@@ -7349,7 +7349,7 @@ _080160DA:
bne _080160E4
b _08016878
_080160E4:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
ldr r0, =sub_80140E0
@@ -8184,7 +8184,7 @@ _08016894:
sub_801689C: @ 801689C
push {r4,r5,lr}
adds r2, r0, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r5, [r3, 0x12]
adds r4, r5, 0
cmp r4, 0
@@ -8325,7 +8325,7 @@ _080169BE:
movs r2, 0
bl sub_8010F84
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
bl sub_8011C84
movs r0, 0x1
bl sub_80111B0
@@ -11147,7 +11147,7 @@ _08017FC6:
sub_8017FD8: @ 8017FD8
push {lr}
adds r2, r0, 0
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
ldrh r1, [r0, 0x2]
cmp r1, 0
beq _08017FFC
@@ -14200,7 +14200,7 @@ _080198FE:
b _08019922
.pool
_0801990C:
- bl sub_80097E8
+ bl CloseLink
ldr r0, [r5, 0x10]
bl Free
adds r0, r4, 0
@@ -16823,7 +16823,7 @@ _0801AE48:
beq _0801AE54
b _0801AFAE
_0801AE54:
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
adds r0, r4, 0
movs r1, 0
movs r2, 0x20
@@ -16840,7 +16840,7 @@ _0801AE78:
movs r0, 0x51
_0801AE7A:
strb r0, [r4]
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
movs r0, 0
movs r2, 0x20
bl SendBlock
@@ -33351,7 +33351,7 @@ sub_802339C: @ 802339C
mov r10, r3
_080233C0:
lsls r0, r7, 4
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
adds r2, r0, r1
ldrh r1, [r2]
movs r0, 0xFF
@@ -33960,7 +33960,7 @@ sub_802385C: @ 802385C
push {r4,r5,lr}
adds r5, r0, 0
movs r4, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrb r0, [r5, 0x9]
cmp r4, r0
bcs _08023880
@@ -42728,7 +42728,7 @@ sub_8027DD0: @ 8027DD0
sub_8027DFC: @ 8027DFC
push {lr}
adds r2, r0, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r0, [r3]
movs r1, 0xFF
lsls r1, 8
@@ -43184,7 +43184,7 @@ sub_8028164: @ 8028164
mov r9, r0
adds r2, r7, 0
adds r2, 0x14
- ldr r4, =gUnknown_03003090
+ ldr r4, =gRecvCmds
ldrh r0, [r4]
movs r1, 0xFF
lsls r1, 8
@@ -43397,7 +43397,7 @@ sub_8028318: @ 8028318
push {r4,lr}
adds r2, r0, 0
adds r4, r1, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r0, [r3]
movs r1, 0xFF
lsls r1, 8
@@ -43449,7 +43449,7 @@ sub_8028350: @ 8028350
sub_8028374: @ 8028374
push {lr}
adds r2, r0, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r0, [r3]
movs r1, 0xFF
lsls r1, 8
@@ -54921,7 +54921,7 @@ sub_802E0D0: @ 802E0D0
push {r4,lr}
sub sp, 0xC
adds r4, r1, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
lsls r2, r0, 4
adds r0, r2, r3
ldrh r1, [r0]
@@ -55048,7 +55048,7 @@ sub_802E1BC: @ 802E1BC
sub sp, 0xC
adds r5, r0, 0
adds r4, r1, 0
- ldr r2, =gUnknown_03003090
+ ldr r2, =gRecvCmds
ldrh r0, [r2]
movs r1, 0xFF
lsls r1, 8
@@ -55138,7 +55138,7 @@ sub_802E264: @ 802E264
adds r4, r0, 0
adds r5, r2, 0
adds r6, r3, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
lsls r2, r1, 4
adds r0, r2, r3
ldrh r1, [r0]
@@ -55193,7 +55193,7 @@ sub_802E2D0: @ 802E2D0
push {r4,lr}
sub sp, 0xC
adds r4, r0, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
lsls r2, r1, 4
adds r0, r2, r3
ldrh r1, [r0]
@@ -56187,7 +56187,7 @@ sub_802EAB0: @ 802EAB0
ldrb r0, [r0]
cmp r0, 0
beq _0802EB14
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldrh r0, [r1, 0x2]
ldr r5, =0x00007fff
cmp r0, r5
diff --git a/asm/trade.s b/asm/trade.s
index 61a814421..c32fd4209 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -401,7 +401,7 @@ _080774B2:
ldrb r2, [r0]
cmp r2, 0
bne _0807754C
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r5, =0x00001122
adds r0, r5, 0
strh r0, [r1]
@@ -414,12 +414,12 @@ _080774B2:
cmp r0, 0
beq _08077528
bl sub_800B488
- bl sub_8009734
+ bl OpenLink
bl sub_8011BA4
b _08077B46
.pool
_08077528:
- bl sub_8009734
+ bl OpenLink
ldr r0, =gMain
movs r7, 0x87
lsls r7, 3
@@ -510,7 +510,7 @@ _080775E8:
beq _080775F2
b _08077B46
_080775F2:
- bl sub_800A23C
+ bl IsLinkPlayerDataExchangeComplete
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2142,7 +2142,7 @@ _08078484:
.4byte _080786F0
.4byte _08078720
_080784DC:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gPlayerParty
movs r2, 0xC8
bl sub_8078438
@@ -2208,7 +2208,7 @@ _08078552:
b _080787A2
.pool
_0807857C:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gPlayerParty + 200
movs r2, 0xC8
bl sub_8078438
@@ -2247,7 +2247,7 @@ _080785B6:
b _080787A2
.pool
_080785E0:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gPlayerParty + 400
movs r2, 0xC8
bl sub_8078438
@@ -2286,7 +2286,7 @@ _0807861A:
b _080787A2
.pool
_08078644:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gSaveBlock1Ptr
ldr r1, [r1]
ldr r2, =0x00002be0
@@ -2328,7 +2328,7 @@ _0807868A:
b _080787A2
.pool
_080786B4:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gSaveBlock1Ptr
ldr r1, [r1]
ldr r2, =0x000031a8
@@ -7024,8 +7024,8 @@ _0807AC92:
lsls r0, 1
cmp r1, r0
bls _0807ACC4
- bl sub_80097E8
- ldr r0, =c2_800ACD4
+ bl CloseLink
+ ldr r0, =CB2_LinkError
bl SetMainCallback2
ldr r1, [r4]
adds r3, r1, 0
@@ -7258,11 +7258,11 @@ _0807AEAC:
ldrb r0, [r0]
cmp r0, 0
bne _0807AEC0
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001144
adds r0, r2, 0
strh r0, [r1]
- bl sub_80097E8
+ bl CloseLink
_0807AEC0:
ldr r4, =gUnknown_020322A0
movs r5, 0x80
@@ -7330,7 +7330,7 @@ _0807AF58:
adds r0, 0xFA
movs r1, 0x1
strb r1, [r0]
- bl sub_8009734
+ bl OpenLink
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
@@ -7407,7 +7407,7 @@ _0807B006:
beq _0807B014
b _0807B116
_0807B014:
- bl sub_800A23C
+ bl IsLinkPlayerDataExchangeComplete
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/common_syms/link.txt b/common_syms/link.txt
index 22e3081ee..69a66331a 100644
--- a/common_syms/link.txt
+++ b/common_syms/link.txt
@@ -1 +1 @@
-gUnknown_03003130
+gLinkTestBGInfo
diff --git a/common_syms/main.txt b/common_syms/main.txt
index 8e0b9abf5..a620083d1 100644
--- a/common_syms/main.txt
+++ b/common_syms/main.txt
@@ -1,9 +1,9 @@
gKeyRepeatStartDelay
-gUnknown_030022B4
+gLinkTransferringData
gMain
gKeyRepeatContinueDelay
gSoftResetDisabled
gIntrTable
-gUnknown_03002748
+gLinkVSyncDisabled
IntrMain_Buffer
gPcmDmaCounter
diff --git a/data/link_rfu.s b/data/link_rfu.s
index c8ae0789f..3ecfe5e42 100644
--- a/data/link_rfu.s
+++ b/data/link_rfu.s
@@ -162,15 +162,15 @@ gUnknown_082ED6A5:: @ 82ED6A5
.align 2
gUnknown_082ED6B8:: @ 82ED6B8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000c8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000c8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x00000064
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000dc
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x00000028
.align 2
diff --git a/data/specials.inc b/data/specials.inc
index 49f6b91a0..c5beece6c 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -39,7 +39,7 @@ gSpecials:: @ 81DBA64
def_special sub_80B2E4C
def_special sub_80B2E74
def_special sub_80B2EA8
- def_special sub_80097E8
+ def_special CloseLink
def_special sub_80B3968
def_special sub_80B3924
def_special nullsub_37
diff --git a/include/link.h b/include/link.h
index 09e2789f5..917331c34 100644
--- a/include/link.h
+++ b/include/link.h
@@ -59,6 +59,9 @@ enum
EXCHANGE_COMPLETE,
EXCHANGE_TIMED_OUT,
EXCHANGE_IN_PROGRESS,
+ EXCHANGE_STAT_4,
+ EXCHANGE_STAT_5,
+ EXCHANGE_STAT_6
};
enum
@@ -146,8 +149,8 @@ struct BlockRequest
extern const struct BlockRequest sBlockRequestLookupTable[5];
extern struct Link gLink;
-extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS];
-extern u8 gUnknown_020228C4[BLOCK_BUFFER_SIZE]; // gBlockSendBuffer
+extern u16 gRecvCmds[MAX_LINK_PLAYERS][CMD_LENGTH];
+extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; // gBlockSendBuffer
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
extern u16 gLinkType;
extern u32 gLinkStatus;
@@ -162,14 +165,14 @@ extern bool8 gSerialIsRFU;
void Task_DestroySelf(u8);
void OpenLink(void);
void CloseLink(void);
-u16 LinkMain2(u16 *);
+u16 LinkMain2(const u16 *);
void sub_8007B14(void);
bool32 sub_8007B24(void);
void ClearLinkCallback(void);
void ClearLinkCallback_2(void);
u8 GetLinkPlayerCount(void);
void OpenLinkTimed(void);
-u8 GetLinkPlayerDataExchangeStatusTimed(void);
+u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper);
bool8 IsLinkPlayerDataExchangeComplete(void);
u32 GetLinkPlayerTrainerId(u8);
void ResetLinkPlayers(void);
@@ -181,7 +184,6 @@ bool8 SendBlock(u8, const void *, u16);
u8 GetBlockReceivedStatus(void);
void ResetBlockReceivedFlags(void);
void ResetBlockReceivedFlag(u8);
-void SetLinkDebugValues(u32, u32);
u8 GetLinkPlayerCount_2(void);
bool8 IsLinkMaster(void);
void CB2_LinkError(void);
@@ -201,43 +203,44 @@ bool8 sub_800A520(void);
void sub_800DFB4(u8, u8);
void sub_800ADF8(void);
void sub_800B488(void);
-void sub_8009734(void);
void sub_800A620(void);
void sub_8011BD0(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
void sub_800AC34(void);
-void sub_800B628(void);
-void sub_80097E8(void);
-void sub_800A994(u32 seed, u8 flags);
+void SetLinkDebugValues(u32 seed, u32 flags);
void sub_800A418(void);
+void SetSuppressLinkErrorMessage(bool8 flag);
+void sub_800B524(struct LinkPlayer *linkPlayer);
+u8 sub_800B2E8(void);
+u8 sub_800B320(void);
+u8 sub_800B33C(void);
extern u16 gUnknown_03003020[6];
extern u32 gUnknown_0300302C;
-extern struct LinkPlayerBlock gUnknown_03003030;
-extern bool8 gUnknown_0300306C;
+extern struct LinkPlayerBlock gLocalLinkPlayerBlock;
+extern bool8 gLinkErrorOccurred;
extern u32 gUnknown_03003070;
extern bool8 gUnknown_03003078[4];
extern u8 gUnknown_0300307C[4];
-extern u16 gUnknown_03003084;
-extern u16 gUnknown_03003090[4][8];
-extern u32 gUnknown_030030E0;
+extern u16 gLinkHeldKeys;
+extern u32 gLinkStatus;
extern u8 gUnknown_030030E4;
extern u8 gUnknown_030030E8;
extern u8 gUnknown_030030EC[4];
extern u8 gUnknown_030030F0[4];
extern u16 gUnknown_030030F4;
-extern u8 gUnknown_030030F8;
+extern u8 gSuppressLinkErrorMessage;
extern bool8 gSerialIsRFU;
extern bool8 gUnknown_03003100;
-extern u16 gUnknown_03003110[8];
extern u8 gUnknown_03003120;
-extern struct LinkTestBGInfo gUnknown_03003130;
-extern void (*gUnknown_03003140)(void);
-extern bool8 gUnknown_03003144;
-extern u16 gUnknown_03003148[4];
-extern u8 gUnknown_03003150;
+extern struct LinkTestBGInfo gLinkTestBGInfo;
+extern void (*gLinkCallback)(void);
+extern bool8 gShouldAdvanceLinkState;
+extern u16 gLinkTestBlockChecksums[4];
+extern u8 gBlockRequestType;
extern u8 gUnknown_03003160;
+extern u8 gUnknown_03004130;
#endif // GUARD_LINK_H
diff --git a/include/main.h b/include/main.h
index 26a81e60a..5caa82cdf 100644
--- a/include/main.h
+++ b/include/main.h
@@ -46,12 +46,12 @@ extern const u8 gGameVersion;
extern const u8 gGameLanguage;
extern u16 gKeyRepeatStartDelay;
-extern bool8 gUnknown_030022B4;
+extern bool8 gLinkTransferringData;
extern struct Main gMain;
extern u16 gKeyRepeatContinueDelay;
extern bool8 gSoftResetDisabled;
extern IntrFunc gIntrTable[];
-extern u8 gUnknown_03002748;
+extern u8 gLinkVSyncDisabled;
extern u32 IntrMain_Buffer[];
extern u8 gPcmDmaCounter;
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index d741a8a98..ce96fff6a 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -62,7 +62,7 @@ void HandleLinkBattleSetup(void)
if (gSerialIsRFU)
sub_800B488();
if (!gReceivedRemoteLinkPlayers)
- sub_8009734();
+ OpenLink();
CreateTask(task00_08081A90, 0);
CreateTasksForSendRecvLinkBuffers();
}
diff --git a/src/link.c b/src/link.c
index bba217b4d..07598bc1f 100644
--- a/src/link.c
+++ b/src/link.c
@@ -40,16 +40,16 @@ struct LinkTestBGInfo
// Static RAM declarations
-IWRAM_DATA struct BlockTransfer gUnknown_03000D10;
+IWRAM_DATA struct BlockTransfer sBlockSend;
IWRAM_DATA u32 link_c_unused_03000d1c;
-IWRAM_DATA struct BlockTransfer gUnknown_03000D20[MAX_LINK_PLAYERS];
-IWRAM_DATA u32 gUnknown_03000D50;
+IWRAM_DATA struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS];
+IWRAM_DATA u32 sBlockSendDelayCounter;
IWRAM_DATA u32 gUnknown_03000D54;
IWRAM_DATA u8 gUnknown_03000D58;
-IWRAM_DATA u32 gUnknown_03000D5C;
+IWRAM_DATA u32 sPlayerDataExchangeStatus;
IWRAM_DATA u32 gUnknown_03000D60;
-IWRAM_DATA u8 gUnknown_03000D64;
-ALIGNED() IWRAM_DATA u8 gUnknown_03000D68[MAX_LINK_PLAYERS];
+IWRAM_DATA u8 sLinkTestLastBlockSendPos;
+ALIGNED() IWRAM_DATA u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS];
IWRAM_DATA u8 gUnknown_03000D6C;
IWRAM_DATA bool8 gUnknown_03000D6D;
IWRAM_DATA u16 gUnknown_03000D6E;
@@ -68,68 +68,68 @@ IWRAM_DATA bool32 gUnknown_03000DB0;
u16 gUnknown_03003020[6];
u32 gUnknown_0300302C;
-struct LinkPlayerBlock gUnknown_03003030;
-bool8 gUnknown_0300306C;
+struct LinkPlayerBlock gLocalLinkPlayerBlock;
+bool8 gLinkErrorOccurred;
u32 gUnknown_03003070;
bool8 gUnknown_03003078[MAX_LINK_PLAYERS];
u8 gUnknown_0300307C[MAX_LINK_PLAYERS];
-u16 gUnknown_03003084;
-u16 gUnknown_03003090[MAX_LINK_PLAYERS][8];
-u32 gUnknown_030030E0;
+u16 gLinkHeldKeys;
+u16 gRecvCmds[MAX_LINK_PLAYERS][8];
+u32 gLinkStatus;
u8 gUnknown_030030E4;
bool8 gUnknown_030030E8;
u8 gUnknown_030030EC[MAX_LINK_PLAYERS];
u8 gUnknown_030030F0[MAX_LINK_PLAYERS];
u16 gUnknown_030030F4;
-u8 gUnknown_030030F8;
+u8 gSuppressLinkErrorMessage;
bool8 gSerialIsRFU;
bool8 gUnknown_03003100;
-u16 gUnknown_03003110[8];
+u16 gSendCmd[8];
u8 gUnknown_03003120;
bool8 gReceivedRemoteLinkPlayers;
-struct LinkTestBGInfo gUnknown_03003130;
-void (*gUnknown_03003140)(void);
-bool8 gUnknown_03003144;
-u16 gUnknown_03003148[MAX_LINK_PLAYERS];
-u8 gUnknown_03003150;
+struct LinkTestBGInfo gLinkTestBGInfo;
+void (*gLinkCallback)(void);
+bool8 gShouldAdvanceLinkState;
+u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
+u8 gBlockRequestType;
u8 gUnknown_03003160;
+struct Link gLink;
+u8 gUnknown_03004130;
-EWRAM_DATA u8 gUnknown_020223BC = 0;
+EWRAM_DATA u8 gLinkTestDebugValuesEnabled = 0;
EWRAM_DATA u8 gUnknown_020223BD = 0;
EWRAM_DATA u32 gUnknown_020223C0 = 0;
EWRAM_DATA u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2] = {};
-EWRAM_DATA u8 gUnknown_020228C4[BLOCK_BUFFER_SIZE] = {};
-EWRAM_DATA bool8 gUnknown_020229C4 = FALSE;
-EWRAM_DATA u16 gUnknown_020229C6 = 0;
-EWRAM_DATA u16 gUnknown_020229C8 = 0;
-EWRAM_DATA struct LinkPlayer gUnknown_020229CC = {};
+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 gUnknown_02022A74[MAX_RFU_PLAYERS] = {};
// Static ROM declarations
-void sub_8009638(void);
+void InitLocalLinkPlayer(void);
void sub_80096BC(void);
-static void c2_08009A8C(void);
-static void sub_8009AA0(u8 unused);
+static void CB2_LinkTest(void);
+static void ProcessRecvCmds(u8 unused);
static void sub_8009F70(void);
-static void sub_800A2E0(void);
-bool32 sub_800A2F4(const void *src, size_t size);
-static void sub_800A364(void);
-static void sub_800A388(void);
-static void sub_800A3EC(void);
-void task00_link_test(u8 taskId);
-void sub_800A588(u8 who);
-u16 sub_800A648(const u16 *src, u16 size);
-void sub_800A6E8(u32 pos, u8 a0, u8 a1, u8 a2);
-void sub_800A824(void);
-void c2_800ACD4(void);
+static void ResetBlockSend(void);
+static bool32 InitBlockSend(const void *src, size_t size);
+static void LinkCB_BlockSendBegin(void);
+static void LinkCB_BlockSend(void);
+static void LinkCB_BlockSendEnd(void);
+static void SetBlockReceivedFlag(u8 who);
+static u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size);
+static void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2);
+static void LinkCB_RequestPlayerDataExchange(void);
+static void task00_link_test(u8 taskId);
void sub_800AEB4(void);
-void sub_800B330(bool8 flag);
+u8 sub_800B2F8(void);
void sub_800B4A4(void);
-void sub_800B524(struct LinkPlayer *linkPlayer);
-void sub_800B53C(void);
-void sub_800B594(void);
+void DisableSerial(void);
+void EnableSerial(void);
// .rodata
@@ -141,13 +141,13 @@ const u16 gLinkTestDigitsGfx[] = INCBIN_U16("graphics/interface/link_test_digits
const u8 unkstring_82ed160[] = _("{HIGHLIGHT TRANSPARENT}{COLOR WHITE}");
const u16 g2BlankTilesGfx[] = INCBIN_U16("graphics/interface/blank_1x2.4bpp");
const struct BlockRequest gUnknown_082ED1A8[] = {
- {gUnknown_020228C4, 200},
- {gUnknown_020228C4, 200},
- {gUnknown_020228C4, 100},
- {gUnknown_020228C4, 220},
- {gUnknown_020228C4, 40}
+ {gBlockSendBuffer, 200},
+ {gBlockSendBuffer, 200},
+ {gBlockSendBuffer, 100},
+ {gBlockSendBuffer, 220},
+ {gBlockSendBuffer, 40}
};
-const u8 gUnknown_082ED1D0[] = {
+const u8 gBGControlRegs[] = {
REG_OFFSET_BG0CNT,
REG_OFFSET_BG1CNT,
REG_OFFSET_BG2CNT,
@@ -192,50 +192,50 @@ bool8 sub_80093CC(void)
return TRUE;
}
sub_800B4A4();
- sub_80097E8();
+ CloseLink();
RestoreSerialTimer3IntrHandlers();
return FALSE;
}
-void sub_8009404(u8 taskId)
+void Task_DestroySelf(u8 taskId)
{
DestroyTask(taskId);
}
-void sub_8009414(u8 a0, u8 a1, u8 a2, u8 a3, u16 a4)
+static void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock, u16 a4)
{
- LoadPalette(gLinkTestDigitsPal, a0 * 16, 0x20);
- DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(a3) + (16 * a4), sizeof gLinkTestDigitsGfx);
- gUnknown_03003130.screenBaseBlock = a2;
- gUnknown_03003130.paletteNum = a0;
- gUnknown_03003130.dummy_8 = a4;
- switch (a1)
+ LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20);
+ DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof gLinkTestDigitsGfx);
+ gLinkTestBGInfo.screenBaseBlock = screenBaseBlock;
+ gLinkTestBGInfo.paletteNum = paletteNum;
+ gLinkTestBGInfo.dummy_8 = a4;
+ switch (bgNum)
{
case 1:
- SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_SCREENBASE(a2) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(a3));
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock));
break;
case 2:
- SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_SCREENBASE(a2) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(a3));
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock));
break;
case 3:
- SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_SCREENBASE(a2) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(a3));
+ SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_PRIORITY(1) | BGCNT_CHARBASE(charBaseBlock));
break;
}
- SetGpuReg(REG_OFFSET_BG0HOFS + a1 * 4, 0);
- SetGpuReg(REG_OFFSET_BG0VOFS + a1 * 4, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS + bgNum * 4, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS + bgNum * 4, 0);
}
-void sub_80094EC(u8 a0, u8 a1, u8 a2, u8 a3)
+void sub_80094EC(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock)
{
- LoadPalette(gLinkTestDigitsPal, a0 * 16, 0x20);
- DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(a3), sizeof gLinkTestDigitsGfx);
- gUnknown_03003130.screenBaseBlock = a2;
- gUnknown_03003130.paletteNum = a0;
- gUnknown_03003130.dummy_8 = 0;
- SetGpuReg(gUnknown_082ED1D0[a1], BGCNT_SCREENBASE(a2) | BGCNT_CHARBASE(a3));
+ LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20);
+ DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof gLinkTestDigitsGfx);
+ gLinkTestBGInfo.screenBaseBlock = screenBaseBlock;
+ gLinkTestBGInfo.paletteNum = paletteNum;
+ gLinkTestBGInfo.dummy_8 = 0;
+ SetGpuReg(gBGControlRegs[bgNum], BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock));
}
-void sub_8009570(void)
+void LinkTestScreen(void)
{
int i;
@@ -243,45 +243,45 @@ void sub_8009570(void)
FreeAllSpritePalettes();
ResetTasks();
SetVBlankCallback(sub_80096BC);
- sub_800A2E0();
- gUnknown_020229C6 = 0x1111;
- sub_8009734();
+ ResetBlockSend();
+ gLinkType = 0x1111;
+ OpenLink();
SeedRng(gMain.vblankCounter2);
for (i = 0; i < MAX_LINK_PLAYERS; i ++)
{
gSaveBlock2Ptr->playerTrainerId[i] = Random() % 256;
}
- sub_8009414(0, 2, 4, 0, 0);
+ InitLinkTestBG(0, 2, 4, 0, 0);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
- CreateTask(sub_8009404, 0);
+ CreateTask(Task_DestroySelf, 0);
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
gUnknown_03000D60 = 0;
- sub_8009638();
+ InitLocalLinkPlayer();
CreateTask(task00_link_test, 0);
- SetMainCallback2(c2_08009A8C);
+ SetMainCallback2(CB2_LinkTest);
}
void sub_8009628(u8 a0)
{
- gUnknown_020229CC.lp_field_18 = a0;
+ gLocalLinkPlayer.lp_field_18 = a0;
}
-void sub_8009638(void)
+void InitLocalLinkPlayer(void)
{
- gUnknown_020229CC.trainerId = gSaveBlock2Ptr->playerTrainerId[0] | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[3] << 24);
- StringCopy(gUnknown_020229CC.name, gSaveBlock2Ptr->playerName);
- gUnknown_020229CC.gender = gSaveBlock2Ptr->playerGender;
- gUnknown_020229CC.linkType = gUnknown_020229C6;
- gUnknown_020229CC.language = gGameLanguage;
- gUnknown_020229CC.version = gGameVersion + 0x4000;
- gUnknown_020229CC.lp_field_2 = 0x8000;
- gUnknown_020229CC.name[8] = IsNationalPokedexEnabled();
+ gLocalLinkPlayer.trainerId = gSaveBlock2Ptr->playerTrainerId[0] | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[3] << 24);
+ StringCopy(gLocalLinkPlayer.name, gSaveBlock2Ptr->playerName);
+ gLocalLinkPlayer.gender = gSaveBlock2Ptr->playerGender;
+ gLocalLinkPlayer.linkType = gLinkType;
+ gLocalLinkPlayer.language = gGameLanguage;
+ gLocalLinkPlayer.version = gGameVersion + 0x4000;
+ gLocalLinkPlayer.lp_field_2 = 0x8000;
+ gLocalLinkPlayer.name[8] = IsNationalPokedexEnabled();
if (FlagGet(SYS_UNKNOWN_87F))
{
- gUnknown_020229CC.name[8] |= 0x10;
+ gLocalLinkPlayer.name[8] |= 0x10;
}
}
@@ -292,46 +292,46 @@ void sub_80096BC(void)
TransferPlttBuffer();
}
-void sub_80096D0(void)
+void InitLink(void)
{
int i;
for (i = 0; i < 8; i ++)
{
- gUnknown_03003110[i] = 0xefff;
+ gSendCmd[i] = 0xefff;
}
- gUnknown_020229C4 = TRUE;
- sub_800B594();
+ gLinkOpen = TRUE;
+ EnableSerial();
}
-void task02_080097CC(u8 taskId)
+void Task_TriggerHandshake(u8 taskId)
{
if (++ gTasks[taskId].data[0] == 5)
{
- gUnknown_03003144 = TRUE;
+ gShouldAdvanceLinkState = TRUE;
DestroyTask(taskId);
}
}
-void sub_8009734(void)
+void OpenLink(void)
{
int i;
if (!gSerialIsRFU)
{
- sub_800B628();
- sub_80096D0();
- gUnknown_03003140 = sub_800A824;
- gUnknown_03002748 = 0;
- gUnknown_0300306C = 0;
- gUnknown_030030F8 = 0;
+ ResetSerial();
+ InitLink();
+ gLinkCallback = LinkCB_RequestPlayerDataExchange;
+ gLinkVSyncDisabled = FALSE;
+ gLinkErrorOccurred = FALSE;
+ gSuppressLinkErrorMessage = FALSE;
ResetBlockReceivedFlags();
- sub_800A2E0();
+ ResetBlockSend();
gUnknown_03000D54 = 0;
gUnknown_030030E8 = 0;
gUnknown_030030E4 = 0;
gUnknown_030030F4 = 0;
- CreateTask(task02_080097CC, 2);
+ CreateTask(Task_TriggerHandshake, 2);
}
else
{
@@ -346,33 +346,33 @@ void sub_8009734(void)
}
}
-void sub_80097E8(void)
+void CloseLink(void)
{
gReceivedRemoteLinkPlayers = FALSE;
if (gSerialIsRFU)
{
sub_800EDD4();
}
- gUnknown_020229C4 = FALSE;
- sub_800B53C();
+ gLinkOpen = FALSE;
+ DisableSerial();
}
-static void sub_8009818(u8 nothing, u8 is, u8 used)
+static void TestBlockTransfer(u8 nothing, u8 is, u8 used)
{
u8 i;
u8 status;
- if (gUnknown_03000D64 != gUnknown_03000D10.pos)
+ if (sLinkTestLastBlockSendPos != sBlockSend.pos)
{
- sub_800A6E8(gUnknown_03000D10.pos, 2, 3, 2);
- gUnknown_03000D64 = gUnknown_03000D10.pos;
+ LinkTest_prnthex(sBlockSend.pos, 2, 3, 2);
+ sLinkTestLastBlockSendPos = sBlockSend.pos;
}
for (i = 0; i < MAX_LINK_PLAYERS; i ++)
{
- if (gUnknown_03000D68[i] != gUnknown_03000D20[i].pos)
+ if (sLinkTestLastBlockRecvPos[i] != sBlockRecv[i].pos)
{
- sub_800A6E8(gUnknown_03000D20[i].pos, 2, i + 4, 2);
- gUnknown_03000D68[i] = gUnknown_03000D20[i].pos;
+ LinkTest_prnthex(sBlockRecv[i].pos, 2, i + 4, 2);
+ sLinkTestLastBlockRecvPos[i] = sBlockRecv[i].pos;
}
}
status = GetBlockReceivedStatus();
@@ -382,27 +382,27 @@ static void sub_8009818(u8 nothing, u8 is, u8 used)
{
if ((status >> i) & 1)
{
- gUnknown_03003148[i] = sub_800A648(gBlockRecvBuffer[i], gUnknown_03000D20[i].size);
+ gLinkTestBlockChecksums[i] = LinkTestCalcBlockChecksum(gBlockRecvBuffer[i], sBlockRecv[i].size);
ResetBlockReceivedFlag(i);
- if (gUnknown_03003148[i] != 0x0342)
+ if (gLinkTestBlockChecksums[i] != 0x0342)
{
- gUnknown_020223BC = 0;
- gUnknown_020223BD = 0;
+ gLinkTestDebugValuesEnabled = FALSE;
+ gUnknown_020223BD = FALSE;
}
}
}
}
}
-void sub_8009900(void)
+void LinkTestProcessKeyInput(void)
{
if (gMain.newKeys & A_BUTTON)
{
- gUnknown_03003144 = TRUE;
+ gShouldAdvanceLinkState = TRUE;
}
if (gMain.heldKeys & B_BUTTON)
{
- sub_800A2F4(gHeap + 0x4000, 0x00002004);
+ InitBlockSend(gHeap + 0x4000, 0x00002004);
}
if (gMain.newKeys & L_BUTTON)
{
@@ -410,7 +410,7 @@ void sub_8009900(void)
}
if (gMain.newKeys & START_BUTTON)
{
- sub_800B330(1);
+ SetSuppressLinkErrorMessage(TRUE);
}
if (gMain.newKeys & R_BUTTON)
{
@@ -420,48 +420,48 @@ void sub_8009900(void)
{
sub_800AC34();
}
- if (gUnknown_020223BC)
+ if (gLinkTestDebugValuesEnabled)
{
- sub_800A994(gMain.vblankCounter2, gUnknown_03003140 ? gUnknown_03002748 : gUnknown_03002748 | 0x10);
+ SetLinkDebugValues(gMain.vblankCounter2, gLinkCallback ? gLinkVSyncDisabled : gLinkVSyncDisabled | 0x10);
}
}
-static void c2_08009A8C(void)
+static void CB2_LinkTest(void)
{
- sub_8009900();
- sub_8009818(1, 1, 0);
+ LinkTestProcessKeyInput();
+ TestBlockTransfer(1, 1, 0);
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
-u16 sub_80099E0(const u16 *src)
+u16 LinkMain2(const u16 *heldKeys)
{
u8 i;
- if (!gUnknown_020229C4)
+ if (!gLinkOpen)
{
return 0;
}
for (i = 0; i < 8; i ++)
{
- gUnknown_03003110[i] = 0;
+ gSendCmd[i] = 0;
}
- gUnknown_03003084 = *src;
- if (gUnknown_030030E0 & LINK_STAT_CONN_ESTABLISHED)
+ gLinkHeldKeys = *heldKeys;
+ if (gLinkStatus & LINK_STAT_CONN_ESTABLISHED)
{
- sub_8009AA0(SIO_MULTI_CNT->id);
- if (gUnknown_03003140 != NULL)
+ ProcessRecvCmds(SIO_MULTI_CNT->id);
+ if (gLinkCallback != NULL)
{
- gUnknown_03003140();
+ gLinkCallback();
}
sub_800AEB4();
}
- return gUnknown_030030E0;
+ return gLinkStatus;
}
-void sub_8009A58(u8 who)
+void HandleReceiveRemoteLinkPlayer(u8 who)
{
int i;
int count;
@@ -478,33 +478,33 @@ void sub_8009A58(u8 who)
}
}
-static void sub_8009AA0(u8 unused)
+static void ProcessRecvCmds(u8 unused)
{
u16 i;
for (i = 0; i < MAX_LINK_PLAYERS; i ++)
{
gUnknown_03003020[i] = 0;
- if (gUnknown_03003090[i][0] == 0)
+ if (gRecvCmds[i][0] == 0)
{
continue;
}
- switch (gUnknown_03003090[i][0])
+ switch (gRecvCmds[i][0])
{
case 0x2222:
{
struct LinkPlayerBlock *block;
- sub_8009638();
- block = &gUnknown_03003030;
- block->linkPlayer = gUnknown_020229CC;
+ InitLocalLinkPlayer();
+ block = &gLocalLinkPlayerBlock;
+ block->linkPlayer = gLocalLinkPlayer;
memcpy(block->magic1, gASCIIGameFreakInc, sizeof(block->magic1) - 1);
memcpy(block->magic2, gASCIIGameFreakInc, sizeof(block->magic2) - 1);
- sub_800A2F4(block, sizeof(*block));
+ InitBlockSend(block, sizeof(*block));
break;
}
case 0x4444:
- gUnknown_03003020[i] = gUnknown_03003090[i][1];
+ gUnknown_03003020[i] = gRecvCmds[i][1];
break;
case 0x5555:
gUnknown_030030E8 = 1;
@@ -516,15 +516,15 @@ static void sub_8009AA0(u8 unused)
{
struct BlockTransfer *blockRecv;
- blockRecv = &gUnknown_03000D20[i];
+ blockRecv = &sBlockRecv[i];
blockRecv->pos = 0;
- blockRecv->size = gUnknown_03003090[i][1];
- blockRecv->multiplayerId = gUnknown_03003090[i][2];
+ blockRecv->size = gRecvCmds[i][1];
+ blockRecv->multiplayerId = gRecvCmds[i][2];
break;
}
case 0x8888:
{
- if (gUnknown_03000D20[i].size > BLOCK_BUFFER_SIZE)
+ if (sBlockRecv[i].size > BLOCK_BUFFER_SIZE)
{
u16 *buffer;
u16 j;
@@ -532,7 +532,7 @@ static void sub_8009AA0(u8 unused)
buffer = (u16 *)gDecompressionBuffer;
for (j = 0; j < CMD_LENGTH - 1; j ++)
{
- buffer[(gUnknown_03000D20[i].pos / 2) + j] = gUnknown_03003090[i][j + 1];
+ buffer[(sBlockRecv[i].pos / 2) + j] = gRecvCmds[i][j + 1];
}
}
else
@@ -541,13 +541,13 @@ static void sub_8009AA0(u8 unused)
for (j = 0; j < CMD_LENGTH - 1; j ++)
{
- gBlockRecvBuffer[i][(gUnknown_03000D20[i].pos / 2) + j] = gUnknown_03003090[i][j + 1];
+ gBlockRecvBuffer[i][(sBlockRecv[i].pos / 2) + j] = gRecvCmds[i][j + 1];
}
}
- gUnknown_03000D20[i].pos += (CMD_LENGTH - 1) * 2;
+ sBlockRecv[i].pos += (CMD_LENGTH - 1) * 2;
- if (gUnknown_03000D20[i].pos >= gUnknown_03000D20[i].size)
+ if (sBlockRecv[i].pos >= sBlockRecv[i].size)
{
if (gUnknown_03003078[i] == TRUE)
{
@@ -567,16 +567,16 @@ static void sub_8009AA0(u8 unused)
if (strcmp(block->magic1, gASCIIGameFreakInc) != 0
|| strcmp(block->magic2, gASCIIGameFreakInc) != 0)
{
- SetMainCallback2(c2_800ACD4);
+ SetMainCallback2(CB2_LinkError);
}
else
{
- sub_8009A58(i);
+ HandleReceiveRemoteLinkPlayer(i);
}
}
else
{
- sub_800A588(i);
+ SetBlockReceivedFlag(i);
}
}
}
@@ -591,78 +591,78 @@ static void sub_8009AA0(u8 unused)
sub_800A418();
break;
case 0xCCCC:
- SendBlock(0, gUnknown_082ED1A8[gUnknown_03003090[i][1]].address, gUnknown_082ED1A8[gUnknown_03003090[i][1]].size);
+ SendBlock(0, gUnknown_082ED1A8[gRecvCmds[i][1]].address, gUnknown_082ED1A8[gRecvCmds[i][1]].size);
break;
case 0xCAFE:
- gUnknown_03003020[i] = gUnknown_03003090[i][1];
+ gUnknown_03003020[i] = gRecvCmds[i][1];
break;
}
}
}
-void sub_8009D90(u16 command)
+void BuildSendCmd(u16 command)
{
switch (command)
{
case 0x2222:
- gUnknown_03003110[0] = 0x2222;
- gUnknown_03003110[1] = gUnknown_020229C6;
+ gSendCmd[0] = 0x2222;
+ gSendCmd[1] = gLinkType;
break;
case 0x2ffe:
- gUnknown_03003110[0] = 0x2ffe;
+ gSendCmd[0] = 0x2ffe;
break;
case 0x4444:
- gUnknown_03003110[0] = 0x4444;
- gUnknown_03003110[1] = gMain.heldKeys;
+ gSendCmd[0] = 0x4444;
+ gSendCmd[1] = gMain.heldKeys;
break;
case 0x5555:
- gUnknown_03003110[0] = 0x5555;
+ gSendCmd[0] = 0x5555;
break;
case 0x6666:
- gUnknown_03003110[0] = 0x6666;
- gUnknown_03003110[1] = 0;
+ gSendCmd[0] = 0x6666;
+ gSendCmd[1] = 0;
break;
case 0x7777:
{
u8 i;
- gUnknown_03003110[0] = 0x7777;
- for (i = 0; i < MAX_RFU_PLAYERS; i ++)
+ gSendCmd[0] = 0x7777;
+ for (i = 0; i < 5; i ++)
{
- gUnknown_03003110[i + 1] = 0xEE;
+ gSendCmd[i + 1] = 0xEE;
}
break;
}
case 0xbbbb:
- gUnknown_03003110[0] = 0xbbbb;
- gUnknown_03003110[1] = gUnknown_03000D10.size;
- gUnknown_03003110[2] = gUnknown_03000D10.multiplayerId + 0x80;
+ gSendCmd[0] = 0xbbbb;
+ gSendCmd[1] = sBlockSend.size;
+ gSendCmd[2] = sBlockSend.multiplayerId + 0x80;
break;
case 0xaaaa:
- gUnknown_03003110[0] = 0xaaaa;
+ gSendCmd[0] = 0xaaaa;
break;
case 0xaaab:
- gUnknown_03003110[0] = 0xaaab;
- gUnknown_03003110[1] = gScriptItemId;
+ gSendCmd[0] = 0xaaab;
+ gSendCmd[1] = gScriptItemId;
break;
case 0xcccc:
- gUnknown_03003110[0] = 0xcccc;
- gUnknown_03003110[1] = gUnknown_03003150;
+ gSendCmd[0] = 0xcccc;
+ gSendCmd[1] = gBlockRequestType;
break;
case 0x5fff:
- gUnknown_03003110[0] = 0x5fff;
- gUnknown_03003110[1] = gUnknown_030030F4;
+ gSendCmd[0] = 0x5fff;
+ gSendCmd[1] = gUnknown_030030F4;
break;
case 0x5566:
- gUnknown_03003110[0] = 0x5566;
+ gSendCmd[0] = 0x5566;
break;
case 0xcafe:
- if (gUnknown_03005DA8 == 0 || gUnknown_030022B4)
+ if (gUnknown_03005DA8 == 0 || gLinkTransferringData)
{
break;
}
- gUnknown_03003110[0] = 0xcafe;
- gUnknown_03003110[1] = gUnknown_03005DA8;
+ gSendCmd[0] = 0xcafe;
+ gSendCmd[1] = gUnknown_03005DA8;
break;
}
}
@@ -673,7 +673,7 @@ void sub_8009F18(void)
{
sub_800F804();
}
- gUnknown_03003140 = sub_8009F70;
+ gLinkCallback = sub_8009F70;
}
bool32 sub_8009F3C(void)
@@ -682,7 +682,7 @@ bool32 sub_8009F3C(void)
{
return sub_800F7E4();
}
- if (gUnknown_03003140 == sub_8009F70)
+ if (gLinkCallback == sub_8009F70)
{
return TRUE;
}
@@ -693,11 +693,11 @@ static void sub_8009F70(void)
{
if (gReceivedRemoteLinkPlayers == TRUE)
{
- sub_8009D90(0xcafe);
+ BuildSendCmd(0xcafe);
}
}
-void sub_8009F8C(void)
+void ClearLinkCallback(void)
{
if (gSerialIsRFU)
{
@@ -705,11 +705,11 @@ void sub_8009F8C(void)
}
else
{
- gUnknown_03003140 = NULL;
+ gLinkCallback = NULL;
}
}
-void sub_8009FAC(void)
+void ClearLinkCallback_2(void)
{
if (gSerialIsRFU)
{
@@ -717,7 +717,7 @@ void sub_8009FAC(void)
}
else
{
- gUnknown_03003140 = NULL;
+ gLinkCallback = NULL;
}
}
@@ -727,7 +727,7 @@ u8 GetLinkPlayerCount(void)
{
return sub_80104F4();
}
- return EXTRACT_PLAYER_COUNT(gUnknown_030030E0);
+ return EXTRACT_PLAYER_COUNT(gLinkStatus);
}
int sub_8009FF8(u32 version1, u32 version2)
@@ -781,14 +781,14 @@ bool32 sub_800A07C(void)
return FALSE;
}
-void sub_800A0AC(void)
+void OpenLinkTimed(void)
{
- gUnknown_03000D5C = 0;
- gUnknown_020229C8 = 0;
- sub_8009734();
+ sPlayerDataExchangeStatus = EXCHANGE_NOT_STARTED;
+ gLinkTimeOutCounter = 0;
+ OpenLink();
}
-u8 sub_800A0C8(int lower, int upper)
+u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper)
{
int i;
int count;
@@ -803,15 +803,15 @@ u8 sub_800A0C8(int lower, int upper)
cmpVal = sub_800ABAC();
if (lower > cmpVal || cmpVal > upper)
{
- gUnknown_03000D5C = 6;
+ sPlayerDataExchangeStatus = EXCHANGE_STAT_6;
return 6;
}
else
{
if (GetLinkPlayerCount() == 0)
{
- gUnknown_0300306C = TRUE;
- sub_80097E8();
+ gLinkErrorOccurred = TRUE;
+ CloseLink();
}
for (i = 0, index = 0; i < GetLinkPlayerCount(); index ++, i ++)
{
@@ -827,24 +827,24 @@ u8 sub_800A0C8(int lower, int upper)
switch (sub_807A728())
{
case 1:
- gUnknown_03000D5C = 4;
+ sPlayerDataExchangeStatus = EXCHANGE_STAT_4;
break;
case 2:
- gUnknown_03000D5C = 5;
+ sPlayerDataExchangeStatus = EXCHANGE_STAT_5;
break;
case 0:
- gUnknown_03000D5C = 1;
+ sPlayerDataExchangeStatus = EXCHANGE_COMPLETE;
break;
}
}
else
{
- gUnknown_03000D5C = 1;
+ sPlayerDataExchangeStatus = EXCHANGE_COMPLETE;
}
}
else
{
- gUnknown_03000D5C = 3;
+ sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS;
linkType1 = gLinkPlayers[GetMultiplayerId()].linkType;
linkType2 = gLinkPlayers[GetMultiplayerId() ^ 1].linkType;
if ((linkType1 == 0x2266 && linkType2 == 0x2277) || (linkType1 == 0x2277 && linkType2 == 0x2266))
@@ -854,14 +854,14 @@ u8 sub_800A0C8(int lower, int upper)
}
}
}
- else if (++ gUnknown_020229C8 > 600)
+ else if (++ gLinkTimeOutCounter > 600)
{
- gUnknown_03000D5C = 2;
+ sPlayerDataExchangeStatus = EXCHANGE_TIMED_OUT;
}
- return gUnknown_03000D5C;
+ return sPlayerDataExchangeStatus;
}
-bool8 sub_800A23C(void)
+bool8 IsLinkPlayerDataExchangeComplete(void)
{
u8 i;
u8 count;
@@ -878,12 +878,12 @@ bool8 sub_800A23C(void)
if (count == GetLinkPlayerCount())
{
retval = TRUE;
- gUnknown_03000D5C = 1;
+ sPlayerDataExchangeStatus = EXCHANGE_COMPLETE;
}
else
{
retval = FALSE;
- gUnknown_03000D5C = 3;
+ sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS;
}
return retval;
}
@@ -893,7 +893,7 @@ u32 GetLinkPlayerTrainerId(u8 who)
return gLinkPlayers[who].trainerId;
}
-void sub_800A2BC(void)
+void ResetLinkPlayers(void)
{
int i;
@@ -903,78 +903,78 @@ void sub_800A2BC(void)
}
}
-static void sub_800A2E0(void)
+static void ResetBlockSend(void)
{
- gUnknown_03000D10.active = FALSE;
- gUnknown_03000D10.pos = 0;
- gUnknown_03000D10.size = 0;
- gUnknown_03000D10.src = NULL;
+ sBlockSend.active = FALSE;
+ sBlockSend.pos = 0;
+ sBlockSend.size = 0;
+ sBlockSend.src = NULL;
}
-bool32 sub_800A2F4(const void *src, size_t size)
+static bool32 InitBlockSend(const void *src, size_t size)
{
- if (gUnknown_03000D10.active)
+ if (sBlockSend.active)
{
return FALSE;
}
- gUnknown_03000D10.multiplayerId = GetMultiplayerId();
- gUnknown_03000D10.active = TRUE;
- gUnknown_03000D10.size = size;
- gUnknown_03000D10.pos = 0;
+ sBlockSend.multiplayerId = GetMultiplayerId();
+ sBlockSend.active = TRUE;
+ sBlockSend.size = size;
+ sBlockSend.pos = 0;
if (size > 0x100)
{
- gUnknown_03000D10.src = src;
+ sBlockSend.src = src;
}
else
{
- if (src != gUnknown_020228C4)
+ if (src != gBlockSendBuffer)
{
- memcpy(gUnknown_020228C4, src, size);
+ memcpy(gBlockSendBuffer, src, size);
}
- gUnknown_03000D10.src = gUnknown_020228C4;
+ sBlockSend.src = gBlockSendBuffer;
}
- sub_8009D90(0xbbbb);
- gUnknown_03003140 = sub_800A364;
- gUnknown_03000D50 = 0;
+ BuildSendCmd(0xbbbb);
+ gLinkCallback = LinkCB_BlockSendBegin;
+ sBlockSendDelayCounter = 0;
return TRUE;
}
-static void sub_800A364(void)
+static void LinkCB_BlockSendBegin(void)
{
- if (++ gUnknown_03000D50 > 2)
+ if (++ sBlockSendDelayCounter > 2)
{
- gUnknown_03003140 = sub_800A388;
+ gLinkCallback = LinkCB_BlockSend;
}
}
-static void sub_800A388(void)
+static void LinkCB_BlockSend(void)
{
int i;
const u8 *src;
- src = gUnknown_03000D10.src;
- gUnknown_03003110[0] = 0x8888;
+ src = sBlockSend.src;
+ gSendCmd[0] = 0x8888;
for (i = 0; i < 7; i ++)
{
- gUnknown_03003110[i + 1] = (src[gUnknown_03000D10.pos + i * 2 + 1] << 8) | src[gUnknown_03000D10.pos + i * 2];
+ gSendCmd[i + 1] = (src[sBlockSend.pos + i * 2 + 1] << 8) | src[sBlockSend.pos + i * 2];
}
- gUnknown_03000D10.pos += 14;
- if (gUnknown_03000D10.size <= gUnknown_03000D10.pos)
+ sBlockSend.pos += 14;
+ if (sBlockSend.size <= sBlockSend.pos)
{
- gUnknown_03000D10.active = FALSE;
- gUnknown_03003140 = sub_800A3EC;
+ sBlockSend.active = FALSE;
+ gLinkCallback = LinkCB_BlockSendEnd;
}
}
-static void sub_800A3EC(void)
+static void LinkCB_BlockSendEnd(void)
{
- gUnknown_03003140 = NULL;
+ gLinkCallback = NULL;
}
-void sub_800A3F8(void)
+static void sub_800A3F8(void)
{
GetMultiplayerId();
- sub_8009D90(0x4444);
+ BuildSendCmd(0x4444);
gUnknown_020223C0 ++;
}
@@ -987,7 +987,7 @@ void sub_800A418(void)
}
else
{
- gUnknown_03003140 = sub_800A3F8;
+ gLinkCallback = sub_800A3F8;
}
}
@@ -998,7 +998,7 @@ u32 sub_800A44C(void)
void sub_800A458(void)
{
- sub_8009D90(0xaaaa);
+ BuildSendCmd(0xaaaa);
}
u8 GetMultiplayerId(void)
@@ -1024,7 +1024,7 @@ bool8 SendBlock(u8 unused, const void *src, u16 size)
{
return sub_800FE84(src, size);
}
- return sub_800A2F4(src, size);
+ return InitBlockSend(src, size);
}
bool8 sub_800A4D8(u8 a0)
@@ -1033,10 +1033,10 @@ bool8 sub_800A4D8(u8 a0)
{
return sub_8010100(a0);
}
- if (gUnknown_03003140 == NULL)
+ if (gLinkCallback == NULL)
{
- gUnknown_03003150 = a0;
- sub_8009D90(0xcccc);
+ gBlockRequestType = a0;
+ BuildSendCmd(0xcccc);
return TRUE;
}
return FALSE;
@@ -1048,7 +1048,7 @@ bool8 sub_800A520(void)
{
return sub_8010500();
}
- return gUnknown_03003140 == NULL;
+ return gLinkCallback == NULL;
}
u8 GetBlockReceivedStatus(void)
@@ -1060,7 +1060,7 @@ u8 GetBlockReceivedStatus(void)
return (gUnknown_0300307C[3] << 3) | (gUnknown_0300307C[2] << 2) | (gUnknown_0300307C[1] << 1) | (gUnknown_0300307C[0] << 0);
}
-void sub_800A588(u8 who)
+static void SetBlockReceivedFlag(u8 who)
{
if (gSerialIsRFU == TRUE)
{
@@ -1106,13 +1106,13 @@ void ResetBlockReceivedFlag(u8 who)
void sub_800A620(void)
{
- if ((gUnknown_030030E0 & LINK_STAT_MASTER) && EXTRACT_PLAYER_COUNT(gUnknown_030030E0) > 1)
+ if ((gLinkStatus & LINK_STAT_MASTER) && EXTRACT_PLAYER_COUNT(gLinkStatus) > 1)
{
- gUnknown_03003144 = TRUE;
+ gShouldAdvanceLinkState = TRUE;
}
}
-u16 sub_800A648(const u16 *data, u16 size)
+static u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size)
{
u16 chksum;
u16 i;
@@ -1120,45 +1120,45 @@ u16 sub_800A648(const u16 *data, u16 size)
chksum = 0;
for (i = 0; i < size / 2; i ++)
{
- chksum += data[i];
+ chksum += src[i];
}
return chksum;
}
-void sub_800A678(char a0, u8 a1, u8 a2)
+static void LinkTest_prnthexchar(char a0, u8 a1, u8 a2)
{
u16 *vAddr;
- vAddr = (u16 *)BG_SCREEN_ADDR(gUnknown_03003130.screenBaseBlock);
- vAddr[a2 * 32 + a1] = (gUnknown_03003130.paletteNum << 12) | (a0 + 1 + gUnknown_03003130.dummy_8);
+ vAddr = (u16 *)BG_SCREEN_ADDR(gLinkTestBGInfo.screenBaseBlock);
+ vAddr[a2 * 32 + a1] = (gLinkTestBGInfo.paletteNum << 12) | (a0 + 1 + gLinkTestBGInfo.dummy_8);
}
-void sub_800A6B0(char a0, u8 a1, u8 a2)
+static void LinkTest_prntchar(char a0, u8 a1, u8 a2)
{
u16 *vAddr;
- vAddr = (u16 *)BG_SCREEN_ADDR(gUnknown_03003130.screenBaseBlock);
- vAddr[a2 * 32 + a1] = (gUnknown_03003130.paletteNum << 12) | (a0 + gUnknown_03003130.dummy_8);
+ vAddr = (u16 *)BG_SCREEN_ADDR(gLinkTestBGInfo.screenBaseBlock);
+ vAddr[a2 * 32 + a1] = (gLinkTestBGInfo.paletteNum << 12) | (a0 + gLinkTestBGInfo.dummy_8);
}
-void sub_800A6E8(u32 a0, u8 a1, u8 a2, u8 a3)
+static void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2)
{
char sp[32 / 2];
int i;
- for (i = 0; i < a3; i ++)
+ for (i = 0; i < a2; i ++)
{
- sp[i] = a0 & 0xf;
- a0 >>= 4;
+ sp[i] = pos & 0xf;
+ pos >>= 4;
}
- for (i = a3 - 1; i >= 0; i --)
+ for (i = a2 - 1; i >= 0; i --)
{
- sub_800A678(sp[i], a1, a2);
- a1 ++;
+ LinkTest_prnthexchar(sp[i], a0, a1);
+ a0 ++;
}
}
-void sub_800A73C(int a0, u8 a1, u8 a2, u8 a3)
+static void LinkTest_prntint(int a0, u8 a1, u8 a2, u8 a3)
{
char sp[32 / 2];
int sp10;
@@ -1177,16 +1177,16 @@ void sub_800A73C(int a0, u8 a1, u8 a2, u8 a3)
}
for (i = a3 - 1; i >= 0; i --)
{
- sub_800A678(sp[i], a1, a2);
+ LinkTest_prnthexchar(sp[i], a1, a2);
a1 ++;
}
if (sp10 != -1)
{
- sub_800A678(*"\n", sp10, a2);
+ LinkTest_prnthexchar(*"\n", sp10, a2);
}
}
-void sub_800A7DC(const char *a0, u8 a1, u8 a2)
+static void LinkTest_prntstr(const char *a0, u8 a1, u8 a2)
{
int r6;
int i;
@@ -1203,8 +1203,44 @@ void sub_800A7DC(const char *a0, u8 a1, u8 a2)
}
else
{
- sub_800A6B0(a0[i], a1 + r6, a2 + r5);
+ LinkTest_prntchar(a0[i], a1 + r6, a2 + r5);
r6 ++;
}
}
}
+
+static void LinkCB_RequestPlayerDataExchange(void)
+{
+ if (gLinkStatus & LINK_STAT_MASTER)
+ {
+ BuildSendCmd(0x2222);
+ }
+ gLinkCallback = NULL;
+}
+
+static void task00_link_test(u8 taskId)
+{
+ char sp[32];
+ int i;
+
+ strcpy(sp, gASCIITestPrint);
+ LinkTest_prntstr(sp, 5, 2);
+ LinkTest_prnthex(gShouldAdvanceLinkState, 2, 1, 2);
+ LinkTest_prnthex(gLinkStatus, 15, 1, 8);
+ LinkTest_prnthex(gLink.state, 2, 10, 2);
+ LinkTest_prnthex(EXTRACT_PLAYER_COUNT(gLinkStatus), 15, 10, 2);
+ LinkTest_prnthex(GetMultiplayerId(), 15, 12, 2);
+ LinkTest_prnthex(gUnknown_03003160, 25, 1, 2);
+ LinkTest_prnthex(gUnknown_03004130, 25, 2, 2);
+ LinkTest_prnthex(GetBlockReceivedStatus(), 15, 5, 2);
+ LinkTest_prnthex(gUnknown_0300302C, 2, 12, 8);
+ LinkTest_prnthex(gUnknown_03003070, 2, 13, 8);
+ LinkTest_prnthex(sub_800B2E8(), 25, 5, 1);
+ LinkTest_prnthex(sub_800B2F8(), 25, 6, 1);
+ LinkTest_prnthex(sub_800B320(), 25, 7, 1);
+ LinkTest_prnthex(sub_800B33C(), 25, 8, 1);
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ LinkTest_prnthex(gLinkTestBlockChecksums[i], 10, 4 + i, 4);
+ }
+}
diff --git a/src/main.c b/src/main.c
index 61f6f60a4..a67bed035 100644
--- a/src/main.c
+++ b/src/main.c
@@ -80,12 +80,12 @@ const IntrFunc gIntrTableTemplate[] =
static u16 gUnknown_03000000;
u16 gKeyRepeatStartDelay;
-bool8 gUnknown_030022B4;
+bool8 gLinkTransferringData;
struct Main gMain;
u16 gKeyRepeatContinueDelay;
bool8 gSoftResetDisabled;
IntrFunc gIntrTable[INTR_COUNT];
-u8 gUnknown_03002748;
+u8 gLinkVSyncDisabled;
u32 IntrMain_Buffer[0x200];
u8 gPcmDmaCounter;
@@ -129,7 +129,7 @@ void AgbMain()
if (gFlashMemoryPresent != TRUE)
SetMainCallback2(NULL);
- gUnknown_030022B4 = FALSE;
+ gLinkTransferringData = FALSE;
gUnknown_03000000 = 0xFC0;
for (;;)
@@ -147,22 +147,22 @@ void AgbMain()
if (sub_8087634() == 1)
{
- gUnknown_030022B4 = TRUE;
+ gLinkTransferringData = TRUE;
UpdateLinkAndCallCallbacks();
- gUnknown_030022B4 = FALSE;
+ gLinkTransferringData = FALSE;
}
else
{
- gUnknown_030022B4 = FALSE;
+ gLinkTransferringData = FALSE;
UpdateLinkAndCallCallbacks();
if (sub_80875C8() == 1)
{
gMain.newKeys = 0;
ClearSpriteCopyRequests();
- gUnknown_030022B4 = TRUE;
+ gLinkTransferringData = TRUE;
UpdateLinkAndCallCallbacks();
- gUnknown_030022B4 = FALSE;
+ gLinkTransferringData = FALSE;
}
}
@@ -338,7 +338,7 @@ static void VBlankIntr(void)
{
if (gSerialIsRFU != FALSE)
LinkVSync();
- else if (gUnknown_03002748 == FALSE)
+ else if (gLinkVSyncDisabled == FALSE)
sub_800B9B8();
gMain.vblankCounter1++;
diff --git a/sym_common.txt b/sym_common.txt
index e228ed613..13eb9e604 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -18,10 +18,10 @@ gUnknown_03003020: @ 3003020
gUnknown_0300302C: @ 300302C
.space 0x4
-gUnknown_03003030: @ 3003030
+gLocalLinkPlayerBlock: @ 3003030
.space 0x3C
-gUnknown_0300306C: @ 300306C
+gLinkErrorOccurred: @ 300306C
.space 0x4
gUnknown_03003070: @ 3003070
@@ -33,13 +33,13 @@ gUnknown_03003078: @ 3003078
gUnknown_0300307C: @ 300307C
.space 0x8
-gUnknown_03003084: @ 3003084
+gLinkHeldKeys: @ 3003084
.space 0xC
-gUnknown_03003090: @ 3003090
+gRecvCmds: @ 3003090
.space 0x50
-gUnknown_030030E0: @ 30030E0
+gLinkStatus: @ 30030E0
.space 0x4
gUnknown_030030E4: @ 30030E4
@@ -57,7 +57,7 @@ gUnknown_030030F0: @ 30030F0
gUnknown_030030F4: @ 30030F4
.space 0x4
-gUnknown_030030F8: @ 30030F8
+gSuppressLinkErrorMessage: @ 30030F8
.space 0x4
gSerialIsRFU: @ 30030FC
@@ -66,7 +66,7 @@ gSerialIsRFU: @ 30030FC
gUnknown_03003100: @ 3003100
.space 0x10
-gUnknown_03003110: @ 3003110
+gSendCmd: @ 3003110
.space 0x10
gUnknown_03003120: @ 3003120
@@ -75,25 +75,25 @@ gUnknown_03003120: @ 3003120
gReceivedRemoteLinkPlayers: @ 3003124
.space 0xC
-gUnknown_03003130: @ 3003130
+gLinkTestBGInfo: @ 3003130
.space 0x10
-gUnknown_03003140: @ 3003140
+gLinkCallback: @ 3003140
.space 0x4
-gUnknown_03003144: @ 3003144
+gShouldAdvanceLinkState: @ 3003144
.space 0x4
-gUnknown_03003148: @ 3003148
+gLinkTestBlockChecksums: @ 3003148
.space 0x8
-gUnknown_03003150: @ 3003150
+gBlockRequestType: @ 3003150
.space 0x10
gUnknown_03003160: @ 3003160
.space 0x10
-gUnknown_03003170: @ 3003170
+gLink: @ 3003170
.space 0xFC0
gUnknown_03004130: @ 3004130