.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_8009480 sub_8009480: @ 8009480 push {lr} ldr r0, _08009494 @ =gUnknown_203ADFA ldrb r0, [r0] subs r0, 0x2 lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bhi _08009498 movs r0, 0 b _080094CE .align 2, 0 _08009494: .4byte gUnknown_203ADFA _08009498: bl sub_800B1F4 bl sub_80F86F4 movs r0, 0x1 bl sub_80FB128 bl sub_80FD3A4 ldr r1, _080094C0 @ =0x00008001 cmp r0, r1 beq _080094C4 bl sub_800B210 bl CloseLink bl RestoreSerialTimer3IntrHandlers movs r0, 0 b _080094CE .align 2, 0 _080094C0: .4byte 0x00008001 _080094C4: bl rfu_REQ_stopMode bl rfu_waitREQComplete movs r0, 0x1 _080094CE: pop {r1} bx r1 thumb_func_end sub_8009480 thumb_func_start sub_80094D4 sub_80094D4: @ 80094D4 push {lr} lsls r0, 24 lsrs r0, 24 bl DestroyTask pop {r0} bx r0 thumb_func_end sub_80094D4 thumb_func_start sub_80094E4 sub_80094E4: @ 80094E4 push {r4-r7,lr} mov r7, r8 push {r7} adds r5, r0, 0 ldr r4, [sp, 0x18] lsls r5, 24 lsrs r5, 24 lsls r1, 24 lsrs r1, 24 mov r8, r1 lsls r2, 24 lsrs r6, r2, 24 lsls r3, 24 lsrs r7, r3, 24 lsls r4, 16 lsrs r4, 16 ldr r0, _08009540 @ =gUnknown_8232578 lsls r1, r5, 4 movs r2, 0x20 bl LoadPalette ldr r3, _08009544 @ =0x040000d4 ldr r0, _08009548 @ =gUnknown_8232598 str r0, [r3] lsls r2, r7, 14 lsls r0, r4, 5 movs r1, 0xC0 lsls r1, 19 adds r0, r1 adds r2, r0 str r2, [r3, 0x4] ldr r0, _0800954C @ =0x80001000 str r0, [r3, 0x8] ldr r0, [r3, 0x8] ldr r0, _08009550 @ =gUnknown_3003F70 str r6, [r0] str r5, [r0, 0x4] str r4, [r0, 0x8] mov r0, r8 cmp r0, 0x2 beq _0800956E cmp r0, 0x2 bgt _08009554 cmp r0, 0x1 beq _0800955C b _08009590 .align 2, 0 _08009540: .4byte gUnknown_8232578 _08009544: .4byte 0x040000d4 _08009548: .4byte gUnknown_8232598 _0800954C: .4byte 0x80001000 _08009550: .4byte gUnknown_3003F70 _08009554: mov r0, r8 cmp r0, 0x3 beq _08009580 b _08009590 _0800955C: lsls r1, r6, 8 movs r0, 0x1 orrs r1, r0 lsls r0, r7, 2 orrs r1, r0 movs r0, 0xA bl SetGpuReg b _08009590 _0800956E: lsls r1, r6, 8 movs r0, 0x1 orrs r1, r0 lsls r0, r7, 2 orrs r1, r0 movs r0, 0xC bl SetGpuReg b _08009590 _08009580: lsls r1, r6, 8 movs r0, 0x1 orrs r1, r0 lsls r0, r7, 2 orrs r1, r0 movs r0, 0xE bl SetGpuReg _08009590: mov r0, r8 lsls r4, r0, 2 adds r0, r4, 0 adds r0, 0x10 lsls r0, 24 lsrs r0, 24 movs r1, 0 bl SetGpuReg adds r4, 0x12 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 movs r1, 0 bl SetGpuReg pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_80094E4 thumb_func_start sub_80095BC sub_80095BC: @ 80095BC push {r4-r6,lr} mov r6, r8 push {r6} mov r8, r0 adds r6, r1, 0 adds r4, r2, 0 adds r5, r3, 0 lsls r0, 24 lsrs r0, 24 mov r8, r0 lsls r6, 24 lsrs r6, 24 lsls r4, 24 lsrs r4, 24 lsls r5, 24 lsrs r5, 24 ldr r0, _08009628 @ =gUnknown_8232578 mov r2, r8 lsls r1, r2, 4 movs r2, 0x20 bl LoadPalette ldr r2, _0800962C @ =0x040000d4 ldr r0, _08009630 @ =gUnknown_8232598 str r0, [r2] lsls r0, r5, 14 movs r1, 0xC0 lsls r1, 19 adds r0, r1 str r0, [r2, 0x4] ldr r0, _08009634 @ =0x80001000 str r0, [r2, 0x8] ldr r0, [r2, 0x8] ldr r0, _08009638 @ =gUnknown_3003F70 str r4, [r0] mov r1, r8 str r1, [r0, 0x4] movs r1, 0 str r1, [r0, 0x8] ldr r0, _0800963C @ =gBGControlRegOffsets adds r6, r0 ldrb r0, [r6] lsls r4, 8 lsls r5, 2 orrs r4, r5 adds r1, r4, 0 bl SetGpuReg pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08009628: .4byte gUnknown_8232578 _0800962C: .4byte 0x040000d4 _08009630: .4byte gUnknown_8232598 _08009634: .4byte 0x80001000 _08009638: .4byte gUnknown_3003F70 _0800963C: .4byte gBGControlRegOffsets thumb_func_end sub_80095BC thumb_func_start sub_8009640 sub_8009640: @ 8009640 push {r4,lr} sub sp, 0x4 bl ResetSpriteData bl FreeAllSpritePalettes bl ResetTasks ldr r0, _080096D4 @ =sub_800978C bl SetVBlankCallback bl ResetBlockSend ldr r1, _080096D8 @ =gLinkType ldr r2, _080096DC @ =0x00001111 adds r0, r2, 0 strh r0, [r1] bl sub_8009804 ldr r0, _080096E0 @ =gMain ldrh r0, [r0, 0x24] bl SeedRng movs r4, 0 _08009670: bl Random ldr r1, _080096E4 @ =gSaveBlock2Ptr ldr r1, [r1] adds r1, 0xA adds r1, r4 strb r0, [r1] adds r4, 0x1 cmp r4, 0x3 ble _08009670 movs r4, 0 str r4, [sp] movs r0, 0 movs r1, 0x2 movs r2, 0x4 movs r3, 0 bl sub_80094E4 movs r1, 0xAA lsls r1, 5 movs r0, 0 bl SetGpuReg ldr r0, _080096E8 @ =sub_80094D4 movs r1, 0 bl CreateTask bl RunTasks bl AnimateSprites bl BuildOamBuffer bl UpdatePaletteFade ldr r0, _080096EC @ =gUnknown_3000E58 str r4, [r0] bl sub_8009708 ldr r0, _080096F0 @ =task00_link_test movs r1, 0 bl CreateTask ldr r0, _080096F4 @ =c2_08009A8C bl SetMainCallback2 add sp, 0x4 pop {r4} pop {r0} bx r0 .align 2, 0 _080096D4: .4byte sub_800978C _080096D8: .4byte gLinkType _080096DC: .4byte 0x00001111 _080096E0: .4byte gMain _080096E4: .4byte gSaveBlock2Ptr _080096E8: .4byte sub_80094D4 _080096EC: .4byte gUnknown_3000E58 _080096F0: .4byte task00_link_test _080096F4: .4byte c2_08009A8C thumb_func_end sub_8009640 thumb_func_start sub_80096F8 sub_80096F8: @ 80096F8 lsls r0, 24 lsrs r0, 24 ldr r1, _08009704 @ =gLocalLinkPlayer strh r0, [r1, 0x18] bx lr .align 2, 0 _08009704: .4byte gLocalLinkPlayer thumb_func_end sub_80096F8 thumb_func_start sub_8009708 sub_8009708: @ 8009708 push {r4,r5,lr} ldr r5, _08009774 @ =gLocalLinkPlayer ldr r4, _08009778 @ =gSaveBlock2Ptr ldr r1, [r4] ldrb r2, [r1, 0xA] ldrb r0, [r1, 0xB] lsls r0, 8 orrs r2, r0 ldrb r0, [r1, 0xC] lsls r0, 16 orrs r2, r0 ldrb r0, [r1, 0xD] lsls r0, 24 orrs r2, r0 str r2, [r5, 0x4] adds r0, r5, 0 adds r0, 0x8 bl StringCopy ldr r0, [r4] ldrb r0, [r0, 0x8] strb r0, [r5, 0x13] ldr r0, _0800977C @ =gLinkType ldrh r0, [r0] str r0, [r5, 0x14] ldr r0, _08009780 @ =gGameLanguage ldrb r0, [r0] strh r0, [r5, 0x1A] ldr r0, _08009784 @ =gGameVersion ldrb r0, [r0] movs r2, 0x80 lsls r2, 7 adds r1, r2, 0 adds r0, r1 strh r0, [r5] movs r0, 0x80 lsls r0, 8 strh r0, [r5, 0x2] bl sub_806E25C strb r0, [r5, 0x10] ldr r0, _08009788 @ =0x00000844 bl FlagGet lsls r0, 24 cmp r0, 0 beq _0800976E ldrb r0, [r5, 0x10] movs r1, 0x10 orrs r0, r1 strb r0, [r5, 0x10] _0800976E: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08009774: .4byte gLocalLinkPlayer _08009778: .4byte gSaveBlock2Ptr _0800977C: .4byte gLinkType _08009780: .4byte gGameLanguage _08009784: .4byte gGameVersion _08009788: .4byte 0x00000844 thumb_func_end sub_8009708 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 sub_8009804 sub_8009804: @ 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 sub_8009804 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} sub sp, 0x4 ldr r4, _08009A70 @ =gMain ldrh r1, [r4, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080099E6 ldr r1, _08009A74 @ =gUnknown_3003F84 movs r0, 0x1 strb r0, [r1] _080099E6: ldrh r1, [r4, 0x2C] movs r5, 0x2 adds r0, r5, 0 ands r0, r1 cmp r0, 0 beq _080099FA ldr r0, _08009A78 @ =gHeap + 0x4000 ldr r1, _08009A7C @ =0x00002004 bl InitBlockSend _080099FA: ldrh r1, [r4, 0x2E] movs r0, 0x80 lsls r0, 2 ands r0, r1 cmp r0, 0 beq _08009A16 movs r0, 0x1 negs r0, r0 str r5, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade _08009A16: ldrh r1, [r4, 0x2E] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _08009A26 movs r0, 0x1 bl SetSuppressLinkErrorMessage _08009A26: ldrh r1, [r4, 0x2E] movs r0, 0x80 lsls r0, 1 ands r0, r1 cmp r0, 0 beq _08009A38 movs r0, 0x1 bl TrySavingData _08009A38: ldrh r1, [r4, 0x2E] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _08009A46 bl sub_800AAC0 _08009A46: ldr r0, _08009A80 @ =gLinkTestDebugValuesEnabled ldrb r0, [r0] cmp r0, 0 beq _08009A66 ldr r2, [r4, 0x24] ldr r0, _08009A84 @ =gLinkVSyncDisabled ldrb r1, [r0] ldr r0, _08009A88 @ =gUnknown_3003F80 ldr r0, [r0] cmp r0, 0 bne _08009A60 movs r0, 0x10 orrs r1, r0 _08009A60: adds r0, r2, 0 bl SetLinkDebugValues _08009A66: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08009A70: .4byte gMain _08009A74: .4byte gUnknown_3003F84 _08009A78: .4byte gHeap + 0x4000 _08009A7C: .4byte 0x00002004 _08009A80: .4byte gLinkTestDebugValuesEnabled _08009A84: .4byte gLinkVSyncDisabled _08009A88: .4byte gUnknown_3003F80 thumb_func_end LinkTestProcessKeyInput thumb_func_start c2_08009A8C c2_08009A8C: @ 8009A8C push {lr} bl LinkTestProcessKeyInput movs r0, 0x1 movs r1, 0x1 movs r2, 0 bl TestBlockTransfer bl RunTasks bl AnimateSprites bl BuildOamBuffer bl UpdatePaletteFade pop {r0} bx r0 thumb_func_end c2_08009A8C thumb_func_start LinkMain2 LinkMain2: @ 8009AB0 push {r4,r5,lr} adds r4, r0, 0 ldr r0, _08009AC0 @ =gLinkOpen ldrb r0, [r0] cmp r0, 0 bne _08009AC4 movs r0, 0 b _08009B0C .align 2, 0 _08009AC0: .4byte gLinkOpen _08009AC4: movs r1, 0 ldr r5, _08009B14 @ =gUnknown_3003EC4 ldr r3, _08009B18 @ =gUnknown_3003F50 movs r2, 0 _08009ACC: lsls r0, r1, 1 adds r0, r3 strh r2, [r0] adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x7 bls _08009ACC ldrh r0, [r4] strh r0, [r5] ldr r0, _08009B1C @ =gUnknown_3003F20 ldr r0, [r0] movs r1, 0x40 ands r0, r1 cmp r0, 0 beq _08009B08 ldr r0, _08009B20 @ =0x04000128 ldr r0, [r0] lsls r0, 26 lsrs r0, 30 bl sub_8009B70 ldr r0, _08009B24 @ =gUnknown_3003F80 ldr r0, [r0] cmp r0, 0 beq _08009B04 bl _call_via_r0 _08009B04: bl sub_800AC58 _08009B08: ldr r0, _08009B1C @ =gUnknown_3003F20 ldrh r0, [r0] _08009B0C: pop {r4,r5} pop {r1} bx r1 .align 2, 0 _08009B14: .4byte gUnknown_3003EC4 _08009B18: .4byte gUnknown_3003F50 _08009B1C: .4byte gUnknown_3003F20 _08009B20: .4byte 0x04000128 _08009B24: .4byte gUnknown_3003F80 thumb_func_end LinkMain2 thumb_func_start HandleReceiveRemoteLinkPlayer HandleReceiveRemoteLinkPlayer: @ 8009B28 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 movs r5, 0 ldr r1, _08009B3C @ =gUnknown_3003EB8 adds r0, r1 strb r5, [r0] movs r4, 0 adds r6, r1, 0 b _08009B48 .align 2, 0 _08009B3C: .4byte gUnknown_3003EB8 _08009B40: adds r0, r4, r6 ldrb r0, [r0] adds r5, r0 adds r4, 0x1 _08009B48: bl GetLinkPlayerCount_2 lsls r0, 24 lsrs r0, 24 cmp r4, r0 blt _08009B40 cmp r5, 0 bne _08009B64 ldr r1, _08009B6C @ =gReceivedRemoteLinkPlayers ldrb r0, [r1] cmp r0, 0 bne _08009B64 movs r0, 0x1 strb r0, [r1] _08009B64: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08009B6C: .4byte gReceivedRemoteLinkPlayers thumb_func_end HandleReceiveRemoteLinkPlayer thumb_func_start sub_8009B70 sub_8009B70: @ 8009B70 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 movs r6, 0 _08009B7E: ldr r0, _08009BC8 @ =gUnknown_3003E60 lsls r1, r6, 1 adds r3, r1, r0 movs r0, 0 strh r0, [r3] lsls r4, r6, 4 ldr r5, _08009BCC @ =gRecvCmds adds r2, r4, r5 ldrh r0, [r2] mov r12, r1 adds r7, r6, 0x1 str r7, [sp] cmp r0, 0 bne _08009B9C b _08009E3E _08009B9C: ldrh r1, [r2] ldr r0, _08009BD0 @ =0x00005fff cmp r1, r0 bne _08009BA6 b _08009DF0 _08009BA6: cmp r1, r0 bgt _08009BF4 ldr r0, _08009BD4 @ =0x00004444 cmp r1, r0 bne _08009BB2 b _08009E34 _08009BB2: cmp r1, r0 bgt _08009BE0 ldr r0, _08009BD8 @ =0x00002222 cmp r1, r0 beq _08009C38 ldr r0, _08009BDC @ =0x00002ffe cmp r1, r0 bne _08009BC4 b _08009DF8 _08009BC4: b _08009E3E .align 2, 0 _08009BC8: .4byte gUnknown_3003E60 _08009BCC: .4byte gRecvCmds _08009BD0: .4byte 0x00005fff _08009BD4: .4byte 0x00004444 _08009BD8: .4byte 0x00002222 _08009BDC: .4byte 0x00002ffe _08009BE0: ldr r0, _08009BF0 @ =0x00005555 cmp r1, r0 beq _08009C88 adds r0, 0x11 cmp r1, r0 beq _08009C88 b _08009E3E .align 2, 0 _08009BF0: .4byte 0x00005555 _08009BF4: ldr r0, _08009C10 @ =0x0000bbbb cmp r1, r0 beq _08009C94 cmp r1, r0 bgt _08009C1C ldr r0, _08009C14 @ =0x00008888 cmp r1, r0 beq _08009CC0 ldr r0, _08009C18 @ =0x0000aaaa cmp r1, r0 bne _08009C0C b _08009E08 _08009C0C: b _08009E3E .align 2, 0 _08009C10: .4byte 0x0000bbbb _08009C14: .4byte 0x00008888 _08009C18: .4byte 0x0000aaaa _08009C1C: ldr r0, _08009C30 @ =0x0000cafe cmp r1, r0 bne _08009C24 b _08009E34 _08009C24: ldr r0, _08009C34 @ =0x0000cccc cmp r1, r0 bne _08009C2C b _08009E0E _08009C2C: b _08009E3E .align 2, 0 _08009C30: .4byte 0x0000cafe _08009C34: .4byte 0x0000cccc _08009C38: bl sub_8009708 ldr r0, _08009C7C @ =gUnknown_3003E70 adds r2, r0, 0 adds r2, 0x10 ldr r1, _08009C80 @ =gLocalLinkPlayer ldm r1!, {r3-r5} stm r2!, {r3-r5} ldm r1!, {r3,r6,r7} stm r2!, {r3,r6,r7} ldr r1, [r1] str r1, [r2] ldr r4, _08009C84 @ =gUnknown_82345C0 adds r2, r0, 0 adds r1, r4, 0 ldm r1!, {r5-r7} stm r2!, {r5-r7} ldrh r3, [r1] strh r3, [r2] ldrb r1, [r1, 0x2] strb r1, [r2, 0x2] adds r1, r0, 0 adds r1, 0x2C ldm r4!, {r2,r3,r5} stm r1!, {r2,r3,r5} ldrh r2, [r4] strh r2, [r1] ldrb r2, [r4, 0x2] strb r2, [r1, 0x2] movs r1, 0x3C bl InitBlockSend b _08009E3E .align 2, 0 _08009C7C: .4byte gUnknown_3003E70 _08009C80: .4byte gLocalLinkPlayer _08009C84: .4byte gUnknown_82345C0 _08009C88: ldr r1, _08009C90 @ =gUnknown_3003F28 movs r0, 0x1 strb r0, [r1] b _08009E3E .align 2, 0 _08009C90: .4byte gUnknown_3003F28 _08009C94: mov r7, r12 adds r1, r7, r6 lsls r1, 2 ldr r0, _08009CB8 @ =gUnknown_3000E18 adds r1, r0 movs r2, 0 strh r2, [r1] ldr r0, _08009CBC @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r0, [r0] strh r0, [r1, 0x2] ldr r0, _08009CBC @ =gRecvCmds adds r0, 0x4 adds r0, r4, r0 ldrh r0, [r0] strb r0, [r1, 0x9] b _08009E3E .align 2, 0 _08009CB8: .4byte gUnknown_3000E18 _08009CBC: .4byte gRecvCmds _08009CC0: mov r3, r12 adds r0, r3, r6 lsls r0, 2 ldr r5, _08009D04 @ =gUnknown_3000E18 adds r3, r0, r5 ldrh r1, [r3, 0x2] movs r0, 0x80 lsls r0, 1 adds r7, r5, 0 mov r10, r7 cmp r1, r0 bls _08009D10 ldr r0, _08009D08 @ =gDecompressionBuffer mov r8, r0 movs r2, 0 adds r5, r3, 0 ldr r7, _08009D0C @ =gRecvCmds adds r3, r4, 0 _08009CE4: ldrh r1, [r5] lsrs r1, 1 adds r1, r2 lsls r1, 1 add r1, r8 adds r2, 0x1 lsls r0, r2, 1 adds r0, r3 adds r0, r7 ldrh r0, [r0] strh r0, [r1] lsls r2, 16 lsrs r2, 16 cmp r2, 0x6 bls _08009CE4 b _08009D40 .align 2, 0 _08009D04: .4byte gUnknown_3000E18 _08009D08: .4byte gDecompressionBuffer _08009D0C: .4byte gRecvCmds _08009D10: movs r2, 0 ldr r1, _08009DC4 @ =gBlockRecvBuffer mov r9, r1 adds r7, r3, 0 ldr r3, _08009DC8 @ =gRecvCmds mov r8, r3 lsls r5, r6, 8 adds r3, r4, 0 _08009D20: ldrh r1, [r7] lsrs r1, 1 adds r1, r2 lsls r1, 1 adds r1, r5 add r1, r9 adds r2, 0x1 lsls r0, r2, 1 adds r0, r3 add r0, r8 ldrh r0, [r0] strh r0, [r1] lsls r2, 16 lsrs r2, 16 cmp r2, 0x6 bls _08009D20 _08009D40: mov r4, r12 adds r1, r4, r6 lsls r1, 2 add r1, r10 ldrh r0, [r1] adds r0, 0xE movs r3, 0 strh r0, [r1] lsls r0, 16 lsrs r0, 16 ldrh r1, [r1, 0x2] cmp r0, r1 bcc _08009E3E ldr r0, _08009DCC @ =gUnknown_3003EB8 adds r0, r6, r0 ldrb r0, [r0] cmp r0, 0x1 bne _08009DE6 lsls r1, r6, 8 ldr r0, _08009DC4 @ =gBlockRecvBuffer adds r1, r0 mov r8, r1 lsls r0, r6, 3 subs r0, r6 lsls r0, 2 ldr r1, _08009DD0 @ =gLinkPlayers adds r2, r0, r1 adds r1, r2, 0 mov r0, r8 adds r0, 0x10 ldm r0!, {r4,r5,r7} stm r1!, {r4,r5,r7} ldm r0!, {r4,r5,r7} stm r1!, {r4,r5,r7} ldr r0, [r0] str r0, [r1] ldrb r0, [r2] subs r0, 0x1 lsls r0, 16 lsrs r0, 16 cmp r0, 0x1 bhi _08009D9A strb r3, [r2, 0x12] strb r3, [r2, 0x11] strb r3, [r2, 0x10] _08009D9A: adds r0, r2, 0 bl sub_800B284 ldr r5, _08009DD4 @ =gUnknown_82345C0 mov r0, r8 adds r1, r5, 0 bl strcmp cmp r0, 0 bne _08009DBC mov r0, r8 adds r0, 0x2C adds r1, r5, 0 bl strcmp cmp r0, 0 beq _08009DDC _08009DBC: ldr r0, _08009DD8 @ =c2_800ACD4 bl SetMainCallback2 b _08009E3E .align 2, 0 _08009DC4: .4byte gBlockRecvBuffer _08009DC8: .4byte gRecvCmds _08009DCC: .4byte gUnknown_3003EB8 _08009DD0: .4byte gLinkPlayers _08009DD4: .4byte gUnknown_82345C0 _08009DD8: .4byte c2_800ACD4 _08009DDC: lsls r0, r6, 24 lsrs r0, 24 bl HandleReceiveRemoteLinkPlayer b _08009E3E _08009DE6: lsls r0, r6, 24 lsrs r0, 24 bl sub_800A524 b _08009E3E _08009DF0: ldr r0, _08009DF4 @ =gUnknown_3003F30 b _08009DFA .align 2, 0 _08009DF4: .4byte gUnknown_3003F30 _08009DF8: ldr r0, _08009E04 @ =gUnknown_3003F2C _08009DFA: adds r0, r6, r0 movs r1, 0x1 strb r1, [r0] b _08009E3E .align 2, 0 _08009E04: .4byte gUnknown_3003F2C _08009E08: bl sub_800A3CC b _08009E3E _08009E0E: ldr r3, _08009E2C @ =gUnknown_8234598 ldr r0, _08009E30 @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r2, [r0] lsls r2, 3 adds r0, r2, r3 ldr r1, [r0] adds r3, 0x4 adds r2, r3 ldrh r2, [r2] movs r0, 0 bl SendBlock b _08009E3E .align 2, 0 _08009E2C: .4byte gUnknown_8234598 _08009E30: .4byte gRecvCmds _08009E34: ldr r0, _08009E5C @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r0, [r0] strh r0, [r3] _08009E3E: ldr r5, [sp] lsls r0, r5, 16 lsrs r6, r0, 16 cmp r6, 0x3 bhi _08009E4A b _08009B7E _08009E4A: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08009E5C: .4byte gRecvCmds thumb_func_end sub_8009B70 thumb_func_start sub_8009E60 sub_8009E60: @ 8009E60 push {lr} lsls r0, 16 lsrs r2, r0, 16 ldr r0, _08009E8C @ =0x00006666 cmp r2, r0 beq _08009F30 cmp r2, r0 bgt _08009EC0 ldr r0, _08009E90 @ =0x00004444 cmp r2, r0 beq _08009F1C cmp r2, r0 bgt _08009E9C ldr r0, _08009E94 @ =0x00002222 cmp r2, r0 beq _08009F08 ldr r0, _08009E98 @ =0x00002ffe _08009E82: cmp r2, r0 bne _08009E88 b _08009FB4 _08009E88: b _08009FD6 .align 2, 0 _08009E8C: .4byte 0x00006666 _08009E90: .4byte 0x00004444 _08009E94: .4byte 0x00002222 _08009E98: .4byte 0x00002ffe _08009E9C: ldr r0, _08009EAC @ =0x00005566 cmp r2, r0 bne _08009EA4 b _08009FB4 _08009EA4: cmp r2, r0 bgt _08009EB0 subs r0, 0x11 b _08009E82 .align 2, 0 _08009EAC: .4byte 0x00005566 _08009EB0: ldr r0, _08009EBC @ =0x00005fff cmp r2, r0 bne _08009EB8 b _08009FA0 _08009EB8: b _08009FD6 .align 2, 0 _08009EBC: .4byte 0x00005fff _08009EC0: ldr r0, _08009ED4 @ =0x0000aaab cmp r2, r0 beq _08009F78 cmp r2, r0 bgt _08009EE0 ldr r0, _08009ED8 @ =0x00007777 cmp r2, r0 beq _08009F3C ldr r0, _08009EDC @ =0x0000aaaa b _08009E82 .align 2, 0 _08009ED4: .4byte 0x0000aaab _08009ED8: .4byte 0x00007777 _08009EDC: .4byte 0x0000aaaa _08009EE0: ldr r0, _08009EF4 @ =0x0000cafe cmp r2, r0 beq _08009FC0 cmp r2, r0 bgt _08009EFC ldr r0, _08009EF8 @ =0x0000bbbb cmp r2, r0 beq _08009F5C b _08009FD6 .align 2, 0 _08009EF4: .4byte 0x0000cafe _08009EF8: .4byte 0x0000bbbb _08009EFC: ldr r0, _08009F04 @ =0x0000cccc cmp r2, r0 beq _08009F8C b _08009FD6 .align 2, 0 _08009F04: .4byte 0x0000cccc _08009F08: ldr r0, _08009F14 @ =gUnknown_3003F50 strh r2, [r0] ldr r1, _08009F18 @ =gLinkType ldrh r1, [r1] b _08009FD4 .align 2, 0 _08009F14: .4byte gUnknown_3003F50 _08009F18: .4byte gLinkType _08009F1C: ldr r0, _08009F28 @ =gUnknown_3003F50 strh r2, [r0] ldr r1, _08009F2C @ =gMain ldrh r1, [r1, 0x2C] b _08009FD4 .align 2, 0 _08009F28: .4byte gUnknown_3003F50 _08009F2C: .4byte gMain _08009F30: ldr r0, _08009F38 @ =gUnknown_3003F50 movs r1, 0 b _08009FD2 .align 2, 0 _08009F38: .4byte gUnknown_3003F50 _08009F3C: ldr r0, _08009F58 @ =gUnknown_3003F50 strh r2, [r0] movs r1, 0 adds r3, r0, 0 movs r2, 0xEE _08009F46: adds r1, 0x1 lsls r0, r1, 1 adds r0, r3 strh r2, [r0] lsls r1, 24 lsrs r1, 24 cmp r1, 0x4 bls _08009F46 b _08009FD6 .align 2, 0 _08009F58: .4byte gUnknown_3003F50 _08009F5C: ldr r1, _08009F70 @ =gUnknown_3003F50 strh r2, [r1] ldr r2, _08009F74 @ =gUnknown_3000E08 ldrh r0, [r2, 0x2] strh r0, [r1, 0x2] ldrb r0, [r2, 0x9] adds r0, 0x80 strh r0, [r1, 0x4] b _08009FD6 .align 2, 0 _08009F70: .4byte gUnknown_3003F50 _08009F74: .4byte gUnknown_3000E08 _08009F78: ldr r0, _08009F84 @ =gUnknown_3003F50 strh r2, [r0] ldr r1, _08009F88 @ =gSpecialVar_ItemId ldrh r1, [r1] b _08009FD4 .align 2, 0 _08009F84: .4byte gUnknown_3003F50 _08009F88: .4byte gSpecialVar_ItemId _08009F8C: ldr r0, _08009F98 @ =gUnknown_3003F50 strh r2, [r0] ldr r1, _08009F9C @ =gUnknown_3003F90 ldrb r1, [r1] b _08009FD4 .align 2, 0 _08009F98: .4byte gUnknown_3003F50 _08009F9C: .4byte gUnknown_3003F90 _08009FA0: ldr r0, _08009FAC @ =gUnknown_3003F50 strh r2, [r0] ldr r1, _08009FB0 @ =gUnknown_3003F34 ldrh r1, [r1] b _08009FD4 .align 2, 0 _08009FAC: .4byte gUnknown_3003F50 _08009FB0: .4byte gUnknown_3003F34 _08009FB4: ldr r0, _08009FBC @ =gUnknown_3003F50 strh r2, [r0] b _08009FD6 .align 2, 0 _08009FBC: .4byte gUnknown_3003F50 _08009FC0: ldr r0, _08009FDC @ =gUnknown_3005028 ldrh r1, [r0] cmp r1, 0 beq _08009FD6 ldr r0, _08009FE0 @ =gLinkTransferringData ldrb r0, [r0] cmp r0, 0 bne _08009FD6 ldr r0, _08009FE4 @ =gUnknown_3003F50 _08009FD2: strh r2, [r0] _08009FD4: strh r1, [r0, 0x2] _08009FD6: pop {r0} bx r0 .align 2, 0 _08009FDC: .4byte gUnknown_3005028 _08009FE0: .4byte gLinkTransferringData _08009FE4: .4byte gUnknown_3003F50 thumb_func_end sub_8009E60 thumb_func_start sub_8009FE8 sub_8009FE8: @ 8009FE8 push {lr} ldr r0, _0800A000 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 beq _08009FF6 bl sub_80F9828 _08009FF6: ldr r1, _0800A004 @ =gUnknown_3003F80 ldr r0, _0800A008 @ =sub_800A040 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0800A000: .4byte gWirelessCommType _0800A004: .4byte gUnknown_3003F80 _0800A008: .4byte sub_800A040 thumb_func_end sub_8009FE8 thumb_func_start sub_800A00C sub_800A00C: @ 800A00C push {lr} ldr r0, _0800A01C @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 beq _0800A020 bl sub_80F9808 b _0800A03A .align 2, 0 _0800A01C: .4byte gWirelessCommType _0800A020: ldr r0, _0800A030 @ =gUnknown_3003F80 ldr r1, [r0] ldr r0, _0800A034 @ =sub_800A040 cmp r1, r0 beq _0800A038 movs r0, 0 b _0800A03A .align 2, 0 _0800A030: .4byte gUnknown_3003F80 _0800A034: .4byte sub_800A040 _0800A038: movs r0, 0x1 _0800A03A: pop {r1} bx r1 thumb_func_end sub_800A00C thumb_func_start sub_800A040 sub_800A040: @ 800A040 push {lr} ldr r0, _0800A054 @ =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0x1 bne _0800A050 ldr r0, _0800A058 @ =0x0000cafe bl sub_8009E60 _0800A050: pop {r0} bx r0 .align 2, 0 _0800A054: .4byte gReceivedRemoteLinkPlayers _0800A058: .4byte 0x0000cafe thumb_func_end sub_800A040 thumb_func_start sub_800A05C sub_800A05C: @ 800A05C ldr r1, _0800A064 @ =gUnknown_3003F80 movs r0, 0 str r0, [r1] bx lr .align 2, 0 _0800A064: .4byte gUnknown_3003F80 thumb_func_end sub_800A05C thumb_func_start sub_800A068 sub_800A068: @ 800A068 push {lr} ldr r0, _0800A078 @ =gWirelessCommType ldrb r1, [r0] cmp r1, 0 beq _0800A07C bl sub_80F985C b _0800A080 .align 2, 0 _0800A078: .4byte gWirelessCommType _0800A07C: ldr r0, _0800A084 @ =gUnknown_3003F80 str r1, [r0] _0800A080: pop {r0} bx r0 .align 2, 0 _0800A084: .4byte gUnknown_3003F80 thumb_func_end sub_800A068 thumb_func_start GetLinkPlayerCount GetLinkPlayerCount: @ 800A088 push {lr} ldr r0, _0800A0A0 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 bne _0800A0A8 ldr r0, _0800A0A4 @ =gUnknown_3003F20 ldr r0, [r0] movs r1, 0x1C ands r0, r1 lsrs r0, 2 b _0800A0B0 .align 2, 0 _0800A0A0: .4byte gWirelessCommType _0800A0A4: .4byte gUnknown_3003F20 _0800A0A8: bl sub_80FA4EC lsls r0, 24 lsrs r0, 24 _0800A0B0: pop {r1} bx r1 thumb_func_end GetLinkPlayerCount thumb_func_start sub_800A0B4 sub_800A0B4: @ 800A0B4 push {lr} ldr r0, _0800A0C8 @ =gUnknown_3000E54 movs r1, 0 str r1, [r0] ldr r0, _0800A0CC @ =gLinkTimeOutCounter strh r1, [r0] bl sub_8009804 pop {r0} bx r0 .align 2, 0 _0800A0C8: .4byte gUnknown_3000E54 _0800A0CC: .4byte gLinkTimeOutCounter thumb_func_end sub_800A0B4 thumb_func_start sub_800A0D0 sub_800A0D0: @ 800A0D0 push {r4-r7,lr} adds r5, r0, 0 adds r6, r1, 0 movs r7, 0 ldr r0, _0800A0F8 @ =gReceivedRemoteLinkPlayers ldrb r4, [r0] cmp r4, 0x1 bne _0800A1C8 bl GetLinkPlayerCount_2 lsls r0, 24 lsrs r0, 24 cmp r5, r0 bgt _0800A0F0 cmp r0, r6 ble _0800A100 _0800A0F0: ldr r1, _0800A0FC @ =gUnknown_3000E54 movs r0, 0x6 str r0, [r1] b _0800A1E2 .align 2, 0 _0800A0F8: .4byte gReceivedRemoteLinkPlayers _0800A0FC: .4byte gUnknown_3000E54 _0800A100: bl GetLinkPlayerCount lsls r0, 24 cmp r0, 0 bne _0800A112 ldr r0, _0800A11C @ =gUnknown_3003EAC strb r4, [r0] bl CloseLink _0800A112: movs r6, 0 ldr r4, _0800A120 @ =gLinkPlayers movs r5, 0 b _0800A138 .align 2, 0 _0800A11C: .4byte gUnknown_3003EAC _0800A120: .4byte gLinkPlayers _0800A124: adds r0, r4, 0 adds r0, 0x14 adds r0, r5, r0 ldr r1, [r0] ldr r0, [r4, 0x14] cmp r1, r0 bne _0800A134 adds r7, 0x1 _0800A134: adds r5, 0x1C adds r6, 0x1 _0800A138: bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r6, r0 blt _0800A124 bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r7, r0 bne _0800A1B8 ldr r0, _0800A170 @ =gLinkPlayers ldr r1, [r0, 0x14] ldr r0, _0800A174 @ =0x00001133 cmp r1, r0 bne _0800A1AC bl sub_804FB34 cmp r0, 0x1 beq _0800A194 cmp r0, 0x1 bgt _0800A17C cmp r0, 0 beq _0800A188 ldr r2, _0800A178 @ =gUnknown_3000E54 b _0800A1E0 .align 2, 0 _0800A170: .4byte gLinkPlayers _0800A174: .4byte 0x00001133 _0800A178: .4byte gUnknown_3000E54 _0800A17C: cmp r0, 0x2 beq _0800A1A0 ldr r2, _0800A184 @ =gUnknown_3000E54 b _0800A1E0 .align 2, 0 _0800A184: .4byte gUnknown_3000E54 _0800A188: ldr r1, _0800A190 @ =gUnknown_3000E54 movs r0, 0x1 b _0800A1BC .align 2, 0 _0800A190: .4byte gUnknown_3000E54 _0800A194: ldr r1, _0800A19C @ =gUnknown_3000E54 movs r0, 0x4 b _0800A1BC .align 2, 0 _0800A19C: .4byte gUnknown_3000E54 _0800A1A0: ldr r1, _0800A1A8 @ =gUnknown_3000E54 movs r0, 0x5 b _0800A1BC .align 2, 0 _0800A1A8: .4byte gUnknown_3000E54 _0800A1AC: ldr r1, _0800A1B4 @ =gUnknown_3000E54 movs r0, 0x1 b _0800A1BC .align 2, 0 _0800A1B4: .4byte gUnknown_3000E54 _0800A1B8: ldr r1, _0800A1C4 @ =gUnknown_3000E54 movs r0, 0x3 _0800A1BC: str r0, [r1] adds r2, r1, 0 b _0800A1E0 .align 2, 0 _0800A1C4: .4byte gUnknown_3000E54 _0800A1C8: ldr r0, _0800A1E8 @ =gLinkTimeOutCounter ldrh r1, [r0] adds r1, 0x1 strh r1, [r0] lsls r1, 16 movs r0, 0x96 lsls r0, 18 ldr r2, _0800A1EC @ =gUnknown_3000E54 cmp r1, r0 bls _0800A1E0 movs r0, 0x2 str r0, [r2] _0800A1E0: ldrb r0, [r2] _0800A1E2: pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800A1E8: .4byte gLinkTimeOutCounter _0800A1EC: .4byte gUnknown_3000E54 thumb_func_end sub_800A0D0 thumb_func_start IsLinkPlayerDataExchangeComplete IsLinkPlayerDataExchangeComplete: @ 800A1F0 push {r4-r6,lr} movs r6, 0 movs r4, 0 ldr r5, _0800A1FC @ =gLinkPlayers b _0800A220 .align 2, 0 _0800A1FC: .4byte gLinkPlayers _0800A200: lsls r0, r4, 3 subs r0, r4 lsls r0, 2 adds r1, r5, 0 adds r1, 0x14 adds r0, r1 ldr r1, [r0] ldr r0, [r5, 0x14] cmp r1, r0 bne _0800A21A adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 _0800A21A: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 _0800A220: bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r4, r0 bcc _0800A200 bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r6, r0 bne _0800A244 movs r2, 0x1 ldr r0, _0800A240 @ =gUnknown_3000E54 str r2, [r0] b _0800A24C .align 2, 0 _0800A240: .4byte gUnknown_3000E54 _0800A244: movs r2, 0 ldr r1, _0800A254 @ =gUnknown_3000E54 movs r0, 0x3 str r0, [r1] _0800A24C: adds r0, r2, 0 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _0800A254: .4byte gUnknown_3000E54 thumb_func_end IsLinkPlayerDataExchangeComplete thumb_func_start GetLinkPlayerTrainerId GetLinkPlayerTrainerId: @ 800A258 lsls r0, 24 lsrs r0, 24 ldr r2, _0800A26C @ =gLinkPlayers lsls r1, r0, 3 subs r1, r0 lsls r1, 2 adds r2, 0x4 adds r1, r2 ldr r0, [r1] bx lr .align 2, 0 _0800A26C: .4byte gLinkPlayers thumb_func_end GetLinkPlayerTrainerId thumb_func_start sub_800A270 sub_800A270: @ 800A270 push {r4,r5,lr} ldr r5, _0800A290 @ =gLinkPlayers movs r4, 0x4 _0800A276: adds r0, r5, 0 movs r1, 0 movs r2, 0x1C bl memset adds r5, 0x1C subs r4, 0x1 cmp r4, 0 bge _0800A276 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800A290: .4byte gLinkPlayers thumb_func_end sub_800A270 thumb_func_start ResetBlockSend ResetBlockSend: @ 800A294 ldr r1, _0800A2A4 @ =gUnknown_3000E08 movs r0, 0 strb r0, [r1, 0x8] strh r0, [r1] strh r0, [r1, 0x2] str r0, [r1, 0x4] bx lr .align 2, 0 _0800A2A4: .4byte gUnknown_3000E08 thumb_func_end ResetBlockSend thumb_func_start InitBlockSend InitBlockSend: @ 800A2A8 push {r4-r7,lr} adds r7, r0, 0 adds r6, r1, 0 ldr r4, _0800A2BC @ =gUnknown_3000E08 ldrb r5, [r4, 0x8] cmp r5, 0 beq _0800A2C0 movs r0, 0 b _0800A2FE .align 2, 0 _0800A2BC: .4byte gUnknown_3000E08 _0800A2C0: bl GetMultiplayerId strb r0, [r4, 0x9] movs r0, 0x1 strb r0, [r4, 0x8] strh r6, [r4, 0x2] strh r5, [r4] adds r0, 0xFF cmp r6, r0 bls _0800A2D8 str r7, [r4, 0x4] b _0800A2EA _0800A2D8: ldr r5, _0800A304 @ =gBlockSendBuffer cmp r7, r5 beq _0800A2E8 adds r0, r5, 0 adds r1, r7, 0 adds r2, r6, 0 bl memcpy _0800A2E8: str r5, [r4, 0x4] _0800A2EA: ldr r0, _0800A308 @ =0x0000bbbb bl sub_8009E60 ldr r1, _0800A30C @ =gUnknown_3003F80 ldr r0, _0800A310 @ =LinkCB_BlockSendBegin str r0, [r1] ldr r1, _0800A314 @ =gUnknown_3000E48 movs r0, 0 str r0, [r1] movs r0, 0x1 _0800A2FE: pop {r4-r7} pop {r1} bx r1 .align 2, 0 _0800A304: .4byte gBlockSendBuffer _0800A308: .4byte 0x0000bbbb _0800A30C: .4byte gUnknown_3003F80 _0800A310: .4byte LinkCB_BlockSendBegin _0800A314: .4byte gUnknown_3000E48 thumb_func_end InitBlockSend thumb_func_start LinkCB_BlockSendBegin LinkCB_BlockSendBegin: @ 800A318 push {lr} ldr r1, _0800A330 @ =gUnknown_3000E48 ldr r0, [r1] adds r0, 0x1 str r0, [r1] cmp r0, 0x2 bls _0800A32C ldr r1, _0800A334 @ =gUnknown_3003F80 ldr r0, _0800A338 @ =LinkCB_BlockSend str r0, [r1] _0800A32C: pop {r0} bx r0 .align 2, 0 _0800A330: .4byte gUnknown_3000E48 _0800A334: .4byte gUnknown_3003F80 _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 r5, [r0, 0x4] ldr r2, _0800A390 @ =gUnknown_3003F50 ldr r1, _0800A394 @ =0x00008888 strh r1, [r2] movs r3, 0 adds r4, r0, 0 adds r6, r4, 0 adds r2, 0x2 _0800A350: lsls r0, r3, 1 ldrh r1, [r6] adds r0, r1 adds r0, r5 ldrb r1, [r0, 0x1] lsls r1, 8 ldrb r0, [r0] orrs r0, r1 strh r0, [r2] adds r2, 0x2 adds r3, 0x1 cmp r3, 0x6 ble _0800A350 ldrh r0, [r4] adds r0, 0xE strh r0, [r4] ldrh r1, [r4, 0x2] lsls r0, 16 lsrs r0, 16 cmp r1, r0 bhi _0800A384 movs r0, 0 strb r0, [r4, 0x8] ldr r1, _0800A398 @ =gUnknown_3003F80 ldr r0, _0800A39C @ =sub_800A3A0 str r0, [r1] _0800A384: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800A38C: .4byte gUnknown_3000E08 _0800A390: .4byte gUnknown_3003F50 _0800A394: .4byte 0x00008888 _0800A398: .4byte gUnknown_3003F80 _0800A39C: .4byte sub_800A3A0 thumb_func_end LinkCB_BlockSend thumb_func_start sub_800A3A0 sub_800A3A0: @ 800A3A0 ldr r1, _0800A3A8 @ =gUnknown_3003F80 movs r0, 0 str r0, [r1] bx lr .align 2, 0 _0800A3A8: .4byte gUnknown_3003F80 thumb_func_end sub_800A3A0 thumb_func_start sub_800A3AC sub_800A3AC: @ 800A3AC push {lr} bl GetMultiplayerId ldr r0, _0800A3C4 @ =0x00004444 bl sub_8009E60 ldr r1, _0800A3C8 @ =gUnknown_2022114 ldr r0, [r1] adds r0, 0x1 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0800A3C4: .4byte 0x00004444 _0800A3C8: .4byte gUnknown_2022114 thumb_func_end sub_800A3AC thumb_func_start sub_800A3CC sub_800A3CC: @ 800A3CC ldr r1, _0800A3DC @ =gUnknown_2022114 movs r0, 0 str r0, [r1] ldr r1, _0800A3E0 @ =gUnknown_3003F80 ldr r0, _0800A3E4 @ =sub_800A3AC str r0, [r1] bx lr .align 2, 0 _0800A3DC: .4byte gUnknown_2022114 _0800A3E0: .4byte gUnknown_3003F80 _0800A3E4: .4byte sub_800A3AC thumb_func_end sub_800A3CC thumb_func_start sub_800A3E8 sub_800A3E8: @ 800A3E8 ldr r0, _0800A3F0 @ =gUnknown_2022114 ldr r0, [r0] bx lr .align 2, 0 _0800A3F0: .4byte gUnknown_2022114 thumb_func_end sub_800A3E8 thumb_func_start sub_800A3F4 sub_800A3F4: @ 800A3F4 push {lr} ldr r0, _0800A400 @ =0x0000aaaa bl sub_8009E60 pop {r0} bx r0 .align 2, 0 _0800A400: .4byte 0x0000aaaa thumb_func_end sub_800A3F4 thumb_func_start GetMultiplayerId GetMultiplayerId: @ 800A404 push {lr} ldr r0, _0800A418 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 beq _0800A420 ldr r0, _0800A41C @ =0x04000128 ldr r0, [r0] lsls r0, 26 lsrs r0, 30 b _0800A428 .align 2, 0 _0800A418: .4byte gWirelessCommType _0800A41C: .4byte 0x04000128 _0800A420: bl rfu_get_multiplayer_id lsls r0, 24 lsrs r0, 24 _0800A428: pop {r1} bx r1 thumb_func_end GetMultiplayerId thumb_func_start bitmask_all_link_players_but_self bitmask_all_link_players_but_self: @ 800A42C push {lr} bl GetMultiplayerId adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 movs r0, 0x1 lsls r0, r1 movs r1, 0xF eors r0, r1 lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end bitmask_all_link_players_but_self thumb_func_start SendBlock SendBlock: @ 800A448 push {lr} adds r3, r1, 0 lsls r2, 16 lsrs r1, r2, 16 ldr r0, _0800A460 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 beq _0800A464 adds r0, r3, 0 bl InitBlockSend b _0800A46A .align 2, 0 _0800A460: .4byte gWirelessCommType _0800A464: adds r0, r3, 0 bl sub_80F9E60 _0800A46A: lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end SendBlock thumb_func_start sub_800A474 sub_800A474: @ 800A474 push {lr} lsls r0, 24 lsrs r1, r0, 24 adds r2, r1, 0 ldr r0, _0800A490 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _0800A494 adds r0, r1, 0 bl sub_80FA0F8 lsls r0, 24 lsrs r0, 24 b _0800A4B0 .align 2, 0 _0800A490: .4byte gWirelessCommType _0800A494: ldr r0, _0800A4A0 @ =gUnknown_3003F80 ldr r0, [r0] cmp r0, 0 beq _0800A4A4 movs r0, 0 b _0800A4B0 .align 2, 0 _0800A4A0: .4byte gUnknown_3003F80 _0800A4A4: ldr r0, _0800A4B4 @ =gUnknown_3003F90 strb r2, [r0] ldr r0, _0800A4B8 @ =0x0000cccc bl sub_8009E60 movs r0, 0x1 _0800A4B0: pop {r1} bx r1 .align 2, 0 _0800A4B4: .4byte gUnknown_3003F90 _0800A4B8: .4byte 0x0000cccc thumb_func_end sub_800A474 thumb_func_start sub_800A4BC sub_800A4BC: @ 800A4BC push {lr} ldr r0, _0800A4D0 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _0800A4D4 bl IsNoOneConnected lsls r0, 24 lsrs r0, 24 b _0800A4E2 .align 2, 0 _0800A4D0: .4byte gWirelessCommType _0800A4D4: movs r1, 0 ldr r0, _0800A4E8 @ =gUnknown_3003F80 ldr r0, [r0] cmp r0, 0 bne _0800A4E0 movs r1, 0x1 _0800A4E0: adds r0, r1, 0 _0800A4E2: pop {r1} bx r1 .align 2, 0 _0800A4E8: .4byte gUnknown_3003F80 thumb_func_end sub_800A4BC thumb_func_start GetBlockReceivedStatus GetBlockReceivedStatus: @ 800A4EC push {lr} ldr r0, _0800A510 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 beq _0800A518 ldr r2, _0800A514 @ =gUnknown_3003EBC ldrb r0, [r2, 0x3] lsls r0, 3 ldrb r1, [r2, 0x2] lsls r1, 2 orrs r0, r1 ldrb r1, [r2, 0x1] lsls r1, 1 orrs r0, r1 ldrb r1, [r2] orrs r0, r1 b _0800A51C .align 2, 0 _0800A510: .4byte gWirelessCommType _0800A514: .4byte gUnknown_3003EBC _0800A518: bl sub_80F9CC8 _0800A51C: lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 thumb_func_end GetBlockReceivedStatus thumb_func_start sub_800A524 sub_800A524: @ 800A524 push {lr} lsls r0, 24 lsrs r1, r0, 24 ldr r0, _0800A53C @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _0800A540 adds r0, r1, 0 bl sub_80F9720 b _0800A548 .align 2, 0 _0800A53C: .4byte gWirelessCommType _0800A540: ldr r0, _0800A54C @ =gUnknown_3003EBC adds r0, r1, r0 movs r1, 0x1 strb r1, [r0] _0800A548: pop {r0} bx r0 .align 2, 0 _0800A54C: .4byte gUnknown_3003EBC thumb_func_end sub_800A524 thumb_func_start ResetBlockReceivedFlags ResetBlockReceivedFlags: @ 800A550 push {r4,lr} ldr r0, _0800A56C @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _0800A570 movs r4, 0 _0800A55C: lsls r0, r4, 24 lsrs r0, 24 bl sub_80F974C adds r4, 0x1 cmp r4, 0x4 ble _0800A55C b _0800A57E .align 2, 0 _0800A56C: .4byte gWirelessCommType _0800A570: ldr r1, _0800A584 @ =gUnknown_3003EBC movs r2, 0 adds r0, r1, 0x3 _0800A576: strb r2, [r0] subs r0, 0x1 cmp r0, r1 bge _0800A576 _0800A57E: pop {r4} pop {r0} bx r0 .align 2, 0 _0800A584: .4byte gUnknown_3003EBC thumb_func_end ResetBlockReceivedFlags thumb_func_start ResetBlockReceivedFlag ResetBlockReceivedFlag: @ 800A588 push {lr} lsls r0, 24 lsrs r1, r0, 24 ldr r0, _0800A5A0 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _0800A5A4 adds r0, r1, 0 bl sub_80F974C b _0800A5B2 .align 2, 0 _0800A5A0: .4byte gWirelessCommType _0800A5A4: ldr r0, _0800A5B8 @ =gUnknown_3003EBC adds r1, r0 ldrb r0, [r1] cmp r0, 0 beq _0800A5B2 movs r0, 0 strb r0, [r1] _0800A5B2: pop {r0} bx r0 .align 2, 0 _0800A5B8: .4byte gUnknown_3003EBC thumb_func_end ResetBlockReceivedFlag thumb_func_start sub_800A5BC sub_800A5BC: @ 800A5BC push {lr} ldr r0, _0800A5DC @ =gUnknown_3003F20 ldr r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0800A5D8 movs r0, 0x1C ands r1, r0 cmp r1, 0x4 bls _0800A5D8 ldr r1, _0800A5E0 @ =gUnknown_3003F84 movs r0, 0x1 strb r0, [r1] _0800A5D8: pop {r0} bx r0 .align 2, 0 _0800A5DC: .4byte gUnknown_3003F20 _0800A5E0: .4byte gUnknown_3003F84 thumb_func_end sub_800A5BC thumb_func_start LinkTestCalcBlockChecksum LinkTestCalcBlockChecksum: @ 800A5E4 push {r4,lr} adds r4, r0, 0 lsls r1, 16 movs r3, 0 movs r2, 0 lsrs r1, 17 cmp r3, r1 bcs _0800A60A _0800A5F4: lsls r0, r2, 1 adds r0, r4 ldrh r0, [r0] adds r0, r3, r0 lsls r0, 16 lsrs r3, r0, 16 adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, r1 bcc _0800A5F4 _0800A60A: adds r0, r3, 0 pop {r4} pop {r1} bx r1 thumb_func_end LinkTestCalcBlockChecksum thumb_func_start PrintHexDigit PrintHexDigit: @ 800A614 push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 lsls r2, 24 ldr r4, _0800A648 @ =gUnknown_3003F70 ldr r3, [r4] lsls r3, 11 movs r5, 0xC0 lsls r5, 19 adds r3, r5 lsrs r2, 19 adds r2, r1 lsls r2, 1 adds r2, r3 ldr r3, [r4, 0x4] lsls r3, 12 ldr r1, [r4, 0x8] adds r1, 0x1 adds r0, r1 orrs r3, r0 strh r3, [r2] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800A648: .4byte gUnknown_3003F70 thumb_func_end PrintHexDigit thumb_func_start sub_800A64C sub_800A64C: @ 800A64C push {r4,r5,lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 lsls r2, 24 ldr r4, _0800A680 @ =gUnknown_3003F70 ldr r3, [r4] lsls r3, 11 movs r5, 0xC0 lsls r5, 19 adds r3, r5 lsrs r2, 19 adds r2, r1 lsls r2, 1 adds r2, r3 ldr r3, [r4, 0x4] lsls r3, 12 ldr r1, [r4, 0x8] adds r1, r0 orrs r3, r1 strh r3, [r2] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800A680: .4byte gUnknown_3003F70 thumb_func_end sub_800A64C thumb_func_start sub_800A684 sub_800A684: @ 800A684 push {r4-r7,lr} sub sp, 0x10 adds r5, r0, 0 lsls r1, 24 lsrs r6, r1, 24 lsls r2, 24 lsrs r7, r2, 24 lsls r3, 24 lsrs r3, 24 movs r4, 0 cmp r4, r3 bge _0800A6B0 movs r2, 0xF _0800A69E: mov r0, sp adds r1, r0, r4 adds r0, r5, 0 ands r0, r2 strb r0, [r1] lsrs r5, 4 adds r4, 0x1 cmp r4, r3 blt _0800A69E _0800A6B0: subs r4, r3, 0x1 cmp r4, 0 blt _0800A6D0 _0800A6B6: mov r1, sp adds r0, r1, r4 ldrb r0, [r0] adds r1, r6, 0 adds r2, r7, 0 bl PrintHexDigit adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 subs r4, 0x1 cmp r4, 0 bge _0800A6B6 _0800A6D0: add sp, 0x10 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_800A684 thumb_func_start sub_800A6D8 sub_800A6D8: @ 800A6D8 push {r4-r7,lr} adds r3, r0, 0 lsls r1, 24 lsrs r7, r1, 24 lsls r2, 24 lsrs r2, 24 movs r6, 0 ldrb r0, [r3] cmp r0, 0 beq _0800A718 adds r4, r3, 0 lsls r5, r2, 24 _0800A6F0: ldrb r0, [r4] cmp r0, 0xA bne _0800A700 movs r0, 0x80 lsls r0, 17 adds r5, r0 movs r6, 0 b _0800A710 _0800A700: ldrb r0, [r4] adds r1, r7, r6 lsls r1, 24 lsrs r1, 24 lsrs r2, r5, 24 bl sub_800A64C adds r6, 0x1 _0800A710: adds r4, 0x1 ldrb r0, [r4] cmp r0, 0 bne _0800A6F0 _0800A718: pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_800A6D8 thumb_func_start sub_800A720 sub_800A720: @ 800A720 push {lr} ldr r0, _0800A740 @ =gUnknown_3003F20 ldr r0, [r0] movs r1, 0x20 ands r0, r1 cmp r0, 0 beq _0800A734 ldr r0, _0800A744 @ =0x00002222 bl sub_8009E60 _0800A734: ldr r1, _0800A748 @ =gUnknown_3003F80 movs r0, 0 str r0, [r1] pop {r0} bx r0 .align 2, 0 _0800A740: .4byte gUnknown_3003F20 _0800A744: .4byte 0x00002222 _0800A748: .4byte gUnknown_3003F80 thumb_func_end sub_800A720 thumb_func_start task00_link_test task00_link_test: @ 800A74C push {r4-r6,lr} sub sp, 0x20 ldr r1, _0800A86C @ =gUnknown_82345D0 mov r0, sp bl strcpy mov r0, sp movs r1, 0x5 movs r2, 0x2 bl sub_800A6D8 ldr r0, _0800A870 @ =gUnknown_3003F84 ldrb r0, [r0] movs r1, 0x2 movs r2, 0x1 movs r3, 0x2 bl sub_800A684 ldr r4, _0800A874 @ =gUnknown_3003F20 ldr r0, [r4] movs r1, 0xF movs r2, 0x1 movs r3, 0x8 bl sub_800A684 ldr r0, _0800A878 @ =gUnknown_3003FB0 ldrb r0, [r0, 0x1] movs r1, 0x2 movs r2, 0xA movs r3, 0x2 bl sub_800A684 ldr r0, [r4] movs r1, 0x1C ands r0, r1 lsrs r0, 2 movs r1, 0xF movs r2, 0xA movs r3, 0x2 bl sub_800A684 bl GetMultiplayerId lsls r0, 24 lsrs r0, 24 movs r1, 0xF movs r2, 0xC movs r3, 0x2 bl sub_800A684 ldr r0, _0800A87C @ =gUnknown_3003FA0 ldrb r0, [r0] movs r1, 0x19 movs r2, 0x1 movs r3, 0x2 bl sub_800A684 ldr r0, _0800A880 @ =gUnknown_3004F70 ldrb r0, [r0] movs r1, 0x19 movs r2, 0x2 movs r3, 0x2 bl sub_800A684 bl GetBlockReceivedStatus lsls r0, 24 lsrs r0, 24 movs r1, 0xF movs r2, 0x5 movs r3, 0x2 bl sub_800A684 ldr r0, _0800A884 @ =gUnknown_3003E6C ldr r0, [r0] movs r1, 0x2 movs r2, 0xC movs r3, 0x8 bl sub_800A684 ldr r0, _0800A888 @ =gUnknown_3003EB0 ldr r0, [r0] movs r1, 0x2 movs r2, 0xD movs r3, 0x8 bl sub_800A684 bl GetSioMultiSI lsls r0, 24 lsrs r0, 24 movs r1, 0x19 movs r2, 0x5 movs r3, 0x1 bl sub_800A684 bl IsSioMultiMaster lsls r0, 24 lsrs r0, 24 movs r1, 0x19 movs r2, 0x6 movs r3, 0x1 bl sub_800A684 bl IsLinkConnectionEstablished lsls r0, 24 lsrs r0, 24 movs r1, 0x19 movs r2, 0x7 movs r3, 0x1 bl sub_800A684 bl HasLinkErrorOccurred lsls r0, 24 lsrs r0, 24 movs r1, 0x19 movs r2, 0x8 movs r3, 0x1 bl sub_800A684 movs r6, 0 movs r5, 0x80 lsls r5, 19 ldr r4, _0800A88C @ =gUnknown_3003F88 _0800A84A: ldrh r0, [r4] lsrs r2, r5, 24 movs r1, 0xA movs r3, 0x4 bl sub_800A684 movs r0, 0x80 lsls r0, 17 adds r5, r0 adds r4, 0x2 adds r6, 0x1 cmp r6, 0x3 ble _0800A84A add sp, 0x20 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800A86C: .4byte gUnknown_82345D0 _0800A870: .4byte gUnknown_3003F84 _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 thumb_func_end task00_link_test thumb_func_start SetLinkDebugValues SetLinkDebugValues: @ 800A890 ldr r2, _0800A89C @ =gUnknown_3003E6C str r0, [r2] ldr r0, _0800A8A0 @ =gUnknown_3003EB0 str r1, [r0] bx lr .align 2, 0 _0800A89C: .4byte gUnknown_3003E6C _0800A8A0: .4byte gUnknown_3003EB0 thumb_func_end SetLinkDebugValues thumb_func_start sub_800A8A4 sub_800A8A4: @ 800A8A4 push {r4,lr} movs r1, 0 movs r2, 0 ldr r0, _0800A8D0 @ =gUnknown_3003F40 ldrb r0, [r0] cmp r1, r0 bge _0800A8C6 movs r4, 0x1 adds r3, r0, 0 _0800A8B6: adds r0, r4, 0 lsls r0, r2 orrs r1, r0 lsls r0, r1, 24 lsrs r1, r0, 24 adds r2, 0x1 cmp r2, r3 blt _0800A8B6 _0800A8C6: adds r0, r1, 0 pop {r4} pop {r1} bx r1 .align 2, 0 _0800A8D0: .4byte gUnknown_3003F40 thumb_func_end sub_800A8A4 thumb_func_start sub_800A8D4 sub_800A8D4: @ 800A8D4 push {r4-r6,lr} movs r4, 0 movs r5, 0 movs r6, 0x1 b _0800A8EA _0800A8DE: adds r0, r6, 0 lsls r0, r5 orrs r4, r0 lsls r0, r4, 24 lsrs r4, r0, 24 adds r5, 0x1 _0800A8EA: bl GetLinkPlayerCount lsls r0, 24 lsrs r0, 24 cmp r5, r0 blt _0800A8DE adds r0, r4, 0 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_800A8D4 thumb_func_start sub_800A900 sub_800A900: @ 800A900 push {r4-r7,lr} ldr r1, _0800A934 @ =gUnknown_3003F40 strb r0, [r1] bl GetMultiplayerId ldr r1, _0800A938 @ =gUnknown_3003F60 strb r0, [r1] ldr r4, _0800A93C @ =gLinkPlayers ldr r3, _0800A940 @ =gSavedLinkPlayers movs r2, 0x4 _0800A914: adds r0, r3, 0 adds r1, r4, 0 ldm r1!, {r5-r7} stm r0!, {r5-r7} ldm r1!, {r5-r7} stm r0!, {r5-r7} ldr r1, [r1] str r1, [r0] adds r4, 0x1C adds r3, 0x1C subs r2, 0x1 cmp r2, 0 bge _0800A914 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800A934: .4byte gUnknown_3003F40 _0800A938: .4byte gUnknown_3003F60 _0800A93C: .4byte gLinkPlayers _0800A940: .4byte gSavedLinkPlayers thumb_func_end sub_800A900 thumb_func_start sub_800A944 sub_800A944: @ 800A944 ldr r0, _0800A94C @ =gUnknown_3003F40 ldrb r0, [r0] bx lr .align 2, 0 _0800A94C: .4byte gUnknown_3003F40 thumb_func_end sub_800A944 thumb_func_start sub_800A950 sub_800A950: @ 800A950 ldr r0, _0800A958 @ =gUnknown_3003F60 ldrb r0, [r0] bx lr .align 2, 0 _0800A958: .4byte gUnknown_3003F60 thumb_func_end sub_800A950 thumb_func_start sub_800A95C sub_800A95C: @ 800A95C push {r4-r6,lr} movs r5, 0 ldr r0, _0800A990 @ =gUnknown_3003F40 ldrb r2, [r0] adds r6, r0, 0 cmp r5, r2 bge _0800A986 ldr r1, _0800A994 @ =gLinkPlayers ldr r0, _0800A998 @ =gSavedLinkPlayers adds r4, r0, 0x4 adds r3, r1, 0x4 _0800A972: ldr r1, [r3] ldr r0, [r4] cmp r1, r0 bne _0800A97C adds r5, 0x1 _0800A97C: adds r4, 0x1C adds r3, 0x1C subs r2, 0x1 cmp r2, 0 bne _0800A972 _0800A986: ldrb r6, [r6] cmp r5, r6 beq _0800A99C movs r0, 0 b _0800A99E .align 2, 0 _0800A990: .4byte gUnknown_3003F40 _0800A994: .4byte gLinkPlayers _0800A998: .4byte gSavedLinkPlayers _0800A99C: movs r0, 0x1 _0800A99E: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_800A95C thumb_func_start sub_800A9A4 sub_800A9A4: @ 800A9A4 push {r4-r7,lr} mov r7, r8 push {r7} movs r4, 0 ldr r0, _0800AA10 @ =gUnknown_3003F40 ldrb r0, [r0] cmp r4, r0 bcs _0800AA04 ldr r6, _0800AA14 @ =gSavedLinkPlayers ldr r5, _0800AA18 @ =gLinkPlayers movs r0, 0x8 adds r0, r6 mov r8, r0 adds r7, r5, 0 adds r7, 0x8 _0800A9C2: lsls r0, r4, 3 subs r0, r4 lsls r2, r0, 2 adds r1, r6, 0x4 adds r1, r2, r1 adds r0, r5, 0x4 adds r0, r2, r0 ldr r1, [r1] ldr r0, [r0] cmp r1, r0 bne _0800A9E6 mov r1, r8 adds r0, r2, r1 adds r1, r2, r7 bl StringCompare cmp r0, 0 beq _0800A9F6 _0800A9E6: ldr r1, _0800AA1C @ =gUnknown_3003EAC movs r0, 0x1 strb r0, [r1] bl CloseLink ldr r0, _0800AA20 @ =c2_800ACD4 bl SetMainCallback2 _0800A9F6: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldr r0, _0800AA10 @ =gUnknown_3003F40 ldrb r0, [r0] cmp r4, r0 bcc _0800A9C2 _0800AA04: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800AA10: .4byte gUnknown_3003F40 _0800AA14: .4byte gSavedLinkPlayers _0800AA18: .4byte gLinkPlayers _0800AA1C: .4byte gUnknown_3003EAC _0800AA20: .4byte c2_800ACD4 thumb_func_end sub_800A9A4 thumb_func_start sub_800AA24 sub_800AA24: @ 800AA24 ldr r0, _0800AA30 @ =gUnknown_3003F40 movs r1, 0 strb r1, [r0] ldr r0, _0800AA34 @ =gUnknown_3003F60 strb r1, [r0] bx lr .align 2, 0 _0800AA30: .4byte gUnknown_3003F40 _0800AA34: .4byte gUnknown_3003F60 thumb_func_end sub_800AA24 thumb_func_start GetLinkPlayerCount_2 GetLinkPlayerCount_2: @ 800AA38 ldr r0, _0800AA44 @ =gUnknown_3003F20 ldr r0, [r0] movs r1, 0x1C ands r0, r1 lsrs r0, 2 bx lr .align 2, 0 _0800AA44: .4byte gUnknown_3003F20 thumb_func_end GetLinkPlayerCount_2 thumb_func_start sub_800AA48 sub_800AA48: @ 800AA48 push {lr} ldr r0, _0800AA60 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 bne _0800AA68 ldr r0, _0800AA64 @ =gUnknown_3003F20 ldr r0, [r0] lsrs r0, 5 movs r1, 0x1 ands r0, r1 b _0800AA70 .align 2, 0 _0800AA60: .4byte gWirelessCommType _0800AA64: .4byte gUnknown_3003F20 _0800AA68: bl sub_80FBA2C lsls r0, 24 lsrs r0, 24 _0800AA70: pop {r1} bx r1 thumb_func_end sub_800AA48 thumb_func_start sub_800AA74 sub_800AA74: @ 800AA74 ldr r0, _0800AA7C @ =gUnknown_3000E50 ldrb r0, [r0] bx lr .align 2, 0 _0800AA7C: .4byte gUnknown_3000E50 thumb_func_end sub_800AA74 thumb_func_start sub_800AA80 sub_800AA80: @ 800AA80 push {lr} lsls r0, 16 lsrs r3, r0, 16 ldr r0, _0800AA94 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _0800AA98 bl task_add_05_task_del_08FA224_when_no_RfuFunc b _0800AAAC .align 2, 0 _0800AA94: .4byte gWirelessCommType _0800AA98: ldr r2, _0800AAB0 @ =gUnknown_3003F80 ldr r1, [r2] cmp r1, 0 bne _0800AAAC ldr r0, _0800AAB4 @ =sub_800AB0C str r0, [r2] ldr r0, _0800AAB8 @ =gUnknown_3003F24 strb r1, [r0] ldr r0, _0800AABC @ =gUnknown_3003F34 strh r3, [r0] _0800AAAC: pop {r0} bx r0 .align 2, 0 _0800AAB0: .4byte gUnknown_3003F80 _0800AAB4: .4byte sub_800AB0C _0800AAB8: .4byte gUnknown_3003F24 _0800AABC: .4byte gUnknown_3003F34 thumb_func_end sub_800AA80 thumb_func_start sub_800AAC0 sub_800AAC0: @ 800AAC0 push {lr} ldr r0, _0800AAD0 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _0800AAD4 bl task_add_05_task_del_08FA224_when_no_RfuFunc b _0800AAFC .align 2, 0 _0800AAD0: .4byte gWirelessCommType _0800AAD4: ldr r2, _0800AAE8 @ =gUnknown_3003F80 ldr r1, [r2] cmp r1, 0 beq _0800AAF0 ldr r1, _0800AAEC @ =gUnknown_202285C ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] b _0800AAFC .align 2, 0 _0800AAE8: .4byte gUnknown_3003F80 _0800AAEC: .4byte gUnknown_202285C _0800AAF0: ldr r0, _0800AB00 @ =sub_800AB0C str r0, [r2] ldr r0, _0800AB04 @ =gUnknown_3003F24 strb r1, [r0] ldr r0, _0800AB08 @ =gUnknown_3003F34 strh r1, [r0] _0800AAFC: pop {r0} bx r0 .align 2, 0 _0800AB00: .4byte sub_800AB0C _0800AB04: .4byte gUnknown_3003F24 _0800AB08: .4byte gUnknown_3003F34 thumb_func_end sub_800AAC0 thumb_func_start sub_800AB0C sub_800AB0C: @ 800AB0C push {lr} ldr r0, _0800AB28 @ =gUnknown_3004F70 ldrb r0, [r0] cmp r0, 0 bne _0800AB22 ldr r0, _0800AB2C @ =0x00005fff bl sub_8009E60 ldr r1, _0800AB30 @ =gUnknown_3003F80 ldr r0, _0800AB34 @ =sub_800AB38 str r0, [r1] _0800AB22: pop {r0} bx r0 .align 2, 0 _0800AB28: .4byte gUnknown_3004F70 _0800AB2C: .4byte 0x00005fff _0800AB30: .4byte gUnknown_3003F80 _0800AB34: .4byte sub_800AB38 thumb_func_end sub_800AB0C thumb_func_start sub_800AB38 sub_800AB38: @ 800AB38 push {r4,lr} bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r3, 0 movs r1, 0 cmp r3, r2 bge _0800AB5C ldr r4, _0800AB84 @ =gUnknown_3003F30 _0800AB4C: adds r0, r1, r4 ldrb r0, [r0] cmp r0, 0 beq _0800AB56 adds r3, 0x1 _0800AB56: adds r1, 0x1 cmp r1, r2 blt _0800AB4C _0800AB5C: cmp r3, r2 bne _0800AB7E ldr r2, _0800AB88 @ =gBattleTypeFlags ldr r0, [r2] ldr r1, _0800AB8C @ =0x0000ffdf ands r0, r1 str r0, [r2] ldr r0, _0800AB90 @ =gLinkVSyncDisabled movs r4, 0x1 strb r4, [r0] bl CloseLink ldr r1, _0800AB94 @ =gUnknown_3003F80 movs r0, 0 str r0, [r1] ldr r0, _0800AB98 @ =gUnknown_3003F24 strb r4, [r0] _0800AB7E: pop {r4} pop {r0} bx r0 .align 2, 0 _0800AB84: .4byte gUnknown_3003F30 _0800AB88: .4byte gBattleTypeFlags _0800AB8C: .4byte 0x0000ffdf _0800AB90: .4byte gLinkVSyncDisabled _0800AB94: .4byte gUnknown_3003F80 _0800AB98: .4byte gUnknown_3003F24 thumb_func_end sub_800AB38 thumb_func_start sub_800AB9C sub_800AB9C: @ 800AB9C push {lr} ldr r0, _0800ABAC @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x1 bne _0800ABB0 bl sub_80FA42C b _0800ABC2 .align 2, 0 _0800ABAC: .4byte gWirelessCommType _0800ABB0: ldr r1, _0800ABC8 @ =gUnknown_3003F80 ldr r0, [r1] cmp r0, 0 bne _0800ABBC ldr r0, _0800ABCC @ =sub_800ABD4 str r0, [r1] _0800ABBC: ldr r1, _0800ABD0 @ =gUnknown_3003F24 movs r0, 0 strb r0, [r1] _0800ABC2: pop {r0} bx r0 .align 2, 0 _0800ABC8: .4byte gUnknown_3003F80 _0800ABCC: .4byte sub_800ABD4 _0800ABD0: .4byte gUnknown_3003F24 thumb_func_end sub_800AB9C thumb_func_start sub_800ABD4 sub_800ABD4: @ 800ABD4 push {lr} ldr r0, _0800ABF0 @ =gUnknown_3004F70 ldrb r0, [r0] cmp r0, 0 bne _0800ABEA ldr r0, _0800ABF4 @ =0x00002ffe bl sub_8009E60 ldr r1, _0800ABF8 @ =gUnknown_3003F80 ldr r0, _0800ABFC @ =sub_800AC00 str r0, [r1] _0800ABEA: pop {r0} bx r0 .align 2, 0 _0800ABF0: .4byte gUnknown_3004F70 _0800ABF4: .4byte 0x00002ffe _0800ABF8: .4byte gUnknown_3003F80 _0800ABFC: .4byte sub_800AC00 thumb_func_end sub_800ABD4 thumb_func_start sub_800AC00 sub_800AC00: @ 800AC00 push {r4,lr} bl GetLinkPlayerCount lsls r0, 24 lsrs r2, r0, 24 movs r1, 0 cmp r1, r2 bcs _0800AC2A ldr r3, _0800AC50 @ =gUnknown_3003F2C ldrb r0, [r3] cmp r0, 0 beq _0800AC2A _0800AC18: adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, r2 bcs _0800AC2A adds r0, r1, r3 ldrb r0, [r0] cmp r0, 0 bne _0800AC18 _0800AC2A: cmp r1, r2 bne _0800AC48 movs r1, 0 ldr r4, _0800AC54 @ =gUnknown_3003F80 ldr r3, _0800AC50 @ =gUnknown_3003F2C movs r2, 0 _0800AC36: adds r0, r1, r3 strb r2, [r0] adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x3 bls _0800AC36 movs r0, 0 str r0, [r4] _0800AC48: pop {r4} pop {r0} bx r0 .align 2, 0 _0800AC50: .4byte gUnknown_3003F2C _0800AC54: .4byte gUnknown_3003F80 thumb_func_end sub_800AC00 thumb_func_start sub_800AC58 sub_800AC58: @ 800AC58 push {lr} ldr r0, _0800AC9C @ =gLinkOpen ldrb r0, [r0] cmp r0, 0 beq _0800AC98 ldr r0, _0800ACA0 @ =gUnknown_3003F20 ldr r2, [r0] movs r0, 0xFE lsls r0, 11 ands r0, r2 cmp r0, 0 beq _0800AC98 ldr r0, _0800ACA4 @ =gUnknown_3003F38 ldrb r0, [r0] cmp r0, 0 bne _0800AC8E ldr r1, _0800ACA8 @ =sLinkErrorBuffer str r2, [r1] ldr r0, _0800ACAC @ =gUnknown_3004F70 ldrb r0, [r0] strb r0, [r1, 0x4] ldr r0, _0800ACB0 @ =gUnknown_3003FA0 ldrb r0, [r0] strb r0, [r1, 0x5] ldr r0, _0800ACB4 @ =c2_800ACD4 bl SetMainCallback2 _0800AC8E: ldr r1, _0800ACB8 @ =gUnknown_3003EAC movs r0, 0x1 strb r0, [r1] bl CloseLink _0800AC98: pop {r0} bx r0 .align 2, 0 _0800AC9C: .4byte gLinkOpen _0800ACA0: .4byte gUnknown_3003F20 _0800ACA4: .4byte gUnknown_3003F38 _0800ACA8: .4byte sLinkErrorBuffer _0800ACAC: .4byte gUnknown_3004F70 _0800ACB0: .4byte gUnknown_3003FA0 _0800ACB4: .4byte c2_800ACD4 _0800ACB8: .4byte gUnknown_3003EAC thumb_func_end sub_800AC58 thumb_func_start sub_800ACBC sub_800ACBC: @ 800ACBC push {r4,lr} ldr r4, _0800ACD0 @ =sLinkErrorBuffer str r0, [r4] strb r1, [r4, 0x5] strb r2, [r4, 0x4] strb r3, [r4, 0x6] pop {r4} pop {r0} bx r0 .align 2, 0 _0800ACD0: .4byte sLinkErrorBuffer thumb_func_end sub_800ACBC thumb_func_start c2_800ACD4 c2_800ACD4: @ 800ACD4 push {r4,lr} movs r0, 0 movs r1, 0 bl SetGpuReg ldr r0, _0800ADE0 @ =gMPlayInfo_SE1 bl m4aMPlayStop ldr r0, _0800ADE4 @ =gMPlayInfo_SE2 bl m4aMPlayStop ldr r0, _0800ADE8 @ =gMPlayInfo_SE3 bl m4aMPlayStop ldr r0, _0800ADEC @ =gHeap movs r1, 0xE0 lsls r1, 9 bl InitHeap bl ResetSpriteData bl FreeAllSpritePalettes bl ResetPaletteFadeControl movs r0, 0 movs r1, 0 movs r2, 0x2 bl FillPalette bl ResetTasks bl ScanlineEffect_Stop ldr r1, _0800ADF0 @ =gWirelessCommType ldrb r0, [r1] cmp r0, 0 beq _0800AD30 ldr r0, _0800ADF4 @ =sLinkErrorBuffer ldrb r0, [r0, 0x6] cmp r0, 0 bne _0800AD2C movs r0, 0x3 strb r0, [r1] _0800AD2C: bl sub_80F85F8 _0800AD30: ldr r0, _0800ADF8 @ =sub_800978C bl SetVBlankCallback movs r0, 0 bl ResetBgsAndClearDma3BusyFlags ldr r1, _0800ADFC @ =gUnknown_82345E8 movs r0, 0 movs r2, 0x2 bl InitBgsFromTemplates ldr r4, _0800AE00 @ =gUnknown_2022860 movs r0, 0x80 lsls r0, 4 bl Alloc adds r1, r0, 0 str r1, [r4] movs r0, 0x1 bl SetBgTilemapBuffer ldr r0, _0800AE04 @ =gUnknown_82345F0 bl InitWindows lsls r0, 16 cmp r0, 0 beq _0800ADD8 bl DeactivateAllTextPrinters bl ResetTempTileDataBuffers movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x10 movs r1, 0 bl SetGpuReg movs r0, 0x12 movs r1, 0 bl SetGpuReg movs r0, 0x14 movs r1, 0 bl SetGpuReg movs r0, 0x16 movs r1, 0 bl SetGpuReg movs r1, 0xE0 lsls r1, 8 movs r0, 0 bl ClearGpuRegBits ldr r0, _0800AE08 @ =gTMCaseMainWindowPalette movs r1, 0xF0 movs r2, 0x20 bl LoadPalette ldr r1, _0800AE0C @ =gSoftResetDisabled movs r0, 0 strb r0, [r1] ldr r0, _0800AE10 @ =sub_80094D4 movs r1, 0 bl CreateTask bl StopMapMusic ldr r1, _0800AE14 @ =gMain movs r0, 0 str r0, [r1] bl RunTasks bl AnimateSprites bl BuildOamBuffer bl UpdatePaletteFade ldr r0, _0800AE18 @ =sub_800AF2C bl SetMainCallback2 _0800ADD8: pop {r4} pop {r0} bx r0 .align 2, 0 _0800ADE0: .4byte gMPlayInfo_SE1 _0800ADE4: .4byte gMPlayInfo_SE2 _0800ADE8: .4byte gMPlayInfo_SE3 _0800ADEC: .4byte gHeap _0800ADF0: .4byte gWirelessCommType _0800ADF4: .4byte sLinkErrorBuffer _0800ADF8: .4byte sub_800978C _0800ADFC: .4byte gUnknown_82345E8 _0800AE00: .4byte gUnknown_2022860 _0800AE04: .4byte gUnknown_82345F0 _0800AE08: .4byte gTMCaseMainWindowPalette _0800AE0C: .4byte gSoftResetDisabled _0800AE10: .4byte sub_80094D4 _0800AE14: .4byte gMain _0800AE18: .4byte sub_800AF2C thumb_func_end c2_800ACD4 thumb_func_start sub_800AE1C sub_800AE1C: @ 800AE1C push {r4,r5,lr} sub sp, 0xC ldr r1, _0800AEB8 @ =gWirelessLinkDisplay4bpp movs r5, 0 str r5, [sp] movs r0, 0x1 movs r2, 0 movs r3, 0 bl DecompressAndLoadBgGfxUsingHeap ldr r1, _0800AEBC @ =gWirelessLinkDisplayBin movs r0, 0x1 movs r2, 0 movs r3, 0 bl CopyToBgTilemapBuffer movs r0, 0x1 bl CopyBgTilemapBufferToVram ldr r0, _0800AEC0 @ =gUnknown_8231EC4 movs r1, 0 movs r2, 0x20 bl LoadPalette movs r0, 0 movs r1, 0 bl FillWindowPixelBuffer movs r0, 0x2 movs r1, 0 bl FillWindowPixelBuffer ldr r4, _0800AEC4 @ =gUnknown_8234610 str r4, [sp] str r5, [sp, 0x4] ldr r0, _0800AEC8 @ =gUnknown_841DEF0 str r0, [sp, 0x8] movs r0, 0 movs r1, 0x3 movs r2, 0x2 movs r3, 0x5 bl AddTextPrinterParameterized3 str r4, [sp] str r5, [sp, 0x4] ldr r0, _0800AECC @ =gUnknown_841DF05 str r0, [sp, 0x8] movs r0, 0x2 movs r1, 0x3 movs r2, 0x2 movs r3, 0x2 bl AddTextPrinterParameterized3 movs r0, 0 bl PutWindowTilemap movs r0, 0x2 bl PutWindowTilemap movs r0, 0 movs r1, 0 bl CopyWindowToVram movs r0, 0x2 movs r1, 0x3 bl CopyWindowToVram movs r0, 0 bl ShowBg movs r0, 0x1 bl ShowBg add sp, 0xC pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800AEB8: .4byte gWirelessLinkDisplay4bpp _0800AEBC: .4byte gWirelessLinkDisplayBin _0800AEC0: .4byte gUnknown_8231EC4 _0800AEC4: .4byte gUnknown_8234610 _0800AEC8: .4byte gUnknown_841DEF0 _0800AECC: .4byte gUnknown_841DF05 thumb_func_end sub_800AE1C thumb_func_start sub_800AED0 sub_800AED0: @ 800AED0 push {lr} sub sp, 0xC movs r0, 0x1 movs r1, 0 bl FillWindowPixelBuffer movs r0, 0x2 movs r1, 0 bl FillWindowPixelBuffer ldr r0, _0800AF24 @ =gUnknown_8234610 str r0, [sp] movs r0, 0 str r0, [sp, 0x4] ldr r0, _0800AF28 @ =gUnknown_841DE9D str r0, [sp, 0x8] movs r0, 0x1 movs r1, 0x3 movs r2, 0x2 movs r3, 0 bl AddTextPrinterParameterized3 movs r0, 0x1 bl PutWindowTilemap movs r0, 0x2 bl PutWindowTilemap movs r0, 0x1 movs r1, 0 bl CopyWindowToVram movs r0, 0x2 movs r1, 0x3 bl CopyWindowToVram movs r0, 0 bl ShowBg add sp, 0xC pop {r0} bx r0 .align 2, 0 _0800AF24: .4byte gUnknown_8234610 _0800AF28: .4byte gUnknown_841DE9D thumb_func_end sub_800AED0 thumb_func_start sub_800AF2C sub_800AF2C: @ 800AF2C push {r4,lr} sub sp, 0xC ldr r0, _0800AF4C @ =gMain movs r1, 0x87 lsls r1, 3 adds r0, r1 ldrb r0, [r0] cmp r0, 0x3C beq _0800AF72 cmp r0, 0x3C bgt _0800AF50 cmp r0, 0 beq _0800AF5A cmp r0, 0x1E beq _0800AF72 b _0800AFC4 .align 2, 0 _0800AF4C: .4byte gMain _0800AF50: cmp r0, 0x5A beq _0800AF72 cmp r0, 0x82 beq _0800AF7A b _0800AFC4 _0800AF5A: ldr r0, _0800AF68 @ =sLinkErrorBuffer ldrb r0, [r0, 0x6] cmp r0, 0 beq _0800AF6C bl sub_800AE1C b _0800AFC4 .align 2, 0 _0800AF68: .4byte sLinkErrorBuffer _0800AF6C: bl sub_800AED0 b _0800AFC4 _0800AF72: movs r0, 0x16 bl PlaySE b _0800AFC4 _0800AF7A: ldr r0, _0800AF9C @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0x2 bne _0800AFA8 ldr r0, _0800AFA0 @ =gUnknown_8234610 str r0, [sp] movs r0, 0 str r0, [sp, 0x4] ldr r0, _0800AFA4 @ =gUnknown_841DF6B str r0, [sp, 0x8] movs r0, 0 movs r1, 0x3 movs r2, 0x2 movs r3, 0x14 bl AddTextPrinterParameterized3 b _0800AFC4 .align 2, 0 _0800AF9C: .4byte gWirelessCommType _0800AFA0: .4byte gUnknown_8234610 _0800AFA4: .4byte gUnknown_841DF6B _0800AFA8: cmp r0, 0x1 bne _0800AFC4 ldr r0, _0800AFFC @ =gUnknown_8234610 str r0, [sp] movs r0, 0 str r0, [sp, 0x4] ldr r0, _0800B000 @ =gUnknown_841DF4C str r0, [sp, 0x8] movs r0, 0 movs r1, 0x3 movs r2, 0x2 movs r3, 0x14 bl AddTextPrinterParameterized3 _0800AFC4: ldr r0, _0800B004 @ =gMain movs r2, 0x87 lsls r2, 3 adds r1, r0, r2 ldrb r1, [r1] cmp r1, 0xA0 bne _0800B03C ldr r4, _0800B008 @ =gWirelessCommType ldrb r2, [r4] cmp r2, 0x1 bne _0800B010 ldrh r0, [r0, 0x2E] ands r2, r0 cmp r2, 0 beq _0800B02E bl sub_812B484 movs r0, 0x15 bl PlaySE movs r0, 0 strb r0, [r4] ldr r1, _0800B00C @ =sLinkErrorBuffer movs r0, 0 strb r0, [r1, 0x6] bl sub_8079B7C b _0800B02E .align 2, 0 _0800AFFC: .4byte gUnknown_8234610 _0800B000: .4byte gUnknown_841DF4C _0800B004: .4byte gMain _0800B008: .4byte gWirelessCommType _0800B00C: .4byte sLinkErrorBuffer _0800B010: cmp r2, 0x2 bne _0800B02E ldrh r1, [r0, 0x2E] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0800B02E bl sub_812B484 bl rfu_REQ_stopMode bl rfu_waitREQComplete bl DoSoftReset _0800B02E: ldr r0, _0800B050 @ =gMain movs r2, 0x87 lsls r2, 3 adds r1, r0, r2 ldrb r1, [r1] cmp r1, 0xA0 beq _0800B048 _0800B03C: movs r2, 0x87 lsls r2, 3 adds r1, r0, r2 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] _0800B048: add sp, 0xC pop {r4} pop {r0} bx r0 .align 2, 0 _0800B050: .4byte gMain thumb_func_end sub_800AF2C thumb_func_start GetSioMultiSI GetSioMultiSI: @ 800B054 ldr r0, _0800B060 @ =0x04000128 ldrh r0, [r0] lsrs r0, 2 movs r1, 0x1 ands r0, r1 bx lr .align 2, 0 _0800B060: .4byte 0x04000128 thumb_func_end GetSioMultiSI thumb_func_start IsSioMultiMaster IsSioMultiMaster: @ 800B064 push {lr} movs r3, 0 ldr r2, _0800B088 @ =0x04000128 ldrh r1, [r2] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0800B080 ldrh r1, [r2] movs r0, 0x4 ands r0, r1 cmp r0, 0 bne _0800B080 movs r3, 0x1 _0800B080: adds r0, r3, 0 pop {r1} bx r1 .align 2, 0 _0800B088: .4byte 0x04000128 thumb_func_end IsSioMultiMaster thumb_func_start IsLinkConnectionEstablished IsLinkConnectionEstablished: @ 800B08C ldr r0, _0800B098 @ =gUnknown_3003F20 ldr r0, [r0] lsrs r0, 6 movs r1, 0x1 ands r0, r1 bx lr .align 2, 0 _0800B098: .4byte gUnknown_3003F20 thumb_func_end IsLinkConnectionEstablished thumb_func_start SetSuppressLinkErrorMessage SetSuppressLinkErrorMessage: @ 800B09C ldr r1, _0800B0A4 @ =gUnknown_3003F38 strb r0, [r1] bx lr .align 2, 0 _0800B0A4: .4byte gUnknown_3003F38 thumb_func_end SetSuppressLinkErrorMessage thumb_func_start HasLinkErrorOccurred HasLinkErrorOccurred: @ 800B0A8 ldr r0, _0800B0B0 @ =gUnknown_3003EAC ldrb r0, [r0] bx lr .align 2, 0 _0800B0B0: .4byte gUnknown_3003EAC thumb_func_end HasLinkErrorOccurred thumb_func_start sub_800B0B4 sub_800B0B4: @ 800B0B4 push {r4-r6,lr} bl sub_8009708 ldr r1, _0800B100 @ =gUnknown_3003E70 adds r2, r1, 0 adds r2, 0x10 ldr r0, _0800B104 @ =gLocalLinkPlayer ldm r0!, {r3-r5} stm r2!, {r3-r5} ldm r0!, {r3,r4,r6} stm r2!, {r3,r4,r6} ldr r0, [r0] str r0, [r2] ldr r3, _0800B108 @ =gUnknown_82345C0 adds r2, r1, 0 adds r0, r3, 0 ldm r0!, {r4-r6} stm r2!, {r4-r6} ldrh r4, [r0] strh r4, [r2] ldrb r0, [r0, 0x2] strb r0, [r2, 0x2] adds r0, r1, 0 adds r0, 0x2C ldm r3!, {r2,r5,r6} stm r0!, {r2,r5,r6} ldrh r2, [r3] strh r2, [r0] ldrb r2, [r3, 0x2] strb r2, [r0, 0x2] ldr r0, _0800B10C @ =gBlockSendBuffer movs r2, 0x3C bl memcpy pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800B100: .4byte gUnknown_3003E70 _0800B104: .4byte gLocalLinkPlayer _0800B108: .4byte gUnknown_82345C0 _0800B10C: .4byte gBlockSendBuffer thumb_func_end sub_800B0B4 thumb_func_start sub_800B110 sub_800B110: @ 800B110 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 lsls r2, r0, 8 ldr r1, _0800B168 @ =gBlockRecvBuffer adds r4, r2, r1 lsls r2, r0, 3 subs r2, r0 lsls r2, 2 ldr r0, _0800B16C @ =gLinkPlayers adds r2, r0 adds r1, r2, 0 adds r0, r4, 0 adds r0, 0x10 ldm r0!, {r3,r5,r6} stm r1!, {r3,r5,r6} ldm r0!, {r3,r5,r6} stm r1!, {r3,r5,r6} ldr r0, [r0] str r0, [r1] adds r0, r2, 0 bl sub_800B284 ldr r5, _0800B170 @ =gUnknown_82345C0 adds r0, r4, 0 adds r1, r5, 0 bl strcmp cmp r0, 0 bne _0800B15A adds r0, r4, 0 adds r0, 0x2C adds r1, r5, 0 bl strcmp cmp r0, 0 beq _0800B160 _0800B15A: ldr r0, _0800B174 @ =c2_800ACD4 bl SetMainCallback2 _0800B160: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800B168: .4byte gBlockRecvBuffer _0800B16C: .4byte gLinkPlayers _0800B170: .4byte gUnknown_82345C0 _0800B174: .4byte c2_800ACD4 thumb_func_end sub_800B110 thumb_func_start HandleLinkConnection HandleLinkConnection: @ 800B178 push {r4,r5,lr} ldr r0, _0800B1B0 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 bne _0800B1C8 ldr r0, _0800B1B4 @ =gUnknown_3003F84 ldr r1, _0800B1B8 @ =gUnknown_3003F50 ldr r2, _0800B1BC @ =gRecvCmds bl LinkMain1 ldr r4, _0800B1C0 @ =gUnknown_3003F20 str r0, [r4] ldr r0, _0800B1C4 @ =gMain + 0x2C bl LinkMain2 ldr r0, [r4] movs r1, 0x80 lsls r1, 1 ands r0, r1 cmp r0, 0 beq _0800B1EC bl sub_8058318 cmp r0, 0x1 bne _0800B1EC _0800B1AA: movs r0, 0x1 b _0800B1EE .align 2, 0 _0800B1B0: .4byte gWirelessCommType _0800B1B4: .4byte gUnknown_3003F84 _0800B1B8: .4byte gUnknown_3003F50 _0800B1BC: .4byte gRecvCmds _0800B1C0: .4byte gUnknown_3003F20 _0800B1C4: .4byte gMain + 0x2C _0800B1C8: bl sub_80FAE94 adds r4, r0, 0 bl sub_80FAEF0 adds r5, r0, 0 bl sub_8058318 cmp r0, 0x1 bne _0800B1EC cmp r4, 0x1 beq _0800B1AA bl sub_80F90DC cmp r0, 0 bne _0800B1AA cmp r5, 0 bne _0800B1AA _0800B1EC: movs r0, 0 _0800B1EE: pop {r4,r5} pop {r1} bx r1 thumb_func_end HandleLinkConnection thumb_func_start sub_800B1F4 sub_800B1F4: @ 800B1F4 push {lr} ldr r0, _0800B208 @ =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _0800B204 ldr r1, _0800B20C @ =gWirelessCommType movs r0, 0x1 strb r0, [r1] _0800B204: pop {r0} bx r0 .align 2, 0 _0800B208: .4byte gReceivedRemoteLinkPlayers _0800B20C: .4byte gWirelessCommType thumb_func_end sub_800B1F4 thumb_func_start sub_800B210 sub_800B210: @ 800B210 push {lr} ldr r0, _0800B224 @ =gReceivedRemoteLinkPlayers ldrb r1, [r0] cmp r1, 0 bne _0800B21E ldr r0, _0800B228 @ =gWirelessCommType strb r1, [r0] _0800B21E: pop {r0} bx r0 .align 2, 0 _0800B224: .4byte gReceivedRemoteLinkPlayers _0800B228: .4byte gWirelessCommType thumb_func_end sub_800B210 thumb_func_start sub_800B22C sub_800B22C: @ 800B22C push {lr} ldr r0, _0800B240 @ =gReceivedRemoteLinkPlayers ldrb r1, [r0] cmp r1, 0 bne _0800B23A ldr r0, _0800B244 @ =gWirelessCommType strb r1, [r0] _0800B23A: pop {r0} bx r0 .align 2, 0 _0800B240: .4byte gReceivedRemoteLinkPlayers _0800B244: .4byte gWirelessCommType thumb_func_end sub_800B22C thumb_func_start sub_800B248 sub_800B248: @ 800B248 push {lr} ldr r0, _0800B25C @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 bne _0800B268 ldr r0, _0800B260 @ =gUnknown_3003FB0 ldr r1, _0800B264 @ =0x00000fbd adds r0, r1 ldrb r0, [r0] b _0800B26C .align 2, 0 _0800B25C: .4byte gWirelessCommType _0800B260: .4byte gUnknown_3003FB0 _0800B264: .4byte 0x00000fbd _0800B268: bl sub_80FC460 _0800B26C: pop {r1} bx r1 thumb_func_end sub_800B248 thumb_func_start sub_800B270 sub_800B270: @ 800B270 push {lr} bl sub_800B248 cmp r0, 0x2 bhi _0800B27E movs r0, 0 b _0800B280 _0800B27E: movs r0, 0x1 _0800B280: pop {r1} bx r1 thumb_func_end sub_800B270 thumb_func_start sub_800B284 sub_800B284: @ 800B284 push {lr} ldrb r1, [r0, 0x10] strb r1, [r0, 0x12] adds r2, r0, 0 adds r2, 0x8 ldrb r1, [r0, 0x1A] adds r0, r2, 0 bl ConvertInternationalString pop {r0} bx r0 thumb_func_end sub_800B284 thumb_func_start sub_800B29C sub_800B29C: @ 800B29C push {lr} sub sp, 0x4 movs r0, 0xC0 bl DisableInterrupts ldr r1, _0800B2DC @ =0x04000128 movs r2, 0x80 lsls r2, 6 adds r0, r2, 0 strh r0, [r1] ldr r0, _0800B2E0 @ =0x0400010e movs r2, 0 strh r2, [r0] adds r1, 0xDA movs r0, 0xC0 strh r0, [r1] ldr r0, _0800B2E4 @ =0x0400012a strh r2, [r0] ldr r2, _0800B2E8 @ =0x04000120 movs r0, 0 movs r1, 0 str r0, [r2] str r1, [r2, 0x4] str r0, [sp] ldr r1, _0800B2EC @ =gUnknown_3003FB0 ldr r2, _0800B2F0 @ =0x050003f0 mov r0, sp bl CpuSet add sp, 0x4 pop {r0} bx r0 .align 2, 0 _0800B2DC: .4byte 0x04000128 _0800B2E0: .4byte 0x0400010e _0800B2E4: .4byte 0x0400012a _0800B2E8: .4byte 0x04000120 _0800B2EC: .4byte gUnknown_3003FB0 _0800B2F0: .4byte 0x050003f0 thumb_func_end sub_800B29C thumb_func_start sub_800B2F4 sub_800B2F4: @ 800B2F4 push {r4,r5,lr} sub sp, 0x4 movs r0, 0xC0 bl DisableInterrupts ldr r0, _0800B354 @ =0x04000134 movs r4, 0 strh r4, [r0] ldr r2, _0800B358 @ =0x04000128 movs r1, 0x80 lsls r1, 6 adds r0, r1, 0 strh r0, [r2] ldrh r0, [r2] ldr r3, _0800B35C @ =0x00004003 adds r1, r3, 0 orrs r0, r1 strh r0, [r2] movs r0, 0x80 bl EnableInterrupts ldr r0, _0800B360 @ =0x0400012a strh r4, [r0] movs r5, 0 str r5, [sp] ldr r1, _0800B364 @ =gUnknown_3003FB0 ldr r2, _0800B368 @ =0x050003f0 mov r0, sp bl CpuSet ldr r0, _0800B36C @ =gUnknown_3000E64 strb r4, [r0] ldr r0, _0800B370 @ =gUnknown_3000E66 strh r5, [r0] ldr r0, _0800B374 @ =gUnknown_3000E68 strh r5, [r0] ldr r0, _0800B378 @ =gUnknown_3000E6A strb r4, [r0] ldr r0, _0800B37C @ =gUnknown_3000E6B strb r4, [r0] ldr r0, _0800B380 @ =gUnknown_3003FA0 strb r4, [r0] ldr r0, _0800B384 @ =gUnknown_3004F70 strb r4, [r0] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0800B354: .4byte 0x04000134 _0800B358: .4byte 0x04000128 _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 _0800B380: .4byte gUnknown_3003FA0 _0800B384: .4byte gUnknown_3004F70 thumb_func_end sub_800B2F4 thumb_func_start sub_800B388 sub_800B388: @ 800B388 push {lr} bl sub_800B2F4 bl sub_800B29C pop {r0} bx r0 thumb_func_end sub_800B388 thumb_func_start LinkMain1 LinkMain1: @ 800B398 push {r4-r7,lr} adds r4, r0, 0 adds r5, r1, 0 adds r6, r2, 0 ldr r0, _0800B3B4 @ =gUnknown_3003FB0 ldrb r0, [r0, 0x1] cmp r0, 0x4 bhi _0800B44A lsls r0, 2 ldr r1, _0800B3B8 @ =_0800B3BC adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0800B3B4: .4byte gUnknown_3003FB0 _0800B3B8: .4byte _0800B3BC .align 2, 0 _0800B3BC: .4byte _0800B3D0 .4byte _0800B3E0 .4byte _0800B3F8 .4byte _0800B434 .4byte _0800B43E _0800B3D0: bl sub_800B29C ldr r1, _0800B3DC @ =gUnknown_3003FB0 movs r0, 0x1 strb r0, [r1, 0x1] b _0800B44A .align 2, 0 _0800B3DC: .4byte gUnknown_3003FB0 _0800B3E0: ldrb r0, [r4] cmp r0, 0x1 bne _0800B44A bl sub_800B2F4 ldr r1, _0800B3F4 @ =gUnknown_3003FB0 movs r0, 0x2 strb r0, [r1, 0x1] b _0800B44A .align 2, 0 _0800B3F4: .4byte gUnknown_3003FB0 _0800B3F8: ldrb r1, [r4] cmp r1, 0x1 beq _0800B408 cmp r1, 0x2 beq _0800B420 bl CheckMasterOrSlave b _0800B44A _0800B408: ldr r2, _0800B41C @ =gUnknown_3003FB0 ldrb r0, [r2] cmp r0, 0x8 bne _0800B44A ldrb r0, [r2, 0x3] cmp r0, 0x1 bls _0800B44A strb r1, [r2, 0xE] b _0800B44A .align 2, 0 _0800B41C: .4byte gUnknown_3003FB0 _0800B420: ldr r0, _0800B42C @ =gUnknown_3003FB0 movs r1, 0 strb r1, [r0, 0x1] ldr r0, _0800B430 @ =0x0400012a strh r1, [r0] b _0800B44A .align 2, 0 _0800B42C: .4byte gUnknown_3003FB0 _0800B430: .4byte 0x0400012a _0800B434: bl InitTimer ldr r1, _0800B484 @ =gUnknown_3003FB0 movs r0, 0x4 strb r0, [r1, 0x1] _0800B43E: adds r0, r5, 0 bl sub_800B520 adds r0, r6, 0 bl sub_800B608 _0800B44A: movs r0, 0 strb r0, [r4] ldr r1, _0800B484 @ =gUnknown_3003FB0 ldrb r2, [r1, 0x2] ldrb r0, [r1, 0x3] lsls r0, 2 orrs r2, r0 ldrb r0, [r1] cmp r0, 0x8 bne _0800B462 movs r0, 0x20 orrs r2, r0 _0800B462: ldrb r0, [r1, 0xC] lsls r3, r0, 8 ldrb r0, [r1, 0xF] lsls r4, r0, 9 ldrb r0, [r1, 0x10] lsls r5, r0, 12 ldrb r0, [r1, 0x11] lsls r6, r0, 13 ldrb r0, [r1, 0x12] lsls r7, r0, 14 ldrb r0, [r1, 0x1] cmp r0, 0x4 bne _0800B488 movs r0, 0x40 orrs r0, r3 orrs r0, r2 b _0800B48C .align 2, 0 _0800B484: .4byte gUnknown_3003FB0 _0800B488: adds r0, r2, 0 orrs r0, r3 _0800B48C: orrs r0, r4 orrs r0, r5 orrs r0, r6 orrs r0, r7 adds r2, r0, 0 ldrb r3, [r1, 0x13] cmp r3, 0x1 bne _0800B4A2 movs r0, 0x80 lsls r0, 9 orrs r2, r0 _0800B4A2: ldrb r0, [r1, 0x2] cmp r0, 0x3 bls _0800B4AE movs r0, 0x80 lsls r0, 10 orrs r2, r0 _0800B4AE: adds r1, r2, 0 cmp r3, 0x2 bne _0800B4BA movs r0, 0x80 lsls r0, 11 orrs r1, r0 _0800B4BA: adds r0, r1, 0 pop {r4-r7} pop {r1} bx r1 thumb_func_end LinkMain1 thumb_func_start CheckMasterOrSlave CheckMasterOrSlave: @ 800B4C4 push {lr} ldr r0, _0800B4E0 @ =0x04000128 ldr r1, [r0] movs r0, 0xC ands r1, r0 ldr r2, _0800B4E4 @ =gUnknown_3003FB0 cmp r1, 0x8 bne _0800B4E8 ldrb r0, [r2, 0x2] cmp r0, 0 bne _0800B4E8 strb r1, [r2] b _0800B4EC .align 2, 0 _0800B4E0: .4byte 0x04000128 _0800B4E4: .4byte gUnknown_3003FB0 _0800B4E8: movs r0, 0 strb r0, [r2] _0800B4EC: pop {r0} bx r0 thumb_func_end CheckMasterOrSlave thumb_func_start InitTimer InitTimer: @ 800B4F0 push {lr} ldr r0, _0800B514 @ =gUnknown_3003FB0 ldrb r0, [r0] cmp r0, 0 beq _0800B50E ldr r1, _0800B518 @ =0x0400010c ldr r2, _0800B51C @ =0x0000ff3b adds r0, r2, 0 strh r0, [r1] adds r1, 0x2 movs r0, 0x41 strh r0, [r1] movs r0, 0x40 bl EnableInterrupts _0800B50E: pop {r0} bx r0 .align 2, 0 _0800B514: .4byte gUnknown_3003FB0 _0800B518: .4byte 0x0400010c _0800B51C: .4byte 0x0000ff3b thumb_func_end InitTimer thumb_func_start sub_800B520 sub_800B520: @ 800B520 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} adds r3, r0, 0 ldr r2, _0800B598 @ =gUnknown_3004F74 ldr r1, _0800B59C @ =0x04000208 ldrh r0, [r1] strh r0, [r2] movs r0, 0 strh r0, [r1] ldr r1, _0800B5A0 @ =gUnknown_3003FB0 ldr r4, _0800B5A4 @ =0x00000339 adds r0, r1, r4 ldrb r4, [r0] adds r6, r1, 0 cmp r4, 0x31 bhi _0800B5B0 movs r1, 0xCE lsls r1, 2 adds r0, r6, r1 ldrb r0, [r0] adds r0, r4, r0 lsls r0, 24 lsrs r0, 24 cmp r0, 0x31 bls _0800B55E subs r0, 0x32 lsls r0, 24 lsrs r0, 24 _0800B55E: movs r2, 0 ldr r4, _0800B5A8 @ =gUnknown_3000E66 mov r9, r4 ldr r1, _0800B5AC @ =gUnknown_3003FA0 mov r10, r1 lsls r5, r0, 1 movs r0, 0x18 adds r0, r6 mov r8, r0 mov r12, r2 movs r7, 0x64 _0800B574: ldrh r0, [r4] ldrh r1, [r3] orrs r0, r1 strh r0, [r4] adds r0, r2, 0 muls r0, r7 adds r0, r5, r0 add r0, r8 strh r1, [r0] mov r1, r12 strh r1, [r3] adds r3, 0x2 adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x7 bls _0800B574 b _0800B5BC .align 2, 0 _0800B598: .4byte gUnknown_3004F74 _0800B59C: .4byte 0x04000208 _0800B5A0: .4byte gUnknown_3003FB0 _0800B5A4: .4byte 0x00000339 _0800B5A8: .4byte gUnknown_3000E66 _0800B5AC: .4byte gUnknown_3003FA0 _0800B5B0: movs r0, 0x1 strb r0, [r6, 0x12] ldr r2, _0800B5F4 @ =gUnknown_3000E66 mov r9, r2 ldr r4, _0800B5F8 @ =gUnknown_3003FA0 mov r10, r4 _0800B5BC: mov r1, r9 ldrh r0, [r1] cmp r0, 0 beq _0800B5D4 ldr r2, _0800B5FC @ =0x00000339 adds r0, r6, r2 ldrb r1, [r0] adds r1, 0x1 movs r2, 0 strb r1, [r0] mov r4, r9 strh r2, [r4] _0800B5D4: ldr r1, _0800B600 @ =0x04000208 ldr r2, _0800B604 @ =gUnknown_3004F74 ldrh r0, [r2] strh r0, [r1] ldr r4, _0800B5FC @ =0x00000339 adds r0, r6, r4 ldrb r0, [r0] mov r1, r10 strb r0, [r1] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800B5F4: .4byte gUnknown_3000E66 _0800B5F8: .4byte gUnknown_3003FA0 _0800B5FC: .4byte 0x00000339 _0800B600: .4byte 0x04000208 _0800B604: .4byte gUnknown_3004F74 thumb_func_end sub_800B520 thumb_func_start sub_800B608 sub_800B608: @ 800B608 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r9, r0 ldr r2, _0800B664 @ =gUnknown_3004F74 ldr r1, _0800B668 @ =0x04000208 ldrh r0, [r1] strh r0, [r2] movs r0, 0 strh r0, [r1] ldr r1, _0800B66C @ =gUnknown_3003FB0 ldr r3, _0800B670 @ =0x00000fbd adds r0, r1, r3 ldrb r0, [r0] mov r12, r1 cmp r0, 0 bne _0800B674 movs r3, 0 ldrb r0, [r1, 0x3] cmp r3, r0 bcs _0800B65A movs r5, 0 adds r6, r0, 0 _0800B63A: movs r2, 0 lsls r1, r3, 4 adds r4, r3, 0x1 add r1, r9 _0800B642: lsls r0, r2, 1 adds r0, r1 strh r5, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x7 bls _0800B642 lsls r0, r4, 24 lsrs r3, r0, 24 cmp r3, r6 bcc _0800B63A _0800B65A: movs r0, 0x1 mov r7, r12 strb r0, [r7, 0xC] b _0800B6F0 .align 2, 0 _0800B664: .4byte gUnknown_3004F74 _0800B668: .4byte 0x04000208 _0800B66C: .4byte gUnknown_3003FB0 _0800B670: .4byte 0x00000fbd _0800B674: movs r3, 0 mov r0, r12 ldrb r1, [r0, 0x3] cmp r3, r1 bcs _0800B6CA ldr r0, _0800B708 @ =0x00000fbc add r0, r12 ldrb r0, [r0] lsls r6, r0, 1 movs r2, 0xCF lsls r2, 2 add r2, r12 mov r8, r2 mov r10, r1 _0800B690: movs r2, 0 lsls r1, r3, 4 adds r4, r3, 0x1 lsls r0, r3, 1 mov r7, r9 adds r5, r1, r7 adds r0, r3 lsls r0, 3 adds r0, r3 lsls r3, r0, 5 _0800B6A4: lsls r1, r2, 1 adds r1, r5 movs r7, 0x64 adds r0, r2, 0 muls r0, r7 adds r0, r6, r0 adds r0, r3 add r0, r8 ldrh r0, [r0] strh r0, [r1] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x7 bls _0800B6A4 lsls r0, r4, 24 lsrs r3, r0, 24 cmp r3, r10 bcc _0800B690 _0800B6CA: mov r2, r12 ldr r0, _0800B70C @ =0x00000fbd adds r1, r2, r0 ldrb r0, [r1] subs r0, 0x1 movs r3, 0 strb r0, [r1] ldr r1, _0800B708 @ =0x00000fbc adds r2, r1 ldrb r0, [r2] adds r0, 0x1 strb r0, [r2] lsls r0, 24 lsrs r0, 24 cmp r0, 0x31 bls _0800B6EC strb r3, [r2] _0800B6EC: mov r2, r12 strb r3, [r2, 0xC] _0800B6F0: ldr r1, _0800B710 @ =0x04000208 ldr r3, _0800B714 @ =gUnknown_3004F74 ldrh r0, [r3] strh r0, [r1] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800B708: .4byte 0x00000fbc _0800B70C: .4byte 0x00000fbd _0800B710: .4byte 0x04000208 _0800B714: .4byte gUnknown_3004F74 thumb_func_end sub_800B608 thumb_func_start LinkVSync LinkVSync: @ 800B718 push {r4,lr} ldr r3, _0800B740 @ =gUnknown_3003FB0 ldrb r4, [r3] cmp r4, 0 beq _0800B754 ldrb r0, [r3, 0x1] cmp r0, 0x2 beq _0800B74E cmp r0, 0x4 bne _0800B77E movs r0, 0xD ldrsb r0, [r3, r0] cmp r0, 0x8 bgt _0800B744 ldrb r0, [r3, 0x10] cmp r0, 0x1 beq _0800B74E movs r0, 0x1 strb r0, [r3, 0x13] b _0800B77E .align 2, 0 _0800B740: .4byte gUnknown_3003FB0 _0800B744: ldrb r0, [r3, 0x13] cmp r0, 0x1 beq _0800B77E movs r0, 0 strb r0, [r3, 0xD] _0800B74E: bl sub_800B820 b _0800B77E _0800B754: ldrb r2, [r3, 0x1] cmp r2, 0x4 beq _0800B75E cmp r2, 0x2 bne _0800B77E _0800B75E: ldr r1, _0800B784 @ =gUnknown_3000E64 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, 0xA bls _0800B77E cmp r2, 0x4 bne _0800B776 movs r0, 0x2 strb r0, [r3, 0x13] _0800B776: cmp r2, 0x2 bne _0800B77E strb r4, [r3, 0x3] strb r4, [r3, 0xF] _0800B77E: pop {r4} pop {r0} bx r0 .align 2, 0 _0800B784: .4byte gUnknown_3000E64 thumb_func_end LinkVSync thumb_func_start Timer3Intr Timer3Intr: @ 800B788 push {lr} bl StopTimer bl sub_800B820 pop {r0} bx r0 thumb_func_end Timer3Intr thumb_func_start SerialCB SerialCB: @ 800B798 push {r4,lr} ldr r4, _0800B7C4 @ =gUnknown_3003FB0 ldr r0, _0800B7C8 @ =0x04000128 ldr r1, [r0] lsls r0, r1, 26 lsrs r0, 30 strb r0, [r4, 0x2] ldrb r0, [r4, 0x1] cmp r0, 0x2 beq _0800B7CC cmp r0, 0x4 bne _0800B7EA lsls r0, r1, 25 lsrs r0, 31 strb r0, [r4, 0x10] bl DoRecv bl DoSend bl SendRecvDone b _0800B7EA .align 2, 0 _0800B7C4: .4byte gUnknown_3003FB0 _0800B7C8: .4byte 0x04000128 _0800B7CC: bl DoHandshake lsls r0, 24 cmp r0, 0 beq _0800B7EA ldrb r0, [r4] cmp r0, 0 beq _0800B7E6 movs r0, 0x3 strb r0, [r4, 0x1] movs r0, 0x8 strb r0, [r4, 0xD] b _0800B7EA _0800B7E6: movs r0, 0x4 strb r0, [r4, 0x1] _0800B7EA: ldr r3, _0800B810 @ =gUnknown_3003FB0 ldrb r0, [r3, 0xD] adds r0, 0x1 movs r2, 0 strb r0, [r3, 0xD] ldr r1, _0800B814 @ =gUnknown_3000E64 strb r2, [r1] lsls r0, 24 asrs r0, 24 cmp r0, 0x8 bne _0800B80A ldr r0, _0800B818 @ =gUnknown_3004F70 ldr r2, _0800B81C @ =0x00000fbd adds r1, r3, r2 ldrb r1, [r1] strb r1, [r0] _0800B80A: pop {r4} pop {r0} bx r0 .align 2, 0 _0800B810: .4byte gUnknown_3003FB0 _0800B814: .4byte gUnknown_3000E64 _0800B818: .4byte gUnknown_3004F70 _0800B81C: .4byte 0x00000fbd thumb_func_end SerialCB thumb_func_start sub_800B820 sub_800B820: @ 800B820 ldr r0, _0800B82C @ =0x04000128 ldrh r1, [r0] movs r2, 0x80 orrs r1, r2 strh r1, [r0] bx lr .align 2, 0 _0800B82C: .4byte 0x04000128 thumb_func_end sub_800B820 thumb_func_start DoHandshake DoHandshake: @ 800B830 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} movs r5, 0 ldr r6, _0800B84C @ =0x0000ffff ldr r0, _0800B850 @ =gUnknown_3003FB0 ldrb r1, [r0, 0xE] adds r7, r0, 0 cmp r1, 0x1 bne _0800B85C ldr r1, _0800B854 @ =0x0400012a ldr r2, _0800B858 @ =0x00008fff b _0800B860 .align 2, 0 _0800B84C: .4byte 0x0000ffff _0800B850: .4byte gUnknown_3003FB0 _0800B854: .4byte 0x0400012a _0800B858: .4byte 0x00008fff _0800B85C: ldr r1, _0800B8B4 @ =0x0400012a ldr r2, _0800B8B8 @ =0x0000b9a0 _0800B860: adds r0, r2, 0 strh r0, [r1] ldr r2, _0800B8BC @ =gSioMlt_Recv ldr r3, _0800B8C0 @ =0x04000120 ldr r0, [r3] ldr r1, [r3, 0x4] str r0, [r2] str r1, [r2, 0x4] movs r0, 0 movs r1, 0 str r0, [r3] str r1, [r3, 0x4] strb r0, [r2, 0xA] movs r4, 0 ldr r0, _0800B8C4 @ =gUnknown_3000E6B mov r9, r0 mov r8, r2 ldr r2, _0800B8C8 @ =0x00008fff ldr r1, _0800B8CC @ =0x0000ffff mov r12, r1 _0800B888: lsls r0, r4, 1 add r0, r8 ldrh r3, [r0] movs r0, 0x4 negs r0, r0 ands r0, r3 ldr r1, _0800B8B8 @ =0x0000b9a0 cmp r0, r1 beq _0800B8A0 adds r0, r3, 0 cmp r0, r2 bne _0800B8D0 _0800B8A0: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 adds r0, r3, 0 cmp r6, r0 bls _0800B8D8 cmp r0, 0 beq _0800B8D8 adds r6, r3, 0 b _0800B8D8 .align 2, 0 _0800B8B4: .4byte 0x0400012a _0800B8B8: .4byte 0x0000b9a0 _0800B8BC: .4byte gSioMlt_Recv _0800B8C0: .4byte 0x04000120 _0800B8C4: .4byte gUnknown_3000E6B _0800B8C8: .4byte 0x00008fff _0800B8CC: .4byte 0x0000ffff _0800B8D0: cmp r0, r12 beq _0800B8E2 movs r5, 0 b _0800B8E2 _0800B8D8: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x3 bls _0800B888 _0800B8E2: strb r5, [r7, 0x3] adds r0, r5, 0 cmp r0, 0x1 bls _0800B912 mov r2, r9 ldrb r2, [r2] cmp r0, r2 bne _0800B904 ldrh r1, [r7, 0x4] ldr r0, _0800B900 @ =0x00008fff cmp r1, r0 bne _0800B904 movs r0, 0x1 b _0800B91E .align 2, 0 _0800B900: .4byte 0x00008fff _0800B904: ldrb r0, [r7, 0x3] cmp r0, 0x1 bls _0800B912 movs r0, 0x3 ands r6, r0 adds r0, r6, 0x1 b _0800B914 _0800B912: movs r0, 0 _0800B914: strb r0, [r7, 0xF] ldrb r0, [r7, 0x3] mov r1, r9 strb r0, [r1] movs r0, 0 _0800B91E: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 thumb_func_end DoHandshake thumb_func_start DoRecv DoRecv: @ 800B92C push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 ldr r0, _0800B984 @ =0x04000120 ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [sp] str r1, [sp, 0x4] ldr r0, _0800B988 @ =gUnknown_3003FB0 ldrb r1, [r0, 0x16] adds r6, r0, 0 cmp r1, 0 bne _0800B990 movs r4, 0 ldr r7, _0800B98C @ =gUnknown_3000E6A ldrb r0, [r6, 0x3] cmp r4, r0 bcs _0800B97A adds r5, r6, 0 ldrh r1, [r6, 0x14] adds r3, r7, 0 adds r2, r6, 0 _0800B95A: lsls r0, r4, 1 add r0, sp ldrh r0, [r0] cmp r1, r0 beq _0800B96E ldrb r0, [r3] cmp r0, 0 beq _0800B96E movs r0, 0x1 strb r0, [r5, 0x11] _0800B96E: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r2, 0x3] cmp r4, r0 bcc _0800B95A _0800B97A: movs r0, 0 strh r0, [r6, 0x14] movs r0, 0x1 strb r0, [r7] b _0800BA30 .align 2, 0 _0800B984: .4byte 0x04000120 _0800B988: .4byte gUnknown_3003FB0 _0800B98C: .4byte gUnknown_3000E6A _0800B990: ldr r2, _0800BA00 @ =0x00000fbc adds r1, r6, r2 adds r2, 0x1 adds r0, r6, r2 ldrb r2, [r0] ldrb r1, [r1] adds r0, r2, r1 lsls r0, 24 lsrs r0, 24 cmp r0, 0x31 bls _0800B9AC subs r0, 0x32 lsls r0, 24 lsrs r0, 24 _0800B9AC: cmp r2, 0x31 bhi _0800BA08 movs r4, 0 ldrb r1, [r6, 0x3] cmp r4, r1 bcs _0800BA0C adds r5, r6, 0 ldr r7, _0800BA04 @ =gUnknown_3000E68 lsls r0, 1 mov r12, r0 movs r2, 0xCF lsls r2, 2 adds r2, r6 mov r8, r2 _0800B9C8: lsls r1, r4, 1 mov r2, sp adds r0, r2, r1 ldrh r3, [r0] ldrh r2, [r5, 0x14] adds r0, r3, r2 strh r0, [r5, 0x14] ldrh r0, [r7] orrs r0, r3 strh r0, [r7] ldrb r2, [r5, 0x17] movs r0, 0x64 muls r0, r2 add r0, r12 adds r1, r4 lsls r1, 3 adds r1, r4 lsls r1, 5 adds r0, r1 add r0, r8 strh r3, [r0] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 ldrb r0, [r5, 0x3] cmp r4, r0 bcc _0800B9C8 b _0800BA0C .align 2, 0 _0800BA00: .4byte 0x00000fbc _0800BA04: .4byte gUnknown_3000E68 _0800BA08: movs r0, 0x2 strb r0, [r6, 0x12] _0800BA0C: ldrb r0, [r6, 0x17] adds r0, 0x1 strb r0, [r6, 0x17] lsls r0, 24 lsrs r0, 24 cmp r0, 0x8 bne _0800BA30 ldr r2, _0800BA3C @ =gUnknown_3000E68 ldrh r0, [r2] cmp r0, 0 beq _0800BA30 ldr r1, _0800BA40 @ =0x00000fbd adds r0, r6, r1 ldrb r1, [r0] adds r1, 0x1 strb r1, [r0] movs r0, 0 strh r0, [r2] _0800BA30: add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800BA3C: .4byte gUnknown_3000E68 _0800BA40: .4byte 0x00000fbd thumb_func_end DoRecv thumb_func_start DoSend DoSend: @ 800BA44 push {r4,lr} ldr r0, _0800BA80 @ =gUnknown_3003FB0 ldrb r1, [r0, 0x16] adds r4, r0, 0 cmp r1, 0x8 bne _0800BA96 ldr r1, _0800BA84 @ =0x0400012a ldrh r0, [r4, 0x14] strh r0, [r1] ldr r1, _0800BA88 @ =gUnknown_3000E65 ldrb r2, [r1] cmp r2, 0 bne _0800BA90 ldr r0, _0800BA8C @ =0x00000339 adds r1, r4, r0 ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] movs r0, 0xCE lsls r0, 2 adds r1, r4, r0 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, 0x31 bls _0800BAEC strb r2, [r1] b _0800BAEC .align 2, 0 _0800BA80: .4byte gUnknown_3003FB0 _0800BA84: .4byte 0x0400012a _0800BA88: .4byte gUnknown_3000E65 _0800BA8C: .4byte 0x00000339 _0800BA90: movs r0, 0 strb r0, [r1] b _0800BAEC _0800BA96: ldr r1, _0800BABC @ =gUnknown_3000E65 ldrb r0, [r1] cmp r0, 0 bne _0800BAB2 ldr r2, _0800BAC0 @ =0x00000339 adds r0, r4, r2 ldrb r0, [r0] cmp r0, 0 bne _0800BAAC movs r0, 0x1 strb r0, [r1] _0800BAAC: ldrb r0, [r1] cmp r0, 0 beq _0800BAC8 _0800BAB2: ldr r1, _0800BAC4 @ =0x0400012a movs r0, 0 strh r0, [r1] b _0800BAE6 .align 2, 0 _0800BABC: .4byte gUnknown_3000E65 _0800BAC0: .4byte 0x00000339 _0800BAC4: .4byte 0x0400012a _0800BAC8: ldr r3, _0800BAF4 @ =0x0400012a movs r1, 0xCE lsls r1, 2 adds r0, r4, r1 ldrb r0, [r0] lsls r0, 1 ldrb r2, [r4, 0x16] movs r1, 0x64 muls r1, r2 adds r0, r1 adds r1, r4, 0 adds r1, 0x18 adds r0, r1 ldrh r0, [r0] strh r0, [r3] _0800BAE6: ldrb r0, [r4, 0x16] adds r0, 0x1 strb r0, [r4, 0x16] _0800BAEC: pop {r4} pop {r0} bx r0 .align 2, 0 _0800BAF4: .4byte 0x0400012a thumb_func_end DoSend thumb_func_start StopTimer StopTimer: @ 800BAF8 push {lr} ldr r0, _0800BB18 @ =gUnknown_3003FB0 ldrb r0, [r0] cmp r0, 0 beq _0800BB14 ldr r2, _0800BB1C @ =0x0400010e ldrh r1, [r2] ldr r0, _0800BB20 @ =0x0000ff7f ands r0, r1 strh r0, [r2] ldr r1, _0800BB24 @ =0x0400010c ldr r2, _0800BB28 @ =0x0000ff3b adds r0, r2, 0 strh r0, [r1] _0800BB14: pop {r0} bx r0 .align 2, 0 _0800BB18: .4byte gUnknown_3003FB0 _0800BB1C: .4byte 0x0400010e _0800BB20: .4byte 0x0000ff7f _0800BB24: .4byte 0x0400010c _0800BB28: .4byte 0x0000ff3b thumb_func_end StopTimer thumb_func_start SendRecvDone SendRecvDone: @ 800BB2C push {lr} ldr r1, _0800BB40 @ =gUnknown_3003FB0 ldrb r0, [r1, 0x17] cmp r0, 0x8 bne _0800BB44 movs r0, 0 strb r0, [r1, 0x16] strb r0, [r1, 0x17] b _0800BB54 .align 2, 0 _0800BB40: .4byte gUnknown_3003FB0 _0800BB44: ldrb r0, [r1] cmp r0, 0 beq _0800BB54 ldr r0, _0800BB58 @ =0x0400010e ldrh r1, [r0] movs r2, 0x80 orrs r1, r2 strh r1, [r0] _0800BB54: pop {r0} bx r0 .align 2, 0 _0800BB58: .4byte 0x0400010e thumb_func_end SendRecvDone thumb_func_start ResetSendBuffer ResetSendBuffer: @ 800BB5C push {r4-r6,lr} ldr r1, _0800BBA4 @ =gUnknown_3003FB0 ldr r2, _0800BBA8 @ =0x00000339 adds r0, r1, r2 movs r2, 0 strb r2, [r0] movs r3, 0xCE lsls r3, 2 adds r0, r1, r3 strb r2, [r0] movs r0, 0 movs r6, 0x64 adds r5, r1, 0 adds r5, 0x18 ldr r4, _0800BBAC @ =0x0000efff _0800BB7A: movs r2, 0 adds r1, r0, 0x1 adds r3, r0, 0 muls r3, r6 _0800BB82: lsls r0, r2, 1 adds r0, r3 adds r0, r5 strh r4, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x31 bls _0800BB82 lsls r0, r1, 24 lsrs r0, 24 cmp r0, 0x7 bls _0800BB7A pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0800BBA4: .4byte gUnknown_3003FB0 _0800BBA8: .4byte 0x00000339 _0800BBAC: .4byte 0x0000efff thumb_func_end ResetSendBuffer thumb_func_start ResetRecvBuffer ResetRecvBuffer: @ 800BBB0 push {r4-r7,lr} ldr r1, _0800BC10 @ =gUnknown_3003FB0 ldr r2, _0800BC14 @ =0x00000fbd adds r0, r1, r2 movs r2, 0 strb r2, [r0] ldr r3, _0800BC18 @ =0x00000fbc adds r0, r1, r3 strb r2, [r0] movs r0, 0x64 mov r12, r0 movs r3, 0xCF lsls r3, 2 adds r7, r1, r3 ldr r6, _0800BC1C @ =0x0000efff _0800BBCE: movs r3, 0 lsls r0, r2, 1 adds r5, r2, 0x1 adds r0, r2 lsls r0, 3 adds r0, r2 lsls r4, r0, 5 _0800BBDC: movs r2, 0 adds r1, r3, 0x1 mov r0, r12 muls r0, r3 adds r3, r0, 0 _0800BBE6: lsls r0, r2, 1 adds r0, r3 adds r0, r4 adds r0, r7 strh r6, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x31 bls _0800BBE6 lsls r0, r1, 24 lsrs r3, r0, 24 cmp r3, 0x7 bls _0800BBDC lsls r0, r5, 24 lsrs r2, r0, 24 cmp r2, 0x3 bls _0800BBCE pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0800BC10: .4byte gUnknown_3003FB0 _0800BC14: .4byte 0x00000fbd _0800BC18: .4byte 0x00000fbc _0800BC1C: .4byte 0x0000efff thumb_func_end ResetRecvBuffer .align 2, 0 @ Don't pad with nop.