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