diff options
32 files changed, 7589 insertions, 15847 deletions
diff --git a/asm/berry_crush.s b/asm/berry_crush.s index 27d31829d..6502fc916 100644 --- a/asm/berry_crush.s +++ b/asm/berry_crush.s @@ -78,7 +78,7 @@ sub_814B754: @ 814B754 _0814B772: adds r0, r4, 0 bl SetMainCallback2 - ldr r0, _0814B78C @ =gUnknown_3005450 + ldr r0, _0814B78C @ =Rfu mov r1, r8 strh r1, [r0, 0x10] strh r1, [r0, 0x12] @@ -86,7 +86,7 @@ _0814B772: .align 2, 0 _0814B784: .4byte gReceivedRemoteLinkPlayers _0814B788: .4byte gWirelessCommType -_0814B78C: .4byte gUnknown_3005450 +_0814B78C: .4byte Rfu _0814B790: bl GetLinkPlayerCount lsls r0, 24 @@ -103,13 +103,13 @@ _0814B790: _0814B7AC: adds r0, r4, 0 bl SetMainCallback2 - ldr r0, _0814B7BC @ =gUnknown_3005450 + ldr r0, _0814B7BC @ =Rfu movs r1, 0 strh r1, [r0, 0x10] strh r1, [r0, 0x12] b _0814B7DC .align 2, 0 -_0814B7BC: .4byte gUnknown_3005450 +_0814B7BC: .4byte Rfu _0814B7C0: ldr r6, _0814B7E8 @ =gUnknown_203F3DC ldr r0, _0814B7EC @ =0x000041c0 @@ -120,7 +120,7 @@ _0814B7C0: bne _0814B7F4 adds r0, r4, 0 bl SetMainCallback2 - ldr r0, _0814B7F0 @ =gUnknown_3005450 + ldr r0, _0814B7F0 @ =Rfu strh r5, [r0, 0x10] strh r5, [r0, 0x12] _0814B7DC: @@ -132,7 +132,7 @@ _0814B7DC: .align 2, 0 _0814B7E8: .4byte gUnknown_203F3DC _0814B7EC: .4byte 0x000041c0 -_0814B7F0: .4byte gUnknown_3005450 +_0814B7F0: .4byte Rfu _0814B7F4: str r4, [r5] movs r4, 0 diff --git a/asm/link_rfu.s b/asm/link_rfu.s deleted file mode 100644 index 49fe3aef5..000000000 --- a/asm/link_rfu.s +++ /dev/null @@ -1,3175 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80FD3A4 -sub_80FD3A4: @ 80FD3A4 - push {r4,lr} - bl rfu_REQBN_softReset_and_checkID - adds r4, r0, 0 - ldr r0, _080FD3E8 @ =0x00008001 - cmp r4, r0 - bne _080FD3B8 - ldr r1, _080FD3EC @ =gUnknown_3005E10 - movs r0, 0x1 - strb r0, [r1, 0x8] -_080FD3B8: - ldr r0, _080FD3EC @ =gUnknown_3005E10 - ldrb r2, [r0, 0x4] - adds r1, r0, 0 - cmp r2, 0x17 - beq _080FD3CC - cmp r2, 0x1 - beq _080FD3CC - movs r0, 0 - strb r0, [r1, 0x5] - strb r0, [r1, 0x4] -_080FD3CC: - movs r0, 0 - strb r0, [r1, 0x7] - strb r0, [r1, 0xD] - strb r0, [r1, 0x1] - strb r0, [r1] - movs r0, 0xFF - strb r0, [r1, 0x6] - bl sub_80FEAF4 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080FD3E8: .4byte 0x00008001 -_080FD3EC: .4byte gUnknown_3005E10 - thumb_func_end sub_80FD3A4 - - thumb_func_start rfu_REQ_sendData_wrapper -rfu_REQ_sendData_wrapper: @ 80FD3F0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080FD410 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0 - bne _080FD418 - ldr r0, _080FD414 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x2] - movs r2, 0 - cmp r0, 0x1 - bne _080FD420 - movs r2, 0x1 - b _080FD420 - .align 2, 0 -_080FD410: .4byte gRfuLinkStatus -_080FD414: .4byte gUnknown_3005E10 -_080FD418: - ldr r0, _080FD42C @ =gUnknown_3005E10 - ldrb r1, [r0, 0x3] - movs r1, 0 - strb r1, [r0, 0x3] -_080FD420: - adds r0, r2, 0 - bl rfu_REQ_sendData - pop {r0} - bx r0 - .align 2, 0 -_080FD42C: .4byte gUnknown_3005E10 - thumb_func_end rfu_REQ_sendData_wrapper - - thumb_func_start sub_80FD430 -sub_80FD430: @ 80FD430 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - cmp r5, 0 - beq _080FD478 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r4, _080FD468 @ =gUnknown_3005E10 - ldr r2, _080FD46C @ =0x01000024 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - movs r0, 0xFF - strb r0, [r4, 0x6] - str r5, [r4, 0x40] - str r6, [r4, 0x44] - ldr r0, _080FD470 @ =sub_80FE394 - bl rfu_setMSCCallback - ldr r0, _080FD474 @ =sub_80FDC98 - bl rfu_setREQCallback - movs r0, 0 - b _080FD47A - .align 2, 0 -_080FD468: .4byte gUnknown_3005E10 -_080FD46C: .4byte 0x01000024 -_080FD470: .4byte sub_80FE394 -_080FD474: .4byte sub_80FDC98 -_080FD478: - movs r0, 0x4 -_080FD47A: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FD430 - - thumb_func_start sub_80FD484 -sub_80FD484: @ 80FD484 - push {r4,lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r4, _080FD4A8 @ =gUnknown_3005E10 - ldr r2, _080FD4AC @ =0x01000020 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - movs r0, 0xFF - strb r0, [r4, 0x6] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FD4A8: .4byte gUnknown_3005E10 -_080FD4AC: .4byte 0x01000020 - thumb_func_end sub_80FD484 - - thumb_func_start sub_80FD4B0 -sub_80FD4B0: @ 80FD4B0 - push {r4,lr} - adds r4, r0, 0 - bl sub_80FD4E4 - ldr r1, _080FD4E0 @ =gUnknown_3005E10 - movs r2, 0x1 - strb r2, [r1, 0x4] - movs r0, 0x2 - strb r0, [r1, 0x5] - str r4, [r1, 0x3C] - ldrb r0, [r4, 0x11] - strb r0, [r1, 0x9] - ldrh r0, [r4, 0x12] - strh r0, [r1, 0x32] - ldrh r0, [r4, 0x14] - strh r0, [r1, 0x18] - ldrb r0, [r4, 0x10] - cmp r0, 0 - beq _080FD4D8 - strb r2, [r1, 0xB] -_080FD4D8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FD4E0: .4byte gUnknown_3005E10 - thumb_func_end sub_80FD4B0 - - thumb_func_start sub_80FD4E4 -sub_80FD4E4: @ 80FD4E4 - push {r4,r5,lr} - ldr r2, _080FD528 @ =gUnknown_3005E10 - movs r0, 0 - strb r0, [r2, 0x5] - strb r0, [r2, 0x4] - movs r1, 0xFF - strb r1, [r2, 0x6] - strb r0, [r2, 0x7] - strb r0, [r2, 0x10] - strb r0, [r2, 0xC] - adds r1, r2, 0 - adds r1, 0x24 - strb r0, [r1] - adds r1, 0xC - strb r0, [r1] - movs r3, 0 - adds r5, r2, 0 - adds r5, 0x28 - movs r4, 0 - adds r2, 0x34 -_080FD50C: - lsls r1, r3, 1 - adds r0, r1, r5 - strh r4, [r0] - adds r1, r2 - strh r4, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080FD50C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FD528: .4byte gUnknown_3005E10 - thumb_func_end sub_80FD4E4 - - thumb_func_start sub_80FD52C -sub_80FD52C: @ 80FD52C - ldr r1, _080FD534 @ =gUnknown_3005E10 - movs r0, 0x15 - strb r0, [r1, 0x4] - bx lr - .align 2, 0 -_080FD534: .4byte gUnknown_3005E10 - thumb_func_end sub_80FD52C - - thumb_func_start sub_80FD538 -sub_80FD538: @ 80FD538 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r3, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - ldr r1, _080FD570 @ =gUnknown_3005E10 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080FD574 - cmp r0, 0x8 - bne _080FD55E - cmp r5, 0x1 - beq _080FD574 -_080FD55E: - movs r0, 0x1 - strh r0, [r1, 0x14] - movs r0, 0xF3 - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0x1 - b _080FD606 - .align 2, 0 -_080FD570: .4byte gUnknown_3005E10 -_080FD574: - bl rfu_getMasterSlave - lsls r0, 24 - cmp r0, 0 - bne _080FD594 - ldr r1, _080FD590 @ =gUnknown_3005E10 - movs r0, 0x2 - strh r0, [r1, 0x14] - movs r0, 0xF3 - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0x2 - b _080FD606 - .align 2, 0 -_080FD590: .4byte gUnknown_3005E10 -_080FD594: - movs r2, 0 - ldrh r0, [r6] - ldr r4, _080FD5C8 @ =0x0000ffff - adds r1, r6, 0x2 - ldr r3, _080FD5CC @ =gUnknown_3005E10 - cmp r0, r4 - beq _080FD5B4 -_080FD5A2: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bhi _080FD5B4 - ldrh r0, [r1] - adds r1, 0x2 - cmp r0, r4 - bne _080FD5A2 -_080FD5B4: - cmp r2, 0x10 - bne _080FD5D0 - movs r0, 0x4 - strh r0, [r3, 0x14] - movs r0, 0xF3 - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0x4 - b _080FD606 - .align 2, 0 -_080FD5C8: .4byte 0x0000ffff -_080FD5CC: .4byte gUnknown_3005E10 -_080FD5D0: - cmp r5, 0x1 - bls _080FD5DE - movs r0, 0x1 - strb r0, [r3, 0x7] - movs r5, 0x1 - movs r7, 0 - b _080FD5E2 -_080FD5DE: - movs r0, 0 - strb r0, [r3, 0x7] -_080FD5E2: - cmp r5, 0 - beq _080FD5EC - movs r0, 0x5 - strb r0, [r3, 0x4] - b _080FD5FA -_080FD5EC: - movs r0, 0x9 - strb r0, [r3, 0x4] - ldrb r0, [r3, 0xB] - cmp r0, 0 - beq _080FD5FA - movs r0, 0x2 - strb r0, [r3, 0xB] -_080FD5FA: - strb r5, [r3, 0x6] - strh r7, [r3, 0x1A] - mov r0, r8 - strh r0, [r3, 0x26] - str r6, [r3, 0x20] - movs r0, 0 -_080FD606: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FD538 - - thumb_func_start sub_80FD610 -sub_80FD610: @ 80FD610 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - ldr r1, _080FD644 @ =gUnknown_3005E10 - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080FD648 - subs r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bls _080FD648 - movs r0, 0x1 - strh r0, [r1, 0x14] - movs r0, 0xF3 - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0x1 - b _080FD6E8 - .align 2, 0 -_080FD644: .4byte gUnknown_3005E10 -_080FD648: - bl rfu_getMasterSlave - lsls r0, 24 - cmp r0, 0 - bne _080FD668 - ldr r1, _080FD664 @ =gUnknown_3005E10 - movs r0, 0x2 - strh r0, [r1, 0x14] - movs r0, 0xF3 - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0x2 - b _080FD6E8 - .align 2, 0 -_080FD664: .4byte gUnknown_3005E10 -_080FD668: - movs r2, 0 - ldr r0, _080FD6B4 @ =gRfuLinkStatus - ldr r1, [r0] - ldrb r3, [r1, 0x8] - ldr r5, _080FD6B8 @ =gUnknown_3005E10 - adds r7, r0, 0 - cmp r2, r3 - bcs _080FD696 - ldrh r0, [r1, 0x14] - cmp r0, r6 - beq _080FD696 - adds r4, r1, 0 - adds r1, r3, 0 -_080FD682: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r1 - bcs _080FD696 - lsls r0, r2, 5 - adds r0, r4, r0 - ldrh r0, [r0, 0x14] - cmp r0, r6 - bne _080FD682 -_080FD696: - ldr r0, [r7] - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _080FD6A2 - cmp r2, r0 - bne _080FD6BC -_080FD6A2: - movs r0, 0x3 - strh r0, [r5, 0x14] - movs r0, 0xF3 - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0x3 - b _080FD6E8 - .align 2, 0 -_080FD6B4: .4byte gRfuLinkStatus -_080FD6B8: .4byte gUnknown_3005E10 -_080FD6BC: - ldrb r0, [r5, 0x4] - cmp r0, 0 - beq _080FD6C6 - cmp r0, 0x9 - bne _080FD6CE -_080FD6C6: - movs r0, 0xC - strb r0, [r5, 0x4] - movs r0, 0xD - b _080FD6D4 -_080FD6CE: - movs r0, 0xB - strb r0, [r5, 0x4] - movs r0, 0xC -_080FD6D4: - strb r0, [r5, 0x5] - strh r6, [r5, 0x1E] - mov r0, r8 - strh r0, [r5, 0x1A] - ldrb r0, [r5, 0x7] - cmp r0, 0 - beq _080FD6E6 - movs r0, 0x7 - strb r0, [r5, 0x7] -_080FD6E6: - movs r0, 0 -_080FD6E8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FD610 - - thumb_func_start sub_80FD6F4 -sub_80FD6F4: @ 80FD6F4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r6, _080FD758 @ =gUnknown_3005E10 - adds r3, r6, 0 - adds r3, 0x30 - ldrb r2, [r3] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _080FD750 - adds r0, r2, 0 - bics r0, r1 - strb r0, [r3] - movs r4, 0 - ldr r7, _080FD75C @ =gRfuLinkStatus - movs r5, 0x1 - adds r3, 0x4 - movs r2, 0 -_080FD71A: - adds r0, r1, 0 - asrs r0, r4 - ands r0, r5 - cmp r0, 0 - beq _080FD72A - lsls r0, r4, 1 - adds r0, r3 - strh r2, [r0] -_080FD72A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080FD71A - ldr r0, [r7] - ldrb r4, [r0, 0x3] - ands r4, r1 - cmp r4, 0 - beq _080FD744 - adds r0, r4, 0 - bl sub_80FE818 -_080FD744: - ldr r0, _080FD758 @ =gUnknown_3005E10 - strh r4, [r0, 0x14] - movs r0, 0x33 - adds r1, r4, 0 - bl sub_80FE7F0 -_080FD750: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FD758: .4byte gUnknown_3005E10 -_080FD75C: .4byte gRfuLinkStatus - thumb_func_end sub_80FD6F4 - - thumb_func_start sub_80FD760 -sub_80FD760: @ 80FD760 - push {r4,r5,lr} - lsls r0, 24 - movs r2, 0 - ldr r1, _080FD77C @ =gUnknown_3005E10 - strb r2, [r1, 0x7] - adds r5, r1, 0 - cmp r0, 0 - beq _080FD780 - bl sub_80FD4E4 - movs r0, 0x17 - strb r0, [r5, 0x4] - b _080FD84A - .align 2, 0 -_080FD77C: .4byte gUnknown_3005E10 -_080FD780: - ldrb r0, [r5, 0x4] - subs r0, 0x5 - cmp r0, 0xD - bhi _080FD836 - lsls r0, 2 - ldr r1, _080FD794 @ =_080FD798 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FD794: .4byte _080FD798 - .align 2, 0 -_080FD798: - .4byte _080FD7D0 - .4byte _080FD7DC - .4byte _080FD7DC - .4byte _080FD83C - .4byte _080FD7E6 - .4byte _080FD7F0 - .4byte _080FD7F0 - .4byte _080FD7FA - .4byte _080FD804 - .4byte _080FD804 - .4byte _080FD83C - .4byte _080FD80A - .4byte _080FD830 - .4byte _080FD830 -_080FD7D0: - movs r1, 0 - movs r0, 0x8 - strb r0, [r5, 0x4] - strb r1, [r5, 0x5] - movs r2, 0x13 - b _080FD83C -_080FD7DC: - movs r0, 0x7 - strb r0, [r5, 0x4] - movs r0, 0x8 - strb r0, [r5, 0x5] - b _080FD83C -_080FD7E6: - movs r0, 0 - strb r0, [r5, 0x5] - strb r0, [r5, 0x4] - movs r2, 0x21 - b _080FD83C -_080FD7F0: - movs r1, 0 - movs r0, 0xB - strb r0, [r5, 0x4] - strb r1, [r5, 0x5] - b _080FD83C -_080FD7FA: - movs r0, 0 - strb r0, [r5, 0x5] - strb r0, [r5, 0x4] - movs r2, 0x23 - b _080FD83C -_080FD804: - movs r0, 0xE - strb r0, [r5, 0x4] - b _080FD83C -_080FD80A: - ldrb r0, [r5, 0x11] - strb r0, [r5, 0x4] - ldrb r0, [r5, 0x12] - strb r0, [r5, 0x5] - ldr r4, _080FD82C @ =gRfuLinkStatus - ldr r0, [r4] - ldrb r0, [r0, 0x3] - bl sub_80FE818 - ldr r0, [r4] - ldrb r0, [r0, 0x3] - strh r0, [r5, 0x14] - movs r0, 0x33 - movs r1, 0x1 - bl sub_80FE7F0 - b _080FD84A - .align 2, 0 -_080FD82C: .4byte gRfuLinkStatus -_080FD830: - movs r0, 0x12 - strb r0, [r5, 0x4] - b _080FD83C -_080FD836: - strb r2, [r5, 0x5] - strb r2, [r5, 0x4] - movs r2, 0x43 -_080FD83C: - ldrb r0, [r5, 0x4] - cmp r0, 0 - bne _080FD84A - adds r0, r2, 0 - movs r1, 0 - bl sub_80FE7F0 -_080FD84A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FD760 - - thumb_func_start sub_80FD850 -sub_80FD850: @ 80FD850 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - mov r8, r1 - mov r5, sp - adds r5, 0x1 - mov r4, sp - adds r4, 0x2 - mov r1, sp - adds r2, r5, 0 - adds r3, r4, 0 - bl rfu_REQBN_watchLink - mov r0, sp - ldrb r0, [r0] - adds r7, r4, 0 - cmp r0, 0 - beq _080FD922 - ldr r1, _080FD8EC @ =gUnknown_3005E10 - mov r0, sp - ldrb r0, [r0] - strh r0, [r1, 0x14] - ldrb r0, [r5] - strh r0, [r1, 0x16] - ldrb r0, [r1, 0x9] - adds r6, r1, 0 - cmp r0, 0 - beq _080FD90A - movs r0, 0x1 - strb r0, [r6, 0xA] - ldrb r0, [r6, 0x6] - cmp r0, 0 - bne _080FD8A6 - ldrb r0, [r5] - cmp r0, 0 - bne _080FD8A6 - movs r0, 0x4 - strb r0, [r6, 0xA] -_080FD8A6: - ldrb r0, [r6, 0xA] - cmp r0, 0x1 - bne _080FD8F0 - movs r2, 0 - mov r4, sp - movs r5, 0x1 - mov r12, r6 - mov r3, r12 - adds r3, 0x30 - movs r6, 0x34 - add r6, r12 - mov r9, r6 -_080FD8BE: - ldrb r0, [r4] - asrs r0, r2 - ands r0, r5 - cmp r0, 0 - beq _080FD8DC - adds r0, r5, 0 - lsls r0, r2 - ldrb r1, [r3] - orrs r0, r1 - strb r0, [r3] - lsls r0, r2, 1 - add r0, r9 - mov r6, r12 - ldrh r1, [r6, 0x32] - strh r1, [r0] -_080FD8DC: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080FD8BE - movs r0, 0x31 - b _080FD902 - .align 2, 0 -_080FD8EC: .4byte gUnknown_3005E10 -_080FD8F0: - movs r0, 0 - strb r0, [r6, 0xA] - mov r0, sp - ldrb r0, [r0] - bl sub_80FE818 - movs r0, 0x1 - mov r8, r0 - movs r0, 0x33 -_080FD902: - movs r1, 0x1 - bl sub_80FE7F0 - b _080FD91E -_080FD90A: - mov r0, sp - ldrb r0, [r0] - bl sub_80FE818 - movs r1, 0x1 - mov r8, r1 - movs r0, 0x30 - movs r1, 0x2 - bl sub_80FE7F0 -_080FD91E: - bl sub_80FEAF4 -_080FD922: - ldr r0, _080FDA0C @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FD9FC - ldrb r0, [r7] - cmp r0, 0 - beq _080FD980 - movs r2, 0 - ldr r6, _080FDA10 @ =gUnknown_3005E10 - movs r3, 0x1 - adds r4, r6, 0 - adds r4, 0x34 - adds r6, 0x30 - adds r5, r7, 0 -_080FD940: - ldrb r0, [r6] - asrs r0, r2 - ands r0, r3 - cmp r0, 0 - beq _080FD95C - ldrb r0, [r5] - asrs r0, r2 - ands r0, r3 - cmp r0, 0 - beq _080FD95C - lsls r0, r2, 1 - adds r0, r4 - movs r1, 0 - strh r1, [r0] -_080FD95C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080FD940 - ldr r3, _080FDA10 @ =gUnknown_3005E10 - adds r2, r3, 0 - adds r2, 0x30 - ldrb r1, [r7] - ldrb r0, [r2] - bics r0, r1 - strb r0, [r2] - ldrb r0, [r7] - strh r0, [r3, 0x14] - movs r0, 0x32 - movs r1, 0x1 - bl sub_80FE7F0 -_080FD980: - ldr r0, _080FDA10 @ =gUnknown_3005E10 - adds r3, r0, 0 - adds r3, 0x30 - ldrb r1, [r3] - adds r6, r0, 0 - cmp r1, 0 - beq _080FD9F8 - movs r4, 0 - movs r2, 0 - movs r5, 0x1 -_080FD994: - ldrb r0, [r3] - asrs r0, r2 - ands r0, r5 - cmp r0, 0 - beq _080FD9C6 - lsls r1, r2, 1 - adds r0, r6, 0 - adds r0, 0x34 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _080FD9C6 - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _080FD9C6 - adds r0, r5, 0 - lsls r0, r2 - ldrb r1, [r3] - bics r1, r0 - strb r1, [r3] - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080FD9C6: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080FD994 - cmp r4, 0 - beq _080FD9EA - adds r0, r4, 0 - bl sub_80FE818 - movs r6, 0x1 - mov r8, r6 - ldr r0, _080FDA10 @ =gUnknown_3005E10 - strh r4, [r0, 0x14] - movs r0, 0x33 - movs r1, 0x1 - bl sub_80FE7F0 -_080FD9EA: - ldr r0, _080FDA10 @ =gUnknown_3005E10 - adds r1, r0, 0 - adds r1, 0x30 - ldrb r1, [r1] - adds r6, r0, 0 - cmp r1, 0 - bne _080FD9FC -_080FD9F8: - movs r0, 0 - strb r0, [r6, 0xA] -_080FD9FC: - mov r0, r8 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080FDA0C: .4byte gRfuLinkStatus -_080FDA10: .4byte gUnknown_3005E10 - thumb_func_end sub_80FD850 - - thumb_func_start rfu_syncVBlank_ -rfu_syncVBlank_: @ 80FDA14 - push {lr} - bl rfu_syncVBlank - lsls r0, 16 - cmp r0, 0 - beq _080FDA2C - movs r0, 0xF1 - movs r1, 0 - bl sub_80FE7F0 - bl sub_80FEAF4 -_080FDA2C: - pop {r0} - bx r0 - thumb_func_end rfu_syncVBlank_ - - thumb_func_start sub_80FDA30 -sub_80FDA30: @ 80FDA30 - push {r4,lr} - adds r3, r0, 0 - ldr r1, _080FDA48 @ =gUnknown_3005E10 - ldr r2, [r1, 0x40] - cmp r2, 0 - bne _080FDA4C - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _080FDA4C - strb r2, [r1, 0x4] - b _080FDC1A - .align 2, 0 -_080FDA48: .4byte gUnknown_3005E10 -_080FDA4C: - ldr r0, _080FDA80 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x7] - cmp r0, 0 - beq _080FDA5A - adds r0, r3, 0 - bl sub_80FDC28 -_080FDA5A: - ldr r4, _080FDA80 @ =gUnknown_3005E10 - ldrb r0, [r4, 0x4] - cmp r0, 0 - bne _080FDA64 - b _080FDBE4 -_080FDA64: - bl rfu_waitREQComplete - movs r0, 0x1 - strb r0, [r4, 0xE] - ldrb r0, [r4, 0x4] - subs r0, 0x1 - cmp r0, 0x16 - bls _080FDA76 - b _080FDBDA -_080FDA76: - lsls r0, 2 - ldr r1, _080FDA84 @ =_080FDA88 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FDA80: .4byte gUnknown_3005E10 -_080FDA84: .4byte _080FDA88 - .align 2, 0 -_080FDA88: - .4byte _080FDB08 - .4byte _080FDB40 - .4byte _080FDB46 - .4byte _080FDB5C - .4byte _080FDB74 - .4byte _080FDB7A - .4byte _080FDB80 - .4byte _080FDBDA - .4byte _080FDB86 - .4byte _080FDB8C - .4byte _080FDB92 - .4byte _080FDB98 - .4byte _080FDBA8 - .4byte _080FDBAE - .4byte _080FDBDA - .4byte _080FDBB4 - .4byte _080FDBC4 - .4byte _080FDBCA - .4byte _080FDBD0 - .4byte _080FDBDA - .4byte _080FDBD6 - .4byte _080FDBDA - .4byte _080FDAE4 -_080FDAE4: - bl sub_80FD3A4 - ldr r1, _080FDB00 @ =0x00008001 - movs r2, 0xFF - cmp r0, r1 - bne _080FDAF2 - movs r2, 0x44 -_080FDAF2: - ldr r1, _080FDB04 @ =gUnknown_3005E10 - movs r0, 0 - strb r0, [r1, 0x5] - strb r0, [r1, 0x4] - adds r0, r2, 0 - b _080FDB32 - .align 2, 0 -_080FDB00: .4byte 0x00008001 -_080FDB04: .4byte gUnknown_3005E10 -_080FDB08: - bl sub_80FD3A4 - ldr r1, _080FDB20 @ =0x00008001 - cmp r0, r1 - bne _080FDB28 - ldr r0, _080FDB24 @ =gUnknown_3005E10 - ldrb r1, [r0, 0x5] - strb r1, [r0, 0x4] - movs r1, 0x3 - strb r1, [r0, 0x5] - b _080FDBDA - .align 2, 0 -_080FDB20: .4byte 0x00008001 -_080FDB24: .4byte gUnknown_3005E10 -_080FDB28: - ldr r1, _080FDB3C @ =gUnknown_3005E10 - movs r0, 0 - strb r0, [r1, 0x5] - strb r0, [r1, 0x4] - movs r0, 0xFF -_080FDB32: - movs r1, 0 - bl sub_80FE7F0 - b _080FDBDA - .align 2, 0 -_080FDB3C: .4byte gUnknown_3005E10 -_080FDB40: - bl rfu_REQ_reset - b _080FDBDA -_080FDB46: - ldr r0, _080FDB58 @ =gUnknown_3005E10 - ldr r2, [r0, 0x3C] - ldrh r0, [r2, 0x2] - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - bl rfu_REQ_configSystem - b _080FDBDA - .align 2, 0 -_080FDB58: .4byte gUnknown_3005E10 -_080FDB5C: - ldr r0, _080FDB70 @ =gUnknown_3005E10 - ldr r3, [r0, 0x3C] - ldrb r0, [r3, 0x4] - ldrh r1, [r3, 0x6] - ldr r2, [r3, 0x8] - ldr r3, [r3, 0xC] - bl rfu_REQ_configGameData - b _080FDBDA - .align 2, 0 -_080FDB70: .4byte gUnknown_3005E10 -_080FDB74: - bl rfu_REQ_startSearchChild - b _080FDBDA -_080FDB7A: - bl rfu_REQ_pollSearchChild - b _080FDBDA -_080FDB80: - bl rfu_REQ_endSearchChild - b _080FDBDA -_080FDB86: - bl rfu_REQ_startSearchParent - b _080FDBDA -_080FDB8C: - bl rfu_REQ_pollSearchParent - b _080FDBDA -_080FDB92: - bl rfu_REQ_endSearchParent - b _080FDBDA -_080FDB98: - ldr r0, _080FDBA4 @ =gUnknown_3005E10 - ldrh r0, [r0, 0x1E] - bl rfu_REQ_startConnectParent - b _080FDBDA - .align 2, 0 -_080FDBA4: .4byte gUnknown_3005E10 -_080FDBA8: - bl rfu_REQ_pollConnectParent - b _080FDBDA -_080FDBAE: - bl rfu_REQ_endConnectParent - b _080FDBDA -_080FDBB4: - ldr r0, _080FDBC0 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x3] - bl rfu_REQ_CHILD_startConnectRecovery - b _080FDBDA - .align 2, 0 -_080FDBC0: .4byte gRfuLinkStatus -_080FDBC4: - bl rfu_REQ_CHILD_pollConnectRecovery - b _080FDBDA -_080FDBCA: - bl rfu_REQ_CHILD_endConnectRecovery - b _080FDBDA -_080FDBD0: - bl rfu_REQ_changeMasterSlave - b _080FDBDA -_080FDBD6: - bl rfu_REQ_stopMode -_080FDBDA: - bl rfu_waitREQComplete - ldr r1, _080FDC20 @ =gUnknown_3005E10 - movs r0, 0 - strb r0, [r1, 0xE] -_080FDBE4: - ldr r0, _080FDC20 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x4] - subs r0, 0x12 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080FDBF4 - b _080FDA5A -_080FDBF4: - ldr r0, _080FDC24 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FDC0A - movs r0, 0 - bl sub_80FD850 - lsls r0, 24 - cmp r0, 0 - bne _080FDC1A -_080FDC0A: - bl sub_80FE418 - bl sub_80FE63C - bl sub_80FE74C - bl sub_80FE918 -_080FDC1A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FDC20: .4byte gUnknown_3005E10 -_080FDC24: .4byte gRfuLinkStatus - thumb_func_end sub_80FDA30 - - thumb_func_start sub_80FDC28 -sub_80FDC28: @ 80FDC28 - push {r4,lr} - adds r3, r0, 0 - ldr r0, _080FDC4C @ =gUnknown_3005E10 - ldrb r1, [r0, 0x7] - adds r4, r0, 0 - cmp r1, 0x5 - bne _080FDC52 - movs r2, 0x1 - strb r2, [r4, 0x6] - strb r1, [r4, 0x4] - ldrh r0, [r4, 0x1C] - strh r0, [r4, 0x1A] - lsls r0, 16 - cmp r0, 0 - beq _080FDC50 - movs r0, 0x6 - strb r0, [r4, 0x7] - b _080FDC52 - .align 2, 0 -_080FDC4C: .4byte gUnknown_3005E10 -_080FDC50: - strb r2, [r4, 0x7] -_080FDC52: - ldrb r0, [r4, 0x7] - cmp r0, 0x1 - bne _080FDC7C - strb r0, [r4, 0x6] - movs r0, 0x5 - strb r0, [r4, 0x4] - adds r0, r3, 0 - movs r1, 0x8C - bl __umodsi3 - strh r0, [r4, 0x1A] - movs r1, 0x8C - subs r1, r0 - strh r1, [r4, 0x1C] - lsls r0, 16 - cmp r0, 0 - beq _080FDC78 - movs r0, 0x2 - b _080FDC7A -_080FDC78: - movs r0, 0x3 -_080FDC7A: - strb r0, [r4, 0x7] -_080FDC7C: - ldrb r0, [r4, 0x7] - cmp r0, 0x3 - bne _080FDC92 - movs r0, 0 - strb r0, [r4, 0x6] - movs r0, 0x28 - strh r0, [r4, 0x1A] - movs r0, 0x4 - strb r0, [r4, 0x7] - movs r0, 0x9 - strb r0, [r4, 0x4] -_080FDC92: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FDC28 - - thumb_func_start sub_80FDC98 -sub_80FDC98: @ 80FDC98 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r0, _080FDCD0 @ =gUnknown_3005E10 - ldrb r1, [r0, 0xE] - adds r7, r0, 0 - cmp r1, 0 - bne _080FDCB6 - b _080FE17C -_080FDCB6: - movs r0, 0 - strb r0, [r7, 0xE] - mov r0, r8 - subs r0, 0x10 - cmp r0, 0x2D - bls _080FDCC4 - b _080FE16E -_080FDCC4: - lsls r0, 2 - ldr r1, _080FDCD4 @ =_080FDCD8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FDCD0: .4byte gUnknown_3005E10 -_080FDCD4: .4byte _080FDCD8 - .align 2, 0 -_080FDCD8: - .4byte _080FDD90 - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FDDBC - .4byte _080FDDA8 - .4byte _080FE16E - .4byte _080FDDD0 - .4byte _080FDDE0 - .4byte _080FDE04 - .4byte _080FDE24 - .4byte _080FDE44 - .4byte _080FDEB4 - .4byte _080FDEE6 - .4byte _080FDEFC - .4byte _080FDF44 - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE0BC - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FDFB4 - .4byte _080FE000 - .4byte _080FE048 - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE16E - .4byte _080FE15C -_080FDD90: - cmp r6, 0 - beq _080FDD96 - b _080FE16E -_080FDD96: - ldr r0, _080FDDA4 @ =gUnknown_3005E10 - ldrb r1, [r0, 0x5] - strb r1, [r0, 0x4] - movs r1, 0x4 - strb r1, [r0, 0x5] - b _080FE16E - .align 2, 0 -_080FDDA4: .4byte gUnknown_3005E10 -_080FDDA8: - cmp r6, 0 - beq _080FDDAE - b _080FE16E -_080FDDAE: - ldr r0, _080FDDB8 @ =gUnknown_3005E10 - ldrb r1, [r0, 0x5] - strb r1, [r0, 0x4] - strb r6, [r0, 0x5] - b _080FE16E - .align 2, 0 -_080FDDB8: .4byte gUnknown_3005E10 -_080FDDBC: - cmp r6, 0 - beq _080FDDC2 - b _080FE16E -_080FDDC2: - ldr r0, _080FDDCC @ =gUnknown_3005E10 - strb r6, [r0, 0x5] - strb r6, [r0, 0x4] - movs r0, 0 - b _080FE0DA - .align 2, 0 -_080FDDCC: .4byte gUnknown_3005E10 -_080FDDD0: - cmp r6, 0 - beq _080FDDD6 - b _080FE16E -_080FDDD6: - ldr r1, _080FDDDC @ =gUnknown_3005E10 - movs r0, 0x6 - b _080FDEF0 - .align 2, 0 -_080FDDDC: .4byte gUnknown_3005E10 -_080FDDE0: - ldr r1, _080FDE00 @ =gUnknown_3005E10 - ldrh r0, [r1, 0x1A] - cmp r0, 0 - bne _080FDDEA - b _080FE16E -_080FDDEA: - subs r0, 0x1 - strh r0, [r1, 0x1A] - lsls r0, 16 - cmp r0, 0 - beq _080FDDF6 - b _080FE16E -_080FDDF6: - movs r0, 0x7 - strb r0, [r1, 0x4] - movs r0, 0x8 - strb r0, [r1, 0x5] - b _080FE16E - .align 2, 0 -_080FDE00: .4byte gUnknown_3005E10 -_080FDE04: - cmp r6, 0 - beq _080FDE0A - b _080FE16E -_080FDE0A: - ldr r0, _080FDE20 @ =gUnknown_3005E10 - ldrb r1, [r0, 0x5] - strb r1, [r0, 0x4] - strb r6, [r0, 0x5] - ldrb r0, [r0, 0x7] - cmp r0, 0 - beq _080FDE1A - b _080FE16E -_080FDE1A: - movs r0, 0x13 - b _080FE0DA - .align 2, 0 -_080FDE20: .4byte gUnknown_3005E10 -_080FDE24: - cmp r6, 0 - beq _080FDE2A - b _080FE16E -_080FDE2A: - ldrb r0, [r7, 0xB] - cmp r0, 0x1 - bne _080FDE3A - ldrh r0, [r7, 0x1A] - cmp r0, 0x1 - bls _080FDE3A - subs r0, 0x1 - strh r0, [r7, 0x1A] -_080FDE3A: - ldr r1, _080FDE40 @ =gUnknown_3005E10 - movs r0, 0xA - b _080FDEF0 - .align 2, 0 -_080FDE40: .4byte gUnknown_3005E10 -_080FDE44: - cmp r6, 0 - bne _080FDE8A - bl sub_80FE778 - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - strb r0, [r1] - ldr r4, _080FDEAC @ =gUnknown_3005E10 - strh r0, [r4, 0x14] - cmp r0, 0 - beq _080FDE64 - movs r0, 0x20 - movs r1, 0x1 - bl sub_80FE7F0 -_080FDE64: - ldrb r0, [r4, 0xB] - cmp r0, 0 - beq _080FDE8A - ldrh r0, [r4, 0x1A] - cmp r0, 0x1 - beq _080FDE8A - ldr r0, _080FDEB0 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0x4 - bne _080FDE8A - bl rfu_REQ_endSearchParent - bl rfu_waitREQComplete - movs r0, 0x9 - strb r0, [r4, 0x4] - movs r0, 0x1 - strb r0, [r4, 0xB] -_080FDE8A: - ldr r1, _080FDEAC @ =gUnknown_3005E10 - ldrh r0, [r1, 0x1A] - cmp r0, 0 - bne _080FDE94 - b _080FE16E -_080FDE94: - subs r0, 0x1 - strh r0, [r1, 0x1A] - lsls r0, 16 - cmp r0, 0 - beq _080FDEA0 - b _080FE16E -_080FDEA0: - movs r0, 0xB - strb r0, [r1, 0x4] - movs r0, 0 - strb r0, [r1, 0x5] - b _080FE16E - .align 2, 0 -_080FDEAC: .4byte gUnknown_3005E10 -_080FDEB0: .4byte gRfuLinkStatus -_080FDEB4: - cmp r6, 0 - beq _080FDEBA - b _080FE16E -_080FDEBA: - ldr r2, _080FDED4 @ =gUnknown_3005E10 - ldrb r0, [r2, 0x5] - strb r0, [r2, 0x4] - ldrb r1, [r2, 0x7] - cmp r1, 0 - bne _080FDED8 - lsls r0, 24 - cmp r0, 0 - beq _080FDECE - b _080FE16E -_080FDECE: - movs r0, 0x21 - b _080FE0DA - .align 2, 0 -_080FDED4: .4byte gUnknown_3005E10 -_080FDED8: - cmp r1, 0x7 - bne _080FDEDE - b _080FE16E -_080FDEDE: - movs r0, 0x5 - strb r0, [r2, 0x4] - strb r0, [r2, 0x7] - b _080FE16E -_080FDEE6: - cmp r6, 0 - beq _080FDEEC - b _080FE16E -_080FDEEC: - ldr r1, _080FDEF8 @ =gUnknown_3005E10 - movs r0, 0xD -_080FDEF0: - strb r0, [r1, 0x5] - strb r0, [r1, 0x4] - b _080FE16E - .align 2, 0 -_080FDEF8: .4byte gUnknown_3005E10 -_080FDEFC: - cmp r6, 0 - bne _080FDF20 - ldr r4, _080FDF3C @ =gUnknown_3005E20 - mov r0, sp - adds r1, r4, 0 - bl rfu_getConnectParentStatus - lsls r0, 16 - cmp r0, 0 - bne _080FDF20 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _080FDF20 - adds r1, r4, 0 - subs r1, 0x10 - movs r0, 0xE - strb r0, [r1, 0x4] -_080FDF20: - ldr r1, _080FDF40 @ =gUnknown_3005E10 - ldrh r0, [r1, 0x1A] - cmp r0, 0 - bne _080FDF2A - b _080FE16E -_080FDF2A: - subs r0, 0x1 - strh r0, [r1, 0x1A] - lsls r0, 16 - cmp r0, 0 - beq _080FDF36 - b _080FE16E -_080FDF36: - movs r0, 0xE - strb r0, [r1, 0x4] - b _080FE16E - .align 2, 0 -_080FDF3C: .4byte gUnknown_3005E20 -_080FDF40: .4byte gUnknown_3005E10 -_080FDF44: - cmp r6, 0 - beq _080FDF4A - b _080FE16E -_080FDF4A: - ldr r4, _080FDF7C @ =gUnknown_3005E20 - mov r0, sp - adds r1, r4, 0 - bl rfu_getConnectParentStatus - lsls r0, 16 - cmp r0, 0 - beq _080FDF5C - b _080FE16E -_080FDF5C: - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _080FDF80 - adds r1, r4, 0 - subs r1, 0x10 - movs r0, 0x13 - strb r0, [r1, 0x4] - movs r0, 0xF - strb r0, [r1, 0x5] - movs r0, 0x22 - strh r0, [r1, 0x1E] - ldrb r0, [r1, 0x10] - strh r0, [r1, 0x14] - b _080FDFA0 - .align 2, 0 -_080FDF7C: .4byte gUnknown_3005E20 -_080FDF80: - adds r1, r4, 0 - subs r1, 0x10 - strb r6, [r1, 0x5] - strb r6, [r1, 0x4] - movs r0, 0x23 - strh r0, [r1, 0x1E] - mov r0, sp - ldrb r0, [r0] - strh r0, [r1, 0x14] - ldrb r0, [r1, 0x7] - cmp r0, 0 - beq _080FDFA0 - movs r0, 0x3 - strb r0, [r1, 0x7] - movs r0, 0x9 - strb r0, [r1, 0x4] -_080FDFA0: - ldr r4, _080FDFB0 @ =gUnknown_3005E10 - ldrb r0, [r4, 0x1E] - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0 - strh r0, [r4, 0x1E] - b _080FE16E - .align 2, 0 -_080FDFB0: .4byte gUnknown_3005E10 -_080FDFB4: - cmp r6, 0 - beq _080FDFBA - b _080FE16E -_080FDFBA: - ldr r2, _080FDFFC @ =gRfuLinkStatus - ldr r3, [r2] - ldrb r0, [r3, 0x3] - movs r1, 0 - strh r0, [r7, 0x14] - movs r0, 0x11 - strb r0, [r7, 0x5] - strb r0, [r7, 0x4] - strb r1, [r7, 0x10] - ldrb r0, [r3, 0x3] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FDFD8 - b _080FE16E -_080FDFD8: - adds r1, r7, 0 - movs r3, 0x1 -_080FDFDC: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _080FDFEC - b _080FE16E -_080FDFEC: - ldr r0, [r2] - ldrb r0, [r0, 0x3] - ldrb r4, [r7, 0x10] - asrs r0, r4 - ands r0, r3 - cmp r0, 0 - beq _080FDFDC - b _080FE16E - .align 2, 0 -_080FDFFC: .4byte gRfuLinkStatus -_080FE000: - cmp r6, 0 - bne _080FE01E - mov r0, sp - bl rfu_CHILD_getConnectRecoveryStatus - lsls r0, 16 - cmp r0, 0 - bne _080FE01E - mov r0, sp - ldrb r0, [r0] - cmp r0, 0x1 - bhi _080FE01E - ldr r1, _080FE044 @ =gUnknown_3005E10 - movs r0, 0x12 - strb r0, [r1, 0x4] -_080FE01E: - ldr r2, _080FE044 @ =gUnknown_3005E10 - ldrb r0, [r2, 0x10] - lsls r0, 1 - adds r1, r2, 0 - adds r1, 0x34 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, 0 - bne _080FE032 - b _080FE16E -_080FE032: - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _080FE03E - b _080FE16E -_080FE03E: - movs r0, 0x12 - strb r0, [r2, 0x4] - b _080FE16E - .align 2, 0 -_080FE044: .4byte gUnknown_3005E10 -_080FE048: - cmp r6, 0 - beq _080FE04E - b _080FE16E -_080FE04E: - mov r0, sp - bl rfu_CHILD_getConnectRecoveryStatus - lsls r0, 16 - cmp r0, 0 - beq _080FE05C - b _080FE16E -_080FE05C: - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _080FE078 - ldr r1, _080FE074 @ =gUnknown_3005E10 - movs r0, 0x13 - strb r0, [r1, 0x4] - movs r0, 0x16 - strb r0, [r1, 0x5] - movs r0, 0x32 - strh r0, [r1, 0x1E] - b _080FE08C - .align 2, 0 -_080FE074: .4byte gUnknown_3005E10 -_080FE078: - ldr r4, _080FE0B4 @ =gUnknown_3005E10 - strb r6, [r4, 0x5] - strb r6, [r4, 0x4] - ldr r0, _080FE0B8 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x3] - bl sub_80FE818 - movs r0, 0x33 - strh r0, [r4, 0x1E] -_080FE08C: - ldr r5, _080FE0B4 @ =gUnknown_3005E10 - ldrb r0, [r5, 0x10] - lsls r0, 1 - adds r1, r5, 0 - adds r1, 0x34 - adds r0, r1 - movs r1, 0 - movs r4, 0 - strh r4, [r0] - adds r0, r5, 0 - adds r0, 0x30 - strb r1, [r0] - strb r1, [r5, 0xA] - ldrb r0, [r5, 0x1E] - movs r1, 0x1 - bl sub_80FE7F0 - strh r4, [r5, 0x1E] - b _080FE16E - .align 2, 0 -_080FE0B4: .4byte gUnknown_3005E10 -_080FE0B8: .4byte gRfuLinkStatus -_080FE0BC: - cmp r6, 0 - bne _080FE16E - ldr r5, _080FE0E4 @ =gUnknown_3005E10 - ldrb r1, [r5, 0x5] - adds r0, r1, 0 - cmp r0, 0x16 - bne _080FE0E8 - ldrb r0, [r5, 0x11] - strb r0, [r5, 0x4] - ldrb r0, [r5, 0x12] - strb r0, [r5, 0x5] - ldrb r0, [r5, 0x2] - movs r0, 0x1 - strb r0, [r5, 0x2] - movs r0, 0x41 -_080FE0DA: - movs r1, 0 - bl sub_80FE7F0 - b _080FE16E - .align 2, 0 -_080FE0E4: .4byte gUnknown_3005E10 -_080FE0E8: - cmp r0, 0xF - bne _080FE16E - strb r1, [r5, 0x4] - ldrb r0, [r5, 0x2] - movs r4, 0x1 - strb r4, [r5, 0x2] - movs r0, 0x41 - movs r1, 0 - bl sub_80FE7F0 - adds r1, r5, 0 - adds r1, 0x24 - ldrb r0, [r5, 0x10] - lsls r4, r0 - ldrb r0, [r1] - orrs r4, r0 - strb r4, [r1] - ldrb r0, [r5, 0x10] - lsls r0, 1 - adds r1, 0x4 - adds r0, r1 - ldrh r1, [r5, 0x26] - movs r7, 0 - strh r1, [r0] - ldrb r1, [r5, 0x10] - movs r0, 0x4 - bl rfu_clearSlot - mov r4, sp - ldrb r0, [r5, 0x10] - movs r1, 0xE - bl rfu_NI_CHILD_setSendGameName - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - beq _080FE16E - strb r7, [r5, 0x5] - strb r7, [r5, 0x4] - bl sub_80FEAF4 - ldr r0, _080FE158 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r0, 0x2] - ldrb r0, [r0, 0x3] - orrs r0, r1 - bl sub_80FE818 - mov r0, sp - ldrb r0, [r0] - strh r0, [r5, 0x14] - movs r0, 0x25 - movs r1, 0x1 - bl sub_80FE7F0 - b _080FE16E - .align 2, 0 -_080FE158: .4byte gRfuLinkStatus -_080FE15C: - cmp r6, 0 - bne _080FE16E - ldr r0, _080FE178 @ =gUnknown_3005E10 - strb r6, [r0, 0x5] - strb r6, [r0, 0x4] - movs r0, 0x42 - movs r1, 0 - bl sub_80FE7F0 -_080FE16E: - ldr r1, _080FE178 @ =gUnknown_3005E10 - movs r0, 0x1 - strb r0, [r1, 0xE] - b _080FE1CA - .align 2, 0 -_080FE178: .4byte gUnknown_3005E10 -_080FE17C: - cmp r6, 0x3 - bne _080FE1CA - ldrb r0, [r7, 0xF] - cmp r0, 0 - beq _080FE1CA - mov r3, r8 - cmp r3, 0x24 - beq _080FE194 - cmp r3, 0x26 - beq _080FE194 - cmp r3, 0x27 - bne _080FE1CA -_080FE194: - bl rfu_REQ_RFUStatus - bl rfu_waitREQComplete - mov r0, sp - bl rfu_getRFUStatus - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _080FE1CA - ldr r4, _080FE1E0 @ =gRfuLinkStatus - ldr r0, [r4] - ldrb r0, [r0] - cmp r0, 0 - bne _080FE1CA - bl rfu_getSTWIRecvBuffer - ldr r1, [r4] - ldrb r1, [r1, 0x2] - strb r1, [r0, 0x4] - movs r1, 0x1 - strb r1, [r0, 0x5] - movs r0, 0x29 - bl sub_80FD850 - movs r6, 0 -_080FE1CA: - mov r4, r8 - cmp r4, 0x26 - bne _080FE1D2 - b _080FE2E6 -_080FE1D2: - cmp r4, 0x26 - bgt _080FE1E4 - cmp r4, 0x10 - bne _080FE1DC - b _080FE304 -_080FE1DC: - b _080FE322 - .align 2, 0 -_080FE1E0: .4byte gRfuLinkStatus -_080FE1E4: - mov r0, r8 - cmp r0, 0x30 - beq _080FE1F2 - cmp r0, 0x3D - bne _080FE1F0 - b _080FE304 -_080FE1F0: - b _080FE322 -_080FE1F2: - cmp r6, 0 - beq _080FE1F8 - b _080FE326 -_080FE1F8: - bl rfu_getSTWIRecvBuffer - ldr r4, _080FE2A8 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x8] - strh r0, [r4, 0x14] - bl sub_80FE83C - adds r2, r4, 0 - adds r2, 0x30 - ldrb r1, [r2] - cmp r1, 0 - beq _080FE24E - ldrb r0, [r4, 0x14] - adds r3, r1, 0 - bics r3, r0 - adds r0, r3, 0 - strb r0, [r2] - movs r3, 0 - adds r7, r4, 0 - adds r1, r7, 0 - movs r5, 0x1 - adds r4, r1, 0 - adds r4, 0x34 - movs r2, 0 -_080FE228: - ldrh r0, [r1, 0x14] - asrs r0, r3 - ands r0, r5 - cmp r0, 0 - beq _080FE238 - lsls r0, r3, 1 - adds r0, r4 - strh r2, [r0] -_080FE238: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080FE228 - ldr r1, _080FE2A8 @ =gUnknown_3005E10 - ldrb r0, [r1, 0x6] - cmp r0, 0 - bne _080FE24E - strb r0, [r1, 0x5] - strb r0, [r1, 0x4] -_080FE24E: - mov r3, sp - ldr r1, _080FE2A8 @ =gUnknown_3005E10 - ldrb r2, [r1] - ldrb r0, [r1, 0x14] - ands r0, r2 - strb r0, [r3] - movs r3, 0 - adds r7, r1, 0 - ldr r2, _080FE2AC @ =gRfuLinkStatus - mov r1, sp - movs r5, 0x1 - adds r4, r7, 0 -_080FE266: - ldrb r0, [r1] - asrs r0, r3 - ands r0, r5 - cmp r0, 0 - beq _080FE27A - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _080FE27A - subs r0, 0x1 - strb r0, [r7, 0x1] -_080FE27A: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080FE266 - ldrb r1, [r7, 0x14] - ldrb r0, [r7] - bics r0, r1 - strb r0, [r7] - ldrb r1, [r7, 0x7] - cmp r1, 0 - beq _080FE2C4 - ldr r0, [r2] - ldrb r0, [r0] - cmp r0, 0xFF - bne _080FE2D6 - cmp r1, 0x8 - bne _080FE2B0 - ldrh r0, [r7, 0x1C] - strh r0, [r7, 0x1A] - movs r0, 0x6 - strb r0, [r7, 0x7] - b _080FE2C2 - .align 2, 0 -_080FE2A8: .4byte gUnknown_3005E10 -_080FE2AC: .4byte gRfuLinkStatus -_080FE2B0: - ldrb r0, [r7, 0x4] - subs r0, 0x6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080FE2C4 - movs r0, 0x1 - strb r0, [r7, 0x7] - movs r0, 0x5 -_080FE2C2: - strb r0, [r7, 0x4] -_080FE2C4: - ldr r0, [r2] - ldrb r0, [r0] - cmp r0, 0xFF - bne _080FE2D6 - ldrb r0, [r7, 0x4] - cmp r0, 0 - bne _080FE2D6 - movs r0, 0xFF - strb r0, [r7, 0x6] -_080FE2D6: - ldrb r0, [r7, 0xE] - cmp r0, 0 - bne _080FE322 - movs r0, 0x40 - movs r1, 0x1 - bl sub_80FE7F0 - b _080FE322 -_080FE2E6: - bl sub_80FE6F0 - ldr r0, _080FE300 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xFF - beq _080FE322 - movs r0, 0x50 - movs r1, 0 - bl sub_80FE7F0 - b _080FE322 - .align 2, 0 -_080FE300: .4byte gRfuLinkStatus -_080FE304: - cmp r6, 0 - bne _080FE326 - ldr r0, _080FE350 @ =gUnknown_3005E10 - strb r6, [r0, 0xD] - strb r6, [r0, 0x1] - strb r6, [r0] - movs r1, 0xFF - strb r1, [r0, 0x6] - bl sub_80FEAF4 - mov r4, r8 - cmp r4, 0x3D - bne _080FE322 - bl sub_80FD484 -_080FE322: - cmp r6, 0 - beq _080FE376 -_080FE326: - ldr r7, _080FE350 @ =gUnknown_3005E10 - mov r0, r8 - cmp r0, 0x1C - bne _080FE358 - cmp r6, 0 - beq _080FE358 - ldrb r0, [r7, 0x7] - cmp r0, 0x4 - bne _080FE358 - ldr r2, _080FE354 @ =gRfuLinkStatus - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1] - ldr r1, [r2] - movs r0, 0xF - strb r0, [r1, 0x2] - bl sub_80FE818 - bl rfu_waitREQComplete - b _080FE388 - .align 2, 0 -_080FE350: .4byte gUnknown_3005E10 -_080FE354: .4byte gRfuLinkStatus -_080FE358: - movs r1, 0 - mov r3, r8 - strh r3, [r7, 0x14] - strh r6, [r7, 0x16] - ldrb r0, [r7, 0xE] - cmp r0, 0 - beq _080FE36A - strb r1, [r7, 0x5] - strb r1, [r7, 0x4] -_080FE36A: - movs r0, 0xF0 - movs r1, 0x2 - bl sub_80FE7F0 - bl sub_80FEAF4 -_080FE376: - mov r4, r8 - cmp r4, 0xFF - bne _080FE388 - movs r0, 0xF2 - movs r1, 0 - bl sub_80FE7F0 - bl sub_80FEAF4 -_080FE388: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FDC98 - - thumb_func_start sub_80FE394 -sub_80FE394: @ 80FE394 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r4, _080FE3C8 @ =gUnknown_3005E10 - ldrb r7, [r4, 0xE] - movs r0, 0 - strb r0, [r4, 0xE] - movs r0, 0x1 - strb r0, [r4, 0xF] - ldr r0, _080FE3CC @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r5, [r0] - cmp r5, 0 - bne _080FE3D0 - adds r0, r6, 0 - bl sub_80FD850 - ldrb r0, [r4, 0x2] - cmp r0, 0x1 - beq _080FE3E8 - bl sub_80FEAF4 - strb r5, [r4, 0xF] - strb r7, [r4, 0xE] - b _080FE40C - .align 2, 0 -_080FE3C8: .4byte gUnknown_3005E10 -_080FE3CC: .4byte gRfuLinkStatus -_080FE3D0: - mov r0, sp - bl rfu_UNI_PARENT_getDRAC_ACK - lsls r0, 16 - cmp r0, 0 - bne _080FE3E8 - mov r1, sp - ldrb r0, [r4, 0x3] - ldrb r1, [r1] - orrs r0, r1 - ldrb r1, [r4, 0x3] - strb r0, [r4, 0x3] -_080FE3E8: - ldr r4, _080FE414 @ =gUnknown_3005E10 - ldr r1, [r4, 0x44] - cmp r1, 0 - beq _080FE404 - adds r0, r6, 0 - bl _call_via_r1 - bl rfu_waitREQComplete - ldrb r0, [r4, 0x2] - cmp r0, 0x2 - bne _080FE404 - bl sub_80FEAF4 -_080FE404: - ldr r1, _080FE414 @ =gUnknown_3005E10 - movs r0, 0 - strb r0, [r1, 0xF] - strb r7, [r1, 0xE] -_080FE40C: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FE414: .4byte gUnknown_3005E10 - thumb_func_end sub_80FE394 - - thumb_func_start sub_80FE418 -sub_80FE418: @ 80FE418 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r1, _080FE49C @ =gUnknown_3005E10 - ldrb r0, [r1, 0x4] - subs r0, 0x5 - lsls r0, 24 - lsrs r0, 24 - adds r3, r1, 0 - cmp r0, 0x3 - bls _080FE436 - b _080FE62A -_080FE436: - ldr r0, _080FE4A0 @ =gRfuLinkStatus - ldr r2, [r0] - ldrb r1, [r2, 0x2] - ldrb r0, [r3, 0xC] - adds r4, r1, 0 - eors r4, r0 - ands r4, r1 - ldrb r0, [r2, 0x7] - bics r4, r0 - mov r8, r4 - strb r1, [r3, 0xC] - cmp r4, 0 - beq _080FE45E - strh r4, [r3, 0x14] - movs r0, 0x10 - movs r1, 0x1 - str r3, [sp, 0x4] - bl sub_80FE7F0 - ldr r3, [sp, 0x4] -_080FE45E: - movs r0, 0 - str r0, [sp] - movs r6, 0 - adds r7, r3, 0 - movs r1, 0x24 - adds r1, r3 - mov r9, r1 -_080FE46C: - movs r0, 0x80 - lsls r0, 17 - lsls r0, r6 - lsrs r4, r0, 24 - movs r5, 0 - mov r0, r8 - ands r0, r4 - cmp r0, 0 - beq _080FE4BE - lsls r1, r6, 1 - adds r0, r7, 0 - adds r0, 0x28 - adds r1, r0 - ldrh r0, [r7, 0x26] - strh r0, [r1] - mov r2, r9 - ldrb r1, [r2] - adds r0, r4, 0 - orrs r0, r1 - strb r0, [r2] - adds r6, 0x1 - mov r10, r6 - b _080FE574 - .align 2, 0 -_080FE49C: .4byte gUnknown_3005E10 -_080FE4A0: .4byte gRfuLinkStatus -_080FE4A4: - ldrb r1, [r7] - adds r0, r4, 0 - orrs r0, r1 - strb r0, [r7] - ldrb r0, [r7, 0x1] - adds r0, 0x1 - strb r0, [r7, 0x1] - ldr r0, [sp] - orrs r0, r4 - str r0, [sp] - movs r0, 0x1 - orrs r5, r0 - b _080FE508 -_080FE4BE: - mov r1, r9 - ldrb r0, [r1] - ands r0, r4 - adds r2, r6, 0x1 - mov r10, r2 - cmp r0, 0 - beq _080FE574 - ldr r0, _080FE518 @ =gRfuSlotStatusNI - lsls r1, r6, 2 - adds r1, r0 - ldr r1, [r1] - ldrh r0, [r1, 0x34] - cmp r0, 0x46 - bne _080FE524 - adds r0, r1, 0 - adds r0, 0x61 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FE53C - movs r5, 0x2 - ldr r3, [r3, 0x20] - ldrh r2, [r3] - ldr r0, _080FE51C @ =0x0000ffff - cmp r2, r0 - beq _080FE508 - ldr r0, _080FE520 @ =gRfuLinkStatus - ldr r0, [r0] - lsls r1, r6, 5 - adds r0, r1 - ldrh r0, [r0, 0x18] - ldr r1, _080FE51C @ =0x0000ffff -_080FE4FC: - cmp r0, r2 - beq _080FE4A4 - adds r3, 0x2 - ldrh r2, [r3] - cmp r2, r1 - bne _080FE4FC -_080FE508: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - bne _080FE53C - movs r0, 0x4 - orrs r5, r0 - b _080FE53C - .align 2, 0 -_080FE518: .4byte gRfuSlotStatusNI -_080FE51C: .4byte 0x0000ffff -_080FE520: .4byte gRfuLinkStatus -_080FE524: - lsls r1, r6, 1 - adds r0, r3, 0 - adds r0, 0x28 - adds r1, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - ldr r1, _080FE5F8 @ =0x0000ffff - ands r0, r1 - cmp r0, 0 - bne _080FE53C - movs r5, 0x6 -_080FE53C: - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _080FE562 - mov r2, r9 - ldrb r0, [r2] - bics r0, r4 - movs r2, 0 - mov r1, r9 - strb r0, [r1] - lsls r0, r6, 1 - adds r1, r7, 0 - adds r1, 0x28 - adds r0, r1 - strh r2, [r0] - movs r0, 0x8 - adds r1, r6, 0 - bl rfu_clearSlot -_080FE562: - movs r0, 0x4 - ands r5, r0 - ldr r3, _080FE5FC @ =gUnknown_3005E10 - cmp r5, 0 - beq _080FE574 - ldrb r1, [r7, 0xD] - adds r0, r4, 0 - orrs r0, r1 - strb r0, [r7, 0xD] -_080FE574: - mov r2, r10 - lsls r0, r2, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bhi _080FE580 - b _080FE46C -_080FE580: - ldr r4, [sp] - cmp r4, 0 - beq _080FE592 - ldr r0, _080FE5FC @ =gUnknown_3005E10 - strh r4, [r0, 0x14] - movs r0, 0x11 - movs r1, 0x1 - bl sub_80FE7F0 -_080FE592: - ldr r1, _080FE5FC @ =gUnknown_3005E10 - ldrb r0, [r1, 0xD] - cmp r0, 0 - beq _080FE5CE - movs r5, 0x1 - ldr r0, _080FE600 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x6] - cmp r0, 0 - beq _080FE5B2 - ldrb r0, [r1, 0x3] - ldrb r1, [r1] - ands r0, r1 - cmp r0, r1 - beq _080FE5B2 - movs r5, 0 -_080FE5B2: - cmp r5, 0 - beq _080FE5CE - ldr r4, _080FE5FC @ =gUnknown_3005E10 - ldrb r0, [r4, 0xD] - bl sub_80FE818 - ldrb r0, [r4, 0xD] - movs r1, 0 - strh r0, [r4, 0x14] - strb r1, [r4, 0xD] - movs r0, 0x12 - movs r1, 0x1 - bl sub_80FE7F0 -_080FE5CE: - ldr r0, _080FE5FC @ =gUnknown_3005E10 - adds r1, r0, 0 - adds r1, 0x24 - ldrb r1, [r1] - adds r3, r0, 0 - cmp r1, 0 - bne _080FE62A - ldrb r0, [r3, 0x4] - cmp r0, 0x8 - bne _080FE62A - ldrb r0, [r3, 0x7] - cmp r0, 0 - bne _080FE604 - strb r0, [r3, 0x5] - strb r0, [r3, 0x4] - movs r0, 0x14 - movs r1, 0 - bl sub_80FE7F0 - b _080FE62A - .align 2, 0 -_080FE5F8: .4byte 0x0000ffff -_080FE5FC: .4byte gUnknown_3005E10 -_080FE600: .4byte gRfuLinkStatus -_080FE604: - cmp r0, 0x2 - bne _080FE610 - movs r0, 0x3 - strb r0, [r3, 0x7] - movs r0, 0x9 - b _080FE616 -_080FE610: - movs r0, 0x1 - strb r0, [r3, 0x7] - movs r0, 0x5 -_080FE616: - strb r0, [r3, 0x4] - ldrb r0, [r3] - cmp r0, 0 - beq _080FE62A - movs r0, 0 - strh r0, [r3, 0x1A] - movs r0, 0x8 - strb r0, [r3, 0x7] - movs r0, 0x5 - strb r0, [r3, 0x4] -_080FE62A: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FE418 - - thumb_func_start sub_80FE63C -sub_80FE63C: @ 80FE63C - push {r4-r6,lr} - ldr r1, _080FE6E0 @ =0x04000208 - ldrh r0, [r1] - adds r6, r0, 0 - movs r0, 0 - strh r0, [r1] - ldr r4, _080FE6E4 @ =gUnknown_3005E10 - ldrb r0, [r4, 0x4] - cmp r0, 0xF - bne _080FE6A0 - ldrb r1, [r4, 0x10] - lsls r1, 1 - adds r5, r4, 0 - adds r5, 0x28 - adds r1, r5 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _080FE676 - ldr r1, _080FE6E8 @ =gRfuSlotStatusNI - ldrb r0, [r4, 0x10] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x27 - bne _080FE6A0 -_080FE676: - bl sub_80FEB14 - movs r0, 0x18 - strb r0, [r4, 0x4] - ldrb r1, [r4, 0x10] - movs r0, 0x4 - bl rfu_clearSlot - adds r2, r4, 0 - adds r2, 0x24 - movs r1, 0x1 - ldrb r0, [r4, 0x10] - lsls r1, r0 - ldrb r0, [r2] - bics r0, r1 - strb r0, [r2] - ldrb r0, [r4, 0x10] - lsls r0, 1 - adds r0, r5 - movs r1, 0 - strh r1, [r0] -_080FE6A0: - ldr r0, _080FE6E0 @ =0x04000208 - strh r6, [r0] - ldr r5, _080FE6E4 @ =gUnknown_3005E10 - ldrb r0, [r5, 0x4] - cmp r0, 0x18 - bne _080FE6DA - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - bne _080FE6B6 - bl sub_80FEB14 -_080FE6B6: - ldrb r0, [r5, 0x2] - adds r4, r0, 0 - cmp r4, 0 - bne _080FE6DA - strb r4, [r5, 0x5] - strb r4, [r5, 0x4] - ldr r0, _080FE6EC @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r0, 0x2] - ldrb r0, [r0, 0x3] - orrs r0, r1 - bl sub_80FE818 - strh r4, [r5, 0x14] - movs r0, 0x25 - movs r1, 0x1 - bl sub_80FE7F0 -_080FE6DA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FE6E0: .4byte 0x04000208 -_080FE6E4: .4byte gUnknown_3005E10 -_080FE6E8: .4byte gRfuSlotStatusNI -_080FE6EC: .4byte gRfuLinkStatus - thumb_func_end sub_80FE63C - - thumb_func_start sub_80FE6F0 -sub_80FE6F0: @ 80FE6F0 - push {r4,r5,lr} - ldr r5, _080FE744 @ =gUnknown_3005E10 - ldrb r0, [r5, 0x4] - cmp r0, 0xF - bne _080FE73C - ldr r1, _080FE748 @ =gRfuSlotStatusNI - ldrb r2, [r5, 0x10] - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x26 - bne _080FE73C - movs r4, 0 - strb r4, [r5, 0x5] - strb r4, [r5, 0x4] - movs r0, 0x4 - adds r1, r2, 0 - bl rfu_clearSlot - adds r2, r5, 0 - adds r2, 0x24 - movs r1, 0x1 - ldrb r0, [r5, 0x10] - lsls r1, r0 - ldrb r0, [r2] - bics r0, r1 - strb r0, [r2] - ldrb r0, [r5, 0x10] - lsls r0, 1 - adds r1, r5, 0 - adds r1, 0x28 - adds r0, r1 - strh r4, [r0] - movs r0, 0x24 - movs r1, 0 - bl sub_80FE7F0 -_080FE73C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FE744: .4byte gUnknown_3005E10 -_080FE748: .4byte gRfuSlotStatusNI - thumb_func_end sub_80FE6F0 - - thumb_func_start sub_80FE74C -sub_80FE74C: @ 80FE74C - push {lr} - ldr r1, _080FE774 @ =gUnknown_3005E10 - ldrb r0, [r1, 0x6] - cmp r0, 0 - bne _080FE770 - ldrb r0, [r1, 0xA] - cmp r0, 0x1 - bne _080FE770 - ldrb r0, [r1, 0x4] - strb r0, [r1, 0x11] - ldrb r0, [r1, 0x5] - strb r0, [r1, 0x12] - movs r0, 0x10 - strb r0, [r1, 0x4] - movs r0, 0x11 - strb r0, [r1, 0x5] - movs r0, 0x2 - strb r0, [r1, 0xA] -_080FE770: - pop {r0} - bx r0 - .align 2, 0 -_080FE774: .4byte gUnknown_3005E10 - thumb_func_end sub_80FE74C - - thumb_func_start sub_80FE778 -sub_80FE778: @ 80FE778 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - movs r5, 0 - ldr r1, _080FE7E4 @ =gRfuLinkStatus - ldr r0, [r1] - ldrb r0, [r0, 0x8] - cmp r6, r0 - bcs _080FE7D4 - mov r8, r0 - ldr r0, _080FE7E8 @ =gUnknown_3005E10 - mov r10, r0 - mov r9, r1 -_080FE798: - mov r1, r10 - ldr r3, [r1, 0x20] - ldrh r2, [r3] - adds r0, r5, 0x1 - mov r12, r0 - ldr r1, _080FE7EC @ =0x0000ffff - cmp r2, r1 - beq _080FE7CA - mov r1, r9 - ldr r0, [r1] - lsls r1, r5, 5 - adds r0, r1 - ldrh r4, [r0, 0x18] - ldr r7, _080FE7EC @ =0x0000ffff - movs r1, 0x1 - lsls r1, r5 -_080FE7B8: - cmp r4, r2 - bne _080FE7C2 - orrs r6, r1 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_080FE7C2: - adds r3, 0x2 - ldrh r2, [r3] - cmp r2, r7 - bne _080FE7B8 -_080FE7CA: - mov r1, r12 - lsls r0, r1, 24 - lsrs r5, r0, 24 - cmp r5, r8 - bcc _080FE798 -_080FE7D4: - adds r0, r6, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080FE7E4: .4byte gRfuLinkStatus -_080FE7E8: .4byte gUnknown_3005E10 -_080FE7EC: .4byte 0x0000ffff - thumb_func_end sub_80FE778 - - thumb_func_start sub_80FE7F0 -sub_80FE7F0: @ 80FE7F0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r4, _080FE814 @ =gUnknown_3005E10 - ldr r2, [r4, 0x40] - cmp r2, 0 - beq _080FE806 - bl _call_via_r2 -_080FE806: - movs r0, 0 - strh r0, [r4, 0x16] - strh r0, [r4, 0x14] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FE814: .4byte gUnknown_3005E10 - thumb_func_end sub_80FE7F0 - - thumb_func_start sub_80FE818 -sub_80FE818: @ 80FE818 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080FE838 @ =gUnknown_3005E10 - ldrb r5, [r4, 0xE] - movs r1, 0x1 - strb r1, [r4, 0xE] - bl rfu_REQ_disconnect - bl rfu_waitREQComplete - strb r5, [r4, 0xE] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FE838: .4byte gUnknown_3005E10 - thumb_func_end sub_80FE818 - - thumb_func_start sub_80FE83C -sub_80FE83C: @ 80FE83C - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080FE908 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080FE884 - movs r4, 0 -_080FE84E: - ldr r1, _080FE90C @ =gRfuSlotStatusNI - lsls r0, r4, 2 - adds r0, r1 - ldr r2, [r0] - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080FE87A - ldrb r1, [r2, 0x1A] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080FE87A - adds r2, r1, 0 - bics r2, r5 - movs r0, 0x20 - adds r1, r4, 0 - bl rfu_changeSendTarget -_080FE87A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080FE84E -_080FE884: - ldr r0, _080FE908 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x5] - cmp r0, 0 - beq _080FE8C2 - movs r4, 0 -_080FE890: - ldr r1, _080FE90C @ =gRfuSlotStatusNI - lsls r0, r4, 2 - adds r0, r1 - ldr r2, [r0] - ldrh r0, [r2, 0x34] - movs r3, 0x80 - lsls r3, 8 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080FE8B8 - adds r0, r2, 0 - adds r0, 0x4E - ldrb r0, [r0] - ands r0, r5 - cmp r0, 0 - beq _080FE8B8 - adds r0, r4, 0 - bl rfu_NI_stopReceivingData -_080FE8B8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080FE890 -_080FE8C2: - ldr r0, _080FE908 @ =gRfuLinkStatus - ldr r3, [r0] - ldrb r2, [r3, 0x6] - cmp r2, 0 - beq _080FE900 - mvns r1, r5 - adds r0, r1, 0 - ands r0, r2 - strb r0, [r3, 0x6] - movs r4, 0 - ldr r7, _080FE910 @ =gRfuSlotStatusUNI - ldr r6, _080FE914 @ =0x00008024 -_080FE8DA: - lsls r0, r4, 2 - adds r0, r7 - ldr r2, [r0] - ldrh r0, [r2] - cmp r0, r6 - bne _080FE8F6 - ldrb r3, [r2, 0x3] - adds r0, r5, 0 - ands r0, r3 - cmp r0, 0 - beq _080FE8F6 - adds r0, r1, 0 - ands r0, r3 - strb r0, [r2, 0x3] -_080FE8F6: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080FE8DA -_080FE900: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FE908: .4byte gRfuLinkStatus -_080FE90C: .4byte gRfuSlotStatusNI -_080FE910: .4byte gRfuSlotStatusUNI -_080FE914: .4byte 0x00008024 - thumb_func_end sub_80FE83C - - thumb_func_start sub_80FE918 -sub_80FE918: @ 80FE918 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080FEA04 @ =gUnknown_3005E10 - ldrh r0, [r0, 0x18] - cmp r0, 0 - beq _080FE9F4 - ldr r0, _080FEA08 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _080FE9B8 - movs r6, 0 -_080FE938: - ldr r3, _080FEA0C @ =gRfuSlotStatusNI - lsls r2, r6, 2 - adds r0, r2, r3 - ldr r0, [r0] - ldrh r1, [r0] - movs r4, 0x80 - lsls r4, 8 - adds r0, r4, 0 - ands r1, r0 - adds r7, r2, 0 - adds r0, r6, 0x1 - mov r9, r0 - cmp r1, 0 - beq _080FE9AE - movs r5, 0 - movs r4, 0 - movs r1, 0x1 - mov r8, r1 - mov r10, r3 -_080FE95E: - adds r0, r7, r3 - ldr r0, [r0] - ldrb r0, [r0, 0x1A] - asrs r0, r4 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _080FE988 - lsls r0, r4, 2 - adds r0, r3 - ldr r0, [r0] - ldr r1, _080FEA04 @ =gUnknown_3005E10 - ldrh r0, [r0, 0x2] - ldrh r1, [r1, 0x18] - cmp r0, r1 - bls _080FE988 - mov r0, r8 - lsls r0, r4 - orrs r5, r0 - lsls r0, r5, 24 - lsrs r5, r0, 24 -_080FE988: - cmp r5, 0 - beq _080FE9A4 - mov r1, r10 - adds r0, r7, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x1A] - adds r2, r5, 0 - eors r2, r0 - movs r0, 0x20 - adds r1, r6, 0 - str r3, [sp] - bl rfu_changeSendTarget - ldr r3, [sp] -_080FE9A4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080FE95E -_080FE9AE: - mov r3, r9 - lsls r0, r3, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _080FE938 -_080FE9B8: - ldr r0, _080FEA08 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x5] - cmp r0, 0 - beq _080FE9F4 - movs r6, 0 -_080FE9C4: - ldr r1, _080FEA0C @ =gRfuSlotStatusNI - lsls r0, r6, 2 - adds r0, r1 - ldr r2, [r0] - ldrh r0, [r2, 0x34] - movs r4, 0x80 - lsls r4, 8 - adds r1, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _080FE9EA - ldr r1, _080FEA04 @ =gUnknown_3005E10 - ldrh r0, [r2, 0x36] - ldrh r1, [r1, 0x18] - cmp r0, r1 - bls _080FE9EA - adds r0, r6, 0 - bl rfu_NI_stopReceivingData -_080FE9EA: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _080FE9C4 -_080FE9F4: - 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 -_080FEA04: .4byte gUnknown_3005E10 -_080FEA08: .4byte gRfuLinkStatus -_080FEA0C: .4byte gRfuSlotStatusNI - thumb_func_end sub_80FE918 - - thumb_func_start sub_80FEA10 -sub_80FEA10: @ 80FEA10 - push {lr} - ldr r1, _080FEA20 @ =gUnknown_3005E10 - str r0, [r1, 0x44] - ldr r0, _080FEA24 @ =sub_80FE394 - bl rfu_setMSCCallback - pop {r0} - bx r0 - .align 2, 0 -_080FEA20: .4byte gUnknown_3005E10 -_080FEA24: .4byte sub_80FE394 - thumb_func_end sub_80FEA10 - - thumb_func_start sub_80FEA28 -sub_80FEA28: @ 80FEA28 - ldr r1, _080FEA30 @ =gUnknown_3005E10 - str r0, [r1, 0x40] - bx lr - .align 2, 0 -_080FEA30: .4byte gUnknown_3005E10 - thumb_func_end sub_80FEA28 - - thumb_func_start sub_80FEA34 -sub_80FEA34: @ 80FEA34 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r0, _080FEA58 @ =gUnknown_3005E10 - ldrb r1, [r0, 0x9] - adds r3, r0, 0 - cmp r1, 0 - beq _080FEA5C - cmp r4, 0 - bne _080FEA5C - adds r0, 0x30 - ldrb r0, [r0] - cmp r0, 0 - beq _080FEA5C - movs r0, 0x5 - b _080FEA6C - .align 2, 0 -_080FEA58: .4byte gUnknown_3005E10 -_080FEA5C: - ldr r2, _080FEA74 @ =0x04000208 - ldrh r1, [r2] - movs r0, 0 - strh r0, [r2] - strb r4, [r3, 0x9] - strh r5, [r3, 0x32] - strh r1, [r2] - movs r0, 0 -_080FEA6C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080FEA74: .4byte 0x04000208 - thumb_func_end sub_80FEA34 - - thumb_func_start sub_80FEA78 -sub_80FEA78: @ 80FEA78 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _080FEA94 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r0, 0x4] - ldrb r0, [r0, 0x5] - orrs r0, r1 - cmp r0, 0 - bne _080FEA9C - ldr r0, _080FEA98 @ =gUnknown_3005E10 - strh r2, [r0, 0x18] - movs r0, 0 - b _080FEAAC - .align 2, 0 -_080FEA94: .4byte gRfuLinkStatus -_080FEA98: .4byte gUnknown_3005E10 -_080FEA9C: - ldr r1, _080FEAB0 @ =gUnknown_3005E10 - movs r0, 0x6 - strh r0, [r1, 0x14] - movs r0, 0xF3 - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0x6 -_080FEAAC: - pop {r1} - bx r1 - .align 2, 0 -_080FEAB0: .4byte gUnknown_3005E10 - thumb_func_end sub_80FEA78 - - thumb_func_start sub_80FEAB4 -sub_80FEAB4: @ 80FEAB4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - ldr r1, _080FEADC @ =gUnknown_3005E10 - ldrb r0, [r1, 0x4] - subs r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bhi _080FEAE0 - movs r0, 0x7 - strh r0, [r1, 0x14] - movs r0, 0xF3 - movs r1, 0x1 - bl sub_80FE7F0 - movs r0, 0x7 - b _080FEAEE - .align 2, 0 -_080FEADC: .4byte gUnknown_3005E10 -_080FEAE0: - cmp r2, 0 - beq _080FEAEA - movs r0, 0x1 - strb r0, [r1, 0xB] - b _080FEAEC -_080FEAEA: - strb r3, [r1, 0xB] -_080FEAEC: - movs r0, 0 -_080FEAEE: - pop {r1} - bx r1 - thumb_func_end sub_80FEAB4 - - thumb_func_start sub_80FEAF4 -sub_80FEAF4: @ 80FEAF4 - push {lr} - ldr r1, _080FEB10 @ =gUnknown_3005E10 - ldrb r0, [r1, 0x2] - cmp r0, 0 - beq _080FEB0C - ldrb r0, [r1, 0x2] - movs r0, 0 - strb r0, [r1, 0x2] - movs r0, 0x45 - movs r1, 0 - bl sub_80FE7F0 -_080FEB0C: - pop {r0} - bx r0 - .align 2, 0 -_080FEB10: .4byte gUnknown_3005E10 - thumb_func_end sub_80FEAF4 - - thumb_func_start sub_80FEB14 -sub_80FEB14: @ 80FEB14 - push {lr} - ldr r1, _080FEB28 @ =gUnknown_3005E10 - ldrb r0, [r1, 0x2] - cmp r0, 0 - bne _080FEB2C - movs r0, 0x45 - movs r1, 0 - bl sub_80FE7F0 - b _080FEB38 - .align 2, 0 -_080FEB28: .4byte gUnknown_3005E10 -_080FEB2C: - ldrb r0, [r1, 0x2] - cmp r0, 0x1 - bne _080FEB38 - ldrb r0, [r1, 0x2] - movs r0, 0x2 - strb r0, [r1, 0x2] -_080FEB38: - pop {r0} - bx r0 - thumb_func_end sub_80FEB14 - - thumb_func_start sub_80FEB3C -sub_80FEB3C: @ 80FEB3C - push {lr} - ldr r0, _080FEB5C @ =gUnknown_3005E10 - ldrb r1, [r0, 0x7] - adds r2, r0, 0 - cmp r1, 0 - beq _080FEBA6 - ldrb r0, [r2, 0x4] - subs r0, 0x5 - cmp r0, 0x6 - bhi _080FEBA6 - lsls r0, 2 - ldr r1, _080FEB60 @ =_080FEB64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FEB5C: .4byte gUnknown_3005E10 -_080FEB60: .4byte _080FEB64 - .align 2, 0 -_080FEB64: - .4byte _080FEB80 - .4byte _080FEB88 - .4byte _080FEB92 - .4byte _080FEB92 - .4byte _080FEB98 - .4byte _080FEB98 - .4byte _080FEB9E -_080FEB80: - movs r0, 0x3 - strb r0, [r2, 0x7] - movs r0, 0x9 - b _080FEBA4 -_080FEB88: - movs r0, 0x2 - strb r0, [r2, 0x7] - movs r0, 0x1 - strh r0, [r2, 0x1A] - b _080FEBA6 -_080FEB92: - movs r0, 0x2 - strb r0, [r2, 0x7] - b _080FEBA6 -_080FEB98: - movs r0, 0x28 - strh r0, [r2, 0x1A] - b _080FEBA6 -_080FEB9E: - movs r0, 0x28 - strh r0, [r2, 0x1A] - movs r0, 0xA -_080FEBA4: - strb r0, [r2, 0x4] -_080FEBA6: - pop {r0} - bx r0 - thumb_func_end sub_80FEB3C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s deleted file mode 100644 index 10d4fd03d..000000000 --- a/asm/link_rfu_2.s +++ /dev/null @@ -1,10188 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start nullsub_87 -nullsub_87: @ 80F85F0 - bx lr - thumb_func_end nullsub_87 - - thumb_func_start nullsub_88 -nullsub_88: @ 80F85F4 - bx lr - thumb_func_end nullsub_88 - - thumb_func_start sub_80F85F8 -sub_80F85F8: @ 80F85F8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - ldr r6, _080F869C @ =gUnknown_3005450 - adds r5, r6, 0 - adds r5, 0xEE - ldrb r4, [r5] - mov r0, sp - movs r7, 0 - strh r7, [r0] - ldr r2, _080F86A0 @ =0x010004d6 - adds r1, r6, 0 - bl CpuSet - movs r0, 0xFF - strb r0, [r6, 0xC] - ldrb r0, [r5] - strb r4, [r5] - ldrb r0, [r5] - cmp r0, 0x4 - beq _080F862A - ldrb r0, [r5] - strb r7, [r5] -_080F862A: - mov r7, sp - adds r7, 0x2 - add r0, sp, 0x4 - mov r8, r0 - movs r0, 0x6 - add r0, sp - mov r9, r0 - adds r5, r6, 0 - adds r5, 0x80 - movs r4, 0x4 -_080F863E: - adds r0, r5, 0 - bl sub_80F9CB4 - adds r5, 0x14 - subs r4, 0x1 - cmp r4, 0 - bge _080F863E - movs r5, 0 - ldr r4, _080F86A4 @ =gUnknown_30054BC - adds r0, r4, 0 - bl sub_80F9CB4 - adds r0, r4, 0 - adds r0, 0xB8 - bl sub_80FC478 - ldr r0, _080F86A8 @ =0x00000634 - adds r4, r0 - adds r0, r4, 0 - bl sub_80FC4D4 - strh r5, [r7] - ldr r1, _080F86AC @ =gSendCmd - ldr r2, _080F86B0 @ =0x01000008 - adds r0, r7, 0 - bl CpuSet - mov r0, r8 - strh r5, [r0] - ldr r1, _080F86B4 @ =gRecvCmds - ldr r2, _080F86B8 @ =0x01000028 - bl CpuSet - mov r0, r9 - strh r5, [r0] - ldr r1, _080F86BC @ =gLinkPlayers - ldr r2, _080F86C0 @ =0x01000046 - bl CpuSet - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F869C: .4byte gUnknown_3005450 -_080F86A0: .4byte 0x010004d6 -_080F86A4: .4byte gUnknown_30054BC -_080F86A8: .4byte 0x00000634 -_080F86AC: .4byte gSendCmd -_080F86B0: .4byte 0x01000008 -_080F86B4: .4byte gRecvCmds -_080F86B8: .4byte 0x01000028 -_080F86BC: .4byte gLinkPlayers -_080F86C0: .4byte 0x01000046 - thumb_func_end sub_80F85F8 - - thumb_func_start InitRFU -InitRFU: @ 80F86C4 - push {r4-r6,lr} - ldr r4, _080F86EC @ =gIntrTable - ldr r5, [r4, 0x4] - ldr r6, [r4, 0x8] - bl sub_80F86F4 - bl rfu_REQ_stopMode - bl rfu_waitREQComplete - ldr r1, _080F86F0 @ =0x04000208 - movs r0, 0 - strh r0, [r1] - str r5, [r4, 0x4] - str r6, [r4, 0x8] - movs r0, 0x1 - strh r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F86EC: .4byte gIntrTable -_080F86F0: .4byte 0x04000208 - thumb_func_end InitRFU - - thumb_func_start sub_80F86F4 -sub_80F86F4: @ 80F86F4 - push {r4,lr} - ldr r0, _080F8728 @ =gRfuAPIBuffer - ldr r1, _080F872C @ =0x00000e64 - ldr r4, _080F8730 @ =gIntrTable + 0x4 - adds r2, r4, 0 - movs r3, 0x1 - bl rfu_initializeAPI - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080F8722 - ldr r0, _080F8734 @ =gLinkType - strh r1, [r0] - movs r0, 0 - bl sub_80FB128 - bl sub_80F85F8 - adds r1, r4, 0x4 - movs r0, 0x3 - bl rfu_setTimerInterrupt -_080F8722: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F8728: .4byte gRfuAPIBuffer -_080F872C: .4byte 0x00000e64 -_080F8730: .4byte gIntrTable + 0x4 -_080F8734: .4byte gLinkType - thumb_func_end sub_80F86F4 - - thumb_func_start sub_80F8738 -sub_80F8738: @ 80F8738 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_80FA738 - ldr r0, _080F8758 @ =gUnknown_3005450 - ldrh r0, [r0, 0x4] - cmp r0, 0x12 - bls _080F874C - b _080F8852 -_080F874C: - lsls r0, 2 - ldr r1, _080F875C @ =_080F8760 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F8758: .4byte gUnknown_3005450 -_080F875C: .4byte _080F8760 - .align 2, 0 -_080F8760: - .4byte _080F87AC - .4byte _080F8852 - .4byte _080F87D4 - .4byte _080F8852 - .4byte _080F8804 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8852 - .4byte _080F8818 -_080F87AC: - ldr r0, _080F87C8 @ =gUnknown_203ABF0 - bl sub_80FD4B0 - ldr r0, _080F87CC @ =gUnknown_3005450 - movs r2, 0x1 - strh r2, [r0, 0x4] - ldr r1, _080F87D0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0xA] - b _080F8852 - .align 2, 0 -_080F87C8: .4byte gUnknown_203ABF0 -_080F87CC: .4byte gUnknown_3005450 -_080F87D0: .4byte gTasks -_080F87D4: - ldr r4, _080F87F8 @ =gUnknown_3005450 - ldrb r0, [r4, 0xC] - ldr r3, _080F87FC @ =gUnknown_843EC8C - movs r1, 0 - movs r2, 0xF0 - bl sub_80FD538 - movs r0, 0x3 - strh r0, [r4, 0x4] - ldr r1, _080F8800 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x6 - strh r1, [r0, 0xA] - b _080F8852 - .align 2, 0 -_080F87F8: .4byte gUnknown_3005450 -_080F87FC: .4byte gUnknown_843EC8C -_080F8800: .4byte gTasks -_080F8804: - movs r0, 0 - bl sub_80FD760 - ldr r1, _080F8814 @ =gUnknown_3005450 - movs r0, 0x5 - strh r0, [r1, 0x4] - b _080F8852 - .align 2, 0 -_080F8814: .4byte gUnknown_3005450 -_080F8818: - ldr r4, _080F8858 @ =gUnknown_3005450 - ldr r0, _080F885C @ =0x00000993 - adds r1, r4, r0 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r0, _080F8860 @ =sub_80F8DA8 - bl sub_80FEA10 - bl sub_80F8AA4 - bl sub_80F8AEC - movs r0, 0x14 - strh r0, [r4, 0x4] - ldr r1, _080F8864 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - strh r1, [r0, 0xA] - ldr r0, _080F8868 @ =sub_80FA834 - movs r1, 0x5 - bl CreateTask - adds r0, r5, 0 - bl DestroyTask -_080F8852: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F8858: .4byte gUnknown_3005450 -_080F885C: .4byte 0x00000993 -_080F8860: .4byte sub_80F8DA8 -_080F8864: .4byte gTasks -_080F8868: .4byte sub_80FA834 - thumb_func_end sub_80F8738 - - thumb_func_start sub_80F886C -sub_80F886C: @ 80F886C - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080F8878 @ =gUnknown_843EC51 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080F8878: .4byte gUnknown_843EC51 - thumb_func_end sub_80F886C - - thumb_func_start sub_80F887C -sub_80F887C: @ 80F887C - push {r4-r7,lr} - adds r2, r0, 0 - adds r5, r1, 0 - movs r4, 0x1 - adds r1, r2, 0 - movs r6, 0 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _080F88BC - movs r3, 0 - movs r5, 0x1 - ldr r1, _080F88B8 @ =gUnknown_3005DE6 -_080F8896: - adds r0, r2, 0 - ands r0, r5 - cmp r0, 0 - beq _080F88A8 - adds r0, r3, r1 - strb r4, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080F88A8: - asrs r2, 1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080F8896 - b _080F8932 - .align 2, 0 -_080F88B8: .4byte gUnknown_3005DE6 -_080F88BC: - movs r3, 0 - mvns r0, r1 - mov r12, r0 - movs r7, 0x1 - ldr r4, _080F8938 @ =gUnknown_3005DE6 -_080F88C6: - adds r2, r1, 0 - ands r2, r7 - cmp r2, 0 - bne _080F88D2 - adds r0, r3, r4 - strb r2, [r0] -_080F88D2: - asrs r1, 1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080F88C6 - movs r4, 0x4 - ldr r0, _080F8938 @ =gUnknown_3005DE6 - ldrb r7, [r0] -_080F88E4: - movs r3, 0 - subs r1, r4, 0x1 - cmp r7, r4 - beq _080F8900 - ldr r2, _080F8938 @ =gUnknown_3005DE6 -_080F88EE: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bhi _080F8900 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, r4 - bne _080F88EE -_080F8900: - cmp r3, 0x4 - bne _080F8906 - adds r6, r4, 0 -_080F8906: - lsls r0, r1, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080F88E4 - mov r0, r12 - ands r5, r0 - movs r3, 0 - movs r2, 0x1 - ldr r1, _080F8938 @ =gUnknown_3005DE6 -_080F8918: - adds r0, r5, 0 - ands r0, r2 - cmp r0, 0 - beq _080F8926 - adds r0, r3, r1 - strb r6, [r0] - adds r6, 0x1 -_080F8926: - asrs r5, 1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080F8918 -_080F8932: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F8938: .4byte gUnknown_3005DE6 - thumb_func_end sub_80F887C - - thumb_func_start sub_80F893C -sub_80F893C: @ 80F893C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080F8958 @ =gUnknown_3005450 - ldrh r3, [r0, 0x4] - adds r7, r0, 0 - cmp r3, 0xC - bls _080F894E - b _080F8A8A -_080F894E: - lsls r0, r3, 2 - ldr r1, _080F895C @ =_080F8960 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F8958: .4byte gUnknown_3005450 -_080F895C: .4byte _080F8960 - .align 2, 0 -_080F8960: - .4byte _080F8994 - .4byte _080F8A8A - .4byte _080F8A8A - .4byte _080F8A8A - .4byte _080F8A8A - .4byte _080F8A8A - .4byte _080F89AC - .4byte _080F8A8A - .4byte _080F8A8A - .4byte _080F89D4 - .4byte _080F8A8A - .4byte _080F89E8 - .4byte _080F8A2C -_080F8994: - ldr r0, _080F89A4 @ =gUnknown_843EBB4 - bl sub_80FD4B0 - ldr r0, _080F89A8 @ =gUnknown_3005450 - movs r2, 0x1 - strh r2, [r0, 0x4] - b _080F89BC - .align 2, 0 -_080F89A4: .4byte gUnknown_843EBB4 -_080F89A8: .4byte gUnknown_3005450 -_080F89AC: - ldrb r0, [r7, 0xC] - ldr r3, _080F89CC @ =gUnknown_843EC8C - movs r1, 0 - movs r2, 0xF0 - bl sub_80FD538 - movs r2, 0x7 - strh r2, [r7, 0x4] -_080F89BC: - ldr r1, _080F89D0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0xA] - b _080F8A8A - .align 2, 0 -_080F89CC: .4byte gUnknown_843EC8C -_080F89D0: .4byte gTasks -_080F89D4: - ldr r0, _080F89E4 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - movs r0, 0xA - strh r0, [r1, 0xA] - b _080F8A8A - .align 2, 0 -_080F89E4: .4byte gTasks -_080F89E8: - bl sub_80FA788 - cmp r0, 0x6 - beq _080F8A0C - cmp r0, 0x6 - bgt _080F89FA - cmp r0, 0x5 - beq _080F8A00 - b _080F8A8A -_080F89FA: - cmp r0, 0x9 - beq _080F8A0C - b _080F8A8A -_080F8A00: - ldr r1, _080F8A08 @ =gUnknown_3005450 - movs r0, 0xC - strh r0, [r1, 0x4] - b _080F8A8A - .align 2, 0 -_080F8A08: .4byte gUnknown_3005450 -_080F8A0C: - bl sub_80FEB14 - ldr r0, _080F8A24 @ =gUnknown_3005450 - ldr r1, _080F8A28 @ =0x0000099c - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - adds r0, r6, 0 - bl DestroyTask - b _080F8A8A - .align 2, 0 -_080F8A24: .4byte gUnknown_3005450 -_080F8A28: .4byte 0x0000099c -_080F8A2C: - ldr r0, _080F8A90 @ =0x000008f6 - adds r4, r7, r0 - ldrb r0, [r4] - movs r5, 0x80 - lsls r5, 17 - lsls r5, r0 - lsrs r5, 24 - ldrb r1, [r4] - movs r0, 0xC - bl rfu_clearSlot - ldrb r1, [r4] - ldr r0, _080F8A94 @ =0x000008f7 - adds r2, r7, r0 - movs r0, 0x10 - movs r3, 0x46 - bl rfu_setRecvBuffer - adds r1, r7, 0 - adds r1, 0x4C - adds r0, r5, 0 - movs r2, 0xE - bl rfu_UNI_setSendData - ldr r1, _080F8A98 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - strh r1, [r0, 0xA] - adds r0, r6, 0 - bl DestroyTask - ldr r4, _080F8A9C @ =gUnknown_203AC08 - ldrb r0, [r4, 0xF] - cmp r0, 0 - bne _080F8A82 - bl sub_80FC208 - ldrb r0, [r4, 0xF] - adds r0, 0x1 - strb r0, [r4, 0xF] -_080F8A82: - ldr r0, _080F8AA0 @ =sub_80FA834 - movs r1, 0x5 - bl CreateTask -_080F8A8A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F8A90: .4byte 0x000008f6 -_080F8A94: .4byte 0x000008f7 -_080F8A98: .4byte gTasks -_080F8A9C: .4byte gUnknown_203AC08 -_080F8AA0: .4byte sub_80FA834 - thumb_func_end sub_80F893C - - thumb_func_start sub_80F8AA4 -sub_80F8AA4: @ 80F8AA4 - push {r4,r5,lr} - ldr r0, _080F8AE4 @ =gUnknown_3005E10 - ldrb r5, [r0] - movs r4, 0 -_080F8AAC: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _080F8AD0 - lsls r2, r4, 3 - subs r2, r4 - lsls r2, 1 - ldr r0, _080F8AE8 @ =gUnknown_3005464 - adds r2, r0 - movs r0, 0x10 - adds r1, r4, 0 - movs r3, 0xE - bl rfu_setRecvBuffer - movs r0, 0x3 - adds r1, r4, 0 - bl rfu_clearSlot -_080F8AD0: - lsrs r5, 1 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080F8AAC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F8AE4: .4byte gUnknown_3005E10 -_080F8AE8: .4byte gUnknown_3005464 - thumb_func_end sub_80F8AA4 - - thumb_func_start sub_80F8AEC -sub_80F8AEC: @ 80F8AEC - push {r4-r6,lr} - ldr r0, _080F8B28 @ =gUnknown_3005E10 - ldrb r5, [r0] - ldr r4, _080F8B2C @ =gUnknown_3005D8F - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x46 - bl rfu_UNI_setSendData - adds r0, r5, 0 - bl sub_80F886C - ldr r1, _080F8B30 @ =0xfffff6c1 - adds r6, r4, r1 - adds r1, r4, 0 - adds r1, 0x53 - strb r0, [r1] - adds r4, 0x5B - strb r5, [r4] - movs r1, 0x1 - negs r1, r1 - adds r0, r5, 0 - bl sub_80F887C - movs r0, 0x1 - strb r0, [r6, 0xC] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F8B28: .4byte gUnknown_3005E10 -_080F8B2C: .4byte gUnknown_3005D8F -_080F8B30: .4byte 0xfffff6c1 - thumb_func_end sub_80F8AEC - - thumb_func_start sub_80F8B34 -sub_80F8B34: @ 80F8B34 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_80F9800 - ldrb r1, [r0, 0xA] - movs r0, 0x7F - ands r0, r1 - cmp r0, 0x54 - bne _080F8B68 - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080F8B68 - ldr r0, _080F8B80 @ =gUnknown_3005E10 - ldrb r0, [r0] - bl rfu_REQ_disconnect - bl rfu_waitREQComplete - movs r0, 0 - movs r1, 0 - bl sub_80FB9E4 -_080F8B68: - ldr r0, _080F8B84 @ =gUnknown_3005450 - ldrh r2, [r0, 0x4] - adds r6, r0, 0 - cmp r2, 0x12 - bls _080F8B74 - b _080F8CE6 -_080F8B74: - lsls r0, r2, 2 - ldr r1, _080F8B88 @ =_080F8B8C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F8B80: .4byte gUnknown_3005E10 -_080F8B84: .4byte gUnknown_3005450 -_080F8B88: .4byte _080F8B8C - .align 2, 0 -_080F8B8C: - .4byte _080F8BD8 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8CE6 - .4byte _080F8C28 - .4byte _080F8C88 - .4byte _080F8CE6 - .4byte _080F8C9C - .4byte _080F8C00 - .4byte _080F8CE6 -_080F8BD8: - ldr r0, _080F8BF4 @ =gUnknown_203ABF0 - bl sub_80FD4B0 - ldr r0, _080F8BF8 @ =gUnknown_3005450 - movs r2, 0x1 - strh r2, [r0, 0x4] - ldr r1, _080F8BFC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0xA] - b _080F8CE6 - .align 2, 0 -_080F8BF4: .4byte gUnknown_203ABF0 -_080F8BF8: .4byte gUnknown_3005450 -_080F8BFC: .4byte gTasks -_080F8C00: - ldr r3, _080F8C1C @ =gUnknown_843EC8C - movs r0, 0x2 - movs r1, 0 - movs r2, 0xF0 - bl sub_80FD538 - ldr r0, _080F8C20 @ =sub_80F8D20 - bl sub_80FEA10 - ldr r1, _080F8C24 @ =gUnknown_3005450 - movs r0, 0x12 - strh r0, [r1, 0x4] - b _080F8CE6 - .align 2, 0 -_080F8C1C: .4byte gUnknown_843EC8C -_080F8C20: .4byte sub_80F8D20 -_080F8C24: .4byte gUnknown_3005450 -_080F8C28: - ldr r1, _080F8C6C @ =0x000008f6 - adds r0, r6, r1 - ldrb r1, [r0] - movs r0, 0x80 - lsls r0, 17 - lsls r0, r1 - lsrs r0, 24 - adds r1, r6, 0 - adds r1, 0x4C - movs r2, 0xE - bl rfu_UNI_setSendData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _080F8CE6 - strb r0, [r6, 0xC] - adds r0, r5, 0 - bl DestroyTask - ldr r0, _080F8C70 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x16 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080F8C78 - ldr r0, _080F8C74 @ =sub_80FACF0 - movs r1, 0x1 - bl CreateTask - b _080F8CE6 - .align 2, 0 -_080F8C6C: .4byte 0x000008f6 -_080F8C70: .4byte gTasks -_080F8C74: .4byte sub_80FACF0 -_080F8C78: - ldr r0, _080F8C84 @ =sub_80FA834 - movs r1, 0x5 - bl CreateTask - b _080F8CE6 - .align 2, 0 -_080F8C84: .4byte sub_80FA834 -_080F8C88: - movs r0, 0 - bl sub_80FD760 - ldr r1, _080F8C98 @ =gUnknown_3005450 - movs r0, 0xF - strh r0, [r1, 0x4] - b _080F8CE6 - .align 2, 0 -_080F8C98: .4byte gUnknown_3005450 -_080F8C9C: - ldr r0, _080F8CEC @ =0x00000993 - adds r1, r6, r0 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r0, _080F8CF0 @ =sub_80F8DA8 - bl sub_80FEA10 - movs r0, 0x1 - bl sub_80FAFE0 - bl sub_80F8AA4 - bl sub_80F8AEC - movs r0, 0x14 - strh r0, [r6, 0x4] - ldr r1, _080F8CF4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - strh r1, [r0, 0xA] - movs r4, 0x1 - strb r4, [r6, 0xC] - ldr r0, _080F8CF8 @ =sub_80FA834 - movs r1, 0x5 - bl CreateTask - movs r1, 0x9A - lsls r1, 4 - adds r0, r6, r1 - strb r4, [r0] - adds r0, r5, 0 - bl DestroyTask -_080F8CE6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F8CEC: .4byte 0x00000993 -_080F8CF0: .4byte sub_80F8DA8 -_080F8CF4: .4byte gTasks -_080F8CF8: .4byte sub_80FA834 - thumb_func_end sub_80F8B34 - - thumb_func_start sub_80F8CFC -sub_80F8CFC: @ 80F8CFC - push {lr} - ldr r3, _080F8D10 @ =gUnknown_843EC8C - movs r0, 0x1 - movs r1, 0 - movs r2, 0xF0 - bl sub_80FD538 - pop {r0} - bx r0 - .align 2, 0 -_080F8D10: .4byte gUnknown_843EC8C - thumb_func_end sub_80F8CFC - - thumb_func_start sub_80F8D14 -sub_80F8D14: @ 80F8D14 - push {lr} - movs r0, 0 - bl sub_80FD760 - pop {r0} - bx r0 - thumb_func_end sub_80F8D14 - - thumb_func_start sub_80F8D20 -sub_80F8D20: @ 80F8D20 - push {r4,lr} - ldr r0, _080F8D90 @ =gUnknown_3005450 - movs r2, 0 - movs r1, 0xD - adds r0, 0x59 -_080F8D2A: - strb r2, [r0] - subs r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _080F8D2A - bl rfu_REQ_recvData - bl rfu_waitREQComplete - ldr r1, _080F8D94 @ =gRfuSlotStatusUNI - ldr r3, _080F8D90 @ =gUnknown_3005450 - ldr r0, _080F8D98 @ =0x000008f6 - adds r4, r3, r0 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x12] - cmp r0, 0 - beq _080F8D84 - ldr r2, _080F8D9C @ =0x00000988 - adds r1, r3, r2 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r1, 0x92 - lsls r1, 1 - adds r0, r3, r1 - ldr r2, _080F8DA0 @ =0x000008f7 - adds r1, r3, r2 - bl sub_80FC588 - ldr r1, _080F8DA4 @ =gUnknown_203AC08 - ldrh r0, [r1, 0x6] - adds r0, 0x1 - strh r0, [r1, 0x6] - bl sub_80F906C - ldrb r0, [r4] - bl rfu_UNI_readySendData - ldrb r0, [r4] - bl rfu_UNI_clearRecvNewDataFlag -_080F8D84: - movs r0, 0x1 - bl rfu_REQ_sendData_wrapper - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F8D90: .4byte gUnknown_3005450 -_080F8D94: .4byte gRfuSlotStatusUNI -_080F8D98: .4byte 0x000008f6 -_080F8D9C: .4byte 0x00000988 -_080F8DA0: .4byte 0x000008f7 -_080F8DA4: .4byte gUnknown_203AC08 - thumb_func_end sub_80F8D20 - - thumb_func_start sub_80F8DA8 -sub_80F8DA8: @ 80F8DA8 - ldr r0, _080F8DB8 @ =gUnknown_3005450 - ldr r1, _080F8DBC @ =0x00000993 - adds r0, r1 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] - bx lr - .align 2, 0 -_080F8DB8: .4byte gUnknown_3005450 -_080F8DBC: .4byte 0x00000993 - thumb_func_end sub_80F8DA8 - - thumb_func_start sub_80F8DC0 -sub_80F8DC0: @ 80F8DC0 - push {r4-r6,lr} - ldr r0, _080F8DE0 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080F8E64 - bl sub_80FD52C - ldr r4, _080F8DE4 @ =gUnknown_3005450 - ldrb r0, [r4, 0xC] - cmp r0, 0x1 - bne _080F8DEC - ldr r0, _080F8DE8 @ =sub_80F8738 - b _080F8DF2 - .align 2, 0 -_080F8DE0: .4byte gUnknown_203ADFA -_080F8DE4: .4byte gUnknown_3005450 -_080F8DE8: .4byte sub_80F8738 -_080F8DEC: - cmp r0, 0 - bne _080F8E14 - ldr r0, _080F8E10 @ =sub_80F893C -_080F8DF2: - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F8E34 - adds r0, r4, 0 - adds r0, 0x67 - ldrb r0, [r0] - bl DestroyTask - bl sub_80F85F8 - b _080F8E34 - .align 2, 0 -_080F8E10: .4byte sub_80F893C -_080F8E14: - cmp r0, 0x2 - bne _080F8E34 - ldr r0, _080F8E6C @ =sub_80F8B34 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F8E34 - adds r0, r4, 0 - adds r0, 0x67 - ldrb r0, [r0] - bl DestroyTask - bl sub_80F85F8 -_080F8E34: - movs r5, 0 - ldr r6, _080F8E70 @ =gUnknown_843ED88 -_080F8E38: - lsls r0, r5, 2 - adds r0, r6 - ldr r4, [r0] - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080F8E5A - adds r0, r4, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_080F8E5A: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080F8E38 -_080F8E64: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F8E6C: .4byte sub_80F8B34 -_080F8E70: .4byte gUnknown_843ED88 - thumb_func_end sub_80F8DC0 - - thumb_func_start sub_80F8E74 -sub_80F8E74: @ 80F8E74 - push {lr} - ldr r0, _080F8E98 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080F8E92 - ldr r0, _080F8E9C @ =sub_80F8738 - movs r1, 0x1 - bl CreateTask - ldr r1, _080F8EA0 @ =gUnknown_3005450 - adds r1, 0x67 - strb r0, [r1] -_080F8E92: - pop {r0} - bx r0 - .align 2, 0 -_080F8E98: .4byte gUnknown_203ADFA -_080F8E9C: .4byte sub_80F8738 -_080F8EA0: .4byte gUnknown_3005450 - thumb_func_end sub_80F8E74 - - thumb_func_start sub_80F8EA4 -sub_80F8EA4: @ 80F8EA4 - push {lr} - ldr r1, _080F8EBC @ =gUnknown_3005450 - ldrh r0, [r1, 0x4] - cmp r0, 0x7 - bne _080F8EC4 - ldr r2, _080F8EC0 @ =0x00000985 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080F8EC4 - movs r0, 0x1 - b _080F8EC6 - .align 2, 0 -_080F8EBC: .4byte gUnknown_3005450 -_080F8EC0: .4byte 0x00000985 -_080F8EC4: - movs r0, 0 -_080F8EC6: - pop {r1} - bx r1 - thumb_func_end sub_80F8EA4 - - thumb_func_start sub_80F8ECC -sub_80F8ECC: @ 80F8ECC - push {r4,lr} - ldr r4, _080F8EFC @ =gUnknown_3005450 - ldrh r0, [r4, 0x4] - cmp r0, 0x7 - bne _080F8F08 - ldr r0, _080F8F00 @ =gRfuLinkStatus - ldr r1, [r0] - ldr r2, _080F8F04 @ =0x000008f5 - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, 5 - adds r1, r0 - ldrh r0, [r1, 0x14] - movs r1, 0xF0 - bl sub_80FD610 - lsls r0, 24 - cmp r0, 0 - bne _080F8F08 - movs r0, 0x9 - strh r0, [r4, 0x4] - movs r0, 0x1 - b _080F8F0A - .align 2, 0 -_080F8EFC: .4byte gUnknown_3005450 -_080F8F00: .4byte gRfuLinkStatus -_080F8F04: .4byte 0x000008f5 -_080F8F08: - movs r0, 0 -_080F8F0A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80F8ECC - - thumb_func_start sub_80F8F10 -sub_80F8F10: @ 80F8F10 - push {lr} - ldr r0, _080F8F34 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080F8F2E - ldr r0, _080F8F38 @ =sub_80F893C - movs r1, 0x1 - bl CreateTask - ldr r1, _080F8F3C @ =gUnknown_3005450 - adds r1, 0x67 - strb r0, [r1] -_080F8F2E: - pop {r0} - bx r0 - .align 2, 0 -_080F8F34: .4byte gUnknown_203ADFA -_080F8F38: .4byte sub_80F893C -_080F8F3C: .4byte gUnknown_3005450 - thumb_func_end sub_80F8F10 - - thumb_func_start sub_80F8F40 -sub_80F8F40: @ 80F8F40 - push {lr} - ldr r0, _080F8F50 @ =gUnknown_3005E10 - ldrb r0, [r0] - cmp r0, 0 - bne _080F8F54 - movs r0, 0 - b _080F8F56 - .align 2, 0 -_080F8F50: .4byte gUnknown_3005E10 -_080F8F54: - movs r0, 0x1 -_080F8F56: - pop {r1} - bx r1 - thumb_func_end sub_80F8F40 - - thumb_func_start sub_80F8F5C -sub_80F8F5C: @ 80F8F5C - ldr r1, _080F8F70 @ =gUnknown_3005450 - movs r0, 0x4 - strh r0, [r1, 0x4] - ldr r0, _080F8F74 @ =gUnknown_3005E10 - ldrb r0, [r0] - ldr r2, _080F8F78 @ =0x0000099f - adds r1, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_080F8F70: .4byte gUnknown_3005450 -_080F8F74: .4byte gUnknown_3005E10 -_080F8F78: .4byte 0x0000099f - thumb_func_end sub_80F8F5C - - thumb_func_start sub_80F8F7C -sub_80F8F7C: @ 80F8F7C - push {lr} - adds r1, r0, 0 - ldr r2, _080F8F94 @ =gUnknown_3005450 - ldrh r0, [r2, 0x4] - cmp r0, 0x11 - beq _080F8F8C - cmp r1, 0 - beq _080F8F98 -_080F8F8C: - movs r0, 0x12 - strh r0, [r2, 0x4] - movs r0, 0x1 - b _080F8F9A - .align 2, 0 -_080F8F94: .4byte gUnknown_3005450 -_080F8F98: - movs r0, 0 -_080F8F9A: - pop {r1} - bx r1 - thumb_func_end sub_80F8F7C - - thumb_func_start sub_80F8FA0 -sub_80F8FA0: @ 80F8FA0 - ldr r1, _080F8FA8 @ =gUnknown_3005450 - movs r0, 0xE - strh r0, [r1, 0x4] - bx lr - .align 2, 0 -_080F8FA8: .4byte gUnknown_3005450 - thumb_func_end sub_80F8FA0 - - thumb_func_start sub_80F8FAC -sub_80F8FAC: @ 80F8FAC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0 - b _080F8FBE -_080F8FB6: - lsrs r1, 1 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080F8FBE: - cmp r2, 0x3 - bhi _080F8FD0 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F8FB6 - adds r0, r2, 0 - bl rfu_UNI_readySendData -_080F8FD0: - pop {r0} - bx r0 - thumb_func_end sub_80F8FAC - - thumb_func_start sub_80F8FD4 -sub_80F8FD4: @ 80F8FD4 - push {r4-r7,lr} - sub sp, 0x4 - movs r2, 0 - ldr r7, _080F9028 @ =gRecvCmds - ldr r0, _080F902C @ =gUnknown_3005450 - adds r6, r7, 0 - ldr r1, _080F9030 @ =0x0000093f - adds r5, r0, r1 -_080F8FE4: - movs r3, 0 - lsls r0, r2, 3 - lsls r1, r2, 4 - adds r4, r2, 0x1 - subs r0, r2 - lsls r0, 1 - adds r2, r0, r5 - adds r1, r6 -_080F8FF4: - ldrh r0, [r1] - lsrs r0, 8 - strb r0, [r2, 0x1] - ldrh r0, [r1] - strb r0, [r2] - adds r2, 0x2 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, 0x6 - ble _080F8FF4 - adds r2, r4, 0 - cmp r2, 0x4 - ble _080F8FE4 - movs r0, 0 - mov r1, sp - strh r0, [r1] - ldr r2, _080F9034 @ =0x01000028 - mov r0, sp - adds r1, r7, 0 - bl CpuSet - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F9028: .4byte gRecvCmds -_080F902C: .4byte gUnknown_3005450 -_080F9030: .4byte 0x0000093f -_080F9034: .4byte 0x01000028 - thumb_func_end sub_80F8FD4 - - thumb_func_start sub_80F9038 -sub_80F9038: @ 80F9038 - push {lr} - ldr r3, _080F9064 @ =gSendCmd - ldr r2, _080F9068 @ =gRecvCmds - movs r1, 0x6 -_080F9040: - ldrh r0, [r3] - strh r0, [r2] - adds r3, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080F9040 - ldr r1, _080F9064 @ =gSendCmd - movs r2, 0 - adds r0, r1, 0 - adds r0, 0xC -_080F9056: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080F9056 - pop {r0} - bx r0 - .align 2, 0 -_080F9064: .4byte gSendCmd -_080F9068: .4byte gRecvCmds - thumb_func_end sub_80F9038 - - thumb_func_start sub_80F906C -sub_80F906C: @ 80F906C - push {r4,r5,lr} - ldr r4, _080F90CC @ =gUnknown_3005450 - ldr r0, _080F90D0 @ =0x000008f4 - adds r5, r4, r0 - ldrb r0, [r5] - cmp r0, 0 - beq _080F909E - ldr r1, _080F90D4 @ =0x000008d4 - adds r0, r4, r1 - adds r1, r4, 0 - adds r1, 0x4C - bl sub_80FC888 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080F90D8 @ =0x000008f2 - adds r0, r4, r1 - ldrb r0, [r0] - adds r1, r0, 0 - cmp r1, 0 - bne _080F909A - ldrb r0, [r5] - strb r1, [r5] -_080F909A: - cmp r2, 0 - bne _080F90C4 -_080F909E: - ldr r5, _080F90CC @ =gUnknown_3005450 - ldr r1, _080F90D0 @ =0x000008f4 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F90C4 - movs r1, 0xD4 - lsls r1, 3 - adds r0, r5, r1 - adds r4, r5, 0 - adds r4, 0x4C - adds r1, r4, 0 - bl sub_80FC79C - ldr r1, _080F90D4 @ =0x000008d4 - adds r0, r5, r1 - adds r1, r4, 0 - bl sub_80FC828 -_080F90C4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F90CC: .4byte gUnknown_3005450 -_080F90D0: .4byte 0x000008f4 -_080F90D4: .4byte 0x000008d4 -_080F90D8: .4byte 0x000008f2 - thumb_func_end sub_80F906C - - thumb_func_start IsRfuRecvQueueEmpty -IsRfuRecvQueueEmpty: @ 80F90DC - push {r4,lr} - ldr r0, _080F90EC @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _080F90F0 -_080F90E8: - movs r0, 0 - b _080F9110 - .align 2, 0 -_080F90EC: .4byte gRfuLinkStatus -_080F90F0: - movs r3, 0 - ldr r4, _080F9118 @ =gRecvCmds -_080F90F4: - movs r2, 0 - lsls r0, r3, 4 - adds r1, r0, r4 -_080F90FA: - ldrh r0, [r1] - cmp r0, 0 - bne _080F90E8 - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x6 - ble _080F90FA - adds r3, 0x1 - cmp r3, 0x4 - ble _080F90F4 - movs r0, 0x1 -_080F9110: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F9118: .4byte gRecvCmds - thumb_func_end IsRfuRecvQueueEmpty - - thumb_func_start sub_80F911C -sub_80F911C: @ 80F911C - push {r4-r6,lr} - ldr r6, _080F9138 @ =gUnknown_3005450 - ldrh r0, [r6, 0x4] - cmp r0, 0x13 - bhi _080F913C - bl rfu_REQ_recvData - bl rfu_waitREQComplete - movs r0, 0 - bl rfu_REQ_sendData_wrapper - b _080F91F6 - .align 2, 0 -_080F9138: .4byte gUnknown_3005450 -_080F913C: - ldr r0, _080F9198 @ =0x00000993 - adds r1, r6, r0 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r0, _080F919C @ =0x0000099a - adds r1, r6, r0 - ldr r0, _080F91A0 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r1] - ldrb r0, [r0, 0x2] - ands r0, r1 - cmp r0, r1 - bne _080F91F6 - cmp r0, 0 - beq _080F91F6 - ldr r1, _080F91A4 @ =0x00000994 - adds r0, r6, r1 - ldrb r0, [r0] - adds r5, r0, 0 - cmp r5, 0 - bne _080F91EC - ldr r0, _080F91A8 @ =0x0000099b - adds r4, r6, r0 - ldrb r0, [r4] - cmp r0, 0 - beq _080F91CC - bl sub_80FBCF8 - strb r5, [r4] - ldr r1, _080F91AC @ =0x0000099c - adds r0, r6, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080F91B0 - movs r4, 0x80 - lsls r4, 8 - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80FB9E4 - adds r0, r4, 0 - bl sub_80FB0E8 - b _080F91F6 - .align 2, 0 -_080F9198: .4byte 0x00000993 -_080F919C: .4byte 0x0000099a -_080F91A0: .4byte gRfuLinkStatus -_080F91A4: .4byte 0x00000994 -_080F91A8: .4byte 0x0000099b -_080F91AC: .4byte 0x0000099c -_080F91B0: - ldr r0, _080F91C4 @ =gUnknown_3005E10 - ldrb r4, [r0] - cmp r4, 0 - bne _080F91CC - bl sub_80F8DC0 - ldr r0, _080F91C8 @ =gReceivedRemoteLinkPlayers - strb r4, [r0] - b _080F91F6 - .align 2, 0 -_080F91C4: .4byte gUnknown_3005E10 -_080F91C8: .4byte gReceivedRemoteLinkPlayers -_080F91CC: - bl sub_80F8FD4 - ldr r0, _080F91E4 @ =gUnknown_3005450 - ldr r1, _080F91E8 @ =0x00000992 - adds r0, r1 - ldrb r0, [r0] - bl rfu_UNI_readySendData - movs r0, 0x1 - bl rfu_REQ_sendData_wrapper - b _080F91F0 - .align 2, 0 -_080F91E4: .4byte gUnknown_3005450 -_080F91E8: .4byte 0x00000992 -_080F91EC: - bl rfu_REQ_PARENT_resumeRetransmitAndChange -_080F91F0: - ldr r1, _080F9200 @ =gUnknown_3005450 - movs r0, 0x1 - strb r0, [r1, 0xE] -_080F91F6: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080F9200: .4byte gUnknown_3005450 - thumb_func_end sub_80F911C - - thumb_func_start sub_80F9204 -sub_80F9204: @ 80F9204 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r0, _080F92E4 @ =gUnknown_3005450 - ldrh r1, [r0, 0x4] - adds r6, r0, 0 - cmp r1, 0x13 - bhi _080F921C - b _080F947E -_080F921C: - ldrb r0, [r6, 0xE] - cmp r0, 0x1 - beq _080F9224 - b _080F947E -_080F9224: - bl rfu_waitREQComplete - ldr r0, _080F92E8 @ =0x00000993 - adds r2, r6, r0 - ldrb r0, [r2] - cmp r0, 0 - bne _080F9244 - adds r1, r6, 0 - adds r1, 0xEE -_080F9236: - ldrb r0, [r1] - cmp r0, 0 - beq _080F923E - b _080F94A4 -_080F923E: - ldrb r0, [r2] - cmp r0, 0 - beq _080F9236 -_080F9244: - bl rfu_REQ_recvData - bl rfu_waitREQComplete - ldr r2, _080F92EC @ =gUnknown_3005E10 - ldr r4, _080F92E4 @ =gUnknown_3005450 - ldr r1, _080F92F0 @ =0x0000099a - adds r0, r4, r1 - ldrb r1, [r2, 0x3] - ldrb r0, [r0] - ands r1, r0 - cmp r1, r0 - beq _080F9260 - b _080F9468 -_080F9260: - ldr r6, _080F92F4 @ =0x00000994 - adds r1, r4, r6 - ldrb r0, [r1] - movs r0, 0 - strb r0, [r1] - ldr r1, _080F92F8 @ =gUnknown_203AC08 - ldrh r0, [r1, 0x6] - adds r0, 0x1 - strh r0, [r1, 0x6] - ldrb r7, [r2] - movs r5, 0 -_080F9276: - movs r0, 0x1 - ands r0, r7 - lsrs r1, r7, 1 - str r1, [sp, 0x4] - adds r2, r5, 0x1 - str r2, [sp] - cmp r0, 0 - bne _080F9288 - b _080F9388 -_080F9288: - ldr r1, _080F92E4 @ =gUnknown_3005450 - lsls r2, r5, 3 - subs r0, r2, r5 - lsls r4, r0, 1 - adds r0, r1, 0 - adds r0, 0x15 - adds r0, r4, r0 - ldrb r0, [r0] - adds r6, r1, 0 - adds r3, r2, 0 - lsls r1, r5, 24 - mov r10, r1 - cmp r0, 0 - beq _080F9380 - ldr r2, _080F92FC @ =0x000009a6 - adds r0, r6, r2 - adds r1, r5, r0 - ldrb r0, [r1] - cmp r0, 0xFF - beq _080F9304 - adds r0, r6, 0 - adds r0, 0x14 - adds r0, r4, r0 - ldrb r2, [r0] - lsrs r2, 5 - ldrb r0, [r1] - adds r0, 0x1 - movs r1, 0x7 - ands r0, r1 - cmp r2, r0 - beq _080F9304 - ldr r0, _080F9300 @ =0x000009a2 - adds r1, r6, r0 - adds r1, r5, r1 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _080F9380 - movs r0, 0x81 - lsls r0, 8 - bl sub_80FB0E8 - b _080F9380 - .align 2, 0 -_080F92E4: .4byte gUnknown_3005450 -_080F92E8: .4byte 0x00000993 -_080F92EC: .4byte gUnknown_3005E10 -_080F92F0: .4byte 0x0000099a -_080F92F4: .4byte 0x00000994 -_080F92F8: .4byte gUnknown_203AC08 -_080F92FC: .4byte 0x000009a6 -_080F9300: .4byte 0x000009a2 -_080F9304: - ldr r2, _080F9444 @ =gUnknown_3005450 - ldr r6, _080F9448 @ =0x000009a6 - adds r1, r2, r6 - adds r1, r5, r1 - subs r3, r5 - lsls r3, 1 - adds r4, r2, 0 - adds r4, 0x14 - adds r2, r3, r4 - ldrb r0, [r2] - lsrs r0, 5 - strb r0, [r1] - ldr r1, _080F9444 @ =gUnknown_3005450 - subs r6, 0x4 - adds r0, r1, r6 - adds r0, r5, r0 - movs r1, 0 - strb r1, [r0] - ldrb r1, [r2] - movs r0, 0x1F - ands r0, r1 - strb r0, [r2] - ldr r2, _080F944C @ =gUnknown_3005DE6 - adds r0, r5, r2 - ldrb r0, [r0] - movs r6, 0 - lsls r1, r5, 24 - mov r10, r1 - lsrs r2, r7, 1 - str r2, [sp, 0x4] - adds r5, 0x1 - str r5, [sp] - ldr r1, _080F9450 @ =gRecvCmds - mov r9, r1 - adds r5, r3, 0 - adds r7, r4, 0 - lsls r0, 4 - mov r8, r0 - adds r2, r5, 0x1 - mov r12, r2 -_080F9354: - lsls r1, r6, 1 - mov r0, r8 - adds r4, r1, r0 - add r4, r9 - mov r2, r12 - adds r3, r1, r2 - adds r3, r7 - ldrb r2, [r3] - lsls r2, 8 - adds r1, r5 - adds r1, r7 - ldrb r0, [r1] - orrs r0, r2 - strh r0, [r4] - movs r0, 0 - strb r0, [r3] - strb r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x6 - bls _080F9354 -_080F9380: - mov r1, r10 - lsrs r0, r1, 24 - bl rfu_UNI_clearRecvNewDataFlag -_080F9388: - ldr r2, [sp, 0x4] - lsls r0, r2, 16 - lsrs r7, r0, 16 - ldr r6, [sp] - lsls r0, r6, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bhi _080F939A - b _080F9276 -_080F939A: - bl sub_80F9038 - movs r0, 0 - bl sub_80F9868 - bl sub_80FA510 - ldr r4, _080F9444 @ =gUnknown_3005450 - ldr r1, _080F9454 @ =0x0000099d - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080F9476 - ldr r2, _080F9458 @ =0x00000991 - adds r0, r4, r2 - ldrb r2, [r0] - cmp r2, 0 - bne _080F9476 - ldr r0, _080F945C @ =gUnknown_203AC08 - ldrb r1, [r0, 0xE] - strb r2, [r0, 0xE] - ldr r6, _080F9460 @ =0x00000992 - adds r0, r4, r6 - ldrb r1, [r0] - movs r0, 0x3 - bl rfu_clearSlot - movs r5, 0 - adds r7, r4, 0 - adds r7, 0x14 -_080F93D6: - ldr r0, _080F9454 @ =0x0000099d - adds r6, r4, r0 - ldrb r0, [r6] - asrs r0, r5 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080F93FA - lsls r1, r5, 24 - lsrs r1, 24 - lsls r2, r5, 3 - subs r2, r5 - lsls r2, 1 - adds r2, r7 - movs r0, 0x10 - movs r3, 0xE - bl rfu_setRecvBuffer -_080F93FA: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080F93D6 - subs r4, r6, 0x3 - ldrb r0, [r4] - ldrb r2, [r6] - adds r1, r0, 0 - orrs r1, r2 - bl sub_80F887C - ldrb r1, [r6] - movs r2, 0 - strb r1, [r6, 0x4] - ldrb r0, [r4] - orrs r0, r1 - strb r0, [r4] - strb r2, [r6] - ldrb r0, [r4] - adds r1, r6, 0 - subs r1, 0x5E - movs r2, 0x46 - bl rfu_UNI_setSendData - ldrb r0, [r4] - bl sub_80F886C - adds r1, r6, 0 - subs r1, 0xB - strb r0, [r1] - ldr r0, _080F9464 @ =sub_80FAA94 - movs r1, 0 - bl CreateTask - b _080F9476 - .align 2, 0 -_080F9444: .4byte gUnknown_3005450 -_080F9448: .4byte 0x000009a6 -_080F944C: .4byte gUnknown_3005DE6 -_080F9450: .4byte gRecvCmds -_080F9454: .4byte 0x0000099d -_080F9458: .4byte 0x00000991 -_080F945C: .4byte gUnknown_203AC08 -_080F9460: .4byte 0x00000992 -_080F9464: .4byte sub_80FAA94 -_080F9468: - ldr r2, _080F9498 @ =0x00000994 - adds r1, r4, r2 - ldrb r0, [r1] - movs r2, 0 - movs r0, 0x1 - strb r0, [r1] - strb r2, [r4, 0xE] -_080F9476: - ldr r1, _080F949C @ =gUnknown_3005450 - movs r0, 0 - strb r0, [r1, 0xE] - adds r6, r1, 0 -_080F947E: - ldr r1, _080F9498 @ =0x00000994 - adds r0, r6, r1 - ldrb r0, [r0] - adds r1, r0, 0 - ldr r0, _080F94A0 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x6] - cmp r0, 0 - beq _080F94A8 - movs r0, 0x1 - ands r0, r1 - b _080F94AA - .align 2, 0 -_080F9498: .4byte 0x00000994 -_080F949C: .4byte gUnknown_3005450 -_080F94A0: .4byte gRfuLinkStatus -_080F94A4: - movs r0, 0 - b _080F94AA -_080F94A8: - movs r0, 0 -_080F94AA: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F9204 - - thumb_func_start sub_80F94BC -sub_80F94BC: @ 80F94BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r2, r1, 0 - ldrh r1, [r4] - cmp r1, 0 - beq _080F9500 - ldr r0, _080F94FC @ =gUnknown_3005450 - movs r5, 0x81 - lsls r5, 1 - adds r3, r0, r5 - ldrb r0, [r3] - lsls r0, 5 - orrs r0, r1 - strh r0, [r4] - ldrb r0, [r3] - adds r0, 0x1 - movs r1, 0x7 - ands r0, r1 - strb r0, [r3] - adds r3, r4, 0 - movs r4, 0x6 -_080F94E6: - ldrh r1, [r3] - lsrs r0, r1, 8 - strb r0, [r2, 0x1] - strb r1, [r2] - adds r2, 0x2 - adds r3, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _080F94E6 - b _080F950E - .align 2, 0 -_080F94FC: .4byte gUnknown_3005450 -_080F9500: - movs r1, 0 - adds r0, r2, 0 - adds r0, 0xD -_080F9506: - strb r1, [r0] - subs r0, 0x1 - cmp r0, r2 - bge _080F9506 -_080F950E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F94BC - - thumb_func_start sub_80F9514 -sub_80F9514: @ 80F9514 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x58 - ldr r0, _080F9638 @ =gUnknown_3005574 - mov r1, sp - bl sub_80FC6E8 - movs r1, 0 - ldr r0, _080F963C @ =gRecvCmds - mov r12, r0 -_080F952A: - movs r4, 0 - lsls r0, r1, 3 - adds r2, r1, 0x1 - mov r8, r2 - lsls r6, r1, 4 - subs r0, r1 - lsls r5, r0, 1 -_080F9538: - lsls r1, r4, 1 - adds r3, r1, r6 - add r3, r12 - adds r1, r5, r1 - adds r0, r1, 0x1 - add r0, sp - ldrb r2, [r0] - lsls r2, 8 - mov r7, sp - adds r0, r7, r1 - ldrb r0, [r0] - orrs r0, r2 - strh r0, [r3] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080F9538 - mov r1, r8 - lsls r0, r1, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080F952A - movs r0, 0 - bl sub_80F9868 - ldr r0, _080F9640 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x2] - cmp r0, 0 - bne _080F95E4 - ldr r0, _080F9644 @ =gUnknown_3005450 - ldr r2, _080F9648 @ =0x0000099c - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080F95E4 - ldr r0, _080F964C @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r0, 0x2] - ldrb r0, [r0, 0x3] - orrs r0, r1 - bl rfu_REQ_disconnect - bl rfu_waitREQComplete - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080F95B0 - cmp r0, 0x6 - beq _080F95B0 - cmp r0, 0x9 - beq _080F95B0 - movs r1, 0x90 - lsls r1, 8 - movs r0, 0x2 - bl sub_80FB9E4 -_080F95B0: - bl rfu_clearAllSlot - ldr r1, _080F9650 @ =gReceivedRemoteLinkPlayers - movs r0, 0 - strb r0, [r1] - ldr r0, _080F9644 @ =gUnknown_3005450 - movs r5, 0 - str r5, [r0] - ldr r7, _080F9648 @ =0x0000099c - adds r6, r0, r7 - ldrb r0, [r6] - cmp r0, 0x1 - bne _080F95DC - movs r4, 0x90 - lsls r4, 8 - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80FB9E4 - adds r0, r4, 0 - bl sub_80FB0E8 -_080F95DC: - ldr r0, _080F9640 @ =gUnknown_3005E10 - strb r5, [r0, 0x5] - strb r5, [r0, 0x4] - strb r5, [r6] -_080F95E4: - ldr r6, _080F9644 @ =gUnknown_3005450 - ldr r0, _080F9654 @ =0x00000988 - adds r2, r6, r0 - ldrb r0, [r2] - cmp r0, 0 - beq _080F9628 - ldrb r0, [r2] - subs r0, 0x1 - ldrb r1, [r2] - strb r0, [r2] - bl sub_80FA510 - ldr r5, _080F9658 @ =gSendCmd - add r4, sp, 0x48 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80F94BC - movs r1, 0xD4 - lsls r1, 3 - adds r0, r6, r1 - adds r1, r4, 0 - bl sub_80FC63C - movs r1, 0 - movs r2, 0 -_080F9618: - lsls r0, r1, 1 - adds r0, r5 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x6 - bls _080F9618 -_080F9628: - bl IsRfuRecvQueueEmpty - add sp, 0x58 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F9638: .4byte gUnknown_3005574 -_080F963C: .4byte gRecvCmds -_080F9640: .4byte gUnknown_3005E10 -_080F9644: .4byte gUnknown_3005450 -_080F9648: .4byte 0x0000099c -_080F964C: .4byte gRfuLinkStatus -_080F9650: .4byte gReceivedRemoteLinkPlayers -_080F9654: .4byte 0x00000988 -_080F9658: .4byte gSendCmd - thumb_func_end sub_80F9514 - - thumb_func_start sub_80F965C -sub_80F965C: @ 80F965C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _080F9708 @ =gUnknown_3005450 - ldr r2, [r0, 0x70] - mov r10, r2 - movs r5, 0 - adds r2, r0, 0 - adds r2, 0x6E - ldrh r3, [r2] - cmp r5, r3 - bge _080F96F8 - mov r9, r0 - ldr r0, _080F970C @ =gUnknown_3002008 - mov r8, r0 -_080F967E: - movs r0, 0x1 - ands r0, r1 - lsrs r7, r1, 1 - adds r6, r5, 0x1 - cmp r0, 0 - bne _080F96EC - ldr r1, _080F9710 @ =0xffff8900 - adds r0, r1, 0 - adds r1, r5, 0 - orrs r1, r0 - mov r2, r8 - strh r1, [r2] - movs r4, 0 - lsls r0, r5, 1 - ldr r3, _080F9714 @ =gUnknown_3001FF8 - mov r12, r3 - adds r0, r5 - lsls r0, 2 - mov r1, r10 - adds r2, r0, r1 - mov r3, r8 - adds r3, 0x2 -_080F96AA: - ldrb r1, [r2, 0x1] - lsls r1, 8 - ldrb r0, [r2] - orrs r0, r1 - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0x6 - ble _080F96AA - movs r4, 0 - ldr r2, _080F970C @ =gUnknown_3002008 - ldr r1, _080F9714 @ =gUnknown_3001FF8 -_080F96C4: - ldrh r0, [r2] - lsrs r0, 8 - strb r0, [r1, 0x1] - ldrh r0, [r2] - strb r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x6 - ble _080F96C4 - ldr r0, _080F9718 @ =gUnknown_3005AF0 - mov r1, r12 - bl sub_80FC63C - movs r1, 0x1 - lsls r1, r5 - mov r2, r9 - ldr r0, [r2, 0x78] - orrs r0, r1 - str r0, [r2, 0x78] -_080F96EC: - adds r1, r7, 0 - adds r5, r6, 0 - ldr r3, _080F971C @ =gUnknown_30054BE - ldrh r3, [r3] - cmp r5, r3 - blt _080F967E -_080F96F8: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F9708: .4byte gUnknown_3005450 -_080F970C: .4byte gUnknown_3002008 -_080F9710: .4byte 0xffff8900 -_080F9714: .4byte gUnknown_3001FF8 -_080F9718: .4byte gUnknown_3005AF0 -_080F971C: .4byte gUnknown_30054BE - thumb_func_end sub_80F965C - - thumb_func_start Rfu_SetBlockReceivedFlag -Rfu_SetBlockReceivedFlag: @ 80F9720 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080F973C @ =gUnknown_3005450 - ldrb r2, [r0, 0xC] - cmp r2, 0x1 - bne _080F9740 - cmp r1, 0 - beq _080F9740 - adds r0, 0x61 - adds r0, r1, r0 - strb r2, [r0] - b _080F9748 - .align 2, 0 -_080F973C: .4byte gUnknown_3005450 -_080F9740: - adds r0, 0x5C - adds r0, r1, r0 - movs r1, 0x1 - strb r1, [r0] -_080F9748: - pop {r0} - bx r0 - thumb_func_end Rfu_SetBlockReceivedFlag - - thumb_func_start Rfu_ResetBlockReceivedFlag -Rfu_ResetBlockReceivedFlag: @ 80F974C - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080F976C @ =gUnknown_3005450 - adds r1, r3, 0 - adds r1, 0x5C - adds r1, r0, r1 - movs r2, 0 - strb r2, [r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - adds r1, 0x92 - strb r2, [r1] - bx lr - .align 2, 0 -_080F976C: .4byte gUnknown_3005450 - thumb_func_end Rfu_ResetBlockReceivedFlag - - thumb_func_start sub_80F9770 -sub_80F9770: @ 80F9770 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _080F9784 @ =gUnknown_3005450 - ldrb r1, [r0, 0xC] - adds r5, r0, 0 - cmp r1, 0x1 - bne _080F9788 - movs r0, 0 - b _080F97AA - .align 2, 0 -_080F9784: .4byte gUnknown_3005450 -_080F9788: - movs r2, 0 - ldr r0, _080F97B0 @ =0x00000996 - adds r4, r5, r0 -_080F978E: - adds r1, r2, r4 - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080F978E - ldr r1, _080F97B4 @ =0x000008f6 - adds r0, r5, r1 - ldrb r0, [r0] - adds r0, r3 - ldrb r0, [r0] -_080F97AA: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080F97B0: .4byte 0x00000996 -_080F97B4: .4byte 0x000008f6 - thumb_func_end sub_80F9770 - - thumb_func_start rfu_func_080F97B8 -rfu_func_080F97B8: @ 80F97B8 - push {lr} - ldr r0, _080F97F0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080F97EA - ldr r3, _080F97F4 @ =gHeldKeyCodeToSend - ldrh r2, [r3] - cmp r2, 0 - beq _080F97EA - ldr r0, _080F97F8 @ =gLinkTransferringData - ldrb r0, [r0] - cmp r0, 0x1 - beq _080F97EA - ldr r1, _080F97FC @ =gUnknown_3001188 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldrb r0, [r1] - lsls r0, 8 - orrs r0, r2 - strh r0, [r3] - movs r0, 0xBE - lsls r0, 8 - bl sub_80F9D04 -_080F97EA: - pop {r0} - bx r0 - .align 2, 0 -_080F97F0: .4byte gReceivedRemoteLinkPlayers -_080F97F4: .4byte gHeldKeyCodeToSend -_080F97F8: .4byte gLinkTransferringData -_080F97FC: .4byte gUnknown_3001188 - thumb_func_end rfu_func_080F97B8 - - thumb_func_start sub_80F9800 -sub_80F9800: @ 80F9800 - ldr r0, _080F9804 @ =gUnknown_3005440 - bx lr - .align 2, 0 -_080F9804: .4byte gUnknown_3005440 - thumb_func_end sub_80F9800 - - thumb_func_start IsSendingKeysToRfu -IsSendingKeysToRfu: @ 80F9808 - push {lr} - movs r2, 0 - ldr r0, _080F9820 @ =gUnknown_3005450 - ldr r1, [r0] - ldr r0, _080F9824 @ =rfu_func_080F97B8 - cmp r1, r0 - bne _080F9818 - movs r2, 0x1 -_080F9818: - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 -_080F9820: .4byte gUnknown_3005450 -_080F9824: .4byte rfu_func_080F97B8 - thumb_func_end IsSendingKeysToRfu - - thumb_func_start sub_80F9828 -sub_80F9828: @ 80F9828 - push {r4,lr} - ldr r4, _080F9848 @ =gUnknown_3005450 - ldr r0, [r4] - cmp r0, 0 - beq _080F983E - ldr r0, _080F984C @ =gUnknown_843ED94 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu.c" - ldr r1, _080F9850 @ =0x000005c1 // 1473 - ldr r2, _080F9854 @ =gUnknown_843EDC4 "Rfu.RfuFunc == NULL" - movs r3, 0x1 - bl AGBAssert -_080F983E: - ldr r0, _080F9858 @ =rfu_func_080F97B8 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F9848: .4byte gUnknown_3005450 -_080F984C: .4byte gUnknown_843ED94 -_080F9850: .4byte 0x000005c1 -_080F9854: .4byte gUnknown_843EDC4 -_080F9858: .4byte rfu_func_080F97B8 - thumb_func_end sub_80F9828 - - thumb_func_start Rfu_set_zero -Rfu_set_zero: @ 80F985C - ldr r1, _080F9864 @ =gUnknown_3005450 - movs r0, 0 - str r0, [r1] - bx lr - .align 2, 0 -_080F9864: .4byte gUnknown_3005450 - thumb_func_end Rfu_set_zero - - thumb_func_start sub_80F9868 -sub_80F9868: @ 80F9868 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r8, r0 -_080F9876: - mov r1, r8 - lsls r5, r1, 4 - ldr r2, _080F98B4 @ =gRecvCmds - adds r0, r5, r2 - ldrh r7, [r0] - movs r3, 0xFF - lsls r3, 8 - adds r0, r3, 0 - adds r1, r0, 0 - ands r1, r7 - movs r0, 0x88 - lsls r0, 8 - adds r2, r5, 0 - cmp r1, r0 - beq _080F9954 - cmp r1, r0 - bgt _080F98CA - movs r0, 0xCC - lsls r0, 7 - cmp r1, r0 - bne _080F98A2 - b _080F9AD0 -_080F98A2: - cmp r1, r0 - bgt _080F98B8 - movs r0, 0xBE - lsls r0, 7 - cmp r1, r0 - bne _080F98B0 - b _080F9AC0 -_080F98B0: - b _080F9BF4 - .align 2, 0 -_080F98B4: .4byte gRecvCmds -_080F98B8: - movs r0, 0xEE - lsls r0, 7 - cmp r1, r0 - beq _080F9914 - movs r0, 0xF0 - lsls r0, 7 - cmp r1, r0 - beq _080F9902 - b _080F9BF4 -_080F98CA: - movs r0, 0xBE - lsls r0, 8 - cmp r1, r0 - bne _080F98D4 - b _080F9BE4 -_080F98D4: - cmp r1, r0 - bgt _080F98EC - movs r0, 0x89 - lsls r0, 8 - cmp r1, r0 - beq _080F99B8 - movs r0, 0xA1 - lsls r0, 8 - cmp r1, r0 - bne _080F98EA - b _080F9A9C -_080F98EA: - b _080F9BF4 -_080F98EC: - movs r0, 0xED - lsls r0, 8 - cmp r1, r0 - bne _080F98F6 - b _080F9B00 -_080F98F6: - movs r0, 0xEE - lsls r0, 8 - cmp r1, r0 - bne _080F9900 - b _080F9BA0 -_080F9900: - b _080F9BF4 -_080F9902: - ldr r4, _080F993C @ =gUnknown_3005450 - ldrb r0, [r4, 0xC] - cmp r0, 0 - bne _080F9914 - ldr r0, _080F9940 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080F9914 - b _080F9C40 -_080F9914: - ldr r0, _080F9944 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - mov r6, r8 - adds r6, 0x1 - cmp r0, 0 - beq _080F9924 - b _080F9BF8 -_080F9924: - ldr r1, _080F9948 @ =gRecvCmds + 2 - adds r0, r2, r1 - ldrh r0, [r0] - ldr r3, _080F993C @ =gUnknown_3005450 - strb r0, [r3, 0xD] - ldr r4, _080F994C @ =gRecvCmds + 4 - adds r0, r2, r4 - bl sub_80F9770 - ldr r1, _080F9950 @ =gUnknown_3005DD6 - strb r0, [r1] - b _080F9BF8 - .align 2, 0 -_080F993C: .4byte gUnknown_3005450 -_080F9940: .4byte gReceivedRemoteLinkPlayers -_080F9944: .4byte gRfuLinkStatus -_080F9948: .4byte gRecvCmds + 2 -_080F994C: .4byte gRecvCmds + 4 -_080F9950: .4byte gUnknown_3005DD6 -_080F9954: - ldr r2, _080F99AC @ =gUnknown_3005450 - mov r9, r2 - mov r3, r8 - lsls r0, r3, 2 - add r0, r8 - lsls r7, r0, 2 - adds r3, r7, r2 - movs r4, 0x92 - adds r4, r3 - mov r12, r4 - ldrb r4, [r4] - mov r6, r8 - adds r6, 0x1 - cmp r4, 0 - beq _080F9974 - b _080F9BF8 -_080F9974: - adds r0, r3, 0 - adds r0, 0x80 - movs r2, 0 - strh r4, [r0] - ldr r1, _080F99B0 @ =gRecvCmds + 2 - adds r0, r5, r1 - ldrh r0, [r0] - adds r1, r3, 0 - adds r1, 0x82 - strh r0, [r1] - ldr r1, _080F99B4 @ =gRecvCmds + 4 - adds r0, r5, r1 - ldrh r1, [r0] - adds r0, r3, 0 - adds r0, 0x91 - strb r1, [r0] - mov r0, r9 - adds r0, 0x88 - adds r0, r7, r0 - str r4, [r0] - movs r0, 0x1 - mov r3, r12 - strb r0, [r3] - mov r0, r9 - adds r0, 0x5C - add r0, r8 - strb r2, [r0] - b _080F9BF8 - .align 2, 0 -_080F99AC: .4byte gUnknown_3005450 -_080F99B0: .4byte gRecvCmds + 2 -_080F99B4: .4byte gRecvCmds + 4 -_080F99B8: - ldr r4, _080F9A88 @ =gUnknown_3005450 - mov r9, r4 - mov r0, r8 - lsls r1, r0, 2 - adds r0, r1, r0 - lsls r4, r0, 2 - mov r3, r9 - adds r2, r4, r3 - adds r0, r2, 0 - adds r0, 0x92 - ldrb r3, [r0] - mov r10, r1 - mov r6, r8 - adds r6, 0x1 - cmp r3, 0x1 - beq _080F99DA - b _080F9BF8 -_080F99DA: - movs r0, 0xFF - ands r0, r7 - adds r2, 0x80 - strh r0, [r2] - mov r1, r9 - adds r1, 0x88 - adds r1, r4, r1 - lsls r3, r0 - ldr r0, [r1] - orrs r0, r3 - str r0, [r1] - movs r4, 0 - ldr r0, _080F9A8C @ =gBlockRecvBuffer - mov r9, r0 - mov r12, r2 - mov r1, r8 - lsls r7, r1, 8 - adds r3, r5, 0 -_080F99FE: - mov r2, r12 - ldrh r0, [r2] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - adds r1, r4 - lsls r1, 1 - adds r1, r7 - add r1, r9 - adds r2, r4, 0x1 - lsls r0, r2, 1 - adds r0, r3 - ldr r4, _080F9A90 @ =gRecvCmds - adds r0, r4 - ldrh r0, [r0] - strh r0, [r1] - lsls r2, 16 - lsrs r4, r2, 16 - cmp r4, 0x5 - bls _080F99FE - ldr r4, _080F9A88 @ =gUnknown_3005450 - mov r0, r10 - add r0, r8 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x88 - adds r1, r0, r1 - adds r2, r0, r4 - adds r0, r2, 0 - adds r0, 0x82 - ldrh r0, [r0] - lsls r0, 2 - ldr r3, _080F9A94 @ =gUnknown_843EBD4 - adds r0, r3 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - beq _080F9A4C - b _080F9BF8 -_080F9A4C: - adds r1, r2, 0 - adds r1, 0x92 - movs r0, 0x2 - strb r0, [r1] - mov r1, r8 - lsls r0, r1, 24 - lsrs r0, 24 - bl Rfu_SetBlockReceivedFlag - bl sub_80F9800 - ldrb r1, [r0, 0xA] - movs r0, 0x7F - ands r0, r1 - cmp r0, 0x45 - beq _080F9A6E - b _080F9BF8 -_080F9A6E: - ldr r0, _080F9A98 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080F9A78 - b _080F9BF8 -_080F9A78: - ldrb r0, [r4, 0xC] - cmp r0, 0 - beq _080F9A80 - b _080F9BF8 -_080F9A80: - ldr r0, _080F9A8C @ =gBlockRecvBuffer - bl sub_80FAA58 - b _080F9BF8 - .align 2, 0 -_080F9A88: .4byte gUnknown_3005450 -_080F9A8C: .4byte gBlockRecvBuffer -_080F9A90: .4byte gRecvCmds -_080F9A94: .4byte gUnknown_843EBD4 -_080F9A98: .4byte gReceivedRemoteLinkPlayers -_080F9A9C: - ldr r2, _080F9AB8 @ =gUnknown_843EC64 - ldr r3, _080F9ABC @ =gRecvCmds + 2 - adds r0, r5, r3 - ldrh r1, [r0] - lsls r1, 3 - adds r0, r1, r2 - ldr r0, [r0] - adds r2, 0x4 - adds r1, r2 - ldrh r1, [r1] - bl Rfu_InitBlockSend - b _080F9BF4 - .align 2, 0 -_080F9AB8: .4byte gUnknown_843EC64 -_080F9ABC: .4byte gRecvCmds + 2 -_080F9AC0: - ldr r1, _080F9ACC @ =gUnknown_3005534 - add r1, r8 - movs r0, 0x1 - strb r0, [r1] - b _080F9BF4 - .align 2, 0 -_080F9ACC: .4byte gUnknown_3005534 -_080F9AD0: - ldr r2, _080F9AF8 @ =gUnknown_3005450 - movs r4, 0x80 - lsls r4, 1 - adds r0, r2, r4 - ldr r3, _080F9AFC @ =gRecvCmds + 2 - adds r1, r5, r3 - ldrh r0, [r0] - mov r6, r8 - adds r6, 0x1 - ldrh r1, [r1] - cmp r0, r1 - beq _080F9AEA - b _080F9BF8 -_080F9AEA: - adds r0, r2, 0 - adds r0, 0xE9 - add r0, r8 - movs r1, 0x1 - strb r1, [r0] - b _080F9BF8 - .align 2, 0 -_080F9AF8: .4byte gUnknown_3005450 -_080F9AFC: .4byte gRecvCmds + 2 -_080F9B00: - ldr r7, _080F9B4C @ =gUnknown_3005450 - ldrb r2, [r7, 0xC] - cmp r2, 0 - bne _080F9B68 - ldr r3, _080F9B50 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r3] - mov r6, r8 - adds r6, 0x1 - cmp r0, 0 - beq _080F9BF8 - ldr r0, _080F9B54 @ =gRecvCmds + 2 - adds r4, r5, r0 - ldrh r1, [r4] - ldr r0, _080F9B58 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0, 0x2] - ands r1, r0 - cmp r1, 0 - beq _080F9B38 - strb r2, [r3] - bl sub_80FEB14 - ldr r1, _080F9B5C @ =gRecvCmds + 4 - adds r0, r5, r1 - ldrh r1, [r0] - ldr r2, _080F9B60 @ =0x0000099c - adds r0, r7, r2 - strb r1, [r0] -_080F9B38: - ldr r0, _080F9B64 @ =gRecvCmds - adds r0, 0x6 - adds r0, r5, r0 - ldrh r0, [r0] - strb r0, [r7, 0xD] - ldrh r0, [r4] - bl sub_80FA9D0 - b _080F9BF8 - .align 2, 0 -_080F9B4C: .4byte gUnknown_3005450 -_080F9B50: .4byte gReceivedRemoteLinkPlayers -_080F9B54: .4byte gRecvCmds + 2 -_080F9B58: .4byte gRfuLinkStatus -_080F9B5C: .4byte gRecvCmds + 4 -_080F9B60: .4byte 0x0000099c -_080F9B64: .4byte gRecvCmds -_080F9B68: - movs r0, 0xEE - lsls r0, 8 - bl sub_80F9D04 - ldr r1, _080F9B90 @ =gSendCmd - ldr r3, _080F9B94 @ =gRecvCmds + 2 - adds r0, r5, r3 - ldrh r0, [r0] - strh r0, [r1, 0x2] - ldr r4, _080F9B98 @ =gRecvCmds + 4 - adds r0, r5, r4 - ldrh r0, [r0] - strh r0, [r1, 0x4] - ldr r0, _080F9B9C @ =gRecvCmds - adds r0, 0x6 - adds r0, r5, r0 - ldrh r0, [r0] - strh r0, [r1, 0x6] - b _080F9BF4 - .align 2, 0 -_080F9B90: .4byte gSendCmd -_080F9B94: .4byte gRecvCmds + 2 -_080F9B98: .4byte gRecvCmds + 4 -_080F9B9C: .4byte gRecvCmds -_080F9BA0: - ldr r4, _080F9BD0 @ =gUnknown_3005450 - ldrb r0, [r4, 0xC] - mov r6, r8 - adds r6, 0x1 - cmp r0, 0x1 - bne _080F9C34 - ldr r0, _080F9BD4 @ =0x0000099b - adds r2, r4, r0 - ldr r1, _080F9BD8 @ =gRecvCmds + 2 - adds r3, r5, r1 - ldrb r1, [r3] - ldrb r0, [r2] - orrs r0, r1 - strb r0, [r2] - ldr r2, _080F9BDC @ =gRecvCmds + 4 - adds r0, r5, r2 - ldrh r1, [r0] - ldr r2, _080F9BE0 @ =0x0000099c - adds r0, r4, r2 - strb r1, [r0] - ldrh r0, [r3] - bl sub_80FA9D0 - b _080F9BF8 - .align 2, 0 -_080F9BD0: .4byte gUnknown_3005450 -_080F9BD4: .4byte 0x0000099b -_080F9BD8: .4byte gRecvCmds + 2 -_080F9BDC: .4byte gRecvCmds + 4 -_080F9BE0: .4byte 0x0000099c -_080F9BE4: - ldr r0, _080F9C24 @ =gLinkPartnersHeldKeys - mov r3, r8 - lsls r1, r3, 1 - adds r1, r0 - ldr r4, _080F9C28 @ =gRecvCmds + 2 - adds r0, r5, r4 - ldrh r0, [r0] - strh r0, [r1] -_080F9BF4: - mov r6, r8 - adds r6, 0x1 -_080F9BF8: - ldr r3, _080F9C2C @ =gUnknown_3005450 - ldrb r4, [r3, 0xC] - cmp r4, 0x1 - bne _080F9C34 - adds r0, r3, 0 - adds r0, 0x61 - mov r1, r8 - adds r2, r1, r0 - ldrb r0, [r2] - adds r1, r0, 0 - cmp r1, 0 - beq _080F9C34 - cmp r1, 0x4 - bne _080F9C30 - adds r0, r3, 0 - adds r0, 0x5C - add r0, r8 - movs r1, 0 - strb r4, [r0] - strb r1, [r2] - b _080F9C34 - .align 2, 0 -_080F9C24: .4byte gLinkPartnersHeldKeys -_080F9C28: .4byte gRecvCmds + 2 -_080F9C2C: .4byte gUnknown_3005450 -_080F9C30: - adds r0, 0x1 - strb r0, [r2] -_080F9C34: - lsls r0, r6, 16 - lsrs r0, 16 - mov r8, r0 - cmp r0, 0x4 - bhi _080F9C40 - b _080F9876 -_080F9C40: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F9868 - - thumb_func_start sub_80F9C50 -sub_80F9C50: @ 80F9C50 - push {lr} - movs r2, 0 - ldr r0, _080F9C64 @ =gUnknown_3005450 - adds r1, r0, 0 - adds r1, 0x92 -_080F9C5A: - ldrb r0, [r1] - cmp r0, 0 - beq _080F9C68 - movs r0, 0 - b _080F9C72 - .align 2, 0 -_080F9C64: .4byte gUnknown_3005450 -_080F9C68: - adds r1, 0x14 - adds r2, 0x1 - cmp r2, 0x4 - ble _080F9C5A - movs r0, 0x1 -_080F9C72: - pop {r1} - bx r1 - thumb_func_end sub_80F9C50 - - thumb_func_start sub_80F9C78 -sub_80F9C78: @ 80F9C78 - push {r4,lr} - movs r1, 0 - ldr r2, _080F9CA0 @ =gUnknown_3005450 - ldrb r0, [r2, 0xD] - cmp r1, r0 - bge _080F9CAC - adds r4, r0, 0 - adds r3, r2, 0 - adds r3, 0x92 - adds r2, 0x5C -_080F9C8C: - ldrb r0, [r3] - cmp r0, 0x2 - bne _080F9C9A - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080F9CA4 -_080F9C9A: - movs r0, 0 - b _080F9CAE - .align 2, 0 -_080F9CA0: .4byte gUnknown_3005450 -_080F9CA4: - adds r3, 0x14 - adds r1, 0x1 - cmp r1, r4 - blt _080F9C8C -_080F9CAC: - movs r0, 0x1 -_080F9CAE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80F9C78 - - thumb_func_start sub_80F9CB4 -sub_80F9CB4: @ 80F9CB4 - movs r2, 0 - movs r1, 0 - strh r1, [r0] - strh r1, [r0, 0x2] - str r1, [r0, 0x4] - str r1, [r0, 0x8] - strb r2, [r0, 0x10] - strb r2, [r0, 0x11] - strb r2, [r0, 0x12] - bx lr - thumb_func_end sub_80F9CB4 - - thumb_func_start Rfu_GetBlockReceivedStatus -Rfu_GetBlockReceivedStatus: @ 80F9CC8 - push {r4,lr} - movs r2, 0 - movs r1, 0 - ldr r0, _080F9D00 @ =gUnknown_3005450 - adds r3, r0, 0 - adds r3, 0x92 - adds r4, r0, 0 - adds r4, 0x5C -_080F9CD8: - ldrb r0, [r3] - cmp r0, 0x2 - bne _080F9CEE - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080F9CEE - lsls r0, r1 - orrs r2, r0 - lsls r0, r2, 24 - lsrs r2, r0, 24 -_080F9CEE: - adds r3, 0x14 - adds r1, 0x1 - cmp r1, 0x4 - ble _080F9CD8 - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F9D00: .4byte gUnknown_3005450 - thumb_func_end Rfu_GetBlockReceivedStatus - - thumb_func_start sub_80F9D04 -sub_80F9D04: @ 80F9D04 - push {r4,r5,lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r5, _080F9D34 @ =gSendCmd - strh r1, [r5] - movs r0, 0xF0 - lsls r0, 7 - adds r4, r5, 0 - cmp r1, r0 - beq _080F9D98 - cmp r1, r0 - bgt _080F9D4A - movs r0, 0xBE - lsls r0, 7 - cmp r1, r0 - beq _080F9DE8 - cmp r1, r0 - bgt _080F9D38 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - beq _080F9DFC - b _080F9E22 - .align 2, 0 -_080F9D34: .4byte gSendCmd -_080F9D38: - movs r0, 0xCC - lsls r0, 7 - cmp r1, r0 - beq _080F9DE8 - movs r0, 0xEE - lsls r0, 7 - cmp r1, r0 - beq _080F9D98 - b _080F9E22 -_080F9D4A: - movs r0, 0xBE - lsls r0, 8 - cmp r1, r0 - beq _080F9E1C - cmp r1, r0 - bgt _080F9E22 - movs r0, 0x88 - lsls r0, 8 - cmp r1, r0 - beq _080F9D68 - movs r0, 0xA1 - lsls r0, 8 - cmp r1, r0 - beq _080F9D80 - b _080F9E22 -_080F9D68: - ldr r0, _080F9D7C @ =gUnknown_3005450 - adds r1, r0, 0 - adds r1, 0x6E - ldrh r1, [r1] - strh r1, [r5, 0x2] - adds r0, 0x7D - ldrb r0, [r0] - adds r0, 0x80 - strh r0, [r5, 0x4] - b _080F9E22 - .align 2, 0 -_080F9D7C: .4byte gUnknown_3005450 -_080F9D80: - bl sub_80F9C50 - lsls r0, 24 - cmp r0, 0 - beq _080F9E22 - ldr r0, _080F9D94 @ =gUnknown_3005450 - adds r0, 0x5A - ldrb r0, [r0] - b _080F9E20 - .align 2, 0 -_080F9D94: .4byte gUnknown_3005450 -_080F9D98: - ldr r3, _080F9DD4 @ =gUnknown_3005450 - ldr r1, _080F9DD8 @ =0x0000099a - adds r0, r3, r1 - ldr r2, _080F9DDC @ =0x0000099b - adds r1, r3, r2 - ldrb r2, [r0] - ldrb r0, [r1] - eors r0, r2 - ldr r1, _080F9DE0 @ =gUnknown_843EC41 - adds r0, r1 - ldrb r0, [r0] - adds r0, 0x1 - strb r0, [r3, 0xD] - ldrb r0, [r3, 0xD] - strh r0, [r4, 0x2] - adds r2, r4, 0x4 - movs r4, 0 - ldr r0, _080F9DE4 @ =0x00000996 - adds r3, r0 -_080F9DBE: - adds r1, r2, r4 - adds r0, r4, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080F9DBE - b _080F9E22 - .align 2, 0 -_080F9DD4: .4byte gUnknown_3005450 -_080F9DD8: .4byte 0x0000099a -_080F9DDC: .4byte 0x0000099b -_080F9DE0: .4byte gUnknown_843EC41 -_080F9DE4: .4byte 0x00000996 -_080F9DE8: - ldr r0, _080F9DF8 @ =gUnknown_3005450 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4, 0x2] - b _080F9E22 - .align 2, 0 -_080F9DF8: .4byte gUnknown_3005450 -_080F9DFC: - movs r4, 0 - ldr r3, _080F9E18 @ =gUnknown_3005542 -_080F9E00: - adds r2, r4, 0x1 - lsls r1, r2, 1 - adds r1, r5 - lsls r0, r4, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - lsls r2, 24 - lsrs r4, r2, 24 - cmp r4, 0x5 - bls _080F9E00 - b _080F9E22 - .align 2, 0 -_080F9E18: .4byte gUnknown_3005542 -_080F9E1C: - ldr r0, _080F9E28 @ =gHeldKeyCodeToSend - ldrh r0, [r0] -_080F9E20: - strh r0, [r5, 0x2] -_080F9E22: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F9E28: .4byte gHeldKeyCodeToSend - thumb_func_end sub_80F9D04 - - thumb_func_start sub_80F9E2C -sub_80F9E2C: @ 80F9E2C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080F9E58 @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - bne _080F9E52 - bl sub_80FBA00 - cmp r0, 0 - bne _080F9E52 - ldr r0, _080F9E5C @ =gUnknown_3005542 - adds r1, r4, 0 - movs r2, 0xC - bl memcpy - movs r0, 0xBC - lsls r0, 6 - bl sub_80F9D04 -_080F9E52: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F9E58: .4byte gSendCmd -_080F9E5C: .4byte gUnknown_3005542 - thumb_func_end sub_80F9E2C - - thumb_func_start Rfu_InitBlockSend -Rfu_InitBlockSend: @ 80F9E60 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - adds r6, r1, 0 - cmp r6, 0xFC - bls _080F9E7C - ldr r0, _080F9EA8 @ =gUnknown_843ED94 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu.c" - ldr r1, _080F9EAC @ =0x00000701 // 1793 - ldr r2, _080F9EB0 @ =gUnknown_843EDD8 "size<=252" - movs r3, 0x1 - bl AGBAssert -_080F9E7C: - ldr r5, _080F9EB4 @ =gUnknown_3005450 - ldr r0, [r5] - cmp r0, 0 - bne _080F9EA4 - ldr r0, _080F9EB8 @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - bne _080F9EA4 - movs r0, 0x7C - adds r0, r5 - mov r9, r0 - ldrb r1, [r0] - mov r8, r1 - cmp r1, 0 - beq _080F9EC0 - ldr r1, _080F9EBC @ =gUnknown_203AC08 - adds r1, 0x83 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080F9EA4: - movs r0, 0 - b _080F9F2A - .align 2, 0 -_080F9EA8: .4byte gUnknown_843ED94 -_080F9EAC: .4byte 0x00000701 -_080F9EB0: .4byte gUnknown_843EDD8 -_080F9EB4: .4byte gUnknown_3005450 -_080F9EB8: .4byte gSendCmd -_080F9EBC: .4byte gUnknown_203AC08 -_080F9EC0: - adds r0, r6, 0 - movs r1, 0xC - bl __umodsi3 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl GetMultiplayerId - adds r1, r5, 0 - adds r1, 0x7D - strb r0, [r1] - movs r0, 0x1 - mov r1, r9 - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0xC - bl __udivsi3 - adds r0, r4 - adds r1, r5, 0 - adds r1, 0x6E - strh r0, [r1] - adds r0, r5, 0 - adds r0, 0x6C - mov r1, r8 - strh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - cmp r6, r0 - bls _080F9F02 - str r7, [r5, 0x70] - b _080F9F14 -_080F9F02: - ldr r4, _080F9F38 @ =gBlockSendBuffer - cmp r7, r4 - beq _080F9F12 - adds r0, r4, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl memcpy -_080F9F12: - str r4, [r5, 0x70] -_080F9F14: - movs r0, 0x88 - lsls r0, 8 - bl sub_80F9D04 - ldr r0, _080F9F3C @ =gUnknown_3005450 - ldr r1, _080F9F40 @ =rfufunc_80F9F44 - str r1, [r0] - adds r0, 0x5B - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 -_080F9F2A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F9F38: .4byte gBlockSendBuffer -_080F9F3C: .4byte gUnknown_3005450 -_080F9F40: .4byte rfufunc_80F9F44 - thumb_func_end Rfu_InitBlockSend - - thumb_func_start rfufunc_80F9F44 -rfufunc_80F9F44: @ 80F9F44 - push {r4,r5,lr} - ldr r0, _080F9F74 @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - bne _080F9F98 - movs r5, 0x88 - lsls r5, 8 - adds r0, r5, 0 - bl sub_80F9D04 - ldr r4, _080F9F78 @ =gUnknown_3005450 - ldrb r0, [r4, 0xC] - cmp r0, 0x1 - bne _080F9F7C - adds r1, r4, 0 - adds r1, 0x5B - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bls _080F9F98 - b _080F9F94 - .align 2, 0 -_080F9F74: .4byte gSendCmd -_080F9F78: .4byte gUnknown_3005450 -_080F9F7C: - bl GetMultiplayerId - ldr r1, _080F9FA0 @ =gRecvCmds - lsls r0, 24 - lsrs r0, 20 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, r5 - bne _080F9F98 -_080F9F94: - ldr r0, _080F9FA4 @ =sub_80F9FA8 - str r0, [r4] -_080F9F98: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F9FA0: .4byte gRecvCmds -_080F9FA4: .4byte sub_80F9FA8 - thumb_func_end rfufunc_80F9F44 - - thumb_func_start sub_80F9FA8 -sub_80F9FA8: @ 80F9FA8 - push {r4-r6,lr} - ldr r0, _080FA014 @ =gUnknown_3005450 - mov r12, r0 - ldr r5, [r0, 0x70] - ldr r3, _080FA018 @ =gSendCmd - mov r2, r12 - adds r2, 0x6C - ldrh r1, [r2] - movs r4, 0x89 - lsls r4, 8 - adds r0, r4, 0 - orrs r0, r1 - strh r0, [r3] - movs r4, 0 - adds r6, r2, 0 - adds r3, 0x2 -_080F9FC8: - lsls r2, r4, 1 - ldrh r1, [r6] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, r5 - ldrb r1, [r0, 0x1] - lsls r1, 8 - ldrb r0, [r0] - orrs r0, r1 - strh r0, [r3] - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0x6 - ble _080F9FC8 - mov r0, r12 - adds r0, 0x6C - ldrh r1, [r0] - adds r1, 0x1 - strh r1, [r0] - adds r0, 0x2 - ldrh r0, [r0] - lsls r1, 16 - lsrs r1, 16 - cmp r0, r1 - bhi _080FA00C - mov r0, r12 - adds r0, 0x7C - movs r1, 0 - strb r1, [r0] - ldr r0, _080FA01C @ =rfufunc_80FA020 - mov r1, r12 - str r0, [r1] -_080FA00C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FA014: .4byte gUnknown_3005450 -_080FA018: .4byte gSendCmd -_080FA01C: .4byte rfufunc_80FA020 - thumb_func_end sub_80F9FA8 - - thumb_func_start rfufunc_80FA020 -rfufunc_80FA020: @ 80FA020 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r5, _080FA0C8 @ =gUnknown_3005450 - ldr r0, [r5, 0x70] - mov r8, r0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r0, [r5, 0xC] - cmp r0, 0 - bne _080FA0E8 - ldr r3, _080FA0CC @ =gSendCmd - adds r2, r5, 0 - adds r2, 0x6E - ldrh r0, [r2] - subs r0, 0x1 - ldr r4, _080FA0D0 @ =0xffff8900 - adds r1, r4, 0 - orrs r0, r1 - strh r0, [r3] - movs r4, 0 - mov r9, r5 - ldr r0, _080FA0D4 @ =gRecvCmds - mov r12, r0 - lsls r5, r6, 4 - adds r7, r2, 0 - adds r3, 0x2 -_080FA05C: - lsls r2, r4, 1 - ldrh r1, [r7] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - add r0, r8 - adds r1, r0, 0 - subs r1, 0xB - ldrb r1, [r1] - lsls r1, 8 - subs r0, 0xC - ldrb r0, [r0] - orrs r0, r1 - strh r0, [r3] - adds r3, 0x2 - adds r4, 0x1 - cmp r4, 0x6 - ble _080FA05C - mov r1, r12 - adds r0, r5, r1 - ldrb r1, [r0] - mov r3, r9 - adds r0, r3, 0 - adds r0, 0x6E - ldrh r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _080FA0EC - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x88 - adds r1, r0, r1 - ldr r2, _080FA0D8 @ =gUnknown_843EBD4 - adds r0, r3 - adds r0, 0x82 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - beq _080FA0E0 - adds r0, r6, 0 - bl sub_80F965C - ldr r1, _080FA0DC @ =gUnknown_203AC08 - adds r1, 0x64 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _080FA0EC - .align 2, 0 -_080FA0C8: .4byte gUnknown_3005450 -_080FA0CC: .4byte gSendCmd -_080FA0D0: .4byte 0xffff8900 -_080FA0D4: .4byte gRecvCmds -_080FA0D8: .4byte gUnknown_843EBD4 -_080FA0DC: .4byte gUnknown_203AC08 -_080FA0E0: - movs r0, 0 - mov r4, r9 - str r0, [r4] - b _080FA0EC -_080FA0E8: - movs r0, 0 - str r0, [r5] -_080FA0EC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end rfufunc_80FA020 - - thumb_func_start sub_80FA0F8 -sub_80FA0F8: @ 80FA0F8 - push {lr} - ldr r1, _080FA110 @ =gUnknown_3005450 - adds r1, 0x5A - strb r0, [r1] - movs r0, 0xA1 - lsls r0, 8 - bl sub_80F9D04 - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_080FA110: .4byte gUnknown_3005450 - thumb_func_end sub_80FA0F8 - - thumb_func_start sub_80FA114 -sub_80FA114: @ 80FA114 - push {lr} - bl rfu_clearAllSlot - bl sub_80FD52C - ldr r1, _080FA138 @ =gReceivedRemoteLinkPlayers - movs r0, 0 - strb r0, [r1] - ldr r2, _080FA13C @ =gUnknown_3005450 - adds r3, r2, 0 - adds r3, 0xEF - movs r1, 0 - movs r0, 0x1 - strb r0, [r3] - str r1, [r2] - pop {r0} - bx r0 - .align 2, 0 -_080FA138: .4byte gReceivedRemoteLinkPlayers -_080FA13C: .4byte gUnknown_3005450 - thumb_func_end sub_80FA114 - - thumb_func_start sub_80FA140 -sub_80FA140: @ 80FA140 - push {lr} - ldr r0, _080FA15C @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r1, [r0, 0x2] - ldrb r0, [r0, 0x3] - orrs r0, r1 - bl rfu_REQ_disconnect - bl rfu_waitREQComplete - bl sub_80FA114 - pop {r0} - bx r0 - .align 2, 0 -_080FA15C: .4byte gRfuLinkStatus - thumb_func_end sub_80FA140 - - thumb_func_start sub_80FA160 -sub_80FA160: @ 80FA160 - push {r4,lr} - ldr r4, _080FA178 @ =gUnknown_3005450 - ldrb r0, [r4, 0xC] - cmp r0, 0 - bne _080FA180 - bl sub_80FEB14 - ldr r0, _080FA17C @ =0x0000099c - adds r1, r4, r0 - movs r0, 0x2 - strb r0, [r1] - b _080FA184 - .align 2, 0 -_080FA178: .4byte gUnknown_3005450 -_080FA17C: .4byte 0x0000099c -_080FA180: - ldr r0, _080FA18C @ =sub_80FA140 - str r0, [r4] -_080FA184: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FA18C: .4byte sub_80FA140 - thumb_func_end sub_80FA160 - - thumb_func_start sub_80FA190 -sub_80FA190: @ 80FA190 - push {lr} - bl sub_80FEB14 - ldr r2, _080FA1B4 @ =gUnknown_3005450 - ldr r0, _080FA1B8 @ =0x0000099c - adds r1, r2, r0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _080FA1BC @ =gRfuLinkStatus - ldr r1, [r0] - ldrb r0, [r1, 0x2] - ldrb r1, [r1, 0x3] - orrs r0, r1 - ldr r1, _080FA1C0 @ =0x0000099b - adds r2, r1 - strb r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_080FA1B4: .4byte gUnknown_3005450 -_080FA1B8: .4byte 0x0000099c -_080FA1BC: .4byte gRfuLinkStatus -_080FA1C0: .4byte 0x0000099b - thumb_func_end sub_80FA190 - - thumb_func_start sub_80FA1C4 -sub_80FA1C4: @ 80FA1C4 - push {r4,r5,lr} - ldr r0, _080FA208 @ =gUnknown_3005450 - ldrb r5, [r0, 0xD] - movs r2, 0 - movs r1, 0 - adds r3, r0, 0 - adds r4, r3, 0 - adds r4, 0xE4 -_080FA1D4: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080FA1DE - adds r2, 0x1 -_080FA1DE: - adds r1, 0x1 - cmp r1, 0x4 - ble _080FA1D4 - cmp r2, r5 - bne _080FA218 - ldr r2, _080FA20C @ =gBattleTypeFlags - ldr r0, [r2] - ldr r1, _080FA210 @ =0x0000ffdf - ands r0, r1 - str r0, [r2] - ldrb r0, [r3, 0xC] - cmp r0, 0 - bne _080FA214 - adds r0, r3, 0 - adds r0, 0xEE - ldrb r1, [r0] - movs r1, 0x3 - strb r1, [r0] - bl sub_80FA160 - b _080FA218 - .align 2, 0 -_080FA208: .4byte gUnknown_3005450 -_080FA20C: .4byte gBattleTypeFlags -_080FA210: .4byte 0x0000ffdf -_080FA214: - ldr r0, _080FA220 @ =sub_80FA160 - str r0, [r3] -_080FA218: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FA220: .4byte sub_80FA160 - thumb_func_end sub_80FA1C4 - - thumb_func_start sub_80FA224 -sub_80FA224: @ 80FA224 - push {r4,lr} - ldr r0, _080FA250 @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - bne _080FA248 - ldr r4, _080FA254 @ =gUnknown_3005450 - movs r1, 0x9A - lsls r1, 4 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080FA248 - movs r0, 0xBE - lsls r0, 7 - bl sub_80F9D04 - ldr r0, _080FA258 @ =sub_80FA1C4 - str r0, [r4] -_080FA248: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FA250: .4byte gSendCmd -_080FA254: .4byte gUnknown_3005450 -_080FA258: .4byte sub_80FA1C4 - thumb_func_end sub_80FA224 - - thumb_func_start sub_80FA25C -sub_80FA25C: @ 80FA25C - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080FA280 @ =gUnknown_3005450 - ldr r0, [r2] - cmp r0, 0 - bne _080FA27C - ldr r1, _080FA284 @ =0x00000991 - adds r0, r2, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _080FA288 @ =sub_80FA224 - str r0, [r2] - adds r0, r3, 0 - bl DestroyTask -_080FA27C: - pop {r0} - bx r0 - .align 2, 0 -_080FA280: .4byte gUnknown_3005450 -_080FA284: .4byte 0x00000991 -_080FA288: .4byte sub_80FA224 - thumb_func_end sub_80FA25C - - thumb_func_start task_add_05_task_del_08FA224_when_no_RfuFunc -task_add_05_task_del_08FA224_when_no_RfuFunc: @ 80FA28C - push {r4,lr} - ldr r4, _080FA2AC @ =sub_80FA25C - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _080FA2A4 - adds r0, r4, 0 - movs r1, 0x5 - bl CreateTask -_080FA2A4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FA2AC: .4byte sub_80FA25C - thumb_func_end task_add_05_task_del_08FA224_when_no_RfuFunc - - thumb_func_start sub_80FA2B0 -sub_80FA2B0: @ 80FA2B0 - push {r4,r5,lr} - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080FA2DE - ldr r1, _080FA348 @ =gUnknown_3005450 - ldr r2, _080FA34C @ =0x0000069e - adds r0, r1, r2 - ldrb r0, [r0] - adds r4, r0, 0 - cmp r4, 0 - bne _080FA2DE - adds r5, r1, 0 - adds r5, 0xFE - ldrh r0, [r5] - cmp r0, 0x3C - bls _080FA2DE - movs r0, 0xCC - lsls r0, 7 - bl sub_80F9D04 - strh r4, [r5] -_080FA2DE: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - cmp r1, r2 - bcs _080FA30A - ldr r0, _080FA348 @ =gUnknown_3005450 - adds r3, r0, 0 - adds r3, 0xE9 - ldrb r0, [r3] - cmp r0, 0 - beq _080FA30A -_080FA2F8: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r2 - bcs _080FA30A - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _080FA2F8 -_080FA30A: - ldr r4, _080FA348 @ =gUnknown_3005450 - cmp r1, r2 - bne _080FA336 - movs r1, 0 - adds r3, r4, 0 - adds r3, 0xE9 - movs r2, 0 -_080FA318: - adds r0, r1, r3 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080FA318 - movs r1, 0x80 - lsls r1, 1 - adds r0, r4, r1 - ldrh r1, [r0] - adds r1, 0x1 - movs r2, 0 - strh r1, [r0] - str r2, [r4] -_080FA336: - adds r1, r4, 0 - adds r1, 0xFE - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FA348: .4byte gUnknown_3005450 -_080FA34C: .4byte 0x0000069e - thumb_func_end sub_80FA2B0 - - thumb_func_start sub_80FA350 -sub_80FA350: @ 80FA350 - push {r4,lr} - ldr r4, _080FA378 @ =gUnknown_3005450 - ldr r1, _080FA37C @ =0x0000069e - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080FA372 - ldr r0, _080FA380 @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - bne _080FA372 - movs r0, 0xCC - lsls r0, 7 - bl sub_80F9D04 - ldr r0, _080FA384 @ =sub_80FA2B0 - str r0, [r4] -_080FA372: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FA378: .4byte gUnknown_3005450 -_080FA37C: .4byte 0x0000069e -_080FA380: .4byte gSendCmd -_080FA384: .4byte sub_80FA2B0 - thumb_func_end sub_80FA350 - - thumb_func_start sub_80FA388 -sub_80FA388: @ 80FA388 - push {r4,lr} - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - beq _080FA3C4 - ldr r4, _080FA3B4 @ =gUnknown_3005450 - ldr r1, _080FA3B8 @ =0x0000069e - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080FA416 - ldr r0, _080FA3BC @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - bne _080FA416 - movs r0, 0xCC - lsls r0, 7 - bl sub_80F9D04 - ldr r0, _080FA3C0 @ =sub_80FA2B0 - b _080FA414 - .align 2, 0 -_080FA3B4: .4byte gUnknown_3005450 -_080FA3B8: .4byte 0x0000069e -_080FA3BC: .4byte gSendCmd -_080FA3C0: .4byte sub_80FA2B0 -_080FA3C4: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0x1 - cmp r1, r2 - bcs _080FA3F2 - ldr r3, _080FA41C @ =gUnknown_3005450 - adds r0, r3, 0 - adds r0, 0xEA - ldrb r0, [r0] - cmp r0, 0 - beq _080FA3F2 - adds r3, 0xE9 -_080FA3E0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, r2 - bcs _080FA3F2 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _080FA3E0 -_080FA3F2: - cmp r1, r2 - bne _080FA416 - ldr r4, _080FA41C @ =gUnknown_3005450 - ldr r1, _080FA420 @ =0x0000069e - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080FA416 - ldr r0, _080FA424 @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - bne _080FA416 - movs r0, 0xCC - lsls r0, 7 - bl sub_80F9D04 - ldr r0, _080FA428 @ =sub_80FA350 -_080FA414: - str r0, [r4] -_080FA416: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FA41C: .4byte gUnknown_3005450 -_080FA420: .4byte 0x0000069e -_080FA424: .4byte gSendCmd -_080FA428: .4byte sub_80FA350 - thumb_func_end sub_80FA388 - - thumb_func_start sub_80FA42C -sub_80FA42C: @ 80FA42C - push {lr} - ldr r1, _080FA444 @ =gUnknown_3005450 - ldr r2, [r1] - cmp r2, 0 - bne _080FA440 - ldr r0, _080FA448 @ =sub_80FA388 - str r0, [r1] - adds r0, r1, 0 - adds r0, 0xFE - strh r2, [r0] -_080FA440: - pop {r0} - bx r0 - .align 2, 0 -_080FA444: .4byte gUnknown_3005450 -_080FA448: .4byte sub_80FA388 - thumb_func_end sub_80FA42C - - thumb_func_start sub_80FA44C -sub_80FA44C: @ 80FA44C - push {r4,lr} - adds r3, r0, 0 - ldr r1, _080FA468 @ =gUnknown_843EC8C - ldrh r0, [r1] - cmp r0, r3 - beq _080FA47A - ldr r4, _080FA46C @ =0x0000ffff - adds r2, r1, 0 -_080FA45C: - ldrh r0, [r2] - cmp r0, r4 - bne _080FA470 - movs r0, 0 - b _080FA47C - .align 2, 0 -_080FA468: .4byte gUnknown_843EC8C -_080FA46C: .4byte 0x0000ffff -_080FA470: - adds r1, 0x2 - adds r2, 0x2 - ldrh r0, [r1] - cmp r0, r3 - bne _080FA45C -_080FA47A: - movs r0, 0x1 -_080FA47C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FA44C - - thumb_func_start sub_80FA484 -sub_80FA484: @ 80FA484 - push {lr} - cmp r0, 0 - beq _080FA498 - movs r1, 0x96 - lsls r1, 2 - movs r0, 0x1 - bl sub_80FEA34 - movs r0, 0 - b _080FA4A4 -_080FA498: - movs r0, 0 - movs r1, 0 - bl sub_80FEA34 - lsls r0, 24 - lsrs r0, 24 -_080FA4A4: - pop {r1} - bx r1 - thumb_func_end sub_80FA484 - - thumb_func_start sub_80FA4A8 -sub_80FA4A8: @ 80FA4A8 - push {lr} - ldr r0, _080FA4C0 @ =gUnknown_3005450 - ldr r1, _080FA4C4 @ =0x00000991 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - movs r0, 0 - bl sub_80FD760 - pop {r0} - bx r0 - .align 2, 0 -_080FA4C0: .4byte gUnknown_3005450 -_080FA4C4: .4byte 0x00000991 - thumb_func_end sub_80FA4A8 - - thumb_func_start rfu_get_multiplayer_id -rfu_get_multiplayer_id: @ 80FA4C8 - push {lr} - ldr r1, _080FA4DC @ =gUnknown_3005450 - ldrb r0, [r1, 0xC] - cmp r0, 0x1 - beq _080FA4E4 - ldr r2, _080FA4E0 @ =0x00000986 - adds r0, r1, r2 - ldrb r0, [r0] - b _080FA4E6 - .align 2, 0 -_080FA4DC: .4byte gUnknown_3005450 -_080FA4E0: .4byte 0x00000986 -_080FA4E4: - movs r0, 0 -_080FA4E6: - pop {r1} - bx r1 - thumb_func_end rfu_get_multiplayer_id - - thumb_func_start GetRfuPlayerCount -GetRfuPlayerCount: @ 80FA4EC - ldr r0, _080FA4F4 @ =gUnknown_3005450 - ldrb r0, [r0, 0xD] - bx lr - .align 2, 0 -_080FA4F4: .4byte gUnknown_3005450 - thumb_func_end GetRfuPlayerCount - - thumb_func_start IsLinkRfuTaskFinished -IsLinkRfuTaskFinished: @ 80FA4F8 - push {lr} - movs r1, 0 - ldr r0, _080FA50C @ =gUnknown_3005450 - ldr r0, [r0] - cmp r0, 0 - bne _080FA506 - movs r1, 0x1 -_080FA506: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080FA50C: .4byte gUnknown_3005450 - thumb_func_end IsLinkRfuTaskFinished - - thumb_func_start sub_80FA510 -sub_80FA510: @ 80FA510 - push {lr} - ldr r0, _080FA524 @ =gUnknown_3005450 - ldr r0, [r0] - cmp r0, 0 - beq _080FA51E - bl _call_via_r0 -_080FA51E: - pop {r0} - bx r0 - .align 2, 0 -_080FA524: .4byte gUnknown_3005450 - thumb_func_end sub_80FA510 - - thumb_func_start sub_80FA528 -sub_80FA528: @ 80FA528 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r7, 0 - movs r5, 0 - ldr r6, _080FA594 @ =gUnknown_3005450 - ldr r0, _080FA598 @ =0x000008f6 - adds r0, r6 - mov r8, r0 -_080FA53A: - ldr r1, _080FA59C @ =0x00000989 - adds r0, r6, r1 - adds r4, r5, r0 - ldrb r0, [r4] - subs r0, 0x5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080FA5C2 - ldr r1, _080FA5A0 @ =gRfuSlotStatusNI - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - ldrh r0, [r0, 0x34] - cmp r0, 0x46 - beq _080FA55E - cmp r0, 0x48 - bne _080FA5A8 -_080FA55E: - ldr r2, _080FA5A4 @ =0x0000098d - adds r0, r6, r2 - adds r1, r5, r0 - ldrb r0, [r1] - cmp r0, 0x8 - bne _080FA5C2 - movs r0, 0x9 - strb r0, [r4] - movs r0, 0xA - strb r0, [r1] - lsls r1, r5, 24 - lsrs r1, 24 - movs r0, 0x8 - bl rfu_clearSlot - movs r0, 0x80 - lsls r0, 17 - lsls r0, r5 - lsrs r0, 24 - movs r1, 0x8 - adds r2, r4, 0 - movs r3, 0x1 - bl rfu_NI_setSendData - movs r7, 0x1 - b _080FA5C2 - .align 2, 0 -_080FA594: .4byte gUnknown_3005450 -_080FA598: .4byte 0x000008f6 -_080FA59C: .4byte 0x00000989 -_080FA5A0: .4byte gRfuSlotStatusNI -_080FA5A4: .4byte 0x0000098d -_080FA5A8: - mov r2, r8 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldrh r0, [r0, 0x34] - cmp r0, 0x47 - bne _080FA5C2 - lsls r1, r5, 24 - lsrs r1, 24 - movs r0, 0x8 - bl rfu_clearSlot -_080FA5C2: - adds r5, 0x1 - cmp r5, 0x3 - ble _080FA53A - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FA528 - - thumb_func_start sub_80FA5D4 -sub_80FA5D4: @ 80FA5D4 - push {r4-r6,lr} - movs r3, 0 - movs r1, 0 - ldr r5, _080FA620 @ =gUnknown_3005DDD - movs r6, 0x1 - movs r4, 0 -_080FA5E0: - adds r2, r1, r5 - ldrb r0, [r2] - cmp r0, 0xB - bne _080FA5F4 - adds r0, r6, 0 - lsls r0, r1 - orrs r3, r0 - lsls r0, r3, 24 - lsrs r3, r0, 24 - strb r4, [r2] -_080FA5F4: - adds r1, 0x1 - cmp r1, 0x3 - ble _080FA5E0 - cmp r3, 0 - beq _080FA608 - adds r0, r3, 0 - bl rfu_REQ_disconnect - bl rfu_waitREQComplete -_080FA608: - movs r1, 0 - ldr r2, _080FA620 @ =gUnknown_3005DDD -_080FA60C: - adds r0, r1, r2 - ldrb r0, [r0] - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080FA624 - movs r0, 0x1 - b _080FA62C - .align 2, 0 -_080FA620: .4byte gUnknown_3005DDD -_080FA624: - adds r1, 0x1 - cmp r1, 0x3 - ble _080FA60C - movs r0, 0 -_080FA62C: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FA5D4 - - thumb_func_start sub_80FA634 -sub_80FA634: @ 80FA634 - push {lr} - adds r2, r0, 0 - adds r0, r1, 0 - lsls r2, 16 - lsrs r2, 16 - adds r1, r2, 0 - bl sub_80FBC70 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _080FA668 - ldr r0, _080FA660 @ =gUnknown_3005450 - ldr r2, _080FA664 @ =0x00000989 - adds r0, r2 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0x9 - beq _080FA668 - movs r0, 0 - b _080FA66A - .align 2, 0 -_080FA660: .4byte gUnknown_3005450 -_080FA664: .4byte 0x00000989 -_080FA668: - movs r0, 0x1 -_080FA66A: - pop {r1} - bx r1 - thumb_func_end sub_80FA634 - - thumb_func_start sub_80FA670 -sub_80FA670: @ 80FA670 - push {r4-r6,lr} - adds r6, r0, 0 - adds r0, r2, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r1, 16 - lsrs r1, 16 - bl sub_80FBC70 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080FA6B4 @ =gUnknown_3005450 - ldr r0, _080FA6B8 @ =0x00000989 - adds r5, r0 - adds r5, r4, r5 - strb r6, [r5] - movs r0, 0x4 - adds r1, r4, 0 - bl rfu_clearSlot - movs r0, 0x80 - lsls r0, 17 - lsls r0, r4 - lsrs r0, 24 - movs r1, 0x8 - adds r2, r5, 0 - movs r3, 0x1 - bl rfu_NI_setSendData - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FA6B4: .4byte gUnknown_3005450 -_080FA6B8: .4byte 0x00000989 - thumb_func_end sub_80FA670 - - thumb_func_start sub_80FA6BC -sub_80FA6BC: @ 80FA6BC - push {r4,r5,lr} - ldr r4, _080FA6F0 @ =gUnknown_3005450 - ldr r0, _080FA6F4 @ =0x0000093d - adds r5, r4, r0 - movs r0, 0x8 - strb r0, [r5] - ldr r0, _080FA6F8 @ =0x000008f6 - adds r4, r0 - ldrb r1, [r4] - movs r0, 0x4 - bl rfu_clearSlot - ldrb r1, [r4] - movs r0, 0x80 - lsls r0, 17 - lsls r0, r1 - lsrs r0, 24 - movs r1, 0x8 - adds r2, r5, 0 - movs r3, 0x1 - bl rfu_NI_setSendData - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FA6F0: .4byte gUnknown_3005450 -_080FA6F4: .4byte 0x0000093d -_080FA6F8: .4byte 0x000008f6 - thumb_func_end sub_80FA6BC - - thumb_func_start sub_80FA6FC -sub_80FA6FC: @ 80FA6FC - push {lr} - adds r2, r0, 0 - adds r0, r1, 0 - lsls r2, 16 - lsrs r2, 16 - adds r1, r2, 0 - bl sub_80FBC70 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080FA718 - movs r0, 0x2 - b _080FA732 -_080FA718: - ldr r1, _080FA72C @ =gRfuSlotStatusNI - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0 - beq _080FA730 - movs r0, 0 - b _080FA732 - .align 2, 0 -_080FA72C: .4byte gRfuSlotStatusNI -_080FA730: - movs r0, 0x1 -_080FA732: - pop {r1} - bx r1 - thumb_func_end sub_80FA6FC - - thumb_func_start sub_80FA738 -sub_80FA738: @ 80FA738 - push {r4,r5,lr} - bl sub_80FA528 - movs r4, 0 - ldr r0, _080FA77C @ =gUnknown_3005450 - ldr r1, _080FA780 @ =0x0000098d - adds r5, r0, r1 -_080FA746: - ldr r1, _080FA784 @ =gRfuSlotStatusNI - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - ldrh r0, [r0] - subs r0, 0x26 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080FA770 - adds r1, r4, r5 - ldrb r0, [r1] - cmp r0, 0xA - bne _080FA766 - movs r0, 0xB - strb r0, [r1] -_080FA766: - lsls r1, r4, 24 - lsrs r1, 24 - movs r0, 0x4 - bl rfu_clearSlot -_080FA770: - adds r4, 0x1 - cmp r4, 0x3 - ble _080FA746 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FA77C: .4byte gUnknown_3005450 -_080FA780: .4byte 0x0000098d -_080FA784: .4byte gRfuSlotStatusNI - thumb_func_end sub_80FA738 - - thumb_func_start sub_80FA788 -sub_80FA788: @ 80FA788 - push {r4,r5,lr} - movs r4, 0 - ldr r1, _080FA800 @ =gUnknown_3005450 - ldr r2, _080FA804 @ =0x0000093d - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x8 - bne _080FA7C2 - ldr r2, _080FA808 @ =gRfuSlotStatusNI - ldr r0, _080FA80C @ =0x000008f6 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x26 - beq _080FA7BA - ldrb r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ldrh r0, [r0] - cmp r0, 0x27 - bne _080FA7C2 -_080FA7BA: - ldrb r1, [r1] - movs r0, 0x4 - bl rfu_clearSlot -_080FA7C2: - ldr r2, _080FA808 @ =gRfuSlotStatusNI - ldr r5, _080FA800 @ =gUnknown_3005450 - ldr r0, _080FA80C @ =0x000008f6 - adds r1, r5, r0 - ldrb r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ldrh r0, [r0, 0x34] - cmp r0, 0x46 - beq _080FA7E6 - ldrb r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ldrh r0, [r0, 0x34] - cmp r0, 0x48 - bne _080FA814 -_080FA7E6: - ldrb r1, [r1] - movs r0, 0x8 - bl rfu_clearSlot - ldr r2, _080FA810 @ =0x0000093e - adds r4, r5, r2 - ldrb r0, [r4] - movs r1, 0 - bl sub_80FB9E4 - ldrb r4, [r4] - b _080FA82C - .align 2, 0 -_080FA800: .4byte gUnknown_3005450 -_080FA804: .4byte 0x0000093d -_080FA808: .4byte gRfuSlotStatusNI -_080FA80C: .4byte 0x000008f6 -_080FA810: .4byte 0x0000093e -_080FA814: - ldrb r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - ldrh r0, [r0, 0x34] - cmp r0, 0x47 - bne _080FA82C - ldrb r1, [r1] - movs r0, 0x8 - bl rfu_clearSlot - movs r4, 0x6 -_080FA82C: - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FA788 - - thumb_func_start sub_80FA834 -sub_80FA834: @ 80FA834 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _080FA884 @ =gUnknown_3005450 - adds r0, r5, 0 - adds r0, 0xF1 - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080FA85C - movs r0, 0x9A - lsls r0, 4 - adds r1, r5, r0 - movs r0, 0 - strb r0, [r1] - adds r0, r6, 0 - bl DestroyTask -_080FA85C: - ldr r2, _080FA888 @ =gTasks - lsls r1, r6, 2 - adds r0, r1, r6 - lsls r0, 3 - adds r4, r0, r2 - movs r2, 0x8 - ldrsh r0, [r4, r2] - adds r7, r1, 0 - cmp r0, 0x3 - beq _080FA904 - cmp r0, 0x3 - bgt _080FA88C - cmp r0, 0x1 - beq _080FA8B4 - cmp r0, 0x1 - bgt _080FA900 - cmp r0, 0 - beq _080FA89E - b _080FA9BC - .align 2, 0 -_080FA884: .4byte gUnknown_3005450 -_080FA888: .4byte gTasks -_080FA88C: - cmp r0, 0x5 - beq _080FA938 - cmp r0, 0x5 - blt _080FA926 - cmp r0, 0x6 - beq _080FA96C - cmp r0, 0x65 - beq _080FA8EC - b _080FA9BC -_080FA89E: - bl sub_80F9C50 - lsls r0, 24 - cmp r0, 0 - bne _080FA8AA - b _080FA9BC -_080FA8AA: - bl ResetBlockReceivedFlags - bl sub_800B0B4 - b _080FA930 -_080FA8B4: - ldrb r0, [r5, 0xC] - cmp r0, 0x1 - bne _080FA8F4 - ldr r0, _080FA8CC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080FA8D0 - movs r0, 0xF0 - lsls r0, 7 - bl sub_80F9D04 - b _080FA8D8 - .align 2, 0 -_080FA8CC: .4byte gReceivedRemoteLinkPlayers -_080FA8D0: - movs r0, 0xEE - lsls r0, 7 - bl sub_80F9D04 -_080FA8D8: - ldr r0, _080FA8E8 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - movs r0, 0x65 - strh r0, [r1, 0x8] - b _080FA9BC - .align 2, 0 -_080FA8E8: .4byte gTasks -_080FA8EC: - ldr r0, _080FA8FC @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - bne _080FA9BC -_080FA8F4: - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080FA9BC - .align 2, 0 -_080FA8FC: .4byte gSendCmd -_080FA900: - ldrb r0, [r5, 0xD] - b _080FA92C -_080FA904: - ldrb r0, [r5, 0xC] - cmp r0, 0x1 - bne _080FA930 - bl sub_80F9C50 - lsls r0, 24 - cmp r0, 0 - beq _080FA9BC - adds r1, r5, 0 - adds r1, 0x5A - movs r0, 0 - strb r0, [r1] - movs r0, 0xA1 - lsls r0, 8 - bl sub_80F9D04 - b _080FA930 -_080FA926: - bl sub_80F9C78 - lsls r0, 24 -_080FA92C: - cmp r0, 0 - beq _080FA9BC -_080FA930: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080FA9BC -_080FA938: - movs r4, 0 - ldrb r0, [r5, 0xD] - cmp r4, r0 - bge _080FA956 -_080FA940: - adds r0, r4, 0 - bl sub_800B110 - lsls r0, r4, 24 - lsrs r0, 24 - bl Rfu_ResetBlockReceivedFlag - adds r4, 0x1 - ldrb r2, [r5, 0xD] - cmp r4, r2 - blt _080FA940 -_080FA956: - ldr r0, _080FA968 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080FA9BC - .align 2, 0 -_080FA968: .4byte gTasks -_080FA96C: - adds r0, r6, 0 - bl DestroyTask - ldr r1, _080FA9C4 @ =gReceivedRemoteLinkPlayers - movs r0, 0x1 - strb r0, [r1] - movs r0, 0x9A - lsls r0, 4 - adds r1, r5, r0 - movs r0, 0 - strb r0, [r1] - movs r1, 0x96 - lsls r1, 2 - movs r0, 0x1 - bl sub_80FEA34 - ldr r2, _080FA9C8 @ =0x0000099e - adds r1, r5, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _080FA9BC - movs r4, 0 - adds r2, r1, 0 - movs r3, 0x1 - ldr r0, _080FA9CC @ =0x0000099d - adds r5, r0 -_080FA9A0: - ldrb r0, [r2] - asrs r0, r4 - ands r0, r3 - cmp r0, 0 - beq _080FA9B6 - adds r0, r3, 0 - lsls r0, r4 - strb r0, [r5] - ldrb r1, [r2] - eors r0, r1 - strb r0, [r2] -_080FA9B6: - adds r4, 0x1 - cmp r4, 0x3 - ble _080FA9A0 -_080FA9BC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FA9C4: .4byte gReceivedRemoteLinkPlayers -_080FA9C8: .4byte 0x0000099e -_080FA9CC: .4byte 0x0000099d - thumb_func_end sub_80FA834 - - thumb_func_start sub_80FA9D0 -sub_80FA9D0: @ 80FA9D0 - push {r4,r5,lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - movs r5, 0x1 - ldr r4, _080FA9F8 @ =gUnknown_3005DE6 - movs r3, 0 -_080FA9DE: - adds r0, r2, 0 - asrs r0, r1 - ands r0, r5 - cmp r0, 0 - beq _080FA9EC - adds r0, r1, r4 - strb r3, [r0] -_080FA9EC: - adds r1, 0x1 - cmp r1, 0x3 - ble _080FA9DE - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FA9F8: .4byte gUnknown_3005DE6 - thumb_func_end sub_80FA9D0 - - thumb_func_start sub_80FA9FC -sub_80FA9FC: @ 80FA9FC - push {r4-r7,lr} - adds r2, r0, 0 - ldr r1, _080FAA4C @ =gUnknown_3005450 - ldrb r0, [r2, 0xF] - strb r0, [r1, 0xD] - movs r4, 0 - ldr r0, _080FAA50 @ =0x00000996 - adds r5, r1, r0 - adds r3, r2, 0 - adds r3, 0x10 -_080FAA10: - adds r0, r4, r5 - adds r1, r3, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x3 - ble _080FAA10 - adds r6, r2, 0 - ldr r5, _080FAA54 @ =gLinkPlayers - movs r4, 0x4 -_080FAA24: - adds r0, r5, 0 - adds r1, r6, 0 - adds r1, 0x14 - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldr r1, [r1] - str r1, [r0] - adds r0, r5, 0 - bl sub_800B284 - adds r6, 0x1C - adds r5, 0x1C - subs r4, 0x1 - cmp r4, 0 - bge _080FAA24 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FAA4C: .4byte gUnknown_3005450 -_080FAA50: .4byte 0x00000996 -_080FAA54: .4byte gLinkPlayers - thumb_func_end sub_80FA9FC - - thumb_func_start sub_80FAA58 -sub_80FAA58: @ 80FAA58 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r0, _080FAA8C @ =gUnknown_843EDE4 "PokemonSioInfo" - adds r1, r4, 0 - bl strcmp - adds r5, r0, 0 - cmp r5, 0 - bne _080FAA84 - adds r0, r4, 0 - bl sub_80FA9FC - mov r0, sp - strh r5, [r0] - ldr r2, _080FAA90 @ =0x0100007e - adds r1, r4, 0 - bl CpuSet - movs r0, 0 - bl ResetBlockReceivedFlag -_080FAA84: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FAA8C: .4byte gUnknown_843EDE4 -_080FAA90: .4byte 0x0100007e - thumb_func_end sub_80FAA58 - - thumb_func_start sub_80FAA94 -sub_80FAA94: @ 80FAA94 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, _080FAAF4 @ =gUnknown_3005450 - ldr r2, _080FAAF8 @ =gUnknown_843EC38 - ldr r1, _080FAAFC @ =0x000009a1 - adds r0, r3, r1 - ldrb r1, [r0] - adds r1, r2 - ldr r2, _080FAB00 @ =0x00000996 - adds r0, r3, r2 - ldrb r1, [r1] - adds r0, r1 - ldrb r4, [r0] - adds r0, r3, 0 - adds r0, 0xF1 - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080FAAD2 - movs r5, 0x9A - lsls r5, 4 - adds r1, r3, r5 - movs r0, 0 - strb r0, [r1] - adds r0, r6, 0 - bl DestroyTask -_080FAAD2: - ldr r0, _080FAB04 @ =gTasks - lsls r2, r6, 2 - adds r1, r2, r6 - lsls r1, 3 - adds r1, r0 - movs r3, 0x8 - ldrsh r1, [r1, r3] - adds r3, r0, 0 - adds r7, r2, 0 - cmp r1, 0x5 - bls _080FAAEA - b _080FACD6 -_080FAAEA: - lsls r0, r1, 2 - ldr r1, _080FAB08 @ =_080FAB0C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FAAF4: .4byte gUnknown_3005450 -_080FAAF8: .4byte gUnknown_843EC38 -_080FAAFC: .4byte 0x000009a1 -_080FAB00: .4byte 0x00000996 -_080FAB04: .4byte gTasks -_080FAB08: .4byte _080FAB0C - .align 2, 0 -_080FAB0C: - .4byte _080FAB24 - .4byte _080FAB44 - .4byte _080FAB5C - .4byte _080FABA4 - .4byte _080FABEE - .4byte _080FAC78 -_080FAB24: - ldr r0, _080FAB40 @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - beq _080FAB2E - b _080FACD6 -_080FAB2E: - adds r0, r4, 0 - bl ResetBlockReceivedFlag - movs r0, 0xF0 - lsls r0, 7 - bl sub_80F9D04 - b _080FAC2E - .align 2, 0 -_080FAB40: .4byte gSendCmd -_080FAB44: - ldr r0, _080FAB58 @ =gSendCmd - ldrh r0, [r0] - cmp r0, 0 - beq _080FAB4E - b _080FACD6 -_080FAB4E: - adds r1, r7, r6 - lsls r1, 3 - adds r1, r3 - b _080FAC36 - .align 2, 0 -_080FAB58: .4byte gSendCmd -_080FAB5C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - asrs r0, r4 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080FAB70 - b _080FACD6 -_080FAB70: - adds r0, r4, 0 - bl ResetBlockReceivedFlag - lsls r2, r4, 8 - ldr r0, _080FAB9C @ =gBlockRecvBuffer - adds r2, r0 - ldr r1, _080FABA0 @ =gLinkPlayers - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r1 - adds r1, r0, 0 - adds r2, 0x10 - ldm r2!, {r3-r5} - stm r1!, {r3-r5} - ldm r2!, {r3-r5} - stm r1!, {r3-r5} - ldr r2, [r2] - str r2, [r1] - bl sub_800B284 - b _080FAC2E - .align 2, 0 -_080FAB9C: .4byte gBlockRecvBuffer -_080FABA0: .4byte gLinkPlayers -_080FABA4: - ldr r5, _080FAC40 @ =gBlockSendBuffer - adds r1, r5, 0 - ldr r0, _080FAC44 @ =gUnknown_843EDE4 "PokemonSioInfo" - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldrh r2, [r0] - strh r2, [r1] - ldrb r0, [r0, 0x2] - strb r0, [r1, 0x2] - ldr r1, _080FAC48 @ =gUnknown_3005450 - ldrb r0, [r1, 0xD] - strb r0, [r5, 0xF] - movs r2, 0 - adds r4, r5, 0 - adds r4, 0x10 - ldr r0, _080FAC4C @ =0x00000996 - adds r3, r1, r0 -_080FABC6: - adds r0, r4, r2 - adds r1, r2, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _080FABC6 - ldr r1, _080FAC50 @ =gLinkPlayers - adds r0, r5, 0 - adds r0, 0x14 - movs r2, 0x8C - bl memcpy - ldr r0, _080FAC54 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] -_080FABEE: - ldr r5, _080FAC40 @ =gBlockSendBuffer - ldr r1, _080FAC48 @ =gUnknown_3005450 - ldrb r0, [r1, 0xD] - strb r0, [r5, 0xF] - movs r2, 0 - ldr r3, _080FAC50 @ =gLinkPlayers - mov r12, r3 - adds r4, r5, 0 - adds r4, 0x10 - ldr r0, _080FAC4C @ =0x00000996 - adds r3, r1, r0 -_080FAC04: - adds r0, r4, r2 - adds r1, r2, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x3 - ble _080FAC04 - adds r0, r5, 0 - adds r0, 0x14 - mov r1, r12 - movs r2, 0x8C - bl memcpy - ldr r1, _080FAC40 @ =gBlockSendBuffer - movs r0, 0 - movs r2, 0xA0 - bl SendBlock - lsls r0, 24 - cmp r0, 0 - beq _080FACD6 -_080FAC2E: - ldr r0, _080FAC54 @ =gTasks - adds r1, r7, r6 - lsls r1, 3 - adds r1, r0 -_080FAC36: - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _080FACD6 - .align 2, 0 -_080FAC40: .4byte gBlockSendBuffer -_080FAC44: .4byte gUnknown_843EDE4 -_080FAC48: .4byte gUnknown_3005450 -_080FAC4C: .4byte 0x00000996 -_080FAC50: .4byte gLinkPlayers -_080FAC54: .4byte gTasks -_080FAC58: - adds r0, r3, 0 - lsls r0, r2 - ldr r2, _080FAC74 @ =0x0000099d - adds r1, r5, r2 - strb r0, [r1] - ldrb r1, [r4] - eors r0, r1 - strb r0, [r4] - movs r4, 0x9A - lsls r4, 4 - adds r0, r5, r4 - strb r3, [r0] - b _080FACD0 - .align 2, 0 -_080FAC74: .4byte 0x0000099d -_080FAC78: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _080FACD6 - bl GetBlockReceivedStatus - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _080FACD6 - mov r0, sp - movs r4, 0 - strh r4, [r0] - ldr r1, _080FACE0 @ =gBlockRecvBuffer - ldr r2, _080FACE4 @ =0x0100007e - bl CpuSet - movs r0, 0 - bl ResetBlockReceivedFlag - ldr r1, _080FACE8 @ =gUnknown_3005450 - movs r5, 0x9A - lsls r5, 4 - adds r0, r1, r5 - strb r4, [r0] - ldr r0, _080FACEC @ =0x0000099e - adds r3, r1, r0 - ldrb r0, [r3] - cmp r0, 0 - beq _080FACD0 - movs r2, 0 - adds r5, r1, 0 - adds r4, r3, 0 - ldrb r1, [r4] - movs r3, 0x1 -_080FACC0: - adds r0, r1, 0 - asrs r0, r2 - ands r0, r3 - cmp r0, 0 - bne _080FAC58 - adds r2, 0x1 - cmp r2, 0x3 - ble _080FACC0 -_080FACD0: - adds r0, r6, 0 - bl DestroyTask -_080FACD6: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FACE0: .4byte gBlockRecvBuffer -_080FACE4: .4byte 0x0100007e -_080FACE8: .4byte gUnknown_3005450 -_080FACEC: .4byte 0x0000099e - thumb_func_end sub_80FAA94 - - thumb_func_start sub_80FACF0 -sub_80FACF0: @ 80FACF0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _080FAD2C @ =gUnknown_3005450 - adds r0, r6, 0 - adds r0, 0xF1 - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080FAD0E - adds r0, r5, 0 - bl DestroyTask -_080FAD0E: - ldr r1, _080FAD30 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080FAD54 - cmp r0, 0x1 - bgt _080FAD34 - cmp r0, 0 - beq _080FAD3A - b _080FAD8A - .align 2, 0 -_080FAD2C: .4byte gUnknown_3005450 -_080FAD30: .4byte gTasks -_080FAD34: - cmp r0, 0x2 - beq _080FAD66 - b _080FAD8A -_080FAD3A: - ldrb r0, [r6, 0xD] - cmp r0, 0 - beq _080FAD8A - bl sub_800B0B4 - ldr r1, _080FAD50 @ =gBlockSendBuffer - movs r0, 0 - movs r2, 0x3C - bl SendBlock - b _080FAD5E - .align 2, 0 -_080FAD50: .4byte gBlockSendBuffer -_080FAD54: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _080FAD8A -_080FAD5E: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080FAD8A -_080FAD66: - bl GetBlockReceivedStatus - movs r4, 0x1 - adds r1, r4, 0 - ands r1, r0 - cmp r1, 0 - beq _080FAD8A - ldr r0, _080FAD90 @ =gBlockRecvBuffer - bl sub_80FA9FC - movs r0, 0 - bl ResetBlockReceivedFlag - ldr r0, _080FAD94 @ =gReceivedRemoteLinkPlayers - strb r4, [r0] - adds r0, r5, 0 - bl DestroyTask -_080FAD8A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FAD90: .4byte gBlockRecvBuffer -_080FAD94: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_80FACF0 - - thumb_func_start sub_80FAD98 -sub_80FAD98: @ 80FAD98 - push {r4-r7,lr} - ldr r0, _080FAE10 @ =gUnknown_3005450 - adds r7, r0, 0 - adds r7, 0xEE - ldrb r1, [r7] - adds r5, r0, 0 - cmp r1, 0x1 - bne _080FAE30 - ldr r0, _080FAE14 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x2] - cmp r0, 0 - bne _080FAE30 - ldr r6, _080FAE18 @ =gMain - ldr r1, [r6, 0x4] - ldr r0, _080FAE1C @ =c2_mystery_gift_e_reader_run - cmp r1, r0 - bne _080FADC0 - ldr r1, _080FAE20 @ =gWirelessCommType - movs r0, 0x2 - strb r0, [r1] -_080FADC0: - ldr r4, _080FAE24 @ =CB2_LinkError - adds r0, r4, 0 - bl SetMainCallback2 - str r4, [r6, 0x8] - ldrh r0, [r5, 0xA] - lsls r4, r0, 16 - ldrh r0, [r5, 0x10] - lsls r0, 8 - orrs r4, r0 - ldrh r0, [r5, 0x12] - orrs r4, r0 - ldr r1, _080FAE28 @ =0x0000069e - adds r0, r5, r1 - ldrb r0, [r0] - adds r6, r0, 0 - ldr r1, _080FAE2C @ =0x000008d2 - adds r0, r5, r1 - ldrb r0, [r0] - adds r5, r0, 0 - bl sub_80FB9F4 - movs r3, 0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080FADF8 - movs r3, 0x1 -_080FADF8: - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_800ACBC - ldrb r0, [r7] - movs r0, 0x2 - strb r0, [r7] - bl CloseLink - b _080FAE62 - .align 2, 0 -_080FAE10: .4byte gUnknown_3005450 -_080FAE14: .4byte gUnknown_3005E10 -_080FAE18: .4byte gMain -_080FAE1C: .4byte c2_mystery_gift_e_reader_run -_080FAE20: .4byte gWirelessCommType -_080FAE24: .4byte CB2_LinkError -_080FAE28: .4byte 0x0000069e -_080FAE2C: .4byte 0x000008d2 -_080FAE30: - ldr r1, _080FAE68 @ =0x000008d3 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080FAE44 - ldr r1, _080FAE6C @ =0x0000069f - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FAE62 -_080FAE44: - ldr r0, _080FAE70 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _080FAE50 - bl sub_80FEB14 -_080FAE50: - movs r4, 0xE0 - lsls r4, 7 - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80FB9E4 - adds r0, r4, 0 - bl sub_80FB0E8 -_080FAE62: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FAE68: .4byte 0x000008d3 -_080FAE6C: .4byte 0x0000069f -_080FAE70: .4byte gUnknown_3005E10 - thumb_func_end sub_80FAD98 - - thumb_func_start rfu_REQ_recvData_then_sendData -rfu_REQ_recvData_then_sendData: @ 80FAE74 - push {lr} - ldr r0, _080FAE90 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - bne _080FAE8C - bl rfu_REQ_recvData - bl rfu_waitREQComplete - movs r0, 0 - bl rfu_REQ_sendData_wrapper -_080FAE8C: - pop {r0} - bx r0 - .align 2, 0 -_080FAE90: .4byte gUnknown_3005E10 - thumb_func_end rfu_REQ_recvData_then_sendData - - thumb_func_start sub_80FAE94 -sub_80FAE94: @ 80FAE94 - push {r4,r5,lr} - movs r5, 0 - ldr r4, _080FAEC8 @ =gUnknown_3005450 - ldr r1, _080FAECC @ =0x00000985 - adds r0, r4, r1 - strb r5, [r0] - bl Random - lsls r0, 16 - lsrs r0, 16 - bl sub_80FDA30 - adds r0, r4, 0 - adds r0, 0xEF - ldrb r0, [r0] - cmp r0, 0 - bne _080FAEE8 - ldrb r0, [r4, 0xC] - cmp r0, 0x1 - beq _080FAED6 - cmp r0, 0x1 - bgt _080FAED0 - cmp r0, 0 - beq _080FAEDC - b _080FAEE8 - .align 2, 0 -_080FAEC8: .4byte gUnknown_3005450 -_080FAECC: .4byte 0x00000985 -_080FAED0: - cmp r0, 0x2 - beq _080FAEE4 - b _080FAEE8 -_080FAED6: - bl sub_80F911C - b _080FAEE8 -_080FAEDC: - bl sub_80F9514 - adds r5, r0, 0 - b _080FAEE8 -_080FAEE4: - bl rfu_REQ_recvData_then_sendData -_080FAEE8: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FAE94 - - thumb_func_start sub_80FAEF0 -sub_80FAEF0: @ 80FAEF0 - push {r4,lr} - movs r4, 0 - ldr r1, _080FAF18 @ =gUnknown_3005450 - adds r0, r1, 0 - adds r0, 0xEF - ldrb r0, [r0] - cmp r0, 0 - bne _080FAF10 - ldrb r0, [r1, 0xC] - cmp r0, 0x1 - bne _080FAF0C - bl sub_80F9204 - adds r4, r0, 0 -_080FAF0C: - bl sub_80FAD98 -_080FAF10: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080FAF18: .4byte gUnknown_3005450 - thumb_func_end sub_80FAEF0 - - thumb_func_start sub_80FAF1C -sub_80FAF1C: @ 80FAF1C - push {lr} - ldr r0, _080FAF2C @ =gUnknown_3005E00 - ldr r1, _080FAF30 @ =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - pop {r0} - bx r0 - .align 2, 0 -_080FAF2C: .4byte gUnknown_3005E00 -_080FAF30: .4byte gSaveBlock2Ptr - thumb_func_end sub_80FAF1C - - thumb_func_start sub_80FAF34 -sub_80FAF34: @ 80FAF34 - push {r4,lr} - ldr r4, _080FAF54 @ =gUnknown_3005440 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0xD - bl memset - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80FCB54 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FAF54: .4byte gUnknown_3005440 - thumb_func_end sub_80FAF34 - - thumb_func_start sub_80FAF58 -sub_80FAF58: @ 80FAF58 - push {r4,lr} - adds r4, r0, 0 - adds r3, r1, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080FAF70 @ =gUnknown_3005440 - adds r1, r4, 0 - bl sub_80FCB54 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FAF70: .4byte gUnknown_3005440 - thumb_func_end sub_80FAF58 - - thumb_func_start sub_80FAF74 -sub_80FAF74: @ 80FAF74 - push {r4,r5,lr} - ldr r5, _080FAF9C @ =gUnknown_3005440 - movs r4, 0x1 - ands r0, r4 - lsls r0, 4 - ldrb r3, [r5] - movs r2, 0x11 - negs r2, r2 - ands r2, r3 - orrs r2, r0 - ands r1, r4 - lsls r1, 5 - movs r0, 0x21 - negs r0, r0 - ands r2, r0 - orrs r2, r1 - strb r2, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FAF9C: .4byte gUnknown_3005440 - thumb_func_end sub_80FAF74 - - thumb_func_start sub_80FAFA0 -sub_80FAFA0: @ 80FAFA0 - push {r4,r5,lr} - ldr r5, _080FAFD4 @ =gUnknown_3005440 - lsls r0, 2 - ldrb r4, [r5, 0x9] - movs r3, 0x3 - ands r3, r4 - orrs r3, r0 - strb r3, [r5, 0x9] - ldr r3, _080FAFD8 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldrh r3, [r5, 0x8] - ldr r0, _080FAFDC @ =0xfffffc00 - ands r0, r3 - orrs r0, r1 - strh r0, [r5, 0x8] - lsls r2, 1 - ldrb r1, [r5, 0xB] - movs r0, 0x1 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0xB] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FAFD4: .4byte gUnknown_3005440 -_080FAFD8: .4byte 0x000003ff -_080FAFDC: .4byte 0xfffffc00 - thumb_func_end sub_80FAFA0 - - thumb_func_start sub_80FAFE0 -sub_80FAFE0: @ 80FAFE0 - push {lr} - lsls r0, 24 - ldr r2, _080FB000 @ =gUnknown_3005440 - lsrs r0, 17 - ldrb r3, [r2, 0xA] - movs r1, 0x7F - ands r1, r3 - orrs r1, r0 - strb r1, [r2, 0xA] - ldr r3, _080FB004 @ =gUnknown_3005E00 - movs r0, 0 - movs r1, 0x2 - bl rfu_REQ_configGameData - pop {r0} - bx r0 - .align 2, 0 -_080FB000: .4byte gUnknown_3005440 -_080FB004: .4byte gUnknown_3005E00 - thumb_func_end sub_80FAFE0 - - thumb_func_start sub_80FB008 -sub_80FB008: @ 80FB008 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080FB016 - bl sub_80FAF58 -_080FB016: - ldr r2, _080FB028 @ =gUnknown_3005440 - ldr r3, _080FB02C @ =gUnknown_3005E00 - movs r0, 0 - movs r1, 0x2 - bl rfu_REQ_configGameData - pop {r0} - bx r0 - .align 2, 0 -_080FB028: .4byte gUnknown_3005440 -_080FB02C: .4byte gUnknown_3005E00 - thumb_func_end sub_80FB008 - - thumb_func_start sub_80FB030 -sub_80FB030: @ 80FB030 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - bl sub_80F9800 - ldrb r1, [r0, 0xA] - movs r0, 0x7F - ands r0, r1 - cmp r0, 0x45 - bne _080FB0C4 - movs r5, 0 - movs r7, 0 - ldr r3, _080FB0D4 @ =gUnknown_3005450 - ldr r1, _080FB0D8 @ =0x0000099a - adds r0, r3, r1 - ldr r2, _080FB0DC @ =0x0000099b - adds r1, r3, r2 - ldrb r2, [r0] - ldrb r0, [r1] - adds r1, r0, 0 - eors r1, r2 - mov r8, r1 - movs r4, 0 - movs r6, 0x1 - ldr r2, _080FB0E0 @ =gLinkPlayers - mov r12, r2 - ldr r0, _080FB0E4 @ =0x00000996 - adds r0, r3 - mov r10, r0 - mov r3, r12 - adds r3, 0x4 -_080FB074: - mov r0, r8 - asrs r0, r4 - ands r0, r6 - cmp r0, 0 - beq _080FB0B4 - mov r1, r10 - adds r0, r4, r1 - ldrb r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r2, r12 - adds r1, r0, r2 - ldrb r1, [r1, 0x13] - adds r2, r6, 0 - ands r2, r1 - lsls r2, 3 - adds r0, r3 - ldr r1, [r0] - movs r0, 0x7 - ands r1, r0 - movs r0, 0x80 - orrs r1, r0 - orrs r2, r1 - lsls r0, r5, 3 - lsls r2, r0 - orrs r7, r2 - adds r5, 0x1 - mov r0, r9 - subs r0, 0x1 - cmp r5, r0 - beq _080FB0BA -_080FB0B4: - adds r4, 0x1 - cmp r4, 0x3 - ble _080FB074 -_080FB0BA: - movs r0, 0x45 - adds r1, r7, 0 - movs r2, 0 - bl sub_80FB008 -_080FB0C4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB0D4: .4byte gUnknown_3005450 -_080FB0D8: .4byte 0x0000099a -_080FB0DC: .4byte 0x0000099b -_080FB0E0: .4byte gLinkPlayers -_080FB0E4: .4byte 0x00000996 - thumb_func_end sub_80FB030 - - thumb_func_start sub_80FB0E8 -sub_80FB0E8: @ 80FB0E8 - push {r4,lr} - adds r4, r0, 0 - ldr r2, _080FB110 @ =gUnknown_3005450 - adds r3, r2, 0 - adds r3, 0xEE - ldrb r0, [r3] - cmp r0, 0 - bne _080FB10A - ldr r1, _080FB114 @ =gUnknown_3005E10 - ldrh r0, [r1, 0x14] - strh r0, [r2, 0x10] - ldrh r0, [r1, 0x16] - strh r0, [r2, 0x12] - strh r4, [r2, 0xA] - ldrb r0, [r3] - movs r0, 0x1 - strb r0, [r3] -_080FB10A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FB110: .4byte gUnknown_3005450 -_080FB114: .4byte gUnknown_3005E10 - thumb_func_end sub_80FB0E8 - - thumb_func_start sub_80FB118 -sub_80FB118: @ 80FB118 - ldr r0, _080FB124 @ =gUnknown_3005450 - adds r0, 0xEE - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - bx lr - .align 2, 0 -_080FB124: .4byte gUnknown_3005450 - thumb_func_end sub_80FB118 - - thumb_func_start sub_80FB128 -sub_80FB128: @ 80FB128 - push {lr} - adds r2, r0, 0 - cmp r2, 0 - bne _080FB140 - ldr r0, _080FB13C @ =gUnknown_3005450 - adds r0, 0xEE - ldrb r1, [r0] - strb r2, [r0] - b _080FB14A - .align 2, 0 -_080FB13C: .4byte gUnknown_3005450 -_080FB140: - ldr r0, _080FB150 @ =gUnknown_3005450 - adds r0, 0xEE - ldrb r1, [r0] - movs r1, 0x4 - strb r1, [r0] -_080FB14A: - pop {r0} - bx r0 - .align 2, 0 -_080FB150: .4byte gUnknown_3005450 - thumb_func_end sub_80FB128 - - thumb_func_start sub_80FB154 -sub_80FB154: @ 80FB154 - push {lr} - ldr r0, _080FB16C @ =gUnknown_3005E10 - ldrb r0, [r0] - movs r1, 0x1 - bl sub_80FBE20 - ldr r1, _080FB170 @ =gUnknown_3005450 - movs r0, 0 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080FB16C: .4byte gUnknown_3005E10 -_080FB170: .4byte gUnknown_3005450 - thumb_func_end sub_80FB154 - - thumb_func_start sub_80FB174 -sub_80FB174: @ 80FB174 - ldr r1, _080FB17C @ =gUnknown_3005450 - ldr r0, _080FB180 @ =sub_80FB154 - str r0, [r1] - bx lr - .align 2, 0 -_080FB17C: .4byte gUnknown_3005450 -_080FB180: .4byte sub_80FB154 - thumb_func_end sub_80FB174 - - thumb_func_start sub_80FB184 -sub_80FB184: @ 80FB184 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - movs r6, 0 - cmp r4, 0x32 - bne _080FB19A - b _080FB2D8 -_080FB19A: - cmp r4, 0x32 - bgt _080FB1CA - cmp r4, 0x13 - bgt _080FB1B8 - cmp r4, 0x12 - blt _080FB1A8 - b _080FB366 -_080FB1A8: - cmp r4, 0x10 - bne _080FB1AE - b _080FB366 -_080FB1AE: - cmp r4, 0x10 - bgt _080FB204 - cmp r4, 0 - beq _080FB1F6 - b _080FB366 -_080FB1B8: - cmp r4, 0x30 - bne _080FB1BE - b _080FB2E4 -_080FB1BE: - cmp r4, 0x30 - ble _080FB1C4 - b _080FB2CC -_080FB1C4: - cmp r4, 0x14 - beq _080FB2A0 - b _080FB366 -_080FB1CA: - cmp r4, 0x44 - bgt _080FB1DC - cmp r4, 0x42 - blt _080FB1D4 - b _080FB366 -_080FB1D4: - cmp r4, 0x33 - bne _080FB1DA - b _080FB2E4 -_080FB1DA: - b _080FB366 -_080FB1DC: - cmp r4, 0xF3 - bne _080FB1E2 - b _080FB332 -_080FB1E2: - cmp r4, 0xF3 - bgt _080FB1EE - cmp r4, 0xF0 - bge _080FB1EC - b _080FB366 -_080FB1EC: - b _080FB34C -_080FB1EE: - cmp r4, 0xFF - bne _080FB1F4 - b _080FB34C -_080FB1F4: - b _080FB366 -_080FB1F6: - ldr r1, _080FB200 @ =gUnknown_3005450 - movs r0, 0x2 - strh r0, [r1, 0x4] - b _080FB366 - .align 2, 0 -_080FB200: .4byte gUnknown_3005450 -_080FB204: - ldr r0, _080FB268 @ =gUnknown_3005E10 - ldrh r0, [r0, 0x14] - bl sub_80FB564 - movs r5, 0 - movs r0, 0x1 - mov r8, r0 - ldr r1, _080FB26C @ =gUnknown_3005450 - mov r9, r1 - ldr r3, _080FB270 @ =0x0000098d - add r3, r9 - mov r10, r3 - movs r7, 0x7F -_080FB21E: - ldr r0, _080FB268 @ =gUnknown_3005E10 - ldrh r0, [r0, 0x14] - asrs r0, r5 - mov r1, r8 - ands r0, r1 - cmp r0, 0 - beq _080FB286 - ldr r0, _080FB274 @ =gRfuLinkStatus - lsls r1, r5, 5 - adds r1, 0x14 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0, 0x10] - adds r4, r7, 0 - ands r4, r0 - bl sub_80F9800 - ldrb r1, [r0, 0xA] - adds r0, r7, 0 - ands r0, r1 - cmp r4, r0 - bne _080FB27C - ldr r0, _080FB278 @ =0x00000989 - add r0, r9 - adds r0, r5, r0 - movs r1, 0 - strb r1, [r0] - mov r3, r10 - adds r2, r5, r3 - strb r1, [r2] - movs r0, 0x20 - adds r1, r5, 0 - movs r3, 0x1 - bl rfu_setRecvBuffer - b _080FB286 - .align 2, 0 -_080FB268: .4byte gUnknown_3005E10 -_080FB26C: .4byte gUnknown_3005450 -_080FB270: .4byte 0x0000098d -_080FB274: .4byte gRfuLinkStatus -_080FB278: .4byte 0x00000989 -_080FB27C: - mov r0, r8 - lsls r0, r5 - orrs r6, r0 - lsls r0, r6, 24 - lsrs r6, r0, 24 -_080FB286: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080FB21E - cmp r6, 0 - beq _080FB366 - adds r0, r6, 0 - bl rfu_REQ_disconnect - bl rfu_waitREQComplete - b _080FB366 -_080FB2A0: - ldr r4, _080FB2C0 @ =gUnknown_3005450 - ldr r1, _080FB2C4 @ =0x0000099f - adds r0, r4, r1 - ldr r1, _080FB2C8 @ =gUnknown_3005E10 - ldrb r2, [r0] - ldrb r0, [r1] - cmp r2, r0 - beq _080FB2BA - eors r0, r2 - bl rfu_REQ_disconnect - bl rfu_waitREQComplete -_080FB2BA: - movs r0, 0x11 - strh r0, [r4, 0x4] - b _080FB366 - .align 2, 0 -_080FB2C0: .4byte gUnknown_3005450 -_080FB2C4: .4byte 0x0000099f -_080FB2C8: .4byte gUnknown_3005E10 -_080FB2CC: - ldr r0, _080FB2D4 @ =gUnknown_3005450 - adds r0, 0xF0 - b _080FB362 - .align 2, 0 -_080FB2D4: .4byte gUnknown_3005450 -_080FB2D8: - ldr r0, _080FB2E0 @ =gUnknown_3005450 - adds r0, 0xF0 - movs r1, 0x3 - b _080FB364 - .align 2, 0 -_080FB2E0: .4byte gUnknown_3005450 -_080FB2E4: - ldr r1, _080FB314 @ =gUnknown_3005450 - adds r2, r1, 0 - adds r2, 0xF0 - movs r0, 0x4 - strb r0, [r2] - ldr r3, _080FB318 @ =0x0000099a - adds r1, r3 - ldr r0, _080FB31C @ =gUnknown_3005E10 - ldrb r2, [r0, 0x14] - ldrb r0, [r1] - adds r3, r0, 0 - bics r3, r2 - adds r2, r3, 0 - strb r2, [r1] - ldr r0, _080FB320 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FB328 - cmp r2, 0 - bne _080FB324 - adds r0, r4, 0 - bl sub_80FB0E8 - b _080FB328 - .align 2, 0 -_080FB314: .4byte gUnknown_3005450 -_080FB318: .4byte 0x0000099a -_080FB31C: .4byte gUnknown_3005E10 -_080FB320: .4byte gReceivedRemoteLinkPlayers -_080FB324: - bl sub_80FB174 -_080FB328: - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80FB9E4 - b _080FB366 -_080FB332: - movs r0, 0x1 - movs r1, 0xF3 - bl sub_80FB9E4 - movs r0, 0xF3 - bl sub_80FB0E8 - ldr r0, _080FB348 @ =gUnknown_3005450 - adds r0, 0xEF - b _080FB362 - .align 2, 0 -_080FB348: .4byte gUnknown_3005450 -_080FB34C: - adds r0, r4, 0 - bl sub_80FB0E8 - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80FB9E4 - ldr r0, _080FB374 @ =gUnknown_3005450 - ldr r1, _080FB378 @ =0x00000993 - adds r0, r1 - ldrb r1, [r0] -_080FB362: - movs r1, 0x1 -_080FB364: - strb r1, [r0] -_080FB366: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB374: .4byte gUnknown_3005450 -_080FB378: .4byte 0x00000993 - thumb_func_end sub_80FB184 - - thumb_func_start sub_80FB37C -sub_80FB37C: @ 80FB37C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x31 - bne _080FB388 - b _080FB4E8 -_080FB388: - cmp r4, 0x31 - bgt _080FB3B6 - cmp r4, 0x22 - beq _080FB40C - cmp r4, 0x22 - bgt _080FB3A4 - cmp r4, 0x20 - beq _080FB3F4 - cmp r4, 0x20 - ble _080FB39E - b _080FB556 -_080FB39E: - cmp r4, 0 - beq _080FB3E6 - b _080FB556 -_080FB3A4: - cmp r4, 0x24 - beq _080FB432 - cmp r4, 0x24 - blt _080FB428 - cmp r4, 0x25 - beq _080FB47C - cmp r4, 0x30 - beq _080FB486 - b _080FB556 -_080FB3B6: - cmp r4, 0x44 - bgt _080FB3CC - cmp r4, 0x42 - blt _080FB3C0 - b _080FB556 -_080FB3C0: - cmp r4, 0x33 - beq _080FB49A - cmp r4, 0x33 - bge _080FB3CA - b _080FB504 -_080FB3CA: - b _080FB556 -_080FB3CC: - cmp r4, 0xF3 - bne _080FB3D2 - b _080FB524 -_080FB3D2: - cmp r4, 0xF3 - bgt _080FB3DE - cmp r4, 0xF0 - bge _080FB3DC - b _080FB556 -_080FB3DC: - b _080FB53C -_080FB3DE: - cmp r4, 0xFF - bne _080FB3E4 - b _080FB53C -_080FB3E4: - b _080FB556 -_080FB3E6: - ldr r1, _080FB3F0 @ =gUnknown_3005450 - movs r0, 0x6 - strh r0, [r1, 0x4] - b _080FB556 - .align 2, 0 -_080FB3F0: .4byte gUnknown_3005450 -_080FB3F4: - ldr r0, _080FB400 @ =gUnknown_3005450 - ldr r1, _080FB404 @ =gUnknown_3005E10 - ldrh r1, [r1, 0x14] - ldr r2, _080FB408 @ =0x00000985 - adds r0, r2 - b _080FB554 - .align 2, 0 -_080FB400: .4byte gUnknown_3005450 -_080FB404: .4byte gUnknown_3005E10 -_080FB408: .4byte 0x00000985 -_080FB40C: - ldr r0, _080FB41C @ =gUnknown_3005450 - ldr r1, _080FB420 @ =gUnknown_3005E10 - ldrh r1, [r1, 0x14] - ldr r2, _080FB424 @ =0x000008f6 - adds r0, r2 - ldrb r2, [r0] - b _080FB554 - .align 2, 0 -_080FB41C: .4byte gUnknown_3005450 -_080FB420: .4byte gUnknown_3005E10 -_080FB424: .4byte 0x000008f6 -_080FB428: - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80FB9E4 - b _080FB556 -_080FB432: - ldr r4, _080FB468 @ =gUnknown_3005450 - movs r1, 0 - movs r0, 0xB - strh r0, [r4, 0x4] - ldr r2, _080FB46C @ =0x0000093d - adds r0, r4, r2 - strb r1, [r0] - ldr r0, _080FB470 @ =0x0000093e - adds r2, r4, r0 - strb r1, [r2] - ldr r1, _080FB474 @ =0x000008f6 - adds r5, r4, r1 - ldrb r1, [r5] - movs r0, 0x20 - movs r3, 0x1 - bl rfu_setRecvBuffer - ldrb r1, [r5] - ldr r2, _080FB478 @ =0x000008f7 - adds r4, r2 - movs r0, 0x10 - adds r2, r4, 0 - movs r3, 0x46 - bl rfu_setRecvBuffer - b _080FB556 - .align 2, 0 -_080FB468: .4byte gUnknown_3005450 -_080FB46C: .4byte 0x0000093d -_080FB470: .4byte 0x0000093e -_080FB474: .4byte 0x000008f6 -_080FB478: .4byte 0x000008f7 -_080FB47C: - movs r0, 0x2 - movs r1, 0x25 - bl sub_80FB9E4 - b _080FB556 -_080FB486: - ldr r0, _080FB4D8 @ =gUnknown_3005450 - adds r2, r0, 0 - adds r2, 0xF0 - movs r1, 0x2 - strb r1, [r2] - ldr r1, _080FB4DC @ =0x0000093e - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x6 - beq _080FB556 -_080FB49A: - ldr r2, _080FB4D8 @ =gUnknown_3005450 - adds r1, r2, 0 - adds r1, 0xF0 - ldrb r0, [r1] - cmp r0, 0x2 - beq _080FB4AA - movs r0, 0x4 - strb r0, [r1] -_080FB4AA: - ldr r1, _080FB4DC @ =0x0000093e - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x9 - beq _080FB4BC - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80FB9E4 -_080FB4BC: - ldr r0, _080FB4E0 @ =gUnknown_843EDF8 "LINK LOSS DISCONNECT!" - movs r1, 0x5 - movs r2, 0x5 - bl nullsub_87 - ldr r0, _080FB4E4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FB556 - adds r0, r4, 0 - bl sub_80FB0E8 - b _080FB556 - .align 2, 0 -_080FB4D8: .4byte gUnknown_3005450 -_080FB4DC: .4byte 0x0000093e -_080FB4E0: .4byte gUnknown_843EDF8 -_080FB4E4: .4byte gReceivedRemoteLinkPlayers -_080FB4E8: - ldr r0, _080FB4FC @ =gUnknown_3005450 - adds r0, 0xF0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _080FB500 @ =gUnknown_843EE10 "LINK LOSS RECOVERY NOW" - movs r1, 0x5 - movs r2, 0x5 - bl nullsub_87 - b _080FB556 - .align 2, 0 -_080FB4FC: .4byte gUnknown_3005450 -_080FB500: .4byte gUnknown_843EE10 -_080FB504: - ldr r1, _080FB51C @ =gUnknown_3005450 - adds r2, r1, 0 - adds r2, 0xF0 - movs r0, 0x3 - strb r0, [r2] - ldr r2, _080FB520 @ =0x000008f4 - adds r1, r2 - ldrb r0, [r1] - movs r0, 0x1 - strb r0, [r1] - b _080FB556 - .align 2, 0 -_080FB51C: .4byte gUnknown_3005450 -_080FB520: .4byte 0x000008f4 -_080FB524: - movs r0, 0x1 - movs r1, 0xF3 - bl sub_80FB9E4 - movs r0, 0xF3 - bl sub_80FB0E8 - ldr r0, _080FB538 @ =gUnknown_3005450 - adds r0, 0xEF - b _080FB552 - .align 2, 0 -_080FB538: .4byte gUnknown_3005450 -_080FB53C: - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80FB9E4 - adds r0, r4, 0 - bl sub_80FB0E8 - ldr r0, _080FB55C @ =gUnknown_3005450 - ldr r1, _080FB560 @ =0x00000993 - adds r0, r1 - ldrb r1, [r0] -_080FB552: - movs r1, 0x1 -_080FB554: - strb r1, [r0] -_080FB556: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FB55C: .4byte gUnknown_3005450 -_080FB560: .4byte 0x00000993 - thumb_func_end sub_80FB37C - - thumb_func_start sub_80FB564 -sub_80FB564: @ 80FB564 - push {r4-r6,lr} - adds r3, r0, 0 - movs r2, 0 - movs r6, 0x1 - ldr r0, _080FB598 @ =gUnknown_3005450 - ldr r4, _080FB59C @ =0x000009a2 - adds r1, r0, r4 - movs r5, 0 - movs r4, 0xFF -_080FB576: - adds r0, r3, 0 - asrs r0, r2 - ands r0, r6 - cmp r0, 0 - beq _080FB588 - strb r5, [r1] - ldrb r0, [r1, 0x4] - orrs r0, r4 - strb r0, [r1, 0x4] -_080FB588: - adds r1, 0x1 - adds r2, 0x1 - cmp r2, 0x3 - ble _080FB576 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FB598: .4byte gUnknown_3005450 -_080FB59C: .4byte 0x000009a2 - thumb_func_end sub_80FB564 - - thumb_func_start sub_80FB5A0 -sub_80FB5A0: @ 80FB5A0 - push {r4-r7,lr} - adds r5, r0, 0 - movs r3, 0 - movs r2, 0 - movs r4, 0x1 - ldr r6, _080FB5E8 @ =gRfuLinkStatus - movs r7, 0x7F -_080FB5AE: - adds r0, r5, 0 - asrs r0, r2 - ands r0, r4 - cmp r0, 0 - beq _080FB5D4 - lsls r1, r2, 5 - adds r1, 0x14 - ldr r0, [r6] - adds r0, r1 - ldrb r1, [r0, 0x10] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0x45 - bne _080FB5D4 - adds r0, r4, 0 - lsls r0, r2 - orrs r3, r0 - lsls r0, r3, 24 - lsrs r3, r0, 24 -_080FB5D4: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080FB5AE - adds r0, r3, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080FB5E8: .4byte gRfuLinkStatus - thumb_func_end sub_80FB5A0 - - thumb_func_start sub_80FB5EC -sub_80FB5EC: @ 80FB5EC - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x25 - bne _080FB5F8 - b _080FB86C -_080FB5F8: - cmp r4, 0x25 - bgt _080FB63A - cmp r4, 0x14 - bne _080FB602 - b _080FB780 -_080FB602: - cmp r4, 0x14 - bgt _080FB61A - cmp r4, 0x11 - beq _080FB69A - cmp r4, 0x11 - ble _080FB610 - b _080FB9C2 -_080FB610: - cmp r4, 0 - beq _080FB684 - cmp r4, 0x10 - beq _080FB690 - b _080FB9C2 -_080FB61A: - cmp r4, 0x22 - bne _080FB620 - b _080FB7E8 -_080FB620: - cmp r4, 0x22 - bgt _080FB62C - cmp r4, 0x20 - bne _080FB62A - b _080FB7D0 -_080FB62A: - b _080FB9C2 -_080FB62C: - cmp r4, 0x23 - bne _080FB632 - b _080FB804 -_080FB632: - cmp r4, 0x24 - bne _080FB638 - b _080FB83A -_080FB638: - b _080FB9C2 -_080FB63A: - cmp r4, 0x44 - bgt _080FB66A - cmp r4, 0x42 - blt _080FB644 - b _080FB9C2 -_080FB644: - cmp r4, 0x32 - bne _080FB64A - b _080FB894 -_080FB64A: - cmp r4, 0x32 - bgt _080FB65C - cmp r4, 0x30 - bne _080FB654 - b _080FB8C0 -_080FB654: - cmp r4, 0x31 - bne _080FB65A - b _080FB876 -_080FB65A: - b _080FB9C2 -_080FB65C: - cmp r4, 0x33 - bne _080FB662 - b _080FB8C8 -_080FB662: - cmp r4, 0x40 - bne _080FB668 - b _080FB97C -_080FB668: - b _080FB9C2 -_080FB66A: - cmp r4, 0xF3 - bne _080FB670 - b _080FB98C -_080FB670: - cmp r4, 0xF3 - bgt _080FB67C - cmp r4, 0xF0 - bge _080FB67A - b _080FB9C2 -_080FB67A: - b _080FB9A8 -_080FB67C: - cmp r4, 0xFF - bne _080FB682 - b _080FB9A8 -_080FB682: - b _080FB9C2 -_080FB684: - ldr r1, _080FB68C @ =gUnknown_3005450 - movs r0, 0x11 - strh r0, [r1, 0x4] - b _080FB9C2 - .align 2, 0 -_080FB68C: .4byte gUnknown_3005450 -_080FB690: - movs r0, 0x4 - movs r1, 0 - bl sub_80FB9E4 - b _080FB9C2 -_080FB69A: - bl sub_80F9800 - ldrb r1, [r0, 0xA] - movs r0, 0x7F - ands r0, r1 - cmp r0, 0x45 - bne _080FB758 - ldr r5, _080FB704 @ =gUnknown_3005450 - ldr r1, _080FB708 @ =0x00000991 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080FB758 - ldr r0, _080FB70C @ =gUnknown_3005E10 - ldrh r0, [r0, 0x14] - bl sub_80FB5A0 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080FB722 - adds r0, r4, 0 - bl sub_80F886C - lsls r0, 24 - lsrs r0, 24 - movs r2, 0x1 - mov r12, r2 - mov r1, r12 - lsls r1, r0 - lsls r1, 24 - lsrs r1, 24 - ldr r7, _080FB710 @ =0x0000099e - adds r6, r5, r7 - ldrb r2, [r6] - cmp r2, 0 - bne _080FB714 - movs r0, 0x9A - lsls r0, 4 - adds r3, r5, r0 - ldrb r0, [r3] - cmp r0, 0 - bne _080FB714 - subs r7, 0x1 - adds r0, r5, r7 - strb r1, [r0] - eors r1, r4 - orrs r1, r2 - strb r1, [r6] - mov r0, r12 - strb r0, [r3] - b _080FB722 - .align 2, 0 -_080FB704: .4byte gUnknown_3005450 -_080FB708: .4byte 0x00000991 -_080FB70C: .4byte gUnknown_3005E10 -_080FB710: .4byte 0x0000099e -_080FB714: - ldr r0, _080FB744 @ =gUnknown_3005450 - ldr r1, _080FB748 @ =0x0000099e - adds r0, r1 - ldrb r2, [r0] - adds r1, r4, 0 - orrs r1, r2 - strb r1, [r0] -_080FB722: - ldr r0, _080FB74C @ =gUnknown_3005E10 - ldrh r1, [r0, 0x14] - cmp r4, r1 - beq _080FB772 - ldr r2, _080FB744 @ =gUnknown_3005450 - ldr r7, _080FB750 @ =0x0000099b - adds r3, r2, r7 - adds r0, r4, 0 - eors r0, r1 - ldrb r1, [r3] - orrs r0, r1 - strb r0, [r3] - ldr r0, _080FB754 @ =0x0000099c - adds r2, r0 - movs r0, 0x2 - strb r0, [r2] - b _080FB772 - .align 2, 0 -_080FB744: .4byte gUnknown_3005450 -_080FB748: .4byte 0x0000099e -_080FB74C: .4byte gUnknown_3005E10 -_080FB750: .4byte 0x0000099b -_080FB754: .4byte 0x0000099c -_080FB758: - bl sub_80F9800 - ldrb r1, [r0, 0xA] - movs r0, 0x7F - ands r0, r1 - cmp r0, 0x54 - bne _080FB772 - ldr r0, _080FB77C @ =gUnknown_3005E10 - ldrb r0, [r0] - bl rfu_REQ_disconnect - bl rfu_waitREQComplete -_080FB772: - ldr r0, _080FB77C @ =gUnknown_3005E10 - ldrh r0, [r0, 0x14] - bl sub_80FB564 - b _080FB9C2 - .align 2, 0 -_080FB77C: .4byte gUnknown_3005E10 -_080FB780: - bl sub_80F9800 - ldrb r1, [r0, 0xA] - movs r0, 0x7F - ands r0, r1 - cmp r0, 0x45 - beq _080FB7B6 - ldr r4, _080FB7C8 @ =gUnknown_3005E10 - ldrb r0, [r4, 0x1] - cmp r0, 0x1 - bls _080FB7B6 - ldrb r0, [r4, 0x14] - bl sub_80F886C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x80 - lsls r1, 17 - lsls r1, r0 - lsrs r1, 24 - ldrb r0, [r4] - eors r1, r0 - adds r0, r1, 0 - bl rfu_REQ_disconnect - bl rfu_waitREQComplete -_080FB7B6: - ldr r1, _080FB7CC @ =gUnknown_3005450 - ldrh r0, [r1, 0x4] - cmp r0, 0xF - beq _080FB7C0 - b _080FB9C2 -_080FB7C0: - movs r0, 0x10 - strh r0, [r1, 0x4] - b _080FB9C2 - .align 2, 0 -_080FB7C8: .4byte gUnknown_3005E10 -_080FB7CC: .4byte gUnknown_3005450 -_080FB7D0: - ldr r0, _080FB7DC @ =gUnknown_3005450 - ldr r1, _080FB7E0 @ =gUnknown_3005E10 - ldrh r1, [r1, 0x14] - ldr r2, _080FB7E4 @ =0x00000985 - adds r0, r2 - b _080FB9C0 - .align 2, 0 -_080FB7DC: .4byte gUnknown_3005450 -_080FB7E0: .4byte gUnknown_3005E10 -_080FB7E4: .4byte 0x00000985 -_080FB7E8: - ldr r0, _080FB7F8 @ =gUnknown_3005450 - ldr r1, _080FB7FC @ =gUnknown_3005E10 - ldrh r1, [r1, 0x14] - ldr r7, _080FB800 @ =0x000008f6 - adds r0, r7 - ldrb r2, [r0] - b _080FB9C0 - .align 2, 0 -_080FB7F8: .4byte gUnknown_3005450 -_080FB7FC: .4byte gUnknown_3005E10 -_080FB800: .4byte 0x000008f6 -_080FB804: - ldr r1, _080FB824 @ =gUnknown_3005450 - movs r0, 0x12 - strh r0, [r1, 0x4] - ldr r0, _080FB828 @ =0x00000987 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x1 - bhi _080FB830 - adds r0, 0x1 - strb r0, [r1] - ldr r0, _080FB82C @ =sub_80FC028 - movs r1, 0x2 - bl CreateTask - b _080FB9C2 - .align 2, 0 -_080FB824: .4byte gUnknown_3005450 -_080FB828: .4byte 0x00000987 -_080FB82C: .4byte sub_80FC028 -_080FB830: - movs r0, 0x2 - movs r1, 0x23 - bl sub_80FB9E4 - b _080FB9C2 -_080FB83A: - ldr r4, _080FB860 @ =gUnknown_3005450 - movs r0, 0xD - strh r0, [r4, 0x4] - movs r0, 0x3 - movs r1, 0 - bl sub_80FB9E4 - ldr r1, _080FB864 @ =0x000008f6 - adds r0, r4, r1 - ldrb r1, [r0] - ldr r2, _080FB868 @ =0x000008f7 - adds r4, r2 - movs r0, 0x10 - adds r2, r4, 0 - movs r3, 0x46 - bl rfu_setRecvBuffer - b _080FB9C2 - .align 2, 0 -_080FB860: .4byte gUnknown_3005450 -_080FB864: .4byte 0x000008f6 -_080FB868: .4byte 0x000008f7 -_080FB86C: - movs r0, 0x2 - movs r1, 0x25 - bl sub_80FB9E4 - b _080FB9C2 -_080FB876: - ldr r0, _080FB88C @ =gUnknown_3005E10 - ldrb r1, [r0] - ldrh r0, [r0, 0x14] - ands r1, r0 - cmp r1, 0 - bne _080FB884 - b _080FB9C2 -_080FB884: - ldr r0, _080FB890 @ =gUnknown_3005450 - adds r0, 0xF0 - movs r1, 0x1 - b _080FB9C0 - .align 2, 0 -_080FB88C: .4byte gUnknown_3005E10 -_080FB890: .4byte gUnknown_3005450 -_080FB894: - ldr r2, _080FB8B4 @ =gUnknown_3005450 - adds r1, r2, 0 - adds r1, 0xF0 - movs r0, 0x3 - strb r0, [r1] - ldr r0, _080FB8B8 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0 - beq _080FB8AA - b _080FB9C2 -_080FB8AA: - ldr r7, _080FB8BC @ =0x000008f4 - adds r0, r2, r7 - ldrb r1, [r0] - movs r1, 0x1 - b _080FB9C0 - .align 2, 0 -_080FB8B4: .4byte gUnknown_3005450 -_080FB8B8: .4byte gRfuLinkStatus -_080FB8BC: .4byte 0x000008f4 -_080FB8C0: - ldr r0, _080FB900 @ =gUnknown_3005450 - adds r0, 0xF0 - movs r1, 0x2 - strb r1, [r0] -_080FB8C8: - ldr r2, _080FB900 @ =gUnknown_3005450 - adds r1, r2, 0 - adds r1, 0xF0 - ldrb r0, [r1] - cmp r0, 0x2 - beq _080FB8D8 - movs r0, 0x4 - strb r0, [r1] -_080FB8D8: - ldrb r0, [r2, 0xC] - cmp r0, 0x1 - bne _080FB916 - ldr r0, _080FB904 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FB934 - ldr r0, _080FB908 @ =0x0000099a - adds r2, r0 - ldr r0, _080FB90C @ =gUnknown_3005E10 - ldrb r1, [r0, 0x14] - ldrb r0, [r2] - bics r0, r1 - strb r0, [r2] - cmp r0, 0 - bne _080FB910 - adds r0, r4, 0 - bl sub_80FB0E8 - b _080FB934 - .align 2, 0 -_080FB900: .4byte gUnknown_3005450 -_080FB904: .4byte gReceivedRemoteLinkPlayers -_080FB908: .4byte 0x0000099a -_080FB90C: .4byte gUnknown_3005E10 -_080FB910: - bl sub_80FB174 - b _080FB934 -_080FB916: - ldr r1, _080FB964 @ =0x0000099c - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x2 - beq _080FB934 - ldr r0, _080FB968 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FB934 - adds r0, r4, 0 - bl sub_80FB0E8 - movs r0, 0 - bl sub_80FD760 -_080FB934: - ldr r0, _080FB96C @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0xFF - bne _080FB95A - ldr r0, _080FB970 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x7] - cmp r0, 0 - bne _080FB95A - ldr r0, _080FB974 @ =sub_80F8B34 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FB95A - ldr r1, _080FB978 @ =gUnknown_3005450 - movs r0, 0x11 - strh r0, [r1, 0x4] -_080FB95A: - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80FB9E4 - b _080FB9C2 - .align 2, 0 -_080FB964: .4byte 0x0000099c -_080FB968: .4byte gReceivedRemoteLinkPlayers -_080FB96C: .4byte gRfuLinkStatus -_080FB970: .4byte gUnknown_3005E10 -_080FB974: .4byte sub_80F8B34 -_080FB978: .4byte gUnknown_3005450 -_080FB97C: - ldr r0, _080FB984 @ =gUnknown_3005450 - ldr r2, _080FB988 @ =0x0000099b - adds r0, r2 - b _080FB9BE - .align 2, 0 -_080FB984: .4byte gUnknown_3005450 -_080FB988: .4byte 0x0000099b -_080FB98C: - movs r0, 0x1 - movs r1, 0xF3 - bl sub_80FB9E4 - movs r0, 0xF3 - bl sub_80FB0E8 - ldr r0, _080FB9A4 @ =gUnknown_3005450 - adds r0, 0xEF - movs r1, 0x1 - b _080FB9C0 - .align 2, 0 -_080FB9A4: .4byte gUnknown_3005450 -_080FB9A8: - adds r0, r4, 0 - bl sub_80FB0E8 - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80FB9E4 - ldr r0, _080FB9C8 @ =gUnknown_3005450 - ldr r7, _080FB9CC @ =0x00000993 - adds r0, r7 - ldrb r1, [r0] -_080FB9BE: - movs r1, 0 -_080FB9C0: - strb r1, [r0] -_080FB9C2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB9C8: .4byte gUnknown_3005450 -_080FB9CC: .4byte 0x00000993 - thumb_func_end sub_80FB5EC - - thumb_func_start sub_80FB9D0 -sub_80FB9D0: @ 80FB9D0 - ldr r0, _080FB9DC @ =gUnknown_3005450 - ldr r1, _080FB9E0 @ =0x0000099c - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - bx lr - .align 2, 0 -_080FB9DC: .4byte gUnknown_3005450 -_080FB9E0: .4byte 0x0000099c - thumb_func_end sub_80FB9D0 - - thumb_func_start sub_80FB9E4 -sub_80FB9E4: @ 80FB9E4 - ldr r2, _080FB9F0 @ =gUnknown_3005450 - adds r3, r2, 0 - adds r3, 0xF1 - strb r0, [r3] - strh r1, [r2, 0xA] - bx lr - .align 2, 0 -_080FB9F0: .4byte gUnknown_3005450 - thumb_func_end sub_80FB9E4 - - thumb_func_start sub_80FB9F4 -sub_80FB9F4: @ 80FB9F4 - ldr r0, _080FB9FC @ =gUnknown_3005450 - adds r0, 0xF1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080FB9FC: .4byte gUnknown_3005450 - thumb_func_end sub_80FB9F4 - - thumb_func_start sub_80FBA00 -sub_80FBA00: @ 80FBA00 - push {lr} - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x1 - bls _080FBA14 - movs r0, 0 - b _080FBA16 -_080FBA14: - movs r0, 0x1 -_080FBA16: - pop {r1} - bx r1 - thumb_func_end sub_80FBA00 - - thumb_func_start sub_80FBA1C -sub_80FBA1C: @ 80FBA1C - ldr r0, _080FBA28 @ =gUnknown_3005450 - movs r1, 0x9A - lsls r1, 4 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080FBA28: .4byte gUnknown_3005450 - thumb_func_end sub_80FBA1C - - thumb_func_start Rfu_IsMaster -Rfu_IsMaster: @ 80FBA2C - ldr r0, _080FBA34 @ =gUnknown_3005450 - ldrb r0, [r0, 0xC] - bx lr - .align 2, 0 -_080FBA34: .4byte gUnknown_3005450 - thumb_func_end Rfu_IsMaster - - thumb_func_start RFUVSync -RFUVSync: @ 80FBA38 - push {lr} - bl rfu_syncVBlank_ - pop {r0} - bx r0 - thumb_func_end RFUVSync - - thumb_func_start sub_80FBA44 -sub_80FBA44: @ 80FBA44 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r1, _080FBA5C @ =gRecvCmds - ldr r2, _080FBA60 @ =0x05000014 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080FBA5C: .4byte gRecvCmds -_080FBA60: .4byte 0x05000014 - thumb_func_end sub_80FBA44 - - thumb_func_start sub_80FBA64 -sub_80FBA64: @ 80FBA64 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80FBA64 - - thumb_func_start sub_80FBA78 -sub_80FBA78: @ 80FBA78 - push {r4,lr} - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - bl ResetPaletteFade - ldr r0, _080FBAF4 @ =sub_80FBA64 - bl SetVBlankCallback - bl IsWirelessAdapterConnected - lsls r0, 24 - cmp r0, 0 - beq _080FBAEC - ldr r1, _080FBAF8 @ =gLinkType - ldr r2, _080FBAFC @ =0x00001111 - adds r0, r2, 0 - strh r0, [r1] - bl sub_800B1F4 - bl OpenLink - ldr r0, _080FBB00 @ =gMain - ldrh r0, [r0, 0x24] - bl SeedRng - movs r4, 0 -_080FBAB4: - bl Random - ldr r1, _080FBB04 @ =gSaveBlock2Ptr - ldr r1, [r1] - adds r1, 0xA - adds r1, r4 - strb r0, [r1] - adds r4, 0x1 - cmp r4, 0x3 - ble _080FBAB4 - movs r1, 0xAA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - bl sub_80FBB20 - ldr r0, _080FBB08 @ =sub_80FBB74 - bl SetMainCallback2 -_080FBAEC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FBAF4: .4byte sub_80FBA64 -_080FBAF8: .4byte gLinkType -_080FBAFC: .4byte 0x00001111 -_080FBB00: .4byte gMain -_080FBB04: .4byte gSaveBlock2Ptr -_080FBB08: .4byte sub_80FBB74 - thumb_func_end sub_80FBA78 - - thumb_func_start sub_80FBB0C -sub_80FBB0C: @ 80FBB0C - push {lr} - ldr r0, _080FBB1C @ =sub_80F8B34 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080FBB1C: .4byte sub_80F8B34 - thumb_func_end sub_80FBB0C - - thumb_func_start sub_80FBB20 -sub_80FBB20: @ 80FBB20 - push {r4,lr} - ldr r4, _080FBB44 @ =nullsub_89 - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _080FBB3E - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - ldr r1, _080FBB48 @ =gUnknown_3005450 - adds r1, 0x66 - strb r0, [r1] -_080FBB3E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FBB44: .4byte nullsub_89 -_080FBB48: .4byte gUnknown_3005450 - thumb_func_end sub_80FBB20 - - thumb_func_start sub_80FBB4C -sub_80FBB4C: @ 80FBB4C - push {lr} - ldr r0, _080FBB6C @ =nullsub_89 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FBB66 - ldr r0, _080FBB70 @ =gUnknown_3005450 - adds r0, 0x66 - ldrb r0, [r0] - bl DestroyTask -_080FBB66: - pop {r0} - bx r0 - .align 2, 0 -_080FBB6C: .4byte nullsub_89 -_080FBB70: .4byte gUnknown_3005450 - thumb_func_end sub_80FBB4C - - thumb_func_start sub_80FBB74 -sub_80FBB74: @ 80FBB74 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80FBB74 - - thumb_func_start sub_80FBB8C -sub_80FBB8C: @ 80FBB8C - push {r4-r6,lr} - adds r4, r0, 0 - ldr r1, _080FBBC4 @ =gUnknown_3005450 - movs r0, 0x1 - strb r0, [r1, 0xC] - bl sub_80FAF1C - ldr r0, _080FBBC8 @ =sub_80FB184 - movs r1, 0 - bl sub_80FD430 - ldr r2, _080FBBCC @ =gUnknown_203ABF0 - adds r1, r2, 0 - ldr r0, _080FBBD0 @ =gUnknown_843EBB4 - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - ldr r0, _080FBBD4 @ =gUnknown_843EBCC - subs r4, 0x1 - adds r4, r0 - ldrb r0, [r4] - strh r0, [r2, 0x2] - bl sub_80F8E74 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FBBC4: .4byte gUnknown_3005450 -_080FBBC8: .4byte sub_80FB184 -_080FBBCC: .4byte gUnknown_203ABF0 -_080FBBD0: .4byte gUnknown_843EBB4 -_080FBBD4: .4byte gUnknown_843EBCC - thumb_func_end sub_80FBB8C - - thumb_func_start sub_80FBBD8 -sub_80FBBD8: @ 80FBBD8 - push {lr} - ldr r1, _080FBBF4 @ =gUnknown_3005450 - movs r0, 0 - strb r0, [r1, 0xC] - bl sub_80FAF1C - ldr r0, _080FBBF8 @ =sub_80FB37C - ldr r1, _080FBBFC @ =sub_80F8D20 - bl sub_80FD430 - bl sub_80F8F10 - pop {r0} - bx r0 - .align 2, 0 -_080FBBF4: .4byte gUnknown_3005450 -_080FBBF8: .4byte sub_80FB37C -_080FBBFC: .4byte sub_80F8D20 - thumb_func_end sub_80FBBD8 - - thumb_func_start sub_80FBC00 -sub_80FBC00: @ 80FBC00 - push {r4-r7,lr} - ldr r0, _080FBC4C @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080FBC46 - ldr r4, _080FBC50 @ =gUnknown_3005450 - movs r5, 0 - movs r0, 0x2 - strb r0, [r4, 0xC] - bl sub_80FAF1C - ldr r0, _080FBC54 @ =sub_80FB5EC - movs r1, 0 - bl sub_80FD430 - ldr r2, _080FBC58 @ =gUnknown_203ABF0 - adds r1, r2, 0 - ldr r0, _080FBC5C @ =gUnknown_843EBB4 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - strb r5, [r2, 0x11] - movs r0, 0x96 - lsls r0, 2 - strh r0, [r2, 0x12] - ldr r0, _080FBC60 @ =sub_80F8B34 - movs r1, 0x1 - bl CreateTask - adds r4, 0x67 - strb r0, [r4] -_080FBC46: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FBC4C: .4byte gUnknown_203ADFA -_080FBC50: .4byte gUnknown_3005450 -_080FBC54: .4byte sub_80FB5EC -_080FBC58: .4byte gUnknown_203ABF0 -_080FBC5C: .4byte gUnknown_843EBB4 -_080FBC60: .4byte sub_80F8B34 - thumb_func_end sub_80FBC00 - - thumb_func_start sub_80FBC64 -sub_80FBC64: @ 80FBC64 - ldrb r1, [r0, 0x1] - lsls r1, 8 - ldrb r0, [r0] - orrs r0, r1 - bx lr - thumb_func_end sub_80FBC64 - - thumb_func_start sub_80FBC70 -sub_80FBC70: @ 80FBC70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - str r0, [sp] - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - movs r0, 0xFF - mov r9, r0 - movs r7, 0 - ldr r1, _080FBCF4 @ =gRfuLinkStatus - mov r8, r1 -_080FBC8E: - lsls r4, r7, 5 - adds r5, r4, 0 - adds r5, 0x14 - mov r1, r8 - ldr r0, [r1] - adds r0, r5 - adds r0, 0x8 - bl sub_80FBC64 - lsls r0, 16 - lsrs r6, r0, 16 - mov r1, r8 - ldr r0, [r1] - adds r0, r4 - ldrh r0, [r0, 0x18] - bl sub_80FA44C - cmp r0, 0 - beq _080FBCD8 - mov r0, r8 - ldr r1, [r0] - adds r1, r5 - adds r1, 0x15 - ldr r0, [sp] - bl StringCompare - cmp r0, 0 - bne _080FBCD8 - cmp r10, r6 - bne _080FBCD8 - mov r9, r7 - mov r1, r8 - ldr r0, [r1] - adds r0, r4 - ldrb r0, [r0, 0x16] - cmp r0, 0xFF - bne _080FBCE2 -_080FBCD8: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3 - bls _080FBC8E -_080FBCE2: - mov r0, r9 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080FBCF4: .4byte gRfuLinkStatus - thumb_func_end sub_80FBC70 - - thumb_func_start sub_80FBCF8 -sub_80FBCF8: @ 80FBCF8 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r0, r6, 24 - lsrs r0, 24 - bl rfu_REQ_disconnect - bl rfu_waitREQComplete - ldr r4, _080FBD3C @ =gUnknown_3005450 - ldr r0, _080FBD40 @ =0x0000099a - adds r5, r4, r0 - ldrb r0, [r5] - bics r0, r6 - strb r0, [r5] - ldr r1, _080FBD44 @ =0x00000992 - adds r6, r4, r1 - ldrb r1, [r6] - movs r0, 0x1 - bl rfu_clearSlot - ldrb r0, [r5] - ldr r1, _080FBD48 @ =0x0000093f - adds r4, r1 - adds r1, r4, 0 - movs r2, 0x46 - bl rfu_UNI_setSendData - ldrb r0, [r5] - bl sub_80F886C - strb r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FBD3C: .4byte gUnknown_3005450 -_080FBD40: .4byte 0x0000099a -_080FBD44: .4byte 0x00000992 -_080FBD48: .4byte 0x0000093f - thumb_func_end sub_80FBCF8 - - thumb_func_start sub_80FBD4C -sub_80FBD4C: @ 80FBD4C - push {lr} - lsls r1, 16 - lsrs r1, 16 - bl sub_80FBC70 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _080FBD66 - movs r0, 0x1 - lsls r0, r1 - bl sub_80FBCF8 -_080FBD66: - pop {r0} - bx r0 - thumb_func_end sub_80FBD4C - - thumb_func_start sub_80FBD6C -sub_80FBD6C: @ 80FBD6C - push {r4-r6,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _080FBDAC - movs r3, 0 - movs r2, 0 - ldr r5, _080FBDB4 @ =gUnknown_3005DE6 - adds r6, r5, 0x4 -_080FBD7C: - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, r4 - bne _080FBD9A - ldrb r0, [r6] - asrs r0, r2 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FBD9A - adds r0, r1, 0 - lsls r0, r2 - orrs r3, r0 - lsls r0, r3, 24 - lsrs r3, r0, 24 -_080FBD9A: - adds r2, 0x1 - cmp r2, 0x3 - ble _080FBD7C - cmp r3, 0 - beq _080FBDAC - adds r0, r3, 0 - movs r1, 0x2 - bl sub_80FBE20 -_080FBDAC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FBDB4: .4byte gUnknown_3005DE6 - thumb_func_end sub_80FBD6C - - thumb_func_start sub_80FBDB8 -sub_80FBDB8: @ 80FBDB8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, _080FBE10 @ =gSendCmd - ldrh r0, [r6] - cmp r0, 0 - bne _080FBE08 - ldr r5, _080FBE14 @ =gUnknown_3005450 - movs r1, 0x9A - lsls r1, 4 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080FBE08 - movs r0, 0xED - lsls r0, 8 - bl sub_80F9D04 - ldr r1, _080FBE18 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x8] - strh r1, [r6, 0x2] - ldrh r1, [r0, 0xA] - strh r1, [r6, 0x4] - ldr r1, _080FBE1C @ =gUnknown_843EC41 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r0, r1 - ldrb r1, [r5, 0xD] - ldrb r0, [r0] - subs r1, r0 - strb r1, [r5, 0xD] - ldrb r0, [r5, 0xD] - strh r0, [r6, 0x6] - adds r0, r4, 0 - bl DestroyTask -_080FBE08: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FBE10: .4byte gSendCmd -_080FBE14: .4byte gUnknown_3005450 -_080FBE18: .4byte gTasks -_080FBE1C: .4byte gUnknown_843EC41 - thumb_func_end sub_80FBDB8 - - thumb_func_start sub_80FBE20 -sub_80FBE20: @ 80FBE20 - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r1, 0 - ldr r5, _080FBE50 @ =sub_80FBDB8 - adds r0, r5, 0 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - bne _080FBE58 - adds r0, r5, 0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080FBE54 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r4, [r0, 0x8] - b _080FBE68 - .align 2, 0 -_080FBE50: .4byte sub_80FBDB8 -_080FBE54: .4byte gTasks -_080FBE58: - ldr r0, _080FBE7C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - orrs r4, r0 - strh r4, [r1, 0x8] -_080FBE68: - ldr r1, _080FBE7C @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0xA] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FBE7C: .4byte gTasks - thumb_func_end sub_80FBE20 - - thumb_func_start sub_80FBE80 -sub_80FBE80: @ 80FBE80 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _080FBED8 @ =gTasks+0x8 - adds r4, r0, r1 - bl sub_80F8EA4 - lsls r0, 24 - cmp r0, 0 - beq _080FBF30 - adds r0, r4, 0 - adds r0, 0x10 - bl sub_80FBC64 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80FBC70 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080FBF18 - ldr r0, _080FBEDC @ =gRfuLinkStatus - ldr r0, [r0] - lsls r1, r2, 5 - adds r0, r1 - ldrb r0, [r0, 0x16] - cmp r0, 0xFF - beq _080FBEE8 - ldr r0, _080FBEE0 @ =gUnknown_3005450 - ldr r1, _080FBEE4 @ =0x000008f5 - adds r0, r1 - strb r2, [r0] - bl sub_80F8ECC - cmp r0, 0 - beq _080FBF36 - b _080FBF10 - .align 2, 0 -_080FBED8: .4byte gTasks+0x8 -_080FBEDC: .4byte gRfuLinkStatus -_080FBEE0: .4byte gUnknown_3005450 -_080FBEE4: .4byte 0x000008f5 -_080FBEE8: - bl sub_80F9800 - ldrb r1, [r0, 0xA] - movs r5, 0x7F - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0x15 - beq _080FBF30 - bl sub_80F9800 - ldrb r1, [r0, 0xA] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0x16 - beq _080FBF30 - movs r1, 0xE0 - lsls r1, 7 - movs r0, 0x2 - bl sub_80FB9E4 -_080FBF10: - adds r0, r6, 0 - bl DestroyTask - b _080FBF36 -_080FBF18: - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] - ldr r0, _080FBF28 @ =gUnknown_3005450 - ldr r1, _080FBF2C @ =0x000008f5 - adds r0, r1 - strb r2, [r0] - b _080FBF36 - .align 2, 0 -_080FBF28: .4byte gUnknown_3005450 -_080FBF2C: .4byte 0x000008f5 -_080FBF30: - ldrh r0, [r4, 0x1E] - adds r0, 0x1 - strh r0, [r4, 0x1E] -_080FBF36: - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0xF0 - ble _080FBF4E - movs r1, 0xE0 - lsls r1, 7 - movs r0, 0x2 - bl sub_80FB9E4 - adds r0, r6, 0 - bl DestroyTask -_080FBF4E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80FBE80 - - thumb_func_start sub_80FBF54 -sub_80FBF54: @ 80FBF54 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - ldr r0, _080FBF8C @ =gUnknown_3005450 - adds r0, 0xF1 - movs r1, 0 - strb r1, [r0] - ldr r0, _080FBF90 @ =sub_80FBE80 - movs r1, 0x3 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _080FBF94 @ =gTasks+0x8 - adds r4, r0 - adds r0, r4, 0 - adds r1, r6, 0 - bl StringCopy - strh r5, [r4, 0x10] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FBF8C: .4byte gUnknown_3005450 -_080FBF90: .4byte sub_80FBE80 -_080FBF94: .4byte gTasks+0x8 - thumb_func_end sub_80FBF54 - - thumb_func_start sub_80FBF98 -sub_80FBF98: @ 80FBF98 - push {r4,r5,lr} - adds r4, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - bl sub_80F9800 - ldrb r1, [r0, 0xA] - movs r2, 0x7F - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x45 - bne _080FBFBE - ldrb r1, [r4, 0xA] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x45 - beq _080FC01E -_080FBFBA: - movs r0, 0x1 - b _080FC020 -_080FBFBE: - ldrb r1, [r4, 0xA] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x40 - bne _080FBFBA - cmp r5, 0x44 - bne _080FC01E - ldr r5, _080FBFEC @ =gUnknown_300555A - ldrh r0, [r5, 0x8] - ldr r3, _080FBFF0 @ =0x000003ff - adds r2, r3, 0 - ands r2, r0 - movs r0, 0xCE - lsls r0, 1 - cmp r2, r0 - bne _080FBFF4 - ldrh r1, [r4, 0x8] - adds r0, r3, 0 - ands r0, r1 - cmp r0, r2 - beq _080FC01E - b _080FBFBA - .align 2, 0 -_080FBFEC: .4byte gUnknown_300555A -_080FBFF0: .4byte 0x000003ff -_080FBFF4: - ldrh r1, [r4, 0x8] - adds r0, r3, 0 - ands r0, r1 - cmp r0, r2 - bne _080FBFBA - ldrb r2, [r4, 0xB] - movs r0, 0xFE - ldrb r3, [r5, 0xB] - adds r1, r0, 0 - ands r1, r2 - ands r0, r3 - cmp r1, r0 - bne _080FBFBA - ldrb r2, [r4, 0x9] - movs r0, 0xFC - ldrb r3, [r5, 0x9] - adds r1, r0, 0 - ands r1, r2 - ands r0, r3 - cmp r1, r0 - bne _080FBFBA -_080FC01E: - movs r0, 0 -_080FC020: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FBF98 - - thumb_func_start sub_80FC028 -sub_80FC028: @ 80FC028 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - mov r8, r5 - ldr r6, _080FC0E0 @ =gUnknown_3005450 - adds r0, r6, 0 - adds r0, 0xF1 - ldrb r0, [r0] - cmp r0, 0x4 - bne _080FC046 - adds r0, r5, 0 - bl DestroyTask -_080FC046: - ldr r1, _080FC0E4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - movs r1, 0x96 - lsls r1, 17 - cmp r0, r1 - ble _080FC070 - movs r1, 0xE0 - lsls r1, 7 - movs r0, 0x2 - bl sub_80FB9E4 - adds r0, r5, 0 - bl DestroyTask -_080FC070: - ldr r1, _080FC0E8 @ =0x00000985 - adds r0, r6, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080FC108 - ldr r0, _080FC0EC @ =gUnknown_3005E10 - ldrb r0, [r0, 0x6] - cmp r0, 0 - bne _080FC108 - movs r2, 0x86 - lsls r2, 1 - adds r0, r6, r2 - bl sub_80FBC64 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080FC0F0 @ =0x00000119 - adds r0, r6, r2 - bl sub_80FBC70 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080FC108 - movs r1, 0xA - ldrsh r0, [r4, r1] - ldr r7, _080FC0F4 @ =gRfuLinkStatus - lsls r4, r2, 5 - adds r2, r4, 0 - adds r2, 0x14 - ldr r1, [r7] - adds r1, r2 - adds r1, 0x6 - bl sub_80FBF98 - cmp r0, 0 - bne _080FC0F8 - ldr r0, [r7] - adds r1, r0, r4 - ldrb r0, [r1, 0x16] - cmp r0, 0xFF - beq _080FC108 - ldrh r0, [r1, 0x14] - movs r1, 0x5A - bl sub_80FD610 - lsls r0, 24 - cmp r0, 0 - bne _080FC108 - movs r0, 0xA - strh r0, [r6, 0x4] - adds r0, r5, 0 - bl DestroyTask - b _080FC108 - .align 2, 0 -_080FC0E0: .4byte gUnknown_3005450 -_080FC0E4: .4byte gTasks -_080FC0E8: .4byte 0x00000985 -_080FC0EC: .4byte gUnknown_3005E10 -_080FC0F0: .4byte 0x00000119 -_080FC0F4: .4byte gRfuLinkStatus -_080FC0F8: - movs r1, 0xE0 - lsls r1, 7 - movs r0, 0x2 - bl sub_80FB9E4 - mov r0, r8 - bl DestroyTask -_080FC108: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FC028 - - thumb_func_start sub_80FC114 -sub_80FC114: @ 80FC114 - push {r4-r7,lr} - adds r3, r0, 0 - adds r5, r1, 0 - lsls r4, r2, 24 - lsrs r4, 24 - ldr r6, _080FC184 @ =gUnknown_3005450 - ldr r1, _080FC188 @ =0x00000987 - adds r0, r6, r1 - movs r7, 0 - strb r7, [r0] - adds r0, r6, 0 - adds r0, 0xF1 - strb r7, [r0] - ldr r1, _080FC18C @ =0x00000119 - adds r0, r6, r1 - adds r1, r3, 0 - bl StringCopy - movs r1, 0x85 - lsls r1, 1 - adds r0, r6, r1 - adds r1, r5, 0 - movs r2, 0xD - bl memcpy - bl sub_80FEB3C - ldr r0, _080FC190 @ =sub_80FC028 - movs r1, 0x2 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r5, _080FC194 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - strh r4, [r1, 0xA] - ldr r0, _080FC198 @ =sub_80F8B34 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - cmp r4, 0x45 - bne _080FC19C - cmp r1, 0xFF - beq _080FC1AA - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r1, 0x1 - strh r1, [r0, 0x16] - b _080FC1AA - .align 2, 0 -_080FC184: .4byte gUnknown_3005450 -_080FC188: .4byte 0x00000987 -_080FC18C: .4byte 0x00000119 -_080FC190: .4byte sub_80FC028 -_080FC194: .4byte gTasks -_080FC198: .4byte sub_80F8B34 -_080FC19C: - cmp r2, 0xFF - beq _080FC1AA - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r5 - strh r7, [r0, 0x16] -_080FC1AA: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FC114 - - thumb_func_start sub_80FC1B0 -sub_80FC1B0: @ 80FC1B0 - push {lr} - ldr r0, _080FC1C0 @ =gUnknown_3005450 - adds r0, 0xF0 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080FC1C4 - movs r0, 0 - b _080FC1C6 - .align 2, 0 -_080FC1C0: .4byte gUnknown_3005450 -_080FC1C4: - movs r0, 0x1 -_080FC1C6: - pop {r1} - bx r1 - thumb_func_end sub_80FC1B0 - - thumb_func_start sub_80FC1CC -sub_80FC1CC: @ 80FC1CC - push {r4,lr} - movs r1, 0 - ldr r0, _080FC1F0 @ =gUnknown_3005E10 - ldrb r2, [r0] - ldr r4, _080FC1F4 @ =gUnknown_3005DD9 - movs r3, 0x1 -_080FC1D8: - adds r0, r2, 0 - asrs r0, r1 - ands r0, r3 - cmp r0, 0 - beq _080FC1F8 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080FC1F8 - movs r0, 0 - b _080FC200 - .align 2, 0 -_080FC1F0: .4byte gUnknown_3005E10 -_080FC1F4: .4byte gUnknown_3005DD9 -_080FC1F8: - adds r1, 0x1 - cmp r1, 0x3 - ble _080FC1D8 - movs r0, 0x1 -_080FC200: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FC1CC - - thumb_func_start sub_80FC208 -sub_80FC208: @ 80FC208 - push {r4,lr} - movs r4, 0 -_080FC20C: - lsls r2, r4, 24 - lsrs r2, 24 - ldr r0, _080FC224 @ =gUnknown_843EE28 - movs r1, 0 - bl nullsub_87 - adds r4, 0x1 - cmp r4, 0x13 - ble _080FC20C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC224: .4byte gUnknown_843EE28 - thumb_func_end sub_80FC208 - - thumb_func_start sub_80FC228 -sub_80FC228: @ 80FC228 - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1C - movs r2, 0x13 - movs r3, 0x2 - bl nullsub_88 - ldr r4, _080FC2F8 @ =gRfuLinkStatus - ldr r0, [r4] - ldrb r0, [r0, 0x2] - movs r1, 0x14 - movs r2, 0x1 - movs r3, 0x1 - bl nullsub_88 - ldr r0, [r4] - ldrb r0, [r0, 0x3] - movs r1, 0x17 - movs r2, 0x1 - movs r3, 0x1 - bl nullsub_88 - ldr r0, _080FC2FC @ =gUnknown_3005450 - ldrb r0, [r0, 0xC] - cmp r0, 0x1 - bne _080FC304 - movs r6, 0 - adds r7, r4, 0 - movs r5, 0x14 -_080FC26C: - ldr r2, [r7] - ldrb r0, [r2, 0x7] - asrs r0, r6 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FC2AA - lsls r0, r6, 5 - adds r0, r2, r0 - ldrh r0, [r0, 0x18] - adds r4, r6, 0x3 - lsls r4, 24 - lsrs r4, 24 - adds r2, r4, 0 - movs r3, 0x4 - bl nullsub_88 - ldr r0, [r7] - adds r0, r5 - adds r0, 0x6 - movs r1, 0x6 - adds r2, r4, 0 - bl nullsub_87 - ldr r0, [r7] - adds r0, r5 - adds r0, 0x15 - movs r1, 0x16 - adds r2, r4, 0 - bl nullsub_87 -_080FC2AA: - adds r5, 0x20 - adds r6, 0x1 - cmp r6, 0x3 - ble _080FC26C - movs r6, 0 - ldr r0, _080FC2FC @ =gUnknown_3005450 - mov r8, r0 -_080FC2B8: - movs r5, 0 - adds r7, r6, 0x1 - lsls r0, r6, 3 - adds r2, r6, 0 - adds r2, 0xB - subs r0, r6 - lsls r0, 1 - mov r1, r8 - adds r1, 0x14 - adds r4, r0, r1 - lsls r6, r2, 24 -_080FC2CE: - ldrb r0, [r4] - lsls r1, r5, 25 - lsrs r1, 24 - lsrs r2, r6, 24 - movs r3, 0x2 - bl nullsub_88 - adds r4, 0x1 - adds r5, 0x1 - cmp r5, 0xD - ble _080FC2CE - adds r6, r7, 0 - cmp r6, 0x3 - ble _080FC2B8 - ldr r0, _080FC300 @ =gUnknown_843EE64 "NOWSLOT" - movs r1, 0x1 - movs r2, 0xF - bl nullsub_87 - b _080FC436 - .align 2, 0 -_080FC2F8: .4byte gRfuLinkStatus -_080FC2FC: .4byte gUnknown_3005450 -_080FC300: .4byte gUnknown_843EE64 -_080FC304: - ldr r1, [r4] - ldrb r0, [r1, 0x2] - cmp r0, 0 - beq _080FC3A0 - ldrb r0, [r1, 0x7] - cmp r0, 0 - beq _080FC3A0 - movs r6, 0 - movs r5, 0xC0 - lsls r5, 18 -_080FC318: - lsrs r4, r5, 24 - movs r0, 0 - movs r1, 0x1 - adds r2, r4, 0 - movs r3, 0x4 - bl nullsub_88 - ldr r0, _080FC38C @ =gUnknown_843EE47 - movs r1, 0x6 - adds r2, r4, 0 - bl nullsub_87 - ldr r0, _080FC390 @ =gUnknown_843EE57 - movs r1, 0x16 - adds r2, r4, 0 - bl nullsub_87 - movs r1, 0x80 - lsls r1, 17 - adds r5, r1 - adds r6, 0x1 - cmp r6, 0x3 - ble _080FC318 - ldr r5, _080FC394 @ =gRfuLinkStatus - ldr r1, [r5] - ldr r4, _080FC398 @ =gUnknown_3005450 - ldr r0, _080FC39C @ =0x000008f6 - adds r4, r0 - ldrb r0, [r4] - lsls r0, 5 - adds r1, r0 - ldrh r0, [r1, 0x18] - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x4 - bl nullsub_88 - ldrb r1, [r4] - lsls r1, 5 - adds r1, 0x14 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x6 - movs r1, 0x6 - movs r2, 0x3 - bl nullsub_87 - ldrb r1, [r4] - lsls r1, 5 - adds r1, 0x14 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x15 - movs r1, 0x16 - movs r2, 0x3 - bl nullsub_87 - b _080FC436 - .align 2, 0 -_080FC38C: .4byte gUnknown_843EE47 -_080FC390: .4byte gUnknown_843EE57 -_080FC394: .4byte gRfuLinkStatus -_080FC398: .4byte gUnknown_3005450 -_080FC39C: .4byte 0x000008f6 -_080FC3A0: - movs r6, 0 - ldr r1, _080FC440 @ =gRfuLinkStatus - ldr r0, [r1] - ldrb r0, [r0, 0x8] - cmp r6, r0 - bge _080FC3FC - adds r7, r1, 0 - movs r1, 0x14 - mov r8, r1 -_080FC3B2: - ldr r0, [r7] - lsls r5, r6, 5 - adds r1, r0, r5 - ldrb r0, [r1, 0x16] - cmp r0, 0xFF - beq _080FC3EE - ldrh r0, [r1, 0x18] - adds r4, r6, 0x3 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0x1 - adds r2, r4, 0 - movs r3, 0x4 - bl nullsub_88 - ldr r0, [r7] - adds r0, r5 - ldrh r0, [r0, 0x14] - movs r1, 0x6 - adds r2, r4, 0 - movs r3, 0x4 - bl nullsub_88 - ldr r0, [r7] - add r0, r8 - adds r0, 0x15 - movs r1, 0x16 - adds r2, r4, 0 - bl nullsub_87 -_080FC3EE: - movs r0, 0x20 - add r8, r0 - adds r6, 0x1 - ldr r0, [r7] - ldrb r0, [r0, 0x8] - cmp r6, r0 - blt _080FC3B2 -_080FC3FC: - cmp r6, 0x3 - bgt _080FC436 - lsls r0, r6, 24 - movs r1, 0xC0 - lsls r1, 18 - adds r5, r0, r1 -_080FC408: - lsrs r4, r5, 24 - movs r0, 0 - movs r1, 0x1 - adds r2, r4, 0 - movs r3, 0x4 - bl nullsub_88 - ldr r0, _080FC444 @ =gUnknown_843EE47 - movs r1, 0x6 - adds r2, r4, 0 - bl nullsub_87 - ldr r0, _080FC448 @ =gUnknown_843EE57 - movs r1, 0x16 - adds r2, r4, 0 - bl nullsub_87 - movs r0, 0x80 - lsls r0, 17 - adds r5, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _080FC408 -_080FC436: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC440: .4byte gRfuLinkStatus -_080FC444: .4byte gUnknown_843EE47 -_080FC448: .4byte gUnknown_843EE57 - thumb_func_end sub_80FC228 - - thumb_func_start sub_80FC44C -sub_80FC44C: @ 80FC44C - ldr r0, _080FC458 @ =gUnknown_3005450 - ldr r1, _080FC45C @ =0x000008d2 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080FC458: .4byte gUnknown_3005450 -_080FC45C: .4byte 0x000008d2 - thumb_func_end sub_80FC44C - - thumb_func_start GetRfuRecvQueueLength -GetRfuRecvQueueLength: @ 80FC460 - ldr r0, _080FC46C @ =gUnknown_3005450 - ldr r1, _080FC470 @ =0x0000069e - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080FC46C: .4byte gUnknown_3005450 -_080FC470: .4byte 0x0000069e - thumb_func_end GetRfuRecvQueueLength - - thumb_func_start nullsub_89 -nullsub_89: @ 80FC474 - bx lr - thumb_func_end nullsub_89 - - thumb_func_start sub_80FC478 -sub_80FC478: @ 80FC478 - push {r4,r5,lr} - adds r3, r0, 0 - movs r0, 0 - movs r4, 0 - movs r5, 0x46 -_080FC482: - adds r2, r0, 0x1 - movs r1, 0x45 - muls r0, r5 - adds r0, r3 - adds r0, 0x45 -_080FC48C: - strb r4, [r0] - subs r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _080FC48C - adds r0, r2, 0 - cmp r0, 0x13 - ble _080FC482 - movs r1, 0 - ldr r2, _080FC4C8 @ =0x00000579 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - movs r2, 0xAF - lsls r2, 3 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - ldr r2, _080FC4CC @ =0x0000057a - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - ldr r2, _080FC4D0 @ =0x0000057b - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FC4C8: .4byte 0x00000579 -_080FC4CC: .4byte 0x0000057a -_080FC4D0: .4byte 0x0000057b - thumb_func_end sub_80FC478 - - thumb_func_start sub_80FC4D4 -sub_80FC4D4: @ 80FC4D4 - push {r4,lr} - adds r3, r0, 0 - movs r1, 0 - movs r4, 0 -_080FC4DC: - lsls r0, r1, 3 - adds r2, r1, 0x1 - subs r0, r1 - movs r1, 0xD - lsls r0, 1 - adds r0, r3 - adds r0, 0xD -_080FC4EA: - strb r4, [r0] - subs r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _080FC4EA - adds r1, r2, 0 - cmp r1, 0x27 - ble _080FC4DC - movs r1, 0 - ldr r2, _080FC524 @ =0x00000231 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - movs r2, 0x8C - lsls r2, 2 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - ldr r2, _080FC528 @ =0x00000232 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - ldr r2, _080FC52C @ =0x00000233 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC524: .4byte 0x00000231 -_080FC528: .4byte 0x00000232 -_080FC52C: .4byte 0x00000233 - thumb_func_end sub_80FC4D4 - - thumb_func_start sub_80FC530 -sub_80FC530: @ 80FC530 - push {r4,lr} - adds r3, r0, 0 - movs r1, 0 - movs r4, 0 -_080FC538: - lsls r0, r1, 8 - adds r2, r1, 0x1 - movs r1, 0xFF - adds r0, r3 - adds r0, 0xFF -_080FC542: - strb r4, [r0] - subs r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _080FC542 - adds r1, r2, 0 - cmp r1, 0x1 - ble _080FC538 - movs r1, 0 - ldr r2, _080FC57C @ =0x00000201 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - movs r2, 0x80 - lsls r2, 2 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - ldr r2, _080FC580 @ =0x00000202 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - ldr r2, _080FC584 @ =0x00000203 - adds r0, r3, r2 - ldrb r2, [r0] - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC57C: .4byte 0x00000201 -_080FC580: .4byte 0x00000202 -_080FC584: .4byte 0x00000203 - thumb_func_end sub_80FC530 - - thumb_func_start sub_80FC588 -sub_80FC588: @ 80FC588 - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _080FC620 @ =0x0000057a - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0x13 - bhi _080FC628 - ldr r0, _080FC624 @ =0x04000208 - ldrh r1, [r0] - adds r7, r1, 0 - movs r1, 0 - strh r1, [r0] - movs r3, 0 - movs r2, 0 -_080FC5A6: - adds r1, r6, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _080FC5BA - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _080FC5BA - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_080FC5BA: - adds r2, 0xE - cmp r2, 0x45 - ble _080FC5A6 - cmp r3, 0x5 - beq _080FC618 - movs r2, 0 - movs r0, 0xAF - lsls r0, 3 - adds r3, r5, r0 - movs r4, 0x46 -_080FC5CE: - ldrb r0, [r3] - adds r1, r0, 0 - muls r1, r4 - adds r1, r2, r1 - adds r1, r5, r1 - adds r0, r6, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x45 - ble _080FC5CE - movs r1, 0xAF - lsls r1, 3 - adds r4, r5, r1 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0x14 - bl __umodsi3 - ldrb r1, [r4] - strb r0, [r4] - ldr r0, _080FC620 @ =0x0000057a - adds r1, r5, r0 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r1, 0 - adds r0, r6, 0 - adds r0, 0x45 -_080FC610: - strb r1, [r0] - subs r0, 0x1 - cmp r0, r6 - bge _080FC610 -_080FC618: - ldr r0, _080FC624 @ =0x04000208 - strh r7, [r0] - b _080FC632 - .align 2, 0 -_080FC620: .4byte 0x0000057a -_080FC624: .4byte 0x04000208 -_080FC628: - ldr r1, _080FC638 @ =0x0000057b - adds r0, r5, r1 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] -_080FC632: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC638: .4byte 0x0000057b - thumb_func_end sub_80FC588 - - thumb_func_start sub_80FC63C -sub_80FC63C: @ 80FC63C - push {r4-r7,lr} - adds r6, r0, 0 - adds r5, r1, 0 - ldr r1, _080FC6CC @ =0x00000232 - adds r0, r6, r1 - ldrb r0, [r0] - cmp r0, 0x27 - bhi _080FC6D4 - ldr r1, _080FC6D0 @ =0x04000208 - ldrh r0, [r1] - adds r7, r0, 0 - movs r0, 0 - strh r0, [r1] - movs r2, 0 - ldrb r0, [r5] - cmp r0, 0 - bne _080FC66C -_080FC65E: - adds r2, 0x1 - cmp r2, 0xD - bgt _080FC66C - adds r0, r5, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080FC65E -_080FC66C: - cmp r2, 0xE - beq _080FC6C4 - movs r2, 0 - movs r0, 0x8C - lsls r0, 2 - adds r3, r6, r0 -_080FC678: - ldrb r1, [r3] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - adds r0, r2, r0 - adds r0, r6, r0 - adds r1, r5, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0xD - ble _080FC678 - movs r1, 0x8C - lsls r1, 2 - adds r4, r6, r1 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0x28 - bl __umodsi3 - ldrb r1, [r4] - strb r0, [r4] - ldr r0, _080FC6CC @ =0x00000232 - adds r1, r6, r0 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r1, 0 - adds r0, r5, 0 - adds r0, 0xD -_080FC6BC: - strb r1, [r0] - subs r0, 0x1 - cmp r0, r5 - bge _080FC6BC -_080FC6C4: - ldr r0, _080FC6D0 @ =0x04000208 - strh r7, [r0] - b _080FC6DE - .align 2, 0 -_080FC6CC: .4byte 0x00000232 -_080FC6D0: .4byte 0x04000208 -_080FC6D4: - ldr r1, _080FC6E4 @ =0x00000233 - adds r0, r6, r1 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] -_080FC6DE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC6E4: .4byte 0x00000233 - thumb_func_end sub_80FC63C - - thumb_func_start sub_80FC6E8 -sub_80FC6E8: @ 80FC6E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - adds r3, r1, 0 - ldr r1, _080FC730 @ =0x04000208 - ldrh r0, [r1] - mov r8, r0 - movs r0, 0 - strh r0, [r1] - movs r1, 0xAF - lsls r1, 3 - adds r0, r5, r1 - ldr r7, _080FC734 @ =0x00000579 - adds r4, r5, r7 - ldrb r1, [r0] - ldrb r0, [r4] - cmp r1, r0 - beq _080FC718 - ldr r1, _080FC738 @ =0x0000057b - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080FC73C -_080FC718: - movs r1, 0 - adds r0, r3, 0 - adds r0, 0x45 -_080FC71E: - strb r1, [r0] - subs r0, 0x1 - cmp r0, r3 - bge _080FC71E - ldr r0, _080FC730 @ =0x04000208 - mov r7, r8 - strh r7, [r0] - movs r0, 0 - b _080FC784 - .align 2, 0 -_080FC730: .4byte 0x04000208 -_080FC734: .4byte 0x00000579 -_080FC738: .4byte 0x0000057b -_080FC73C: - movs r2, 0 - movs r6, 0x46 -_080FC740: - adds r1, r3, r2 - ldrb r0, [r4] - adds r7, r0, 0 - muls r7, r6 - adds r0, r7, 0 - adds r0, r2, r0 - adds r0, r5, r0 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - cmp r2, 0x45 - ble _080FC740 - ldr r0, _080FC790 @ =0x00000579 - adds r4, r5, r0 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0x14 - bl __umodsi3 - ldrb r1, [r4] - strb r0, [r4] - ldr r7, _080FC794 @ =0x0000057a - adds r1, r5, r7 - ldrb r0, [r1] - subs r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - ldr r0, _080FC798 @ =0x04000208 - mov r1, r8 - strh r1, [r0] - movs r0, 0x1 -_080FC784: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080FC790: .4byte 0x00000579 -_080FC794: .4byte 0x0000057a -_080FC798: .4byte 0x04000208 - thumb_func_end sub_80FC6E8 - - thumb_func_start sub_80FC79C -sub_80FC79C: @ 80FC79C - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r1, 0 - movs r1, 0x8C - lsls r1, 2 - adds r0, r5, r1 - adds r1, 0x1 - adds r4, r5, r1 - ldrb r1, [r0] - ldrb r0, [r4] - cmp r1, r0 - beq _080FC7C0 - ldr r1, _080FC7C4 @ =0x00000233 - adds r0, r5, r1 - ldrb r0, [r0] - adds r2, r0, 0 - cmp r2, 0 - beq _080FC7C8 -_080FC7C0: - movs r0, 0 - b _080FC814 - .align 2, 0 -_080FC7C4: .4byte 0x00000233 -_080FC7C8: - ldr r1, _080FC81C @ =0x04000208 - ldrh r0, [r1] - adds r7, r0, 0 - strh r2, [r1] - movs r3, 0 -_080FC7D2: - adds r2, r6, r3 - ldrb r1, [r4] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - adds r0, r3, r0 - adds r0, r5, r0 - ldrb r0, [r0] - strb r0, [r2] - adds r3, 0x1 - cmp r3, 0xD - ble _080FC7D2 - ldr r0, _080FC820 @ =0x00000231 - adds r4, r5, r0 - ldrb r0, [r4] - adds r0, 0x1 - ldrb r1, [r4] - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0x28 - bl __umodsi3 - ldrb r1, [r4] - strb r0, [r4] - ldr r0, _080FC824 @ =0x00000232 - adds r1, r5, r0 - ldrb r0, [r1] - subs r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - ldr r0, _080FC81C @ =0x04000208 - strh r7, [r0] - movs r0, 0x1 -_080FC814: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080FC81C: .4byte 0x04000208 -_080FC820: .4byte 0x00000231 -_080FC824: .4byte 0x00000232 - thumb_func_end sub_80FC79C - - thumb_func_start sub_80FC828 -sub_80FC828: @ 80FC828 - push {r4,lr} - adds r2, r0, 0 - adds r4, r1, 0 - ldrb r0, [r4, 0x1] - cmp r0, 0 - bne _080FC83E - adds r0, r2, 0 - movs r1, 0 - bl sub_80FC888 - b _080FC880 -_080FC83E: - movs r3, 0 -_080FC840: - ldrb r1, [r2, 0x1C] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - adds r0, r3, r0 - adds r0, r2, r0 - adds r1, r4, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0xD - ble _080FC840 - ldrb r0, [r2, 0x1C] - adds r0, 0x1 - ldrb r1, [r2, 0x1C] - strb r0, [r2, 0x1C] - ldrb r1, [r2, 0x1C] - movs r0, 0x1 - ands r0, r1 - ldrb r1, [r2, 0x1C] - strb r0, [r2, 0x1C] - ldrb r0, [r2, 0x1E] - cmp r0, 0x1 - bhi _080FC87A - ldrb r0, [r2, 0x1E] - adds r0, 0x1 - ldrb r1, [r2, 0x1E] - strb r0, [r2, 0x1E] - b _080FC880 -_080FC87A: - ldrb r0, [r2, 0x1C] - ldrb r1, [r2, 0x1D] - strb r0, [r2, 0x1D] -_080FC880: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FC828 - - thumb_func_start sub_80FC888 -sub_80FC888: @ 80FC888 - push {r4,r5,lr} - adds r3, r0, 0 - adds r5, r1, 0 - ldrb r0, [r3, 0x1E] - cmp r0, 0 - bne _080FC898 - movs r0, 0 - b _080FC8D2 -_080FC898: - cmp r5, 0 - beq _080FC8B6 - movs r4, 0 -_080FC89E: - adds r2, r5, r4 - ldrb r1, [r3, 0x1D] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - adds r0, r4, r0 - adds r0, r3, r0 - ldrb r0, [r0] - strb r0, [r2] - adds r4, 0x1 - cmp r4, 0xD - ble _080FC89E -_080FC8B6: - ldrb r0, [r3, 0x1D] - adds r0, 0x1 - ldrb r1, [r3, 0x1D] - strb r0, [r3, 0x1D] - ldrb r1, [r3, 0x1D] - movs r0, 0x1 - ands r0, r1 - ldrb r1, [r3, 0x1D] - strb r0, [r3, 0x1D] - ldrb r0, [r3, 0x1E] - subs r0, 0x1 - ldrb r1, [r3, 0x1E] - strb r0, [r3, 0x1E] - movs r0, 0x1 -_080FC8D2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FC888 - - thumb_func_start sub_80FC8D8 -sub_80FC8D8: @ 80FC8D8 - push {r4,r5,lr} - adds r3, r0, 0 - adds r5, r1, 0 - ldr r1, _080FC92C @ =0x00000202 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _080FC930 - movs r2, 0 - movs r0, 0x80 - lsls r0, 2 - adds r4, r3, r0 -_080FC8F0: - ldrb r0, [r4] - lsls r0, 8 - adds r0, r2, r0 - adds r0, r3, r0 - adds r1, r5, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0xFF - ble _080FC8F0 - movs r0, 0x80 - lsls r0, 2 - adds r1, r3, r0 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - ldrb r2, [r1] - movs r0, 0x1 - ands r0, r2 - ldrb r2, [r1] - strb r0, [r1] - ldr r0, _080FC92C @ =0x00000202 - adds r1, r3, r0 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - b _080FC93A - .align 2, 0 -_080FC92C: .4byte 0x00000202 -_080FC930: - ldr r1, _080FC940 @ =0x00000203 - adds r0, r3, r1 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] -_080FC93A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FC940: .4byte 0x00000203 - thumb_func_end sub_80FC8D8 - - thumb_func_start sub_80FC944 -sub_80FC944: @ 80FC944 - push {r4,r5,lr} - adds r3, r0, 0 - adds r5, r1, 0 - movs r1, 0x80 - lsls r1, 2 - adds r0, r3, r1 - adds r1, 0x1 - adds r4, r3, r1 - ldrb r1, [r0] - ldrb r0, [r4] - cmp r1, r0 - beq _080FC966 - ldr r1, _080FC96C @ =0x00000203 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080FC970 -_080FC966: - movs r0, 0 - b _080FC9AA - .align 2, 0 -_080FC96C: .4byte 0x00000203 -_080FC970: - movs r2, 0 -_080FC972: - adds r0, r5, r2 - ldrb r1, [r4] - lsls r1, 8 - adds r1, r2, r1 - adds r1, r3, r1 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0xFF - ble _080FC972 - ldr r0, _080FC9B0 @ =0x00000201 - adds r1, r3, r0 - ldrb r0, [r1] - adds r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - ldrb r2, [r1] - movs r0, 0x1 - ands r0, r2 - ldrb r2, [r1] - strb r0, [r1] - ldr r0, _080FC9B4 @ =0x00000202 - adds r1, r3, r0 - ldrb r0, [r1] - subs r0, 0x1 - ldrb r2, [r1] - strb r0, [r1] - movs r0, 0x1 -_080FC9AA: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080FC9B0: .4byte 0x00000201 -_080FC9B4: .4byte 0x00000202 - thumb_func_end sub_80FC944 - - thumb_func_start sub_80FC9B8 -sub_80FC9B8: @ 80FC9B8 - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r1, 0 - movs r5, 0 - cmp r1, 0x1 - beq _080FC9F6 - cmp r1, 0x1 - bgt _080FC9D2 - cmp r1, 0 - beq _080FC9DC - b _080FCA6A -_080FC9D2: - cmp r0, 0x2 - beq _080FCA16 - cmp r0, 0x3 - beq _080FCA36 - b _080FCA6A -_080FC9DC: - movs r4, 0 -_080FC9DE: - adds r0, r6, r4 - adds r1, r4, 0x1 - strb r1, [r0] - lsls r0, r5, 16 - asrs r0, 16 - adds r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r4, r1, 0 - cmp r4, 0xC7 - ble _080FC9DE - b _080FCA30 -_080FC9F6: - movs r4, 0 - adds r2, r6, 0 - adds r2, 0xC8 -_080FC9FC: - adds r0, r6, r4 - adds r1, r4, 0x1 - strb r1, [r0] - lsls r0, r5, 16 - asrs r0, 16 - adds r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r4, r1, 0 - cmp r4, 0x63 - ble _080FC9FC - strh r5, [r2] - b _080FCA6A -_080FCA16: - movs r4, 0 -_080FCA18: - bl Random - lsls r0, 24 - lsrs r0, 24 - adds r1, r6, r4 - strb r0, [r1] - adds r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - adds r4, 0x1 - cmp r4, 0xC7 - ble _080FCA18 -_080FCA30: - adds r0, r6, r4 - strh r5, [r0] - b _080FCA6A -_080FCA36: - movs r4, 0 - ldr r3, _080FCA70 @ =gUnknown_3002018 - ldrb r1, [r3] - ldrb r0, [r3] - adds r7, r0, 0x1 - adds r2, r1, 0x1 - movs r0, 0xFF - mov r12, r0 -_080FCA46: - adds r0, r6, r4 - adds r1, r4, 0x1 - strb r2, [r0] - adds r0, r4, r7 - mov r4, r12 - ands r0, r4 - adds r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - adds r2, 0x1 - adds r4, r1, 0 - cmp r1, 0xC7 - ble _080FCA46 - adds r0, r6, r1 - strh r5, [r0] - ldrb r0, [r3] - adds r0, 0x1 - strb r0, [r3] -_080FCA6A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FCA70: .4byte gUnknown_3002018 - thumb_func_end sub_80FC9B8 - - thumb_func_start sub_80FCA74 -sub_80FCA74: @ 80FCA74 - push {r4,r5,lr} - adds r4, r0, 0 - movs r3, 0 - ldrb r0, [r1] - cmp r0, 0xFF - beq _080FCA98 - ldr r5, _080FCAA4 @ =gUnknown_843F104 - adds r2, r1, 0 -_080FCA84: - adds r1, r4, r3 - ldrb r0, [r2] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - adds r3, 0x1 - ldrb r0, [r2] - cmp r0, 0xFF - bne _080FCA84 -_080FCA98: - adds r1, r4, r3 - movs r0, 0 - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FCAA4: .4byte gUnknown_843F104 - thumb_func_end sub_80FCA74 - - thumb_func_start sub_80FCAA8 -sub_80FCAA8: @ 80FCAA8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r3, 0 - ldrb r0, [r1] - cmp r0, 0 - beq _080FCACC - ldr r5, _080FCAD8 @ =gUnknown_843F004 - adds r2, r1, 0 -_080FCAB8: - adds r1, r4, r3 - ldrb r0, [r2] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r2, 0x1 - adds r3, 0x1 - ldrb r0, [r2] - cmp r0, 0 - bne _080FCAB8 -_080FCACC: - adds r1, r4, r3 - movs r0, 0xFF - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FCAD8: .4byte gUnknown_843F004 - thumb_func_end sub_80FCAA8 - - thumb_func_start sub_80FCADC -sub_80FCADC: @ 80FCADC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r0, _080FCB04 @ =gRfuLinkStatus - ldr r4, [r0] - ldrb r2, [r4, 0x2] - ldrb r1, [r4] - adds r7, r0, 0 - cmp r1, 0x1 - bne _080FCB32 - movs r3, 0 - ands r1, r2 - cmp r1, 0 - beq _080FCB0E - cmp r5, 0x1 - bne _080FCB08 - ldrb r0, [r4, 0xA] - b _080FCB4C - .align 2, 0 -_080FCB04: .4byte gRfuLinkStatus -_080FCB08: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_080FCB0E: - lsrs r2, 1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bhi _080FCB4A - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080FCB0E - adds r0, r6, 0x1 - cmp r5, r0 - bne _080FCB08 -_080FCB28: - ldr r0, [r7] - adds r0, 0xA - adds r0, r3 - ldrb r0, [r0] - b _080FCB4C -_080FCB32: - movs r3, 0 - movs r1, 0x1 -_080FCB36: - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080FCB28 - lsrs r2, 1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080FCB36 -_080FCB4A: - movs r0, 0 -_080FCB4C: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FCADC - - thumb_func_start sub_80FCB54 -sub_80FCB54: @ 80FCB54 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r4, 0 - ldr r0, _080FCC30 @ =gSaveBlock2Ptr - mov r8, r0 - adds r6, r7, 0x2 - ldr r0, [r0] - adds r5, r0, 0 - adds r5, 0xA -_080FCB72: - adds r0, r6, r4 - adds r1, r5, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x1 - ble _080FCB72 - movs r4, 0 - lsls r2, 7 - mov r12, r2 - adds r1, r7, 0x4 -_080FCB88: - adds r0, r1, r4 - strb r3, [r0] - asrs r3, 8 - adds r4, 0x1 - cmp r4, 0x3 - ble _080FCB88 - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x8] - movs r6, 0x1 - movs r1, 0x1 - ands r1, r0 - ldrb r2, [r7, 0xB] - movs r5, 0x2 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r7, 0xB] - movs r4, 0x7F - mov r1, r9 - ands r1, r4 - ldrb r2, [r7, 0xA] - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - ands r0, r4 - mov r1, r12 - orrs r0, r1 - strb r0, [r7, 0xA] - ldrb r0, [r7] - movs r1, 0x10 - negs r1, r1 - ands r1, r0 - movs r0, 0x2 - orrs r1, r0 - ldrb r2, [r7, 0x1] - movs r0, 0x3D - negs r0, r0 - ands r0, r2 - .ifdef FIRERED - movs r2, 0x10 @ VERSION_FIRE_RED << 2 - .else - .ifdef LEAFGREEN - movs r2, 0x14 @ VERSION_LEAF_GREEN << 2 - .endif - .endif - orrs r0, r2 - strb r0, [r7, 0x1] - movs r0, 0x11 - negs r0, r0 - ands r1, r0 - subs r0, 0x10 - ands r1, r0 - subs r0, 0x20 - ands r1, r0 - strb r1, [r7] - ldr r0, _080FCC34 @ =0x00000844 - bl FlagGet - lsls r0, 7 - ldrb r1, [r7] - ands r4, r1 - orrs r4, r0 - strb r4, [r7] - bl IsNationalPokedexEnabled - ands r0, r6 - ldrb r1, [r7, 0x1] - ands r5, r1 - orrs r5, r0 - strb r5, [r7, 0x1] - ldr r0, _080FCC38 @ =0x0000082c - bl FlagGet - ands r6, r0 - lsls r6, 1 - ldrb r1, [r7, 0x1] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - orrs r0, r6 - strb r0, [r7, 0x1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FCC30: .4byte gSaveBlock2Ptr -_080FCC34: .4byte 0x00000844 -_080FCC38: .4byte 0x0000082c - thumb_func_end sub_80FCB54 - - thumb_func_start sub_80FCC3C -sub_80FCC3C: @ 80FCC3C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - mov r8, r1 - lsls r2, 24 - lsrs r5, r2, 24 - ldr r0, _080FCC90 @ =gUnknown_3005E10 - ldrb r0, [r0, 0x6] - cmp r0, 0x1 - bne _080FCC98 - movs r0, 0x1 - mov r9, r0 - ldr r6, _080FCC94 @ =gRfuLinkStatus - ldr r0, [r6] - lsls r4, r5, 5 - adds r0, r4 - ldrh r0, [r0, 0x18] - bl sub_80FA44C - cmp r0, 0 - beq _080FCC78 - ldr r1, [r6] - ldrb r0, [r1, 0x7] - asrs r0, r5 - mov r2, r9 - ands r0, r2 - cmp r0, 0 - bne _080FCCB0 -_080FCC78: - adds r0, r7, 0 - movs r1, 0 - movs r2, 0xD - bl memset - mov r0, r8 - movs r1, 0 - movs r2, 0x8 - bl memset - b _080FCCE4 - .align 2, 0 -_080FCC90: .4byte gUnknown_3005E10 -_080FCC94: .4byte gRfuLinkStatus -_080FCC98: - movs r0, 0 - mov r9, r0 - ldr r6, _080FCCCC @ =gRfuLinkStatus - ldr r0, [r6] - lsls r4, r5, 5 - adds r0, r4 - ldrh r0, [r0, 0x18] - bl sub_80FA44C - cmp r0, 0 - beq _080FCCD0 - ldr r1, [r6] -_080FCCB0: - adds r1, r4, r1 - adds r1, 0x1A - adds r0, r7, 0 - movs r2, 0xD - bl memcpy - ldr r1, [r6] - adds r1, r4, r1 - adds r1, 0x29 - mov r0, r8 - movs r2, 0x8 - bl memcpy - b _080FCCE4 - .align 2, 0 -_080FCCCC: .4byte gRfuLinkStatus -_080FCCD0: - adds r0, r7, 0 - movs r1, 0 - movs r2, 0xD - bl memset - mov r0, r8 - movs r1, 0 - movs r2, 0x8 - bl memset -_080FCCE4: - mov r0, r9 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FCC3C - - thumb_func_start sub_80FCCF4 -sub_80FCCF4: @ 80FCCF4 - push {r4-r7,lr} - adds r3, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - movs r7, 0 - ldr r6, _080FCD2C @ =gRfuLinkStatus - ldr r0, [r6] - lsrs r4, r2, 19 - adds r2, r0, r4 - ldrh r1, [r2, 0x18] - ldr r0, _080FCD30 @ =0x00007f7d - cmp r1, r0 - bne _080FCD34 - adds r1, r2, 0 - adds r1, 0x1A - adds r0, r3, 0 - movs r2, 0xD - bl memcpy - ldr r1, [r6] - adds r1, r4, r1 - adds r1, 0x29 - adds r0, r5, 0 - movs r2, 0x8 - bl memcpy - movs r7, 0x1 - b _080FCD48 - .align 2, 0 -_080FCD2C: .4byte gRfuLinkStatus -_080FCD30: .4byte 0x00007f7d -_080FCD34: - adds r0, r3, 0 - movs r1, 0 - movs r2, 0xD - bl memset - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x8 - bl memset -_080FCD48: - adds r0, r7, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FCCF4 - - thumb_func_start sub_80FCD50 -sub_80FCD50: @ 80FCD50 - push {r4,lr} - adds r4, r1, 0 - ldr r1, _080FCD6C @ =gUnknown_3005440 - movs r2, 0xD - bl memcpy - ldr r1, _080FCD70 @ =gUnknown_3005E00 - adds r0, r4, 0 - movs r2, 0x8 - bl memcpy - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FCD6C: .4byte gUnknown_3005440 -_080FCD70: .4byte gUnknown_3005E00 - thumb_func_end sub_80FCD50 - - thumb_func_start CreateWirelessStatusIndicatorSprite -CreateWirelessStatusIndicatorSprite: @ 80FCD74 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 24 - lsrs r2, r1, 24 - cmp r3, 0 - bne _080FCD8A - cmp r2, 0 - bne _080FCD8A - movs r3, 0xE7 - movs r2, 0x8 -_080FCD8A: - ldr r0, _080FCDCC @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FCDE4 - ldr r0, _080FCDD0 @ =gUnknown_843F284 - adds r1, r3, 0 - movs r3, 0 - bl CreateSprite - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080FCDD4 @ =gSprites - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - adds r4, r0 - ldr r0, _080FCDD8 @ =0x00001234 - strh r0, [r4, 0x3C] - ldr r0, _080FCDDC @ =gUnknown_843F274 - ldrh r0, [r0, 0x6] - bl GetSpriteTileStartByTag - strh r0, [r4, 0x3A] - adds r4, 0x3E - ldrb r0, [r4] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - ldr r0, _080FCDE0 @ =gUnknown_203ACE4 - strb r5, [r0] - b _080FCE2A - .align 2, 0 -_080FCDCC: .4byte gRfuLinkStatus -_080FCDD0: .4byte gUnknown_843F284 -_080FCDD4: .4byte gSprites -_080FCDD8: .4byte 0x00001234 -_080FCDDC: .4byte gUnknown_843F274 -_080FCDE0: .4byte gUnknown_203ACE4 -_080FCDE4: - ldr r0, _080FCE30 @ =gUnknown_843F284 - adds r1, r3, 0 - movs r3, 0 - bl CreateSprite - ldr r4, _080FCE34 @ =gUnknown_203ACE4 - strb r0, [r4] - ldr r5, _080FCE38 @ =gSprites - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080FCE3C @ =0x00001234 - strh r1, [r0, 0x3C] - ldr r0, _080FCE40 @ =gUnknown_843F274 - ldrh r0, [r0, 0x6] - bl GetSpriteTileStartByTag - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - strh r0, [r1, 0x3A] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080FCE2A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FCE30: .4byte gUnknown_843F284 -_080FCE34: .4byte gUnknown_203ACE4 -_080FCE38: .4byte gSprites -_080FCE3C: .4byte 0x00001234 -_080FCE40: .4byte gUnknown_843F274 - thumb_func_end CreateWirelessStatusIndicatorSprite - - thumb_func_start DestroyWirelessStatusIndicatorSprite -DestroyWirelessStatusIndicatorSprite: @ 80FCE44 - push {r4,lr} - ldr r4, _080FCE90 @ =gSprites - ldr r3, _080FCE94 @ =gUnknown_203ACE4 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r4 - movs r0, 0x3C - ldrsh r1, [r2, r0] - ldr r0, _080FCE98 @ =0x00001234 - cmp r1, r0 - bne _080FCE8A - movs r0, 0 - strh r0, [r2, 0x3C] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r3, _080FCE9C @ =gMain - movs r0, 0x84 - lsls r0, 3 - adds r3, r0 - ldr r0, _080FCEA0 @ =gDummyOamData - ldr r1, [r0] - ldr r2, [r0, 0x4] - str r1, [r3] - str r2, [r3, 0x4] - ldr r1, _080FCEA4 @ =0x070003e8 - movs r2, 0x4 - bl CpuSet -_080FCE8A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FCE90: .4byte gSprites -_080FCE94: .4byte gUnknown_203ACE4 -_080FCE98: .4byte 0x00001234 -_080FCE9C: .4byte gMain -_080FCEA0: .4byte gDummyOamData -_080FCEA4: .4byte 0x070003e8 - thumb_func_end DestroyWirelessStatusIndicatorSprite - - thumb_func_start LoadWirelessStatusIndicatorSpriteGfx -LoadWirelessStatusIndicatorSpriteGfx: @ 80FCEA8 - push {r4,lr} - ldr r4, _080FCED4 @ =gUnknown_843F274 - ldrh r0, [r4, 0x6] - bl GetSpriteTileStartByTag - lsls r0, 16 - ldr r1, _080FCED8 @ =0xffff0000 - cmp r0, r1 - bne _080FCEC0 - adds r0, r4, 0 - bl LoadCompressedSpriteSheet -_080FCEC0: - ldr r0, _080FCEDC @ =gUnknown_843F27C - bl LoadSpritePalette - ldr r1, _080FCEE0 @ =gUnknown_203ACE4 - movs r0, 0xFF - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FCED4: .4byte gUnknown_843F274 -_080FCED8: .4byte 0xffff0000 -_080FCEDC: .4byte gUnknown_843F27C -_080FCEE0: .4byte gUnknown_203ACE4 - thumb_func_end LoadWirelessStatusIndicatorSpriteGfx - - thumb_func_start sub_80FCEE4 -sub_80FCEE4: @ 80FCEE4 - push {r4,lr} - ldr r1, _080FCF04 @ =gRfuLinkStatus - ldr r0, [r1] - ldrb r2, [r0, 0x2] - movs r3, 0 - movs r4, 0x1 -_080FCEF0: - adds r0, r2, 0 - ands r0, r4 - cmp r0, 0 - beq _080FCF08 - ldr r0, [r1] - adds r0, 0xA - adds r0, r3 - ldrb r0, [r0] - b _080FCF16 - .align 2, 0 -_080FCF04: .4byte gRfuLinkStatus -_080FCF08: - lsrs r2, 1 - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3 - bls _080FCEF0 - movs r0, 0 -_080FCF16: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FCEE4 - - thumb_func_start sub_80FCF1C -sub_80FCF1C: @ 80FCF1C - push {lr} - adds r2, r0, 0 - movs r3, 0x32 - ldrsh r0, [r2, r3] - cmp r0, r1 - beq _080FCF30 - movs r0, 0 - strh r1, [r2, 0x32] - strh r0, [r2, 0x34] - strh r0, [r2, 0x36] -_080FCF30: - pop {r0} - bx r0 - thumb_func_end sub_80FCF1C - - thumb_func_start sub_80FCF34 -sub_80FCF34: @ 80FCF34 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _080FCF78 @ =gUnknown_203ACE4 - ldrb r0, [r1] - cmp r0, 0xFF - bne _080FCF44 - b _080FD106 -_080FCF44: - ldr r2, _080FCF7C @ =gSprites - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - movs r0, 0x3C - ldrsh r1, [r2, r0] - ldr r0, _080FCF80 @ =0x00001234 - cmp r1, r0 - beq _080FCF5C - b _080FD106 -_080FCF5C: - adds r6, r2, 0 - movs r5, 0xFF - movs r4, 0 - ldr r0, _080FCF84 @ =gRfuLinkStatus - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FCFB6 - adds r7, r6, 0 - adds r7, 0x28 - movs r1, 0x29 - adds r1, r6 - mov r8, r1 - b _080FCFA6 - .align 2, 0 -_080FCF78: .4byte gUnknown_203ACE4 -_080FCF7C: .4byte gSprites -_080FCF80: .4byte 0x00001234 -_080FCF84: .4byte gRfuLinkStatus -_080FCF88: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80FCADC - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bcc _080FCFA6 - adds r0, r4, 0 - bl sub_80FCADC - lsls r0, 24 - lsrs r5, r0, 24 -_080FCFA6: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r4, r0 - blt _080FCF88 - b _080FCFC8 -_080FCFB6: - bl sub_80FCEE4 - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, r6, 0 - adds r7, 0x28 - movs r2, 0x29 - adds r2, r6 - mov r8, r2 -_080FCFC8: - bl sub_80FC1B0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FCFD8 - movs r0, 0x4 - b _080FD006 -_080FCFD8: - cmp r5, 0x18 - bhi _080FCFE0 - movs r0, 0x3 - b _080FD006 -_080FCFE0: - adds r0, r5, 0 - subs r0, 0x19 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x65 - bhi _080FCFF0 - movs r0, 0x2 - b _080FD006 -_080FCFF0: - adds r0, r5, 0 - subs r0, 0x7F - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x65 - bhi _080FD000 - movs r0, 0x1 - b _080FD006 -_080FD000: - cmp r5, 0xE4 - bls _080FD008 - movs r0, 0 -_080FD006: - strh r0, [r6, 0x2E] -_080FD008: - movs r3, 0x2E - ldrsh r1, [r6, r3] - movs r2, 0x30 - ldrsh r0, [r6, r2] - cmp r1, r0 - beq _080FD01E - adds r0, r6, 0 - bl sub_80FCF1C - ldrh r0, [r6, 0x2E] - strh r0, [r6, 0x30] -_080FD01E: - movs r0, 0x32 - ldrsh r1, [r6, r0] - ldr r2, [r6, 0x8] - lsls r1, 2 - adds r1, r2 - movs r3, 0x36 - ldrsh r0, [r6, r3] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r0, 10 - lsrs r0, 26 - movs r3, 0x34 - ldrsh r1, [r6, r3] - cmp r0, r1 - bge _080FD06C - ldrh r0, [r6, 0x36] - adds r0, 0x1 - movs r3, 0 - strh r0, [r6, 0x36] - strh r3, [r6, 0x34] - movs r1, 0x32 - ldrsh r0, [r6, r1] - lsls r0, 2 - adds r0, r2 - movs r2, 0x36 - ldrsh r1, [r6, r2] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - movs r0, 0 - ldrsh r1, [r1, r0] - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - bne _080FD072 - strh r3, [r6, 0x36] - b _080FD072 -_080FD06C: - ldrh r0, [r6, 0x34] - adds r0, 0x1 - strh r0, [r6, 0x34] -_080FD072: - ldr r4, _080FD110 @ =gMain - movs r1, 0x84 - lsls r1, 3 - adds r0, r4, r1 - ldr r1, _080FD114 @ =gUnknown_843F204 - ldr r2, [r1, 0x4] - ldr r1, [r1] - str r1, [r0] - str r2, [r0, 0x4] - movs r3, 0x20 - ldrsh r2, [r6, r3] - movs r1, 0 - ldrsb r1, [r7, r1] - adds r2, r1 - ldr r1, _080FD118 @ =0x00000422 - adds r5, r4, r1 - ldr r3, _080FD11C @ =0x000001ff - adds r1, r3, 0 - ands r2, r1 - ldrh r3, [r5] - ldr r1, _080FD120 @ =0xfffffe00 - ands r1, r3 - orrs r1, r2 - strh r1, [r5] - ldrh r1, [r6, 0x22] - mov r2, r8 - ldrb r2, [r2] - adds r1, r2 - strb r1, [r0] - ldrb r2, [r6, 0x5] - ldr r3, _080FD124 @ =0x00000425 - adds r5, r4, r3 - lsrs r2, 4 - lsls r2, 4 - ldrb r3, [r5] - movs r1, 0xF - ands r1, r3 - orrs r1, r2 - strb r1, [r5] - movs r1, 0x32 - ldrsh r2, [r6, r1] - ldr r1, [r6, 0x8] - lsls r2, 2 - adds r2, r1 - movs r3, 0x36 - ldrsh r1, [r6, r3] - ldr r2, [r2] - lsls r1, 2 - adds r1, r2 - ldrh r2, [r1] - ldrh r6, [r6, 0x3A] - adds r2, r6 - ldr r1, _080FD128 @ =0x00000424 - adds r4, r1 - ldr r3, _080FD12C @ =0x000003ff - adds r1, r3, 0 - ands r2, r1 - ldrh r3, [r4] - ldr r1, _080FD130 @ =0xfffffc00 - ands r1, r3 - orrs r1, r2 - strh r1, [r4] - ldr r1, _080FD134 @ =0x070003e8 - movs r2, 0x4 - bl CpuSet - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FD106 - bl DestroyWirelessStatusIndicatorSprite -_080FD106: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FD110: .4byte gMain -_080FD114: .4byte gUnknown_843F204 -_080FD118: .4byte 0x00000422 -_080FD11C: .4byte 0x000001ff -_080FD120: .4byte 0xfffffe00 -_080FD124: .4byte 0x00000425 -_080FD128: .4byte 0x00000424 -_080FD12C: .4byte 0x000003ff -_080FD130: .4byte 0xfffffc00 -_080FD134: .4byte 0x070003e8 - thumb_func_end sub_80FCF34 - - thumb_func_start sub_80FD138 -sub_80FD138: @ 80FD138 - push {r4,r5,lr} - adds r4, r0, 0 - str r1, [r4] - movs r3, 0 - ldrb r0, [r2] - cmp r0, 0xFF - beq _080FD15C - adds r5, r4, 0x4 -_080FD148: - adds r1, r5, r3 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x6 - bgt _080FD15C - ldrb r0, [r2] - cmp r0, 0xFF - bne _080FD148 -_080FD15C: - adds r0, r4, 0x4 - adds r0, r3 - movs r1, 0xFF - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FD138 - - thumb_func_start sub_80FD16C -sub_80FD16C: @ 80FD16C - push {lr} - movs r2, 0 - movs r1, 0x7 -_080FD172: - strb r2, [r0] - adds r0, 0x1 - subs r1, 0x1 - cmp r1, 0 - bge _080FD172 - pop {r0} - bx r0 - thumb_func_end sub_80FD16C - - thumb_func_start sub_80FD180 -sub_80FD180: @ 80FD180 - push {lr} - adds r1, r0, 0 - movs r2, 0 -_080FD186: - ldrb r0, [r1] - adds r1, 0x1 - cmp r0, 0 - beq _080FD192 - movs r0, 0 - b _080FD19A -_080FD192: - adds r2, 0x1 - cmp r2, 0x7 - ble _080FD186 - movs r0, 0x1 -_080FD19A: - pop {r1} - bx r1 - thumb_func_end sub_80FD180 - - thumb_func_start sub_80FD1A0 -sub_80FD1A0: @ 80FD1A0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r0, _080FD1C4 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _080FD1B6 - b _080FD318 -_080FD1B6: - movs r0, 0xF0 - bl AllocZeroed - str r0, [sp, 0x14] - movs r4, 0 - b _080FD22C - .align 2, 0 -_080FD1C4: .4byte gWirelessCommType -_080FD1C8: - lsls r2, r4, 2 - mov r0, sp - adds r1, r0, r2 - movs r0, 0x1 - negs r0, r0 - str r0, [r1] - movs r5, 0 - mov r8, r2 - lsls r0, r4, 3 - adds r1, r4, 0x1 - mov r9, r1 - subs r0, r4 - lsls r0, 2 - str r0, [sp, 0x1C] - ldr r2, _080FD24C @ =gLinkPlayers + 8 - mov r10, r2 - ldr r6, _080FD250 @ =0x00003ba8 - movs r4, 0 - mov r0, r10 - subs r0, 0x4 - ldr r7, [sp, 0x1C] - adds r3, r7, r0 -_080FD1F4: - ldrh r1, [r3] - ldr r0, _080FD254 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r7, _080FD250 @ =0x00003ba8 - adds r0, r2, r7 - adds r0, r4 - ldr r0, [r0] - cmp r1, r0 - bne _080FD220 - adds r1, r2, r6 - adds r1, 0x4 - ldr r0, [sp, 0x1C] - add r0, r10 - str r3, [sp, 0x18] - bl StringCompare - ldr r3, [sp, 0x18] - cmp r0, 0 - bne _080FD220 - mov r0, sp - add r0, r8 - str r5, [r0] -_080FD220: - adds r6, 0xC - adds r4, 0xC - adds r5, 0x1 - cmp r5, 0x13 - ble _080FD1F4 - mov r4, r9 -_080FD22C: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _080FD1C8 - movs r0, 0 - mov r8, r0 - movs r4, 0 - ldr r1, _080FD254 @ =gSaveBlock1Ptr - mov r9, r1 - mov r7, sp - movs r5, 0 - ldr r6, [sp, 0x14] - b _080FD2A4 - .align 2, 0 -_080FD24C: .4byte gLinkPlayers + 8 -_080FD250: .4byte 0x00003ba8 -_080FD254: .4byte gSaveBlock1Ptr -_080FD258: - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - beq _080FD29E - ldr r2, _080FD328 @ =gLinkPlayers - adds r0, r5, r2 - ldrh r0, [r0, 0x1A] - cmp r0, 0x1 - beq _080FD29E - adds r0, r2, 0x4 - adds r0, r5, r0 - ldrh r1, [r0] - adds r2, 0x8 - adds r2, r5, r2 - adds r0, r6, 0 - bl sub_80FD138 - ldr r1, [r7] - cmp r1, 0 - blt _080FD298 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - mov r2, r9 - ldr r1, [r2] - adds r0, r1 - ldr r1, _080FD32C @ =0x00003bac - adds r0, r1 - bl sub_80FD16C -_080FD298: - adds r6, 0xC - movs r2, 0x1 - add r8, r2 -_080FD29E: - adds r7, 0x4 - adds r5, 0x1C - adds r4, 0x1 -_080FD2A4: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _080FD258 - movs r4, 0 - ldr r7, _080FD330 @ =gSaveBlock1Ptr - mov r9, r7 - ldr r6, _080FD334 @ =0x00003ba8 - movs r7, 0 - mov r1, r8 - lsls r0, r1, 1 - add r0, r8 - lsls r0, 2 - ldr r2, [sp, 0x14] - adds r5, r0, r2 -_080FD2C6: - mov r1, r9 - ldr r0, [r1] - adds r0, r6 - adds r0, 0x4 - bl sub_80FD180 - cmp r0, 0 - bne _080FD2F8 - mov r0, r9 - ldr r2, [r0] - ldr r1, _080FD334 @ =0x00003ba8 - adds r0, r2, r1 - adds r0, r7 - ldr r1, [r0] - adds r2, r6 - adds r2, 0x4 - adds r0, r5, 0 - bl sub_80FD138 - adds r5, 0xC - movs r2, 0x1 - add r8, r2 - mov r0, r8 - cmp r0, 0x13 - bgt _080FD302 -_080FD2F8: - adds r6, 0xC - adds r7, 0xC - adds r4, 0x1 - cmp r4, 0x13 - ble _080FD2C6 -_080FD302: - ldr r0, _080FD330 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _080FD334 @ =0x00003ba8 - adds r0, r1 - ldr r1, [sp, 0x14] - movs r2, 0xF0 - bl memcpy - ldr r0, [sp, 0x14] - bl Free -_080FD318: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FD328: .4byte gLinkPlayers -_080FD32C: .4byte 0x00003bac -_080FD330: .4byte gSaveBlock1Ptr -_080FD334: .4byte 0x00003ba8 - thumb_func_end sub_80FD1A0 - - thumb_func_start sub_80FD338 -sub_80FD338: @ 80FD338 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - movs r7, 0 - ldr r6, _080FD374 @ =gSaveBlock1Ptr - ldr r4, _080FD378 @ =0x00003ba8 - movs r5, 0 -_080FD350: - ldr r0, [r6] - adds r0, r4 - adds r0, 0x4 - mov r1, r9 - movs r2, 0x7 - bl StringCompareN - cmp r0, 0 - bne _080FD37C - ldr r0, [r6] - ldr r1, _080FD378 @ =0x00003ba8 - adds r0, r1 - adds r0, r5 - ldr r0, [r0] - cmp r0, r8 - bne _080FD37C - movs r0, 0x1 - b _080FD396 - .align 2, 0 -_080FD374: .4byte gSaveBlock1Ptr -_080FD378: .4byte 0x00003ba8 -_080FD37C: - ldr r0, [r6] - adds r0, r4 - adds r0, 0x4 - bl sub_80FD180 - cmp r0, 0 - bne _080FD394 - adds r4, 0xC - adds r5, 0xC - adds r7, 0x1 - cmp r7, 0x13 - ble _080FD350 -_080FD394: - movs r0, 0 -_080FD396: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FD338 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 3dbea1b1f..2316f77b1 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -5722,7 +5722,7 @@ sub_8057910: @ 8057910 lsrs r0, 24 cmp r0, 0x3C bls _0805792E - bl sub_80FA190 + bl LinkRfu_FatalError _0805792E: pop {r0} bx r0 @@ -7124,7 +7124,7 @@ _08058350: .4byte gWirelessCommType _08058354: .4byte gLink _08058358: .4byte 0x00000339 _0805835C: - ldr r0, _08058368 @ =gUnknown_3005450 + ldr r0, _08058368 @ =Rfu ldr r1, _0805836C @ =0x000008d2 adds r0, r1 ldrb r0, [r0] @@ -7132,7 +7132,7 @@ _08058364: pop {r1} bx r1 .align 2, 0 -_08058368: .4byte gUnknown_3005450 +_08058368: .4byte Rfu _0805836C: .4byte 0x000008d2 thumb_func_end sub_805833C diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s index 38e233d6c..5e6327c81 100644 --- a/asm/pokemon_jump_2.s +++ b/asm/pokemon_jump_2.s @@ -3930,7 +3930,7 @@ _081497FA: sub_8149804: @ 8149804 push {lr} movs r2, 0 - ldr r1, _08149828 @ =gUnknown_3005450 + ldr r1, _08149828 @ =Rfu ldr r3, _0814982C @ =0x0000069e adds r0, r1, r3 ldrb r0, [r0] @@ -3947,7 +3947,7 @@ _08149820: pop {r1} bx r1 .align 2, 0 -_08149828: .4byte gUnknown_3005450 +_08149828: .4byte Rfu _0814982C: .4byte 0x0000069e _08149830: .4byte 0x000008d2 thumb_func_end sub_8149804 diff --git a/asm/link_rfu_3.s b/asm/union_room.s index 1bd5420fa..2e681d8ca 100644 --- a/asm/link_rfu_3.s +++ b/asm/union_room.s @@ -3544,7 +3544,7 @@ _081175E4: .4byte _0811761C .4byte _0811761C _0811761C: - bl sub_80FD1A0 + bl RecordMixTrainerNames _08117620: ldr r0, _08117638 @ =gUnknown_203B058 ldrb r0, [r0] @@ -11144,2060 +11144,4 @@ _0811B4F0: _0811B500: .4byte gUnknown_8459580 thumb_func_end sub_811B31C - thumb_func_start is_walking_or_running -is_walking_or_running: @ 811B504 - push {lr} - ldr r0, _0811B518 @ =gPlayerAvatar - ldrb r0, [r0, 0x3] - cmp r0, 0x2 - beq _0811B512 - cmp r0, 0 - bne _0811B51C -_0811B512: - movs r0, 0x1 - b _0811B51E - .align 2, 0 -_0811B518: .4byte gPlayerAvatar -_0811B51C: - movs r0, 0 -_0811B51E: - pop {r1} - bx r1 - thumb_func_end is_walking_or_running - - thumb_func_start sub_811B524 -sub_811B524: @ 811B524 - ldr r3, _0811B538 @ =gUnknown_84570D8 - movs r2, 0x7 - ands r2, r1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - adds r2, r1 - adds r2, r3 - ldrb r0, [r2] - bx lr - .align 2, 0 -_0811B538: .4byte gUnknown_84570D8 - thumb_func_end sub_811B524 - - thumb_func_start sub_811B53C -sub_811B53C: @ 811B53C - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r4, _0811B584 @ =gUnknown_84570EC - mov r8, r4 - lsls r0, 2 - adds r4, r0, r4 - movs r6, 0 - ldrsh r5, [r4, r6] - ldr r6, _0811B588 @ =gUnknown_845710C - lsls r1, 1 - adds r4, r1, r6 - ldrb r4, [r4] - lsls r4, 24 - asrs r4, 24 - adds r5, r4 - adds r5, 0x7 - str r5, [r2] - movs r2, 0x2 - add r8, r2 - add r0, r8 - movs r4, 0 - ldrsh r0, [r0, r4] - adds r6, 0x1 - adds r1, r6 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - adds r0, r1 - adds r0, 0x7 - str r0, [r3] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811B584: .4byte gUnknown_84570EC -_0811B588: .4byte gUnknown_845710C - thumb_func_end sub_811B53C - - thumb_func_start sub_811B58C -sub_811B58C: @ 811B58C - push {r4-r7,lr} - mov r12, r3 - ldr r7, _0811B5CC @ =gUnknown_84570EC - lsls r5, r0, 2 - adds r0, r5, r7 - movs r4, 0 - ldrsh r3, [r0, r4] - ldr r6, _0811B5D0 @ =gUnknown_845710C - lsls r4, r1, 1 - adds r0, r4, r6 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r3, r0 - adds r3, 0x7 - cmp r3, r2 - bne _0811B5D4 - adds r0, r7, 0x2 - adds r0, r5, r0 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r6, 0x1 - adds r0, r4, r0 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r1, r0 - adds r1, 0x7 - cmp r1, r12 - bne _0811B5D4 - movs r0, 0x1 - b _0811B5D6 - .align 2, 0 -_0811B5CC: .4byte gUnknown_84570EC -_0811B5D0: .4byte gUnknown_845710C -_0811B5D4: - movs r0, 0 -_0811B5D6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811B58C - - thumb_func_start sub_811B5DC -sub_811B5DC: @ 811B5DC - push {lr} - adds r0, 0x63 - lsls r0, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_811B5DC - - thumb_func_start sub_811B5F0 -sub_811B5F0: @ 811B5F0 - push {lr} - adds r0, 0x63 - lsls r0, 16 - lsrs r0, 16 - bl FlagSet - pop {r0} - bx r0 - thumb_func_end sub_811B5F0 - - thumb_func_start sub_811B600 -sub_811B600: @ 811B600 - push {lr} - adds r0, 0x63 - lsls r0, 16 - lsrs r0, 16 - bl FlagClear - pop {r0} - bx r0 - thumb_func_end sub_811B600 - - thumb_func_start sub_811B610 -sub_811B610: @ 811B610 - push {lr} - ldr r2, _0811B628 @ =0x00004010 - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - bl VarSet - pop {r0} - bx r0 - .align 2, 0 -_0811B628: .4byte 0x00004010 - thumb_func_end sub_811B610 - - thumb_func_start sub_811B62C -sub_811B62C: @ 811B62C - push {lr} - ldr r1, _0811B644 @ =gUnknown_8457120 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0811B648 @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl show_sprite - pop {r0} - bx r0 - .align 2, 0 -_0811B644: .4byte gUnknown_8457120 -_0811B648: .4byte gSaveBlock1Ptr - thumb_func_end sub_811B62C - - thumb_func_start sub_811B64C -sub_811B64C: @ 811B64C - push {lr} - ldr r1, _0811B664 @ =gUnknown_8457120 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0811B668 @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl RemoveObjectEventByLocalIdAndMap - pop {r0} - bx r0 - .align 2, 0 -_0811B664: .4byte gUnknown_8457120 -_0811B668: .4byte gSaveBlock1Ptr - thumb_func_end sub_811B64C - - thumb_func_start sub_811B66C -sub_811B66C: @ 811B66C - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r1, 0 - ldr r1, _0811B6B8 @ =gUnknown_8457120 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0811B6BC @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0811B6D0 - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0811B6C0 @ =gObjectEvents - adds r4, r0, r1 - adds r0, r4, 0 - bl ObjectEventIsMovementOverridden - lsls r0, 24 - cmp r0, 0 - bne _0811B6D0 - ldrb r1, [r5] - adds r0, r4, 0 - bl ObjectEventSetHeldMovement - lsls r0, 24 - cmp r0, 0 - bne _0811B6C4 - movs r0, 0x1 - b _0811B6D2 - .align 2, 0 -_0811B6B8: .4byte gUnknown_8457120 -_0811B6BC: .4byte gSaveBlock1Ptr -_0811B6C0: .4byte gObjectEvents -_0811B6C4: - ldr r0, _0811B6DC @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" - ldr r1, _0811B6E0 @ =0x00000183 - ldr r2, _0811B6E4 @ =gUnknown_8457174 "0" - movs r3, 0x1 - bl AGBAssert -_0811B6D0: - movs r0, 0 -_0811B6D2: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811B6DC: .4byte gUnknown_8457138 -_0811B6E0: .4byte 0x00000183 -_0811B6E4: .4byte gUnknown_8457174 - thumb_func_end sub_811B66C - - thumb_func_start sub_811B6E8 -sub_811B6E8: @ 811B6E8 - push {r4,lr} - sub sp, 0x4 - ldr r1, _0811B724 @ =gUnknown_8457120 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0811B728 @ =gSaveBlock1Ptr - ldr r2, [r1] - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - mov r3, sp - bl TryGetObjectEventIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0811B748 - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0811B72C @ =gObjectEvents - adds r4, r0, r1 - adds r0, r4, 0 - bl ObjectEventClearHeldMovementIfFinished - lsls r0, 24 - cmp r0, 0 - bne _0811B730 - movs r0, 0 - b _0811B74A - .align 2, 0 -_0811B724: .4byte gUnknown_8457120 -_0811B728: .4byte gSaveBlock1Ptr -_0811B72C: .4byte gObjectEvents -_0811B730: - bl ScriptContext2_IsEnabled - lsls r0, 24 - cmp r0, 0 - bne _0811B742 - adds r0, r4, 0 - bl npc_sync_anim_pause_bits - b _0811B748 -_0811B742: - adds r0, r4, 0 - bl FreezeObjectEvent -_0811B748: - movs r0, 0x1 -_0811B74A: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811B6E8 - - thumb_func_start sub_811B754 -sub_811B754: @ 811B754 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0811B798 @ =gUnknown_203B088 - movs r1, 0 - str r1, [r0] - ldr r0, _0811B79C @ =gUnknown_203B084 - str r4, [r0] - cmp r4, 0 - bne _0811B774 - ldr r0, _0811B7A0 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" - movs r1, 0xDD - lsls r1, 1 - ldr r2, _0811B7A4 @ =gUnknown_8457178 "UnionObjWork != NULL" - movs r3, 0x1 - bl AGBAssert -_0811B774: - movs r1, 0 - adds r0, r4, 0 - movs r2, 0x7 -_0811B77A: - strb r1, [r0] - strb r1, [r0, 0x1] - strb r1, [r0, 0x2] - strb r1, [r0, 0x3] - adds r0, 0x4 - subs r2, 0x1 - cmp r2, 0 - bge _0811B77A - bl sub_811BA18 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B798: .4byte gUnknown_203B088 -_0811B79C: .4byte gUnknown_203B084 -_0811B7A0: .4byte gUnknown_8457138 -_0811B7A4: .4byte gUnknown_8457178 - thumb_func_end sub_811B754 - - thumb_func_start sub_811B7A8 -sub_811B7A8: @ 811B7A8 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - ldrsb r0, [r5, r0] - cmp r0, 0 - beq _0811B7BC - cmp r0, 0x1 - beq _0811B7DC - b _0811B7FA -_0811B7BC: - ldr r1, _0811B7D8 @ =gUnknown_845718D - adds r0, r4, 0 - bl sub_811B66C - cmp r0, 0x1 - bne _0811B7FA - adds r0, r4, 0 - bl sub_811B5F0 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _0811B7FA - .align 2, 0 -_0811B7D8: .4byte gUnknown_845718D -_0811B7DC: - adds r0, r4, 0 - bl sub_811B6E8 - cmp r0, 0 - beq _0811B7FA - adds r0, r4, 0 - bl sub_811B64C - adds r0, r4, 0 - bl sub_811B5F0 - movs r0, 0 - strb r0, [r5] - movs r0, 0x1 - b _0811B7FC -_0811B7FA: - movs r0, 0 -_0811B7FC: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_811B7A8 - - thumb_func_start sub_811B804 -sub_811B804: @ 811B804 - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r1, 0 - adds r7, r2, 0 - movs r0, 0 - ldrsb r0, [r6, r0] - cmp r0, 0x2 - beq _0811B8A0 - cmp r0, 0x2 - bgt _0811B820 - cmp r0, 0 - beq _0811B826 - b _0811B8B2 -_0811B820: - cmp r0, 0x3 - beq _0811B888 - b _0811B8B2 -_0811B826: - bl is_walking_or_running - cmp r0, 0 - beq _0811B8B2 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - ldrsh r3, [r4, r0] - adds r0, r5, 0 - movs r1, 0 - bl sub_811B58C - cmp r0, 0x1 - beq _0811B8B2 - mov r0, sp - adds r1, r4, 0 - bl plaer_get_pos_including_state_based_drift - mov r0, sp - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - ldrsh r3, [r4, r0] - adds r0, r5, 0 - movs r1, 0 - bl sub_811B58C - cmp r0, 0x1 - beq _0811B8B2 - ldrb r1, [r7, 0x1] - adds r0, r5, 0 - bl sub_811B610 - adds r0, r5, 0 - bl sub_811B62C - adds r0, r5, 0 - bl sub_811B600 - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] -_0811B888: - ldr r1, _0811B89C @ =gUnknown_845718F - adds r0, r5, 0 - bl sub_811B66C - cmp r0, 0x1 - bne _0811B8B2 - ldrb r0, [r6] - adds r0, 0x1 - strb r0, [r6] - b _0811B8B2 - .align 2, 0 -_0811B89C: .4byte gUnknown_845718F -_0811B8A0: - adds r0, r5, 0 - bl sub_811B6E8 - cmp r0, 0 - beq _0811B8B2 - movs r0, 0 - strb r0, [r6] - movs r0, 0x1 - b _0811B8B4 -_0811B8B2: - movs r0, 0 -_0811B8B4: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811B804 - - thumb_func_start sub_811B8BC -sub_811B8BC: @ 811B8BC - push {r4-r6,lr} - adds r5, r1, 0 - adds r6, r2, 0 - ldr r1, _0811B8F4 @ =gUnknown_203B084 - lsls r0, 2 - ldr r1, [r1] - adds r4, r1, r0 - cmp r1, 0 - bne _0811B8DA - ldr r0, _0811B8F8 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" - ldr r1, _0811B8FC @ =0x00000231 - ldr r2, _0811B900 @ =gUnknown_8457178 "UnionObjWork != NULL" - movs r3, 0x1 - bl AGBAssert -_0811B8DA: - movs r0, 0x1 - strb r0, [r4, 0x3] - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_811B524 - strb r0, [r4, 0x1] - ldrb r0, [r4] - cmp r0, 0 - beq _0811B904 - movs r0, 0 - b _0811B906 - .align 2, 0 -_0811B8F4: .4byte gUnknown_203B084 -_0811B8F8: .4byte gUnknown_8457138 -_0811B8FC: .4byte 0x00000231 -_0811B900: .4byte gUnknown_8457178 -_0811B904: - movs r0, 0x1 -_0811B906: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_811B8BC - - thumb_func_start sub_811B90C -sub_811B90C: @ 811B90C - push {r4,lr} - ldr r1, _0811B934 @ =gUnknown_203B084 - lsls r0, 2 - ldr r1, [r1] - adds r4, r1, r0 - cmp r1, 0 - bne _0811B926 - ldr r0, _0811B938 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" - ldr r1, _0811B93C @ =0x00000241 - ldr r2, _0811B940 @ =gUnknown_8457178 "UnionObjWork != NULL" - movs r3, 0x1 - bl AGBAssert -_0811B926: - movs r0, 0x2 - strb r0, [r4, 0x3] - ldrb r0, [r4] - cmp r0, 0x1 - beq _0811B944 - movs r0, 0 - b _0811B946 - .align 2, 0 -_0811B934: .4byte gUnknown_203B084 -_0811B938: .4byte gUnknown_8457138 -_0811B93C: .4byte 0x00000241 -_0811B940: .4byte gUnknown_8457178 -_0811B944: - movs r0, 0x1 -_0811B946: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811B90C - - thumb_func_start sub_811B94C -sub_811B94C: @ 811B94C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r4] - cmp r1, 0x1 - beq _0811B9AE - cmp r1, 0x1 - bgt _0811B962 - cmp r1, 0 - beq _0811B96C - b _0811B9CE -_0811B962: - cmp r1, 0x2 - beq _0811B978 - cmp r1, 0x3 - beq _0811B9BC - b _0811B9CE -_0811B96C: - ldrb r0, [r4, 0x3] - cmp r0, 0x1 - bne _0811B9CE - movs r0, 0x2 - strb r0, [r4] - strb r1, [r4, 0x2] -_0811B978: - adds r0, r5, 0 - movs r1, 0 - bl sub_811BBC8 - adds r1, r0, 0 - cmp r1, 0 - bne _0811B99E - ldrb r0, [r4, 0x3] - cmp r0, 0x2 - bne _0811B99E - strb r1, [r4] - strb r1, [r4, 0x2] - adds r0, r5, 0 - bl sub_811B64C - adds r0, r5, 0 - bl sub_811B5F0 - b _0811B9CE -_0811B99E: - adds r0, r4, 0x2 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_811B804 - cmp r0, 0x1 - bne _0811B9CE - b _0811B9CC -_0811B9AE: - ldrb r0, [r4, 0x3] - cmp r0, 0x2 - bne _0811B9CE - movs r1, 0 - movs r0, 0x3 - strb r0, [r4] - strb r1, [r4, 0x2] -_0811B9BC: - adds r0, r4, 0x2 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_811B7A8 - cmp r0, 0x1 - bne _0811B9CE - movs r0, 0 -_0811B9CC: - strb r0, [r4] -_0811B9CE: - movs r0, 0 - strb r0, [r4, 0x3] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_811B94C - - thumb_func_start sub_811B9D8 -sub_811B9D8: @ 811B9D8 - push {r4,r5,lr} - ldr r5, _0811BA08 @ =gUnknown_203B084 - ldr r0, [r5] - cmp r0, 0 - bne _0811B9EE - ldr r0, _0811BA0C @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" - ldr r1, _0811BA10 @ =0x00000283 - ldr r2, _0811BA14 @ =gUnknown_8457178 "UnionObjWork != NULL" - movs r3, 0x1 - bl AGBAssert -_0811B9EE: - movs r4, 0 -_0811B9F0: - lsls r0, r4, 2 - ldr r1, [r5] - adds r1, r0 - adds r0, r4, 0 - bl sub_811B94C - adds r4, 0x1 - cmp r4, 0x7 - ble _0811B9F0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811BA08: .4byte gUnknown_203B084 -_0811BA0C: .4byte gUnknown_8457138 -_0811BA10: .4byte 0x00000283 -_0811BA14: .4byte gUnknown_8457178 - thumb_func_end sub_811B9D8 - - thumb_func_start sub_811BA18 -sub_811BA18: @ 811BA18 - push {r4,lr} - ldr r4, _0811BA38 @ =sub_811B9D8 - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0811BA3C - adds r0, r4, 0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - b _0811BA4A - .align 2, 0 -_0811BA38: .4byte sub_811B9D8 -_0811BA3C: - ldr r0, _0811BA50 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" - ldr r1, _0811BA54 @ =0x0000028f - ldr r2, _0811BA58 @ =gUnknown_8457174 "0" - movs r3, 0x1 - bl AGBAssert - movs r0, 0x10 -_0811BA4A: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811BA50: .4byte gUnknown_8457138 -_0811BA54: .4byte 0x0000028f -_0811BA58: .4byte gUnknown_8457174 - thumb_func_end sub_811BA18 - - thumb_func_start sub_811BA5C -sub_811BA5C: @ 811BA5C - push {lr} - ldr r0, _0811BA74 @ =sub_811B9D8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - bhi _0811BA70 - bl DestroyTask -_0811BA70: - pop {r0} - bx r0 - .align 2, 0 -_0811BA74: .4byte sub_811B9D8 - thumb_func_end sub_811BA5C - - thumb_func_start sub_811BA78 -sub_811BA78: @ 811BA78 - push {r4,lr} - movs r4, 0 -_0811BA7C: - adds r0, r4, 0 - bl sub_811B5DC - cmp r0, 0 - bne _0811BA92 - adds r0, r4, 0 - bl sub_811B64C - adds r0, r4, 0 - bl sub_811B5F0 -_0811BA92: - adds r4, 0x1 - cmp r4, 0x7 - ble _0811BA7C - ldr r1, _0811BAA8 @ =gUnknown_203B084 - movs r0, 0 - str r0, [r1] - bl sub_811BA5C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811BAA8: .4byte gUnknown_203B084 - thumb_func_end sub_811BA78 - - thumb_func_start sub_811BAAC -sub_811BAAC: @ 811BAAC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp, 0x8] - mov r9, r1 - movs r7, 0 - mov r0, r9 - lsls r0, 2 - mov r8, r0 - ldr r0, _0811BB38 @ =gUnknown_84570EC - mov r2, r8 - adds r1, r2, r0 - ldrh r1, [r1] - mov r2, sp - strh r1, [r2, 0xC] - adds r0, 0x2 - add r0, r8 - ldrh r0, [r0] - mov r10, r0 - ldr r6, _0811BB3C @ =gUnknown_845710C -_0811BADA: - mov r5, r8 - add r5, r9 - adds r5, r7 - adds r4, r5, 0 - subs r4, 0x38 - lsls r4, 24 - lsrs r4, 24 - movs r2, 0 - ldrsb r2, [r6, r2] - mov r0, sp - ldrh r0, [r0, 0xC] - adds r2, r0, r2 - lsls r2, 16 - asrs r2, 16 - movs r3, 0x1 - ldrsb r3, [r6, r3] - add r3, r10 - lsls r3, 16 - asrs r3, 16 - movs r0, 0x3 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0x19 - adds r1, r4, 0 - bl sprite_new - ldr r1, [sp, 0x8] - adds r5, r1, r5 - strb r0, [r5] - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8069124 - adds r6, 0x2 - adds r7, 0x1 - cmp r7, 0x4 - ble _0811BADA - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811BB38: .4byte gUnknown_84570EC -_0811BB3C: .4byte gUnknown_845710C - thumb_func_end sub_811BAAC - - thumb_func_start sub_811BB40 -sub_811BB40: @ 811BB40 - push {r4-r6,lr} - adds r5, r0, 0 - movs r4, 0 - ldr r6, _0811BB64 @ =gSprites -_0811BB48: - adds r0, r5, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - adds r4, 0x1 - cmp r4, 0x27 - ble _0811BB48 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811BB64: .4byte gSprites - thumb_func_end sub_811BB40 - - thumb_func_start sub_811BB68 -sub_811BB68: @ 811BB68 - push {r4-r7,lr} - sub sp, 0x8 - movs r5, 0 - add r7, sp, 0x4 -_0811BB70: - movs r4, 0 - adds r6, r5, 0x1 -_0811BB74: - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, sp - adds r3, r7, 0 - bl sub_811B53C - ldr r0, [sp] - ldr r1, [sp, 0x4] - movs r2, 0 - bl sub_8059024 - adds r4, 0x1 - cmp r4, 0x4 - ble _0811BB74 - adds r5, r6, 0 - cmp r5, 0x7 - ble _0811BB70 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_811BB68 - - thumb_func_start sub_811BBA0 -sub_811BBA0: @ 811BBA0 - push {lr} - adds r1, r0, 0 - cmp r1, 0 - beq _0811BBB4 - ldr r0, _0811BBB0 @ =gUnknown_845711B - adds r0, r1, r0 - ldrb r0, [r0] - b _0811BBC4 - .align 2, 0 -_0811BBB0: .4byte gUnknown_845711B -_0811BBB4: - ldrb r1, [r2, 0xA] - movs r0, 0x7F - ands r0, r1 - cmp r0, 0x45 - beq _0811BBC2 - movs r0, 0x4 - b _0811BBC4 -_0811BBC2: - movs r0, 0x1 -_0811BBC4: - pop {r1} - bx r1 - thumb_func_end sub_811BBA0 - - thumb_func_start sub_811BBC8 -sub_811BBC8: @ 811BBC8 - push {lr} - adds r2, r0, 0 - lsls r0, r2, 2 - adds r0, r2 - adds r0, r1 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - bl sub_806916C - pop {r1} - bx r1 - thumb_func_end sub_811BBC8 - - thumb_func_start sub_811BBE0 -sub_811BBE0: @ 811BBE0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - adds r5, r0, 0 - adds r6, r1, 0 - mov r9, r3 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r0, r5, 2 - adds r0, r5 - adds r7, r0, r6 - adds r0, r5, 0 - bl sub_811BBC8 - cmp r0, 0x1 - bne _0811BC1E - adds r4, r7, 0 - subs r4, 0x38 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl sub_8069124 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80691A4 -_0811BC1E: - adds r0, r7, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - mov r1, r8 - bl sub_8069094 - adds r0, r6, 0 - adds r1, r5, 0 - mov r2, r9 - bl sub_811BBA0 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_811C008 - add r3, sp, 0x4 - adds r0, r5, 0 - adds r1, r6, 0 - mov r2, sp - bl sub_811B53C - ldr r0, [sp] - ldr r1, [sp, 0x4] - movs r2, 0x1 - bl sub_8059024 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_811BBE0 - - thumb_func_start sub_811BC68 -sub_811BC68: @ 811BC68 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r0, r4, 2 - adds r0, r4 - adds r0, r5 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl sub_80691A4 - add r3, sp, 0x4 - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl sub_811B53C - ldr r0, [sp] - ldr r1, [sp, 0x4] - movs r2, 0 - bl sub_8059024 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_811BC68 - - thumb_func_start sub_811BCA0 -sub_811BCA0: @ 811BCA0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r7, r0, 0 - mov r8, r1 - mov r6, sp - adds r6, 0x2 - mov r0, sp - adds r1, r6, 0 - bl PlayerGetDestCoords - add r4, sp, 0x4 - mov r5, sp - adds r5, 0x6 - adds r0, r4, 0 - adds r1, r5, 0 - bl plaer_get_pos_including_state_based_drift - lsls r0, r7, 2 - adds r0, r7 - subs r0, 0x38 - lsls r0, 24 - lsrs r0, 24 - bl sub_806916C - mov r10, r6 - mov r9, r4 - adds r6, r5, 0 - cmp r0, 0x1 - bne _0811BD2C - mov r0, sp - movs r1, 0 - ldrsh r2, [r0, r1] - mov r0, r10 - movs r1, 0 - ldrsh r3, [r0, r1] - adds r0, r7, 0 - movs r1, 0 - bl sub_811B58C - cmp r0, 0x1 - beq _0811BD98 - movs r0, 0 - ldrsh r2, [r4, r0] - movs r1, 0 - ldrsh r3, [r6, r1] - adds r0, r7, 0 - movs r1, 0 - bl sub_811B58C - cmp r0, 0x1 - beq _0811BD98 - mov r2, r8 - ldrb r0, [r2, 0xB] - lsls r0, 31 - lsrs r0, 31 - ldrb r1, [r2, 0x2] - bl sub_811B524 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r7, 0 - movs r1, 0 - mov r3, r8 - bl sub_811BBE0 -_0811BD2C: - movs r5, 0x1 - mov r4, r8 - adds r4, 0x4 -_0811BD32: - ldrb r0, [r4] - cmp r0, 0 - bne _0811BD42 - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_811BC68 - b _0811BD90 -_0811BD42: - mov r0, sp - movs r1, 0 - ldrsh r2, [r0, r1] - mov r0, r10 - movs r1, 0 - ldrsh r3, [r0, r1] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_811B58C - cmp r0, 0 - bne _0811BD90 - mov r0, r9 - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - ldrsh r3, [r6, r0] - adds r0, r7, 0 - adds r1, r5, 0 - bl sub_811B58C - cmp r0, 0 - bne _0811BD90 - ldrb r2, [r4] - lsrs r0, r2, 3 - movs r1, 0x1 - ands r0, r1 - movs r1, 0x7 - ands r1, r2 - bl sub_811B524 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r7, 0 - adds r1, r5, 0 - mov r3, r8 - bl sub_811BBE0 -_0811BD90: - adds r4, 0x1 - adds r5, 0x1 - cmp r5, 0x4 - ble _0811BD32 -_0811BD98: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_811BCA0 - - thumb_func_start sub_811BDA8 -sub_811BDA8: @ 811BDA8 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r0, [r4, 0xA] - lsls r0, 25 - lsrs r0, 25 - subs r0, 0x40 - cmp r0, 0x14 - bhi _0811BE4C - lsls r0, 2 - ldr r1, _0811BDC4 @ =_0811BDC8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811BDC4: .4byte _0811BDC8 - .align 2, 0 -_0811BDC8: - .4byte _0811BE1C - .4byte _0811BE3C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE3C - .4byte _0811BE3C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE3C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE4C - .4byte _0811BE3C - .4byte _0811BE3C - .4byte _0811BE3C - .4byte _0811BE1C -_0811BE1C: - ldrb r1, [r4, 0xB] - lsls r1, 31 - lsrs r1, 31 - ldrb r2, [r4, 0x2] - adds r0, r5, 0 - bl sub_811B8BC - movs r4, 0 -_0811BE2C: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_811BC68 - adds r4, 0x1 - cmp r4, 0x4 - bls _0811BE2C - b _0811BE58 -_0811BE3C: - adds r0, r5, 0 - bl sub_811B90C - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_811BCA0 - b _0811BE58 -_0811BE4C: - ldr r0, _0811BE60 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" - ldr r1, _0811BE64 @ =0x000003d3 - ldr r2, _0811BE68 @ =gUnknown_8457174 "0" - movs r3, 0x1 - bl AGBAssert -_0811BE58: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811BE60: .4byte gUnknown_8457138 -_0811BE64: .4byte 0x000003d3 -_0811BE68: .4byte gUnknown_8457174 - thumb_func_end sub_811BDA8 - - thumb_func_start sub_811BE6C -sub_811BE6C: @ 811BE6C - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_811B90C - movs r4, 0 -_0811BE76: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_811BC68 - adds r4, 0x1 - cmp r4, 0x4 - ble _0811BE76 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_811BE6C - - thumb_func_start sub_811BE8C -sub_811BE8C: @ 811BE8C - push {r4,r5,lr} - ldr r2, _0811BEAC @ =gUnknown_203B088 - movs r1, 0 - str r1, [r2] - movs r5, 0 - ldr r4, [r0] -_0811BE98: - ldrb r0, [r4, 0x1A] - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x1 - bne _0811BEB0 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_811BDA8 - b _0811BEBC - .align 2, 0 -_0811BEAC: .4byte gUnknown_203B088 -_0811BEB0: - cmp r1, 0x2 - bne _0811BEBC - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_811BE6C -_0811BEBC: - adds r4, 0x20 - adds r5, 0x1 - cmp r5, 0x7 - ble _0811BE98 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_811BE8C - - thumb_func_start sub_811BECC -sub_811BECC: @ 811BECC - ldr r1, _0811BED8 @ =gUnknown_203B088 - movs r0, 0x96 - lsls r0, 1 - str r0, [r1] - bx lr - .align 2, 0 -_0811BED8: .4byte gUnknown_203B088 - thumb_func_end sub_811BECC - - thumb_func_start sub_811BEDC -sub_811BEDC: @ 811BEDC - push {lr} - adds r2, r0, 0 - ldr r0, _0811BEFC @ =gUnknown_203B088 - ldr r1, [r0] - adds r1, 0x1 - str r1, [r0] - movs r0, 0x96 - lsls r0, 1 - cmp r1, r0 - bls _0811BEF6 - adds r0, r2, 0 - bl sub_811BE8C -_0811BEF6: - pop {r0} - bx r0 - .align 2, 0 -_0811BEFC: .4byte gUnknown_203B088 - thumb_func_end sub_811BEDC - - thumb_func_start sub_811BF00 -sub_811BF00: @ 811BF00 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - adds r5, r0, 0 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - bl is_walking_or_running - cmp r0, 0 - bne _0811BF48 - b _0811BFEE -_0811BF1C: - ldr r4, _0811BF44 @ =gUnknown_8457116 - bl GetPlayerFacingDirection - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r2, [r0] - adds r0, r6, 0 - ldr r1, [sp, 0xC] - bl sub_811C008 - ldr r0, [sp, 0x4] - strh r6, [r0] - mov r1, sp - ldrh r2, [r1, 0xC] - ldr r1, [sp, 0x8] - strh r2, [r1] - movs r0, 0x1 - b _0811BFF0 - .align 2, 0 -_0811BF44: .4byte gUnknown_8457116 -_0811BF48: - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - movs r0, 0 - str r0, [sp, 0xC] - ldr r0, _0811C000 @ =gUnknown_84570EC - adds r7, r5, 0 - movs r1, 0 - mov r10, r1 - adds r2, r0, 0x2 - str r2, [sp, 0x10] - str r0, [sp, 0x14] -_0811BF66: - movs r6, 0 - ldr r4, [sp, 0x14] - movs r0, 0 - ldrsh r4, [r4, r0] - mov r9, r4 - ldr r1, [sp, 0x10] - mov r8, r1 - ldr r5, _0811C004 @ =gUnknown_845710C -_0811BF76: - mov r2, r10 - adds r3, r2, r6 - mov r0, sp - movs r4, 0 - ldrsh r1, [r0, r4] - movs r0, 0 - ldrsb r0, [r5, r0] - add r0, r9 - adds r0, 0x7 - cmp r1, r0 - bne _0811BFCA - mov r1, sp - movs r2, 0x2 - ldrsh r0, [r1, r2] - mov r4, r8 - movs r2, 0 - ldrsh r1, [r4, r2] - movs r2, 0x1 - ldrsb r2, [r5, r2] - adds r1, r2 - adds r1, 0x7 - cmp r0, r1 - bne _0811BFCA - adds r0, r3, 0 - subs r0, 0x38 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_806916C - cmp r0, 0 - bne _0811BFCA - adds r0, r4, 0 - bl sub_8069294 - cmp r0, 0 - bne _0811BFCA - ldrb r1, [r7, 0x1A] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - beq _0811BF1C -_0811BFCA: - adds r5, 0x2 - adds r6, 0x1 - cmp r6, 0x4 - ble _0811BF76 - adds r7, 0x20 - movs r4, 0x5 - add r10, r4 - ldr r0, [sp, 0x10] - adds r0, 0x4 - str r0, [sp, 0x10] - ldr r1, [sp, 0x14] - adds r1, 0x4 - str r1, [sp, 0x14] - ldr r2, [sp, 0xC] - adds r2, 0x1 - str r2, [sp, 0xC] - cmp r2, 0x7 - ble _0811BF66 -_0811BFEE: - movs r0, 0 -_0811BFF0: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811C000: .4byte gUnknown_84570EC -_0811C004: .4byte gUnknown_845710C - thumb_func_end sub_811BF00 - - thumb_func_start sub_811C008 -sub_811C008: @ 811C008 - push {r4,lr} - adds r4, r0, 0 - adds r3, r1, 0 - lsls r1, r2, 24 - lsrs r1, 24 - lsls r0, r3, 2 - adds r0, r3 - subs r0, 0x38 - adds r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl sub_8069058 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_811C008 - - thumb_func_start sub_811C028 -sub_811C028: @ 811C028 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r3, r4, 5 - adds r3, r2 - adds r2, r3, 0 - bl sub_811BBA0 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_811C008 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_811C028 - - thumb_func_start sub_811C04C -sub_811C04C: @ 811C04C - push {r4-r7,lr} - movs r0, 0xA - bl sub_81173C0 - movs r4, 0 - movs r7, 0x64 - ldr r6, _0811C0CC @ =gPlayerParty - ldr r5, _0811C0D0 @ =gEnemyParty -_0811C05C: - ldr r0, _0811C0D4 @ =gSelectedOrderFromParty - adds r0, r4, r0 - ldrb r0, [r0] - subs r0, 0x1 - adds r1, r0, 0 - muls r1, r7 - adds r1, r6 - adds r0, r5, 0 - movs r2, 0x64 - bl memcpy - adds r5, 0x64 - adds r4, 0x1 - cmp r4, 0x1 - ble _0811C05C - ldr r4, _0811C0CC @ =gPlayerParty - movs r0, 0xFA - lsls r0, 1 - adds r5, r4, r0 -_0811C082: - adds r0, r4, 0 - bl ZeroMonData - adds r4, 0x64 - cmp r4, r5 - ble _0811C082 - ldr r4, _0811C0CC @ =gPlayerParty - movs r5, 0 - adds r6, r4, 0 - adds r6, 0x64 -_0811C096: - ldr r1, _0811C0D0 @ =gEnemyParty - adds r1, r5, r1 - adds r0, r4, 0 - movs r2, 0x64 - bl memcpy - adds r4, 0x64 - adds r5, 0x64 - cmp r4, r6 - ble _0811C096 - movs r0, 0x32 - bl IncrementGameStat - bl CalculatePlayerPartyCount - ldr r0, _0811C0D8 @ =gTrainerBattleOpponent_A - movs r2, 0xC0 - lsls r2, 4 - adds r1, r2, 0 - strh r1, [r0] - ldr r0, _0811C0DC @ =CB2_InitBattle - bl SetMainCallback2 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811C0CC: .4byte gPlayerParty -_0811C0D0: .4byte gEnemyParty -_0811C0D4: .4byte gSelectedOrderFromParty -_0811C0D8: .4byte gTrainerBattleOpponent_A -_0811C0DC: .4byte CB2_InitBattle - thumb_func_end sub_811C04C - - thumb_func_start sub_811C0E0 -sub_811C0E0: @ 811C0E0 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x18 - adds r5, r0, 0 - mov r10, r1 - adds r6, r2, 0 - ldr r4, [sp, 0x34] - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x1 - mov r8, r0 - ldr r1, _0811C14C @ =gUnknown_84571A8 - mov r9, r1 - ldrb r0, [r1] - lsls r1, r0, 4 - orrs r1, r0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - str r3, [sp, 0x14] - bl FillWindowPixelBuffer - mov r0, r8 - str r0, [sp] - str r0, [sp, 0x4] - mov r1, r9 - str r1, [sp, 0x8] - lsls r4, 24 - asrs r4, 24 - str r4, [sp, 0xC] - mov r0, r10 - str r0, [sp, 0x10] - adds r0, r5, 0 - movs r1, 0x3 - adds r2, r6, 0 - ldr r3, [sp, 0x14] - bl AddTextPrinterParameterized4 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811C14C: .4byte gUnknown_84571A8 - thumb_func_end sub_811C0E0 - - thumb_func_start sub_811C150 -sub_811C150: @ 811C150 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r6, r1, 0 - adds r5, r2, 0 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0811C168 - cmp r0, 0x1 - beq _0811C196 - b _0811C1AA -_0811C168: - movs r0, 0 - movs r1, 0x1 - movs r2, 0xD - bl DrawTextBorderOuter - str r5, [sp] - movs r0, 0 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x2 - bl sub_811C0E0 - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0811C1AA -_0811C196: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0811C1AA - strh r0, [r4] - movs r0, 0x1 - b _0811C1AC -_0811C1AA: - movs r0, 0 -_0811C1AC: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_811C150 - - thumb_func_start sub_811C1B4 -sub_811C1B4: @ 811C1B4 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_811C1B4 - - thumb_func_start sub_811C1C8 -sub_811C1C8: @ 811C1C8 - push {r4,lr} - sub sp, 0xC - ldr r1, _0811C1E8 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x33 - bls _0811C1DE - b _0811C516 -_0811C1DE: - lsls r0, 2 - ldr r1, _0811C1EC @ =_0811C1F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811C1E8: .4byte gMain -_0811C1EC: .4byte _0811C1F0 - .align 2, 0 -_0811C1F0: - .4byte _0811C2C0 - .4byte _0811C364 - .4byte _0811C38C - .4byte _0811C3B0 - .4byte _0811C400 - .4byte _0811C516 - .4byte _0811C4E4 - .4byte _0811C4C0 - .4byte _0811C4E4 - .4byte _0811C500 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C516 - .4byte _0811C48C - .4byte _0811C4A8 -_0811C2C0: - movs r0, 0 - movs r1, 0 - bl SetGpuReg - ldr r4, _0811C350 @ =gUnknown_203B08C - movs r0, 0x4 - bl AllocZeroed - str r0, [r4] - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0811C354 @ =gUnknown_8457194 - movs r0, 0 - movs r2, 0x1 - bl InitBgsFromTemplates - bl ResetTempTileDataBuffers - ldr r0, _0811C358 @ =gUnknown_8457198 - bl InitWindows - lsls r0, 16 - cmp r0, 0 - bne _0811C300 - b _0811C52A -_0811C300: - bl DeactivateAllTextPrinters - movs r0, 0 - bl ClearWindowTilemap - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0xF - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r0, 0 - movs r1, 0x1 - movs r2, 0xD0 - bl TextWindow_SetStdFrame0_WithPal - bl Menu_LoadStdPal - ldr r0, _0811C35C @ =sub_811C1B4 - bl SetVBlankCallback - ldr r1, _0811C360 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _0811C4F2 - .align 2, 0 -_0811C350: .4byte gUnknown_203B08C -_0811C354: .4byte gUnknown_8457194 -_0811C358: .4byte gUnknown_8457198 -_0811C35C: .4byte sub_811C1B4 -_0811C360: .4byte gMain -_0811C364: - ldr r0, _0811C380 @ =gUnknown_203B08C - ldr r0, [r0] - ldr r1, _0811C384 @ =gUnknown_841E538 - movs r2, 0 - bl sub_811C150 - cmp r0, 0 - bne _0811C376 - b _0811C516 -_0811C376: - ldr r1, _0811C388 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _0811C4F2 - .align 2, 0 -_0811C380: .4byte gUnknown_203B08C -_0811C384: .4byte gUnknown_841E538 -_0811C388: .4byte gMain -_0811C38C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0 - bl ShowBg - ldr r1, _0811C3AC @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _0811C4F2 - .align 2, 0 -_0811C3AC: .4byte gMain -_0811C3B0: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - beq _0811C3BC - b _0811C516 -_0811C3BC: - ldr r4, _0811C3D8 @ =gBlockSendBuffer - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x20 - bl memset - ldr r0, _0811C3DC @ =gSelectedOrderFromParty - ldrb r1, [r0] - ldrb r0, [r0, 0x1] - cmn r1, r0 - bne _0811C3E0 - movs r0, 0x52 - b _0811C3E2 - .align 2, 0 -_0811C3D8: .4byte gBlockSendBuffer -_0811C3DC: .4byte gSelectedOrderFromParty -_0811C3E0: - movs r0, 0x51 -_0811C3E2: - strb r0, [r4] - ldr r1, _0811C3F8 @ =gBlockSendBuffer - movs r0, 0 - movs r2, 0x20 - bl SendBlock - ldr r1, _0811C3FC @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _0811C4F2 - .align 2, 0 -_0811C3F8: .4byte gBlockSendBuffer -_0811C3FC: .4byte gMain -_0811C400: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0811C40E - b _0811C516 -_0811C40E: - ldr r1, _0811C440 @ =gBlockRecvBuffer - ldrh r0, [r1] - cmp r0, 0x51 - bne _0811C448 - movs r2, 0x80 - lsls r2, 1 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0x51 - bne _0811C448 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0811C444 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x32 - b _0811C47E - .align 2, 0 -_0811C440: .4byte gBlockRecvBuffer -_0811C444: .4byte gMain -_0811C448: - bl sub_800AAC0 - ldr r4, _0811C46C @ =gBlockRecvBuffer - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 16 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0x52 - bne _0811C474 - ldr r0, _0811C470 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r2 - movs r1, 0x6 - b _0811C47E - .align 2, 0 -_0811C46C: .4byte gBlockRecvBuffer -_0811C470: .4byte gMain -_0811C474: - ldr r0, _0811C488 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x8 -_0811C47E: - strb r1, [r0] - bl ResetBlockReceivedFlags - b _0811C516 - .align 2, 0 -_0811C488: .4byte gMain -_0811C48C: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _0811C516 - bl sub_800AB9C - ldr r1, _0811C4A4 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _0811C4F2 - .align 2, 0 -_0811C4A4: .4byte gMain -_0811C4A8: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0811C516 - ldr r0, _0811C4BC @ =sub_811C04C - bl SetMainCallback2 - b _0811C516 - .align 2, 0 -_0811C4BC: .4byte sub_811C04C -_0811C4C0: - ldr r0, _0811C4D8 @ =gUnknown_203B08C - ldr r0, [r0] - ldr r1, _0811C4DC @ =gUnknown_841E58D - movs r2, 0x1 - bl sub_811C150 - cmp r0, 0 - beq _0811C516 - ldr r0, _0811C4E0 @ =CB2_ReturnToField - bl SetMainCallback2 - b _0811C516 - .align 2, 0 -_0811C4D8: .4byte gUnknown_203B08C -_0811C4DC: .4byte gUnknown_841E58D -_0811C4E0: .4byte CB2_ReturnToField -_0811C4E4: - ldr r0, _0811C4FC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0811C516 - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 -_0811C4F2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0811C516 - .align 2, 0 -_0811C4FC: .4byte gReceivedRemoteLinkPlayers -_0811C500: - ldr r0, _0811C534 @ =gUnknown_203B08C - ldr r0, [r0] - ldr r1, _0811C538 @ =gUnknown_841E572 - movs r2, 0x1 - bl sub_811C150 - cmp r0, 0 - beq _0811C516 - ldr r0, _0811C53C @ =CB2_ReturnToField - bl SetMainCallback2 -_0811C516: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade -_0811C52A: - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811C534: .4byte gUnknown_203B08C -_0811C538: .4byte gUnknown_841E572 -_0811C53C: .4byte CB2_ReturnToField - thumb_func_end sub_811C1C8 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/union_room_player_avatar.s b/asm/union_room_player_avatar.s new file mode 100644 index 000000000..5c6786ae6 --- /dev/null +++ b/asm/union_room_player_avatar.s @@ -0,0 +1,2064 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start is_walking_or_running +is_walking_or_running: @ 811B504 + push {lr} + ldr r0, _0811B518 @ =gPlayerAvatar + ldrb r0, [r0, 0x3] + cmp r0, 0x2 + beq _0811B512 + cmp r0, 0 + bne _0811B51C +_0811B512: + movs r0, 0x1 + b _0811B51E + .align 2, 0 +_0811B518: .4byte gPlayerAvatar +_0811B51C: + movs r0, 0 +_0811B51E: + pop {r1} + bx r1 + thumb_func_end is_walking_or_running + + thumb_func_start sub_811B524 +sub_811B524: @ 811B524 + ldr r3, _0811B538 @ =gUnknown_84570D8 + movs r2, 0x7 + ands r2, r1 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 1 + adds r2, r1 + adds r2, r3 + ldrb r0, [r2] + bx lr + .align 2, 0 +_0811B538: .4byte gUnknown_84570D8 + thumb_func_end sub_811B524 + + thumb_func_start sub_811B53C +sub_811B53C: @ 811B53C + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r4, _0811B584 @ =gUnknown_84570EC + mov r8, r4 + lsls r0, 2 + adds r4, r0, r4 + movs r6, 0 + ldrsh r5, [r4, r6] + ldr r6, _0811B588 @ =gUnknown_845710C + lsls r1, 1 + adds r4, r1, r6 + ldrb r4, [r4] + lsls r4, 24 + asrs r4, 24 + adds r5, r4 + adds r5, 0x7 + str r5, [r2] + movs r2, 0x2 + add r8, r2 + add r0, r8 + movs r4, 0 + ldrsh r0, [r0, r4] + adds r6, 0x1 + adds r1, r6 + ldrb r1, [r1] + lsls r1, 24 + asrs r1, 24 + adds r0, r1 + adds r0, 0x7 + str r0, [r3] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811B584: .4byte gUnknown_84570EC +_0811B588: .4byte gUnknown_845710C + thumb_func_end sub_811B53C + + thumb_func_start sub_811B58C +sub_811B58C: @ 811B58C + push {r4-r7,lr} + mov r12, r3 + ldr r7, _0811B5CC @ =gUnknown_84570EC + lsls r5, r0, 2 + adds r0, r5, r7 + movs r4, 0 + ldrsh r3, [r0, r4] + ldr r6, _0811B5D0 @ =gUnknown_845710C + lsls r4, r1, 1 + adds r0, r4, r6 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r3, r0 + adds r3, 0x7 + cmp r3, r2 + bne _0811B5D4 + adds r0, r7, 0x2 + adds r0, r5, r0 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r6, 0x1 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r1, r0 + adds r1, 0x7 + cmp r1, r12 + bne _0811B5D4 + movs r0, 0x1 + b _0811B5D6 + .align 2, 0 +_0811B5CC: .4byte gUnknown_84570EC +_0811B5D0: .4byte gUnknown_845710C +_0811B5D4: + movs r0, 0 +_0811B5D6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811B58C + + thumb_func_start sub_811B5DC +sub_811B5DC: @ 811B5DC + push {lr} + adds r0, 0x63 + lsls r0, 16 + lsrs r0, 16 + bl FlagGet + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_811B5DC + + thumb_func_start sub_811B5F0 +sub_811B5F0: @ 811B5F0 + push {lr} + adds r0, 0x63 + lsls r0, 16 + lsrs r0, 16 + bl FlagSet + pop {r0} + bx r0 + thumb_func_end sub_811B5F0 + + thumb_func_start sub_811B600 +sub_811B600: @ 811B600 + push {lr} + adds r0, 0x63 + lsls r0, 16 + lsrs r0, 16 + bl FlagClear + pop {r0} + bx r0 + thumb_func_end sub_811B600 + + thumb_func_start sub_811B610 +sub_811B610: @ 811B610 + push {lr} + ldr r2, _0811B628 @ =0x00004010 + adds r0, r2 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + bl VarSet + pop {r0} + bx r0 + .align 2, 0 +_0811B628: .4byte 0x00004010 + thumb_func_end sub_811B610 + + thumb_func_start sub_811B62C +sub_811B62C: @ 811B62C + push {lr} + ldr r1, _0811B644 @ =gUnknown_8457120 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _0811B648 @ =gSaveBlock1Ptr + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl show_sprite + pop {r0} + bx r0 + .align 2, 0 +_0811B644: .4byte gUnknown_8457120 +_0811B648: .4byte gSaveBlock1Ptr + thumb_func_end sub_811B62C + + thumb_func_start sub_811B64C +sub_811B64C: @ 811B64C + push {lr} + ldr r1, _0811B664 @ =gUnknown_8457120 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _0811B668 @ =gSaveBlock1Ptr + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + bl RemoveObjectEventByLocalIdAndMap + pop {r0} + bx r0 + .align 2, 0 +_0811B664: .4byte gUnknown_8457120 +_0811B668: .4byte gSaveBlock1Ptr + thumb_func_end sub_811B64C + + thumb_func_start sub_811B66C +sub_811B66C: @ 811B66C + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r1, 0 + ldr r1, _0811B6B8 @ =gUnknown_8457120 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _0811B6BC @ =gSaveBlock1Ptr + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0811B6D0 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0811B6C0 @ =gObjectEvents + adds r4, r0, r1 + adds r0, r4, 0 + bl ObjectEventIsMovementOverridden + lsls r0, 24 + cmp r0, 0 + bne _0811B6D0 + ldrb r1, [r5] + adds r0, r4, 0 + bl ObjectEventSetHeldMovement + lsls r0, 24 + cmp r0, 0 + bne _0811B6C4 + movs r0, 0x1 + b _0811B6D2 + .align 2, 0 +_0811B6B8: .4byte gUnknown_8457120 +_0811B6BC: .4byte gSaveBlock1Ptr +_0811B6C0: .4byte gObjectEvents +_0811B6C4: + ldr r0, _0811B6DC @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" + ldr r1, _0811B6E0 @ =0x00000183 + ldr r2, _0811B6E4 @ =gUnknown_8457174 "0" + movs r3, 0x1 + bl AGBAssert +_0811B6D0: + movs r0, 0 +_0811B6D2: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811B6DC: .4byte gUnknown_8457138 +_0811B6E0: .4byte 0x00000183 +_0811B6E4: .4byte gUnknown_8457174 + thumb_func_end sub_811B66C + + thumb_func_start sub_811B6E8 +sub_811B6E8: @ 811B6E8 + push {r4,lr} + sub sp, 0x4 + ldr r1, _0811B724 @ =gUnknown_8457120 + adds r0, r1 + ldrb r0, [r0] + ldr r1, _0811B728 @ =gSaveBlock1Ptr + ldr r2, [r1] + ldrb r1, [r2, 0x5] + ldrb r2, [r2, 0x4] + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0811B748 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0811B72C @ =gObjectEvents + adds r4, r0, r1 + adds r0, r4, 0 + bl ObjectEventClearHeldMovementIfFinished + lsls r0, 24 + cmp r0, 0 + bne _0811B730 + movs r0, 0 + b _0811B74A + .align 2, 0 +_0811B724: .4byte gUnknown_8457120 +_0811B728: .4byte gSaveBlock1Ptr +_0811B72C: .4byte gObjectEvents +_0811B730: + bl ScriptContext2_IsEnabled + lsls r0, 24 + cmp r0, 0 + bne _0811B742 + adds r0, r4, 0 + bl npc_sync_anim_pause_bits + b _0811B748 +_0811B742: + adds r0, r4, 0 + bl FreezeObjectEvent +_0811B748: + movs r0, 0x1 +_0811B74A: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811B6E8 + + thumb_func_start sub_811B754 +sub_811B754: @ 811B754 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _0811B798 @ =gUnknown_203B088 + movs r1, 0 + str r1, [r0] + ldr r0, _0811B79C @ =gUnknown_203B084 + str r4, [r0] + cmp r4, 0 + bne _0811B774 + ldr r0, _0811B7A0 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" + movs r1, 0xDD + lsls r1, 1 + ldr r2, _0811B7A4 @ =gUnknown_8457178 "UnionObjWork != NULL" + movs r3, 0x1 + bl AGBAssert +_0811B774: + movs r1, 0 + adds r0, r4, 0 + movs r2, 0x7 +_0811B77A: + strb r1, [r0] + strb r1, [r0, 0x1] + strb r1, [r0, 0x2] + strb r1, [r0, 0x3] + adds r0, 0x4 + subs r2, 0x1 + cmp r2, 0 + bge _0811B77A + bl sub_811BA18 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811B798: .4byte gUnknown_203B088 +_0811B79C: .4byte gUnknown_203B084 +_0811B7A0: .4byte gUnknown_8457138 +_0811B7A4: .4byte gUnknown_8457178 + thumb_func_end sub_811B754 + + thumb_func_start sub_811B7A8 +sub_811B7A8: @ 811B7A8 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r0, 0 + beq _0811B7BC + cmp r0, 0x1 + beq _0811B7DC + b _0811B7FA +_0811B7BC: + ldr r1, _0811B7D8 @ =gUnknown_845718D + adds r0, r4, 0 + bl sub_811B66C + cmp r0, 0x1 + bne _0811B7FA + adds r0, r4, 0 + bl sub_811B5F0 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + b _0811B7FA + .align 2, 0 +_0811B7D8: .4byte gUnknown_845718D +_0811B7DC: + adds r0, r4, 0 + bl sub_811B6E8 + cmp r0, 0 + beq _0811B7FA + adds r0, r4, 0 + bl sub_811B64C + adds r0, r4, 0 + bl sub_811B5F0 + movs r0, 0 + strb r0, [r5] + movs r0, 0x1 + b _0811B7FC +_0811B7FA: + movs r0, 0 +_0811B7FC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811B7A8 + + thumb_func_start sub_811B804 +sub_811B804: @ 811B804 + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r1, 0 + adds r7, r2, 0 + movs r0, 0 + ldrsb r0, [r6, r0] + cmp r0, 0x2 + beq _0811B8A0 + cmp r0, 0x2 + bgt _0811B820 + cmp r0, 0 + beq _0811B826 + b _0811B8B2 +_0811B820: + cmp r0, 0x3 + beq _0811B888 + b _0811B8B2 +_0811B826: + bl is_walking_or_running + cmp r0, 0 + beq _0811B8B2 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + movs r0, 0 + ldrsh r3, [r4, r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_811B58C + cmp r0, 0x1 + beq _0811B8B2 + mov r0, sp + adds r1, r4, 0 + bl plaer_get_pos_including_state_based_drift + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + movs r0, 0 + ldrsh r3, [r4, r0] + adds r0, r5, 0 + movs r1, 0 + bl sub_811B58C + cmp r0, 0x1 + beq _0811B8B2 + ldrb r1, [r7, 0x1] + adds r0, r5, 0 + bl sub_811B610 + adds r0, r5, 0 + bl sub_811B62C + adds r0, r5, 0 + bl sub_811B600 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] +_0811B888: + ldr r1, _0811B89C @ =gUnknown_845718F + adds r0, r5, 0 + bl sub_811B66C + cmp r0, 0x1 + bne _0811B8B2 + ldrb r0, [r6] + adds r0, 0x1 + strb r0, [r6] + b _0811B8B2 + .align 2, 0 +_0811B89C: .4byte gUnknown_845718F +_0811B8A0: + adds r0, r5, 0 + bl sub_811B6E8 + cmp r0, 0 + beq _0811B8B2 + movs r0, 0 + strb r0, [r6] + movs r0, 0x1 + b _0811B8B4 +_0811B8B2: + movs r0, 0 +_0811B8B4: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811B804 + + thumb_func_start sub_811B8BC +sub_811B8BC: @ 811B8BC + push {r4-r6,lr} + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, _0811B8F4 @ =gUnknown_203B084 + lsls r0, 2 + ldr r1, [r1] + adds r4, r1, r0 + cmp r1, 0 + bne _0811B8DA + ldr r0, _0811B8F8 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" + ldr r1, _0811B8FC @ =0x00000231 + ldr r2, _0811B900 @ =gUnknown_8457178 "UnionObjWork != NULL" + movs r3, 0x1 + bl AGBAssert +_0811B8DA: + movs r0, 0x1 + strb r0, [r4, 0x3] + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_811B524 + strb r0, [r4, 0x1] + ldrb r0, [r4] + cmp r0, 0 + beq _0811B904 + movs r0, 0 + b _0811B906 + .align 2, 0 +_0811B8F4: .4byte gUnknown_203B084 +_0811B8F8: .4byte gUnknown_8457138 +_0811B8FC: .4byte 0x00000231 +_0811B900: .4byte gUnknown_8457178 +_0811B904: + movs r0, 0x1 +_0811B906: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811B8BC + + thumb_func_start sub_811B90C +sub_811B90C: @ 811B90C + push {r4,lr} + ldr r1, _0811B934 @ =gUnknown_203B084 + lsls r0, 2 + ldr r1, [r1] + adds r4, r1, r0 + cmp r1, 0 + bne _0811B926 + ldr r0, _0811B938 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" + ldr r1, _0811B93C @ =0x00000241 + ldr r2, _0811B940 @ =gUnknown_8457178 "UnionObjWork != NULL" + movs r3, 0x1 + bl AGBAssert +_0811B926: + movs r0, 0x2 + strb r0, [r4, 0x3] + ldrb r0, [r4] + cmp r0, 0x1 + beq _0811B944 + movs r0, 0 + b _0811B946 + .align 2, 0 +_0811B934: .4byte gUnknown_203B084 +_0811B938: .4byte gUnknown_8457138 +_0811B93C: .4byte 0x00000241 +_0811B940: .4byte gUnknown_8457178 +_0811B944: + movs r0, 0x1 +_0811B946: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811B90C + + thumb_func_start sub_811B94C +sub_811B94C: @ 811B94C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r4] + cmp r1, 0x1 + beq _0811B9AE + cmp r1, 0x1 + bgt _0811B962 + cmp r1, 0 + beq _0811B96C + b _0811B9CE +_0811B962: + cmp r1, 0x2 + beq _0811B978 + cmp r1, 0x3 + beq _0811B9BC + b _0811B9CE +_0811B96C: + ldrb r0, [r4, 0x3] + cmp r0, 0x1 + bne _0811B9CE + movs r0, 0x2 + strb r0, [r4] + strb r1, [r4, 0x2] +_0811B978: + adds r0, r5, 0 + movs r1, 0 + bl sub_811BBC8 + adds r1, r0, 0 + cmp r1, 0 + bne _0811B99E + ldrb r0, [r4, 0x3] + cmp r0, 0x2 + bne _0811B99E + strb r1, [r4] + strb r1, [r4, 0x2] + adds r0, r5, 0 + bl sub_811B64C + adds r0, r5, 0 + bl sub_811B5F0 + b _0811B9CE +_0811B99E: + adds r0, r4, 0x2 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_811B804 + cmp r0, 0x1 + bne _0811B9CE + b _0811B9CC +_0811B9AE: + ldrb r0, [r4, 0x3] + cmp r0, 0x2 + bne _0811B9CE + movs r1, 0 + movs r0, 0x3 + strb r0, [r4] + strb r1, [r4, 0x2] +_0811B9BC: + adds r0, r4, 0x2 + adds r1, r5, 0 + adds r2, r4, 0 + bl sub_811B7A8 + cmp r0, 0x1 + bne _0811B9CE + movs r0, 0 +_0811B9CC: + strb r0, [r4] +_0811B9CE: + movs r0, 0 + strb r0, [r4, 0x3] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811B94C + + thumb_func_start sub_811B9D8 +sub_811B9D8: @ 811B9D8 + push {r4,r5,lr} + ldr r5, _0811BA08 @ =gUnknown_203B084 + ldr r0, [r5] + cmp r0, 0 + bne _0811B9EE + ldr r0, _0811BA0C @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" + ldr r1, _0811BA10 @ =0x00000283 + ldr r2, _0811BA14 @ =gUnknown_8457178 "UnionObjWork != NULL" + movs r3, 0x1 + bl AGBAssert +_0811B9EE: + movs r4, 0 +_0811B9F0: + lsls r0, r4, 2 + ldr r1, [r5] + adds r1, r0 + adds r0, r4, 0 + bl sub_811B94C + adds r4, 0x1 + cmp r4, 0x7 + ble _0811B9F0 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811BA08: .4byte gUnknown_203B084 +_0811BA0C: .4byte gUnknown_8457138 +_0811BA10: .4byte 0x00000283 +_0811BA14: .4byte gUnknown_8457178 + thumb_func_end sub_811B9D8 + + thumb_func_start sub_811BA18 +sub_811BA18: @ 811BA18 + push {r4,lr} + ldr r4, _0811BA38 @ =sub_811B9D8 + adds r0, r4, 0 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0811BA3C + adds r0, r4, 0 + movs r1, 0x5 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + b _0811BA4A + .align 2, 0 +_0811BA38: .4byte sub_811B9D8 +_0811BA3C: + ldr r0, _0811BA50 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" + ldr r1, _0811BA54 @ =0x0000028f + ldr r2, _0811BA58 @ =gUnknown_8457174 "0" + movs r3, 0x1 + bl AGBAssert + movs r0, 0x10 +_0811BA4A: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811BA50: .4byte gUnknown_8457138 +_0811BA54: .4byte 0x0000028f +_0811BA58: .4byte gUnknown_8457174 + thumb_func_end sub_811BA18 + + thumb_func_start sub_811BA5C +sub_811BA5C: @ 811BA5C + push {lr} + ldr r0, _0811BA74 @ =sub_811B9D8 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + bhi _0811BA70 + bl DestroyTask +_0811BA70: + pop {r0} + bx r0 + .align 2, 0 +_0811BA74: .4byte sub_811B9D8 + thumb_func_end sub_811BA5C + + thumb_func_start sub_811BA78 +sub_811BA78: @ 811BA78 + push {r4,lr} + movs r4, 0 +_0811BA7C: + adds r0, r4, 0 + bl sub_811B5DC + cmp r0, 0 + bne _0811BA92 + adds r0, r4, 0 + bl sub_811B64C + adds r0, r4, 0 + bl sub_811B5F0 +_0811BA92: + adds r4, 0x1 + cmp r4, 0x7 + ble _0811BA7C + ldr r1, _0811BAA8 @ =gUnknown_203B084 + movs r0, 0 + str r0, [r1] + bl sub_811BA5C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811BAA8: .4byte gUnknown_203B084 + thumb_func_end sub_811BA78 + + thumb_func_start sub_811BAAC +sub_811BAAC: @ 811BAAC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + str r0, [sp, 0x8] + mov r9, r1 + movs r7, 0 + mov r0, r9 + lsls r0, 2 + mov r8, r0 + ldr r0, _0811BB38 @ =gUnknown_84570EC + mov r2, r8 + adds r1, r2, r0 + ldrh r1, [r1] + mov r2, sp + strh r1, [r2, 0xC] + adds r0, 0x2 + add r0, r8 + ldrh r0, [r0] + mov r10, r0 + ldr r6, _0811BB3C @ =gUnknown_845710C +_0811BADA: + mov r5, r8 + add r5, r9 + adds r5, r7 + adds r4, r5, 0 + subs r4, 0x38 + lsls r4, 24 + lsrs r4, 24 + movs r2, 0 + ldrsb r2, [r6, r2] + mov r0, sp + ldrh r0, [r0, 0xC] + adds r2, r0, r2 + lsls r2, 16 + asrs r2, 16 + movs r3, 0x1 + ldrsb r3, [r6, r3] + add r3, r10 + lsls r3, 16 + asrs r3, 16 + movs r0, 0x3 + str r0, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x19 + adds r1, r4, 0 + bl sprite_new + ldr r1, [sp, 0x8] + adds r5, r1, r5 + strb r0, [r5] + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8069124 + adds r6, 0x2 + adds r7, 0x1 + cmp r7, 0x4 + ble _0811BADA + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811BB38: .4byte gUnknown_84570EC +_0811BB3C: .4byte gUnknown_845710C + thumb_func_end sub_811BAAC + + thumb_func_start sub_811BB40 +sub_811BB40: @ 811BB40 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + ldr r6, _0811BB64 @ =gSprites +_0811BB48: + adds r0, r5, r4 + ldrb r1, [r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + bl DestroySprite + adds r4, 0x1 + cmp r4, 0x27 + ble _0811BB48 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811BB64: .4byte gSprites + thumb_func_end sub_811BB40 + + thumb_func_start sub_811BB68 +sub_811BB68: @ 811BB68 + push {r4-r7,lr} + sub sp, 0x8 + movs r5, 0 + add r7, sp, 0x4 +_0811BB70: + movs r4, 0 + adds r6, r5, 0x1 +_0811BB74: + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, sp + adds r3, r7, 0 + bl sub_811B53C + ldr r0, [sp] + ldr r1, [sp, 0x4] + movs r2, 0 + bl sub_8059024 + adds r4, 0x1 + cmp r4, 0x4 + ble _0811BB74 + adds r5, r6, 0 + cmp r5, 0x7 + ble _0811BB70 + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811BB68 + + thumb_func_start sub_811BBA0 +sub_811BBA0: @ 811BBA0 + push {lr} + adds r1, r0, 0 + cmp r1, 0 + beq _0811BBB4 + ldr r0, _0811BBB0 @ =gUnknown_845711B + adds r0, r1, r0 + ldrb r0, [r0] + b _0811BBC4 + .align 2, 0 +_0811BBB0: .4byte gUnknown_845711B +_0811BBB4: + ldrb r1, [r2, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x45 + beq _0811BBC2 + movs r0, 0x4 + b _0811BBC4 +_0811BBC2: + movs r0, 0x1 +_0811BBC4: + pop {r1} + bx r1 + thumb_func_end sub_811BBA0 + + thumb_func_start sub_811BBC8 +sub_811BBC8: @ 811BBC8 + push {lr} + adds r2, r0, 0 + lsls r0, r2, 2 + adds r0, r2 + adds r0, r1 + subs r0, 0x38 + lsls r0, 24 + lsrs r0, 24 + bl sub_806916C + pop {r1} + bx r1 + thumb_func_end sub_811BBC8 + + thumb_func_start sub_811BBE0 +sub_811BBE0: @ 811BBE0 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + adds r5, r0, 0 + adds r6, r1, 0 + mov r9, r3 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r0, r5, 2 + adds r0, r5 + adds r7, r0, r6 + adds r0, r5, 0 + bl sub_811BBC8 + cmp r0, 0x1 + bne _0811BC1E + adds r4, r7, 0 + subs r4, 0x38 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl sub_8069124 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_80691A4 +_0811BC1E: + adds r0, r7, 0 + subs r0, 0x38 + lsls r0, 24 + lsrs r0, 24 + mov r1, r8 + bl sub_8069094 + adds r0, r6, 0 + adds r1, r5, 0 + mov r2, r9 + bl sub_811BBA0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_811C008 + add r3, sp, 0x4 + adds r0, r5, 0 + adds r1, r6, 0 + mov r2, sp + bl sub_811B53C + ldr r0, [sp] + ldr r1, [sp, 0x4] + movs r2, 0x1 + bl sub_8059024 + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811BBE0 + + thumb_func_start sub_811BC68 +sub_811BC68: @ 811BC68 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r4, 2 + adds r0, r4 + adds r0, r5 + subs r0, 0x38 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl sub_80691A4 + add r3, sp, 0x4 + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl sub_811B53C + ldr r0, [sp] + ldr r1, [sp, 0x4] + movs r2, 0 + bl sub_8059024 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811BC68 + + thumb_func_start sub_811BCA0 +sub_811BCA0: @ 811BCA0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r7, r0, 0 + mov r8, r1 + mov r6, sp + adds r6, 0x2 + mov r0, sp + adds r1, r6, 0 + bl PlayerGetDestCoords + add r4, sp, 0x4 + mov r5, sp + adds r5, 0x6 + adds r0, r4, 0 + adds r1, r5, 0 + bl plaer_get_pos_including_state_based_drift + lsls r0, r7, 2 + adds r0, r7 + subs r0, 0x38 + lsls r0, 24 + lsrs r0, 24 + bl sub_806916C + mov r10, r6 + mov r9, r4 + adds r6, r5, 0 + cmp r0, 0x1 + bne _0811BD2C + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + mov r0, r10 + movs r1, 0 + ldrsh r3, [r0, r1] + adds r0, r7, 0 + movs r1, 0 + bl sub_811B58C + cmp r0, 0x1 + beq _0811BD98 + movs r0, 0 + ldrsh r2, [r4, r0] + movs r1, 0 + ldrsh r3, [r6, r1] + adds r0, r7, 0 + movs r1, 0 + bl sub_811B58C + cmp r0, 0x1 + beq _0811BD98 + mov r2, r8 + ldrb r0, [r2, 0xB] + lsls r0, 31 + lsrs r0, 31 + ldrb r1, [r2, 0x2] + bl sub_811B524 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r7, 0 + movs r1, 0 + mov r3, r8 + bl sub_811BBE0 +_0811BD2C: + movs r5, 0x1 + mov r4, r8 + adds r4, 0x4 +_0811BD32: + ldrb r0, [r4] + cmp r0, 0 + bne _0811BD42 + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_811BC68 + b _0811BD90 +_0811BD42: + mov r0, sp + movs r1, 0 + ldrsh r2, [r0, r1] + mov r0, r10 + movs r1, 0 + ldrsh r3, [r0, r1] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_811B58C + cmp r0, 0 + bne _0811BD90 + mov r0, r9 + movs r1, 0 + ldrsh r2, [r0, r1] + movs r0, 0 + ldrsh r3, [r6, r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl sub_811B58C + cmp r0, 0 + bne _0811BD90 + ldrb r2, [r4] + lsrs r0, r2, 3 + movs r1, 0x1 + ands r0, r1 + movs r1, 0x7 + ands r1, r2 + bl sub_811B524 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r7, 0 + adds r1, r5, 0 + mov r3, r8 + bl sub_811BBE0 +_0811BD90: + adds r4, 0x1 + adds r5, 0x1 + cmp r5, 0x4 + ble _0811BD32 +_0811BD98: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811BCA0 + + thumb_func_start sub_811BDA8 +sub_811BDA8: @ 811BDA8 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r0, [r4, 0xA] + lsls r0, 25 + lsrs r0, 25 + subs r0, 0x40 + cmp r0, 0x14 + bhi _0811BE4C + lsls r0, 2 + ldr r1, _0811BDC4 @ =_0811BDC8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811BDC4: .4byte _0811BDC8 + .align 2, 0 +_0811BDC8: + .4byte _0811BE1C + .4byte _0811BE3C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE3C + .4byte _0811BE3C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE3C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE4C + .4byte _0811BE3C + .4byte _0811BE3C + .4byte _0811BE3C + .4byte _0811BE1C +_0811BE1C: + ldrb r1, [r4, 0xB] + lsls r1, 31 + lsrs r1, 31 + ldrb r2, [r4, 0x2] + adds r0, r5, 0 + bl sub_811B8BC + movs r4, 0 +_0811BE2C: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BC68 + adds r4, 0x1 + cmp r4, 0x4 + bls _0811BE2C + b _0811BE58 +_0811BE3C: + adds r0, r5, 0 + bl sub_811B90C + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BCA0 + b _0811BE58 +_0811BE4C: + ldr r0, _0811BE60 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c" + ldr r1, _0811BE64 @ =0x000003d3 + ldr r2, _0811BE68 @ =gUnknown_8457174 "0" + movs r3, 0x1 + bl AGBAssert +_0811BE58: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811BE60: .4byte gUnknown_8457138 +_0811BE64: .4byte 0x000003d3 +_0811BE68: .4byte gUnknown_8457174 + thumb_func_end sub_811BDA8 + + thumb_func_start sub_811BE6C +sub_811BE6C: @ 811BE6C + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_811B90C + movs r4, 0 +_0811BE76: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BC68 + adds r4, 0x1 + cmp r4, 0x4 + ble _0811BE76 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811BE6C + + thumb_func_start sub_811BE8C +sub_811BE8C: @ 811BE8C + push {r4,r5,lr} + ldr r2, _0811BEAC @ =gUnknown_203B088 + movs r1, 0 + str r1, [r2] + movs r5, 0 + ldr r4, [r0] +_0811BE98: + ldrb r0, [r4, 0x1A] + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x1 + bne _0811BEB0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BDA8 + b _0811BEBC + .align 2, 0 +_0811BEAC: .4byte gUnknown_203B088 +_0811BEB0: + cmp r1, 0x2 + bne _0811BEBC + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811BE6C +_0811BEBC: + adds r4, 0x20 + adds r5, 0x1 + cmp r5, 0x7 + ble _0811BE98 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811BE8C + + thumb_func_start sub_811BECC +sub_811BECC: @ 811BECC + ldr r1, _0811BED8 @ =gUnknown_203B088 + movs r0, 0x96 + lsls r0, 1 + str r0, [r1] + bx lr + .align 2, 0 +_0811BED8: .4byte gUnknown_203B088 + thumb_func_end sub_811BECC + + thumb_func_start sub_811BEDC +sub_811BEDC: @ 811BEDC + push {lr} + adds r2, r0, 0 + ldr r0, _0811BEFC @ =gUnknown_203B088 + ldr r1, [r0] + adds r1, 0x1 + str r1, [r0] + movs r0, 0x96 + lsls r0, 1 + cmp r1, r0 + bls _0811BEF6 + adds r0, r2, 0 + bl sub_811BE8C +_0811BEF6: + pop {r0} + bx r0 + .align 2, 0 +_0811BEFC: .4byte gUnknown_203B088 + thumb_func_end sub_811BEDC + + thumb_func_start sub_811BF00 +sub_811BF00: @ 811BF00 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r5, r0, 0 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + bl is_walking_or_running + cmp r0, 0 + bne _0811BF48 + b _0811BFEE +_0811BF1C: + ldr r4, _0811BF44 @ =gUnknown_8457116 + bl GetPlayerFacingDirection + lsls r0, 24 + lsrs r0, 24 + adds r0, r4 + ldrb r2, [r0] + adds r0, r6, 0 + ldr r1, [sp, 0xC] + bl sub_811C008 + ldr r0, [sp, 0x4] + strh r6, [r0] + mov r1, sp + ldrh r2, [r1, 0xC] + ldr r1, [sp, 0x8] + strh r2, [r1] + movs r0, 0x1 + b _0811BFF0 + .align 2, 0 +_0811BF44: .4byte gUnknown_8457116 +_0811BF48: + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl GetXYCoordsOneStepInFrontOfPlayer + movs r0, 0 + str r0, [sp, 0xC] + ldr r0, _0811C000 @ =gUnknown_84570EC + adds r7, r5, 0 + movs r1, 0 + mov r10, r1 + adds r2, r0, 0x2 + str r2, [sp, 0x10] + str r0, [sp, 0x14] +_0811BF66: + movs r6, 0 + ldr r4, [sp, 0x14] + movs r0, 0 + ldrsh r4, [r4, r0] + mov r9, r4 + ldr r1, [sp, 0x10] + mov r8, r1 + ldr r5, _0811C004 @ =gUnknown_845710C +_0811BF76: + mov r2, r10 + adds r3, r2, r6 + mov r0, sp + movs r4, 0 + ldrsh r1, [r0, r4] + movs r0, 0 + ldrsb r0, [r5, r0] + add r0, r9 + adds r0, 0x7 + cmp r1, r0 + bne _0811BFCA + mov r1, sp + movs r2, 0x2 + ldrsh r0, [r1, r2] + mov r4, r8 + movs r2, 0 + ldrsh r1, [r4, r2] + movs r2, 0x1 + ldrsb r2, [r5, r2] + adds r1, r2 + adds r1, 0x7 + cmp r0, r1 + bne _0811BFCA + adds r0, r3, 0 + subs r0, 0x38 + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_806916C + cmp r0, 0 + bne _0811BFCA + adds r0, r4, 0 + bl sub_8069294 + cmp r0, 0 + bne _0811BFCA + ldrb r1, [r7, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + beq _0811BF1C +_0811BFCA: + adds r5, 0x2 + adds r6, 0x1 + cmp r6, 0x4 + ble _0811BF76 + adds r7, 0x20 + movs r4, 0x5 + add r10, r4 + ldr r0, [sp, 0x10] + adds r0, 0x4 + str r0, [sp, 0x10] + ldr r1, [sp, 0x14] + adds r1, 0x4 + str r1, [sp, 0x14] + ldr r2, [sp, 0xC] + adds r2, 0x1 + str r2, [sp, 0xC] + cmp r2, 0x7 + ble _0811BF66 +_0811BFEE: + movs r0, 0 +_0811BFF0: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811C000: .4byte gUnknown_84570EC +_0811C004: .4byte gUnknown_845710C + thumb_func_end sub_811BF00 + + thumb_func_start sub_811C008 +sub_811C008: @ 811C008 + push {r4,lr} + adds r4, r0, 0 + adds r3, r1, 0 + lsls r1, r2, 24 + lsrs r1, 24 + lsls r0, r3, 2 + adds r0, r3 + subs r0, 0x38 + adds r0, r4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8069058 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811C008 + + thumb_func_start sub_811C028 +sub_811C028: @ 811C028 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + lsls r3, r4, 5 + adds r3, r2 + adds r2, r3, 0 + bl sub_811BBA0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_811C008 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811C028 + + thumb_func_start sub_811C04C +sub_811C04C: @ 811C04C + push {r4-r7,lr} + movs r0, 0xA + bl sub_81173C0 + movs r4, 0 + movs r7, 0x64 + ldr r6, _0811C0CC @ =gPlayerParty + ldr r5, _0811C0D0 @ =gEnemyParty +_0811C05C: + ldr r0, _0811C0D4 @ =gSelectedOrderFromParty + adds r0, r4, r0 + ldrb r0, [r0] + subs r0, 0x1 + adds r1, r0, 0 + muls r1, r7 + adds r1, r6 + adds r0, r5, 0 + movs r2, 0x64 + bl memcpy + adds r5, 0x64 + adds r4, 0x1 + cmp r4, 0x1 + ble _0811C05C + ldr r4, _0811C0CC @ =gPlayerParty + movs r0, 0xFA + lsls r0, 1 + adds r5, r4, r0 +_0811C082: + adds r0, r4, 0 + bl ZeroMonData + adds r4, 0x64 + cmp r4, r5 + ble _0811C082 + ldr r4, _0811C0CC @ =gPlayerParty + movs r5, 0 + adds r6, r4, 0 + adds r6, 0x64 +_0811C096: + ldr r1, _0811C0D0 @ =gEnemyParty + adds r1, r5, r1 + adds r0, r4, 0 + movs r2, 0x64 + bl memcpy + adds r4, 0x64 + adds r5, 0x64 + cmp r4, r6 + ble _0811C096 + movs r0, 0x32 + bl IncrementGameStat + bl CalculatePlayerPartyCount + ldr r0, _0811C0D8 @ =gTrainerBattleOpponent_A + movs r2, 0xC0 + lsls r2, 4 + adds r1, r2, 0 + strh r1, [r0] + ldr r0, _0811C0DC @ =CB2_InitBattle + bl SetMainCallback2 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811C0CC: .4byte gPlayerParty +_0811C0D0: .4byte gEnemyParty +_0811C0D4: .4byte gSelectedOrderFromParty +_0811C0D8: .4byte gTrainerBattleOpponent_A +_0811C0DC: .4byte CB2_InitBattle + thumb_func_end sub_811C04C + + thumb_func_start sub_811C0E0 +sub_811C0E0: @ 811C0E0 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + sub sp, 0x18 + adds r5, r0, 0 + mov r10, r1 + adds r6, r2, 0 + ldr r4, [sp, 0x34] + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x1 + mov r8, r0 + ldr r1, _0811C14C @ =gUnknown_84571A8 + mov r9, r1 + ldrb r0, [r1] + lsls r1, r0, 4 + orrs r1, r0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + str r3, [sp, 0x14] + bl FillWindowPixelBuffer + mov r0, r8 + str r0, [sp] + str r0, [sp, 0x4] + mov r1, r9 + str r1, [sp, 0x8] + lsls r4, 24 + asrs r4, 24 + str r4, [sp, 0xC] + mov r0, r10 + str r0, [sp, 0x10] + adds r0, r5, 0 + movs r1, 0x3 + adds r2, r6, 0 + ldr r3, [sp, 0x14] + bl AddTextPrinterParameterized4 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811C14C: .4byte gUnknown_84571A8 + thumb_func_end sub_811C0E0 + + thumb_func_start sub_811C150 +sub_811C150: @ 811C150 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0811C168 + cmp r0, 0x1 + beq _0811C196 + b _0811C1AA +_0811C168: + movs r0, 0 + movs r1, 0x1 + movs r2, 0xD + bl DrawTextBorderOuter + str r5, [sp] + movs r0, 0 + adds r1, r6, 0 + movs r2, 0 + movs r3, 0x2 + bl sub_811C0E0 + movs r0, 0 + bl PutWindowTilemap + movs r0, 0 + movs r1, 0x3 + bl CopyWindowToVram + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _0811C1AA +_0811C196: + movs r0, 0 + bl IsTextPrinterActive + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0811C1AA + strh r0, [r4] + movs r0, 0x1 + b _0811C1AC +_0811C1AA: + movs r0, 0 +_0811C1AC: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811C150 + + thumb_func_start sub_811C1B4 +sub_811C1B4: @ 811C1B4 + push {lr} + bl LoadOam + bl ProcessSpriteCopyRequests + bl TransferPlttBuffer + pop {r0} + bx r0 + thumb_func_end sub_811C1B4 + + thumb_func_start sub_811C1C8 +sub_811C1C8: @ 811C1C8 + push {r4,lr} + sub sp, 0xC + ldr r1, _0811C1E8 @ =gMain + movs r2, 0x87 + lsls r2, 3 + adds r0, r1, r2 + ldrb r0, [r0] + adds r2, r1, 0 + cmp r0, 0x33 + bls _0811C1DE + b _0811C516 +_0811C1DE: + lsls r0, 2 + ldr r1, _0811C1EC @ =_0811C1F0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811C1E8: .4byte gMain +_0811C1EC: .4byte _0811C1F0 + .align 2, 0 +_0811C1F0: + .4byte _0811C2C0 + .4byte _0811C364 + .4byte _0811C38C + .4byte _0811C3B0 + .4byte _0811C400 + .4byte _0811C516 + .4byte _0811C4E4 + .4byte _0811C4C0 + .4byte _0811C4E4 + .4byte _0811C500 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C516 + .4byte _0811C48C + .4byte _0811C4A8 +_0811C2C0: + movs r0, 0 + movs r1, 0 + bl SetGpuReg + ldr r4, _0811C350 @ =gUnknown_203B08C + movs r0, 0x4 + bl AllocZeroed + str r0, [r4] + bl ResetSpriteData + bl FreeAllSpritePalettes + bl ResetTasks + movs r0, 0 + bl ResetBgsAndClearDma3BusyFlags + ldr r1, _0811C354 @ =gUnknown_8457194 + movs r0, 0 + movs r2, 0x1 + bl InitBgsFromTemplates + bl ResetTempTileDataBuffers + ldr r0, _0811C358 @ =gUnknown_8457198 + bl InitWindows + lsls r0, 16 + cmp r0, 0 + bne _0811C300 + b _0811C52A +_0811C300: + bl DeactivateAllTextPrinters + movs r0, 0 + bl ClearWindowTilemap + movs r0, 0 + movs r1, 0 + bl FillWindowPixelBuffer + movs r0, 0 + movs r1, 0x11 + bl FillWindowPixelBuffer + movs r0, 0x1E + str r0, [sp] + movs r0, 0x14 + str r0, [sp, 0x4] + movs r0, 0xF + str r0, [sp, 0x8] + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl FillBgTilemapBufferRect + movs r0, 0 + movs r1, 0x1 + movs r2, 0xD0 + bl TextWindow_SetStdFrame0_WithPal + bl Menu_LoadStdPal + ldr r0, _0811C35C @ =sub_811C1B4 + bl SetVBlankCallback + ldr r1, _0811C360 @ =gMain + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _0811C4F2 + .align 2, 0 +_0811C350: .4byte gUnknown_203B08C +_0811C354: .4byte gUnknown_8457194 +_0811C358: .4byte gUnknown_8457198 +_0811C35C: .4byte sub_811C1B4 +_0811C360: .4byte gMain +_0811C364: + ldr r0, _0811C380 @ =gUnknown_203B08C + ldr r0, [r0] + ldr r1, _0811C384 @ =gUnknown_841E538 + movs r2, 0 + bl sub_811C150 + cmp r0, 0 + bne _0811C376 + b _0811C516 +_0811C376: + ldr r1, _0811C388 @ =gMain + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0811C4F2 + .align 2, 0 +_0811C380: .4byte gUnknown_203B08C +_0811C384: .4byte gUnknown_841E538 +_0811C388: .4byte gMain +_0811C38C: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade + movs r0, 0 + bl ShowBg + ldr r1, _0811C3AC @ =gMain + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + b _0811C4F2 + .align 2, 0 +_0811C3AC: .4byte gMain +_0811C3B0: + bl UpdatePaletteFade + lsls r0, 24 + cmp r0, 0 + beq _0811C3BC + b _0811C516 +_0811C3BC: + ldr r4, _0811C3D8 @ =gBlockSendBuffer + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x20 + bl memset + ldr r0, _0811C3DC @ =gSelectedOrderFromParty + ldrb r1, [r0] + ldrb r0, [r0, 0x1] + cmn r1, r0 + bne _0811C3E0 + movs r0, 0x52 + b _0811C3E2 + .align 2, 0 +_0811C3D8: .4byte gBlockSendBuffer +_0811C3DC: .4byte gSelectedOrderFromParty +_0811C3E0: + movs r0, 0x51 +_0811C3E2: + strb r0, [r4] + ldr r1, _0811C3F8 @ =gBlockSendBuffer + movs r0, 0 + movs r2, 0x20 + bl SendBlock + ldr r1, _0811C3FC @ =gMain + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0811C4F2 + .align 2, 0 +_0811C3F8: .4byte gBlockSendBuffer +_0811C3FC: .4byte gMain +_0811C400: + bl GetBlockReceivedStatus + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _0811C40E + b _0811C516 +_0811C40E: + ldr r1, _0811C440 @ =gBlockRecvBuffer + ldrh r0, [r1] + cmp r0, 0x51 + bne _0811C448 + movs r2, 0x80 + lsls r2, 1 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r0, 0x51 + bne _0811C448 + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r0, _0811C444 @ =gMain + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x32 + b _0811C47E + .align 2, 0 +_0811C440: .4byte gBlockRecvBuffer +_0811C444: .4byte gMain +_0811C448: + bl sub_800AAC0 + ldr r4, _0811C46C @ =gBlockRecvBuffer + bl GetMultiplayerId + lsls r0, 24 + lsrs r0, 16 + adds r0, r4 + ldrh r0, [r0] + cmp r0, 0x52 + bne _0811C474 + ldr r0, _0811C470 @ =gMain + movs r2, 0x87 + lsls r2, 3 + adds r0, r2 + movs r1, 0x6 + b _0811C47E + .align 2, 0 +_0811C46C: .4byte gBlockRecvBuffer +_0811C470: .4byte gMain +_0811C474: + ldr r0, _0811C488 @ =gMain + movs r1, 0x87 + lsls r1, 3 + adds r0, r1 + movs r1, 0x8 +_0811C47E: + strb r1, [r0] + bl ResetBlockReceivedFlags + b _0811C516 + .align 2, 0 +_0811C488: .4byte gMain +_0811C48C: + bl UpdatePaletteFade + lsls r0, 24 + cmp r0, 0 + bne _0811C516 + bl sub_800AB9C + ldr r1, _0811C4A4 @ =gMain + movs r2, 0x87 + lsls r2, 3 + adds r1, r2 + b _0811C4F2 + .align 2, 0 +_0811C4A4: .4byte gMain +_0811C4A8: + bl IsLinkTaskFinished + lsls r0, 24 + cmp r0, 0 + beq _0811C516 + ldr r0, _0811C4BC @ =sub_811C04C + bl SetMainCallback2 + b _0811C516 + .align 2, 0 +_0811C4BC: .4byte sub_811C04C +_0811C4C0: + ldr r0, _0811C4D8 @ =gUnknown_203B08C + ldr r0, [r0] + ldr r1, _0811C4DC @ =gUnknown_841E58D + movs r2, 0x1 + bl sub_811C150 + cmp r0, 0 + beq _0811C516 + ldr r0, _0811C4E0 @ =CB2_ReturnToField + bl SetMainCallback2 + b _0811C516 + .align 2, 0 +_0811C4D8: .4byte gUnknown_203B08C +_0811C4DC: .4byte gUnknown_841E58D +_0811C4E0: .4byte CB2_ReturnToField +_0811C4E4: + ldr r0, _0811C4FC @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + bne _0811C516 + movs r0, 0x87 + lsls r0, 3 + adds r1, r2, r0 +_0811C4F2: + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0811C516 + .align 2, 0 +_0811C4FC: .4byte gReceivedRemoteLinkPlayers +_0811C500: + ldr r0, _0811C534 @ =gUnknown_203B08C + ldr r0, [r0] + ldr r1, _0811C538 @ =gUnknown_841E572 + movs r2, 0x1 + bl sub_811C150 + cmp r0, 0 + beq _0811C516 + ldr r0, _0811C53C @ =CB2_ReturnToField + bl SetMainCallback2 +_0811C516: + bl RunTasks + bl RunTextPrinters + bl AnimateSprites + bl BuildOamBuffer + bl UpdatePaletteFade +_0811C52A: + add sp, 0xC + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811C534: .4byte gUnknown_203B08C +_0811C538: .4byte gUnknown_841E572 +_0811C53C: .4byte CB2_ReturnToField + thumb_func_end sub_811C1C8 + + .align 2, 0 @ Don't pad with nop. diff --git a/common_syms/link_rfu.txt b/common_syms/link_rfu.txt new file mode 100644 index 000000000..add61fde8 --- /dev/null +++ b/common_syms/link_rfu.txt @@ -0,0 +1 @@ +gUnknown_3005E10 diff --git a/common_syms/link_rfu_2.txt b/common_syms/link_rfu_2.txt new file mode 100644 index 000000000..bf170665d --- /dev/null +++ b/common_syms/link_rfu_2.txt @@ -0,0 +1,3 @@ +gUnknown_3005440 +Rfu +gUnknown_3005E00 diff --git a/data/link_rfu.s b/data/easy_chat_2.s index 79be01714..79be01714 100644 --- a/data/link_rfu.s +++ b/data/easy_chat_2.s diff --git a/data/link_rfu_2.s b/data/link_rfu_2.s deleted file mode 100644 index 4f88177aa..000000000 --- a/data/link_rfu_2.s +++ /dev/null @@ -1,277 +0,0 @@ -#include "constants/region_map.h" -#include "constants/flags.h" -#include "constants/moves.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_843EBB4:: @ 843EBB4 - .byte 0x04, 0x20 - .2byte 0x0000 - .byte 0x00 - .align 1 - .2byte 0x0002 - .4byte gUnknown_3005440 - .4byte gUnknown_3005E00 - .byte 0x01, 0x00 - .2byte 0x0258, 0x012c - .align 2 - -gUnknown_843EBCC:: @ 843EBCC - .byte 0x00, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 - -gUnknown_843EBD4:: @ 843EBD4 - .4byte 0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f - .4byte 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff - .4byte 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff - .4byte 0x00ffffff - -gUnknown_843EC38:: @ 843EC38 - .byte 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02 - .byte 0x03 - -gUnknown_843EC41:: @ 843EC41 - .byte 0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x03 - .byte 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04 - -gUnknown_843EC51:: @ 843EC51 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00 - .byte 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x00 - -gUnknown_843EC64:: @ 843EC64 - .4byte gBlockSendBuffer - .2byte 0xc8 - .align 2 - .4byte gBlockSendBuffer - .2byte 0xc8 - .align 2 - .4byte gBlockSendBuffer - .2byte 0x64 - .align 2 - .4byte gBlockSendBuffer - .2byte 0xdc - .align 2 - .4byte gBlockSendBuffer - .2byte 0x28 - .align 2 - -gUnknown_843EC8C:: @ 843EC8C - .2byte 0x0002, 0x7f7d, 0xffff - - .macro ascipad str, len -1: - .ascii "\str" -2: - .space \len - (2b - 1b) - .endm - -sUnref_843EC92:: - ascipad "RFU WAIT", 15 - ascipad "RFU BOOT", 15 - ascipad "RFU ERROR", 15 - ascipad "RFU RESET", 15 - ascipad "RFU CONFIG", 15 - ascipad "RFU START", 15 - ascipad "RFU SC POLL", 15 - ascipad "RFU SP POLL", 15 - ascipad "RFU START", 15 - ascipad "RFU SEND ERR", 15 - ascipad "RFU CP POLL", 15 - -sUnref_843ED38:: - ascipad " ", 16 - ascipad "RECOVER START ", 16 - ascipad "DISSCONECT ", 16 - ascipad "RECOVER SUUSES", 16 - ascipad "RECOVER FAILED", 16 - - .align 2 -gUnknown_843ED88:: @ 843ED88 - .4byte sub_80FA834 - .4byte sub_80FAA94 - .4byte sub_80FACF0 - - .align 2 -gUnknown_843ED94:: @ 843ED94 - abspath "rfu.c" - - .align 2 -gUnknown_843EDC4:: @ 843EDC4 - .asciz "Rfu.RfuFunc == NULL" - - .align 2 -gUnknown_843EDD8:: @ 843EDD8 - .asciz "size<=252" - - .align 2 -gUnknown_843EDE4:: @ 843EDE4 - .asciz "PokemonSioInfo" - - .byte 0, 1, 7, 0x14, 0xFF - - .align 2 -gUnknown_843EDF8:: @ 843EDF8 - .asciz "LINK LOSS DISCONNECT!" - - .align 2 -gUnknown_843EE10:: @ 843EE10 - .asciz "LINK LOSS RECOVERY NOW" - - .align 2 -gUnknown_843EE28:: @ 843EE28 - .asciz " " - -gUnknown_843EE47:: @ 843EE47 - .asciz " " - -gUnknown_843EE57:: @ 843EE57 - .asciz " " - .asciz " " - .asciz "*" - - .align 2 -gUnknown_843EE64:: @ 843EE64 - .asciz "NOWSLOT" - .align 2 - .asciz " " - .align 2 - .asciz "CLOCK DRIFT" - .align 2 - .asciz "BUSY SEND " - .align 2 - .asciz "CMD REJECT " - .align 2 - .asciz "CLOCK SLAVE" - .align 2 - .asciz "CHILD " - .align 2 - .asciz "PARENT" - .align 2 - .asciz "SEARCH" - - .align 2 -gUnknown_843EEC0:: - .incbin "graphics/interface/wireless_link_icon.gbapal" - -gUnknown_843EEE0:: - .incbin "graphics/interface/wireless_link_icon.4bpp.lz" - -gUnknown_843F004:: @ 843F004 - .byte 0xff, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x37 - .byte 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f - .byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 - .byte 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f - .byte 0x00, 0xab, 0xb5, 0xb6, 0xb1, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0xb2, 0xf1, 0x00, 0xae, 0xad, 0xba - .byte 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8 - .byte 0xa9, 0xaa, 0x00, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f - .byte 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1 - .byte 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9 - .byte 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1 - .byte 0xd2, 0xd3, 0xd4, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6 - .byte 0x00, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb - .byte 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3 - .byte 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb - .byte 0xec, 0xed, 0xee, 0x2d, 0x2f, 0x30, 0x31, 0x32 - .byte 0x33, 0x34, 0x35, 0x36, 0x50, 0x00, 0x01, 0x02 - .byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a - .byte 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12 - .byte 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a - .byte 0x1b, 0xad, 0xb3, 0xb4, 0x00, 0xaf, 0x7d, 0x7f - .byte 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xa0 - .byte 0xae, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57 - .byte 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f - .byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67 - .byte 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f - .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77 - .byte 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7e, 0xb0, 0xac - .byte 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23 - .byte 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b - .byte 0x2c, 0x2e, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c - .byte 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94 - -gUnknown_843F104:: @ 843F104 - .byte 0x20, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c - .byte 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94 - .byte 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c - .byte 0x9d, 0x9e, 0x9f, 0xa0, 0xe0, 0xe1, 0xe2, 0xe3 - .byte 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb - .byte 0xec, 0xed, 0xee, 0xef, 0xf0, 0x7b, 0xf1, 0x7c - .byte 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x07 - .byte 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f - .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 - .byte 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f - .byte 0x84, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7 - .byte 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf - .byte 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7 - .byte 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf - .byte 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7 - .byte 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xa6, 0xdd, 0xa7 - .byte 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xf2 - .byte 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa - .byte 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x01, 0x02, 0x03 - .byte 0x04, 0x05, 0x06, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f - .byte 0xaf, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36 - .byte 0x37, 0x38, 0x39, 0x21, 0xdf, 0xa1, 0xb0, 0xa5 - .byte 0xde, 0x24, 0x2a, 0xa2, 0xa3, 0x22, 0x23, 0x20 - .byte 0xa4, 0x20, 0x2f, 0x41, 0x42, 0x43, 0x44, 0x45 - .byte 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d - .byte 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55 - .byte 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63 - .byte 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b - .byte 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73 - .byte 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20 - .byte 0x20, 0x2b, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x20 - .byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00 - -gUnknown_843F204:: @ 843F204 - .4byte 0x40000000, 0x00000000 - -gAnimCmd_843F20C:: - obj_image_anim_frame 0x0004, 5 - obj_image_anim_frame 0x0008, 5 - obj_image_anim_frame 0x000c, 5 - obj_image_anim_frame 0x0010, 10 - obj_image_anim_frame 0x000c, 5 - obj_image_anim_frame 0x0008, 5 - obj_image_anim_jump 0 - -gAnimCmd_843F228:: - obj_image_anim_frame 0x0004, 5 - obj_image_anim_frame 0x0008, 5 - obj_image_anim_frame 0x000c, 10 - obj_image_anim_frame 0x0008, 5 - obj_image_anim_jump 0 - -gAnimCmd_843F23C:: - obj_image_anim_frame 0x0004, 5 - obj_image_anim_frame 0x0008, 5 - obj_image_anim_jump 0 - -gAnimCmd_843F248:: - obj_image_anim_frame 0x0004, 10 - obj_image_anim_frame 0x0014, 10 - obj_image_anim_jump 0 - -gAnimCmd_843F254:: - obj_image_anim_frame 0x0018, 10 - obj_image_anim_frame 0x0004, 10 - obj_image_anim_jump 0 - -gSpriteAnimTable_843F260:: - .4byte gAnimCmd_843F20C - .4byte gAnimCmd_843F228 - .4byte gAnimCmd_843F23C - .4byte gAnimCmd_843F248 - .4byte gAnimCmd_843F254 - -gUnknown_843F274:: @ 843F274 - obj_tiles gUnknown_843EEE0, 0x0380, 54321 - -gUnknown_843F27C:: @ 843F27C - obj_pal gUnknown_843EEC0, 54322 - -gUnknown_843F284:: @ 843F284 - spr_template 54321, 54322, gUnknown_843F204, gSpriteAnimTable_843F260, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/data/link_rfu_3.s b/data/union_room.s index 6cd65b04d..9bcc4a193 100644 --- a/data/link_rfu_3.s +++ b/data/union_room.s @@ -1549,6 +1549,8 @@ gUnknown_8459580:: @ 8459580 gUnknown_8459588:: @ 8459588 .string "Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}$" + @ why is this data here of all places? + .align 2 gUnknown_84595B0:: .string "Canceled reading the Card.$" diff --git a/include/global.h b/include/global.h index d8ea62d5c..6386071c4 100644 --- a/include/global.h +++ b/include/global.h @@ -712,6 +712,12 @@ struct TrainerRematchState u8 rematches[100]; }; +struct TrainerNameRecord +{ + u32 trainerId; + u8 trainerName[PLAYER_NAME_LENGTH]; +}; + struct SaveBlock1 { /*0x0000*/ struct Coords16 pos; @@ -766,7 +772,8 @@ struct SaveBlock1 /*0x3A18*/ u8 seen2[DEX_FLAGS_NO]; /*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH]; /*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS]; - /*0x3A94*/ u8 filler3A94[0x204]; + /*0x3A94*/ u8 filler3A94[0x114]; + /*0x3BA8*/ struct TrainerNameRecord trainerNameRecords[20]; /*0x3C98*/ struct DaycareMon route5DayCareMon; /*0x3D24*/ u8 filler3D24[0x10]; /*0x3D34*/ u32 unkArrayIdx; diff --git a/include/librfu.h b/include/librfu.h index cf409ca69..97fd8044e 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -275,34 +275,6 @@ // Status data for UNI-type communication (refer to gRfuSlotStatusUNI[x]->send.state) #define SLOT_STATE_SEND_UNI (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_UNI) // Transmitting -// TODO: move the 2 structs to some other header as they're declared by GF -struct UnkLinkRfuStruct_02022B14Substruct -{ - u16 unk_00_0:4; - u16 unk_00_4:1; - u16 unk_00_5:1; - u16 unk_00_6:1; - u16 isChampion:1; - u16 hasNationalDex:1; - u16 gameClear:1; - u16 unk_01_2:4; - u16 unk_01_6:2; - u8 playerTrainerId[2]; -}; - -struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14 -{ - struct UnkLinkRfuStruct_02022B14Substruct unk_00; - u8 unk_04[4]; - u16 species:10; - u16 type:6; - u8 unk_0a_0:7; - u8 unk_0a_7:1; - u8 playerGender:1; - u8 level:7; - u8 unk_0c; -}; - // the following structs are not documented in SDK struct RfuPacket8 { @@ -616,7 +588,7 @@ u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot); // Functions for sending/receiving data to RFU // Data transmission -void rfu_REQ_sendData(u8 clockChangeFlag); +void rfu_REQ_sendData(bool8 clockChangeFlag); // Used only by parent device. Resend previous sent data (packet) void rfu_REQ_PARENT_resumeRetransmitAndChange(void); // Read receive data diff --git a/include/link.h b/include/link.h index d61152d8a..4175ac97f 100644 --- a/include/link.h +++ b/include/link.h @@ -65,6 +65,19 @@ #define LINKCMD_SEND_HELD_KEYS_2 0xCAFE #define LINKCMD_0xCCCC 0xCCCC +#define LINKTYPE_0x1111 0x1111 // trade +#define LINKTYPE_0x1122 0x1122 // trade +#define LINKTYPE_0x1133 0x1133 // trade +#define LINKTYPE_0x1144 0x1144 // trade +#define LINKTYPE_BATTLE 0x2211 +#define LINKTYPE_0x2222 0x2222 // unused battle? +#define LINKTYPE_SINGLE_BATTLE 0x2233 +#define LINKTYPE_DOUBLE_BATTLE 0x2244 +#define LINKTYPE_MULTI_BATTLE 0x2255 +#define LINKTYPE_BATTLE_TOWER_50 0x2266 +#define LINKTYPE_BATTLE_TOWER_OPEN 0x2277 +#define LINKTYPE_BATTLE_TOWER 0x2288 + #define MASTER_HANDSHAKE 0x8FFF #define SLAVE_HANDSHAKE 0xB9A0 @@ -188,6 +201,7 @@ extern bool8 gLinkVSyncDisabled; extern u8 gWirelessCommType; extern u8 gShouldAdvanceLinkState; +extern u16 gLinkPartnersHeldKeys[6]; void Task_DestroySelf(u8); void OpenLink(void); @@ -261,5 +275,8 @@ bool8 IsWirelessAdapterConnected(void); bool8 sub_800A474(u8 a0); void LinkVSync(void); bool8 HandleLinkConnection(void); +void sub_800B0B4(void); +void sub_800B110(u32 who); +void sub_800ACBC(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 033f4c8d4..e6fb946a6 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -4,14 +4,231 @@ #include "global.h" #include "librfu.h" +// RfuTgtData.gname is read as these structs. +struct GFtgtGnameSub +{ + u16 unk_00_0:4; + u16 unk_00_4:1; + u16 unk_00_5:1; + u16 unk_00_6:1; + u16 isChampion:1; + u16 hasNationalDex:1; + u16 gameClear:1; + u16 unk_01_2:4; + u16 unk_01_6:2; + u8 playerTrainerId[2]; +}; + +struct __attribute__((packed, aligned(2))) GFtgtGname +{ + struct GFtgtGnameSub unk_00; + u8 unk_04[4]; + u16 species:10; + u16 type:6; + u8 unk_0a_0:7; + u8 unk_0a_7:1; + u8 playerGender:1; + u8 level:7; + u8 unk_0c; +}; + struct Padded_U8 { u8 value; }; +struct UnkLinkRfuStruct_02022B2C +{ + u8 unk_00; + u8 unk_01; + u16 unk_02; + u8 unk_04; + u16 unk_06; + struct GFtgtGname *unk_08; + u8 *unk_0c; + u8 unk_10; + u8 unk_11; + u16 unk_12; + u16 unk_14; +}; + +struct UnkLinkRfuStruct_02022B44 +{ + u8 fill_00[6]; + u16 unk_06; + u8 fill_08[6]; + vu8 unk_0e; + u8 unk_0f; + u8 fill_10[0x54]; + u16 unk_64; + u8 fill_66[0x1d]; + u8 unk_83; + u8 fill_84[0x58]; +}; + +struct UnkRfuStruct_1 +{ + /* 0x000 */ u8 unk_00; + /* 0x001 */ u8 unk_01; + /* 0x002 */ vu8 unk_02; + /* 0x003 */ vu8 unk_03; + /* 0x004 */ u8 unk_04; + /* 0x005 */ u8 unk_05; + /* 0x006 */ u8 unk_06; + /* 0x007 */ u8 unk_07; + /* 0x008 */ u8 unk_08; + /* 0x009 */ u8 unk_09; + /* 0x00a */ u8 unk_0a; + /* 0x00b */ u8 unk_0b; + /* 0x00c */ u8 unk_0c; + /* 0x00d */ u8 unk_0d; + /* 0x00e */ u8 unk_0e; + /* 0x00f */ u8 unk_0f; + /* 0x010 */ u8 unk_10; + /* 0x011 */ u8 unk_11; + /* 0x012 */ u8 unk_12; + // aligned + /* 0x014 */ u16 unk_14; + /* 0x016 */ u16 unk_16; + /* 0x018 */ u16 unk_18; + /* 0x01a */ u16 unk_1a; + /* 0x01c */ u16 unk_1c; + /* 0x01e */ u16 unk_1e; + /* 0x020 */ const u16 *unk_20; + /* 0x024 */ u8 unk_24; + /* 0x026 */ u16 unk_26; + /* 0x028 */ u16 unk_28[RFU_CHILD_MAX]; + /* 0x030 */ u8 unk_30; + // aligned + /* 0x032 */ u16 unk_32; + /* 0x034 */ u16 unk_34[RFU_CHILD_MAX]; + /* 0x03c */ const struct UnkLinkRfuStruct_02022B2C *unk_3c; + /* 0x040 */ void (*unk_40)(u8, u8); + /* 0x044 */ void (*unk_44)(u16); +}; + +struct UnkRfuStruct_2_Sub_6c +{ + /* 0x00 */ u16 unk_00; + /* 0x02 */ u16 unk_02; + /* 0x04 */ const u8 *unk_04; + /* 0x08 */ u32 unk_08; + /* 0x0c */ u32 unk_0c; + /* 0x10 */ u8 unk_10; + /* 0x11 */ u8 unk_11; + /* 0x12 */ u8 unk_12; +}; + +struct UnkRfuStruct_2_Sub_124 +{ + /* 0x000 */ u8 unk_00[20][70]; + /* 0x578 */ vu8 unk_8c0; + /* 0x579 */ vu8 unk_8c1; + /* 0x57a */ vu8 unk_8c2; + /* 0x57b */ vu8 unk_8c3; +}; + +struct UnkRfuStruct_2_Sub_9e8 +{ + /* 0x000 */ u8 unk_00[40][14]; + /* 0x230 */ vu8 unk_230; + /* 0x231 */ vu8 unk_231; + /* 0x232 */ vu8 unk_232; + /* 0x233 */ vu8 unk_233; +}; + +struct UnkRfuStruct_2_Sub_c1c +{ + /* 0x00 */ u8 unk_00[2][14]; + /* 0x1c */ vu8 unk_1c; + /* 0x1d */ vu8 unk_1d; + /* 0x1e */ vu8 unk_1e; +}; + +struct UnkRfuStruct_Sub_Unused +{ + /* 0x000 */ u8 unk_00[2][256]; + /* 0x200 */ vu8 unk_200; + /* 0x201 */ vu8 unk_201; + /* 0x202 */ vu8 unk_202; + /* 0x203 */ vu8 unk_203; +}; + +struct UnkRfuStruct_2 +{ + /* 0x000 */ void (*RfuFunc)(void); + /* 0x004 */ u16 unk_04; + /* 0x006 */ u8 filler_06[4]; + /* 0x00a */ u16 unk_0a; + /* 0x00c */ u8 unk_0c; // parentChildMode? + /* 0x00d */ u8 playerCount; + /* 0x00e */ u8 unk_0e; + /* 0x00f */ u8 unk_0f; + /* 0x010 */ u16 unk_10; + /* 0x012 */ u16 unk_12; + /* 0x014 */ u8 unk_14[RFU_CHILD_MAX][14]; + /* 0x04c */ u8 unk_4c[14]; + /* 0x05a */ u8 unk_5a; + /* 0x05b */ u8 unk_5b; + /* 0x05c */ u8 unk_5c[5]; + /* 0x061 */ u8 unk_61[5]; + /* 0x066 */ u8 unk_66; + /* 0x067 */ u8 unk_67; + /* 0x068 */ u8 filler_68[4]; + /* 0x06c */ struct UnkRfuStruct_2_Sub_6c unk_6c; + /* 0x080 */ struct UnkRfuStruct_2_Sub_6c unk_80[5]; + /* 0x0e4 */ u8 unk_e4[5]; + /* 0x0e9 */ u8 unk_e9[5]; + /* 0x0ee */ vu8 unk_ee; + /* 0x0ef */ u8 unk_ef; + /* 0x0f0 */ u8 unk_f0; + /* 0x0f1 */ u8 unk_f1; + /* 0x0f2 */ u16 unk_f2[6]; + /* 0x0fe */ u16 unk_fe; + /* 0x100 */ u16 unk_100; + /* 0x102 */ u8 unk_102; + /* 0x104 */ struct RfuTgtData unk_104; + /* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124; + /* 0x6a0 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8; + /* 0x8d4 */ struct UnkRfuStruct_2_Sub_c1c unk_c1c; + /* 0x8f4 */ vu8 unk_c3c; + /* 0x8f5 */ u8 unk_c3d; + /* 0x8f6 */ vu8 unk_c3e; + /* 0x8f7 */ u8 unk_c3f[70]; + /* 0x93d */ u8 unk_c85; + /* 0x93e */ u8 unk_c86; + /* 0x93f */ u8 unk_c87[5][7][2]; + /* 0x985 */ u8 unk_ccd; + /* 0x986 */ u8 unk_cce; // childId + /* 0x987 */ u8 unk_ccf; + /* 0x988 */ vu8 unk_cd0; + /* 0x989 */ u8 unk_cd1[RFU_CHILD_MAX]; + /* 0x98d */ u8 unk_cd5[RFU_CHILD_MAX]; + /* 0x991 */ u8 unk_cd9; + /* 0x992 */ u8 unk_cda; + /* 0x993 */ vu8 unk_cdb; + /* 0x994 */ vu8 unk_cdc; + /* 0x995 */ u8 unk_cdd; + /* 0x996 */ u8 unk_cde[RFU_CHILD_MAX]; + /* 0x99a */ u8 unk_ce2; + /* 0x99b */ u8 unk_ce3; + /* 0x99c */ u8 unk_ce4; + /* 0x99d */ u8 unk_ce5; + /* 0x99e */ u8 unk_ce6; + /* 0x99f */ u8 unk_ce7; + /* 0x9a0 */ u8 unk_ce8; + /* 0x9a1 */ u8 unk_ce9; + /* 0x9a2 */ u8 unk_cea[RFU_CHILD_MAX]; + /* 0x9a6 */ u8 unk_cee[RFU_CHILD_MAX]; +}; // size: 0x9AC + +extern struct UnkRfuStruct_1 gUnknown_3005E10; +extern struct GFtgtGname gUnknown_3005440; +extern u8 gUnknown_3005E00[]; + void AddTextPrinterToWindow1(const u8 *str); bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); -void sub_80FA190(void); +void LinkRfu_FatalError(void); void MG_DrawCheckerboardPattern(void); void task_add_05_task_del_08FA224_when_no_RfuFunc(void); bool8 IsLinkRfuTaskFinished(void); @@ -29,8 +246,8 @@ bool32 IsSendingKeysToRfu(void); void Rfu_set_zero(void); u8 GetRfuPlayerCount(void); void sub_80F9828(void); -u8 rfu_get_multiplayer_id(void); -bool8 Rfu_InitBlockSend(const void * src, u16 size); +u8 LinkRfu_GetMultiplayerId(void); +bool32 Rfu_InitBlockSend(const u8 * src, size_t size); bool8 sub_80FA0F8(u8 a0); u8 Rfu_GetBlockReceivedStatus(void); void Rfu_SetBlockReceivedFlag(u8 who); @@ -45,9 +262,39 @@ void sub_80F8DC0(void); void sub_80FBB20(void); bool8 sub_80FA484(bool32 a0); void var_800D_set_xB(void); -struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void); +struct GFtgtGname *sub_80F9800(void); void sub_80FCF34(void); void InitRFU(void); +void sub_80FEB14(void); +bool32 sub_80FBA00(void); + +void sub_80FC478(struct UnkRfuStruct_2_Sub_124 *ptr); +void sub_80FC4D4(struct UnkRfuStruct_2_Sub_9e8 *ptr); + +void sub_80FD4B0(const struct UnkLinkRfuStruct_02022B2C *unk0); +u8 sub_80FD538(u8 r5, u16 r7, u16 r8, const u16 *r6); +void sub_80FD760(bool8 a0); +void sub_80FEA10(void (*func)(u16)); +void sub_80FB9E4(u8 a0, u16 a1); +u8 sub_80FB9F4(void); +void LinkRfu_REQ_SendData_HandleParentRelationship(bool8 clockChangeFlag); +void sub_80FC588(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2); +void sub_80FD52C(void); +u8 sub_80FD610(u16 parentId, u16 unk_1a); +bool8 sub_80FC79C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2); +bool8 sub_80FC888(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2); +void sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2); +bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1); +void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1); +u8 sub_80FEA34(u8 a0, u16 a1); +void sub_80FDA30(u32 a0); +void sub_80FCB54(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3); +void LinkRfu_syncVBlank_(void); +s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16)); +void sub_80FEB3C(void); +void sub_80FAFE0(u8 a0); +bool32 sub_80FA44C(u32 a0); +bool8 sub_80FC1B0(void); #include "mevent_server.h" extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[]; diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h index 6fed52119..32624d602 100644 --- a/include/mystery_gift_menu.h +++ b/include/mystery_gift_menu.h @@ -6,5 +6,6 @@ extern bool8 gGiftIsFromEReader; void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void); void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32); void c2_mystery_gift(void); +void c2_mystery_gift_e_reader_run(void); #endif //GUARD_MYSTERY_GIFT_MENU_H diff --git a/include/overworld.h b/include/overworld.h index 69c1e964f..c24b63cf9 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -4,6 +4,29 @@ #include "global.h" #include "main.h" +#define LINK_KEY_CODE_NULL 0x00 +#define LINK_KEY_CODE_EMPTY 0x11 +#define LINK_KEY_CODE_DPAD_DOWN 0x12 +#define LINK_KEY_CODE_DPAD_UP 0x13 +#define LINK_KEY_CODE_DPAD_LEFT 0x14 +#define LINK_KEY_CODE_DPAD_RIGHT 0x15 +#define LINK_KEY_CODE_UNK_2 0x16 +#define LINK_KEY_CODE_EXIT_ROOM 0x17 +#define LINK_KEY_CODE_START_BUTTON 0x18 +#define LINK_KEY_CODE_A_BUTTON 0x19 +#define LINK_KEY_CODE_UNK_4 0x1A // I'd guess this is the B button? + +// These two are a hack to stop user input until link stuff can be +// resolved. +#define LINK_KEY_CODE_HANDLE_RECV_QUEUE 0x1B +#define LINK_KEY_CODE_HANDLE_SEND_QUEUE 0x1C +#define LINK_KEY_CODE_UNK_7 0x1D +#define LINK_KEY_CODE_UNK_8 0x1E + +#define MOVEMENT_MODE_FREE 0 +#define MOVEMENT_MODE_FROZEN 1 +#define MOVEMENT_MODE_SCRIPTED 2 + struct UnkPlayerStruct { u8 player_field_0; @@ -153,4 +176,6 @@ void sub_805546C(u8 a0); bool32 sub_80582E0(void); bool32 sub_8058274(void); +extern u16 gHeldKeyCodeToSend; + #endif //GUARD_OVERWORLD_H diff --git a/include/trade.h b/include/trade.h index 030a03a83..d5106b172 100644 --- a/include/trade.h +++ b/include/trade.h @@ -2,7 +2,7 @@ #define GUARD_TRADE_H #include "global.h" -#include "librfu.h" +#include "link_rfu.h" #include "constants/trade.h" extern struct MailStruct gLinkPartnerMail[6]; @@ -11,7 +11,7 @@ extern u8 gSelectedTradeMonPositions[2]; extern const u16 gUnknown_826601C[]; void CB2_ReturnFromLinkTrade(void); s32 sub_804FB34(void); -s32 CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet); -s32 GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, struct UnkLinkRfuStruct_02022B14Substruct rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet); +s32 CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet); +s32 GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGnameSub rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet); #endif //GUARD_TRADE_H diff --git a/include/union_room.h b/include/union_room.h index 03628441b..d57683a8a 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -6,7 +6,7 @@ struct UnkStruct_Shared { - struct UnkLinkRfuStruct_02022B14 field_0; + struct GFtgtGname field_0; u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH]; }; @@ -149,7 +149,7 @@ struct TradeUnkStruct u32 personality; }; -extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_203B064; +extern struct GFtgtGnameSub gUnknown_203B064; extern u16 gUnionRoomOfferedSpecies; extern u8 gUnionRoomRequestedMonType; diff --git a/ld_script.txt b/ld_script.txt index 2544f8d42..da1f2b676 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -225,8 +225,9 @@ SECTIONS { asm/box_party_pokemon_dropdown.o(.text); src/save_menu_util.o(.text); src/map_preview_screen.o(.text); - asm/link_rfu_2.o(.text); - asm/link_rfu.o(.text); + src/link_rfu_2.o(.text); + src/link_rfu_3.o(.text); + src/link_rfu.o(.text); asm/easy_chat_2.o(.text); src/pokedex_screen.o(.text); asm/pokedex_screen.o(.text); @@ -240,7 +241,8 @@ SECTIONS { src/mailbox_pc.o(.text); src/menu.o(.text); src/quest_log.o(.text); - asm/link_rfu_3.o(.text); + asm/union_room.o(.text); + asm/union_room_player_avatar.o(.text); asm/pokemon_special_anim.o(.text); src/party_menu.o(.text); asm/union_room_chat.o(.text); @@ -509,8 +511,9 @@ SECTIONS { src/new_menu_helpers.o(.rodata); data/box_party_pokemon_dropdown.o(.rodata); src/map_preview_screen.o(.rodata); - data/link_rfu_2.o(.rodata); - data/link_rfu.o(.rodata); + src/link_rfu_2.o(.rodata); + src/link_rfu_3.o(.rodata); + data/easy_chat_2.o(.rodata); src/pokedex_screen.o(.rodata); data/pokedex_screen.o(.rodata); src/list_menu.o(.rodata); @@ -524,7 +527,7 @@ SECTIONS { data/decorations.o(.rodata); src/menu.o(.rodata); src/quest_log.o(.rodata); - data/link_rfu_3.o(.rodata); + data/union_room.o(.rodata); data/pokemon_special_anim.o(.rodata); src/party_menu.o(.rodata); data/union_room_chat.o(.rodata); diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index 96de99c2a..dccd342f2 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -1533,11 +1533,11 @@ void rfu_UNI_clearRecvNewDataFlag(u8 slotStatusIndex) gRfuSlotStatusUNI[slotStatusIndex]->recv.newDataFlag = 0; } -void rfu_REQ_sendData(u8 clockChangeFlag) +void rfu_REQ_sendData(bool8 clockChangeFlag) { if (gRfuLinkStatus->parentChild != MODE_NEUTRAL) { - if (gRfuLinkStatus->parentChild == 1 + if (gRfuLinkStatus->parentChild == MODE_PARENT && !(gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag | gRfuLinkStatus->sendSlotUNIFlag)) { if (gRfuStatic->commExistFlag) @@ -1555,7 +1555,7 @@ void rfu_REQ_sendData(u8 clockChangeFlag) gRfuFixed->LLFBuffer[0] = 1; gRfuFixed->LLFBuffer[4] = 0xFF; STWI_set_Callback_M(rfu_CB_sendData3); - if (clockChangeFlag == 0) + if (!clockChangeFlag) STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, 1); else STWI_send_DataTxAndChangeREQ(gRfuFixed->LLFBuffer, 1); @@ -1569,7 +1569,7 @@ void rfu_REQ_sendData(u8 clockChangeFlag) if (gRfuLinkStatus->LLFReadyFlag) { STWI_set_Callback_M(rfu_CB_sendData); - if (clockChangeFlag != 0) + if (clockChangeFlag) { STWI_send_DataTxAndChangeREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4); return; @@ -1577,7 +1577,7 @@ void rfu_REQ_sendData(u8 clockChangeFlag) STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4); } } - if (clockChangeFlag != 0) + if (clockChangeFlag) { if (gRfuLinkStatus->parentChild == MODE_PARENT) { diff --git a/src/link.c b/src/link.c index bdaa48cdf..7be93026b 100644 --- a/src/link.c +++ b/src/link.c @@ -984,7 +984,7 @@ u8 GetMultiplayerId(void) { if (gWirelessCommType == 1) { - return rfu_get_multiplayer_id(); + return LinkRfu_GetMultiplayerId(); } return SIO_MULTI_CNT->id; } diff --git a/src/link_rfu.c b/src/link_rfu.c new file mode 100644 index 000000000..0d6e14551 --- /dev/null +++ b/src/link_rfu.c @@ -0,0 +1,1381 @@ +#include "global.h" +#include "librfu.h" +#include "link_rfu.h" + +struct UnkRfuStruct_1 gUnknown_3005E10; + +static void sub_80FD4E4(void); +static void sub_80FDC28(u32 a0); +static void sub_80FDC98(u16 reqCommandId, u16 reqResult); +static void sub_80FE394(u16 reqCommandId); +static void sub_80FE418(void); +static void sub_80FE63C(void); +static void sub_80FE6F0(void); +static void sub_80FE74C(void); +static u8 sub_80FE778(void); +static void sub_80FE7F0(u8 a0, u8 a1); +static void sub_80FE818(u8 bmDisconnectSlot); +static void sub_80FE83C(u8 a0); +static void sub_80FE918(void); +static void sub_80FEAF4(void); + +u32 sub_80FD3A4(void) +{ + u32 id = rfu_REQBN_softReset_and_checkID(); + if (id == 0x8001) + gUnknown_3005E10.unk_08 = 1; + if (gUnknown_3005E10.unk_04 != 0x17 && gUnknown_3005E10.unk_04 != 0x01) + { + gUnknown_3005E10.unk_05 = 0; + gUnknown_3005E10.unk_04 = 0; + } + gUnknown_3005E10.unk_07 = 0; + gUnknown_3005E10.unk_0d = 0; + gUnknown_3005E10.unk_01 = 0; + gUnknown_3005E10.unk_00 = 0; + gUnknown_3005E10.unk_06 = -1; + sub_80FEAF4(); + return id; +} + +void LinkRfu_REQ_SendData_HandleParentRelationship(u8 clockChangeFlag) +{ + if (gRfuLinkStatus->parentChild == MODE_CHILD) + { + if (gUnknown_3005E10.unk_02 == TRUE) + clockChangeFlag = TRUE; + else + clockChangeFlag = FALSE; + } + else + gUnknown_3005E10.unk_03 = 0; + rfu_REQ_sendData(clockChangeFlag); +} + +s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16)) +{ + if (func1 == NULL) + { + return 4; + } + CpuFill16(0, &gUnknown_3005E10, sizeof(struct UnkRfuStruct_1)); + gUnknown_3005E10.unk_06 = -1; + gUnknown_3005E10.unk_40 = func1; + gUnknown_3005E10.unk_44 = func2; + rfu_setMSCCallback(sub_80FE394); + rfu_setREQCallback(sub_80FDC98); + return 0; +} + +static void sub_80FD484(void) +{ + CpuFill16(0, &gUnknown_3005E10, offsetof(struct UnkRfuStruct_1, unk_40)); + gUnknown_3005E10.unk_06 = -1; +} + +void sub_80FD4B0(const struct UnkLinkRfuStruct_02022B2C *unk0) +{ + sub_80FD4E4(); + gUnknown_3005E10.unk_04 = 1; + gUnknown_3005E10.unk_05 = 2; + gUnknown_3005E10.unk_3c = unk0; + gUnknown_3005E10.unk_09 = unk0->unk_11; + gUnknown_3005E10.unk_32 = unk0->unk_12; + gUnknown_3005E10.unk_18 = unk0->unk_14; + if (unk0->unk_10) + { + gUnknown_3005E10.unk_0b = 1; + } +} + +static void sub_80FD4E4(void) +{ + u8 i; + + gUnknown_3005E10.unk_05 = 0; + gUnknown_3005E10.unk_04 = 0; + gUnknown_3005E10.unk_06 = -1; + gUnknown_3005E10.unk_07 = 0; + gUnknown_3005E10.unk_10 = 0; + gUnknown_3005E10.unk_0c = 0; + gUnknown_3005E10.unk_24 = 0; + gUnknown_3005E10.unk_30 = 0; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + gUnknown_3005E10.unk_28[i] = 0; + gUnknown_3005E10.unk_34[i] = 0; + } +} + +void sub_80FD52C(void) +{ + gUnknown_3005E10.unk_04 = 0x15; +} + +u8 sub_80FD538(u8 r5, u16 r7, u16 r8, const u16 *r6) +{ + u8 i; + const u16 *buffer; + + if (gUnknown_3005E10.unk_04 != 0 && (gUnknown_3005E10.unk_04 != 0x08 || r5 != 1)) + { + gUnknown_3005E10.unk_14 = 1; + sub_80FE7F0(0xf3, 0x01); + return 1; + } + if (!rfu_getMasterSlave()) + { + gUnknown_3005E10.unk_14 = 2; + sub_80FE7F0(0xf3, 0x01); + return 2; + } + for (i = 0, buffer = r6; i < 16; i++) + { + if (*buffer++ == 0xFFFF) + { + break; + } + } + if (i == 16) + { + gUnknown_3005E10.unk_14 = 4; + sub_80FE7F0(0xf3, 0x01); + return 4; + } + if (r5 > 1) + { + gUnknown_3005E10.unk_07 = 1; + r5 = 1; + r7 = 0; + } + else + { + gUnknown_3005E10.unk_07 = 0; + } + if (r5 != 0) + { + gUnknown_3005E10.unk_04 = 5; + } + else + { + gUnknown_3005E10.unk_04 = 9; + if (gUnknown_3005E10.unk_0b) + { + gUnknown_3005E10.unk_0b = 2; + } + } + gUnknown_3005E10.unk_06 = r5; + gUnknown_3005E10.unk_1a = r7; + gUnknown_3005E10.unk_26 = r8; + gUnknown_3005E10.unk_20 = r6; + return 0; +} + +u8 sub_80FD610(u16 parentId, u16 unk_1a) +{ + u8 i; + + if (gUnknown_3005E10.unk_04 != 0 && (gUnknown_3005E10.unk_04 < 9 || gUnknown_3005E10.unk_04 > 11)) + { + gUnknown_3005E10.unk_14 = 1; + sub_80FE7F0(0xF3, 0x01); + return 1; + } + if (!rfu_getMasterSlave()) + { + gUnknown_3005E10.unk_14 = 2; + sub_80FE7F0(0xF3, 0x01); + return 2; + } + for (i = 0; i < gRfuLinkStatus->findParentCount; i++) + { + if (gRfuLinkStatus->partner[i].id == parentId) + { + break; + } + } + if (gRfuLinkStatus->findParentCount == 0 || i == gRfuLinkStatus->findParentCount) + { + gUnknown_3005E10.unk_14 = 3; + sub_80FE7F0(0xF3, 0x01); + return 3; + } + if (gUnknown_3005E10.unk_04 == 0 || gUnknown_3005E10.unk_04 == 9) + { + gUnknown_3005E10.unk_04 = 12; + gUnknown_3005E10.unk_05 = 13; + } + else + { + gUnknown_3005E10.unk_04 = 11; + gUnknown_3005E10.unk_05 = 12; + } + gUnknown_3005E10.unk_1e = parentId; + gUnknown_3005E10.unk_1a = unk_1a; + if (gUnknown_3005E10.unk_07 != 0) + { + gUnknown_3005E10.unk_07 = 7; + } + return 0; +} + +static void sub_80FD6F4(u8 lossSlot) +{ + u8 i; + + if (lossSlot & gUnknown_3005E10.unk_30) + { + gUnknown_3005E10.unk_30 &= ~lossSlot; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((lossSlot >> i) & 1) + { + gUnknown_3005E10.unk_34[i] = 0; + } + } + i = gRfuLinkStatus->linkLossSlotFlag & lossSlot; + if (i) + { + sub_80FE818(i); + } + gUnknown_3005E10.unk_14 = i; + sub_80FE7F0(0x33, i); + } +} + +void sub_80FD760(bool8 a0) +{ + u8 r2; + + r2 = 0; + gUnknown_3005E10.unk_07 = 0; + if (a0) + { + sub_80FD4E4(); + gUnknown_3005E10.unk_04 = 23; + } + else + { + switch (gUnknown_3005E10.unk_04) + { + case 5: + gUnknown_3005E10.unk_04 = 8; + gUnknown_3005E10.unk_05 = 0; + r2 = 0x13; + break; + case 6: + gUnknown_3005E10.unk_04 = 7; + gUnknown_3005E10.unk_05 = 8; + break; + case 7: + gUnknown_3005E10.unk_04 = 7; + gUnknown_3005E10.unk_05 = 8; + break; + case 8: + break; + case 9: + gUnknown_3005E10.unk_05 = 0; + gUnknown_3005E10.unk_04 = 0; + r2 = 0x21; + break; + case 10: + gUnknown_3005E10.unk_04 = 11; + gUnknown_3005E10.unk_05 = 0; + break; + case 11: + gUnknown_3005E10.unk_04 = 11; + gUnknown_3005E10.unk_05 = 0; + break; + case 12: + gUnknown_3005E10.unk_05 = 0; + gUnknown_3005E10.unk_04 = 0; + r2 = 0x23; + break; + case 13: + gUnknown_3005E10.unk_04 = 14; + break; + case 14: + gUnknown_3005E10.unk_04 = 14; + break; + case 15: + break; + case 16: + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_11; + gUnknown_3005E10.unk_05 = gUnknown_3005E10.unk_12; + sub_80FE818(gRfuLinkStatus->linkLossSlotFlag); + gUnknown_3005E10.unk_14 = gRfuLinkStatus->linkLossSlotFlag; + sub_80FE7F0(0x33, 0x01); + return; + case 17: + gUnknown_3005E10.unk_04 = 18; + break; + case 18: + gUnknown_3005E10.unk_04 = 18; + break; + default: + gUnknown_3005E10.unk_05 = 0; + gUnknown_3005E10.unk_04 = 0; + r2 = 0x43; + break; + } + if (gUnknown_3005E10.unk_04 == 0) + { + sub_80FE7F0(r2, 0); + } + } +} + +static bool8 sub_80FD850(u16 reqCommandId) +{ + bool8 retVal; + u8 i; + u8 bmLinkLossSlot; + u8 linkLossReason; + u8 parentBmLinkRecoverySlot; + u8 flags; + + retVal = FALSE; + rfu_REQBN_watchLink(reqCommandId, &bmLinkLossSlot, &linkLossReason, &parentBmLinkRecoverySlot); + if (bmLinkLossSlot) + { + gUnknown_3005E10.unk_14 = bmLinkLossSlot; + gUnknown_3005E10.unk_16 = linkLossReason; + if (gUnknown_3005E10.unk_09) + { + gUnknown_3005E10.unk_0a = 1; + if (gUnknown_3005E10.unk_06 == 0 && linkLossReason == REASON_DISCONNECTED) + { + gUnknown_3005E10.unk_0a = 4; + } + if (gUnknown_3005E10.unk_0a == 1) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((bmLinkLossSlot >> i) & 1) + { + gUnknown_3005E10.unk_30 |= (1 << i); + gUnknown_3005E10.unk_34[i] = gUnknown_3005E10.unk_32; + } + } + sub_80FE7F0(0x31, 0x01); + } + else + { + gUnknown_3005E10.unk_0a = 0; + sub_80FE818(bmLinkLossSlot); + retVal = TRUE; + sub_80FE7F0(0x33, 0x01); + } + } + else + { + sub_80FE818(bmLinkLossSlot); + retVal = TRUE; + sub_80FE7F0(0x30, 0x02); + } + sub_80FEAF4(); + } + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + if (parentBmLinkRecoverySlot) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((gUnknown_3005E10.unk_30 >> i) & 1 && (parentBmLinkRecoverySlot >> i) & 1) + { + gUnknown_3005E10.unk_34[i] = 0; + } + } + gUnknown_3005E10.unk_30 &= ~parentBmLinkRecoverySlot; + gUnknown_3005E10.unk_14 = parentBmLinkRecoverySlot; + sub_80FE7F0(0x32, 0x01); + } + if (gUnknown_3005E10.unk_30) + { + flags = 0; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((gUnknown_3005E10.unk_30 >> i) & 1 && gUnknown_3005E10.unk_34[i] && --gUnknown_3005E10.unk_34[i] == 0) + { + gUnknown_3005E10.unk_30 &= ~(1 << i); + flags |= (1 << i); + } + } + if (flags) + { + sub_80FE818(flags); + retVal = TRUE; + gUnknown_3005E10.unk_14 = flags; + sub_80FE7F0(0x33, 0x01); + } + } + if (!gUnknown_3005E10.unk_30) + { + gUnknown_3005E10.unk_0a = 0; + } + } + return retVal; +} + +void LinkRfu_syncVBlank_(void) +{ + if (rfu_syncVBlank()) + { + sub_80FE7F0(0xF1, 0x00); + sub_80FEAF4(); + } +} + +void sub_80FDA30(u32 a0) +{ + u8 r2; + + if (gUnknown_3005E10.unk_40 == NULL && gUnknown_3005E10.unk_04 != 0) + { + gUnknown_3005E10.unk_04 = 0; + } + else + { + if (gUnknown_3005E10.unk_07 != 0) + { + sub_80FDC28(a0); + } + do + { + if (gUnknown_3005E10.unk_04 != 0) + { + rfu_waitREQComplete(); + gUnknown_3005E10.unk_0e = 1; + switch (gUnknown_3005E10.unk_04) + { + case 23: + r2 = sub_80FD3A4() == 0x8001 ? 0x44 : 0xFF; + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + sub_80FE7F0(r2, 0); + break; + case 1: + if (sub_80FD3A4() == 0x8001) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05; + gUnknown_3005E10.unk_05 = 3; + } + else + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + sub_80FE7F0(0xFF, 0); + } + break; + case 2: + rfu_REQ_reset(); + break; + case 3: + rfu_REQ_configSystem(gUnknown_3005E10.unk_3c->unk_02, gUnknown_3005E10.unk_3c->unk_00, gUnknown_3005E10.unk_3c->unk_01); + break; + case 4: + rfu_REQ_configGameData(gUnknown_3005E10.unk_3c->unk_04, gUnknown_3005E10.unk_3c->unk_06, (const u8 *)gUnknown_3005E10.unk_3c->unk_08, gUnknown_3005E10.unk_3c->unk_0c); + break; + case 5: + rfu_REQ_startSearchChild(); + break; + case 6: + rfu_REQ_pollSearchChild(); + break; + case 7: + rfu_REQ_endSearchChild(); + break; + case 8: + break; + case 9: + rfu_REQ_startSearchParent(); + break; + case 10: + rfu_REQ_pollSearchParent(); + break; + case 11: + rfu_REQ_endSearchParent(); + break; + case 12: + rfu_REQ_startConnectParent(gUnknown_3005E10.unk_1e); + break; + case 13: + rfu_REQ_pollConnectParent(); + break; + case 14: + rfu_REQ_endConnectParent(); + break; + case 15: + break; + case 16: + rfu_REQ_CHILD_startConnectRecovery(gRfuLinkStatus->linkLossSlotFlag); + break; + case 17: + rfu_REQ_CHILD_pollConnectRecovery(); + break; + case 18: + rfu_REQ_CHILD_endConnectRecovery(); + break; + case 19: + rfu_REQ_changeMasterSlave(); + break; + case 20: + break; + case 21: + rfu_REQ_stopMode(); + break; + case 22: + break; + } + rfu_waitREQComplete(); + gUnknown_3005E10.unk_0e = 0; + } + } while (gUnknown_3005E10.unk_04 == 18 || gUnknown_3005E10.unk_04 == 19); + if (gRfuLinkStatus->parentChild != MODE_PARENT || !sub_80FD850(0)) + { + sub_80FE418(); + sub_80FE63C(); + sub_80FE74C(); + sub_80FE918(); + } + } +} + +static void sub_80FDC28(u32 a0) +{ + if (gUnknown_3005E10.unk_07 == 5) + { + gUnknown_3005E10.unk_06 = 1; + gUnknown_3005E10.unk_04 = 5; + gUnknown_3005E10.unk_1a = gUnknown_3005E10.unk_1c; + if (gUnknown_3005E10.unk_1a) + { + gUnknown_3005E10.unk_07 = 6; + } + else + { + gUnknown_3005E10.unk_07 = 1; + } + } + if (gUnknown_3005E10.unk_07 == 1) + { + gUnknown_3005E10.unk_06 = 1; + gUnknown_3005E10.unk_04 = 5; + gUnknown_3005E10.unk_1a = a0 % 140; + gUnknown_3005E10.unk_1c = 140 - gUnknown_3005E10.unk_1a; + if (gUnknown_3005E10.unk_1a) + { + gUnknown_3005E10.unk_07 = 2; + } + else + { + gUnknown_3005E10.unk_07 = 3; + } + } + if (gUnknown_3005E10.unk_07 == 3) + { + gUnknown_3005E10.unk_06 = 0; + gUnknown_3005E10.unk_1a = 40; + gUnknown_3005E10.unk_07 = 4; + gUnknown_3005E10.unk_04 = 9; + } +} + +static void sub_80FDC98(u16 r8, u16 r6) +{ + u8 sp0; + register u8 *stwiRecvBuffer asm("r0"); + u8 *tmp; + u8 i; + + if (gUnknown_3005E10.unk_0e != 0) + { + gUnknown_3005E10.unk_0e = 0; + switch (r8) + { + case 16: + if (r6 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05; + gUnknown_3005E10.unk_05 = 4; + } + break; + case 23: + if (r6 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05; + gUnknown_3005E10.unk_05 = 0; + } + break; + case 22: + if (r6 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + sub_80FE7F0(0x00, 0x00); + } + break; + case 25: + if (r6 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 6; + } + break; + case 26: + if (gUnknown_3005E10.unk_1a && --gUnknown_3005E10.unk_1a == 0) + { + gUnknown_3005E10.unk_04 = 7; + gUnknown_3005E10.unk_05 = 8; + } + break; + case 27: + if (r6 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05; + gUnknown_3005E10.unk_05 = 0; + if (gUnknown_3005E10.unk_07 == 0) + { + sub_80FE7F0(0x13, 0x00); + } + } + break; + case 28: + if (r6 == 0) + { + if (gUnknown_3005E10.unk_0b == 1 && gUnknown_3005E10.unk_1a > 1) + { + gUnknown_3005E10.unk_1a--; + } + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 10; + } + break; + case 29: + if (r6 == 0) + { + sp0 = sub_80FE778(); + gUnknown_3005E10.unk_14 = sp0; + if (sp0) + { + sub_80FE7F0(0x20, 0x01); + } + if (gUnknown_3005E10.unk_0b && gUnknown_3005E10.unk_1a != 1 && gRfuLinkStatus->findParentCount == RFU_CHILD_MAX) + { + rfu_REQ_endSearchParent(); + rfu_waitREQComplete(); + gUnknown_3005E10.unk_04 = 9; + gUnknown_3005E10.unk_0b = 1; + } + } + if (gUnknown_3005E10.unk_1a && --gUnknown_3005E10.unk_1a == 0) + { + gUnknown_3005E10.unk_04 = 11; + gUnknown_3005E10.unk_05 = 0; + } + break; + case 30: + if (r6 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05; + if (gUnknown_3005E10.unk_07 == 0) + { + if (gUnknown_3005E10.unk_04 == 0) + { + sub_80FE7F0(0x21, 0x00); + } + } + else if (gUnknown_3005E10.unk_07 != 7) + { + gUnknown_3005E10.unk_04 = 5; + gUnknown_3005E10.unk_07 = 5; + } + } + break; + case 31: + if (r6 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 13; + } + break; + case 32: + if (r6 == 0 && !rfu_getConnectParentStatus(&sp0, &gUnknown_3005E10.unk_10) && !sp0) + { + gUnknown_3005E10.unk_04 = 14; + } + if (gUnknown_3005E10.unk_1a && --gUnknown_3005E10.unk_1a == 0) + { + gUnknown_3005E10.unk_04 = 14; + } + break; + case 33: + if (r6 == 0 && !rfu_getConnectParentStatus(&sp0, &gUnknown_3005E10.unk_10)) + { + if (!sp0) + { + gUnknown_3005E10.unk_04 = 19; + gUnknown_3005E10.unk_05 = 15; + gUnknown_3005E10.unk_1e = 0x22; + gUnknown_3005E10.unk_14 = gUnknown_3005E10.unk_10; + } + else + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + gUnknown_3005E10.unk_1e = 0x23; + gUnknown_3005E10.unk_14 = sp0; + if (gUnknown_3005E10.unk_07) + { + gUnknown_3005E10.unk_07 = 3; + gUnknown_3005E10.unk_04 = 9; + } + } + sub_80FE7F0(gUnknown_3005E10.unk_1e, 0x01); + gUnknown_3005E10.unk_1e = 0; + } + break; + case 50: + if (r6 == 0) + { + gUnknown_3005E10.unk_14 = gRfuLinkStatus->linkLossSlotFlag; + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 17; + for (gUnknown_3005E10.unk_10 = 0; gUnknown_3005E10.unk_10 < RFU_CHILD_MAX; gUnknown_3005E10.unk_10++) + { + if ((gRfuLinkStatus->linkLossSlotFlag >> gUnknown_3005E10.unk_10) & 1) + { + break; + } + } + } + break; + case 51: + if (r6 == 0 && !rfu_CHILD_getConnectRecoveryStatus(&sp0) && sp0 < 2) + { + gUnknown_3005E10.unk_04 = 18; + } + if (gUnknown_3005E10.unk_34[gUnknown_3005E10.unk_10] && --gUnknown_3005E10.unk_34[gUnknown_3005E10.unk_10] == 0) + { + gUnknown_3005E10.unk_04 = 18; + } + break; + case 52: + if (r6 == 0 && !rfu_CHILD_getConnectRecoveryStatus(&sp0)) + { + if (!sp0) + { + gUnknown_3005E10.unk_04 = 19; + gUnknown_3005E10.unk_05 = 22; + gUnknown_3005E10.unk_1e = 0x32; + } + else + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + sub_80FE818(gRfuLinkStatus->linkLossSlotFlag); + gUnknown_3005E10.unk_1e = 0x33; + } + gUnknown_3005E10.unk_34[gUnknown_3005E10.unk_10] = 0; + gUnknown_3005E10.unk_30 = 0; + gUnknown_3005E10.unk_0a = 0; + sub_80FE7F0(gUnknown_3005E10.unk_1e, 0x01); + gUnknown_3005E10.unk_1e = 0; + } + break; + case 39: + if (r6 == 0) + { + if (gUnknown_3005E10.unk_05 == 22) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_11; + gUnknown_3005E10.unk_05 = gUnknown_3005E10.unk_12; + gUnknown_3005E10.unk_02 = 1; + sub_80FE7F0(0x41, 0x00); + } + else if (gUnknown_3005E10.unk_05 == 15) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05; + gUnknown_3005E10.unk_02 = 1; + sub_80FE7F0(0x41, 0x00); + gUnknown_3005E10.unk_24 |= 1 << gUnknown_3005E10.unk_10; + gUnknown_3005E10.unk_28[gUnknown_3005E10.unk_10] = gUnknown_3005E10.unk_26; + rfu_clearSlot(4, gUnknown_3005E10.unk_10); + tmp = &sp0; + *tmp = rfu_NI_CHILD_setSendGameName(gUnknown_3005E10.unk_10, 0x0e); + if (*tmp) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + sub_80FEAF4(); + sub_80FE818(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag); + gUnknown_3005E10.unk_14 = sp0; + sub_80FE7F0(0x25, 0x01); + } + } + } + break; + case 61: + if (r6 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + sub_80FE7F0(0x42, 0x00); + } + break; + } + gUnknown_3005E10.unk_0e = 1; + } + else if (r6 == 3 && gUnknown_3005E10.unk_0f && (r8 == 0x24 || r8 == 0x26 || r8 == 0x27)) + { + rfu_REQ_RFUStatus(); + rfu_waitREQComplete(); + rfu_getRFUStatus(&sp0); + if (sp0 == 0 && gRfuLinkStatus->parentChild == MODE_CHILD) + { + stwiRecvBuffer = rfu_getSTWIRecvBuffer()->rxPacketAlloc.rfuPacket8.data; + stwiRecvBuffer[4] = gRfuLinkStatus->connSlotFlag; + stwiRecvBuffer[5] = 1; + sub_80FD850(0x29); + r6 = 0; + } + } + switch (r8) + { + case 48: + if (r6 == 0) + { + stwiRecvBuffer = rfu_getSTWIRecvBuffer()->rxPacketAlloc.rfuPacket8.data; + gUnknown_3005E10.unk_14 = stwiRecvBuffer[8]; + sub_80FE83C(gUnknown_3005E10.unk_14); + if (gUnknown_3005E10.unk_30) + { + gUnknown_3005E10.unk_30 &= ~gUnknown_3005E10.unk_14; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((gUnknown_3005E10.unk_14 >> i) & 1) + { + gUnknown_3005E10.unk_34[i] = 0; + } + } + if (gUnknown_3005E10.unk_06 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + } + } + sp0 = gUnknown_3005E10.unk_00 & gUnknown_3005E10.unk_14; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((sp0 >> i) & 1 && gUnknown_3005E10.unk_01) + { + gUnknown_3005E10.unk_01--; + } + } + gUnknown_3005E10.unk_00 &= ~gUnknown_3005E10.unk_14; + if (gUnknown_3005E10.unk_07) + { + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL) + { + if (gUnknown_3005E10.unk_07 == 8) + { + gUnknown_3005E10.unk_1a = gUnknown_3005E10.unk_1c; + gUnknown_3005E10.unk_07 = 6; + gUnknown_3005E10.unk_04 = 6; + } + else if (gUnknown_3005E10.unk_04 != 6 && gUnknown_3005E10.unk_04 != 7) + { + gUnknown_3005E10.unk_07 = 1; + gUnknown_3005E10.unk_04 = 5; + } + } + } + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL) + { + if (gUnknown_3005E10.unk_04 == 0) + { + gUnknown_3005E10.unk_06 = -1; + } + } + if (gUnknown_3005E10.unk_0e == 0) + { + sub_80FE7F0(0x40, 0x01); + } + } + break; + case 38: + sub_80FE6F0(); + if (gRfuLinkStatus->parentChild != MODE_NEUTRAL) + { + sub_80FE7F0(0x50, 0x00); + } + break; + case 16: + case 61: + if (r6 == 0) + { + gUnknown_3005E10.unk_0d = 0; + gUnknown_3005E10.unk_01 = 0; + gUnknown_3005E10.unk_00 = 0;; + gUnknown_3005E10.unk_06 = -1; + sub_80FEAF4(); + if (r8 == 61) + { + sub_80FD484(); + } + } + break; + } + if (r6 != 0) + { + if (r8 == 28 && r6 != 0 && gUnknown_3005E10.unk_07 == 4) + { + gRfuLinkStatus->parentChild = MODE_PARENT; + gRfuLinkStatus->connSlotFlag = 0xF; + sub_80FE818(15); + rfu_waitREQComplete(); + return; + } + else + { + gUnknown_3005E10.unk_14 = r8; + gUnknown_3005E10.unk_16 = r6; + if (gUnknown_3005E10.unk_0e) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + } + sub_80FE7F0(0xf0, 0x02); + sub_80FEAF4(); + } + } + if (r8 == 0xFF) + { + sub_80FE7F0(0xf2, 0x00); + sub_80FEAF4(); + } +} + +static void sub_80FE394(u16 reqCommandId) +{ + u8 r7; + u8 ackFlag; + + r7 = gUnknown_3005E10.unk_0e; + gUnknown_3005E10.unk_0e = 0; + gUnknown_3005E10.unk_0f = 1; + if (gRfuLinkStatus->parentChild == MODE_CHILD) + { + sub_80FD850(reqCommandId); + if (gUnknown_3005E10.unk_02 != 1) + { + sub_80FEAF4(); + gUnknown_3005E10.unk_0f = 0; + gUnknown_3005E10.unk_0e = r7; + return; + } + } + else + { + if (!rfu_UNI_PARENT_getDRAC_ACK(&ackFlag)) + { + gUnknown_3005E10.unk_03 |= ackFlag; + } + } + if (gUnknown_3005E10.unk_44 != NULL) + { + gUnknown_3005E10.unk_44(reqCommandId); + rfu_waitREQComplete(); + if (gUnknown_3005E10.unk_02 == 2) + { + sub_80FEAF4(); + } + } + gUnknown_3005E10.unk_0f = 0; + gUnknown_3005E10.unk_0e = r7; +} + +static void sub_80FE418(void) +{ + u8 flags; + u8 sp0; + u8 i; + u8 r5; + u8 r4; + const u16 *ptr; + + if (gUnknown_3005E10.unk_04 == 5 || gUnknown_3005E10.unk_04 == 6 || gUnknown_3005E10.unk_04 == 7 || gUnknown_3005E10.unk_04 == 8) + { + flags = ((gRfuLinkStatus->connSlotFlag ^ gUnknown_3005E10.unk_0c) & gRfuLinkStatus->connSlotFlag) & ~gRfuLinkStatus->getNameFlag; + gUnknown_3005E10.unk_0c = gRfuLinkStatus->connSlotFlag; + if (flags) + { + gUnknown_3005E10.unk_14 = flags; + sub_80FE7F0(0x10, 0x01); + } + sp0 = 0x00; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + r4 = 1 << i; + r5 = 0x00; + if (flags & r4) + { + gUnknown_3005E10.unk_28[i] = gUnknown_3005E10.unk_26; + gUnknown_3005E10.unk_24 |= r4; + } + else if (gUnknown_3005E10.unk_24 & r4) + { + if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS) + { + if (gRfuSlotStatusNI[i]->recv.dataType == 1) // Game identification information + { + r5 = 0x02; + for (ptr = gUnknown_3005E10.unk_20; *ptr != 0xFFFF; ptr++) + { + if (gRfuLinkStatus->partner[i].serialNo == *ptr) + { + gUnknown_3005E10.unk_00 |= r4; + gUnknown_3005E10.unk_01++; + sp0 |= r4; + r5 |= 0x01; + break; + } + } + if (!(r5 & 0x01)) + { + r5 |= 0x04; + } + } + } + else if (--gUnknown_3005E10.unk_28[i] == 0) + { + r5 = 0x06; + } + if (r5 & 0x02) + { + gUnknown_3005E10.unk_24 &= ~r4; + gUnknown_3005E10.unk_28[i] = 0; + rfu_clearSlot(0x08, i); + } + if (r5 & 0x04) + { + gUnknown_3005E10.unk_0d |= r4; + } + } + } + if (sp0) + { + gUnknown_3005E10.unk_14 = sp0; + sub_80FE7F0(0x11, 0x01); + } + if (gUnknown_3005E10.unk_0d) + { + r5 = 0x01; + if (gRfuLinkStatus->sendSlotUNIFlag && ((gUnknown_3005E10.unk_03 & gUnknown_3005E10.unk_00) != gUnknown_3005E10.unk_00)) + { + r5 = 0x00; + } + if (r5) + { + sub_80FE818(gUnknown_3005E10.unk_0d); + gUnknown_3005E10.unk_14 = gUnknown_3005E10.unk_0d; + gUnknown_3005E10.unk_0d = 0; + sub_80FE7F0(0x12, 0x01); + } + } + if (gUnknown_3005E10.unk_24 == 0 && gUnknown_3005E10.unk_04 == 8) + { + if (gUnknown_3005E10.unk_07 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + sub_80FE7F0(0x14, 0x00); + } + else + { + if (gUnknown_3005E10.unk_07 == 2) + { + gUnknown_3005E10.unk_07 = 3; + gUnknown_3005E10.unk_04 = 9; + } + else + { + gUnknown_3005E10.unk_07 = 1; + gUnknown_3005E10.unk_04 = 5; + } + if (gUnknown_3005E10.unk_00) + { + gUnknown_3005E10.unk_1a = 0; + gUnknown_3005E10.unk_07 = 8; + gUnknown_3005E10.unk_04 = 5; + } + } + } + } +} + +static void sub_80FE63C(void) +{ + u16 imeBak = REG_IME; + REG_IME = 0; + if (gUnknown_3005E10.unk_04 == 15) + { + if (--gUnknown_3005E10.unk_28[gUnknown_3005E10.unk_10] == 0 || gRfuSlotStatusNI[gUnknown_3005E10.unk_10]->send.state == SLOT_STATE_SEND_FAILED) + { + sub_80FEB14(); + gUnknown_3005E10.unk_04 = 24; + rfu_clearSlot(4, gUnknown_3005E10.unk_10); + gUnknown_3005E10.unk_24 &= ~(1 << gUnknown_3005E10.unk_10); + gUnknown_3005E10.unk_28[gUnknown_3005E10.unk_10] = 0; + } + } + REG_IME = imeBak; + if (gUnknown_3005E10.unk_04 == 24) + { + if (gUnknown_3005E10.unk_02 == 1) + { + sub_80FEB14(); + } + if (gUnknown_3005E10.unk_02 == 0) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + sub_80FE818(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag); + gUnknown_3005E10.unk_14 = 0; + sub_80FE7F0(0x25, 0x01); + } + } +} + +static void sub_80FE6F0(void) +{ + if (gUnknown_3005E10.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_3005E10.unk_10]->send.state == SLOT_STATE_SEND_SUCCESS) + { + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + rfu_clearSlot(4, gUnknown_3005E10.unk_10); + gUnknown_3005E10.unk_24 &= ~(1 << gUnknown_3005E10.unk_10); + gUnknown_3005E10.unk_28[gUnknown_3005E10.unk_10] = 0; + sub_80FE7F0(0x24, 0x00); + } +} + +static void sub_80FE74C(void) +{ + if (gUnknown_3005E10.unk_06 == 0 && gUnknown_3005E10.unk_0a == 1) + { + gUnknown_3005E10.unk_11 = gUnknown_3005E10.unk_04; + gUnknown_3005E10.unk_12 = gUnknown_3005E10.unk_05; + gUnknown_3005E10.unk_04 = 16; + gUnknown_3005E10.unk_05 = 17; + gUnknown_3005E10.unk_0a = 2; + } +} + +static u8 sub_80FE778(void) +{ + u8 i; + const u16 *ptr; + u8 flags = 0x00; + + for (i = 0; i < gRfuLinkStatus->findParentCount; i++) + { + for (ptr = gUnknown_3005E10.unk_20; *ptr != 0xFFFF; ptr++) + { + if (gRfuLinkStatus->partner[i].serialNo == *ptr) + { + flags |= (1 << i); + } + } + } + return flags; +} + +static void sub_80FE7F0(u8 a0, u8 a1) +{ + if (gUnknown_3005E10.unk_40 != NULL) + { + gUnknown_3005E10.unk_40(a0, a1); + } + gUnknown_3005E10.unk_14 = gUnknown_3005E10.unk_16 = 0; +} + +static void sub_80FE818(u8 a0) +{ + u8 unk_0e_bak = gUnknown_3005E10.unk_0e; + gUnknown_3005E10.unk_0e = 1; + rfu_REQ_disconnect(a0); + rfu_waitREQComplete(); + gUnknown_3005E10.unk_0e = unk_0e_bak; +} + +static void sub_80FE83C(u8 a0) +{ + u8 i; + + if (gRfuLinkStatus->sendSlotNIFlag) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (gRfuSlotStatusNI[i]->send.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->send.bmSlot & a0) + { + rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->send.bmSlot & ~a0); + } + } + } + if (gRfuLinkStatus->recvSlotNIFlag) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (gRfuSlotStatusNI[i]->recv.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->recv.bmSlot & a0) + { + rfu_NI_stopReceivingData(i); + } + } + } + if (gRfuLinkStatus->sendSlotUNIFlag) + { + gRfuLinkStatus->sendSlotUNIFlag &= ~a0; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (gRfuSlotStatusUNI[i]->send.state == SLOT_STATE_SEND_UNI && a0 & gRfuSlotStatusUNI[i]->send.bmSlot) + { + gRfuSlotStatusUNI[i]->send.bmSlot &= ~a0; + } + } + } +} + +static void sub_80FE918(void) +{ + u8 i; + u8 j; + u8 flags; + + if (gUnknown_3005E10.unk_18) + { + if (gRfuLinkStatus->sendSlotNIFlag) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (gRfuSlotStatusNI[i]->send.state & SLOT_BUSY_FLAG) + { + flags = 0; + for (j = 0; j < RFU_CHILD_MAX; j++) + { + if ((gRfuSlotStatusNI[i]->send.bmSlot >> j) & 1 && gRfuSlotStatusNI[j]->send.failCounter > gUnknown_3005E10.unk_18) + { + flags |= (1 << j); + } + if (flags) + { + rfu_changeSendTarget(0x20, i, flags ^ gRfuSlotStatusNI[i]->send.bmSlot); + } + } + } + } + } + if (gRfuLinkStatus->recvSlotNIFlag) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (gRfuSlotStatusNI[i]->recv.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->recv.failCounter > gUnknown_3005E10.unk_18) + { + rfu_NI_stopReceivingData(i); + } + } + } + } +} + +void sub_80FEA10(void (*func)(u16)) +{ + gUnknown_3005E10.unk_44 = func; + rfu_setMSCCallback(sub_80FE394); +} + +static void sub_80FEA28(void (*func)(u8, u8)) +{ + gUnknown_3005E10.unk_40 = func; +} + +u8 sub_80FEA34(u8 a0, u16 a1) +{ + u16 imeBak; + if (gUnknown_3005E10.unk_09 && a0 == 0 && gUnknown_3005E10.unk_30) + { + return 5; + } + imeBak = REG_IME; + REG_IME = 0; + gUnknown_3005E10.unk_09 = a0; + gUnknown_3005E10.unk_32 = a1; + REG_IME = imeBak; + return 0; +} + +static u8 sub_80FEA78(u16 a0) +{ + if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag) + { + gUnknown_3005E10.unk_14 = 6; + sub_80FE7F0(0xf3, 0x01); + return 6; + } + gUnknown_3005E10.unk_18 = a0; + return 0; +} + +static u8 sub_80FEAB4(u8 a0) +{ + if (gUnknown_3005E10.unk_04 == 9 || gUnknown_3005E10.unk_04 == 10 || gUnknown_3005E10.unk_04 == 11) + { + gUnknown_3005E10.unk_14 = 7; + sub_80FE7F0(0xf3, 0x01); + return 7; + } + if (a0) + { + gUnknown_3005E10.unk_0b = 1; + } + else + { + gUnknown_3005E10.unk_0b = 0; + } + return 0; +} + +static void sub_80FEAF4(void) +{ + if (gUnknown_3005E10.unk_02) + { + gUnknown_3005E10.unk_02 = 0; + sub_80FE7F0(0x45, 0x00); + } +} + +void sub_80FEB14(void) +{ + if (gUnknown_3005E10.unk_02 == 0) + { + sub_80FE7F0(0x45, 0x00); + } + else if (gUnknown_3005E10.unk_02 == 1) + { + gUnknown_3005E10.unk_02 = 2; + } +} + +void sub_80FEB3C(void) +{ + if (gUnknown_3005E10.unk_07) + { + switch (gUnknown_3005E10.unk_04) + { + case 5: + gUnknown_3005E10.unk_07 = 3; + gUnknown_3005E10.unk_04 = 9; + break; + case 6: + gUnknown_3005E10.unk_07 = 2; + gUnknown_3005E10.unk_1a = 1; + break; + case 7: + case 8: + gUnknown_3005E10.unk_07 = 2; + break; + case 9: + case 10: + gUnknown_3005E10.unk_1a = 40; + break; + case 11: + gUnknown_3005E10.unk_1a = 40; + gUnknown_3005E10.unk_04 = 10; + break; + } + } +} diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c new file mode 100644 index 000000000..a06e3bc9c --- /dev/null +++ b/src/link_rfu_2.c @@ -0,0 +1,2834 @@ +#include "global.h" +#include "battle.h" +#include "gpu_regs.h" +#include "librfu.h" +#include "link.h" +#include "link_rfu.h" +#include "mystery_gift_menu.h" +#include "overworld.h" +#include "palette.h" +#include "quest_log.h" +#include "random.h" +#include "string_util.h" +#include "task.h" +#include "constants/species.h" + +struct UnkRfuStruct_8010A14{ + char unk_00[15]; // PokemonSioInfo + u8 unk_0f; + u8 unk_10[4]; + struct LinkPlayer unk_14[5]; + u8 fill_a0[0x5c]; +}; + +static EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_203ABF0 = {}; +static EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_203AC08 = {}; + +static struct RfuAPIBuffer gRfuAPIBuffer; +static u8 gUnknown_3001FF8[14]; +static u16 gUnknown_3002008[7]; + +struct GFtgtGname gUnknown_3005440; +struct UnkRfuStruct_2 Rfu; +u8 gUnknown_3005E00[PLAYER_NAME_LENGTH]; + +static void sub_80F8AA4(void); +static void sub_80F8AEC(void); +static void sub_80F8D20(u16 a0); +static void sub_80F8DA8(u16 a0); +static void sub_80F906C(void); +static void sub_80F9868(u8 unused); +static void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data); +static void sub_80F9D04(u16 command); +static void rfufunc_80F9F44(void); +static void sub_80F9FA8(void); +static void rfufunc_80FA020(void); +static void CallRfuFunc(void); +static void sub_80FA738(void); +static int sub_80FA788(void); +static void sub_80FA834(u8 taskId); +static void sub_80FA9D0(u16 a0); +static void sub_80FAA58(void * a0); +static void sub_80FAA94(u8 taskId); +static void sub_80FACF0(u8 taskId); +static void sub_80FB0E8(u32 a0); +static void sub_80FB564(s32 a0); +static void sub_80FBB74(void); +static u8 sub_80FBC70(const u8 *a0, u16 a1); +static void sub_80FBCF8(u32 a0); +static void sub_80FBE20(u32 a0, u32 a1); +static void sub_80FC028(u8 taskId); +static void sub_80FC208(void); +static void nullsub_89(u8 taskId); + +static const struct UnkLinkRfuStruct_02022B2C gUnknown_843EBB4 = { + .unk_00 = 0x04, + .unk_01 = 0x20, + .unk_02 = 0x0000, + .unk_04 = 0x00, + .unk_06 = 0x0002, + .unk_08 = &gUnknown_3005440, + .unk_0c = gUnknown_3005E00, + .unk_10 = 0x01, + .unk_11 = 0x00, + .unk_12 = 0x0258, + .unk_14 = 0x012c +}; + +static const u8 gUnknown_843EBCC[] = { + 0, 3, 2, 1, 0 +}; + +static const u32 gUnknown_843EBD4[] = { + 0x000000, + 0x000001, + 0x000003, + 0x000007, + 0x00000f, + 0x00001f, + 0x00003f, + 0x00007f, + 0x0000ff, + 0x0001ff, + 0x0003ff, + 0x0007ff, + 0x000fff, + 0x001fff, + 0x003fff, + 0x007fff, + 0x00ffff, + 0x01ffff, + 0x03ffff, + 0x07ffff, + 0x0fffff, + 0x1fffff, + 0x3fffff, + 0x7fffff, + 0xffffff +}; + +static const u8 gUnknown_843EC38[] = { + 0, 0, 1, + 1, 2, 2, + 2, 2, 3 +}; + +static const u8 gUnknown_843EC41[] = { + 0, 1, 1, 2, + 1, 2, 2, 3, + 1, 2, 2, 3, + 2, 3, 3, 4 +}; + +static const u8 gUnknown_843EC51[] = { + 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 +}; + +static const struct { + u8 *buffer; + u32 size; +} gUnknown_843EC64[] = { + { gBlockSendBuffer, 200 }, + { gBlockSendBuffer, 200 }, + { gBlockSendBuffer, 100 }, + { gBlockSendBuffer, 220 }, + { gBlockSendBuffer, 40 } +}; + +static const u16 gUnknown_843EC8C[] = { + 0x0002, 0x7f7d, 0xFFFF +}; + +static const char sUnref_843EC92[][15] = { + "RFU WAIT", + "RFU BOOT", + "RFU ERROR", + "RFU RESET", + "RFU CONFIG", + "RFU START", + "RFU SC POLL", + "RFU SP POLL", + "RFU START", + "RFU SEND ERR", + "RFU CP POLL" +}; + +static const char sUnref_843ED37[][16] = { + " ", + "RECOVER START ", + "DISSCONECT ", + "RECOVER SUUSES", + "RECOVER FAILED" +}; + +static const TaskFunc gUnknown_843ED88[] = { + sub_80FA834, + sub_80FAA94, + sub_80FACF0 +}; + +static void nullsub_87(const void *unused_0, u8 unused_1, u8 unused_2) +{ + // debug? +} + +static void nullsub_88(u16 unused_0, u8 unused_1, u8 unused_2, u8 unused_3) +{ + +} + +void sub_80F85F8(void) +{ + s32 i; + u8 unk_ee_bak = Rfu.unk_ee; + CpuFill16(0, &Rfu, sizeof Rfu); + Rfu.unk_0c = 0xFF; + Rfu.unk_ee = unk_ee_bak; + if (Rfu.unk_ee != 4) + { + Rfu.unk_ee = 0; + } + for (i = 0; i < 5; i++) + { + sub_80F9CB4(Rfu.unk_80 + i); + } + sub_80F9CB4(&Rfu.unk_6c); + sub_80FC478(&Rfu.unk_124); + sub_80FC4D4(&Rfu.unk_9e8); + CpuFill16(0, gSendCmd, sizeof gSendCmd); + CpuFill16(0, gRecvCmds, sizeof gRecvCmds); + CpuFill16(0, gLinkPlayers, sizeof gLinkPlayers); +} + +void InitRFU(void) +{ + IntrFunc serialIntr = gIntrTable[1]; + IntrFunc timerIntr = gIntrTable[2]; + sub_80F86F4(); + rfu_REQ_stopMode(); + rfu_waitREQComplete(); + REG_IME = 0; + gIntrTable[1] = serialIntr; + gIntrTable[2] = timerIntr; + REG_IME = INTR_FLAG_VBLANK; +} + +void sub_80F86F4(void) +{ + if (!rfu_initializeAPI(&gRfuAPIBuffer, sizeof gRfuAPIBuffer, gIntrTable + 1, TRUE)) + { + gLinkType = 0; + sub_80FB128(0); + sub_80F85F8(); + rfu_setTimerInterrupt(3, gIntrTable + 2); + } +} + +static void sub_80F8738(u8 taskId) +{ + sub_80FA738(); + switch (Rfu.unk_04) + { + case 0: + sub_80FD4B0(&gUnknown_203ABF0); + Rfu.unk_04 = 1; + gTasks[taskId].data[1] = 1; + break; + case 1: + break; + case 2: + sub_80FD538(Rfu.unk_0c, 0, 240, gUnknown_843EC8C); + Rfu.unk_04 = 3; + gTasks[taskId].data[1] = 6; + break; + case 3: + break; + case 4: + sub_80FD760(FALSE); + Rfu.unk_04 = 5; + break; + case 5: + break; + case 18: + Rfu.unk_cdb = 0; + sub_80FEA10(sub_80F8DA8); + sub_80F8AA4(); + sub_80F8AEC(); + Rfu.unk_04 = 20; + gTasks[taskId].data[1] = 8; + CreateTask(sub_80FA834, 5); + DestroyTask(taskId); + break; + } +} + +static u8 sub_80F886C(u8 idx) +{ + return gUnknown_843EC51[idx]; +} + +static void sub_80F887C(s32 r2, s32 r5) +{ + u8 i; + u8 r4 = 1; + s32 r1 = r2; + s32 r6 = 0; + if (r5 == -1) + { + for (i = 0; i < RFU_CHILD_MAX; r2 >>= 1, i++) + { + if (r2 & 1) + { + Rfu.unk_cde[i] = r4; + r4++; + } + } + } + else + { + for (i = 0; i < RFU_CHILD_MAX; r1 >>= 1, i++) + { + if (!(r1 & 1)) + { + Rfu.unk_cde[i] = 0; + } + } + for (r4 = 4; r4 != 0; r4--) + { + for (i = 0; i < RFU_CHILD_MAX && Rfu.unk_cde[i] != r4; i++); + if (i == 4) + { + r6 = r4; + } + } + for (r5 &= ~r2, i = 0; i < RFU_CHILD_MAX; r5 >>= 1, i++) + { + if (r5 & 1) + { + Rfu.unk_cde[i] = r6++; + } + } + } +} + +static void sub_80F893C(u8 taskId) +{ + switch (Rfu.unk_04) + { + case 0: + sub_80FD4B0(&gUnknown_843EBB4); + Rfu.unk_04 = 1; + gTasks[taskId].data[1] = 1; + break; + case 1: + break; + case 6: + sub_80FD538(Rfu.unk_0c, 0, 0xf0, gUnknown_843EC8C); + Rfu.unk_04 = 7; + gTasks[taskId].data[1] = 7; + break; + case 7: + break; + case 9: + gTasks[taskId].data[1] = 10; + break; + case 11: + switch (sub_80FA788()) + { + case 5: + Rfu.unk_04 = 12; + break; + case 6: + case 9: + sub_80FEB14(); + Rfu.unk_ce4 = 2; + DestroyTask(taskId); + break; + } + break; + case 12: + { + u8 r5 = 1 << Rfu.unk_c3e; + rfu_clearSlot(12, Rfu.unk_c3e); + rfu_setRecvBuffer(16, Rfu.unk_c3e, Rfu.unk_c3f, sizeof(Rfu.unk_c3f)); + rfu_UNI_setSendData(r5, Rfu.unk_4c, sizeof(Rfu.unk_4c)); + gTasks[taskId].data[1] = 8; + DestroyTask(taskId); + if (gUnknown_203AC08.unk_0f == 0) + { + sub_80FC208(); + gUnknown_203AC08.unk_0f++; + } + CreateTask(sub_80FA834, 5); + break; + } + } +} + +static void sub_80F8AA4(void) +{ + u8 i; + u8 r5 = gUnknown_3005E10.unk_00; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (r5 & 1) + { + rfu_setRecvBuffer(16, i, Rfu.unk_14[i], sizeof(Rfu.unk_14[i])); + rfu_clearSlot(3, i); + } + r5 >>= 1; + } +} + +static void sub_80F8AEC(void) +{ + u8 r5 = gUnknown_3005E10.unk_00; + rfu_UNI_setSendData(r5, Rfu.unk_c87, sizeof(Rfu.unk_c87)); + Rfu.unk_cda = sub_80F886C(r5); + Rfu.unk_ce2 = r5; + sub_80F887C(r5, -1); + Rfu.unk_0c = 1; +} + +static void sub_80F8B34(u8 taskId) +{ + if (sub_80F9800()->unk_0a_0 == 0x54 && sub_80FB9F4() == 4) + { + rfu_REQ_disconnect(gUnknown_3005E10.unk_00); + rfu_waitREQComplete(); + sub_80FB9E4(0, 0); + } + switch (Rfu.unk_04) + { + case 0: + sub_80FD4B0(&gUnknown_203ABF0); + Rfu.unk_04 = 1; + gTasks[taskId].data[1] = 1; + break; + case 1: + break; + case 17: + sub_80FD538(2, 0, 240, gUnknown_843EC8C); + sub_80FEA10(sub_80F8D20); + Rfu.unk_04 = 18; + break; + case 18: + break; + case 13: + if (rfu_UNI_setSendData(1 << Rfu.unk_c3e, Rfu.unk_4c, sizeof(Rfu.unk_4c)) == 0) + { + Rfu.unk_0c = 0; + DestroyTask(taskId); + if (gTasks[taskId].data[7]) + { + CreateTask(sub_80FACF0, 1); + } + else + { + CreateTask(sub_80FA834, 5); + } + } + break; + case 14: + sub_80FD760(0); + Rfu.unk_04 = 15; + break; + case 15: + break; + case 16: + Rfu.unk_cdb = 0; + sub_80FEA10(sub_80F8DA8); + sub_80FAFE0(1); + sub_80F8AA4(); + sub_80F8AEC(); + Rfu.unk_04 = 20; + gTasks[taskId].data[1] = 8; + Rfu.unk_0c = 1; + CreateTask(sub_80FA834, 5); + Rfu.unk_ce8 = 1; + DestroyTask(taskId); + break; + } +} + +void sub_80F8CFC(void) +{ + sub_80FD538(1, 0, 240, gUnknown_843EC8C); +} + +void sub_80F8D14(void) +{ + sub_80FD760(FALSE); +} + +static void sub_80F8D20(u16 unused) +{ + s32 i; + + for (i = 0; i < 14; i++) + { + Rfu.unk_4c[i] = 0; + } + rfu_REQ_recvData(); + rfu_waitREQComplete(); + if (gRfuSlotStatusUNI[Rfu.unk_c3e]->recv.newDataFlag) + { + Rfu.unk_cd0++; + sub_80FC588(&Rfu.unk_124, Rfu.unk_c3f); + gUnknown_203AC08.unk_06++; + sub_80F906C(); + rfu_UNI_readySendData(Rfu.unk_c3e); + rfu_UNI_clearRecvNewDataFlag(Rfu.unk_c3e); + } + LinkRfu_REQ_SendData_HandleParentRelationship(TRUE); +} + +static void sub_80F8DA8(u16 unused) +{ + Rfu.unk_cdb = 1; +} + +void sub_80F8DC0(void) +{ + u8 i; + + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return; + + sub_80FD52C(); + if (Rfu.unk_0c == 1) + { + if (FuncIsActiveTask(sub_80F8738) == TRUE) + { + DestroyTask(Rfu.unk_67); + sub_80F85F8(); + } + } + else if (Rfu.unk_0c == 0) + { + if (FuncIsActiveTask(sub_80F893C) == TRUE) + { + DestroyTask(Rfu.unk_67); + sub_80F85F8(); + } + } + else if (Rfu.unk_0c == 2) + { + if (FuncIsActiveTask(sub_80F8B34) == TRUE) + { + DestroyTask(Rfu.unk_67); + sub_80F85F8(); + } + } + for (i = 0; i < NELEMS(gUnknown_843ED88); i++) + { + if (FuncIsActiveTask(gUnknown_843ED88[i]) == TRUE) + { + DestroyTask(FindTaskIdByFunc(gUnknown_843ED88[i])); + } + } +} + +static void sub_80F8E74(void) +{ + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return; + Rfu.unk_67 = CreateTask(sub_80F8738, 1); +} + +static bool8 sub_80F8EA4(void) +{ + if (Rfu.unk_04 == 7 && Rfu.unk_ccd) + { + return TRUE; + } + return FALSE; +} + +static bool32 sub_80F8ECC(void) +{ + if (Rfu.unk_04 == 7 && !sub_80FD610(gRfuLinkStatus->partner[Rfu.unk_c3d].id, 240)) + { + Rfu.unk_04 = 9; + return TRUE; + } + return FALSE; +} + +static void sub_80F8F10(void) +{ + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return; + Rfu.unk_67 = CreateTask(sub_80F893C, 1); +} + +bool8 sub_80F8F40(void) +{ + if (gUnknown_3005E10.unk_00) + { + return TRUE; + } + return FALSE; +} + +void sub_80F8F5C(void) +{ + Rfu.unk_04 = 4; + Rfu.unk_ce7 = gUnknown_3005E10.unk_00; +} + +bool32 sub_80F8F7C(bool32 a0) +{ + if (Rfu.unk_04 == 17 || a0) + { + Rfu.unk_04 = 18; + return TRUE; + } + return FALSE; +} + +void sub_80F8FA0(void) +{ + Rfu.unk_04 = 14; +} + +static void sub_80F8FAC(u8 a0) +{ + u8 i; + + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (a0 & 1) + { + rfu_UNI_readySendData(i); + break; + } + a0 >>= 1; + } +} + +static void sub_80F8FD4(void) +{ + s32 i, j; + + for (i = 0; i < 5; i++) + { + struct UnkRfuStruct_2 *ptr = &Rfu; + for (j = 0; j < 7; j++) + { + ptr->unk_c87[i][j][1] = gRecvCmds[i][j] >> 8; + ptr->unk_c87[i][j][0] = gRecvCmds[i][j]; + } + } + CpuFill16(0, gRecvCmds, sizeof gRecvCmds); +} + +static void sub_80F9038(void) +{ + s32 i; + for (i = 0; i < 7; i++) + { + gRecvCmds[0][i] = gSendCmd[i]; + } + for (i = 0; i < 7; i++) + { + gSendCmd[i] = 0; + } +} + +static void sub_80F906C(void) +{ + if (Rfu.unk_c3c) + { + u8 r2 = sub_80FC888(&Rfu.unk_c1c, Rfu.unk_4c); + if (Rfu.unk_c1c.unk_1e == 0) + { + Rfu.unk_c3c = 0; + } + if (r2) + { + return; + } + } + if (Rfu.unk_c3c == 0) + { + sub_80FC79C(&Rfu.unk_9e8, Rfu.unk_4c); + sub_80FC828(&Rfu.unk_c1c, Rfu.unk_4c); + } +} + +bool32 IsRfuRecvQueueEmpty(void) +{ + s32 i; + s32 j; + + if (gRfuLinkStatus->sendSlotUNIFlag == 0) + { + return FALSE; + } + for (i = 0; i < 5; i++) + { + for (j = 0; j < 7; j++) + { + if (gRecvCmds[i][j] != 0) + { + return FALSE; + } + } + } + return TRUE; +} + +static bool32 sub_80F911C(void) +{ + if (Rfu.unk_04 < 20) + { + rfu_REQ_recvData(); + rfu_waitREQComplete(); + LinkRfu_REQ_SendData_HandleParentRelationship(FALSE); + } + else + { + Rfu.unk_cdb = 0; + if ((Rfu.unk_ce2 & gRfuLinkStatus->connSlotFlag) == Rfu.unk_ce2 && (Rfu.unk_ce2 & gRfuLinkStatus->connSlotFlag)) + { + if (!Rfu.unk_cdc) + { + if (Rfu.unk_ce3) + { + sub_80FBCF8(Rfu.unk_ce3); + Rfu.unk_ce3 = 0; + if (Rfu.unk_ce4 == 1) + { + sub_80FB9E4(2, 0x8000); + sub_80FB0E8(0x8000); + return FALSE; + } + if (!gUnknown_3005E10.unk_00) + { + sub_80F8DC0(); + gReceivedRemoteLinkPlayers = 0; + return FALSE; + } + } + sub_80F8FD4(); + rfu_UNI_readySendData(Rfu.unk_cda); + LinkRfu_REQ_SendData_HandleParentRelationship(TRUE); + } + else + { + rfu_REQ_PARENT_resumeRetransmitAndChange(); + } + Rfu.unk_0e = 1; + } + } + return FALSE; +} + +static bool32 sub_80F9204(void) +{ + u16 i; + u16 flags; + u8 r0; + u16 j; + u8 retval; + + if (Rfu.unk_04 >= 20 && Rfu.unk_0e == 1) + { + rfu_waitREQComplete(); + while (Rfu.unk_cdb == 0) + { + if (Rfu.unk_ee != 0) + { + return FALSE; + } + } + rfu_REQ_recvData(); + rfu_waitREQComplete(); + if ((gUnknown_3005E10.unk_03 & Rfu.unk_ce2) == Rfu.unk_ce2) + { + Rfu.unk_cdc = 0; + gUnknown_203AC08.unk_06++; + flags = gUnknown_3005E10.unk_00; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (flags & 1) + { + if (Rfu.unk_14[i][1]) + { + if (Rfu.unk_cee[i] != 0xFF && (Rfu.unk_14[i][0] >> 5) != ((Rfu.unk_cee[i] + 1) & 7)) + { + if (++Rfu.unk_cea[i] > 4) + sub_80FB0E8(0x8100); + } + else + { + Rfu.unk_cee[i] = Rfu.unk_14[i][0] / 32; + Rfu.unk_cea[i] = 0; + Rfu.unk_14[i][0] &= 0x1f; + r0 = Rfu.unk_cde[i]; + for (j = 0; j < 7; j++) + { + gRecvCmds[r0][j] = (Rfu.unk_14[i][(j << 1) + 1] << 8) | Rfu.unk_14[i][(j << 1) + 0]; + Rfu.unk_14[i][(j << 1) + 1] = 0; + Rfu.unk_14[i][(j << 1) + 0] = 0; + } + } + } + rfu_UNI_clearRecvNewDataFlag(i); + } + flags >>= 1; + } + sub_80F9038(); + sub_80F9868(0); + CallRfuFunc(); + if (Rfu.unk_ce5 && !Rfu.unk_cd9) + { + gUnknown_203AC08.unk_0e = 0; + rfu_clearSlot(3, Rfu.unk_cda); + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((Rfu.unk_ce5 >> i) & 1) + { + rfu_setRecvBuffer(0x10, i, Rfu.unk_14[i], sizeof(Rfu.unk_14[i])); + } + } + sub_80F887C(Rfu.unk_ce2, Rfu.unk_ce2 | Rfu.unk_ce5); + Rfu.unk_ce9 = Rfu.unk_ce5; + Rfu.unk_ce2 |= Rfu.unk_ce5; + Rfu.unk_ce5 = 0; + rfu_UNI_setSendData(Rfu.unk_ce2, Rfu.unk_c87, sizeof(Rfu.unk_c87)); + Rfu.unk_cda = sub_80F886C(Rfu.unk_ce2); + CreateTask(sub_80FAA94, 0); + } + } + else + { + Rfu.unk_cdc = 1; + Rfu.unk_0e = 0; + } + Rfu.unk_0e = 0; + } + retval = Rfu.unk_cdc; + return gRfuLinkStatus->sendSlotUNIFlag ? retval & 1 : FALSE; +} + +static void sub_80F94BC(u16 *a0, u8 *a1) +{ + s32 i; + + if (a0[0]) + { + a0[0] |= (Rfu.unk_102 << 5); + Rfu.unk_102 = (Rfu.unk_102 + 1) & 7; + for (i = 0; i < 7; i++) + { + a1[2 * i + 1] = a0[i] >> 8; + a1[2 * i + 0] = a0[i]; + } + } + else + { + for (i = 0; i < 14; i++) + a1[i] = 0; + } +} + +static bool32 sub_80F9514(void) +{ + u8 i; + u8 j; + u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))]; + u8 sp48[2 * (CMD_LENGTH - 1)]; + u8 switchval; + + sub_80FC6E8(&Rfu.unk_124, sp00); + for (i = 0; i < MAX_RFU_PLAYERS; i++) + { + for (j = 0; j < CMD_LENGTH - 1; j++) + { + gRecvCmds[i][j] = (sp00[i * 14 + (j << 1) + 1] << 8) | sp00[i * 14 + (j << 1) + 0]; + } + } + sub_80F9868(0); + if (gUnknown_3005E10.unk_02 == 0 && Rfu.unk_ce4) + { + rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag); + rfu_waitREQComplete(); + switchval = sub_80FB9F4(); + if (switchval != 1 && switchval != 6 && switchval != 9) + sub_80FB9E4(2, 0x9000); + rfu_clearAllSlot(); + gReceivedRemoteLinkPlayers = FALSE; + Rfu.RfuFunc = NULL; + if (Rfu.unk_ce4 == 1) + { + sub_80FB9E4(2, 0x9000); + sub_80FB0E8(0x9000); + } + gUnknown_3005E10.unk_04 = gUnknown_3005E10.unk_05 = 0; + Rfu.unk_ce4 = 0; + } + if (Rfu.unk_cd0) + { + Rfu.unk_cd0--; + CallRfuFunc(); + sub_80F94BC(gSendCmd, sp48); + sub_80FC63C(&Rfu.unk_9e8, sp48); + for (i = 0; i < CMD_LENGTH - 1; i++) + gSendCmd[i] = 0; + } + return IsRfuRecvQueueEmpty(); +} + +static void sub_80F965C(u8 unused, u32 flags) +{ + s32 i, j; + + const u8 *r10 = Rfu.unk_6c.unk_04; + for (i = 0; i < Rfu.unk_6c.unk_02; i++) + { + if (!(flags & 1)) + { + gUnknown_3002008[0] = (~0x76ff) | i; + for (j = 0; j < 7; j++) + { + gUnknown_3002008[j + 1] = (r10[12 * i + (j << 1) + 1] << 8) | r10[12 * i + (j << 1) + 0]; + } + for (j = 0; j < 7; j++) + { + gUnknown_3001FF8[2 * j + 1] = gUnknown_3002008[j] >> 8; + gUnknown_3001FF8[2 * j + 0] = gUnknown_3002008[j]; + + j++;j--; // Needed to match; + } + sub_80FC63C(&Rfu.unk_9e8, gUnknown_3001FF8); + Rfu.unk_6c.unk_0c |= (1 << i); + } + flags >>= 1; + } +} + +void Rfu_SetBlockReceivedFlag(u8 a0) +{ + if (Rfu.unk_0c == 1 && a0) + Rfu.unk_61[a0] = 1; + else + Rfu.unk_5c[a0] = 1; +} + +void Rfu_ResetBlockReceivedFlag(u8 a0) +{ + Rfu.unk_5c[a0] = 0; + Rfu.unk_80[a0].unk_12 = 0; +} + +static u8 sub_80F9770(const u8 *a0) +{ + u8 i; + + if (Rfu.unk_0c == 1) + return FALSE; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + Rfu.unk_cde[i] = a0[i]; + } + return a0[Rfu.unk_c3e]; +} + +static void rfu_func_080F97B8(void) +{ + static u8 gUnknown_3001188; + if (gReceivedRemoteLinkPlayers + && gHeldKeyCodeToSend != LINK_KEY_CODE_NULL + && gLinkTransferringData != TRUE) + { + gUnknown_3001188++; + gHeldKeyCodeToSend |= (gUnknown_3001188 << 8); + sub_80F9D04(0xbe00); + } +} + +struct GFtgtGname *sub_80F9800(void) +{ + return &gUnknown_3005440; +} + +bool32 IsSendingKeysToRfu(void) +{ + return Rfu.RfuFunc == rfu_func_080F97B8; +} + +void sub_80F9828(void) +{ + AGB_ASSERT_EX(Rfu.RfuFunc == NULL, ABSPATH("rfu.c"), 1473); + Rfu.RfuFunc = rfu_func_080F97B8; +} + +void Rfu_set_zero(void) +{ + Rfu.RfuFunc = NULL; +} + +static void sub_80F9868(u8 unused) +{ + u16 i; + u16 j; + + for (i = 0; i < MAX_RFU_PLAYERS; i++) + { + switch (gRecvCmds[i][0] & 0xff00) + { + case 0x7800: + if (Rfu.unk_0c == 0 && gReceivedRemoteLinkPlayers != 0) + return; + // fallthrough + case 0x7700: + if (gRfuLinkStatus->parentChild == MODE_CHILD) + { + Rfu.playerCount = gRecvCmds[i][1]; + Rfu.unk_cce = sub_80F9770((u8 *)(gRecvCmds[i] + 2)); + } + break; + case 0x8800: + if (Rfu.unk_80[i].unk_12 == 0) + { + Rfu.unk_80[i].unk_00 = 0; + Rfu.unk_80[i].unk_02 = gRecvCmds[i][1]; + Rfu.unk_80[i].unk_11 = gRecvCmds[i][2]; + Rfu.unk_80[i].unk_08 = 0; + Rfu.unk_80[i].unk_12 = 1; + Rfu.unk_5c[i] = 0; + } + break; + case 0x8900: + if (Rfu.unk_80[i].unk_12 == 1) + { + Rfu.unk_80[i].unk_00 = gRecvCmds[i][0] & 0xff; + Rfu.unk_80[i].unk_08 |= (1 << Rfu.unk_80[i].unk_00); + for (j = 0; j < 6; j++) + gBlockRecvBuffer[i][Rfu.unk_80[i].unk_00 * 6 + j] = gRecvCmds[i][j + 1]; + if (Rfu.unk_80[i].unk_08 == gUnknown_843EBD4[Rfu.unk_80[i].unk_02]) + { + Rfu.unk_80[i].unk_12 = 2; + Rfu_SetBlockReceivedFlag(i); + if (sub_80F9800()->unk_0a_0 == 0x45 && gReceivedRemoteLinkPlayers != 0 && Rfu.unk_0c == 0) + sub_80FAA58(gBlockRecvBuffer); + } + } + break; + case 0xa100: + Rfu_InitBlockSend(gUnknown_843EC64[gRecvCmds[i][1]].buffer, (u16)gUnknown_843EC64[gRecvCmds[i][1]].size); + break; + case 0x5f00: + Rfu.unk_e4[i] = 1; + break; + case 0x6600: + if (Rfu.unk_100 == gRecvCmds[i][1]) + Rfu.unk_e9[i] = 1; + break; + case 0xed00: + if (Rfu.unk_0c == 0) + { + if (gReceivedRemoteLinkPlayers != 0) + { + if (gRecvCmds[i][1] & gRfuLinkStatus->connSlotFlag) + { + gReceivedRemoteLinkPlayers = 0; + sub_80FEB14(); + Rfu.unk_ce4 = gRecvCmds[i][2]; + } + Rfu.playerCount = gRecvCmds[i][3]; + sub_80FA9D0(gRecvCmds[i][1]); + } + } + else + { + sub_80F9D04(0xee00); + gSendCmd[1] = gRecvCmds[i][1]; + gSendCmd[2] = gRecvCmds[i][2]; + gSendCmd[3] = gRecvCmds[i][3]; + } + break; + case 0xee00: + if (Rfu.unk_0c == 1) + { + Rfu.unk_ce3 |= gRecvCmds[i][1]; + Rfu.unk_ce4 = gRecvCmds[i][2]; + sub_80FA9D0(gRecvCmds[i][1]); + } + break; + case 0xbe00: + gLinkPartnersHeldKeys[i] = gRecvCmds[i][1]; + break; + } + if (Rfu.unk_0c == 1 && Rfu.unk_61[i]) + { + if (Rfu.unk_61[i] == 4) + { + Rfu.unk_5c[i] = 1; + Rfu.unk_61[i] = 0; + } + else + Rfu.unk_61[i]++; + } + } +} + +static bool8 sub_80F9C50(void) +{ + s32 i; + + for (i = 0; i < 5; i++) + { + if (Rfu.unk_80[i].unk_12) + return FALSE; + } + return TRUE; +} + +static bool8 sub_80F9C78(void) +{ + s32 i; + + for (i = 0; i < Rfu.playerCount; i++) + { + if (Rfu.unk_80[i].unk_12 != 2 || Rfu.unk_5c[i] != 1) + return FALSE; + } + return TRUE; +} + +static void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data) +{ + data->unk_00 = 0; + data->unk_02 = 0; + data->unk_04 = NULL; + data->unk_08 = 0; + data->unk_10 = 0; + data->unk_11 = 0; + data->unk_12 = 0; +} + +u8 Rfu_GetBlockReceivedStatus(void) +{ + u8 flags = 0; + s32 i; + + for (i = 0; i < 5; i++) + { + if (Rfu.unk_80[i].unk_12 == 2 && Rfu.unk_5c[i] == 1) + { + flags |= (1 << i); + } + } + return flags; +} + +static void sub_80F9D04(u16 command) +{ + u8 i; + u8 *buff; + u8 tmp; + + gSendCmd[0] = command; + switch (command) + { + case 0x8800: + gSendCmd[1] = Rfu.unk_6c.unk_02; + gSendCmd[2] = Rfu.unk_6c.unk_11 + 0x80; + break; + case 0xa100: + if (sub_80F9C50()) + gSendCmd[1] = Rfu.unk_5a; + break; + case 0x7700: + case 0x7800: + tmp = Rfu.unk_ce2 ^ Rfu.unk_ce3; + Rfu.playerCount = gUnknown_843EC41[tmp] + 1; + gSendCmd[1] = Rfu.playerCount; + buff = (u8 *)(gSendCmd + 2); + for (i = 0; i < RFU_CHILD_MAX; i++) + buff[i] = Rfu.unk_cde[i]; + break; + case 0x6600: + case 0x5f00: + gSendCmd[1] = Rfu.unk_100; + break; + case 0x2f00: + for (i = 0; i < 6; i++) + gSendCmd[1 + i] = Rfu.unk_f2[i]; + break; + case 0xbe00: + gSendCmd[1] = gHeldKeyCodeToSend; + break; + case 0xee00: + break; + case 0xed00: + break; + } +} + +void sub_80F9E2C(void *a0) +{ + if (gSendCmd[0] == 0 && !sub_80FBA00()) + { + memcpy(Rfu.unk_f2, a0, sizeof(Rfu.unk_f2)); + sub_80F9D04(0x2f00); + } +} + +bool32 Rfu_InitBlockSend(const u8 *src, size_t size) +{ + bool8 r4; + AGB_ASSERT_EX(size<=252, ABSPATH("rfu.c"), 1793); + if (Rfu.RfuFunc != NULL) + return FALSE; + if (gSendCmd[0] != 0) + return FALSE; + if (Rfu.unk_6c.unk_10 != 0) + { + gUnknown_203AC08.unk_83++; + return FALSE; + } + r4 = (size % 12) != 0; + Rfu.unk_6c.unk_11 = GetMultiplayerId(); + Rfu.unk_6c.unk_10 = 1; + Rfu.unk_6c.unk_02 = (size / 12) + r4; + Rfu.unk_6c.unk_00 = 0; + if (size > 0x100) + Rfu.unk_6c.unk_04 = src; + else + { + if (src != gBlockSendBuffer) + memcpy(gBlockSendBuffer, src, size); + Rfu.unk_6c.unk_04 = gBlockSendBuffer; + } + sub_80F9D04(0x8800); + Rfu.RfuFunc = rfufunc_80F9F44; + Rfu.unk_5b = 0; + return TRUE; +} + +static void rfufunc_80F9F44(void) +{ + if (gSendCmd[0] == 0) + { + sub_80F9D04(0x8800); + if (Rfu.unk_0c == 1) + { + if (++Rfu.unk_5b > 2) + Rfu.RfuFunc = sub_80F9FA8; + } + else + { + if ((gRecvCmds[GetMultiplayerId()][0] & 0xff00) == 0x8800) + Rfu.RfuFunc = sub_80F9FA8; + } + } +} +static void sub_80F9FA8(void) +{ + s32 i; + const u8 *src = Rfu.unk_6c.unk_04; + gSendCmd[0] = 0x8900 | Rfu.unk_6c.unk_00; + for (i = 0; i < 7; i++) + gSendCmd[i + 1] = (src[(i << 1) + Rfu.unk_6c.unk_00 * 12 + 1] << 8) | src[(i << 1) + Rfu.unk_6c.unk_00 * 12 + 0]; + Rfu.unk_6c.unk_00++; + if (Rfu.unk_6c.unk_02 <= Rfu.unk_6c.unk_00) + { + Rfu.unk_6c.unk_10 = 0; + Rfu.RfuFunc = rfufunc_80FA020; + } +} + +static void rfufunc_80FA020(void) +{ + const u8 *src = Rfu.unk_6c.unk_04; + u8 mpId = GetMultiplayerId(); + s32 i; + if (Rfu.unk_0c == 0) + { + gSendCmd[0] = (~0x76ff) | (Rfu.unk_6c.unk_02 - 1); + for (i = 0; i < 7; i++) + gSendCmd[i + 1] = (src[(i << 1) + (Rfu.unk_6c.unk_02 - 1) * 12 + 1] << 8) | src[(i << 1) + (Rfu.unk_6c.unk_02 - 1) * 12 + 0]; + if ((u8)gRecvCmds[mpId][0] == Rfu.unk_6c.unk_02 - 1) + { + if (Rfu.unk_80[mpId].unk_08 != gUnknown_843EBD4[Rfu.unk_80[mpId].unk_02]) + { + sub_80F965C(mpId, Rfu.unk_80[mpId].unk_08); + gUnknown_203AC08.unk_64++; + } + else + Rfu.RfuFunc = NULL; + } + } + else + Rfu.RfuFunc = NULL; +} + +bool8 sub_80FA0F8(u8 a0) +{ + Rfu.unk_5a = a0; + sub_80F9D04(0xa100); + return TRUE; +} + +static void sub_80FA114(void) +{ + rfu_clearAllSlot(); + sub_80FD52C(); + gReceivedRemoteLinkPlayers = 0; + Rfu.unk_ef = 1; + Rfu.RfuFunc = NULL; +} + +static void sub_80FA140(void) +{ + rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag); + rfu_waitREQComplete(); + sub_80FA114(); +} + +static void sub_80FA160(void) +{ + if (Rfu.unk_0c == 0) + { + sub_80FEB14(); + Rfu.unk_ce4 = 2; + } + else + Rfu.RfuFunc = sub_80FA140; +} + +void LinkRfu_FatalError(void) +{ + sub_80FEB14(); + Rfu.unk_ce4 = 1; + Rfu.unk_ce3 = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag; +} + +static void sub_80FA1C4(void) +{ + s32 i; + u8 playerCount = Rfu.playerCount; + s32 count = 0; + + for (i = 0; i < MAX_RFU_PLAYERS; i++) + { + if (Rfu.unk_e4[i]) + count++; + } + if (count == playerCount) + { + gBattleTypeFlags &= (u16)~BATTLE_TYPE_20; + if (Rfu.unk_0c == 0) + { + Rfu.unk_ee = 3; + sub_80FA160(); + } + else + Rfu.RfuFunc = sub_80FA160; + } +} + +static void sub_80FA224(void) +{ + if (gSendCmd[0] == 0 && Rfu.unk_ce8 == 0) + { + sub_80F9D04(0x5f00); + Rfu.RfuFunc = sub_80FA1C4; + } +} + +static void sub_80FA25C(u8 taskId) +{ + if (Rfu.RfuFunc == NULL) + { + Rfu.unk_cd9 = 1; + Rfu.RfuFunc = sub_80FA224; + DestroyTask(taskId); + } +} + +void task_add_05_task_del_08FA224_when_no_RfuFunc(void) +{ + if (!FuncIsActiveTask(sub_80FA25C)) + CreateTask(sub_80FA25C, 5); +} + +static void sub_80FA2B0(void) +{ + u8 playerCount; + u8 i; + + if (GetMultiplayerId() != 0) + { + if (Rfu.unk_124.unk_8c2 == 0 && Rfu.unk_fe > 0x3c) + { + sub_80F9D04(0x6600); + Rfu.unk_fe = 0; + } + } + playerCount = GetLinkPlayerCount(); + for (i = 0; i < playerCount; i++) + { + if (Rfu.unk_e9[i] == 0) + break; + } + if (i == playerCount) + { + for (i = 0; i < MAX_RFU_PLAYERS; i++) + Rfu.unk_e9[i] = 0; + Rfu.unk_100++; + Rfu.RfuFunc = NULL; + } + Rfu.unk_fe++; +} + +static void sub_80FA350(void) +{ + if (Rfu.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0) + { + sub_80F9D04(0x6600); + Rfu.RfuFunc = sub_80FA2B0; + } +} + +static void sub_80FA388(void) +{ + u8 i; + u8 playerCount; + + if (GetMultiplayerId() != 0) + { + if (Rfu.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0) + { + sub_80F9D04(0x6600); + Rfu.RfuFunc = sub_80FA2B0; + } + } + else + { + playerCount = GetLinkPlayerCount(); + for (i = 1; i < playerCount; i++) + { + if (Rfu.unk_e9[i] == 0) + break; + } + if (i == playerCount) + { + if (Rfu.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0) + { + sub_80F9D04(0x6600); + Rfu.RfuFunc = sub_80FA350; + } + } + } +} + +void sub_80FA42C(void) +{ + if (Rfu.RfuFunc == NULL) + { + Rfu.RfuFunc = sub_80FA388; + Rfu.unk_fe = 0; + } +} + +bool32 sub_80FA44C(u32 a0) +{ + s32 i; + for (i = 0; gUnknown_843EC8C[i] != a0; i++) + { + if (gUnknown_843EC8C[i] == 0xFFFF) + return FALSE; + } + return TRUE; +} + +u8 sub_80FA484(bool32 a0) +{ + if (!a0) + return sub_80FEA34(0, 0); + sub_80FEA34(1, 0x258); + return 0; +} + +void sub_80FA4A8(void) +{ + Rfu.unk_cd9 = 1; + sub_80FD760(FALSE); +} + +u8 LinkRfu_GetMultiplayerId(void) +{ + if (Rfu.unk_0c == 1) + return 0; + return Rfu.unk_cce; +} + +u8 GetRfuPlayerCount(void) +{ + return Rfu.playerCount; +} + +bool8 IsLinkRfuTaskFinished(void) +{ + return Rfu.RfuFunc != NULL ? FALSE : TRUE; +} + +static void CallRfuFunc(void) +{ + if (Rfu.RfuFunc != NULL) + Rfu.RfuFunc(); +} + +static bool8 sub_80FA528(void) +{ + s32 i; + bool8 retval = FALSE; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (Rfu.unk_cd1[i] < 5 || Rfu.unk_cd1[i] > 6) + { + if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS || gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN) + { + if (Rfu.unk_cd5[i] == 8) + { + Rfu.unk_cd1[i] = 9; + Rfu.unk_cd5[i] = 10; + rfu_clearSlot(8, i); + rfu_NI_setSendData(1 << i, 8, Rfu.unk_cd1 + i, 1); + retval = TRUE; + } + + } + else if (gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == SLOT_STATE_RECV_FAILED) + { + rfu_clearSlot(8, i); + } + } + } + return retval; +} + +bool32 sub_80FA5D4(void) +{ + u8 flags = 0; + s32 i; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (Rfu.unk_cd5[i] == 11) + { + flags |= (1 << i); + Rfu.unk_cd5[i] = 0; + } + } + if (flags) + { + rfu_REQ_disconnect(flags); + rfu_waitREQComplete(); + } + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (Rfu.unk_cd5[i] == 10 || Rfu.unk_cd5[i] == 11) + return TRUE; + } + return FALSE; +} + +bool32 sub_80FA634(u16 a0, const u8 *a1) +{ + u8 r1 = sub_80FBC70(a1, a0); + if (r1 == 0xFF) + return TRUE; + if (Rfu.unk_cd1[r1] == 9) + return TRUE; + return FALSE; +} + +void sub_80FA670(u8 a0, u16 a1, const u8 *a2) +{ + u8 r4 = sub_80FBC70(a2, a1); + Rfu.unk_cd1[r4] = a0; + rfu_clearSlot(4, r4); + rfu_NI_setSendData(1 << r4, 8, Rfu.unk_cd1 + r4, 1); +} + +void sub_80FA6BC(void) +{ + Rfu.unk_c85 = 8; + rfu_clearSlot(4, Rfu.unk_c3e); + rfu_NI_setSendData(1 << Rfu.unk_c3e, 8, &Rfu.unk_c85, 1); +} + +u32 sub_80FA6FC(u16 a0, const u8 *a1) +{ + u8 r0 = sub_80FBC70(a1, a0); + if (r0 == 0xFF) + return 2; + if (gRfuSlotStatusNI[r0]->send.state == 0) + return 1; + return 0; +} + +static void sub_80FA738(void) +{ + s32 i; + + sub_80FA528(); + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (gRfuSlotStatusNI[i]->send.state == SLOT_STATE_SEND_SUCCESS || gRfuSlotStatusNI[i]->send.state == SLOT_STATE_SEND_FAILED) + { + if (Rfu.unk_cd5[i] == 10) + Rfu.unk_cd5[i] = 11; + rfu_clearSlot(4, i); + } + } +} + +static s32 sub_80FA788(void) +{ + s32 retval = 0; + if (Rfu.unk_c85 == 8) + { + if (gRfuSlotStatusNI[Rfu.unk_c3e]->send.state == SLOT_STATE_SEND_SUCCESS || gRfuSlotStatusNI[Rfu.unk_c3e]->send.state == SLOT_STATE_SEND_FAILED) + rfu_clearSlot(4, Rfu.unk_c3e); + } + if (gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == SLOT_STATE_RECV_SUCCESS || gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN) + { + rfu_clearSlot(8, Rfu.unk_c3e); + sub_80FB9E4(Rfu.unk_c86, 0); + retval = Rfu.unk_c86; + } + else if (gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == SLOT_STATE_RECV_FAILED) + { + rfu_clearSlot(8, Rfu.unk_c3e); + retval = 6; + } + return retval; +} + +static void sub_80FA834(u8 taskId) +{ + s32 i; + + if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2) + { + Rfu.unk_ce8 = 0; + DestroyTask(taskId); + } + switch (gTasks[taskId].data[0]) + { + case 0: + if (sub_80F9C50()) + { + ResetBlockReceivedFlags(); + sub_800B0B4(); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (Rfu.unk_0c == 1) + { + if (gReceivedRemoteLinkPlayers) + sub_80F9D04(0x7800); + else + sub_80F9D04(0x7700); + gTasks[taskId].data[0] = 101; + } + else + gTasks[taskId].data[0] = 2; + break; + case 101: + if (gSendCmd[0] == 0) + gTasks[taskId].data[0] = 2; + break; + case 2: + if (Rfu.playerCount) + gTasks[taskId].data[0]++; + break; + case 3: + if (Rfu.unk_0c == 1) + { + if (sub_80F9C50()) + { + Rfu.unk_5a = 0; + sub_80F9D04(0xa100); + gTasks[taskId].data[0]++; + } + } + else + gTasks[taskId].data[0]++; + break; + case 4: + if (sub_80F9C78()) + gTasks[taskId].data[0]++; + break; + case 5: + for (i = 0; i < Rfu.playerCount; i++) + { + sub_800B110(i); + Rfu_ResetBlockReceivedFlag(i); + } + gTasks[taskId].data[0]++; + break; + case 6: + DestroyTask(taskId); + gReceivedRemoteLinkPlayers = 1; + Rfu.unk_ce8 = 0; + sub_80FEA34(1, 0x258); + if (Rfu.unk_ce6) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((Rfu.unk_ce6 >> i) & 1) + { + Rfu.unk_ce5 = 1 << i; + Rfu.unk_ce6 ^= (1 << i); + } + } + } + break; + } +} + +static void sub_80FA9D0(u16 a0) +{ + s32 i; + + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((a0 >> i) & 1) + Rfu.unk_cde[i] = 0; + } +} + +static void sub_80FA9FC(const struct UnkRfuStruct_8010A14 *a0) +{ + s32 i; + Rfu.playerCount = a0->unk_0f; + for (i = 0; i < RFU_CHILD_MAX; i++) + Rfu.unk_cde[i] = a0->unk_10[i]; + for (i = 0; i < MAX_RFU_PLAYERS; i++) + { + gLinkPlayers[i] = a0->unk_14[i]; + sub_800B284(gLinkPlayers + i); + } +} + +static void sub_80FAA58(void *a0) +{ + if (strcmp("PokemonSioInfo", ((struct UnkRfuStruct_8010A14 *)a0)->unk_00) == 0) + { + sub_80FA9FC(a0); + CpuFill16(0, a0, sizeof(struct UnkRfuStruct_8010A14)); + ResetBlockReceivedFlag(0); + } +} + +static void sub_80FAA94(u8 taskId) +{ + s32 i; + struct LinkPlayerBlock *r2; + struct UnkRfuStruct_8010A14 *r5; + u8 r4 = Rfu.unk_cde[gUnknown_843EC38[Rfu.unk_ce9]]; + if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2) + { + Rfu.unk_ce8 = 0; + DestroyTask(taskId); + } + switch (gTasks[taskId].data[0]) + { + case 0: + if (gSendCmd[0] == 0) + { + ResetBlockReceivedFlag(r4); + sub_80F9D04(0x7800); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (gSendCmd[0] == 0) + gTasks[taskId].data[0]++; + break; + case 2: + if ((GetBlockReceivedStatus() >> r4) & 1) + { + ResetBlockReceivedFlag(r4); + r2 = (struct LinkPlayerBlock *)gBlockRecvBuffer[r4]; + gLinkPlayers[r4] = r2->linkPlayer; + sub_800B284(gLinkPlayers + r4); + gTasks[taskId].data[0]++; + } + break; + case 3: + r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer; + memcpy(r5->unk_00, "PokemonSioInfo", sizeof("PokemonSioInfo")); + r5->unk_0f = Rfu.playerCount; + for (i = 0; i < RFU_CHILD_MAX; i++) + r5->unk_10[i] = Rfu.unk_cde[i]; + memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers); + gTasks[taskId].data[0]++; + // fallthrough + case 4: + r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer; + r5->unk_0f = Rfu.playerCount; + for (i = 0; i < RFU_CHILD_MAX; i++) + r5->unk_10[i] = Rfu.unk_cde[i]; + memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers); + if (SendBlock(0, gBlockSendBuffer, 0xa0)) + gTasks[taskId].data[0]++; + break; + case 5: + if (IsLinkTaskFinished() && GetBlockReceivedStatus() & 1) + { + CpuFill16(0, gBlockRecvBuffer, sizeof(struct UnkRfuStruct_8010A14)); + ResetBlockReceivedFlag(0); + Rfu.unk_ce8 = 0; + if (Rfu.unk_ce6) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((Rfu.unk_ce6 >> i) & 1) + { + Rfu.unk_ce5 = 1 << i; + Rfu.unk_ce6 ^= (1 << i); + Rfu.unk_ce8 = 1; + break; + } + } + } + DestroyTask(taskId); + } + break; + } +} + +static void sub_80FACF0(u8 taskId) +{ + if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2) + DestroyTask(taskId); + switch (gTasks[taskId].data[0]) + { + case 0: + if (Rfu.playerCount) + { + sub_800B0B4(); + SendBlock(0, gBlockSendBuffer, sizeof(struct LinkPlayerBlock)); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (IsLinkTaskFinished()) + gTasks[taskId].data[0]++; + break; + case 2: + if (GetBlockReceivedStatus() & 1) + { + sub_80FA9FC((const struct UnkRfuStruct_8010A14 *)gBlockRecvBuffer); + ResetBlockReceivedFlag(0); + gReceivedRemoteLinkPlayers = 1; + DestroyTask(taskId); + } + break; + } +} + +static void sub_80FAD98(void) +{ + if (Rfu.unk_ee == 1 && gUnknown_3005E10.unk_02 == 0) + { + if (gMain.callback2 == c2_mystery_gift_e_reader_run) + gWirelessCommType = 2; + SetMainCallback2(CB2_LinkError); + gMain.savedCallback = CB2_LinkError; + sub_800ACBC((Rfu.unk_0a << 16) | (Rfu.unk_10 << 8) | Rfu.unk_12, Rfu.unk_124.unk_8c2, Rfu.unk_9e8.unk_232, sub_80FB9F4() == 2); + Rfu.unk_ee = 2; + CloseLink(); + } + else if (Rfu.unk_9e8.unk_233 == 1 || Rfu.unk_124.unk_8c3 == 1) + { + if (gUnknown_3005E10.unk_02) + sub_80FEB14(); + sub_80FB9E4(1, 0x7000); + sub_80FB0E8(0x7000); + } +} + +static void rfu_REQ_recvData_then_sendData(void) +{ + if (gUnknown_3005E10.unk_06 == 1) + { + rfu_REQ_recvData(); + rfu_waitREQComplete(); + LinkRfu_REQ_SendData_HandleParentRelationship(0); + } +} + +bool32 sub_80FAE94(void) +{ + bool32 retval = FALSE; + Rfu.unk_ccd = 0; + sub_80FDA30(Random()); + if (Rfu.unk_ef == 0) + { + switch (Rfu.unk_0c) + { + case 1: + sub_80F911C(); + break; + case 0: + retval = sub_80F9514(); + break; + case 2: + rfu_REQ_recvData_then_sendData(); + break; + } + } + return retval; +} + +bool32 sub_80FAEF0(void) +{ + bool32 retval = FALSE; + if (Rfu.unk_ef == 0) + { + if (Rfu.unk_0c == 1) + retval = sub_80F9204(); + sub_80FAD98(); + } + return retval; +} + +static void sub_80FAF1C(void) +{ + StringCopy(gUnknown_3005E00, gSaveBlock2Ptr->playerName); +} + +void sub_80FAF34(void) +{ + memset(&gUnknown_3005440, 0, RFU_GAME_NAME_LENGTH); + sub_80FCB54(&gUnknown_3005440, 0, 0, 0); +} + +void sub_80FAF58(u8 a0, u32 a1, u32 a2) +{ + sub_80FCB54(&gUnknown_3005440, a0, a2, a1); +} + +void sub_80FAF74(bool32 a0, bool32 a1) +{ + gUnknown_3005440.unk_00.unk_00_4 = a0; + gUnknown_3005440.unk_00.unk_00_5 = a1; +} + +void sub_80FAFA0(u32 type, u32 species, u32 level) +{ + gUnknown_3005440.type = type; + gUnknown_3005440.species = species; + gUnknown_3005440.level = level; +} + +void sub_80FAFE0(u8 a0) +{ + gUnknown_3005440.unk_0a_7 = a0; + rfu_REQ_configGameData(0, 2, (void *)&gUnknown_3005440, gUnknown_3005E00); +} + +void sub_80FB008(u8 a0, u32 a1, u32 a2) +{ + if (a0) + sub_80FAF58(a0, a1, a2); + rfu_REQ_configGameData(0, 2, (void *)&gUnknown_3005440, gUnknown_3005E00); +} + +void sub_80FB030(u32 a0) +{ + s32 i; + u32 r5; + u32 r7; + s32 r8; + + if (sub_80F9800()->unk_0a_0 == 0x45) + { + r5 = 0; + r7 = 0; + r8 = Rfu.unk_ce2 ^ Rfu.unk_ce3; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((r8 >> i) & 1) + { + r7 |= ((0x80 | ((gLinkPlayers[Rfu.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.unk_cde[i]].trainerId & 7)) << (r5 << 3)); + r5++; + if (r5 == a0 - 1) + break; + } + } + sub_80FB008(0x45, r7, 0); + } +} + +static void sub_80FB0E8(u32 a0) +{ + if (Rfu.unk_ee == 0) + { + Rfu.unk_10 = gUnknown_3005E10.unk_14; + Rfu.unk_12 = gUnknown_3005E10.unk_16; + Rfu.unk_0a = a0; + Rfu.unk_ee = 1; + } +} + +static void sub_80FB118(void) +{ + Rfu.unk_ee = 0; +} + +void sub_80FB128(bool32 a0) +{ + if (!a0) + Rfu.unk_ee = 0; + else + Rfu.unk_ee = 4; +} + +static void sub_80FB154(void) +{ + sub_80FBE20(gUnknown_3005E10.unk_00, 1); + Rfu.RfuFunc = NULL; +} + +static void sub_80FB174(void) +{ + Rfu.RfuFunc = sub_80FB154; +} + +static void sub_80FB184(u8 a0, u8 unused1) +{ + u8 i; + u8 r6 = 0; + switch (a0) + { + case 0x00: + Rfu.unk_04 = 2; + break; + case 0x10: + break; + case 0x11: + sub_80FB564(gUnknown_3005E10.unk_14); + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((gUnknown_3005E10.unk_14 >> i) & 1) + { + struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname; + if (structPtr->unk_0a_0 == sub_80F9800()->unk_0a_0) + { + Rfu.unk_cd1[i] = 0; + Rfu.unk_cd5[i] = 0; + rfu_setRecvBuffer(0x20, i, Rfu.unk_cd5 + i, 1); + } + else + { + r6 |= (1 << i); + } + } + } + if (r6) + { + rfu_REQ_disconnect(r6); + rfu_waitREQComplete(); + } + break; + case 0x12: + break; + case 0x13: + break; + case 0x14: + if (Rfu.unk_ce7 != gUnknown_3005E10.unk_00) + { + rfu_REQ_disconnect(Rfu.unk_ce7 ^ gUnknown_3005E10.unk_00); + rfu_waitREQComplete(); + } + Rfu.unk_04 = 0x11; + break; + case 0x31: + Rfu.unk_f0 = 1; + break; + case 0x32: + Rfu.unk_f0 = 3; + break; + case 0x30: + case 0x33: + Rfu.unk_f0 = 4; + Rfu.unk_ce2 &= ~gUnknown_3005E10.unk_14; + if (gReceivedRemoteLinkPlayers == 1) + { + if (Rfu.unk_ce2 == 0) + sub_80FB0E8(a0); + else + sub_80FB174(); + } + sub_80FB9E4(2, a0); + break; + case 0x34: + break; + case 0x42 ... 0x44: + break; + case 0xf3: + sub_80FB9E4(1, a0); + sub_80FB0E8(a0); + Rfu.unk_ef = 1; + break; + case 0xf0 ... 0xf2: + case 0xff: + sub_80FB0E8(a0); + sub_80FB9E4(1, a0); + Rfu.unk_cdb = 1; + break; + } +} + +static const u8 unref_843EDF3[] = _(" あきと"); + +static void sub_80FB37C(u8 a0, u8 unused1) +{ + switch (a0) + { + case 0x00: + Rfu.unk_04 = 6; + break; + case 0x20: + Rfu.unk_ccd = gUnknown_3005E10.unk_14; + break; + case 0x21: + break; + case 0x22: + Rfu.unk_c3e = gUnknown_3005E10.unk_14; + break; + case 0x23: + sub_80FB9E4(2, a0); + break; + case 0x24: + Rfu.unk_04 = 11; + Rfu.unk_c85 = 0; + Rfu.unk_c86 = 0; + rfu_setRecvBuffer(0x20, Rfu.unk_c3e, &Rfu.unk_c86, 1); + rfu_setRecvBuffer(0x10, Rfu.unk_c3e, Rfu.unk_c3f, 70); + break; + case 0x25: + sub_80FB9E4(2, 0x25); + break; + case 0x30: + Rfu.unk_f0 = 2; + if (Rfu.unk_c86 == 6) + break; + case 0x33: + if (Rfu.unk_f0 != 2) + Rfu.unk_f0 = 4; + if (Rfu.unk_c86 != 9) + sub_80FB9E4(2, a0); + nullsub_87("LINK LOSS DISCONNECT!", 5, 5); + if (gReceivedRemoteLinkPlayers == 1) + sub_80FB0E8(a0); + break; + case 0x31: + Rfu.unk_f0 = 1; + nullsub_87("LINK LOSS RECOVERY NOW", 5, 5); + break; + case 0x32: + Rfu.unk_f0 = 3; + Rfu.unk_c3c = 1; + break; + case 0x34: + break; + case 0x42 ... 0x44: + break; + case 0xF3: + sub_80FB9E4(1, a0); + sub_80FB0E8(a0); + Rfu.unk_ef = 1; + break; + case 0xF0 ... 0xF2: + case 0xFF: + sub_80FB9E4(1, a0); + sub_80FB0E8(a0); + Rfu.unk_cdb = 1; + break; + } +} + +static void sub_80FB564(s32 a0) +{ + s32 i; + + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((a0 >> i) & 1) + { + Rfu.unk_cea[i] = 0; + Rfu.unk_cee[i] = 0xFF; + } + } +} + +static u8 sub_80FB5A0(s32 a0) +{ + u8 ret = 0; + u8 i; + + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((a0 >> i) & 1) + { + struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname; + if (structPtr->unk_0a_0 == 0x45) + ret |= (1 << i); + } + } + + return ret; +} + +static void sub_80FB5EC(u8 a0, u8 unused1) +{ + u8 r1; + + switch (a0) + { + case 0x00: + Rfu.unk_04 = 0x11; + break; + case 0x10: + sub_80FB9E4(4, 0); + break; + case 0x11: + if (sub_80F9800()->unk_0a_0 == 0x45 && Rfu.unk_cd9 == 0) + { + u8 idx = sub_80FB5A0(gUnknown_3005E10.unk_14); + if (idx != 0) + { + r1 = 1 << sub_80F886C(idx); + if (Rfu.unk_ce6 == 0 && Rfu.unk_ce8 == 0) + { + Rfu.unk_ce5 = r1; + Rfu.unk_ce6 |= (r1 ^ idx); + Rfu.unk_ce8 = 1; + } + else + { + Rfu.unk_ce6 |= idx; + } + } + if (idx != gUnknown_3005E10.unk_14) + { + Rfu.unk_ce3 |= (idx ^ gUnknown_3005E10.unk_14); + Rfu.unk_ce4 = 2; + } + } + else if (sub_80F9800()->unk_0a_0 == 0x54) + { + rfu_REQ_disconnect(gUnknown_3005E10.unk_00); + rfu_waitREQComplete(); + } + sub_80FB564(gUnknown_3005E10.unk_14); + break; + case 0x12: + break; + case 0x13: + break; + case 0x14: + if (sub_80F9800()->unk_0a_0 != 0x45 && gUnknown_3005E10.unk_01 > 1) + { + r1 = 1 << sub_80F886C(gUnknown_3005E10.unk_14); + rfu_REQ_disconnect(gUnknown_3005E10.unk_00 ^ r1); + rfu_waitREQComplete(); + } + if (Rfu.unk_04 == 0xF) + Rfu.unk_04 = 0x10; + break; + case 0x20: + Rfu.unk_ccd = gUnknown_3005E10.unk_14; + break; + case 0x21: + break; + case 0x22: + Rfu.unk_c3e = gUnknown_3005E10.unk_14; + break; + case 0x23: + Rfu.unk_04 = 0x12; + if (Rfu.unk_ccf < 2) + { + Rfu.unk_ccf++; + CreateTask(sub_80FC028, 2); + } + else + { + sub_80FB9E4(2, a0); + } + break; + case 0x24: + Rfu.unk_04 = 0xD; + sub_80FB9E4(3, 0); + rfu_setRecvBuffer(0x10, Rfu.unk_c3e, Rfu.unk_c3f, 70); + break; + case 0x25: + sub_80FB9E4(2, a0); + break; + case 0x31: + if (gUnknown_3005E10.unk_00 & gUnknown_3005E10.unk_14) + Rfu.unk_f0 = 1; + break; + case 0x32: + Rfu.unk_f0 = 3; + if (gRfuLinkStatus->parentChild == MODE_CHILD) + Rfu.unk_c3c = 1; + break; + case 0x30: + Rfu.unk_f0 = 2; + case 0x33: + if (Rfu.unk_f0 != 2) + Rfu.unk_f0 = 4; + if (Rfu.unk_0c == 1) + { + if (gReceivedRemoteLinkPlayers == 1) + { + Rfu.unk_ce2 &= ~(gUnknown_3005E10.unk_14); + if (Rfu.unk_ce2 == 0) + sub_80FB0E8(a0); + else + sub_80FB174(); + } + } + else if (Rfu.unk_ce4 != 2 && gReceivedRemoteLinkPlayers == 1) + { + sub_80FB0E8(a0); + sub_80FD760(0); + } + + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && gUnknown_3005E10.unk_07 == 0 && FuncIsActiveTask(sub_80F8B34) == TRUE) + Rfu.unk_04 = 0x11; + + sub_80FB9E4(2, a0); + break; + case 0x40: + Rfu.unk_ce3 = 0; + break; + case 0x42 ... 0x44: + break; + case 0xF3: + sub_80FB9E4(1, a0); + sub_80FB0E8(a0); + Rfu.unk_ef = 1; + break; + case 0xF0 ... 0xF2: + case 0xFF: + sub_80FB0E8(a0); + sub_80FB9E4(1, a0); + Rfu.unk_cdb = 0; + break; + } +} + +void sub_80FB9D0(void) +{ + Rfu.unk_ce4 = 2; +} + +void sub_80FB9E4(u8 a0, u16 a1) +{ + Rfu.unk_f1 = a0; + Rfu.unk_0a = a1; +} + +u8 sub_80FB9F4(void) +{ + return Rfu.unk_f1; +} + +bool32 sub_80FBA00(void) +{ + u32 var = sub_80FB9F4() - 1; + if (var < 2) + return TRUE; + else + return FALSE; +} + +bool32 sub_80FBA1C(void) +{ + return Rfu.unk_ce8; +} + +bool8 Rfu_IsMaster(void) +{ + return Rfu.unk_0c; +} + +void RFUVSync(void) +{ + LinkRfu_syncVBlank_(); +} + +void sub_80FBA44(void) +{ + CpuFill32(0, gRecvCmds, sizeof(gRecvCmds)); +} + +static void sub_80FBA64(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_80FBA78(void) +{ + s32 i; + + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + ResetPaletteFade(); + SetVBlankCallback(sub_80FBA64); + if (IsWirelessAdapterConnected()) + { + gLinkType = LINKTYPE_0x1111; + sub_800B1F4(); + OpenLink(); + SeedRng(gMain.vblankCounter2); + for (i = 0; i < RFU_CHILD_MAX; i++) + gSaveBlock2Ptr->playerTrainerId[i] = Random() % 256; + + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_1D_MAP); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + sub_80FBB20(); + SetMainCallback2(sub_80FBB74); + } +} + +bool32 sub_80FBB0C(void) +{ + return FuncIsActiveTask(sub_80F8B34); +} + +void sub_80FBB20(void) +{ + if (!FuncIsActiveTask(nullsub_89)) + Rfu.unk_66 = CreateTask(nullsub_89, 0); +} + +void sub_80FBB4C(void) +{ + if (FuncIsActiveTask(nullsub_89) == TRUE) + DestroyTask(Rfu.unk_66); +} + +static void sub_80FBB74(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80FBB8C(u32 a0) +{ + Rfu.unk_0c = 1; + sub_80FAF1C(); + sub_80FD430(sub_80FB184, NULL); + gUnknown_203ABF0 = gUnknown_843EBB4; + gUnknown_203ABF0.unk_02 = gUnknown_843EBCC[a0 - 1]; + sub_80F8E74(); +} + +void sub_80FBBD8(void) +{ + Rfu.unk_0c = 0; + sub_80FAF1C(); + sub_80FD430(sub_80FB37C, sub_80F8D20); + sub_80F8F10(); +} + +void sub_80FBC00(void) +{ + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return; + Rfu.unk_0c = 2; + sub_80FAF1C(); + sub_80FD430(sub_80FB5EC, NULL); + gUnknown_203ABF0 = gUnknown_843EBB4; + gUnknown_203ABF0.unk_11 = 0; + gUnknown_203ABF0.unk_12 = 0x258; + Rfu.unk_67 = CreateTask(sub_80F8B34, 1); +} + +static u16 ReadU16(const void *ptr) +{ + const u8 *ptr_ = ptr; + return (ptr_[1] << 8) | (ptr_[0]); +} + +static u8 sub_80FBC70(const u8 *a0, u16 a1) +{ + u8 i; + u8 ret = 0xFF; + + for (i = 0; i < RFU_CHILD_MAX; i++) + { + u16 trainerId = ReadU16(((struct GFtgtGname *)gRfuLinkStatus->partner[i].gname)->unk_00.playerTrainerId); + if (sub_80FA44C(gRfuLinkStatus->partner[i].serialNo) + && !StringCompare(a0, gRfuLinkStatus->partner[i].uname) + && a1 == trainerId) + { + ret = i; + if (gRfuLinkStatus->partner[i].slot != 0xFF) + break; + } + } + + return ret; +} + +static void sub_80FBCF8(u32 a0) +{ + rfu_REQ_disconnect(a0); + rfu_waitREQComplete(); + Rfu.unk_ce2 &= ~(a0); + rfu_clearSlot(1, Rfu.unk_cda); + rfu_UNI_setSendData(Rfu.unk_ce2, Rfu.unk_c87, 70); + Rfu.unk_cda = sub_80F886C(Rfu.unk_ce2); +} + +void sub_80FBD4C(const u8 *ptr, u16 a1) +{ + u8 var = sub_80FBC70(ptr, a1); + if (var != 0xFF) + sub_80FBCF8(1 << var); +} + +void sub_80FBD6C(u32 a0) +{ + if (a0 != 0) + { + s32 i; + u8 var = 0; + + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (Rfu.unk_cde[i] == a0 && (Rfu.unk_ce2 >> i) & 1) + var |= 1 << i; + } + if (var) + sub_80FBE20(var, 2); + } +} + +static void sub_80FBDB8(u8 taskId) +{ + if (gSendCmd[0] == 0 && Rfu.unk_ce8 == 0) + { + sub_80F9D04(0xED00); + gSendCmd[1] = gTasks[taskId].data[0]; + gSendCmd[2] = gTasks[taskId].data[1]; + Rfu.playerCount -= gUnknown_843EC41[gTasks[taskId].data[0]]; + gSendCmd[3] = Rfu.playerCount; + DestroyTask(taskId); + } +} + +static void sub_80FBE20(u32 a0, u32 a1) +{ + u8 taskId = FindTaskIdByFunc(sub_80FBDB8); + if (taskId == 0xFF) + { + taskId = CreateTask(sub_80FBDB8, 5); + gTasks[taskId].data[0] = a0; + } + else + { + gTasks[taskId].data[0] |= a0; + } + + gTasks[taskId].data[1] = a1; +} + +static void sub_80FBE80(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (sub_80F8EA4()) + { + u8 id = sub_80FBC70((u8*)data, ReadU16(&data[8])); + if (id != 0xFF) + { + if (gRfuLinkStatus->partner[id].slot != 0xFF) + { + Rfu.unk_c3d = id; + if (sub_80F8ECC()) + DestroyTask(taskId); + } + else if (sub_80F9800()->unk_0a_0 == 0x15 || sub_80F9800()->unk_0a_0 == 0x16) + { + data[15]++; + } + else + { + sub_80FB9E4(2, 0x7000); + DestroyTask(taskId); + } + } + else + { + data[15]++; + Rfu.unk_c3d = id; + } + } + else + { + data[15]++; + } + + if (data[15] > 240) + { + sub_80FB9E4(2, 0x7000); + DestroyTask(taskId); + } +} + +void sub_80FBF54(const u8 *src, u16 trainerId) +{ + u8 taskId; + s16 *data; + + Rfu.unk_f1 = 0; + taskId = CreateTask(sub_80FBE80, 3); + data = gTasks[taskId].data; + StringCopy((u8*)(data), src); + data[8] = trainerId; +} + +static bool32 sub_80FBF98(s16 a1, struct GFtgtGname *structPtr) +{ + if (sub_80F9800()->unk_0a_0 == 0x45) + { + if (structPtr->unk_0a_0 != 0x45) + return TRUE; + } + else if (structPtr->unk_0a_0 != 0x40) + { + return TRUE; + } + else if (a1 == 0x44) + { + struct GFtgtGname *structPtr2 = (struct GFtgtGname *)&Rfu.unk_104.gname; + if (structPtr2->species == SPECIES_EGG) + { + if (structPtr->species == structPtr2->species) + return FALSE; + else + return TRUE; + } + else if (structPtr->species != structPtr2->species + || structPtr->level != structPtr2->level + || structPtr->type != structPtr2->type) + { + return TRUE; + } + } + + return FALSE; +} + +static void sub_80FC028(u8 taskId) +{ + if (Rfu.unk_f1 == 4) + DestroyTask(taskId); + + if (++gTasks[taskId].data[0] > 300) + { + sub_80FB9E4(2, 0x7000); + DestroyTask(taskId); + } + + if (Rfu.unk_ccd != 0 && gUnknown_3005E10.unk_06 == 0) + { + u16 trainerId = ReadU16(((struct GFtgtGname *)&Rfu.unk_104.gname)->unk_00.playerTrainerId); + u8 id = sub_80FBC70(Rfu.unk_104.uname, trainerId); + if (id != 0xFF) + { + if (!sub_80FBF98(gTasks[taskId].data[1], (struct GFtgtGname *)&gRfuLinkStatus->partner[id].gname)) + { + if (gRfuLinkStatus->partner[id].slot != 0xFF && !sub_80FD610(gRfuLinkStatus->partner[id].id, 0x5A)) + { + Rfu.unk_04 = 0xA; + DestroyTask(taskId); + } + } + else + { + sub_80FB9E4(2, 0x7000); + DestroyTask(taskId); + } + } + } +} + +void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2) +{ + u8 taskId, taskId2; + + Rfu.unk_ccf = 0; + Rfu.unk_f1 = 0; + StringCopy(Rfu.unk_104.uname, name); + memcpy(Rfu.unk_104.gname, structPtr, RFU_GAME_NAME_LENGTH); + sub_80FEB3C(); + taskId = CreateTask(sub_80FC028, 2); + gTasks[taskId].data[1] = a2; + taskId2 = FindTaskIdByFunc(sub_80F8B34); + if (a2 == 0x45) + { + if (taskId2 != 0xFF) + gTasks[taskId2].data[7] = 1; + } + else + { + if (taskId2 != 0xFF) + gTasks[taskId2].data[7] = 0; + } +} + +bool8 sub_80FC1B0(void) +{ + if (Rfu.unk_f0 == 1) + return TRUE; + else + return FALSE; +} + +bool32 sub_80FC1CC(void) +{ + s32 i; + + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((gUnknown_3005E10.unk_00 >> i) & 1 && Rfu.unk_cd1[i] == 0) + return FALSE; + } + + return TRUE; +} + +static void sub_80FC208(void) +{ + s32 i; + + for (i = 0; i < 20; i++) + nullsub_87(" ", 0, i); +} + +static const char gUnknown_843EE47[16] = { + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + '\0' +}; + +static const char gUnknown_843EE57[9] = { + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + '\0' +}; + +static const char gUnknown_843EE60[] = {' ', '\0'}; +static const char gUnknown_843EE62[] = {'*', '\0'}; + +static void sub_80FC228(void) +{ + s32 i, j; + + nullsub_88(GetBlockReceivedStatus(), 0x1C, 0x13, 2); + nullsub_88(gRfuLinkStatus->connSlotFlag, 0x14, 1, 1); + nullsub_88(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1); + if (Rfu.unk_0c == 1) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if ((gRfuLinkStatus->getNameFlag >> i) & 1) + { + nullsub_88(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4); + nullsub_87((void*) &gRfuLinkStatus->partner[i].gname, 6, i + 3); + nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3); + } + } + for (i = 0; i < RFU_CHILD_MAX; i++) + { + for (j = 0; j < 14; j++) + { + nullsub_88(Rfu.unk_14[i][j], j * 2, i + 11, 2); + } + } + nullsub_87("NOWSLOT", 1, 0xF); + } + else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0) + { + for (i = 0; i < RFU_CHILD_MAX; i++) + { + nullsub_88(0, 1, i + 3, 4); + nullsub_87(gUnknown_843EE47, 6, i + 3); + nullsub_87(gUnknown_843EE57, 0x16, i + 3); + } + nullsub_88(gRfuLinkStatus->partner[Rfu.unk_c3e].serialNo, 1, 3, 4); + nullsub_87(gRfuLinkStatus->partner[Rfu.unk_c3e].gname, 6, 3); + nullsub_87(gRfuLinkStatus->partner[Rfu.unk_c3e].uname, 0x16, 3); + } + else + { + for (i = 0; i < gRfuLinkStatus->findParentCount; i++) + { + if (gRfuLinkStatus->partner[i].slot != 0xFF) + { + nullsub_88(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4); + nullsub_88(gRfuLinkStatus->partner[i].id, 6, i + 3, 4); + nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3); + } + } + for (; i < RFU_CHILD_MAX; i++) + { + nullsub_88(0, 1, i + 3, 4); + nullsub_87(gUnknown_843EE47, 6, i + 3); + nullsub_87(gUnknown_843EE57, 0x16, i + 3); + } + } +} + +static const char gUnknown_843EE6C[][12] = { + " ", + "CLOCK DRIFT", + "BUSY SEND ", + "CMD REJECT ", + "CLOCK SLAVE" +}; + +static const char gUnknown_843EEA8[][8] = { + "CHILD ", + "PARENT", + "SEARCH" +}; + +static u32 sub_80FC44C(void) +{ + return Rfu.unk_9e8.unk_232; +} + +u32 GetRfuRecvQueueLength(void) +{ + return Rfu.unk_124.unk_8c2; +} + +static void nullsub_89(u8 taskId) +{ + +} diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c new file mode 100644 index 000000000..01f19d817 --- /dev/null +++ b/src/link_rfu_3.c @@ -0,0 +1,948 @@ +#include "global.h" +#include "decompress.h" +#include "event_data.h" +#include "link.h" +#include "link_rfu.h" +#include "malloc.h" +#include "random.h" +#include "string_util.h" +#include "text.h" +#include "constants/flags.h" + +static EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0; + +static const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal"); + +static const u32 gWirelessLinkIconPic[] = INCBIN_U32("graphics/interface/wireless_link_icon.4bpp.lz"); + +static const u8 sWireless_ASCIItoRSETable[] = { + 0xff, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x00, 0xab, 0xb5, 0xb6, 0xb1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xb2, 0xf1, 0x00, 0xae, 0xad, 0xba, + 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, + 0xa9, 0xaa, 0x00, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, + 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, + 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, + 0xd2, 0xd3, 0xd4, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, + 0x00, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, + 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, + 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, + 0xec, 0xed, 0xee, 0x2d, 0x2f, 0x30, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x50, 0x00, 0x01, 0x02, + 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, + 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, + 0x1b, 0xad, 0xb3, 0xb4, 0x00, 0xaf, 0x7d, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xa0, + 0xae, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7e, 0xb0, 0xac, + 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0x2c, 0x2e, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, + 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94 +}; + +static const u8 sWireless_RSEtoASCIITable[] = { + 0x20, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, + 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, + 0x9d, 0x9e, 0x9f, 0xa0, 0xe0, 0xe1, 0xe2, 0xe3, + 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, + 0xec, 0xed, 0xee, 0xef, 0xf0, 0x7b, 0xf1, 0x7c, + 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x84, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xa6, 0xdd, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xf2, + 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, + 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0xaf, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x21, 0xdf, 0xa1, 0xb0, 0xa5, + 0xde, 0x24, 0x2a, 0xa2, 0xa3, 0x22, 0x23, 0x20, + 0xa4, 0x20, 0x2f, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, + 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63, + 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, + 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, + 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20, + 0x20, 0x2b, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00 +}; + +static const struct OamData sWirelessStatusIndicatorOamData = + { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + }; + +static const union AnimCmd sWirelessStatusIndicatorAnim0[] = { + // 3 bars + ANIMCMD_FRAME( 4, 5), + ANIMCMD_FRAME( 8, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME(16, 10), + ANIMCMD_FRAME(12, 5), + ANIMCMD_FRAME( 8, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sWirelessStatusIndicatorAnim1[] = { + // 2 bars + ANIMCMD_FRAME( 4, 5), + ANIMCMD_FRAME( 8, 5), + ANIMCMD_FRAME(12, 10), + ANIMCMD_FRAME( 8, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sWirelessStatusIndicatorAnim2[] = { + // 1 bar + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sWirelessStatusIndicatorAnim3[] = { + // searching + ANIMCMD_FRAME( 4, 10), + ANIMCMD_FRAME(20, 10), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd sWirelessStatusIndicatorAnim4[] = { + // error + ANIMCMD_FRAME(24, 10), + ANIMCMD_FRAME( 4, 10), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sWirelessStatusIndicatorAnims[] = { + sWirelessStatusIndicatorAnim0, + sWirelessStatusIndicatorAnim1, + sWirelessStatusIndicatorAnim2, + sWirelessStatusIndicatorAnim3, + sWirelessStatusIndicatorAnim4 +}; + +static const struct CompressedSpriteSheet sWirelessStatusIndicatorSpriteSheet = { + gWirelessLinkIconPic, 0x0380, 0xD431 +}; + +static const struct SpritePalette sWirelessStatusIndicatorSpritePalette = { + gWirelessLinkIconPalette, 0xD432 +}; + +static const struct SpriteTemplate sWirelessStatusIndicatorSpriteTemplate = { + 0xD431, + 0xD432, + &sWirelessStatusIndicatorOamData, + sWirelessStatusIndicatorAnims, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +void sub_80FC478(struct UnkRfuStruct_2_Sub_124 *ptr) +{ + s32 i; + s32 j; + + for (i = 0; i < 20; i++) + { + for (j = 0; j < 70; j++) + { + ptr->unk_00[i][j] = 0; + } + } + ptr->unk_8c1 = 0; + ptr->unk_8c0 = 0; + ptr->unk_8c2 = 0; + ptr->unk_8c3 = 0; +} + +void sub_80FC4D4(struct UnkRfuStruct_2_Sub_9e8 *ptr) +{ + s32 i; + s32 j; + + for (i = 0; i < 40; i++) + { + for (j = 0; j < 14; j++) + { + ptr->unk_00[i][j] = 0; + } + } + ptr->unk_231 = 0; + ptr->unk_230 = 0; + ptr->unk_232 = 0; + ptr->unk_233 = 0; +} + +static void sub_80FC530(struct UnkRfuStruct_Sub_Unused *ptr) +{ + s32 i; + s32 j; + + for (i = 0; i < 2; i++) + { + for (j = 0; j < 256; j++) + { + ptr->unk_00[i][j] = 0; + } + } + ptr->unk_201 = 0; + ptr->unk_200 = 0; + ptr->unk_202 = 0; + ptr->unk_203 = 0; +} + +void sub_80FC588(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2) +{ + s32 i; + u16 imeBak; + u8 count; + + if (q1->unk_8c2 < 20) + { + imeBak = REG_IME; + REG_IME = 0; + count = 0; + for (i = 0; i < 70; i += 14) + { + if (q2[i] == 0 && q2[i + 1] == 0) + { + count++; + } + } + if (count != 5) + { + for (i = 0; i < 70; i++) + { + q1->unk_00[q1->unk_8c0][i] = q2[i]; + } + q1->unk_8c0++; + q1->unk_8c0 %= 20; + q1->unk_8c2++; + for (i = 0; i < 70; i++) + { + q2[i] = 0; + } + } + REG_IME = imeBak; + } + else + { + q1->unk_8c3 = 1; + } +} + +void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2) +{ + s32 i; + u16 imeBak; + + if (q1->unk_232 < 40) + { + imeBak = REG_IME; + REG_IME = 0; + for (i = 0; i < 14; i++) + { + if (q2[i] != 0) + { + break; + } + } + if (i != 14) + { + for (i = 0; i < 14; i++) + { + q1->unk_00[q1->unk_230][i] = q2[i]; + } + q1->unk_230++; + q1->unk_230 %= 40; + q1->unk_232++; + for (i = 0; i < 14; i++) + { + q2[i] = 0; + } + } + REG_IME = imeBak; + } + else + { + q1->unk_233 = 1; + } +} + +bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2) +{ + u16 imeBak; + s32 i; + + imeBak = REG_IME; + REG_IME = 0; + if (q1->unk_8c0 == q1->unk_8c1 || q1->unk_8c3 != 0) + { + for (i = 0; i < 70; i++) + { + q2[i] = 0; + } + REG_IME = imeBak; + return FALSE; + } + for (i = 0; i < 70; i++) + { + q2[i] = q1->unk_00[q1->unk_8c1][i]; + } + q1->unk_8c1++; + q1->unk_8c1 %= 20; + q1->unk_8c2--; + REG_IME = imeBak; + return TRUE; +} + +bool8 sub_80FC79C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2) +{ + s32 i; + u16 imeBak; + + if (q1->unk_230 == q1->unk_231 || q1->unk_233 != 0) + { + return FALSE; + } + imeBak = REG_IME; + REG_IME = 0; + for (i = 0; i < 14; i++) + { + q2[i] = q1->unk_00[q1->unk_231][i]; + } + q1->unk_231++; + q1->unk_231 %= 40; + q1->unk_232--; + REG_IME = imeBak; + return TRUE; +} + +void sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2) +{ + s32 i; + + if (q2[1] == 0) + { + sub_80FC888(q1, NULL); + } + else + { + for (i = 0; i < 14; i++) + { + q1->unk_00[q1->unk_1c][i] = q2[i]; + } + q1->unk_1c++; + q1->unk_1c %= 2; + if (q1->unk_1e < 2) + { + q1->unk_1e++; + } + else + { + q1->unk_1d = q1->unk_1c; + } + } +} + +bool8 sub_80FC888(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2) +{ + s32 i; + + if (q1->unk_1e == 0) + { + return FALSE; + } + if (q2 != NULL) + { + for (i = 0; i < 14; i++) + { + q2[i] = q1->unk_00[q1->unk_1d][i]; + } + } + q1->unk_1d++; + q1->unk_1d %= 2; + q1->unk_1e--; + return TRUE; +} + +static void sub_80FC8D8(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2) +{ + s32 i; + + if (q1->unk_202 < 2) + { + for (i = 0; i < 256; i++) + { + q1->unk_00[q1->unk_200][i] = q2[i]; + } + q1->unk_200++; + q1->unk_200 %= 2; + q1->unk_202++; + } + else + { + q1->unk_203 = 1; + } +} + +static bool8 sub_80FC944(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2) +{ + s32 i; + + if (q1->unk_200 == q1->unk_201 || q1->unk_203) + { + return FALSE; + } + for (i = 0; i < 256; i++) + { + q2[i] = q1->unk_00[q1->unk_201][i]; + } + q1->unk_201++; + q1->unk_201 %= 2; + q1->unk_202--; + return TRUE; +} + +static void sub_80FC9B8(u8 *q1, u8 mode) +{ + s32 i; + u8 rval; + u16 r5 = 0; + static u8 _3002018; + + switch (mode) + { + case 0: + for (i = 0; i < 200; i++) + { + q1[i] = i + 1; + r5 += i + 1; + } + *((u16 *)(q1 + i)) = r5; + break; + case 1: + for (i = 0; i < 100; i++) + { + q1[i] = i + 1; + r5 += i + 1; + } + *((u16 *)(q1 + 200)) = r5; + break; + case 2: + for (i = 0; i < 200; i++) + { + rval = Random(); + q1[i] = rval; + r5 += rval; + } + *((u16 *)(q1 + i)) = r5; + break; + case 3: + for (i = 0; i < 200; i++) + { + q1[i] = i + 1 + _3002018; + r5 += (i + 1 + _3002018) & 0xFF; + } + *((u16 *)(q1 + i)) = r5; + _3002018++; + break; + } +} + +static void PkmnStrToASCII(u8 *q1, const u8 *q2) +{ + s32 i; + + for (i = 0; q2[i] != EOS; i++) + { + q1[i] = sWireless_RSEtoASCIITable[q2[i]]; + } + q1[i] = 0; +} + +static void ASCIIToPkmnStr(u8 *q1, const u8 *q2) +{ + s32 i; + + for (i = 0; q2[i] != 0; i++) + { + q1[i] = sWireless_ASCIItoRSETable[q2[i]]; + } + q1[i] = EOS; +} + +#ifdef NONMATCHING +static u8 sub_80FCADC(u8 maxFlags) +{ + u8 flagCount = 0; + u8 flags = gRfuLinkStatus->connSlotFlag; + u8 i; + + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + for (i = 0; i < 4; flags >>= 1, i++) + { + if (flags & 1) + { + if (maxFlags == flagCount + 1) + return gRfuLinkStatus->strength[i]; + flagCount++; + } + } + return 0; + } + else + { + for (i = 0; i < 4; flags >>= 1, i++) + { + if (flags & 1) + return gRfuLinkStatus->strength[i]; + } + return 0; + } +} +#else +NAKED +static u8 sub_80FCADC(u8 maxFlags) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tmovs r6, 0\n" + "\tldr r0, _080FCB04 @ =gRfuLinkStatus\n" + "\tldr r4, [r0]\n" + "\tldrb r2, [r4, 0x2]\n" + "\tldrb r1, [r4]\n" + "\tadds r7, r0, 0\n" + "\tcmp r1, 0x1\n" + "\tbne _080FCB32\n" + "\tmovs r3, 0\n" + "\tands r1, r2\n" + "\tcmp r1, 0\n" + "\tbeq _080FCB0E\n" + "\tcmp r5, 0x1\n" + "\tbne _080FCB08\n" + "\tldrb r0, [r4, 0xA]\n" + "\tb _080FCB4C\n" + "\t.align 2, 0\n" + "_080FCB04: .4byte gRfuLinkStatus\n" + "_080FCB08:\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "_080FCB0E:\n" + "\tlsrs r2, 1\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0x3\n" + "\tbhi _080FCB4A\n" + "\tmovs r0, 0x1\n" + "\tands r0, r2\n" + "\tcmp r0, 0\n" + "\tbeq _080FCB0E\n" + "\tadds r0, r6, 0x1\n" + "\tcmp r5, r0\n" + "\tbne _080FCB08\n" + "_080FCB28:\n" + "\tldr r0, [r7]\n" + "\tadds r0, 0xA\n" + "\tadds r0, r3\n" + "\tldrb r0, [r0]\n" + "\tb _080FCB4C\n" + "_080FCB32:\n" + "\tmovs r3, 0\n" + "\tmovs r1, 0x1\n" + "_080FCB36:\n" + "\tadds r0, r2, 0\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080FCB28\n" + "\tlsrs r2, 1\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0x3\n" + "\tbls _080FCB36\n" + "_080FCB4A:\n" + "\tmovs r0, 0\n" + "_080FCB4C:\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif + +void sub_80FCB54(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3) +{ + s32 i; + + for (i = 0; i < 2; i++) + { + data->unk_00.playerTrainerId[i] = gSaveBlock2Ptr->playerTrainerId[i]; + } + for (i = 0; i < RFU_CHILD_MAX; i++) + { + data->unk_04[i] = r3; + r3 >>= 8; + } + data->playerGender = gSaveBlock2Ptr->playerGender; + data->unk_0a_0 = r9; + data->unk_0a_7 = r2; + data->unk_00.unk_00_0 = GAME_LANGUAGE; + data->unk_00.unk_01_2 = GAME_VERSION; + data->unk_00.unk_00_4 = 0; + data->unk_00.unk_00_5 = 0; + data->unk_00.unk_00_6 = 0; + data->unk_00.isChampion = FlagGet(FLAG_SYS_CAN_LINK_WITH_RS); + data->unk_00.hasNationalDex = IsNationalPokedexEnabled(); + data->unk_00.gameClear = FlagGet(FLAG_SYS_GAME_CLEAR); +} + +bool8 sub_80FCC3C(struct GFtgtGname *buff1, u8 *buff2, u8 idx) +{ + bool8 retVal; + + if (gUnknown_3005E10.unk_06 == 1) + { + retVal = TRUE; + if (sub_80FA44C(gRfuLinkStatus->partner[idx].serialNo) && ((gRfuLinkStatus->getNameFlag >> idx) & 1)) + { + memcpy(buff1, &gRfuLinkStatus->partner[idx].gname, RFU_GAME_NAME_LENGTH); + memcpy(buff2, gRfuLinkStatus->partner[idx].uname, RFU_USER_NAME_LENGTH); + } + else + { + memset(buff1, 0, RFU_GAME_NAME_LENGTH); + memset(buff2, 0, RFU_USER_NAME_LENGTH); + } + } + else + { + retVal = FALSE; + if (sub_80FA44C(gRfuLinkStatus->partner[idx].serialNo)) + { + memcpy(buff1, &gRfuLinkStatus->partner[idx].gname, RFU_GAME_NAME_LENGTH); + memcpy(buff2, gRfuLinkStatus->partner[idx].uname, RFU_USER_NAME_LENGTH); + } + else + { + memset(buff1, 0, RFU_GAME_NAME_LENGTH); + memset(buff2, 0, RFU_USER_NAME_LENGTH); + } + } + return retVal; +} + +bool8 sub_80FCCF4(struct GFtgtGname *buff1, u8 *buff2, u8 idx) +{ + bool8 retVal = FALSE; + if (gRfuLinkStatus->partner[idx].serialNo == 0x7F7D) + { + memcpy(buff1, gRfuLinkStatus->partner[idx].gname, RFU_GAME_NAME_LENGTH); + memcpy(buff2, gRfuLinkStatus->partner[idx].uname, RFU_USER_NAME_LENGTH); + retVal = TRUE; + } + else + { + memset(buff1, 0, RFU_GAME_NAME_LENGTH); + memset(buff2, 0, RFU_USER_NAME_LENGTH); + } + return retVal; +} + +void sub_80FCD50(struct GFtgtGname *buff1, u8 *buff2) +{ + memcpy(buff1, &gUnknown_3005440, RFU_GAME_NAME_LENGTH); + memcpy(buff2, gUnknown_3005E00, RFU_USER_NAME_LENGTH); +} + +void CreateWirelessStatusIndicatorSprite(u8 x, u8 y) +{ + u8 sprId; + + if (x == 0 && y == 0) + { + x = 0xE7; + y = 0x08; + } + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + sprId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0); + gSprites[sprId].data[7] = 0x1234; + gSprites[sprId].data[6] = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag); + gSprites[sprId].invisible = TRUE; + gWirelessStatusIndicatorSpriteId = sprId; + } + else + { + gWirelessStatusIndicatorSpriteId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0); + gSprites[gWirelessStatusIndicatorSpriteId].data[7] = 0x1234; + gSprites[gWirelessStatusIndicatorSpriteId].data[6] = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag); + gSprites[gWirelessStatusIndicatorSpriteId].invisible = TRUE; + } +} + +void DestroyWirelessStatusIndicatorSprite(void) +{ + if (gSprites[gWirelessStatusIndicatorSpriteId].data[7] == 0x1234) + { + gSprites[gWirelessStatusIndicatorSpriteId].data[7] = 0; + DestroySprite(&gSprites[gWirelessStatusIndicatorSpriteId]); + gMain.oamBuffer[125] = gDummyOamData; + CpuCopy16(&gDummyOamData, (struct OamData *)OAM + 125, sizeof(struct OamData)); + } +} + +void LoadWirelessStatusIndicatorSpriteGfx(void) +{ + if (GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag) == 0xFFFF) + { + LoadCompressedSpriteSheet(&sWirelessStatusIndicatorSpriteSheet); + } + LoadSpritePalette(&sWirelessStatusIndicatorSpritePalette); + gWirelessStatusIndicatorSpriteId = 0xFF; +} + +static u8 sub_80FCEE4(void) +{ + u8 i; + u8 flags = gRfuLinkStatus->connSlotFlag; + for (i = 0; i < RFU_CHILD_MAX; i++) + { + if (flags & 1) + { + return gRfuLinkStatus->strength[i]; + } + flags >>= 1; + } + return 0; +} + +static void sub_80FCF1C(struct Sprite *sprite, s32 signalStrengthAnimNum) +{ + if (sprite->data[2] != signalStrengthAnimNum) + { + sprite->data[2] = signalStrengthAnimNum; + sprite->data[3] = 0; + sprite->data[4] = 0; + } +} + +void sub_80FCF34(void) +{ + if (gWirelessStatusIndicatorSpriteId != 0xFF && gSprites[gWirelessStatusIndicatorSpriteId].data[7] == 0x1234) + { + struct Sprite *sprite = &gSprites[gWirelessStatusIndicatorSpriteId]; + u8 signalStrength = 255; + u8 i = 0; + if (gRfuLinkStatus->parentChild == MODE_PARENT) + { + for (i = 0; i < GetLinkPlayerCount() - 1; i++) + { + if (signalStrength >= sub_80FCADC(i + 1)) + { + signalStrength = sub_80FCADC(i + 1); + } + } + } + else + { + signalStrength = sub_80FCEE4(); + } + if (sub_80FC1B0() == TRUE) + { + sprite->data[0] = 4; + } + else if (signalStrength < 25) + { + sprite->data[0] = 3; + } + else if (signalStrength >= 25 && signalStrength < 127) + { + sprite->data[0] = 2; + } + else if (signalStrength >= 127 && signalStrength < 229) + { + sprite->data[0] = 1; + } + else if (signalStrength >= 229) + { + sprite->data[0] = 0; + } + if (sprite->data[0] != sprite->data[1]) + { + sub_80FCF1C(sprite, sprite->data[0]); + sprite->data[1] = sprite->data[0]; + } + if (sprite->anims[sprite->data[2]][sprite->data[4]].frame.duration < sprite->data[3]) + { + sprite->data[4]++; + sprite->data[3] = 0; + if (sprite->anims[sprite->data[2]][sprite->data[4]].type == -2) + { + sprite->data[4] = 0; + } + } + else + { + sprite->data[3]++; + } + gMain.oamBuffer[125] = sWirelessStatusIndicatorOamData; + gMain.oamBuffer[125].x = sprite->pos1.x + sprite->centerToCornerVecX; + gMain.oamBuffer[125].y = sprite->pos1.y + sprite->centerToCornerVecY; + gMain.oamBuffer[125].paletteNum = sprite->oam.paletteNum; + gMain.oamBuffer[125].tileNum = sprite->data[6] + sprite->anims[sprite->data[2]][sprite->data[4]].frame.imageValue; + CpuCopy16(gMain.oamBuffer + 125, (struct OamData *)OAM + 125, sizeof(struct OamData)); + if (sub_80FB9F4() == 1) + { + DestroyWirelessStatusIndicatorSprite(); + } + } +} + +static void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name) +{ + int i; + dest->trainerId = trainerId; + for (i = 0; i < 7; i++) + { + if (name[i] == EOS) + break; + dest->trainerName[i] = name[i]; + } + dest->trainerName[i] = EOS; +} + +static void ZeroName(u8 *name) +{ + s32 i; + + for (i = 0; i < PLAYER_NAME_LENGTH; i++) + { + *name++ = 0; + } +} + +static bool32 NameIsEmpty(const u8 *name) +{ + s32 i; + + for (i = 0; i < PLAYER_NAME_LENGTH; i++) + { + if (*name++ != 0) + { + return FALSE; + } + } + return TRUE; +} + +// Save the currently connected players into the trainer records, shifting all previous records down. +void RecordMixTrainerNames(void) +{ + if (gWirelessCommType != 0) + { + s32 i; + s32 j; + s32 nextSpace; + s32 connectedTrainerRecordIndices[5]; + struct TrainerNameRecord *newRecords = AllocZeroed(20 * sizeof(struct TrainerNameRecord)); + + // Check if we already have a record saved for connected trainers. + for (i = 0; i < GetLinkPlayerCount(); i++) + { + connectedTrainerRecordIndices[i] = -1; + for (j = 0; j < 20; j++) + { + if ((u16)gLinkPlayers[i].trainerId == gSaveBlock1Ptr->trainerNameRecords[j].trainerId && StringCompare(gLinkPlayers[i].name, gSaveBlock1Ptr->trainerNameRecords[j].trainerName) == 0) + { + connectedTrainerRecordIndices[i] = j; + } + } + } + + // Save the connected trainers first, at the top of the list. + nextSpace = 0; + for (i = 0; i < GetLinkPlayerCount(); i++) + { + if (i != GetMultiplayerId() && gLinkPlayers[i].language != LANGUAGE_JAPANESE) + { + CopyTrainerRecord(&newRecords[nextSpace], (u16)gLinkPlayers[i].trainerId, gLinkPlayers[i].name); + + // If we already had a record for this trainer, wipe it so that the next step doesn't duplicate it. + if (connectedTrainerRecordIndices[i] >= 0) + { + ZeroName(gSaveBlock1Ptr->trainerNameRecords[connectedTrainerRecordIndices[i]].trainerName); + } + nextSpace++; + } + } + + // Copy all non-empty records to the new list, in the order they appear on the old list. If the list is full, + // the last (oldest) records will be dropped. + for (i = 0; i < 20; i++) + { + if (!NameIsEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName)) + { + CopyTrainerRecord(&newRecords[nextSpace], gSaveBlock1Ptr->trainerNameRecords[i].trainerId, gSaveBlock1Ptr->trainerNameRecords[i].trainerName); + if (++nextSpace >= 20) + { + break; + } + } + } + + // Finalize the new list, and clean up. + memcpy(gSaveBlock1Ptr->trainerNameRecords, newRecords, 20 * sizeof(struct TrainerNameRecord)); + Free(newRecords); + } +} + +bool32 sub_80FD338(u16 id, u8 *name) +{ + s32 i; + + for (i = 0; i < 20; i++) + { + if (StringCompareN(gSaveBlock1Ptr->trainerNameRecords[i].trainerName, name, 7) == 0 && gSaveBlock1Ptr->trainerNameRecords[i].trainerId == id) + { + return TRUE; + } + if (NameIsEmpty(gSaveBlock1Ptr->trainerNameRecords[i].trainerName)) + { + return FALSE; + } + } + return FALSE; +} diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c index 6df5207f0..94c01c081 100644 --- a/src/mevent_server_helpers.c +++ b/src/mevent_server_helpers.c @@ -96,12 +96,12 @@ static bool32 mevent_receive_func(struct mevent_srv_sub * svr) svr->recvCRC = header.crc; if (svr->recvSize > ME_SEND_BUF_SIZE) { - sub_80FA190(); + LinkRfu_FatalError(); return FALSE; } else if (svr->recvIdent != header.ident) { - sub_80FA190(); + LinkRfu_FatalError(); return FALSE; } else @@ -133,7 +133,7 @@ static bool32 mevent_receive_func(struct mevent_srv_sub * svr) case 2: if (CalcCRC16WithTable(svr->recvBfr, svr->recvSize) != svr->recvCRC) { - sub_80FA190(); + LinkRfu_FatalError(); return FALSE; } else @@ -192,7 +192,7 @@ static bool32 mevent_send_func(struct mevent_srv_sub * svr) if (IsLinkTaskFinished()) { if (CalcCRC16WithTable(svr->sendBfr, svr->sendSize) != svr->sendCRC) - sub_80FA190(); + LinkRfu_FatalError(); else ++svr->seqno; } diff --git a/src/party_menu.c b/src/party_menu.c index 6e0b411bf..7022852d6 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -3881,7 +3881,7 @@ static void CursorCB_Register(u8 taskId) u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE); - switch (CanRegisterMonForTradingBoard(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_80F9800(), species2, species, obedience)) + switch (CanRegisterMonForTradingBoard(*(struct GFtgtGnameSub *)sub_80F9800(), species2, species, obedience)) { case CANT_REGISTER_MON: StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow); @@ -3907,7 +3907,7 @@ static void CursorCB_Trade1(u8 taskId) u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE); - u32 stringId = GetUnionRoomTradeMessageId(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_80F9800(), gUnknown_203B064, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience); + u32 stringId = GetUnionRoomTradeMessageId(*(struct GFtgtGnameSub *)sub_80F9800(), gUnknown_203B064, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience); if (stringId != UR_TRADE_MSG_NONE) { diff --git a/src/trade.c b/src/trade.c index 10ed51d69..05a259e60 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2763,7 +2763,7 @@ static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet) return FALSE; } -int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet) +int GetUnionRoomTradeMessageId(struct GFtgtGnameSub a0, struct GFtgtGnameSub a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet) { u8 r9 = a0.hasNationalDex; u8 r4 = a0.isChampion; @@ -2843,7 +2843,7 @@ int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, str return 0; } -int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3) +int CanRegisterMonForTradingBoard(struct GFtgtGnameSub a0, u16 species, u16 a2, u8 a3) { u8 canTradeEggAndNational = a0.hasNationalDex; diff --git a/sym_bss.txt b/sym_bss.txt index 08f390b01..16c5758fc 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -70,22 +70,11 @@ gUnknown_3000FE8: @ 3000FE8 .align 2 .include "src/easy_chat.o" - -gUnknown_3001188: @ 3001188 - .space 0x8 - -gRfuAPIBuffer: @ 3001190 - .space 0xE68 - -gUnknown_3001FF8: @ 3001FF8 - .space 0x10 - -gUnknown_3002008: @ 3002008 - .space 0x10 - -gUnknown_3002018: @ 3002018 - .space 0x4 - + .align 2 + .include "src/link_rfu_2.o" + .align 2 + .include "src/link_rfu_3.o" + .align 2 .include "src/quest_log.o" .align 2 diff --git a/sym_common.txt b/sym_common.txt index 753ce9ebd..9f39f9f2b 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -75,60 +75,10 @@ gUnknown_3005078: @ 3005078 gUnknown_3005430: @ 3005430 .space 0x10 -gUnknown_3005440: @ 3005440 - .space 0x10 - -gUnknown_3005450: @ 3005450 - .space 0x14 - -gUnknown_3005464: @ 3005464 - .space 0x58 - -gUnknown_30054BC: @ 30054BC - .space 0x2 - -gUnknown_30054BE: @ 30054BE - .space 0x76 - -gUnknown_3005534: @ 3005534 - .space 0xE - -gUnknown_3005542: @ 3005542 - .space 0x18 - -gUnknown_300555A: @ 300555A - .space 0x1A - -gUnknown_3005574: @ 3005574 - .space 0x57C - -gUnknown_3005AF0: @ 3005AF0 - .space 0x29F - -gUnknown_3005D8F: @ 3005D8F - .space 0x47 - -gUnknown_3005DD6: @ 3005DD6 - .space 0x3 - -gUnknown_3005DD9: @ 3005DD9 - .space 0x4 - -gUnknown_3005DDD: @ 3005DDD - .space 0x9 - -gUnknown_3005DE6: @ 3005DE6 - .space 0x1A - -gUnknown_3005E00: @ 3005E00 - .space 0x10 - -gUnknown_3005E10: @ 3005E10 - .space 0x10 - -gUnknown_3005E20: @ 3005E20 - .space 0x40 - + .align 4 + .include "link_rfu_2.o" + .align 4 + .include "link_rfu.o" .align 4 .include "list_menu.o" .align 2 diff --git a/sym_ewram.txt b/sym_ewram.txt index 9e5e91782..140915655 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -17,7 +17,6 @@ .include "src/link.o" .space 8 - @ .include "src/link_rfu.o" .align 2 .include "src/battle_controllers.o" .align 2 @@ -330,16 +329,11 @@ gUnknown_203ABE8: @ 203ABE8 .align 2 .include "src/map_preview_screen.o" - .align 2 -gUnknown_203ABF0: @ 203ABF0 - .space 0x18 - -gUnknown_203AC08: @ 203AC08 - .space 0xDC - -gUnknown_203ACE4: @ 203ACE4 - .space 0x4 + .include "src/link_rfu_2.o" + .align 2 + .include "src/link_rfu_3.o" + .align 2 gUnknown_203ACE8: @ 203ACE8 .space 0x4 |