From 11fd159ae811866fcbfdeb7ec558b5809dda9c50 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 11:17:38 -0500 Subject: Port link_rfu from Emerald --- asm/link_rfu.s | 3175 ---------------------------------------------------- include/link_rfu.h | 59 + ld_script.txt | 2 +- src/link_rfu.c | 1383 +++++++++++++++++++++++ 4 files changed, 1443 insertions(+), 3176 deletions(-) delete mode 100644 asm/link_rfu.s create mode 100644 src/link_rfu.c 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/include/link_rfu.h b/include/link_rfu.h index 033f4c8d4..602d7fa64 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -9,6 +9,65 @@ struct Padded_U8 u8 value; }; +struct UnkLinkRfuStruct_02022B2C +{ + u8 unk_00; + u8 unk_01; + u16 unk_02; + u8 unk_04; + u16 unk_06; + struct UnkLinkRfuStruct_02022B14 *unk_08; + u8 *unk_0c; + u8 unk_10; + u8 unk_11; + u16 unk_12; + u16 unk_14; +}; + +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[4]; + /* 0x030 */ u8 unk_30; + // aligned + /* 0x032 */ u16 unk_32; + /* 0x034 */ u16 unk_34[4]; + /* 0x03c */ const struct UnkLinkRfuStruct_02022B2C *unk_3c; + /* 0x040 */ void (*unk_40)(u8, u8); + /* 0x044 */ void (*unk_44)(u16); + /* 0x048 */ u8 filler_48[8]; + /* 0x050 */ u32 unk_50[0x399]; + /* 0xeb4 */ u8 filler_e64[12]; +}; + void AddTextPrinterToWindow1(const u8 *str); bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(void); diff --git a/ld_script.txt b/ld_script.txt index 2544f8d42..05ed8277a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,7 +226,7 @@ SECTIONS { 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.o(.text); asm/easy_chat_2.o(.text); src/pokedex_screen.o(.text); asm/pokedex_screen.o(.text); diff --git a/src/link_rfu.c b/src/link_rfu.c new file mode 100644 index 000000000..37049e358 --- /dev/null +++ b/src/link_rfu.c @@ -0,0 +1,1383 @@ +#include "global.h" +#include "librfu.h" +#include "link_rfu.h" + +struct UnkRfuStruct_1 gUnknown_3005E10; + +void sub_80FD4E4(void); +void sub_80FDC28(u32 a0); +void sub_80FDC98(u16 reqCommandId, u16 reqResult); +void sub_80FE394(u16 reqCommandId); +void sub_80FE418(void); +void sub_80FE63C(void); +void sub_80FE6F0(void); +void sub_80FE74C(void); +u8 sub_80FE778(void); +void sub_80FE7F0(u8 a0, u8 a1); +void sub_80FE818(u8 bmDisconnectSlot); +void sub_80FE83C(u8 a0); +void sub_80FE918(void); +void sub_80FEAF4(void); +void sub_80FEB14(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 rfu_REQ_sendData_wrapper(u8 clockChangeFlag) +{ + if (gRfuLinkStatus->parentChild == MODE_CHILD) + { + if (gUnknown_3005E10.unk_02 == 1) + clockChangeFlag = 1; + else + clockChangeFlag = 0; + } + 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, offsetof(struct UnkRfuStruct_1, filler_48)); + 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; +} + +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; + } +} + +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; +} + +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); + } + } +} + +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 < 4; 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 == 1) + { + if (parentBmLinkRecoverySlot) + { + for (i = 0; i < 4; 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 < 4; 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 rfu_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 != 1 || !sub_80FD850(0)) + { + sub_80FE418(); + sub_80FE63C(); + sub_80FE74C(); + sub_80FE918(); + } + } +} + +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; + } +} + +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 < 4; 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 < 4; 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 < 4; 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(); + } +} + +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; +} + +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 < 4; 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 == 0x46) + { + 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; + } + } + } + } +} + +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 == 0x27) + { + 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); + } + } +} + +void sub_80FE6F0(void) +{ + if (gUnknown_3005E10.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_3005E10.unk_10]->send.state == 0x26) + { + 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); + } +} + +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; + } +} + +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; +} + +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; +} + +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; +} + +void sub_80FE83C(u8 a0) +{ + u8 i; + + if (gRfuLinkStatus->sendSlotNIFlag) + { + for (i = 0; i < 4; i++) + { + if (gRfuSlotStatusNI[i]->send.state & 0x8000 && gRfuSlotStatusNI[i]->send.bmSlot & a0) + { + rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->send.bmSlot & ~a0); + } + } + } + if (gRfuLinkStatus->recvSlotNIFlag) + { + for (i = 0; i < 4; i++) + { + if (gRfuSlotStatusNI[i]->recv.state & 0x8000 && gRfuSlotStatusNI[i]->recv.bmSlot & a0) + { + rfu_NI_stopReceivingData(i); + } + } + } + if (gRfuLinkStatus->sendSlotUNIFlag) + { + gRfuLinkStatus->sendSlotUNIFlag &= ~a0; + for (i = 0; i < 4; i++) + { + if (gRfuSlotStatusUNI[i]->send.state == 0x8024 && a0 & gRfuSlotStatusUNI[i]->send.bmSlot) + { + gRfuSlotStatusUNI[i]->send.bmSlot &= ~a0; + } + } + } +} + +void sub_80FE918(void) +{ + u8 i; + u8 j; + u8 flags; + + if (gUnknown_3005E10.unk_18) + { + if (gRfuLinkStatus->sendSlotNIFlag) + { + for (i = 0; i < 4; i ++) + { + if (gRfuSlotStatusNI[i]->send.state & 0x8000) + { + flags = 0; + for (j = 0; j < 4; 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 < 4; i++) + { + if (gRfuSlotStatusNI[i]->recv.state & 0x8000 && 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); +} + +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; +} + +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; +} + +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; +} + +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; + } + } +} + -- cgit v1.2.3 From ce60043a58c4c480850fde2e40961cf2d064adbe Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 11:20:35 -0500 Subject: link_rfu COMMON syms --- common_syms/link_rfu.txt | 1 + include/link_rfu.h | 2 -- sym_common.txt | 8 ++------ 3 files changed, 3 insertions(+), 8 deletions(-) create mode 100644 common_syms/link_rfu.txt 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/include/link_rfu.h b/include/link_rfu.h index 602d7fa64..05e8a69a0 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -64,8 +64,6 @@ struct UnkRfuStruct_1 /* 0x040 */ void (*unk_40)(u8, u8); /* 0x044 */ void (*unk_44)(u16); /* 0x048 */ u8 filler_48[8]; - /* 0x050 */ u32 unk_50[0x399]; - /* 0xeb4 */ u8 filler_e64[12]; }; void AddTextPrinterToWindow1(const u8 *str); diff --git a/sym_common.txt b/sym_common.txt index 753ce9ebd..339f9d803 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -123,12 +123,8 @@ gUnknown_3005DE6: @ 3005DE6 gUnknown_3005E00: @ 3005E00 .space 0x10 -gUnknown_3005E10: @ 3005E10 - .space 0x10 - -gUnknown_3005E20: @ 3005E20 - .space 0x40 - + .align 4 + .include "link_rfu.o" .align 4 .include "list_menu.o" .align 2 -- cgit v1.2.3 From 28a2bb7c934893cdc22cc617f83dcef033875801 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 11:21:55 -0500 Subject: Remove unneeded filler --- include/link_rfu.h | 1 - src/link_rfu.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/include/link_rfu.h b/include/link_rfu.h index 05e8a69a0..f83a33a65 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -63,7 +63,6 @@ struct UnkRfuStruct_1 /* 0x03c */ const struct UnkLinkRfuStruct_02022B2C *unk_3c; /* 0x040 */ void (*unk_40)(u8, u8); /* 0x044 */ void (*unk_44)(u16); - /* 0x048 */ u8 filler_48[8]; }; void AddTextPrinterToWindow1(const u8 *str); diff --git a/src/link_rfu.c b/src/link_rfu.c index 37049e358..89b5c0924 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -59,7 +59,7 @@ s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16)) { return 4; } - CpuFill16(0, &gUnknown_3005E10, offsetof(struct UnkRfuStruct_1, filler_48)); + CpuFill16(0, &gUnknown_3005E10, sizeof(struct UnkRfuStruct_1)); gUnknown_3005E10.unk_06 = -1; gUnknown_3005E10.unk_40 = func1; gUnknown_3005E10.unk_44 = func2; -- cgit v1.2.3 From 6daa05332016d1410036f465f317ce463c5a3ac6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 11:25:42 -0500 Subject: Static syms --- include/link_rfu.h | 1 + src/link_rfu.c | 69 +++++++++++++++++++++++++++--------------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/include/link_rfu.h b/include/link_rfu.h index f83a33a65..e3b2243b9 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -104,6 +104,7 @@ void var_800D_set_xB(void); struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void); void sub_80FCF34(void); void InitRFU(void); +void sub_80FEB14(void); #include "mevent_server.h" extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[]; diff --git a/src/link_rfu.c b/src/link_rfu.c index 89b5c0924..67fc338ef 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -4,21 +4,20 @@ struct UnkRfuStruct_1 gUnknown_3005E10; -void sub_80FD4E4(void); -void sub_80FDC28(u32 a0); -void sub_80FDC98(u16 reqCommandId, u16 reqResult); -void sub_80FE394(u16 reqCommandId); -void sub_80FE418(void); -void sub_80FE63C(void); -void sub_80FE6F0(void); -void sub_80FE74C(void); -u8 sub_80FE778(void); -void sub_80FE7F0(u8 a0, u8 a1); -void sub_80FE818(u8 bmDisconnectSlot); -void sub_80FE83C(u8 a0); -void sub_80FE918(void); -void sub_80FEAF4(void); -void sub_80FEB14(void); +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) { @@ -68,7 +67,7 @@ s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16)) return 0; } -void sub_80FD484(void) +static void sub_80FD484(void) { CpuFill16(0, &gUnknown_3005E10, offsetof(struct UnkRfuStruct_1, unk_40)); gUnknown_3005E10.unk_06 = -1; @@ -89,7 +88,7 @@ void sub_80FD4B0(const struct UnkLinkRfuStruct_02022B2C *unk0) } } -void sub_80FD4E4(void) +static void sub_80FD4E4(void) { u8 i; @@ -220,7 +219,7 @@ u8 sub_80FD610(u16 parentId, u16 unk_1a) return 0; } -void sub_80FD6F4(u8 lossSlot) +static void sub_80FD6F4(u8 lossSlot) { u8 i; @@ -326,7 +325,7 @@ void sub_80FD760(bool8 a0) } } -bool8 sub_80FD850(u16 reqCommandId) +static bool8 sub_80FD850(u16 reqCommandId) { bool8 retVal; u8 i; @@ -540,7 +539,7 @@ void sub_80FDA30(u32 a0) } } -void sub_80FDC28(u32 a0) +static void sub_80FDC28(u32 a0) { if (gUnknown_3005E10.unk_07 == 5) { @@ -580,7 +579,7 @@ void sub_80FDC28(u32 a0) } } -void sub_80FDC98(u16 r8, u16 r6) +static void sub_80FDC98(u16 r8, u16 r6) { u8 sp0; register u8 *stwiRecvBuffer asm("r0"); @@ -944,7 +943,7 @@ void sub_80FDC98(u16 r8, u16 r6) } } -void sub_80FE394(u16 reqCommandId) +static void sub_80FE394(u16 reqCommandId) { u8 r7; u8 ackFlag; @@ -983,7 +982,7 @@ void sub_80FE394(u16 reqCommandId) gUnknown_3005E10.unk_0e = r7; } -void sub_80FE418(void) +static void sub_80FE418(void) { u8 flags; u8 sp0; @@ -1101,7 +1100,7 @@ void sub_80FE418(void) } } -void sub_80FE63C(void) +static void sub_80FE63C(void) { u16 imeBak = REG_IME; REG_IME = 0; @@ -1133,7 +1132,7 @@ void sub_80FE63C(void) } } -void sub_80FE6F0(void) +static void sub_80FE6F0(void) { if (gUnknown_3005E10.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_3005E10.unk_10]->send.state == 0x26) { @@ -1145,7 +1144,7 @@ void sub_80FE6F0(void) } } -void sub_80FE74C(void) +static void sub_80FE74C(void) { if (gUnknown_3005E10.unk_06 == 0 && gUnknown_3005E10.unk_0a == 1) { @@ -1157,7 +1156,7 @@ void sub_80FE74C(void) } } -u8 sub_80FE778(void) +static u8 sub_80FE778(void) { u8 i; const u16 *ptr; @@ -1176,7 +1175,7 @@ u8 sub_80FE778(void) return flags; } -void sub_80FE7F0(u8 a0, u8 a1) +static void sub_80FE7F0(u8 a0, u8 a1) { if (gUnknown_3005E10.unk_40 != NULL) { @@ -1185,7 +1184,7 @@ void sub_80FE7F0(u8 a0, u8 a1) gUnknown_3005E10.unk_14 = gUnknown_3005E10.unk_16 = 0; } -void sub_80FE818(u8 a0) +static void sub_80FE818(u8 a0) { u8 unk_0e_bak = gUnknown_3005E10.unk_0e; gUnknown_3005E10.unk_0e = 1; @@ -1194,7 +1193,7 @@ void sub_80FE818(u8 a0) gUnknown_3005E10.unk_0e = unk_0e_bak; } -void sub_80FE83C(u8 a0) +static void sub_80FE83C(u8 a0) { u8 i; @@ -1231,7 +1230,7 @@ void sub_80FE83C(u8 a0) } } -void sub_80FE918(void) +static void sub_80FE918(void) { u8 i; u8 j; @@ -1279,7 +1278,7 @@ void sub_80FEA10(void (*func)(u16)) rfu_setMSCCallback(sub_80FE394); } -void sub_80FEA28(void (*func)(u8, u8)) +static void sub_80FEA28(void (*func)(u8, u8)) { gUnknown_3005E10.unk_40 = func; } @@ -1299,7 +1298,7 @@ u8 sub_80FEA34(u8 a0, u16 a1) return 0; } -u8 sub_80FEA78(u16 a0) +static u8 sub_80FEA78(u16 a0) { if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag) { @@ -1311,7 +1310,7 @@ u8 sub_80FEA78(u16 a0) return 0; } -u8 sub_80FEAB4(u8 a0) +static u8 sub_80FEAB4(u8 a0) { if (gUnknown_3005E10.unk_04 == 9 || gUnknown_3005E10.unk_04 == 10 || gUnknown_3005E10.unk_04 == 11) { @@ -1330,7 +1329,7 @@ u8 sub_80FEAB4(u8 a0) return 0; } -void sub_80FEAF4(void) +static void sub_80FEAF4(void) { if (gUnknown_3005E10.unk_02) { -- cgit v1.2.3 From 2a5cde336bd55fdc07cf0293d36fb854c2313811 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 14:04:02 -0500 Subject: Address review comments --- asm/link_rfu_2.s | 8 ++++---- include/librfu.h | 2 +- include/link_rfu.h | 4 ++-- src/librfu_rfu.c | 2 +- src/link_rfu.c | 55 +++++++++++++++++++++++++++--------------------------- 5 files changed, 35 insertions(+), 36 deletions(-) diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index 10d4fd03d..267b80c7a 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -905,7 +905,7 @@ _080F8D2A: bl rfu_UNI_clearRecvNewDataFlag _080F8D84: movs r0, 0x1 - bl rfu_REQ_sendData_wrapper + bl LinkRfu_REQ_SendData_HandleParentRelationship pop {r4} pop {r0} bx r0 @@ -1410,7 +1410,7 @@ sub_80F911C: @ 80F911C bl rfu_REQ_recvData bl rfu_waitREQComplete movs r0, 0 - bl rfu_REQ_sendData_wrapper + bl LinkRfu_REQ_SendData_HandleParentRelationship b _080F91F6 .align 2, 0 _080F9138: .4byte gUnknown_3005450 @@ -1484,7 +1484,7 @@ _080F91CC: ldrb r0, [r0] bl rfu_UNI_readySendData movs r0, 0x1 - bl rfu_REQ_sendData_wrapper + bl LinkRfu_REQ_SendData_HandleParentRelationship b _080F91F0 .align 2, 0 _080F91E4: .4byte gUnknown_3005450 @@ -5249,7 +5249,7 @@ rfu_REQ_recvData_then_sendData: @ 80FAE74 bl rfu_REQ_recvData bl rfu_waitREQComplete movs r0, 0 - bl rfu_REQ_sendData_wrapper + bl LinkRfu_REQ_SendData_HandleParentRelationship _080FAE8C: pop {r0} bx r0 diff --git a/include/librfu.h b/include/librfu.h index cf409ca69..1b8e6573f 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -616,7 +616,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_rfu.h b/include/link_rfu.h index e3b2243b9..8ee7674cf 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -55,11 +55,11 @@ struct UnkRfuStruct_1 /* 0x020 */ const u16 *unk_20; /* 0x024 */ u8 unk_24; /* 0x026 */ u16 unk_26; - /* 0x028 */ u16 unk_28[4]; + /* 0x028 */ u16 unk_28[RFU_CHILD_MAX]; /* 0x030 */ u8 unk_30; // aligned /* 0x032 */ u16 unk_32; - /* 0x034 */ u16 unk_34[4]; + /* 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); diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index 96de99c2a..e178c91e4 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -1533,7 +1533,7 @@ 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) { diff --git a/src/link_rfu.c b/src/link_rfu.c index 67fc338ef..195394cfe 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -38,14 +38,14 @@ u32 sub_80FD3A4(void) return id; } -void rfu_REQ_sendData_wrapper(u8 clockChangeFlag) +void LinkRfu_REQ_SendData_HandleParentRelationship(u8 clockChangeFlag) { if (gRfuLinkStatus->parentChild == MODE_CHILD) { - if (gUnknown_3005E10.unk_02 == 1) - clockChangeFlag = 1; + if (gUnknown_3005E10.unk_02 == TRUE) + clockChangeFlag = TRUE; else - clockChangeFlag = 0; + clockChangeFlag = FALSE; } else gUnknown_3005E10.unk_03 = 0; @@ -349,7 +349,7 @@ static bool8 sub_80FD850(u16 reqCommandId) } if (gUnknown_3005E10.unk_0a == 1) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((bmLinkLossSlot >> i) & 1) { @@ -375,11 +375,11 @@ static bool8 sub_80FD850(u16 reqCommandId) } sub_80FEAF4(); } - if (gRfuLinkStatus->parentChild == 1) + if (gRfuLinkStatus->parentChild == MODE_PARENT) { if (parentBmLinkRecoverySlot) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((gUnknown_3005E10.unk_30 >> i) & 1 && (parentBmLinkRecoverySlot >> i) & 1) { @@ -393,7 +393,7 @@ static bool8 sub_80FD850(u16 reqCommandId) if (gUnknown_3005E10.unk_30) { flags = 0; - for (i = 0; i < 4; i++) + 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) { @@ -529,7 +529,7 @@ void sub_80FDA30(u32 a0) gUnknown_3005E10.unk_0e = 0; } } while (gUnknown_3005E10.unk_04 == 18 || gUnknown_3005E10.unk_04 == 19); - if (gRfuLinkStatus->parentChild != 1 || !sub_80FD850(0)) + if (gRfuLinkStatus->parentChild != MODE_PARENT || !sub_80FD850(0)) { sub_80FE418(); sub_80FE63C(); @@ -733,7 +733,7 @@ static void sub_80FDC98(u16 r8, u16 r6) { 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 < 4; gUnknown_3005E10.unk_10 ++) + 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) { @@ -840,7 +840,7 @@ static void sub_80FDC98(u16 r8, u16 r6) if (gUnknown_3005E10.unk_30) { gUnknown_3005E10.unk_30 &= ~gUnknown_3005E10.unk_14; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((gUnknown_3005E10.unk_14 >> i) & 1) { @@ -853,7 +853,7 @@ static void sub_80FDC98(u16 r8, u16 r6) } } sp0 = gUnknown_3005E10.unk_00 & gUnknown_3005E10.unk_14; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((sp0 >> i) & 1 && gUnknown_3005E10.unk_01) { @@ -1001,7 +1001,7 @@ static void sub_80FE418(void) sub_80FE7F0(0x10, 0x01); } sp0 = 0x00; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { r4 = 1 << i; r5 = 0x00; @@ -1012,7 +1012,7 @@ static void sub_80FE418(void) } else if (gUnknown_3005E10.unk_24 & r4) { - if (gRfuSlotStatusNI[i]->recv.state == 0x46) + if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS) { if (gRfuSlotStatusNI[i]->recv.dataType == 1) // Game identification information { @@ -1106,7 +1106,7 @@ static void sub_80FE63C(void) 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 == 0x27) + 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; @@ -1134,7 +1134,7 @@ static void sub_80FE63C(void) static void sub_80FE6F0(void) { - if (gUnknown_3005E10.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_3005E10.unk_10]->send.state == 0x26) + 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); @@ -1199,9 +1199,9 @@ static void sub_80FE83C(u8 a0) if (gRfuLinkStatus->sendSlotNIFlag) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { - if (gRfuSlotStatusNI[i]->send.state & 0x8000 && gRfuSlotStatusNI[i]->send.bmSlot & a0) + if (gRfuSlotStatusNI[i]->send.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->send.bmSlot & a0) { rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->send.bmSlot & ~a0); } @@ -1209,9 +1209,9 @@ static void sub_80FE83C(u8 a0) } if (gRfuLinkStatus->recvSlotNIFlag) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { - if (gRfuSlotStatusNI[i]->recv.state & 0x8000 && gRfuSlotStatusNI[i]->recv.bmSlot & a0) + if (gRfuSlotStatusNI[i]->recv.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->recv.bmSlot & a0) { rfu_NI_stopReceivingData(i); } @@ -1220,9 +1220,9 @@ static void sub_80FE83C(u8 a0) if (gRfuLinkStatus->sendSlotUNIFlag) { gRfuLinkStatus->sendSlotUNIFlag &= ~a0; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { - if (gRfuSlotStatusUNI[i]->send.state == 0x8024 && a0 & gRfuSlotStatusUNI[i]->send.bmSlot) + if (gRfuSlotStatusUNI[i]->send.state == SLOT_STATE_SEND_UNI && a0 & gRfuSlotStatusUNI[i]->send.bmSlot) { gRfuSlotStatusUNI[i]->send.bmSlot &= ~a0; } @@ -1240,12 +1240,12 @@ static void sub_80FE918(void) { if (gRfuLinkStatus->sendSlotNIFlag) { - for (i = 0; i < 4; i ++) + for (i = 0; i < RFU_CHILD_MAX; i++) { - if (gRfuSlotStatusNI[i]->send.state & 0x8000) + if (gRfuSlotStatusNI[i]->send.state & SLOT_BUSY_FLAG) { flags = 0; - for (j = 0; j < 4; j++) + for (j = 0; j < RFU_CHILD_MAX; j++) { if ((gRfuSlotStatusNI[i]->send.bmSlot >> j) & 1 && gRfuSlotStatusNI[j]->send.failCounter > gUnknown_3005E10.unk_18) { @@ -1261,9 +1261,9 @@ static void sub_80FE918(void) } if (gRfuLinkStatus->recvSlotNIFlag) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { - if (gRfuSlotStatusNI[i]->recv.state & 0x8000 && gRfuSlotStatusNI[i]->recv.failCounter > gUnknown_3005E10.unk_18) + if (gRfuSlotStatusNI[i]->recv.state & SLOT_BUSY_FLAG && gRfuSlotStatusNI[i]->recv.failCounter > gUnknown_3005E10.unk_18) { rfu_NI_stopReceivingData(i); } @@ -1379,4 +1379,3 @@ void sub_80FEB3C(void) } } } - -- cgit v1.2.3 From fcf0e62d1f059c7161a6769e277afc7329260064 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 16:38:08 -0500 Subject: MODE_PARENT; collapse gUnknown_3005450 --> Rfu --- asm/berry_crush.s | 12 +- asm/link_rfu_2.s | 750 +++++++++++++++++++++++++-------------------------- asm/overworld.s | 4 +- asm/pokemon_jump_2.s | 4 +- data/link_rfu_2.s | 2 +- src/librfu_rfu.c | 2 +- sym_common.txt | 47 +--- 7 files changed, 390 insertions(+), 431 deletions(-) diff --git a/asm/berry_crush.s b/asm/berry_crush.s index 42de36a1f..8b4351826 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_2.s b/asm/link_rfu_2.s index 267b80c7a..d13b2d2d6 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -22,7 +22,7 @@ sub_80F85F8: @ 80F85F8 mov r6, r8 push {r6,r7} sub sp, 0x8 - ldr r6, _080F869C @ =gUnknown_3005450 + ldr r6, _080F869C @ =Rfu adds r5, r6, 0 adds r5, 0xEE ldrb r4, [r5] @@ -60,7 +60,7 @@ _080F863E: cmp r4, 0 bge _080F863E movs r5, 0 - ldr r4, _080F86A4 @ =gUnknown_30054BC + ldr r4, _080F86A4 @ =Rfu+0x6c adds r0, r4, 0 bl sub_80F9CB4 adds r0, r4, 0 @@ -93,9 +93,9 @@ _080F863E: pop {r0} bx r0 .align 2, 0 -_080F869C: .4byte gUnknown_3005450 +_080F869C: .4byte Rfu _080F86A0: .4byte 0x010004d6 -_080F86A4: .4byte gUnknown_30054BC +_080F86A4: .4byte Rfu+0x6c _080F86A8: .4byte 0x00000634 _080F86AC: .4byte gSendCmd _080F86B0: .4byte 0x01000008 @@ -167,7 +167,7 @@ sub_80F8738: @ 80F8738 lsls r0, 24 lsrs r5, r0, 24 bl sub_80FA738 - ldr r0, _080F8758 @ =gUnknown_3005450 + ldr r0, _080F8758 @ =Rfu ldrh r0, [r0, 0x4] cmp r0, 0x12 bls _080F874C @@ -179,7 +179,7 @@ _080F874C: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080F8758: .4byte gUnknown_3005450 +_080F8758: .4byte Rfu _080F875C: .4byte _080F8760 .align 2, 0 _080F8760: @@ -205,7 +205,7 @@ _080F8760: _080F87AC: ldr r0, _080F87C8 @ =gUnknown_203ABF0 bl sub_80FD4B0 - ldr r0, _080F87CC @ =gUnknown_3005450 + ldr r0, _080F87CC @ =Rfu movs r2, 0x1 strh r2, [r0, 0x4] ldr r1, _080F87D0 @ =gTasks @@ -217,10 +217,10 @@ _080F87AC: b _080F8852 .align 2, 0 _080F87C8: .4byte gUnknown_203ABF0 -_080F87CC: .4byte gUnknown_3005450 +_080F87CC: .4byte Rfu _080F87D0: .4byte gTasks _080F87D4: - ldr r4, _080F87F8 @ =gUnknown_3005450 + ldr r4, _080F87F8 @ =Rfu ldrb r0, [r4, 0xC] ldr r3, _080F87FC @ =gUnknown_843EC8C movs r1, 0 @@ -237,20 +237,20 @@ _080F87D4: strh r1, [r0, 0xA] b _080F8852 .align 2, 0 -_080F87F8: .4byte gUnknown_3005450 +_080F87F8: .4byte Rfu _080F87FC: .4byte gUnknown_843EC8C _080F8800: .4byte gTasks _080F8804: movs r0, 0 bl sub_80FD760 - ldr r1, _080F8814 @ =gUnknown_3005450 + ldr r1, _080F8814 @ =Rfu movs r0, 0x5 strh r0, [r1, 0x4] b _080F8852 .align 2, 0 -_080F8814: .4byte gUnknown_3005450 +_080F8814: .4byte Rfu _080F8818: - ldr r4, _080F8858 @ =gUnknown_3005450 + ldr r4, _080F8858 @ =Rfu ldr r0, _080F885C @ =0x00000993 adds r1, r4, r0 ldrb r0, [r1] @@ -279,7 +279,7 @@ _080F8852: pop {r0} bx r0 .align 2, 0 -_080F8858: .4byte gUnknown_3005450 +_080F8858: .4byte Rfu _080F885C: .4byte 0x00000993 _080F8860: .4byte sub_80F8DA8 _080F8864: .4byte gTasks @@ -312,7 +312,7 @@ sub_80F887C: @ 80F887C bne _080F88BC movs r3, 0 movs r5, 0x1 - ldr r1, _080F88B8 @ =gUnknown_3005DE6 + ldr r1, _080F88B8 @ =Rfu+0x996 _080F8896: adds r0, r2, 0 ands r0, r5 @@ -332,13 +332,13 @@ _080F88A8: bls _080F8896 b _080F8932 .align 2, 0 -_080F88B8: .4byte gUnknown_3005DE6 +_080F88B8: .4byte Rfu+0x996 _080F88BC: movs r3, 0 mvns r0, r1 mov r12, r0 movs r7, 0x1 - ldr r4, _080F8938 @ =gUnknown_3005DE6 + ldr r4, _080F8938 @ =Rfu+0x996 _080F88C6: adds r2, r1, 0 ands r2, r7 @@ -354,14 +354,14 @@ _080F88D2: cmp r3, 0x3 bls _080F88C6 movs r4, 0x4 - ldr r0, _080F8938 @ =gUnknown_3005DE6 + ldr r0, _080F8938 @ =Rfu+0x996 ldrb r7, [r0] _080F88E4: movs r3, 0 subs r1, r4, 0x1 cmp r7, r4 beq _080F8900 - ldr r2, _080F8938 @ =gUnknown_3005DE6 + ldr r2, _080F8938 @ =Rfu+0x996 _080F88EE: adds r0, r3, 0x1 lsls r0, 24 @@ -385,7 +385,7 @@ _080F8906: ands r5, r0 movs r3, 0 movs r2, 0x1 - ldr r1, _080F8938 @ =gUnknown_3005DE6 + ldr r1, _080F8938 @ =Rfu+0x996 _080F8918: adds r0, r5, 0 ands r0, r2 @@ -406,7 +406,7 @@ _080F8932: pop {r0} bx r0 .align 2, 0 -_080F8938: .4byte gUnknown_3005DE6 +_080F8938: .4byte Rfu+0x996 thumb_func_end sub_80F887C thumb_func_start sub_80F893C @@ -414,7 +414,7 @@ sub_80F893C: @ 80F893C push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r0, _080F8958 @ =gUnknown_3005450 + ldr r0, _080F8958 @ =Rfu ldrh r3, [r0, 0x4] adds r7, r0, 0 cmp r3, 0xC @@ -427,7 +427,7 @@ _080F894E: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080F8958: .4byte gUnknown_3005450 +_080F8958: .4byte Rfu _080F895C: .4byte _080F8960 .align 2, 0 _080F8960: @@ -447,13 +447,13 @@ _080F8960: _080F8994: ldr r0, _080F89A4 @ =gUnknown_843EBB4 bl sub_80FD4B0 - ldr r0, _080F89A8 @ =gUnknown_3005450 + ldr r0, _080F89A8 @ =Rfu movs r2, 0x1 strh r2, [r0, 0x4] b _080F89BC .align 2, 0 _080F89A4: .4byte gUnknown_843EBB4 -_080F89A8: .4byte gUnknown_3005450 +_080F89A8: .4byte Rfu _080F89AC: ldrb r0, [r7, 0xC] ldr r3, _080F89CC @ =gUnknown_843EC8C @@ -498,15 +498,15 @@ _080F89FA: beq _080F8A0C b _080F8A8A _080F8A00: - ldr r1, _080F8A08 @ =gUnknown_3005450 + ldr r1, _080F8A08 @ =Rfu movs r0, 0xC strh r0, [r1, 0x4] b _080F8A8A .align 2, 0 -_080F8A08: .4byte gUnknown_3005450 +_080F8A08: .4byte Rfu _080F8A0C: bl sub_80FEB14 - ldr r0, _080F8A24 @ =gUnknown_3005450 + ldr r0, _080F8A24 @ =Rfu ldr r1, _080F8A28 @ =0x0000099c adds r0, r1 movs r1, 0x2 @@ -515,7 +515,7 @@ _080F8A0C: bl DestroyTask b _080F8A8A .align 2, 0 -_080F8A24: .4byte gUnknown_3005450 +_080F8A24: .4byte Rfu _080F8A28: .4byte 0x0000099c _080F8A2C: ldr r0, _080F8A90 @ =0x000008f6 @@ -586,7 +586,7 @@ _080F8AAC: lsls r2, r4, 3 subs r2, r4 lsls r2, 1 - ldr r0, _080F8AE8 @ =gUnknown_3005464 + ldr r0, _080F8AE8 @ =Rfu+0x14 adds r2, r0 movs r0, 0x10 adds r1, r4, 0 @@ -607,7 +607,7 @@ _080F8AD0: bx r0 .align 2, 0 _080F8AE4: .4byte gUnknown_3005E10 -_080F8AE8: .4byte gUnknown_3005464 +_080F8AE8: .4byte Rfu+0x14 thumb_func_end sub_80F8AA4 thumb_func_start sub_80F8AEC @@ -615,7 +615,7 @@ sub_80F8AEC: @ 80F8AEC push {r4-r6,lr} ldr r0, _080F8B28 @ =gUnknown_3005E10 ldrb r5, [r0] - ldr r4, _080F8B2C @ =gUnknown_3005D8F + ldr r4, _080F8B2C @ =Rfu+0x93f adds r0, r5, 0 adds r1, r4, 0 movs r2, 0x46 @@ -640,7 +640,7 @@ sub_80F8AEC: @ 80F8AEC bx r0 .align 2, 0 _080F8B28: .4byte gUnknown_3005E10 -_080F8B2C: .4byte gUnknown_3005D8F +_080F8B2C: .4byte Rfu+0x93f _080F8B30: .4byte 0xfffff6c1 thumb_func_end sub_80F8AEC @@ -668,7 +668,7 @@ sub_80F8B34: @ 80F8B34 movs r1, 0 bl sub_80FB9E4 _080F8B68: - ldr r0, _080F8B84 @ =gUnknown_3005450 + ldr r0, _080F8B84 @ =Rfu ldrh r2, [r0, 0x4] adds r6, r0, 0 cmp r2, 0x12 @@ -682,7 +682,7 @@ _080F8B74: mov pc, r0 .align 2, 0 _080F8B80: .4byte gUnknown_3005E10 -_080F8B84: .4byte gUnknown_3005450 +_080F8B84: .4byte Rfu _080F8B88: .4byte _080F8B8C .align 2, 0 _080F8B8C: @@ -708,7 +708,7 @@ _080F8B8C: _080F8BD8: ldr r0, _080F8BF4 @ =gUnknown_203ABF0 bl sub_80FD4B0 - ldr r0, _080F8BF8 @ =gUnknown_3005450 + ldr r0, _080F8BF8 @ =Rfu movs r2, 0x1 strh r2, [r0, 0x4] ldr r1, _080F8BFC @ =gTasks @@ -720,7 +720,7 @@ _080F8BD8: b _080F8CE6 .align 2, 0 _080F8BF4: .4byte gUnknown_203ABF0 -_080F8BF8: .4byte gUnknown_3005450 +_080F8BF8: .4byte Rfu _080F8BFC: .4byte gTasks _080F8C00: ldr r3, _080F8C1C @ =gUnknown_843EC8C @@ -730,14 +730,14 @@ _080F8C00: bl sub_80FD538 ldr r0, _080F8C20 @ =sub_80F8D20 bl sub_80FEA10 - ldr r1, _080F8C24 @ =gUnknown_3005450 + ldr r1, _080F8C24 @ =Rfu movs r0, 0x12 strh r0, [r1, 0x4] b _080F8CE6 .align 2, 0 _080F8C1C: .4byte gUnknown_843EC8C _080F8C20: .4byte sub_80F8D20 -_080F8C24: .4byte gUnknown_3005450 +_080F8C24: .4byte Rfu _080F8C28: ldr r1, _080F8C6C @ =0x000008f6 adds r0, r6, r1 @@ -784,12 +784,12 @@ _080F8C84: .4byte sub_80FA834 _080F8C88: movs r0, 0 bl sub_80FD760 - ldr r1, _080F8C98 @ =gUnknown_3005450 + ldr r1, _080F8C98 @ =Rfu movs r0, 0xF strh r0, [r1, 0x4] b _080F8CE6 .align 2, 0 -_080F8C98: .4byte gUnknown_3005450 +_080F8C98: .4byte Rfu _080F8C9C: ldr r0, _080F8CEC @ =0x00000993 adds r1, r6, r0 @@ -859,7 +859,7 @@ sub_80F8D14: @ 80F8D14 thumb_func_start sub_80F8D20 sub_80F8D20: @ 80F8D20 push {r4,lr} - ldr r0, _080F8D90 @ =gUnknown_3005450 + ldr r0, _080F8D90 @ =Rfu movs r2, 0 movs r1, 0xD adds r0, 0x59 @@ -872,7 +872,7 @@ _080F8D2A: bl rfu_REQ_recvData bl rfu_waitREQComplete ldr r1, _080F8D94 @ =gRfuSlotStatusUNI - ldr r3, _080F8D90 @ =gUnknown_3005450 + ldr r3, _080F8D90 @ =Rfu ldr r0, _080F8D98 @ =0x000008f6 adds r4, r3, r0 ldrb r0, [r4] @@ -910,7 +910,7 @@ _080F8D84: pop {r0} bx r0 .align 2, 0 -_080F8D90: .4byte gUnknown_3005450 +_080F8D90: .4byte Rfu _080F8D94: .4byte gRfuSlotStatusUNI _080F8D98: .4byte 0x000008f6 _080F8D9C: .4byte 0x00000988 @@ -920,7 +920,7 @@ _080F8DA4: .4byte gUnknown_203AC08 thumb_func_start sub_80F8DA8 sub_80F8DA8: @ 80F8DA8 - ldr r0, _080F8DB8 @ =gUnknown_3005450 + ldr r0, _080F8DB8 @ =Rfu ldr r1, _080F8DBC @ =0x00000993 adds r0, r1 ldrb r1, [r0] @@ -928,7 +928,7 @@ sub_80F8DA8: @ 80F8DA8 strb r1, [r0] bx lr .align 2, 0 -_080F8DB8: .4byte gUnknown_3005450 +_080F8DB8: .4byte Rfu _080F8DBC: .4byte 0x00000993 thumb_func_end sub_80F8DA8 @@ -943,7 +943,7 @@ sub_80F8DC0: @ 80F8DC0 cmp r0, 0x1 bls _080F8E64 bl sub_80FD52C - ldr r4, _080F8DE4 @ =gUnknown_3005450 + ldr r4, _080F8DE4 @ =Rfu ldrb r0, [r4, 0xC] cmp r0, 0x1 bne _080F8DEC @@ -951,7 +951,7 @@ sub_80F8DC0: @ 80F8DC0 b _080F8DF2 .align 2, 0 _080F8DE0: .4byte gUnknown_203ADFA -_080F8DE4: .4byte gUnknown_3005450 +_080F8DE4: .4byte Rfu _080F8DE8: .4byte sub_80F8738 _080F8DEC: cmp r0, 0 @@ -1031,7 +1031,7 @@ sub_80F8E74: @ 80F8E74 ldr r0, _080F8E9C @ =sub_80F8738 movs r1, 0x1 bl CreateTask - ldr r1, _080F8EA0 @ =gUnknown_3005450 + ldr r1, _080F8EA0 @ =Rfu adds r1, 0x67 strb r0, [r1] _080F8E92: @@ -1040,13 +1040,13 @@ _080F8E92: .align 2, 0 _080F8E98: .4byte gUnknown_203ADFA _080F8E9C: .4byte sub_80F8738 -_080F8EA0: .4byte gUnknown_3005450 +_080F8EA0: .4byte Rfu thumb_func_end sub_80F8E74 thumb_func_start sub_80F8EA4 sub_80F8EA4: @ 80F8EA4 push {lr} - ldr r1, _080F8EBC @ =gUnknown_3005450 + ldr r1, _080F8EBC @ =Rfu ldrh r0, [r1, 0x4] cmp r0, 0x7 bne _080F8EC4 @@ -1058,7 +1058,7 @@ sub_80F8EA4: @ 80F8EA4 movs r0, 0x1 b _080F8EC6 .align 2, 0 -_080F8EBC: .4byte gUnknown_3005450 +_080F8EBC: .4byte Rfu _080F8EC0: .4byte 0x00000985 _080F8EC4: movs r0, 0 @@ -1070,7 +1070,7 @@ _080F8EC6: thumb_func_start sub_80F8ECC sub_80F8ECC: @ 80F8ECC push {r4,lr} - ldr r4, _080F8EFC @ =gUnknown_3005450 + ldr r4, _080F8EFC @ =Rfu ldrh r0, [r4, 0x4] cmp r0, 0x7 bne _080F8F08 @@ -1092,7 +1092,7 @@ sub_80F8ECC: @ 80F8ECC movs r0, 0x1 b _080F8F0A .align 2, 0 -_080F8EFC: .4byte gUnknown_3005450 +_080F8EFC: .4byte Rfu _080F8F00: .4byte gRfuLinkStatus _080F8F04: .4byte 0x000008f5 _080F8F08: @@ -1116,7 +1116,7 @@ sub_80F8F10: @ 80F8F10 ldr r0, _080F8F38 @ =sub_80F893C movs r1, 0x1 bl CreateTask - ldr r1, _080F8F3C @ =gUnknown_3005450 + ldr r1, _080F8F3C @ =Rfu adds r1, 0x67 strb r0, [r1] _080F8F2E: @@ -1125,7 +1125,7 @@ _080F8F2E: .align 2, 0 _080F8F34: .4byte gUnknown_203ADFA _080F8F38: .4byte sub_80F893C -_080F8F3C: .4byte gUnknown_3005450 +_080F8F3C: .4byte Rfu thumb_func_end sub_80F8F10 thumb_func_start sub_80F8F40 @@ -1148,7 +1148,7 @@ _080F8F56: thumb_func_start sub_80F8F5C sub_80F8F5C: @ 80F8F5C - ldr r1, _080F8F70 @ =gUnknown_3005450 + ldr r1, _080F8F70 @ =Rfu movs r0, 0x4 strh r0, [r1, 0x4] ldr r0, _080F8F74 @ =gUnknown_3005E10 @@ -1158,7 +1158,7 @@ sub_80F8F5C: @ 80F8F5C strb r0, [r1] bx lr .align 2, 0 -_080F8F70: .4byte gUnknown_3005450 +_080F8F70: .4byte Rfu _080F8F74: .4byte gUnknown_3005E10 _080F8F78: .4byte 0x0000099f thumb_func_end sub_80F8F5C @@ -1167,7 +1167,7 @@ _080F8F78: .4byte 0x0000099f sub_80F8F7C: @ 80F8F7C push {lr} adds r1, r0, 0 - ldr r2, _080F8F94 @ =gUnknown_3005450 + ldr r2, _080F8F94 @ =Rfu ldrh r0, [r2, 0x4] cmp r0, 0x11 beq _080F8F8C @@ -1179,7 +1179,7 @@ _080F8F8C: movs r0, 0x1 b _080F8F9A .align 2, 0 -_080F8F94: .4byte gUnknown_3005450 +_080F8F94: .4byte Rfu _080F8F98: movs r0, 0 _080F8F9A: @@ -1189,12 +1189,12 @@ _080F8F9A: thumb_func_start sub_80F8FA0 sub_80F8FA0: @ 80F8FA0 - ldr r1, _080F8FA8 @ =gUnknown_3005450 + ldr r1, _080F8FA8 @ =Rfu movs r0, 0xE strh r0, [r1, 0x4] bx lr .align 2, 0 -_080F8FA8: .4byte gUnknown_3005450 +_080F8FA8: .4byte Rfu thumb_func_end sub_80F8FA0 thumb_func_start sub_80F8FAC @@ -1229,7 +1229,7 @@ sub_80F8FD4: @ 80F8FD4 sub sp, 0x4 movs r2, 0 ldr r7, _080F9028 @ =gRecvCmds - ldr r0, _080F902C @ =gUnknown_3005450 + ldr r0, _080F902C @ =Rfu adds r6, r7, 0 ldr r1, _080F9030 @ =0x0000093f adds r5, r0, r1 @@ -1269,7 +1269,7 @@ _080F8FF4: bx r0 .align 2, 0 _080F9028: .4byte gRecvCmds -_080F902C: .4byte gUnknown_3005450 +_080F902C: .4byte Rfu _080F9030: .4byte 0x0000093f _080F9034: .4byte 0x01000028 thumb_func_end sub_80F8FD4 @@ -1307,7 +1307,7 @@ _080F9068: .4byte gRecvCmds thumb_func_start sub_80F906C sub_80F906C: @ 80F906C push {r4,r5,lr} - ldr r4, _080F90CC @ =gUnknown_3005450 + ldr r4, _080F90CC @ =Rfu ldr r0, _080F90D0 @ =0x000008f4 adds r5, r4, r0 ldrb r0, [r5] @@ -1332,7 +1332,7 @@ _080F909A: cmp r2, 0 bne _080F90C4 _080F909E: - ldr r5, _080F90CC @ =gUnknown_3005450 + ldr r5, _080F90CC @ =Rfu ldr r1, _080F90D0 @ =0x000008f4 adds r0, r5, r1 ldrb r0, [r0] @@ -1354,7 +1354,7 @@ _080F90C4: pop {r0} bx r0 .align 2, 0 -_080F90CC: .4byte gUnknown_3005450 +_080F90CC: .4byte Rfu _080F90D0: .4byte 0x000008f4 _080F90D4: .4byte 0x000008d4 _080F90D8: .4byte 0x000008f2 @@ -1403,7 +1403,7 @@ _080F9118: .4byte gRecvCmds thumb_func_start sub_80F911C sub_80F911C: @ 80F911C push {r4-r6,lr} - ldr r6, _080F9138 @ =gUnknown_3005450 + ldr r6, _080F9138 @ =Rfu ldrh r0, [r6, 0x4] cmp r0, 0x13 bhi _080F913C @@ -1413,7 +1413,7 @@ sub_80F911C: @ 80F911C bl LinkRfu_REQ_SendData_HandleParentRelationship b _080F91F6 .align 2, 0 -_080F9138: .4byte gUnknown_3005450 +_080F9138: .4byte Rfu _080F913C: ldr r0, _080F9198 @ =0x00000993 adds r1, r6, r0 @@ -1478,7 +1478,7 @@ _080F91C4: .4byte gUnknown_3005E10 _080F91C8: .4byte gReceivedRemoteLinkPlayers _080F91CC: bl sub_80F8FD4 - ldr r0, _080F91E4 @ =gUnknown_3005450 + ldr r0, _080F91E4 @ =Rfu ldr r1, _080F91E8 @ =0x00000992 adds r0, r1 ldrb r0, [r0] @@ -1487,12 +1487,12 @@ _080F91CC: bl LinkRfu_REQ_SendData_HandleParentRelationship b _080F91F0 .align 2, 0 -_080F91E4: .4byte gUnknown_3005450 +_080F91E4: .4byte Rfu _080F91E8: .4byte 0x00000992 _080F91EC: bl rfu_REQ_PARENT_resumeRetransmitAndChange _080F91F0: - ldr r1, _080F9200 @ =gUnknown_3005450 + ldr r1, _080F9200 @ =Rfu movs r0, 0x1 strb r0, [r1, 0xE] _080F91F6: @@ -1501,7 +1501,7 @@ _080F91F6: pop {r1} bx r1 .align 2, 0 -_080F9200: .4byte gUnknown_3005450 +_080F9200: .4byte Rfu thumb_func_end sub_80F911C thumb_func_start sub_80F9204 @@ -1512,7 +1512,7 @@ sub_80F9204: @ 80F9204 mov r5, r8 push {r5-r7} sub sp, 0x8 - ldr r0, _080F92E4 @ =gUnknown_3005450 + ldr r0, _080F92E4 @ =Rfu ldrh r1, [r0, 0x4] adds r6, r0, 0 cmp r1, 0x13 @@ -1545,7 +1545,7 @@ _080F9244: bl rfu_REQ_recvData bl rfu_waitREQComplete ldr r2, _080F92EC @ =gUnknown_3005E10 - ldr r4, _080F92E4 @ =gUnknown_3005450 + ldr r4, _080F92E4 @ =Rfu ldr r1, _080F92F0 @ =0x0000099a adds r0, r4, r1 ldrb r1, [r2, 0x3] @@ -1577,7 +1577,7 @@ _080F9276: bne _080F9288 b _080F9388 _080F9288: - ldr r1, _080F92E4 @ =gUnknown_3005450 + ldr r1, _080F92E4 @ =Rfu lsls r2, r5, 3 subs r0, r2, r5 lsls r4, r0, 1 @@ -1623,7 +1623,7 @@ _080F9288: bl sub_80FB0E8 b _080F9380 .align 2, 0 -_080F92E4: .4byte gUnknown_3005450 +_080F92E4: .4byte Rfu _080F92E8: .4byte 0x00000993 _080F92EC: .4byte gUnknown_3005E10 _080F92F0: .4byte 0x0000099a @@ -1632,7 +1632,7 @@ _080F92F8: .4byte gUnknown_203AC08 _080F92FC: .4byte 0x000009a6 _080F9300: .4byte 0x000009a2 _080F9304: - ldr r2, _080F9444 @ =gUnknown_3005450 + ldr r2, _080F9444 @ =Rfu ldr r6, _080F9448 @ =0x000009a6 adds r1, r2, r6 adds r1, r5, r1 @@ -1644,7 +1644,7 @@ _080F9304: ldrb r0, [r2] lsrs r0, 5 strb r0, [r1] - ldr r1, _080F9444 @ =gUnknown_3005450 + ldr r1, _080F9444 @ =Rfu subs r6, 0x4 adds r0, r1, r6 adds r0, r5, r0 @@ -1654,7 +1654,7 @@ _080F9304: movs r0, 0x1F ands r0, r1 strb r0, [r2] - ldr r2, _080F944C @ =gUnknown_3005DE6 + ldr r2, _080F944C @ =Rfu+0x996 adds r0, r5, r2 ldrb r0, [r0] movs r6, 0 @@ -1714,7 +1714,7 @@ _080F939A: movs r0, 0 bl sub_80F9868 bl sub_80FA510 - ldr r4, _080F9444 @ =gUnknown_3005450 + ldr r4, _080F9444 @ =Rfu ldr r1, _080F9454 @ =0x0000099d adds r0, r4, r1 ldrb r0, [r0] @@ -1788,9 +1788,9 @@ _080F93FA: bl CreateTask b _080F9476 .align 2, 0 -_080F9444: .4byte gUnknown_3005450 +_080F9444: .4byte Rfu _080F9448: .4byte 0x000009a6 -_080F944C: .4byte gUnknown_3005DE6 +_080F944C: .4byte Rfu+0x996 _080F9450: .4byte gRecvCmds _080F9454: .4byte 0x0000099d _080F9458: .4byte 0x00000991 @@ -1806,7 +1806,7 @@ _080F9468: strb r0, [r1] strb r2, [r4, 0xE] _080F9476: - ldr r1, _080F949C @ =gUnknown_3005450 + ldr r1, _080F949C @ =Rfu movs r0, 0 strb r0, [r1, 0xE] adds r6, r1, 0 @@ -1825,7 +1825,7 @@ _080F947E: b _080F94AA .align 2, 0 _080F9498: .4byte 0x00000994 -_080F949C: .4byte gUnknown_3005450 +_080F949C: .4byte Rfu _080F94A0: .4byte gRfuLinkStatus _080F94A4: movs r0, 0 @@ -1851,7 +1851,7 @@ sub_80F94BC: @ 80F94BC ldrh r1, [r4] cmp r1, 0 beq _080F9500 - ldr r0, _080F94FC @ =gUnknown_3005450 + ldr r0, _080F94FC @ =Rfu movs r5, 0x81 lsls r5, 1 adds r3, r0, r5 @@ -1878,7 +1878,7 @@ _080F94E6: bge _080F94E6 b _080F950E .align 2, 0 -_080F94FC: .4byte gUnknown_3005450 +_080F94FC: .4byte Rfu _080F9500: movs r1, 0 adds r0, r2, 0 @@ -1900,7 +1900,7 @@ sub_80F9514: @ 80F9514 mov r7, r8 push {r7} sub sp, 0x58 - ldr r0, _080F9638 @ =gUnknown_3005574 + ldr r0, _080F9638 @ =Rfu+0x124 mov r1, sp bl sub_80FC6E8 movs r1, 0 @@ -1944,7 +1944,7 @@ _080F9538: ldrb r0, [r0, 0x2] cmp r0, 0 bne _080F95E4 - ldr r0, _080F9644 @ =gUnknown_3005450 + ldr r0, _080F9644 @ =Rfu ldr r2, _080F9648 @ =0x0000099c adds r0, r2 ldrb r0, [r0] @@ -1975,7 +1975,7 @@ _080F95B0: ldr r1, _080F9650 @ =gReceivedRemoteLinkPlayers movs r0, 0 strb r0, [r1] - ldr r0, _080F9644 @ =gUnknown_3005450 + ldr r0, _080F9644 @ =Rfu movs r5, 0 str r5, [r0] ldr r7, _080F9648 @ =0x0000099c @@ -1996,7 +1996,7 @@ _080F95DC: strb r5, [r0, 0x4] strb r5, [r6] _080F95E4: - ldr r6, _080F9644 @ =gUnknown_3005450 + ldr r6, _080F9644 @ =Rfu ldr r0, _080F9654 @ =0x00000988 adds r2, r6, r0 ldrb r0, [r2] @@ -2037,10 +2037,10 @@ _080F9628: pop {r1} bx r1 .align 2, 0 -_080F9638: .4byte gUnknown_3005574 +_080F9638: .4byte Rfu+0x124 _080F963C: .4byte gRecvCmds _080F9640: .4byte gUnknown_3005E10 -_080F9644: .4byte gUnknown_3005450 +_080F9644: .4byte Rfu _080F9648: .4byte 0x0000099c _080F964C: .4byte gRfuLinkStatus _080F9650: .4byte gReceivedRemoteLinkPlayers @@ -2055,7 +2055,7 @@ sub_80F965C: @ 80F965C mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, _080F9708 @ =gUnknown_3005450 + ldr r0, _080F9708 @ =Rfu ldr r2, [r0, 0x70] mov r10, r2 movs r5, 0 @@ -2115,7 +2115,7 @@ _080F96C4: adds r4, 0x1 cmp r4, 0x6 ble _080F96C4 - ldr r0, _080F9718 @ =gUnknown_3005AF0 + ldr r0, _080F9718 @ =Rfu+0x6a0 mov r1, r12 bl sub_80FC63C movs r1, 0x1 @@ -2127,7 +2127,7 @@ _080F96C4: _080F96EC: adds r1, r7, 0 adds r5, r6, 0 - ldr r3, _080F971C @ =gUnknown_30054BE + ldr r3, _080F971C @ =Rfu+0x6e ldrh r3, [r3] cmp r5, r3 blt _080F967E @@ -2140,12 +2140,12 @@ _080F96F8: pop {r0} bx r0 .align 2, 0 -_080F9708: .4byte gUnknown_3005450 +_080F9708: .4byte Rfu _080F970C: .4byte gUnknown_3002008 _080F9710: .4byte 0xffff8900 _080F9714: .4byte gUnknown_3001FF8 -_080F9718: .4byte gUnknown_3005AF0 -_080F971C: .4byte gUnknown_30054BE +_080F9718: .4byte Rfu+0x6a0 +_080F971C: .4byte Rfu+0x6e thumb_func_end sub_80F965C thumb_func_start Rfu_SetBlockReceivedFlag @@ -2153,7 +2153,7 @@ Rfu_SetBlockReceivedFlag: @ 80F9720 push {lr} lsls r0, 24 lsrs r1, r0, 24 - ldr r0, _080F973C @ =gUnknown_3005450 + ldr r0, _080F973C @ =Rfu ldrb r2, [r0, 0xC] cmp r2, 0x1 bne _080F9740 @@ -2164,7 +2164,7 @@ Rfu_SetBlockReceivedFlag: @ 80F9720 strb r2, [r0] b _080F9748 .align 2, 0 -_080F973C: .4byte gUnknown_3005450 +_080F973C: .4byte Rfu _080F9740: adds r0, 0x5C adds r0, r1, r0 @@ -2179,7 +2179,7 @@ _080F9748: Rfu_ResetBlockReceivedFlag: @ 80F974C lsls r0, 24 lsrs r0, 24 - ldr r3, _080F976C @ =gUnknown_3005450 + ldr r3, _080F976C @ =Rfu adds r1, r3, 0 adds r1, 0x5C adds r1, r0, r1 @@ -2193,14 +2193,14 @@ Rfu_ResetBlockReceivedFlag: @ 80F974C strb r2, [r1] bx lr .align 2, 0 -_080F976C: .4byte gUnknown_3005450 +_080F976C: .4byte Rfu 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 + ldr r0, _080F9784 @ =Rfu ldrb r1, [r0, 0xC] adds r5, r0, 0 cmp r1, 0x1 @@ -2208,7 +2208,7 @@ sub_80F9770: @ 80F9770 movs r0, 0 b _080F97AA .align 2, 0 -_080F9784: .4byte gUnknown_3005450 +_080F9784: .4byte Rfu _080F9788: movs r2, 0 ldr r0, _080F97B0 @ =0x00000996 @@ -2285,7 +2285,7 @@ _080F9804: .4byte gUnknown_3005440 IsSendingKeysToRfu: @ 80F9808 push {lr} movs r2, 0 - ldr r0, _080F9820 @ =gUnknown_3005450 + ldr r0, _080F9820 @ =Rfu ldr r1, [r0] ldr r0, _080F9824 @ =rfu_func_080F97B8 cmp r1, r0 @@ -2296,14 +2296,14 @@ _080F9818: pop {r1} bx r1 .align 2, 0 -_080F9820: .4byte gUnknown_3005450 +_080F9820: .4byte Rfu _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 r4, _080F9848 @ =Rfu ldr r0, [r4] cmp r0, 0 beq _080F983E @@ -2319,7 +2319,7 @@ _080F983E: pop {r0} bx r0 .align 2, 0 -_080F9848: .4byte gUnknown_3005450 +_080F9848: .4byte Rfu _080F984C: .4byte gUnknown_843ED94 _080F9850: .4byte 0x000005c1 _080F9854: .4byte gUnknown_843EDC4 @@ -2328,12 +2328,12 @@ _080F9858: .4byte rfu_func_080F97B8 thumb_func_start Rfu_set_zero Rfu_set_zero: @ 80F985C - ldr r1, _080F9864 @ =gUnknown_3005450 + ldr r1, _080F9864 @ =Rfu movs r0, 0 str r0, [r1] bx lr .align 2, 0 -_080F9864: .4byte gUnknown_3005450 +_080F9864: .4byte Rfu thumb_func_end Rfu_set_zero thumb_func_start sub_80F9868 @@ -2425,7 +2425,7 @@ _080F98F6: _080F9900: b _080F9BF4 _080F9902: - ldr r4, _080F993C @ =gUnknown_3005450 + ldr r4, _080F993C @ =Rfu ldrb r0, [r4, 0xC] cmp r0, 0 bne _080F9914 @@ -2447,23 +2447,23 @@ _080F9924: ldr r1, _080F9948 @ =gRecvCmds + 2 adds r0, r2, r1 ldrh r0, [r0] - ldr r3, _080F993C @ =gUnknown_3005450 + ldr r3, _080F993C @ =Rfu strb r0, [r3, 0xD] ldr r4, _080F994C @ =gRecvCmds + 4 adds r0, r2, r4 bl sub_80F9770 - ldr r1, _080F9950 @ =gUnknown_3005DD6 + ldr r1, _080F9950 @ =Rfu+0x986 strb r0, [r1] b _080F9BF8 .align 2, 0 -_080F993C: .4byte gUnknown_3005450 +_080F993C: .4byte Rfu _080F9940: .4byte gReceivedRemoteLinkPlayers _080F9944: .4byte gRfuLinkStatus _080F9948: .4byte gRecvCmds + 2 _080F994C: .4byte gRecvCmds + 4 -_080F9950: .4byte gUnknown_3005DD6 +_080F9950: .4byte Rfu+0x986 _080F9954: - ldr r2, _080F99AC @ =gUnknown_3005450 + ldr r2, _080F99AC @ =Rfu mov r9, r2 mov r3, r8 lsls r0, r3, 2 @@ -2509,11 +2509,11 @@ _080F9974: strb r2, [r0] b _080F9BF8 .align 2, 0 -_080F99AC: .4byte gUnknown_3005450 +_080F99AC: .4byte Rfu _080F99B0: .4byte gRecvCmds + 2 _080F99B4: .4byte gRecvCmds + 4 _080F99B8: - ldr r4, _080F9A88 @ =gUnknown_3005450 + ldr r4, _080F9A88 @ =Rfu mov r9, r4 mov r0, r8 lsls r1, r0, 2 @@ -2570,7 +2570,7 @@ _080F99FE: lsrs r4, r2, 16 cmp r4, 0x5 bls _080F99FE - ldr r4, _080F9A88 @ =gUnknown_3005450 + ldr r4, _080F9A88 @ =Rfu mov r0, r10 add r0, r8 lsls r0, 2 @@ -2621,7 +2621,7 @@ _080F9A80: bl sub_80FAA58 b _080F9BF8 .align 2, 0 -_080F9A88: .4byte gUnknown_3005450 +_080F9A88: .4byte Rfu _080F9A8C: .4byte gBlockRecvBuffer _080F9A90: .4byte gRecvCmds _080F9A94: .4byte gUnknown_843EBD4 @@ -2643,15 +2643,15 @@ _080F9A9C: _080F9AB8: .4byte gUnknown_843EC64 _080F9ABC: .4byte gRecvCmds + 2 _080F9AC0: - ldr r1, _080F9ACC @ =gUnknown_3005534 + ldr r1, _080F9ACC @ =Rfu+0xe4 add r1, r8 movs r0, 0x1 strb r0, [r1] b _080F9BF4 .align 2, 0 -_080F9ACC: .4byte gUnknown_3005534 +_080F9ACC: .4byte Rfu+0xe4 _080F9AD0: - ldr r2, _080F9AF8 @ =gUnknown_3005450 + ldr r2, _080F9AF8 @ =Rfu movs r4, 0x80 lsls r4, 1 adds r0, r2, r4 @@ -2672,10 +2672,10 @@ _080F9AEA: strb r1, [r0] b _080F9BF8 .align 2, 0 -_080F9AF8: .4byte gUnknown_3005450 +_080F9AF8: .4byte Rfu _080F9AFC: .4byte gRecvCmds + 2 _080F9B00: - ldr r7, _080F9B4C @ =gUnknown_3005450 + ldr r7, _080F9B4C @ =Rfu ldrb r2, [r7, 0xC] cmp r2, 0 bne _080F9B68 @@ -2712,7 +2712,7 @@ _080F9B38: bl sub_80FA9D0 b _080F9BF8 .align 2, 0 -_080F9B4C: .4byte gUnknown_3005450 +_080F9B4C: .4byte Rfu _080F9B50: .4byte gReceivedRemoteLinkPlayers _080F9B54: .4byte gRecvCmds + 2 _080F9B58: .4byte gRfuLinkStatus @@ -2744,7 +2744,7 @@ _080F9B94: .4byte gRecvCmds + 2 _080F9B98: .4byte gRecvCmds + 4 _080F9B9C: .4byte gRecvCmds _080F9BA0: - ldr r4, _080F9BD0 @ =gUnknown_3005450 + ldr r4, _080F9BD0 @ =Rfu ldrb r0, [r4, 0xC] mov r6, r8 adds r6, 0x1 @@ -2768,7 +2768,7 @@ _080F9BA0: bl sub_80FA9D0 b _080F9BF8 .align 2, 0 -_080F9BD0: .4byte gUnknown_3005450 +_080F9BD0: .4byte Rfu _080F9BD4: .4byte 0x0000099b _080F9BD8: .4byte gRecvCmds + 2 _080F9BDC: .4byte gRecvCmds + 4 @@ -2786,7 +2786,7 @@ _080F9BF4: mov r6, r8 adds r6, 0x1 _080F9BF8: - ldr r3, _080F9C2C @ =gUnknown_3005450 + ldr r3, _080F9C2C @ =Rfu ldrb r4, [r3, 0xC] cmp r4, 0x1 bne _080F9C34 @@ -2810,7 +2810,7 @@ _080F9BF8: .align 2, 0 _080F9C24: .4byte gLinkPartnersHeldKeys _080F9C28: .4byte gRecvCmds + 2 -_080F9C2C: .4byte gUnknown_3005450 +_080F9C2C: .4byte Rfu _080F9C30: adds r0, 0x1 strb r0, [r2] @@ -2835,7 +2835,7 @@ _080F9C40: sub_80F9C50: @ 80F9C50 push {lr} movs r2, 0 - ldr r0, _080F9C64 @ =gUnknown_3005450 + ldr r0, _080F9C64 @ =Rfu adds r1, r0, 0 adds r1, 0x92 _080F9C5A: @@ -2845,7 +2845,7 @@ _080F9C5A: movs r0, 0 b _080F9C72 .align 2, 0 -_080F9C64: .4byte gUnknown_3005450 +_080F9C64: .4byte Rfu _080F9C68: adds r1, 0x14 adds r2, 0x1 @@ -2861,7 +2861,7 @@ _080F9C72: sub_80F9C78: @ 80F9C78 push {r4,lr} movs r1, 0 - ldr r2, _080F9CA0 @ =gUnknown_3005450 + ldr r2, _080F9CA0 @ =Rfu ldrb r0, [r2, 0xD] cmp r1, r0 bge _080F9CAC @@ -2881,7 +2881,7 @@ _080F9C9A: movs r0, 0 b _080F9CAE .align 2, 0 -_080F9CA0: .4byte gUnknown_3005450 +_080F9CA0: .4byte Rfu _080F9CA4: adds r3, 0x14 adds r1, 0x1 @@ -2914,7 +2914,7 @@ Rfu_GetBlockReceivedStatus: @ 80F9CC8 push {r4,lr} movs r2, 0 movs r1, 0 - ldr r0, _080F9D00 @ =gUnknown_3005450 + ldr r0, _080F9D00 @ =Rfu adds r3, r0, 0 adds r3, 0x92 adds r4, r0, 0 @@ -2941,7 +2941,7 @@ _080F9CEE: pop {r1} bx r1 .align 2, 0 -_080F9D00: .4byte gUnknown_3005450 +_080F9D00: .4byte Rfu thumb_func_end Rfu_GetBlockReceivedStatus thumb_func_start sub_80F9D04 @@ -2998,7 +2998,7 @@ _080F9D4A: beq _080F9D80 b _080F9E22 _080F9D68: - ldr r0, _080F9D7C @ =gUnknown_3005450 + ldr r0, _080F9D7C @ =Rfu adds r1, r0, 0 adds r1, 0x6E ldrh r1, [r1] @@ -3009,20 +3009,20 @@ _080F9D68: strh r0, [r5, 0x4] b _080F9E22 .align 2, 0 -_080F9D7C: .4byte gUnknown_3005450 +_080F9D7C: .4byte Rfu _080F9D80: bl sub_80F9C50 lsls r0, 24 cmp r0, 0 beq _080F9E22 - ldr r0, _080F9D94 @ =gUnknown_3005450 + ldr r0, _080F9D94 @ =Rfu adds r0, 0x5A ldrb r0, [r0] b _080F9E20 .align 2, 0 -_080F9D94: .4byte gUnknown_3005450 +_080F9D94: .4byte Rfu _080F9D98: - ldr r3, _080F9DD4 @ =gUnknown_3005450 + ldr r3, _080F9DD4 @ =Rfu ldr r1, _080F9DD8 @ =0x0000099a adds r0, r3, r1 ldr r2, _080F9DDC @ =0x0000099b @@ -3053,13 +3053,13 @@ _080F9DBE: bls _080F9DBE b _080F9E22 .align 2, 0 -_080F9DD4: .4byte gUnknown_3005450 +_080F9DD4: .4byte Rfu _080F9DD8: .4byte 0x0000099a _080F9DDC: .4byte 0x0000099b _080F9DE0: .4byte gUnknown_843EC41 _080F9DE4: .4byte 0x00000996 _080F9DE8: - ldr r0, _080F9DF8 @ =gUnknown_3005450 + ldr r0, _080F9DF8 @ =Rfu movs r1, 0x80 lsls r1, 1 adds r0, r1 @@ -3067,10 +3067,10 @@ _080F9DE8: strh r0, [r4, 0x2] b _080F9E22 .align 2, 0 -_080F9DF8: .4byte gUnknown_3005450 +_080F9DF8: .4byte Rfu _080F9DFC: movs r4, 0 - ldr r3, _080F9E18 @ =gUnknown_3005542 + ldr r3, _080F9E18 @ =Rfu+0xf2 _080F9E00: adds r2, r4, 0x1 lsls r1, r2, 1 @@ -3085,7 +3085,7 @@ _080F9E00: bls _080F9E00 b _080F9E22 .align 2, 0 -_080F9E18: .4byte gUnknown_3005542 +_080F9E18: .4byte Rfu+0xf2 _080F9E1C: ldr r0, _080F9E28 @ =gHeldKeyCodeToSend ldrh r0, [r0] @@ -3110,7 +3110,7 @@ sub_80F9E2C: @ 80F9E2C bl sub_80FBA00 cmp r0, 0 bne _080F9E52 - ldr r0, _080F9E5C @ =gUnknown_3005542 + ldr r0, _080F9E5C @ =Rfu+0xf2 adds r1, r4, 0 movs r2, 0xC bl memcpy @@ -3123,7 +3123,7 @@ _080F9E52: bx r0 .align 2, 0 _080F9E58: .4byte gSendCmd -_080F9E5C: .4byte gUnknown_3005542 +_080F9E5C: .4byte Rfu+0xf2 thumb_func_end sub_80F9E2C thumb_func_start Rfu_InitBlockSend @@ -3142,7 +3142,7 @@ Rfu_InitBlockSend: @ 80F9E60 movs r3, 0x1 bl AGBAssert _080F9E7C: - ldr r5, _080F9EB4 @ =gUnknown_3005450 + ldr r5, _080F9EB4 @ =Rfu ldr r0, [r5] cmp r0, 0 bne _080F9EA4 @@ -3169,7 +3169,7 @@ _080F9EA4: _080F9EA8: .4byte gUnknown_843ED94 _080F9EAC: .4byte 0x00000701 _080F9EB0: .4byte gUnknown_843EDD8 -_080F9EB4: .4byte gUnknown_3005450 +_080F9EB4: .4byte Rfu _080F9EB8: .4byte gSendCmd _080F9EBC: .4byte gUnknown_203AC08 _080F9EC0: @@ -3217,7 +3217,7 @@ _080F9F14: movs r0, 0x88 lsls r0, 8 bl sub_80F9D04 - ldr r0, _080F9F3C @ =gUnknown_3005450 + ldr r0, _080F9F3C @ =Rfu ldr r1, _080F9F40 @ =rfufunc_80F9F44 str r1, [r0] adds r0, 0x5B @@ -3233,7 +3233,7 @@ _080F9F2A: bx r1 .align 2, 0 _080F9F38: .4byte gBlockSendBuffer -_080F9F3C: .4byte gUnknown_3005450 +_080F9F3C: .4byte Rfu _080F9F40: .4byte rfufunc_80F9F44 thumb_func_end Rfu_InitBlockSend @@ -3248,7 +3248,7 @@ rfufunc_80F9F44: @ 80F9F44 lsls r5, 8 adds r0, r5, 0 bl sub_80F9D04 - ldr r4, _080F9F78 @ =gUnknown_3005450 + ldr r4, _080F9F78 @ =Rfu ldrb r0, [r4, 0xC] cmp r0, 0x1 bne _080F9F7C @@ -3264,7 +3264,7 @@ rfufunc_80F9F44: @ 80F9F44 b _080F9F94 .align 2, 0 _080F9F74: .4byte gSendCmd -_080F9F78: .4byte gUnknown_3005450 +_080F9F78: .4byte Rfu _080F9F7C: bl GetMultiplayerId ldr r1, _080F9FA0 @ =gRecvCmds @@ -3292,7 +3292,7 @@ _080F9FA4: .4byte sub_80F9FA8 thumb_func_start sub_80F9FA8 sub_80F9FA8: @ 80F9FA8 push {r4-r6,lr} - ldr r0, _080FA014 @ =gUnknown_3005450 + ldr r0, _080FA014 @ =Rfu mov r12, r0 ldr r5, [r0, 0x70] ldr r3, _080FA018 @ =gSendCmd @@ -3347,7 +3347,7 @@ _080FA00C: pop {r0} bx r0 .align 2, 0 -_080FA014: .4byte gUnknown_3005450 +_080FA014: .4byte Rfu _080FA018: .4byte gSendCmd _080FA01C: .4byte rfufunc_80FA020 thumb_func_end sub_80F9FA8 @@ -3358,7 +3358,7 @@ rfufunc_80FA020: @ 80FA020 mov r7, r9 mov r6, r8 push {r6,r7} - ldr r5, _080FA0C8 @ =gUnknown_3005450 + ldr r5, _080FA0C8 @ =Rfu ldr r0, [r5, 0x70] mov r8, r0 bl GetMultiplayerId @@ -3438,7 +3438,7 @@ _080FA05C: strh r0, [r1] b _080FA0EC .align 2, 0 -_080FA0C8: .4byte gUnknown_3005450 +_080FA0C8: .4byte Rfu _080FA0CC: .4byte gSendCmd _080FA0D0: .4byte 0xffff8900 _080FA0D4: .4byte gRecvCmds @@ -3464,7 +3464,7 @@ _080FA0EC: thumb_func_start sub_80FA0F8 sub_80FA0F8: @ 80FA0F8 push {lr} - ldr r1, _080FA110 @ =gUnknown_3005450 + ldr r1, _080FA110 @ =Rfu adds r1, 0x5A strb r0, [r1] movs r0, 0xA1 @@ -3474,7 +3474,7 @@ sub_80FA0F8: @ 80FA0F8 pop {r1} bx r1 .align 2, 0 -_080FA110: .4byte gUnknown_3005450 +_080FA110: .4byte Rfu thumb_func_end sub_80FA0F8 thumb_func_start sub_80FA114 @@ -3485,7 +3485,7 @@ sub_80FA114: @ 80FA114 ldr r1, _080FA138 @ =gReceivedRemoteLinkPlayers movs r0, 0 strb r0, [r1] - ldr r2, _080FA13C @ =gUnknown_3005450 + ldr r2, _080FA13C @ =Rfu adds r3, r2, 0 adds r3, 0xEF movs r1, 0 @@ -3496,7 +3496,7 @@ sub_80FA114: @ 80FA114 bx r0 .align 2, 0 _080FA138: .4byte gReceivedRemoteLinkPlayers -_080FA13C: .4byte gUnknown_3005450 +_080FA13C: .4byte Rfu thumb_func_end sub_80FA114 thumb_func_start sub_80FA140 @@ -3519,7 +3519,7 @@ _080FA15C: .4byte gRfuLinkStatus thumb_func_start sub_80FA160 sub_80FA160: @ 80FA160 push {r4,lr} - ldr r4, _080FA178 @ =gUnknown_3005450 + ldr r4, _080FA178 @ =Rfu ldrb r0, [r4, 0xC] cmp r0, 0 bne _080FA180 @@ -3530,7 +3530,7 @@ sub_80FA160: @ 80FA160 strb r0, [r1] b _080FA184 .align 2, 0 -_080FA178: .4byte gUnknown_3005450 +_080FA178: .4byte Rfu _080FA17C: .4byte 0x0000099c _080FA180: ldr r0, _080FA18C @ =sub_80FA140 @@ -3547,7 +3547,7 @@ _080FA18C: .4byte sub_80FA140 sub_80FA190: @ 80FA190 push {lr} bl sub_80FEB14 - ldr r2, _080FA1B4 @ =gUnknown_3005450 + ldr r2, _080FA1B4 @ =Rfu ldr r0, _080FA1B8 @ =0x0000099c adds r1, r2, r0 movs r0, 0x1 @@ -3563,7 +3563,7 @@ sub_80FA190: @ 80FA190 pop {r0} bx r0 .align 2, 0 -_080FA1B4: .4byte gUnknown_3005450 +_080FA1B4: .4byte Rfu _080FA1B8: .4byte 0x0000099c _080FA1BC: .4byte gRfuLinkStatus _080FA1C0: .4byte 0x0000099b @@ -3572,7 +3572,7 @@ _080FA1C0: .4byte 0x0000099b thumb_func_start sub_80FA1C4 sub_80FA1C4: @ 80FA1C4 push {r4,r5,lr} - ldr r0, _080FA208 @ =gUnknown_3005450 + ldr r0, _080FA208 @ =Rfu ldrb r5, [r0, 0xD] movs r2, 0 movs r1, 0 @@ -3607,7 +3607,7 @@ _080FA1DE: bl sub_80FA160 b _080FA218 .align 2, 0 -_080FA208: .4byte gUnknown_3005450 +_080FA208: .4byte Rfu _080FA20C: .4byte gBattleTypeFlags _080FA210: .4byte 0x0000ffdf _080FA214: @@ -3628,7 +3628,7 @@ sub_80FA224: @ 80FA224 ldrh r0, [r0] cmp r0, 0 bne _080FA248 - ldr r4, _080FA254 @ =gUnknown_3005450 + ldr r4, _080FA254 @ =Rfu movs r1, 0x9A lsls r1, 4 adds r0, r4, r1 @@ -3646,7 +3646,7 @@ _080FA248: bx r0 .align 2, 0 _080FA250: .4byte gSendCmd -_080FA254: .4byte gUnknown_3005450 +_080FA254: .4byte Rfu _080FA258: .4byte sub_80FA1C4 thumb_func_end sub_80FA224 @@ -3655,7 +3655,7 @@ sub_80FA25C: @ 80FA25C push {lr} lsls r0, 24 lsrs r3, r0, 24 - ldr r2, _080FA280 @ =gUnknown_3005450 + ldr r2, _080FA280 @ =Rfu ldr r0, [r2] cmp r0, 0 bne _080FA27C @@ -3671,7 +3671,7 @@ _080FA27C: pop {r0} bx r0 .align 2, 0 -_080FA280: .4byte gUnknown_3005450 +_080FA280: .4byte Rfu _080FA284: .4byte 0x00000991 _080FA288: .4byte sub_80FA224 thumb_func_end sub_80FA25C @@ -3703,7 +3703,7 @@ sub_80FA2B0: @ 80FA2B0 lsls r0, 24 cmp r0, 0 beq _080FA2DE - ldr r1, _080FA348 @ =gUnknown_3005450 + ldr r1, _080FA348 @ =Rfu ldr r2, _080FA34C @ =0x0000069e adds r0, r1, r2 ldrb r0, [r0] @@ -3726,7 +3726,7 @@ _080FA2DE: movs r1, 0 cmp r1, r2 bcs _080FA30A - ldr r0, _080FA348 @ =gUnknown_3005450 + ldr r0, _080FA348 @ =Rfu adds r3, r0, 0 adds r3, 0xE9 ldrb r0, [r3] @@ -3743,7 +3743,7 @@ _080FA2F8: cmp r0, 0 bne _080FA2F8 _080FA30A: - ldr r4, _080FA348 @ =gUnknown_3005450 + ldr r4, _080FA348 @ =Rfu cmp r1, r2 bne _080FA336 movs r1, 0 @@ -3776,14 +3776,14 @@ _080FA336: pop {r0} bx r0 .align 2, 0 -_080FA348: .4byte gUnknown_3005450 +_080FA348: .4byte Rfu _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 r4, _080FA378 @ =Rfu ldr r1, _080FA37C @ =0x0000069e adds r0, r4, r1 ldrb r0, [r0] @@ -3803,7 +3803,7 @@ _080FA372: pop {r0} bx r0 .align 2, 0 -_080FA378: .4byte gUnknown_3005450 +_080FA378: .4byte Rfu _080FA37C: .4byte 0x0000069e _080FA380: .4byte gSendCmd _080FA384: .4byte sub_80FA2B0 @@ -3816,7 +3816,7 @@ sub_80FA388: @ 80FA388 lsls r0, 24 cmp r0, 0 beq _080FA3C4 - ldr r4, _080FA3B4 @ =gUnknown_3005450 + ldr r4, _080FA3B4 @ =Rfu ldr r1, _080FA3B8 @ =0x0000069e adds r0, r4, r1 ldrb r0, [r0] @@ -3832,7 +3832,7 @@ sub_80FA388: @ 80FA388 ldr r0, _080FA3C0 @ =sub_80FA2B0 b _080FA414 .align 2, 0 -_080FA3B4: .4byte gUnknown_3005450 +_080FA3B4: .4byte Rfu _080FA3B8: .4byte 0x0000069e _080FA3BC: .4byte gSendCmd _080FA3C0: .4byte sub_80FA2B0 @@ -3843,7 +3843,7 @@ _080FA3C4: movs r1, 0x1 cmp r1, r2 bcs _080FA3F2 - ldr r3, _080FA41C @ =gUnknown_3005450 + ldr r3, _080FA41C @ =Rfu adds r0, r3, 0 adds r0, 0xEA ldrb r0, [r0] @@ -3863,7 +3863,7 @@ _080FA3E0: _080FA3F2: cmp r1, r2 bne _080FA416 - ldr r4, _080FA41C @ =gUnknown_3005450 + ldr r4, _080FA41C @ =Rfu ldr r1, _080FA420 @ =0x0000069e adds r0, r4, r1 ldrb r0, [r0] @@ -3884,7 +3884,7 @@ _080FA416: pop {r0} bx r0 .align 2, 0 -_080FA41C: .4byte gUnknown_3005450 +_080FA41C: .4byte Rfu _080FA420: .4byte 0x0000069e _080FA424: .4byte gSendCmd _080FA428: .4byte sub_80FA350 @@ -3893,7 +3893,7 @@ _080FA428: .4byte sub_80FA350 thumb_func_start sub_80FA42C sub_80FA42C: @ 80FA42C push {lr} - ldr r1, _080FA444 @ =gUnknown_3005450 + ldr r1, _080FA444 @ =Rfu ldr r2, [r1] cmp r2, 0 bne _080FA440 @@ -3906,7 +3906,7 @@ _080FA440: pop {r0} bx r0 .align 2, 0 -_080FA444: .4byte gUnknown_3005450 +_080FA444: .4byte Rfu _080FA448: .4byte sub_80FA388 thumb_func_end sub_80FA42C @@ -3968,7 +3968,7 @@ _080FA4A4: thumb_func_start sub_80FA4A8 sub_80FA4A8: @ 80FA4A8 push {lr} - ldr r0, _080FA4C0 @ =gUnknown_3005450 + ldr r0, _080FA4C0 @ =Rfu ldr r1, _080FA4C4 @ =0x00000991 adds r0, r1 movs r1, 0x1 @@ -3978,14 +3978,14 @@ sub_80FA4A8: @ 80FA4A8 pop {r0} bx r0 .align 2, 0 -_080FA4C0: .4byte gUnknown_3005450 +_080FA4C0: .4byte Rfu _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 + ldr r1, _080FA4DC @ =Rfu ldrb r0, [r1, 0xC] cmp r0, 0x1 beq _080FA4E4 @@ -3994,7 +3994,7 @@ rfu_get_multiplayer_id: @ 80FA4C8 ldrb r0, [r0] b _080FA4E6 .align 2, 0 -_080FA4DC: .4byte gUnknown_3005450 +_080FA4DC: .4byte Rfu _080FA4E0: .4byte 0x00000986 _080FA4E4: movs r0, 0 @@ -4005,18 +4005,18 @@ _080FA4E6: thumb_func_start GetRfuPlayerCount GetRfuPlayerCount: @ 80FA4EC - ldr r0, _080FA4F4 @ =gUnknown_3005450 + ldr r0, _080FA4F4 @ =Rfu ldrb r0, [r0, 0xD] bx lr .align 2, 0 -_080FA4F4: .4byte gUnknown_3005450 +_080FA4F4: .4byte Rfu thumb_func_end GetRfuPlayerCount thumb_func_start IsLinkRfuTaskFinished IsLinkRfuTaskFinished: @ 80FA4F8 push {lr} movs r1, 0 - ldr r0, _080FA50C @ =gUnknown_3005450 + ldr r0, _080FA50C @ =Rfu ldr r0, [r0] cmp r0, 0 bne _080FA506 @@ -4026,13 +4026,13 @@ _080FA506: pop {r1} bx r1 .align 2, 0 -_080FA50C: .4byte gUnknown_3005450 +_080FA50C: .4byte Rfu thumb_func_end IsLinkRfuTaskFinished thumb_func_start sub_80FA510 sub_80FA510: @ 80FA510 push {lr} - ldr r0, _080FA524 @ =gUnknown_3005450 + ldr r0, _080FA524 @ =Rfu ldr r0, [r0] cmp r0, 0 beq _080FA51E @@ -4041,7 +4041,7 @@ _080FA51E: pop {r0} bx r0 .align 2, 0 -_080FA524: .4byte gUnknown_3005450 +_080FA524: .4byte Rfu thumb_func_end sub_80FA510 thumb_func_start sub_80FA528 @@ -4051,7 +4051,7 @@ sub_80FA528: @ 80FA528 push {r7} movs r7, 0 movs r5, 0 - ldr r6, _080FA594 @ =gUnknown_3005450 + ldr r6, _080FA594 @ =Rfu ldr r0, _080FA598 @ =0x000008f6 adds r0, r6 mov r8, r0 @@ -4100,7 +4100,7 @@ _080FA55E: movs r7, 0x1 b _080FA5C2 .align 2, 0 -_080FA594: .4byte gUnknown_3005450 +_080FA594: .4byte Rfu _080FA598: .4byte 0x000008f6 _080FA59C: .4byte 0x00000989 _080FA5A0: .4byte gRfuSlotStatusNI @@ -4135,7 +4135,7 @@ sub_80FA5D4: @ 80FA5D4 push {r4-r6,lr} movs r3, 0 movs r1, 0 - ldr r5, _080FA620 @ =gUnknown_3005DDD + ldr r5, _080FA620 @ =Rfu+0x98d movs r6, 0x1 movs r4, 0 _080FA5E0: @@ -4160,7 +4160,7 @@ _080FA5F4: bl rfu_waitREQComplete _080FA608: movs r1, 0 - ldr r2, _080FA620 @ =gUnknown_3005DDD + ldr r2, _080FA620 @ =Rfu+0x98d _080FA60C: adds r0, r1, r2 ldrb r0, [r0] @@ -4172,7 +4172,7 @@ _080FA60C: movs r0, 0x1 b _080FA62C .align 2, 0 -_080FA620: .4byte gUnknown_3005DDD +_080FA620: .4byte Rfu+0x98d _080FA624: adds r1, 0x1 cmp r1, 0x3 @@ -4197,7 +4197,7 @@ sub_80FA634: @ 80FA634 lsrs r1, r0, 24 cmp r1, 0xFF beq _080FA668 - ldr r0, _080FA660 @ =gUnknown_3005450 + ldr r0, _080FA660 @ =Rfu ldr r2, _080FA664 @ =0x00000989 adds r0, r2 adds r0, r1, r0 @@ -4207,7 +4207,7 @@ sub_80FA634: @ 80FA634 movs r0, 0 b _080FA66A .align 2, 0 -_080FA660: .4byte gUnknown_3005450 +_080FA660: .4byte Rfu _080FA664: .4byte 0x00000989 _080FA668: movs r0, 0x1 @@ -4229,7 +4229,7 @@ sub_80FA670: @ 80FA670 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r5, _080FA6B4 @ =gUnknown_3005450 + ldr r5, _080FA6B4 @ =Rfu ldr r0, _080FA6B8 @ =0x00000989 adds r5, r0 adds r5, r4, r5 @@ -4249,14 +4249,14 @@ sub_80FA670: @ 80FA670 pop {r0} bx r0 .align 2, 0 -_080FA6B4: .4byte gUnknown_3005450 +_080FA6B4: .4byte Rfu _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 r4, _080FA6F0 @ =Rfu ldr r0, _080FA6F4 @ =0x0000093d adds r5, r4, r0 movs r0, 0x8 @@ -4279,7 +4279,7 @@ sub_80FA6BC: @ 80FA6BC pop {r0} bx r0 .align 2, 0 -_080FA6F0: .4byte gUnknown_3005450 +_080FA6F0: .4byte Rfu _080FA6F4: .4byte 0x0000093d _080FA6F8: .4byte 0x000008f6 thumb_func_end sub_80FA6BC @@ -4323,7 +4323,7 @@ sub_80FA738: @ 80FA738 push {r4,r5,lr} bl sub_80FA528 movs r4, 0 - ldr r0, _080FA77C @ =gUnknown_3005450 + ldr r0, _080FA77C @ =Rfu ldr r1, _080FA780 @ =0x0000098d adds r5, r0, r1 _080FA746: @@ -4356,7 +4356,7 @@ _080FA770: pop {r0} bx r0 .align 2, 0 -_080FA77C: .4byte gUnknown_3005450 +_080FA77C: .4byte Rfu _080FA780: .4byte 0x0000098d _080FA784: .4byte gRfuSlotStatusNI thumb_func_end sub_80FA738 @@ -4365,7 +4365,7 @@ _080FA784: .4byte gRfuSlotStatusNI sub_80FA788: @ 80FA788 push {r4,r5,lr} movs r4, 0 - ldr r1, _080FA800 @ =gUnknown_3005450 + ldr r1, _080FA800 @ =Rfu ldr r2, _080FA804 @ =0x0000093d adds r0, r1, r2 ldrb r0, [r0] @@ -4394,7 +4394,7 @@ _080FA7BA: bl rfu_clearSlot _080FA7C2: ldr r2, _080FA808 @ =gRfuSlotStatusNI - ldr r5, _080FA800 @ =gUnknown_3005450 + ldr r5, _080FA800 @ =Rfu ldr r0, _080FA80C @ =0x000008f6 adds r1, r5, r0 ldrb r0, [r1] @@ -4423,7 +4423,7 @@ _080FA7E6: ldrb r4, [r4] b _080FA82C .align 2, 0 -_080FA800: .4byte gUnknown_3005450 +_080FA800: .4byte Rfu _080FA804: .4byte 0x0000093d _080FA808: .4byte gRfuSlotStatusNI _080FA80C: .4byte 0x000008f6 @@ -4452,7 +4452,7 @@ sub_80FA834: @ 80FA834 push {r4-r7,lr} lsls r0, 24 lsrs r6, r0, 24 - ldr r5, _080FA884 @ =gUnknown_3005450 + ldr r5, _080FA884 @ =Rfu adds r0, r5, 0 adds r0, 0xF1 ldrb r0, [r0] @@ -4489,7 +4489,7 @@ _080FA85C: beq _080FA89E b _080FA9BC .align 2, 0 -_080FA884: .4byte gUnknown_3005450 +_080FA884: .4byte Rfu _080FA888: .4byte gTasks _080FA88C: cmp r0, 0x5 @@ -4664,7 +4664,7 @@ sub_80FA9D0: @ 80FA9D0 lsrs r2, r0, 16 movs r1, 0 movs r5, 0x1 - ldr r4, _080FA9F8 @ =gUnknown_3005DE6 + ldr r4, _080FA9F8 @ =Rfu+0x996 movs r3, 0 _080FA9DE: adds r0, r2, 0 @@ -4682,14 +4682,14 @@ _080FA9EC: pop {r0} bx r0 .align 2, 0 -_080FA9F8: .4byte gUnknown_3005DE6 +_080FA9F8: .4byte Rfu+0x996 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 + ldr r1, _080FAA4C @ =Rfu ldrb r0, [r2, 0xF] strb r0, [r1, 0xD] movs r4, 0 @@ -4729,7 +4729,7 @@ _080FAA24: pop {r0} bx r0 .align 2, 0 -_080FAA4C: .4byte gUnknown_3005450 +_080FAA4C: .4byte Rfu _080FAA50: .4byte 0x00000996 _080FAA54: .4byte gLinkPlayers thumb_func_end sub_80FA9FC @@ -4770,7 +4770,7 @@ sub_80FAA94: @ 80FAA94 sub sp, 0x4 lsls r0, 24 lsrs r6, r0, 24 - ldr r3, _080FAAF4 @ =gUnknown_3005450 + ldr r3, _080FAAF4 @ =Rfu ldr r2, _080FAAF8 @ =gUnknown_843EC38 ldr r1, _080FAAFC @ =0x000009a1 adds r0, r3, r1 @@ -4816,7 +4816,7 @@ _080FAAEA: ldr r0, [r0] mov pc, r0 .align 2, 0 -_080FAAF4: .4byte gUnknown_3005450 +_080FAAF4: .4byte Rfu _080FAAF8: .4byte gUnknown_843EC38 _080FAAFC: .4byte 0x000009a1 _080FAB00: .4byte 0x00000996 @@ -4902,7 +4902,7 @@ _080FABA4: strh r2, [r1] ldrb r0, [r0, 0x2] strb r0, [r1, 0x2] - ldr r1, _080FAC48 @ =gUnknown_3005450 + ldr r1, _080FAC48 @ =Rfu ldrb r0, [r1, 0xD] strb r0, [r5, 0xF] movs r2, 0 @@ -4932,7 +4932,7 @@ _080FABC6: strh r0, [r1, 0x8] _080FABEE: ldr r5, _080FAC40 @ =gBlockSendBuffer - ldr r1, _080FAC48 @ =gUnknown_3005450 + ldr r1, _080FAC48 @ =Rfu ldrb r0, [r1, 0xD] strb r0, [r5, 0xF] movs r2, 0 @@ -4975,7 +4975,7 @@ _080FAC36: .align 2, 0 _080FAC40: .4byte gBlockSendBuffer _080FAC44: .4byte gUnknown_843EDE4 -_080FAC48: .4byte gUnknown_3005450 +_080FAC48: .4byte Rfu _080FAC4C: .4byte 0x00000996 _080FAC50: .4byte gLinkPlayers _080FAC54: .4byte gTasks @@ -5013,7 +5013,7 @@ _080FAC78: bl CpuSet movs r0, 0 bl ResetBlockReceivedFlag - ldr r1, _080FACE8 @ =gUnknown_3005450 + ldr r1, _080FACE8 @ =Rfu movs r5, 0x9A lsls r5, 4 adds r0, r1, r5 @@ -5048,7 +5048,7 @@ _080FACD6: .align 2, 0 _080FACE0: .4byte gBlockRecvBuffer _080FACE4: .4byte 0x0100007e -_080FACE8: .4byte gUnknown_3005450 +_080FACE8: .4byte Rfu _080FACEC: .4byte 0x0000099e thumb_func_end sub_80FAA94 @@ -5057,7 +5057,7 @@ sub_80FACF0: @ 80FACF0 push {r4-r6,lr} lsls r0, 24 lsrs r5, r0, 24 - ldr r6, _080FAD2C @ =gUnknown_3005450 + ldr r6, _080FAD2C @ =Rfu adds r0, r6, 0 adds r0, 0xF1 ldrb r0, [r0] @@ -5084,7 +5084,7 @@ _080FAD0E: beq _080FAD3A b _080FAD8A .align 2, 0 -_080FAD2C: .4byte gUnknown_3005450 +_080FAD2C: .4byte Rfu _080FAD30: .4byte gTasks _080FAD34: cmp r0, 0x2 @@ -5139,7 +5139,7 @@ _080FAD94: .4byte gReceivedRemoteLinkPlayers thumb_func_start sub_80FAD98 sub_80FAD98: @ 80FAD98 push {r4-r7,lr} - ldr r0, _080FAE10 @ =gUnknown_3005450 + ldr r0, _080FAE10 @ =Rfu adds r7, r0, 0 adds r7, 0xEE ldrb r1, [r7] @@ -5196,7 +5196,7 @@ _080FADF8: bl CloseLink b _080FAE62 .align 2, 0 -_080FAE10: .4byte gUnknown_3005450 +_080FAE10: .4byte Rfu _080FAE14: .4byte gUnknown_3005E10 _080FAE18: .4byte gMain _080FAE1C: .4byte c2_mystery_gift_e_reader_run @@ -5261,7 +5261,7 @@ _080FAE90: .4byte gUnknown_3005E10 sub_80FAE94: @ 80FAE94 push {r4,r5,lr} movs r5, 0 - ldr r4, _080FAEC8 @ =gUnknown_3005450 + ldr r4, _080FAEC8 @ =Rfu ldr r1, _080FAECC @ =0x00000985 adds r0, r4, r1 strb r5, [r0] @@ -5283,7 +5283,7 @@ sub_80FAE94: @ 80FAE94 beq _080FAEDC b _080FAEE8 .align 2, 0 -_080FAEC8: .4byte gUnknown_3005450 +_080FAEC8: .4byte Rfu _080FAECC: .4byte 0x00000985 _080FAED0: cmp r0, 0x2 @@ -5309,7 +5309,7 @@ _080FAEE8: sub_80FAEF0: @ 80FAEF0 push {r4,lr} movs r4, 0 - ldr r1, _080FAF18 @ =gUnknown_3005450 + ldr r1, _080FAF18 @ =Rfu adds r0, r1, 0 adds r0, 0xEF ldrb r0, [r0] @@ -5328,20 +5328,20 @@ _080FAF10: pop {r1} bx r1 .align 2, 0 -_080FAF18: .4byte gUnknown_3005450 +_080FAF18: .4byte Rfu thumb_func_end sub_80FAEF0 thumb_func_start sub_80FAF1C sub_80FAF1C: @ 80FAF1C push {lr} - ldr r0, _080FAF2C @ =gUnknown_3005E00 + ldr r0, _080FAF2C @ =Rfu+0x9b0 ldr r1, _080FAF30 @ =gSaveBlock2Ptr ldr r1, [r1] bl StringCopy pop {r0} bx r0 .align 2, 0 -_080FAF2C: .4byte gUnknown_3005E00 +_080FAF2C: .4byte Rfu+0x9b0 _080FAF30: .4byte gSaveBlock2Ptr thumb_func_end sub_80FAF1C @@ -5452,7 +5452,7 @@ sub_80FAFE0: @ 80FAFE0 ands r1, r3 orrs r1, r0 strb r1, [r2, 0xA] - ldr r3, _080FB004 @ =gUnknown_3005E00 + ldr r3, _080FB004 @ =Rfu+0x9b0 movs r0, 0 movs r1, 0x2 bl rfu_REQ_configGameData @@ -5460,7 +5460,7 @@ sub_80FAFE0: @ 80FAFE0 bx r0 .align 2, 0 _080FB000: .4byte gUnknown_3005440 -_080FB004: .4byte gUnknown_3005E00 +_080FB004: .4byte Rfu+0x9b0 thumb_func_end sub_80FAFE0 thumb_func_start sub_80FB008 @@ -5473,7 +5473,7 @@ sub_80FB008: @ 80FB008 bl sub_80FAF58 _080FB016: ldr r2, _080FB028 @ =gUnknown_3005440 - ldr r3, _080FB02C @ =gUnknown_3005E00 + ldr r3, _080FB02C @ =Rfu+0x9b0 movs r0, 0 movs r1, 0x2 bl rfu_REQ_configGameData @@ -5481,7 +5481,7 @@ _080FB016: bx r0 .align 2, 0 _080FB028: .4byte gUnknown_3005440 -_080FB02C: .4byte gUnknown_3005E00 +_080FB02C: .4byte Rfu+0x9b0 thumb_func_end sub_80FB008 thumb_func_start sub_80FB030 @@ -5500,7 +5500,7 @@ sub_80FB030: @ 80FB030 bne _080FB0C4 movs r5, 0 movs r7, 0 - ldr r3, _080FB0D4 @ =gUnknown_3005450 + ldr r3, _080FB0D4 @ =Rfu ldr r1, _080FB0D8 @ =0x0000099a adds r0, r3, r1 ldr r2, _080FB0DC @ =0x0000099b @@ -5570,7 +5570,7 @@ _080FB0C4: pop {r0} bx r0 .align 2, 0 -_080FB0D4: .4byte gUnknown_3005450 +_080FB0D4: .4byte Rfu _080FB0D8: .4byte 0x0000099a _080FB0DC: .4byte 0x0000099b _080FB0E0: .4byte gLinkPlayers @@ -5581,7 +5581,7 @@ _080FB0E4: .4byte 0x00000996 sub_80FB0E8: @ 80FB0E8 push {r4,lr} adds r4, r0, 0 - ldr r2, _080FB110 @ =gUnknown_3005450 + ldr r2, _080FB110 @ =Rfu adds r3, r2, 0 adds r3, 0xEE ldrb r0, [r3] @@ -5601,20 +5601,20 @@ _080FB10A: pop {r0} bx r0 .align 2, 0 -_080FB110: .4byte gUnknown_3005450 +_080FB110: .4byte Rfu _080FB114: .4byte gUnknown_3005E10 thumb_func_end sub_80FB0E8 thumb_func_start sub_80FB118 sub_80FB118: @ 80FB118 - ldr r0, _080FB124 @ =gUnknown_3005450 + ldr r0, _080FB124 @ =Rfu adds r0, 0xEE ldrb r1, [r0] movs r1, 0 strb r1, [r0] bx lr .align 2, 0 -_080FB124: .4byte gUnknown_3005450 +_080FB124: .4byte Rfu thumb_func_end sub_80FB118 thumb_func_start sub_80FB128 @@ -5623,15 +5623,15 @@ sub_80FB128: @ 80FB128 adds r2, r0, 0 cmp r2, 0 bne _080FB140 - ldr r0, _080FB13C @ =gUnknown_3005450 + ldr r0, _080FB13C @ =Rfu adds r0, 0xEE ldrb r1, [r0] strb r2, [r0] b _080FB14A .align 2, 0 -_080FB13C: .4byte gUnknown_3005450 +_080FB13C: .4byte Rfu _080FB140: - ldr r0, _080FB150 @ =gUnknown_3005450 + ldr r0, _080FB150 @ =Rfu adds r0, 0xEE ldrb r1, [r0] movs r1, 0x4 @@ -5640,7 +5640,7 @@ _080FB14A: pop {r0} bx r0 .align 2, 0 -_080FB150: .4byte gUnknown_3005450 +_080FB150: .4byte Rfu thumb_func_end sub_80FB128 thumb_func_start sub_80FB154 @@ -5650,24 +5650,24 @@ sub_80FB154: @ 80FB154 ldrb r0, [r0] movs r1, 0x1 bl sub_80FBE20 - ldr r1, _080FB170 @ =gUnknown_3005450 + ldr r1, _080FB170 @ =Rfu movs r0, 0 str r0, [r1] pop {r0} bx r0 .align 2, 0 _080FB16C: .4byte gUnknown_3005E10 -_080FB170: .4byte gUnknown_3005450 +_080FB170: .4byte Rfu thumb_func_end sub_80FB154 thumb_func_start sub_80FB174 sub_80FB174: @ 80FB174 - ldr r1, _080FB17C @ =gUnknown_3005450 + ldr r1, _080FB17C @ =Rfu ldr r0, _080FB180 @ =sub_80FB154 str r0, [r1] bx lr .align 2, 0 -_080FB17C: .4byte gUnknown_3005450 +_080FB17C: .4byte Rfu _080FB180: .4byte sub_80FB154 thumb_func_end sub_80FB174 @@ -5745,12 +5745,12 @@ _080FB1EE: _080FB1F4: b _080FB366 _080FB1F6: - ldr r1, _080FB200 @ =gUnknown_3005450 + ldr r1, _080FB200 @ =Rfu movs r0, 0x2 strh r0, [r1, 0x4] b _080FB366 .align 2, 0 -_080FB200: .4byte gUnknown_3005450 +_080FB200: .4byte Rfu _080FB204: ldr r0, _080FB268 @ =gUnknown_3005E10 ldrh r0, [r0, 0x14] @@ -5758,7 +5758,7 @@ _080FB204: movs r5, 0 movs r0, 0x1 mov r8, r0 - ldr r1, _080FB26C @ =gUnknown_3005450 + ldr r1, _080FB26C @ =Rfu mov r9, r1 ldr r3, _080FB270 @ =0x0000098d add r3, r9 @@ -5801,7 +5801,7 @@ _080FB21E: b _080FB286 .align 2, 0 _080FB268: .4byte gUnknown_3005E10 -_080FB26C: .4byte gUnknown_3005450 +_080FB26C: .4byte Rfu _080FB270: .4byte 0x0000098d _080FB274: .4byte gRfuLinkStatus _080FB278: .4byte 0x00000989 @@ -5824,7 +5824,7 @@ _080FB286: bl rfu_waitREQComplete b _080FB366 _080FB2A0: - ldr r4, _080FB2C0 @ =gUnknown_3005450 + ldr r4, _080FB2C0 @ =Rfu ldr r1, _080FB2C4 @ =0x0000099f adds r0, r4, r1 ldr r1, _080FB2C8 @ =gUnknown_3005E10 @@ -5840,24 +5840,24 @@ _080FB2BA: strh r0, [r4, 0x4] b _080FB366 .align 2, 0 -_080FB2C0: .4byte gUnknown_3005450 +_080FB2C0: .4byte Rfu _080FB2C4: .4byte 0x0000099f _080FB2C8: .4byte gUnknown_3005E10 _080FB2CC: - ldr r0, _080FB2D4 @ =gUnknown_3005450 + ldr r0, _080FB2D4 @ =Rfu adds r0, 0xF0 b _080FB362 .align 2, 0 -_080FB2D4: .4byte gUnknown_3005450 +_080FB2D4: .4byte Rfu _080FB2D8: - ldr r0, _080FB2E0 @ =gUnknown_3005450 + ldr r0, _080FB2E0 @ =Rfu adds r0, 0xF0 movs r1, 0x3 b _080FB364 .align 2, 0 -_080FB2E0: .4byte gUnknown_3005450 +_080FB2E0: .4byte Rfu _080FB2E4: - ldr r1, _080FB314 @ =gUnknown_3005450 + ldr r1, _080FB314 @ =Rfu adds r2, r1, 0 adds r2, 0xF0 movs r0, 0x4 @@ -5881,7 +5881,7 @@ _080FB2E4: bl sub_80FB0E8 b _080FB328 .align 2, 0 -_080FB314: .4byte gUnknown_3005450 +_080FB314: .4byte Rfu _080FB318: .4byte 0x0000099a _080FB31C: .4byte gUnknown_3005E10 _080FB320: .4byte gReceivedRemoteLinkPlayers @@ -5898,18 +5898,18 @@ _080FB332: bl sub_80FB9E4 movs r0, 0xF3 bl sub_80FB0E8 - ldr r0, _080FB348 @ =gUnknown_3005450 + ldr r0, _080FB348 @ =Rfu adds r0, 0xEF b _080FB362 .align 2, 0 -_080FB348: .4byte gUnknown_3005450 +_080FB348: .4byte Rfu _080FB34C: adds r0, r4, 0 bl sub_80FB0E8 movs r0, 0x1 adds r1, r4, 0 bl sub_80FB9E4 - ldr r0, _080FB374 @ =gUnknown_3005450 + ldr r0, _080FB374 @ =Rfu ldr r1, _080FB378 @ =0x00000993 adds r0, r1 ldrb r1, [r0] @@ -5926,7 +5926,7 @@ _080FB366: pop {r0} bx r0 .align 2, 0 -_080FB374: .4byte gUnknown_3005450 +_080FB374: .4byte Rfu _080FB378: .4byte 0x00000993 thumb_func_end sub_80FB184 @@ -5997,25 +5997,25 @@ _080FB3DE: _080FB3E4: b _080FB556 _080FB3E6: - ldr r1, _080FB3F0 @ =gUnknown_3005450 + ldr r1, _080FB3F0 @ =Rfu movs r0, 0x6 strh r0, [r1, 0x4] b _080FB556 .align 2, 0 -_080FB3F0: .4byte gUnknown_3005450 +_080FB3F0: .4byte Rfu _080FB3F4: - ldr r0, _080FB400 @ =gUnknown_3005450 + ldr r0, _080FB400 @ =Rfu 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 +_080FB400: .4byte Rfu _080FB404: .4byte gUnknown_3005E10 _080FB408: .4byte 0x00000985 _080FB40C: - ldr r0, _080FB41C @ =gUnknown_3005450 + ldr r0, _080FB41C @ =Rfu ldr r1, _080FB420 @ =gUnknown_3005E10 ldrh r1, [r1, 0x14] ldr r2, _080FB424 @ =0x000008f6 @@ -6023,7 +6023,7 @@ _080FB40C: ldrb r2, [r0] b _080FB554 .align 2, 0 -_080FB41C: .4byte gUnknown_3005450 +_080FB41C: .4byte Rfu _080FB420: .4byte gUnknown_3005E10 _080FB424: .4byte 0x000008f6 _080FB428: @@ -6032,7 +6032,7 @@ _080FB428: bl sub_80FB9E4 b _080FB556 _080FB432: - ldr r4, _080FB468 @ =gUnknown_3005450 + ldr r4, _080FB468 @ =Rfu movs r1, 0 movs r0, 0xB strh r0, [r4, 0x4] @@ -6057,7 +6057,7 @@ _080FB432: bl rfu_setRecvBuffer b _080FB556 .align 2, 0 -_080FB468: .4byte gUnknown_3005450 +_080FB468: .4byte Rfu _080FB46C: .4byte 0x0000093d _080FB470: .4byte 0x0000093e _080FB474: .4byte 0x000008f6 @@ -6068,7 +6068,7 @@ _080FB47C: bl sub_80FB9E4 b _080FB556 _080FB486: - ldr r0, _080FB4D8 @ =gUnknown_3005450 + ldr r0, _080FB4D8 @ =Rfu adds r2, r0, 0 adds r2, 0xF0 movs r1, 0x2 @@ -6079,7 +6079,7 @@ _080FB486: cmp r0, 0x6 beq _080FB556 _080FB49A: - ldr r2, _080FB4D8 @ =gUnknown_3005450 + ldr r2, _080FB4D8 @ =Rfu adds r1, r2, 0 adds r1, 0xF0 ldrb r0, [r1] @@ -6109,12 +6109,12 @@ _080FB4BC: bl sub_80FB0E8 b _080FB556 .align 2, 0 -_080FB4D8: .4byte gUnknown_3005450 +_080FB4D8: .4byte Rfu _080FB4DC: .4byte 0x0000093e _080FB4E0: .4byte gUnknown_843EDF8 _080FB4E4: .4byte gReceivedRemoteLinkPlayers _080FB4E8: - ldr r0, _080FB4FC @ =gUnknown_3005450 + ldr r0, _080FB4FC @ =Rfu adds r0, 0xF0 movs r1, 0x1 strb r1, [r0] @@ -6124,10 +6124,10 @@ _080FB4E8: bl nullsub_87 b _080FB556 .align 2, 0 -_080FB4FC: .4byte gUnknown_3005450 +_080FB4FC: .4byte Rfu _080FB500: .4byte gUnknown_843EE10 _080FB504: - ldr r1, _080FB51C @ =gUnknown_3005450 + ldr r1, _080FB51C @ =Rfu adds r2, r1, 0 adds r2, 0xF0 movs r0, 0x3 @@ -6139,7 +6139,7 @@ _080FB504: strb r0, [r1] b _080FB556 .align 2, 0 -_080FB51C: .4byte gUnknown_3005450 +_080FB51C: .4byte Rfu _080FB520: .4byte 0x000008f4 _080FB524: movs r0, 0x1 @@ -6147,18 +6147,18 @@ _080FB524: bl sub_80FB9E4 movs r0, 0xF3 bl sub_80FB0E8 - ldr r0, _080FB538 @ =gUnknown_3005450 + ldr r0, _080FB538 @ =Rfu adds r0, 0xEF b _080FB552 .align 2, 0 -_080FB538: .4byte gUnknown_3005450 +_080FB538: .4byte Rfu _080FB53C: movs r0, 0x1 adds r1, r4, 0 bl sub_80FB9E4 adds r0, r4, 0 bl sub_80FB0E8 - ldr r0, _080FB55C @ =gUnknown_3005450 + ldr r0, _080FB55C @ =Rfu ldr r1, _080FB560 @ =0x00000993 adds r0, r1 ldrb r1, [r0] @@ -6171,7 +6171,7 @@ _080FB556: pop {r0} bx r0 .align 2, 0 -_080FB55C: .4byte gUnknown_3005450 +_080FB55C: .4byte Rfu _080FB560: .4byte 0x00000993 thumb_func_end sub_80FB37C @@ -6181,7 +6181,7 @@ sub_80FB564: @ 80FB564 adds r3, r0, 0 movs r2, 0 movs r6, 0x1 - ldr r0, _080FB598 @ =gUnknown_3005450 + ldr r0, _080FB598 @ =Rfu ldr r4, _080FB59C @ =0x000009a2 adds r1, r0, r4 movs r5, 0 @@ -6205,7 +6205,7 @@ _080FB588: pop {r0} bx r0 .align 2, 0 -_080FB598: .4byte gUnknown_3005450 +_080FB598: .4byte Rfu _080FB59C: .4byte 0x000009a2 thumb_func_end sub_80FB564 @@ -6353,12 +6353,12 @@ _080FB67C: _080FB682: b _080FB9C2 _080FB684: - ldr r1, _080FB68C @ =gUnknown_3005450 + ldr r1, _080FB68C @ =Rfu movs r0, 0x11 strh r0, [r1, 0x4] b _080FB9C2 .align 2, 0 -_080FB68C: .4byte gUnknown_3005450 +_080FB68C: .4byte Rfu _080FB690: movs r0, 0x4 movs r1, 0 @@ -6371,7 +6371,7 @@ _080FB69A: ands r0, r1 cmp r0, 0x45 bne _080FB758 - ldr r5, _080FB704 @ =gUnknown_3005450 + ldr r5, _080FB704 @ =Rfu ldr r1, _080FB708 @ =0x00000991 adds r0, r5, r1 ldrb r0, [r0] @@ -6415,12 +6415,12 @@ _080FB69A: strb r0, [r3] b _080FB722 .align 2, 0 -_080FB704: .4byte gUnknown_3005450 +_080FB704: .4byte Rfu _080FB708: .4byte 0x00000991 _080FB70C: .4byte gUnknown_3005E10 _080FB710: .4byte 0x0000099e _080FB714: - ldr r0, _080FB744 @ =gUnknown_3005450 + ldr r0, _080FB744 @ =Rfu ldr r1, _080FB748 @ =0x0000099e adds r0, r1 ldrb r2, [r0] @@ -6432,7 +6432,7 @@ _080FB722: ldrh r1, [r0, 0x14] cmp r4, r1 beq _080FB772 - ldr r2, _080FB744 @ =gUnknown_3005450 + ldr r2, _080FB744 @ =Rfu ldr r7, _080FB750 @ =0x0000099b adds r3, r2, r7 adds r0, r4, 0 @@ -6446,7 +6446,7 @@ _080FB722: strb r0, [r2] b _080FB772 .align 2, 0 -_080FB744: .4byte gUnknown_3005450 +_080FB744: .4byte Rfu _080FB748: .4byte 0x0000099e _080FB74C: .4byte gUnknown_3005E10 _080FB750: .4byte 0x0000099b @@ -6494,7 +6494,7 @@ _080FB780: bl rfu_REQ_disconnect bl rfu_waitREQComplete _080FB7B6: - ldr r1, _080FB7CC @ =gUnknown_3005450 + ldr r1, _080FB7CC @ =Rfu ldrh r0, [r1, 0x4] cmp r0, 0xF beq _080FB7C0 @@ -6505,20 +6505,20 @@ _080FB7C0: b _080FB9C2 .align 2, 0 _080FB7C8: .4byte gUnknown_3005E10 -_080FB7CC: .4byte gUnknown_3005450 +_080FB7CC: .4byte Rfu _080FB7D0: - ldr r0, _080FB7DC @ =gUnknown_3005450 + ldr r0, _080FB7DC @ =Rfu 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 +_080FB7DC: .4byte Rfu _080FB7E0: .4byte gUnknown_3005E10 _080FB7E4: .4byte 0x00000985 _080FB7E8: - ldr r0, _080FB7F8 @ =gUnknown_3005450 + ldr r0, _080FB7F8 @ =Rfu ldr r1, _080FB7FC @ =gUnknown_3005E10 ldrh r1, [r1, 0x14] ldr r7, _080FB800 @ =0x000008f6 @@ -6526,11 +6526,11 @@ _080FB7E8: ldrb r2, [r0] b _080FB9C0 .align 2, 0 -_080FB7F8: .4byte gUnknown_3005450 +_080FB7F8: .4byte Rfu _080FB7FC: .4byte gUnknown_3005E10 _080FB800: .4byte 0x000008f6 _080FB804: - ldr r1, _080FB824 @ =gUnknown_3005450 + ldr r1, _080FB824 @ =Rfu movs r0, 0x12 strh r0, [r1, 0x4] ldr r0, _080FB828 @ =0x00000987 @@ -6545,7 +6545,7 @@ _080FB804: bl CreateTask b _080FB9C2 .align 2, 0 -_080FB824: .4byte gUnknown_3005450 +_080FB824: .4byte Rfu _080FB828: .4byte 0x00000987 _080FB82C: .4byte sub_80FC028 _080FB830: @@ -6554,7 +6554,7 @@ _080FB830: bl sub_80FB9E4 b _080FB9C2 _080FB83A: - ldr r4, _080FB860 @ =gUnknown_3005450 + ldr r4, _080FB860 @ =Rfu movs r0, 0xD strh r0, [r4, 0x4] movs r0, 0x3 @@ -6571,7 +6571,7 @@ _080FB83A: bl rfu_setRecvBuffer b _080FB9C2 .align 2, 0 -_080FB860: .4byte gUnknown_3005450 +_080FB860: .4byte Rfu _080FB864: .4byte 0x000008f6 _080FB868: .4byte 0x000008f7 _080FB86C: @@ -6588,15 +6588,15 @@ _080FB876: bne _080FB884 b _080FB9C2 _080FB884: - ldr r0, _080FB890 @ =gUnknown_3005450 + ldr r0, _080FB890 @ =Rfu adds r0, 0xF0 movs r1, 0x1 b _080FB9C0 .align 2, 0 _080FB88C: .4byte gUnknown_3005E10 -_080FB890: .4byte gUnknown_3005450 +_080FB890: .4byte Rfu _080FB894: - ldr r2, _080FB8B4 @ =gUnknown_3005450 + ldr r2, _080FB8B4 @ =Rfu adds r1, r2, 0 adds r1, 0xF0 movs r0, 0x3 @@ -6614,16 +6614,16 @@ _080FB8AA: movs r1, 0x1 b _080FB9C0 .align 2, 0 -_080FB8B4: .4byte gUnknown_3005450 +_080FB8B4: .4byte Rfu _080FB8B8: .4byte gRfuLinkStatus _080FB8BC: .4byte 0x000008f4 _080FB8C0: - ldr r0, _080FB900 @ =gUnknown_3005450 + ldr r0, _080FB900 @ =Rfu adds r0, 0xF0 movs r1, 0x2 strb r1, [r0] _080FB8C8: - ldr r2, _080FB900 @ =gUnknown_3005450 + ldr r2, _080FB900 @ =Rfu adds r1, r2, 0 adds r1, 0xF0 ldrb r0, [r1] @@ -6652,7 +6652,7 @@ _080FB8D8: bl sub_80FB0E8 b _080FB934 .align 2, 0 -_080FB900: .4byte gUnknown_3005450 +_080FB900: .4byte Rfu _080FB904: .4byte gReceivedRemoteLinkPlayers _080FB908: .4byte 0x0000099a _080FB90C: .4byte gUnknown_3005E10 @@ -6689,7 +6689,7 @@ _080FB934: lsrs r0, 24 cmp r0, 0x1 bne _080FB95A - ldr r1, _080FB978 @ =gUnknown_3005450 + ldr r1, _080FB978 @ =Rfu movs r0, 0x11 strh r0, [r1, 0x4] _080FB95A: @@ -6703,14 +6703,14 @@ _080FB968: .4byte gReceivedRemoteLinkPlayers _080FB96C: .4byte gRfuLinkStatus _080FB970: .4byte gUnknown_3005E10 _080FB974: .4byte sub_80F8B34 -_080FB978: .4byte gUnknown_3005450 +_080FB978: .4byte Rfu _080FB97C: - ldr r0, _080FB984 @ =gUnknown_3005450 + ldr r0, _080FB984 @ =Rfu ldr r2, _080FB988 @ =0x0000099b adds r0, r2 b _080FB9BE .align 2, 0 -_080FB984: .4byte gUnknown_3005450 +_080FB984: .4byte Rfu _080FB988: .4byte 0x0000099b _080FB98C: movs r0, 0x1 @@ -6718,19 +6718,19 @@ _080FB98C: bl sub_80FB9E4 movs r0, 0xF3 bl sub_80FB0E8 - ldr r0, _080FB9A4 @ =gUnknown_3005450 + ldr r0, _080FB9A4 @ =Rfu adds r0, 0xEF movs r1, 0x1 b _080FB9C0 .align 2, 0 -_080FB9A4: .4byte gUnknown_3005450 +_080FB9A4: .4byte Rfu _080FB9A8: adds r0, r4, 0 bl sub_80FB0E8 movs r0, 0x1 adds r1, r4, 0 bl sub_80FB9E4 - ldr r0, _080FB9C8 @ =gUnknown_3005450 + ldr r0, _080FB9C8 @ =Rfu ldr r7, _080FB9CC @ =0x00000993 adds r0, r7 ldrb r1, [r0] @@ -6743,43 +6743,43 @@ _080FB9C2: pop {r0} bx r0 .align 2, 0 -_080FB9C8: .4byte gUnknown_3005450 +_080FB9C8: .4byte Rfu _080FB9CC: .4byte 0x00000993 thumb_func_end sub_80FB5EC thumb_func_start sub_80FB9D0 sub_80FB9D0: @ 80FB9D0 - ldr r0, _080FB9DC @ =gUnknown_3005450 + ldr r0, _080FB9DC @ =Rfu ldr r1, _080FB9E0 @ =0x0000099c adds r0, r1 movs r1, 0x2 strb r1, [r0] bx lr .align 2, 0 -_080FB9DC: .4byte gUnknown_3005450 +_080FB9DC: .4byte Rfu _080FB9E0: .4byte 0x0000099c thumb_func_end sub_80FB9D0 thumb_func_start sub_80FB9E4 sub_80FB9E4: @ 80FB9E4 - ldr r2, _080FB9F0 @ =gUnknown_3005450 + ldr r2, _080FB9F0 @ =Rfu adds r3, r2, 0 adds r3, 0xF1 strb r0, [r3] strh r1, [r2, 0xA] bx lr .align 2, 0 -_080FB9F0: .4byte gUnknown_3005450 +_080FB9F0: .4byte Rfu thumb_func_end sub_80FB9E4 thumb_func_start sub_80FB9F4 sub_80FB9F4: @ 80FB9F4 - ldr r0, _080FB9FC @ =gUnknown_3005450 + ldr r0, _080FB9FC @ =Rfu adds r0, 0xF1 ldrb r0, [r0] bx lr .align 2, 0 -_080FB9FC: .4byte gUnknown_3005450 +_080FB9FC: .4byte Rfu thumb_func_end sub_80FB9F4 thumb_func_start sub_80FBA00 @@ -6802,23 +6802,23 @@ _080FBA16: thumb_func_start sub_80FBA1C sub_80FBA1C: @ 80FBA1C - ldr r0, _080FBA28 @ =gUnknown_3005450 + ldr r0, _080FBA28 @ =Rfu movs r1, 0x9A lsls r1, 4 adds r0, r1 ldrb r0, [r0] bx lr .align 2, 0 -_080FBA28: .4byte gUnknown_3005450 +_080FBA28: .4byte Rfu thumb_func_end sub_80FBA1C thumb_func_start Rfu_IsMaster Rfu_IsMaster: @ 80FBA2C - ldr r0, _080FBA34 @ =gUnknown_3005450 + ldr r0, _080FBA34 @ =Rfu ldrb r0, [r0, 0xC] bx lr .align 2, 0 -_080FBA34: .4byte gUnknown_3005450 +_080FBA34: .4byte Rfu thumb_func_end Rfu_IsMaster thumb_func_start RFUVSync @@ -6939,7 +6939,7 @@ sub_80FBB20: @ 80FBB20 adds r0, r4, 0 movs r1, 0 bl CreateTask - ldr r1, _080FBB48 @ =gUnknown_3005450 + ldr r1, _080FBB48 @ =Rfu adds r1, 0x66 strb r0, [r1] _080FBB3E: @@ -6948,7 +6948,7 @@ _080FBB3E: bx r0 .align 2, 0 _080FBB44: .4byte nullsub_89 -_080FBB48: .4byte gUnknown_3005450 +_080FBB48: .4byte Rfu thumb_func_end sub_80FBB20 thumb_func_start sub_80FBB4C @@ -6960,7 +6960,7 @@ sub_80FBB4C: @ 80FBB4C lsrs r0, 24 cmp r0, 0x1 bne _080FBB66 - ldr r0, _080FBB70 @ =gUnknown_3005450 + ldr r0, _080FBB70 @ =Rfu adds r0, 0x66 ldrb r0, [r0] bl DestroyTask @@ -6969,7 +6969,7 @@ _080FBB66: bx r0 .align 2, 0 _080FBB6C: .4byte nullsub_89 -_080FBB70: .4byte gUnknown_3005450 +_080FBB70: .4byte Rfu thumb_func_end sub_80FBB4C thumb_func_start sub_80FBB74 @@ -6987,7 +6987,7 @@ sub_80FBB74: @ 80FBB74 sub_80FBB8C: @ 80FBB8C push {r4-r6,lr} adds r4, r0, 0 - ldr r1, _080FBBC4 @ =gUnknown_3005450 + ldr r1, _080FBBC4 @ =Rfu movs r0, 0x1 strb r0, [r1, 0xC] bl sub_80FAF1C @@ -7011,7 +7011,7 @@ sub_80FBB8C: @ 80FBB8C pop {r0} bx r0 .align 2, 0 -_080FBBC4: .4byte gUnknown_3005450 +_080FBBC4: .4byte Rfu _080FBBC8: .4byte sub_80FB184 _080FBBCC: .4byte gUnknown_203ABF0 _080FBBD0: .4byte gUnknown_843EBB4 @@ -7021,7 +7021,7 @@ _080FBBD4: .4byte gUnknown_843EBCC thumb_func_start sub_80FBBD8 sub_80FBBD8: @ 80FBBD8 push {lr} - ldr r1, _080FBBF4 @ =gUnknown_3005450 + ldr r1, _080FBBF4 @ =Rfu movs r0, 0 strb r0, [r1, 0xC] bl sub_80FAF1C @@ -7032,7 +7032,7 @@ sub_80FBBD8: @ 80FBBD8 pop {r0} bx r0 .align 2, 0 -_080FBBF4: .4byte gUnknown_3005450 +_080FBBF4: .4byte Rfu _080FBBF8: .4byte sub_80FB37C _080FBBFC: .4byte sub_80F8D20 thumb_func_end sub_80FBBD8 @@ -7047,7 +7047,7 @@ sub_80FBC00: @ 80FBC00 lsrs r0, 24 cmp r0, 0x1 bls _080FBC46 - ldr r4, _080FBC50 @ =gUnknown_3005450 + ldr r4, _080FBC50 @ =Rfu movs r5, 0 movs r0, 0x2 strb r0, [r4, 0xC] @@ -7077,7 +7077,7 @@ _080FBC46: bx r0 .align 2, 0 _080FBC4C: .4byte gUnknown_203ADFA -_080FBC50: .4byte gUnknown_3005450 +_080FBC50: .4byte Rfu _080FBC54: .4byte sub_80FB5EC _080FBC58: .4byte gUnknown_203ABF0 _080FBC5C: .4byte gUnknown_843EBB4 @@ -7173,7 +7173,7 @@ sub_80FBCF8: @ 80FBCF8 lsrs r0, 24 bl rfu_REQ_disconnect bl rfu_waitREQComplete - ldr r4, _080FBD3C @ =gUnknown_3005450 + ldr r4, _080FBD3C @ =Rfu ldr r0, _080FBD40 @ =0x0000099a adds r5, r4, r0 ldrb r0, [r5] @@ -7197,7 +7197,7 @@ sub_80FBCF8: @ 80FBCF8 pop {r0} bx r0 .align 2, 0 -_080FBD3C: .4byte gUnknown_3005450 +_080FBD3C: .4byte Rfu _080FBD40: .4byte 0x0000099a _080FBD44: .4byte 0x00000992 _080FBD48: .4byte 0x0000093f @@ -7229,7 +7229,7 @@ sub_80FBD6C: @ 80FBD6C beq _080FBDAC movs r3, 0 movs r2, 0 - ldr r5, _080FBDB4 @ =gUnknown_3005DE6 + ldr r5, _080FBDB4 @ =Rfu+0x996 adds r6, r5, 0x4 _080FBD7C: adds r0, r2, r5 @@ -7261,7 +7261,7 @@ _080FBDAC: pop {r0} bx r0 .align 2, 0 -_080FBDB4: .4byte gUnknown_3005DE6 +_080FBDB4: .4byte Rfu+0x996 thumb_func_end sub_80FBD6C thumb_func_start sub_80FBDB8 @@ -7273,7 +7273,7 @@ sub_80FBDB8: @ 80FBDB8 ldrh r0, [r6] cmp r0, 0 bne _080FBE08 - ldr r5, _080FBE14 @ =gUnknown_3005450 + ldr r5, _080FBE14 @ =Rfu movs r1, 0x9A lsls r1, 4 adds r0, r5, r1 @@ -7310,7 +7310,7 @@ _080FBE08: bx r0 .align 2, 0 _080FBE10: .4byte gSendCmd -_080FBE14: .4byte gUnknown_3005450 +_080FBE14: .4byte Rfu _080FBE18: .4byte gTasks _080FBE1C: .4byte gUnknown_843EC41 thumb_func_end sub_80FBDB8 @@ -7398,7 +7398,7 @@ sub_80FBE80: @ 80FBE80 ldrb r0, [r0, 0x16] cmp r0, 0xFF beq _080FBEE8 - ldr r0, _080FBEE0 @ =gUnknown_3005450 + ldr r0, _080FBEE0 @ =Rfu ldr r1, _080FBEE4 @ =0x000008f5 adds r0, r1 strb r2, [r0] @@ -7409,7 +7409,7 @@ sub_80FBE80: @ 80FBE80 .align 2, 0 _080FBED8: .4byte gTasks+0x8 _080FBEDC: .4byte gRfuLinkStatus -_080FBEE0: .4byte gUnknown_3005450 +_080FBEE0: .4byte Rfu _080FBEE4: .4byte 0x000008f5 _080FBEE8: bl sub_80F9800 @@ -7437,13 +7437,13 @@ _080FBF18: ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] - ldr r0, _080FBF28 @ =gUnknown_3005450 + ldr r0, _080FBF28 @ =Rfu ldr r1, _080FBF2C @ =0x000008f5 adds r0, r1 strb r2, [r0] b _080FBF36 .align 2, 0 -_080FBF28: .4byte gUnknown_3005450 +_080FBF28: .4byte Rfu _080FBF2C: .4byte 0x000008f5 _080FBF30: ldrh r0, [r4, 0x1E] @@ -7472,7 +7472,7 @@ sub_80FBF54: @ 80FBF54 adds r6, r0, 0 lsls r5, r1, 16 lsrs r5, 16 - ldr r0, _080FBF8C @ =gUnknown_3005450 + ldr r0, _080FBF8C @ =Rfu adds r0, 0xF1 movs r1, 0 strb r1, [r0] @@ -7494,7 +7494,7 @@ sub_80FBF54: @ 80FBF54 pop {r0} bx r0 .align 2, 0 -_080FBF8C: .4byte gUnknown_3005450 +_080FBF8C: .4byte Rfu _080FBF90: .4byte sub_80FBE80 _080FBF94: .4byte gTasks+0x8 thumb_func_end sub_80FBF54 @@ -7528,7 +7528,7 @@ _080FBFBE: bne _080FBFBA cmp r5, 0x44 bne _080FC01E - ldr r5, _080FBFEC @ =gUnknown_300555A + ldr r5, _080FBFEC @ =Rfu+0x10a ldrh r0, [r5, 0x8] ldr r3, _080FBFF0 @ =0x000003ff adds r2, r3, 0 @@ -7544,7 +7544,7 @@ _080FBFBE: beq _080FC01E b _080FBFBA .align 2, 0 -_080FBFEC: .4byte gUnknown_300555A +_080FBFEC: .4byte Rfu+0x10a _080FBFF0: .4byte 0x000003ff _080FBFF4: ldrh r1, [r4, 0x8] @@ -7584,7 +7584,7 @@ sub_80FC028: @ 80FC028 lsls r0, 24 lsrs r5, r0, 24 mov r8, r5 - ldr r6, _080FC0E0 @ =gUnknown_3005450 + ldr r6, _080FC0E0 @ =Rfu adds r0, r6, 0 adds r0, 0xF1 ldrb r0, [r0] @@ -7665,7 +7665,7 @@ _080FC070: bl DestroyTask b _080FC108 .align 2, 0 -_080FC0E0: .4byte gUnknown_3005450 +_080FC0E0: .4byte Rfu _080FC0E4: .4byte gTasks _080FC0E8: .4byte 0x00000985 _080FC0EC: .4byte gUnknown_3005E10 @@ -7693,7 +7693,7 @@ sub_80FC114: @ 80FC114 adds r5, r1, 0 lsls r4, r2, 24 lsrs r4, 24 - ldr r6, _080FC184 @ =gUnknown_3005450 + ldr r6, _080FC184 @ =Rfu ldr r1, _080FC188 @ =0x00000987 adds r0, r6, r1 movs r7, 0 @@ -7740,7 +7740,7 @@ sub_80FC114: @ 80FC114 strh r1, [r0, 0x16] b _080FC1AA .align 2, 0 -_080FC184: .4byte gUnknown_3005450 +_080FC184: .4byte Rfu _080FC188: .4byte 0x00000987 _080FC18C: .4byte 0x00000119 _080FC190: .4byte sub_80FC028 @@ -7763,7 +7763,7 @@ _080FC1AA: thumb_func_start sub_80FC1B0 sub_80FC1B0: @ 80FC1B0 push {lr} - ldr r0, _080FC1C0 @ =gUnknown_3005450 + ldr r0, _080FC1C0 @ =Rfu adds r0, 0xF0 ldrb r0, [r0] cmp r0, 0x1 @@ -7771,7 +7771,7 @@ sub_80FC1B0: @ 80FC1B0 movs r0, 0 b _080FC1C6 .align 2, 0 -_080FC1C0: .4byte gUnknown_3005450 +_080FC1C0: .4byte Rfu _080FC1C4: movs r0, 0x1 _080FC1C6: @@ -7785,7 +7785,7 @@ sub_80FC1CC: @ 80FC1CC movs r1, 0 ldr r0, _080FC1F0 @ =gUnknown_3005E10 ldrb r2, [r0] - ldr r4, _080FC1F4 @ =gUnknown_3005DD9 + ldr r4, _080FC1F4 @ =Rfu+0x989 movs r3, 0x1 _080FC1D8: adds r0, r2, 0 @@ -7801,7 +7801,7 @@ _080FC1D8: b _080FC200 .align 2, 0 _080FC1F0: .4byte gUnknown_3005E10 -_080FC1F4: .4byte gUnknown_3005DD9 +_080FC1F4: .4byte Rfu+0x989 _080FC1F8: adds r1, 0x1 cmp r1, 0x3 @@ -7858,7 +7858,7 @@ sub_80FC228: @ 80FC228 movs r2, 0x1 movs r3, 0x1 bl nullsub_88 - ldr r0, _080FC2FC @ =gUnknown_3005450 + ldr r0, _080FC2FC @ =Rfu ldrb r0, [r0, 0xC] cmp r0, 0x1 bne _080FC304 @@ -7900,7 +7900,7 @@ _080FC2AA: cmp r6, 0x3 ble _080FC26C movs r6, 0 - ldr r0, _080FC2FC @ =gUnknown_3005450 + ldr r0, _080FC2FC @ =Rfu mov r8, r0 _080FC2B8: movs r5, 0 @@ -7935,7 +7935,7 @@ _080FC2CE: b _080FC436 .align 2, 0 _080FC2F8: .4byte gRfuLinkStatus -_080FC2FC: .4byte gUnknown_3005450 +_080FC2FC: .4byte Rfu _080FC300: .4byte gUnknown_843EE64 _080FC304: ldr r1, [r4] @@ -7971,7 +7971,7 @@ _080FC318: ble _080FC318 ldr r5, _080FC394 @ =gRfuLinkStatus ldr r1, [r5] - ldr r4, _080FC398 @ =gUnknown_3005450 + ldr r4, _080FC398 @ =Rfu ldr r0, _080FC39C @ =0x000008f6 adds r4, r0 ldrb r0, [r4] @@ -8005,7 +8005,7 @@ _080FC318: _080FC38C: .4byte gUnknown_843EE47 _080FC390: .4byte gUnknown_843EE57 _080FC394: .4byte gRfuLinkStatus -_080FC398: .4byte gUnknown_3005450 +_080FC398: .4byte Rfu _080FC39C: .4byte 0x000008f6 _080FC3A0: movs r6, 0 @@ -8095,25 +8095,25 @@ _080FC448: .4byte gUnknown_843EE57 thumb_func_start sub_80FC44C sub_80FC44C: @ 80FC44C - ldr r0, _080FC458 @ =gUnknown_3005450 + ldr r0, _080FC458 @ =Rfu ldr r1, _080FC45C @ =0x000008d2 adds r0, r1 ldrb r0, [r0] bx lr .align 2, 0 -_080FC458: .4byte gUnknown_3005450 +_080FC458: .4byte Rfu _080FC45C: .4byte 0x000008d2 thumb_func_end sub_80FC44C thumb_func_start GetRfuRecvQueueLength GetRfuRecvQueueLength: @ 80FC460 - ldr r0, _080FC46C @ =gUnknown_3005450 + ldr r0, _080FC46C @ =Rfu ldr r1, _080FC470 @ =0x0000069e adds r0, r1 ldrb r0, [r0] bx lr .align 2, 0 -_080FC46C: .4byte gUnknown_3005450 +_080FC46C: .4byte Rfu _080FC470: .4byte 0x0000069e thumb_func_end GetRfuRecvQueueLength @@ -9362,7 +9362,7 @@ sub_80FCD50: @ 80FCD50 ldr r1, _080FCD6C @ =gUnknown_3005440 movs r2, 0xD bl memcpy - ldr r1, _080FCD70 @ =gUnknown_3005E00 + ldr r1, _080FCD70 @ =Rfu+0x9b0 adds r0, r4, 0 movs r2, 0x8 bl memcpy @@ -9371,7 +9371,7 @@ sub_80FCD50: @ 80FCD50 bx r0 .align 2, 0 _080FCD6C: .4byte gUnknown_3005440 -_080FCD70: .4byte gUnknown_3005E00 +_080FCD70: .4byte Rfu+0x9b0 thumb_func_end sub_80FCD50 thumb_func_start CreateWirelessStatusIndicatorSprite diff --git a/asm/overworld.s b/asm/overworld.s index fb746285f..8eeb570f1 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -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/data/link_rfu_2.s b/data/link_rfu_2.s index 4f88177aa..eae60cce1 100644 --- a/data/link_rfu_2.s +++ b/data/link_rfu_2.s @@ -13,7 +13,7 @@ gUnknown_843EBB4:: @ 843EBB4 .align 1 .2byte 0x0002 .4byte gUnknown_3005440 - .4byte gUnknown_3005E00 + .4byte Rfu+2480 .byte 0x01, 0x00 .2byte 0x0258, 0x012c .align 2 diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index e178c91e4..acaec8738 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -1537,7 +1537,7 @@ 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) diff --git a/sym_common.txt b/sym_common.txt index 339f9d803..c4cd329d0 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -78,50 +78,9 @@ gUnknown_3005430: @ 3005430 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 +@ This name is necessary to match assert statements in link_rfu_2 +Rfu: @ 3005450 + .space 0x9C0 .align 4 .include "link_rfu.o" -- cgit v1.2.3 From 4602efe09198a19f8733a617184359abb9622d0a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 16:38:55 -0500 Subject: clockChangeFlag is boolean --- src/librfu_rfu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index acaec8738..dccd342f2 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -1555,7 +1555,7 @@ void rfu_REQ_sendData(bool8 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(bool8 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(bool8 clockChangeFlag) STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4); } } - if (clockChangeFlag != 0) + if (clockChangeFlag) { if (gRfuLinkStatus->parentChild == MODE_PARENT) { -- cgit v1.2.3 From eec9e0d914f79683957127158be914b719e9a7d0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 17:03:36 -0500 Subject: Split link_rfu_2 --- asm/link_rfu_2.s | 2075 +---------------------------------------------------- asm/link_rfu_4.s | 2071 ++++++++++++++++++++++++++++++++++++++++++++++++++++ data/link_rfu_2.s | 125 ---- data/link_rfu_4.s | 128 ++++ include/global.h | 9 +- ld_script.txt | 2 + sym_common.txt | 6 +- 7 files changed, 2220 insertions(+), 2196 deletions(-) create mode 100644 asm/link_rfu_4.s create mode 100644 data/link_rfu_4.s diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index d13b2d2d6..716faa934 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -5334,14 +5334,14 @@ _080FAF18: .4byte Rfu thumb_func_start sub_80FAF1C sub_80FAF1C: @ 80FAF1C push {lr} - ldr r0, _080FAF2C @ =Rfu+0x9b0 + ldr r0, _080FAF2C @ =gUnknown_3005E00 ldr r1, _080FAF30 @ =gSaveBlock2Ptr ldr r1, [r1] bl StringCopy pop {r0} bx r0 .align 2, 0 -_080FAF2C: .4byte Rfu+0x9b0 +_080FAF2C: .4byte gUnknown_3005E00 _080FAF30: .4byte gSaveBlock2Ptr thumb_func_end sub_80FAF1C @@ -5452,7 +5452,7 @@ sub_80FAFE0: @ 80FAFE0 ands r1, r3 orrs r1, r0 strb r1, [r2, 0xA] - ldr r3, _080FB004 @ =Rfu+0x9b0 + ldr r3, _080FB004 @ =gUnknown_3005E00 movs r0, 0 movs r1, 0x2 bl rfu_REQ_configGameData @@ -5460,7 +5460,7 @@ sub_80FAFE0: @ 80FAFE0 bx r0 .align 2, 0 _080FB000: .4byte gUnknown_3005440 -_080FB004: .4byte Rfu+0x9b0 +_080FB004: .4byte gUnknown_3005E00 thumb_func_end sub_80FAFE0 thumb_func_start sub_80FB008 @@ -5473,7 +5473,7 @@ sub_80FB008: @ 80FB008 bl sub_80FAF58 _080FB016: ldr r2, _080FB028 @ =gUnknown_3005440 - ldr r3, _080FB02C @ =Rfu+0x9b0 + ldr r3, _080FB02C @ =gUnknown_3005E00 movs r0, 0 movs r1, 0x2 bl rfu_REQ_configGameData @@ -5481,7 +5481,7 @@ _080FB016: bx r0 .align 2, 0 _080FB028: .4byte gUnknown_3005440 -_080FB02C: .4byte Rfu+0x9b0 +_080FB02C: .4byte gUnknown_3005E00 thumb_func_end sub_80FB008 thumb_func_start sub_80FB030 @@ -8122,2067 +8122,4 @@ 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 @ =Rfu+0x9b0 - adds r0, r4, 0 - movs r2, 0x8 - bl memcpy - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FCD6C: .4byte gUnknown_3005440 -_080FCD70: .4byte Rfu+0x9b0 - 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/link_rfu_4.s b/asm/link_rfu_4.s new file mode 100644 index 000000000..7d3d3ca7a --- /dev/null +++ b/asm/link_rfu_4.s @@ -0,0 +1,2071 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + 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/data/link_rfu_2.s b/data/link_rfu_2.s index eae60cce1..ff63f205c 100644 --- a/data/link_rfu_2.s +++ b/data/link_rfu_2.s @@ -150,128 +150,3 @@ gUnknown_843EE64:: @ 843EE64 .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_4.s b/data/link_rfu_4.s new file mode 100644 index 000000000..da3b341dc --- /dev/null +++ b/data/link_rfu_4.s @@ -0,0 +1,128 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .section .rodata + .align 2, 0 + +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/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/ld_script.txt b/ld_script.txt index 05ed8277a..d164b3f56 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,6 +226,7 @@ SECTIONS { src/save_menu_util.o(.text); src/map_preview_screen.o(.text); asm/link_rfu_2.o(.text); + asm/link_rfu_4.o(.text); src/link_rfu.o(.text); asm/easy_chat_2.o(.text); src/pokedex_screen.o(.text); @@ -510,6 +511,7 @@ SECTIONS { data/box_party_pokemon_dropdown.o(.rodata); src/map_preview_screen.o(.rodata); data/link_rfu_2.o(.rodata); + data/link_rfu_4.o(.rodata); data/link_rfu.o(.rodata); src/pokedex_screen.o(.rodata); data/pokedex_screen.o(.rodata); diff --git a/sym_common.txt b/sym_common.txt index c4cd329d0..848c19613 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -80,7 +80,11 @@ gUnknown_3005440: @ 3005440 @ This name is necessary to match assert statements in link_rfu_2 Rfu: @ 3005450 - .space 0x9C0 + .space 0x9AC + + .align 4 +gUnknown_3005E00: @ 3005E00 + .space 0x10 .align 4 .include "link_rfu.o" -- cgit v1.2.3 From 36306a82d131eee74c48e0ca6e66fff97dcffac2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 20:40:47 -0500 Subject: link_rfu_2 through sub_80F8F5C --- asm/link_rfu_2.s | 1158 ---------------------------------------------------- data/link_rfu_2.s | 87 ---- include/link_rfu.h | 48 +++ ld_script.txt | 2 + src/link_rfu_2.c | 638 +++++++++++++++++++++++++++++ sym_bss.txt | 15 +- 6 files changed, 691 insertions(+), 1257 deletions(-) create mode 100644 src/link_rfu_2.c diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index 716faa934..a5426166d 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -5,1164 +5,6 @@ .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 @ =Rfu - 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 @ =Rfu+0x6c - 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 Rfu -_080F86A0: .4byte 0x010004d6 -_080F86A4: .4byte Rfu+0x6c -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_080F87D0: .4byte gTasks -_080F87D4: - ldr r4, _080F87F8 @ =Rfu - 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 Rfu -_080F87FC: .4byte gUnknown_843EC8C -_080F8800: .4byte gTasks -_080F8804: - movs r0, 0 - bl sub_80FD760 - ldr r1, _080F8814 @ =Rfu - movs r0, 0x5 - strh r0, [r1, 0x4] - b _080F8852 - .align 2, 0 -_080F8814: .4byte Rfu -_080F8818: - ldr r4, _080F8858 @ =Rfu - 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 Rfu -_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 @ =Rfu+0x996 -_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 Rfu+0x996 -_080F88BC: - movs r3, 0 - mvns r0, r1 - mov r12, r0 - movs r7, 0x1 - ldr r4, _080F8938 @ =Rfu+0x996 -_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 @ =Rfu+0x996 - ldrb r7, [r0] -_080F88E4: - movs r3, 0 - subs r1, r4, 0x1 - cmp r7, r4 - beq _080F8900 - ldr r2, _080F8938 @ =Rfu+0x996 -_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 @ =Rfu+0x996 -_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 Rfu+0x996 - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - movs r2, 0x1 - strh r2, [r0, 0x4] - b _080F89BC - .align 2, 0 -_080F89A4: .4byte gUnknown_843EBB4 -_080F89A8: .4byte Rfu -_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 @ =Rfu - movs r0, 0xC - strh r0, [r1, 0x4] - b _080F8A8A - .align 2, 0 -_080F8A08: .4byte Rfu -_080F8A0C: - bl sub_80FEB14 - ldr r0, _080F8A24 @ =Rfu - 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 Rfu -_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 @ =Rfu+0x14 - 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 Rfu+0x14 - 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 @ =Rfu+0x93f - 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 Rfu+0x93f -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - movs r0, 0x12 - strh r0, [r1, 0x4] - b _080F8CE6 - .align 2, 0 -_080F8C1C: .4byte gUnknown_843EC8C -_080F8C20: .4byte sub_80F8D20 -_080F8C24: .4byte Rfu -_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 @ =Rfu - movs r0, 0xF - strh r0, [r1, 0x4] - b _080F8CE6 - .align 2, 0 -_080F8C98: .4byte Rfu -_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 @ =Rfu - 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 @ =Rfu - 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 LinkRfu_REQ_SendData_HandleParentRelationship - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F8D90: .4byte Rfu -_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 @ =Rfu - ldr r1, _080F8DBC @ =0x00000993 - adds r0, r1 - ldrb r1, [r0] - movs r1, 0x1 - strb r1, [r0] - bx lr - .align 2, 0 -_080F8DB8: .4byte Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - adds r1, 0x67 - strb r0, [r1] -_080F8E92: - pop {r0} - bx r0 - .align 2, 0 -_080F8E98: .4byte gUnknown_203ADFA -_080F8E9C: .4byte sub_80F8738 -_080F8EA0: .4byte Rfu - thumb_func_end sub_80F8E74 - - thumb_func_start sub_80F8EA4 -sub_80F8EA4: @ 80F8EA4 - push {lr} - ldr r1, _080F8EBC @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - adds r1, 0x67 - strb r0, [r1] -_080F8F2E: - pop {r0} - bx r0 - .align 2, 0 -_080F8F34: .4byte gUnknown_203ADFA -_080F8F38: .4byte sub_80F893C -_080F8F3C: .4byte Rfu - 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 @ =Rfu - 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 Rfu -_080F8F74: .4byte gUnknown_3005E10 -_080F8F78: .4byte 0x0000099f - thumb_func_end sub_80F8F5C - thumb_func_start sub_80F8F7C sub_80F8F7C: @ 80F8F7C push {lr} diff --git a/data/link_rfu_2.s b/data/link_rfu_2.s index ff63f205c..640b04b79 100644 --- a/data/link_rfu_2.s +++ b/data/link_rfu_2.s @@ -6,93 +6,6 @@ .section .rodata .align 2 -gUnknown_843EBB4:: @ 843EBB4 - .byte 0x04, 0x20 - .2byte 0x0000 - .byte 0x00 - .align 1 - .2byte 0x0002 - .4byte gUnknown_3005440 - .4byte Rfu+2480 - .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" diff --git a/include/link_rfu.h b/include/link_rfu.h index 8ee7674cf..7f695ebe2 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -24,6 +24,20 @@ struct UnkLinkRfuStruct_02022B2C 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; @@ -65,6 +79,26 @@ struct UnkRfuStruct_1 /* 0x044 */ void (*unk_44)(u16); }; +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; +}; + +extern struct UnkRfuStruct_1 gUnknown_3005E10; + void AddTextPrinterToWindow1(const u8 *str); bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(void); @@ -106,6 +140,20 @@ void sub_80FCF34(void); void InitRFU(void); void sub_80FEB14(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); + #include "mevent_server.h" extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[]; diff --git a/ld_script.txt b/ld_script.txt index d164b3f56..8b17d3cd6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -225,6 +225,7 @@ SECTIONS { asm/box_party_pokemon_dropdown.o(.text); src/save_menu_util.o(.text); src/map_preview_screen.o(.text); + src/link_rfu_2.o(.text); asm/link_rfu_2.o(.text); asm/link_rfu_4.o(.text); src/link_rfu.o(.text); @@ -510,6 +511,7 @@ SECTIONS { src/new_menu_helpers.o(.rodata); data/box_party_pokemon_dropdown.o(.rodata); src/map_preview_screen.o(.rodata); + src/link_rfu_2.o(.rodata); data/link_rfu_2.o(.rodata); data/link_rfu_4.o(.rodata); data/link_rfu.o(.rodata); diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c new file mode 100644 index 000000000..80873ec60 --- /dev/null +++ b/src/link_rfu_2.c @@ -0,0 +1,638 @@ +#include "global.h" +#include "librfu.h" +#include "link.h" +#include "link_rfu.h" +#include "quest_log.h" +#include "task.h" + +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_c1c +{ + /* 0x00 */ u8 unk_00[2][14]; + /* 0x1c */ vu8 unk_1c; + /* 0x1d */ vu8 unk_1d; + /* 0x1e */ vu8 unk_1e; +}; + +struct +{ + /* 0x000 */ void (*RfuFunc)(void); + /* 0x004 */ u16 unk_04; + /* 0x006 */ u8 filler_06[4]; + /* 0x00a */ u16 unk_0a; + /* 0x00c */ u8 unk_0c; + /* 0x00d */ u8 playerCount; + /* 0x00e */ u8 unk_0e; + /* 0x00f */ u8 unk_0f; + /* 0x010 */ u16 unk_10; + /* 0x012 */ u16 unk_12; + /* 0x014 */ u8 unk_14[4][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; + /* 0x103 */ u8 filler_103[0x10A - 0x103]; + /* 0x10A */ struct UnkLinkRfuStruct_02022B14 unk_10A; + /* 0x11B */ u8 filler_; + /* 0x11C */ u8 playerName[PLAYER_NAME_LENGTH]; + /* 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; + /* 0x987 */ u8 unk_ccf; + /* 0x988 */ vu8 unk_cd0; + /* 0x989 */ u8 unk_cd1[4]; + /* 0x98d */ u8 unk_cd5[4]; + /* 0x991 */ u8 unk_cd9; + /* 0x992 */ u8 unk_cda; + /* 0x993 */ vu8 unk_cdb; + /* 0x994 */ vu8 unk_cdc; + /* 0x995 */ u8 unk_cdd; + /* 0x996 */ u8 unk_cde[4]; + /* 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[4]; + /* 0x9a6 */ u8 unk_cee[4]; +} Rfu; // size: 0x9AC + +EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_203ABF0 = {}; +EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_203AC08 = {}; + +ALIGNED(8) IWRAM_DATA u8 gUnknown_3001188; +ALIGNED(8) IWRAM_DATA struct RfuAPIBuffer gRfuAPIBuffer; +ALIGNED(8) IWRAM_DATA u8 gUnknown_3001FF8[14]; +ALIGNED(8) IWRAM_DATA u16 gUnknown_3002008[7]; + +struct UnkLinkRfuStruct_02022B14 gUnknown_3005440; +u8 gUnknown_3005E00[PLAYER_NAME_LENGTH]; + +void sub_80F8AA4(void); +void sub_80F8AEC(void); +void sub_80F8D20(u16 a0); +void sub_80F8DA8(u16 a0); +void sub_80F906C(void); +void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data); +void sub_80FA738(void); +int sub_80FA788(void); +void sub_80FA834(u8 taskId); +void sub_80FAA94(u8 taskId); +void sub_80FACF0(u8 taskId); +void sub_80FAFE0(u8 a0); +void sub_80FC208(void); + +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 +}; + +const u8 gUnknown_843EBCC[] = { + 0, 3, 2, 1, 0 +}; + +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 +}; + +const u8 gUnknown_843EC38[] = { + 0, 0, 1, + 1, 2, 2, + 2, 2, 3 +}; + +const u8 gUnknown_843EC41[] = { + 0, 1, 1, 2, + 1, 2, 2, 3, + 1, 2, 2, 3, + 2, 3, 3, 4 +}; + +const u8 gUnknown_843EC51[] = { + 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 +}; + +const struct { + u8 *buffer; + u32 size; +} gUnknown_843EC64[] = { + { gBlockSendBuffer, 200 }, + { gBlockSendBuffer, 200 }, + { gBlockSendBuffer, 100 }, + { gBlockSendBuffer, 220 }, + { gBlockSendBuffer, 40 } +}; + +const u16 gUnknown_843EC8C[] = { + 0x0002, 0x7f7d, 0xFFFF +}; + +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" +}; + +const char sUnref_843ED37[][16] = { + " ", + "RECOVER START ", + "DISSCONECT ", + "RECOVER SUUSES", + "RECOVER FAILED" +}; + +const TaskFunc gUnknown_843ED88[] = { + sub_80FA834, + sub_80FAA94, + sub_80FACF0 +}; + +void nullsub_87(const void *unused_0, u8 unused_1, u8 unused_2) +{ + // debug? +} + +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); + } +} + +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; + } +} + +s32 sub_80F886C(u8 idx) +{ + return gUnknown_843EC51[idx]; +} + +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 < 4; r2 >>= 1, i++) + { + if (r2 & 1) + { + Rfu.unk_cde[i] = r4; + r4++; + } + } + } + else + { + for (i = 0; i < 4; r1 >>= 1, i++) + { + if (!(r1 & 1)) + { + Rfu.unk_cde[i] = 0; + } + } + for (r4 = 4; r4 != 0; r4--) + { + for (i = 0; i < 4 && Rfu.unk_cde[i] != r4; i++); + if (i == 4) + { + r6 = r4; + } + } + for (r5 &= ~r2, i = 0; i < 4; r5 >>= 1, i++) + { + if (r5 & 1) + { + Rfu.unk_cde[i] = r6++; + } + } + } +} + +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, 70); + rfu_UNI_setSendData(r5, Rfu.unk_4c, 14); + gTasks[taskId].data[1] = 8; + DestroyTask(taskId); + if (gUnknown_203AC08.unk_0f == 0) + { + sub_80FC208(); + gUnknown_203AC08.unk_0f++; + } + CreateTask(sub_80FA834, 5); + break; + } + } +} + +void sub_80F8AA4(void) +{ + u8 i; + u8 r5 = gUnknown_3005E10.unk_00; + for (i = 0; i < 4; i++) + { + if (r5 & 1) + { + rfu_setRecvBuffer(16, i, Rfu.unk_14[i], 14); + rfu_clearSlot(3, i); + } + r5 >>= 1; + } +} + +void sub_80F8AEC(void) +{ + u8 r5 = gUnknown_3005E10.unk_00; + rfu_UNI_setSendData(r5, Rfu.unk_c87, 70); + Rfu.unk_cda = sub_80F886C(r5); + Rfu.unk_ce2 = r5; + sub_80F887C(r5, -1); + Rfu.unk_0c = 1; +} + +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, 14) == 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); +} + +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); +} + +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 < 3; i++) + { + if (FuncIsActiveTask(gUnknown_843ED88[i]) == TRUE) + { + DestroyTask(FindTaskIdByFunc(gUnknown_843ED88[i])); + } + } +} + +void sub_80F8E74(void) +{ + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return; + Rfu.unk_67 = CreateTask(sub_80F8738, 1); +} + +bool8 sub_80F8EA4(void) +{ + if (Rfu.unk_04 == 7 && Rfu.unk_ccd) + { + return TRUE; + } + return FALSE; +} + +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; +} + +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; +} diff --git a/sym_bss.txt b/sym_bss.txt index 08f390b01..e6ef49e94 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -70,19 +70,10 @@ gUnknown_3000FE8: @ 3000FE8 .align 2 .include "src/easy_chat.o" + .align 2 + .include "src/link_rfu_2.o" -gUnknown_3001188: @ 3001188 - .space 0x8 - -gRfuAPIBuffer: @ 3001190 - .space 0xE68 - -gUnknown_3001FF8: @ 3001FF8 - .space 0x10 - -gUnknown_3002008: @ 3002008 - .space 0x10 - + .align 2 gUnknown_3002018: @ 3002018 .space 0x4 -- cgit v1.2.3 From d9ea5a08159ededd81fc0d8c33b0270b925081b6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 13 Jan 2020 22:08:11 -0500 Subject: link_rfu_2 through rfufunc_80FA020 --- asm/link_rfu_2.s | 2298 --------------------------------------------------- data/link_rfu_2.s | 12 - include/link.h | 1 + include/link_rfu.h | 16 +- include/overworld.h | 25 + src/link_rfu_2.c | 711 +++++++++++++++- 6 files changed, 743 insertions(+), 2320 deletions(-) diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index a5426166d..e67fa8ccf 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -5,2304 +5,6 @@ .text - thumb_func_start sub_80F8F7C -sub_80F8F7C: @ 80F8F7C - push {lr} - adds r1, r0, 0 - ldr r2, _080F8F94 @ =Rfu - 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 Rfu -_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 @ =Rfu - movs r0, 0xE - strh r0, [r1, 0x4] - bx lr - .align 2, 0 -_080F8FA8: .4byte Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - ldrh r0, [r6, 0x4] - cmp r0, 0x13 - bhi _080F913C - bl rfu_REQ_recvData - bl rfu_waitREQComplete - movs r0, 0 - bl LinkRfu_REQ_SendData_HandleParentRelationship - b _080F91F6 - .align 2, 0 -_080F9138: .4byte Rfu -_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 @ =Rfu - ldr r1, _080F91E8 @ =0x00000992 - adds r0, r1 - ldrb r0, [r0] - bl rfu_UNI_readySendData - movs r0, 0x1 - bl LinkRfu_REQ_SendData_HandleParentRelationship - b _080F91F0 - .align 2, 0 -_080F91E4: .4byte Rfu -_080F91E8: .4byte 0x00000992 -_080F91EC: - bl rfu_REQ_PARENT_resumeRetransmitAndChange -_080F91F0: - ldr r1, _080F9200 @ =Rfu - movs r0, 0x1 - strb r0, [r1, 0xE] -_080F91F6: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080F9200: .4byte Rfu - 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 @ =Rfu - 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 @ =Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 @ =Rfu - 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 @ =Rfu+0x996 - 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 @ =Rfu - 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 Rfu -_080F9448: .4byte 0x000009a6 -_080F944C: .4byte Rfu+0x996 -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu+0x124 - 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 @ =Rfu - 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 @ =Rfu - 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 @ =Rfu - 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 Rfu+0x124 -_080F963C: .4byte gRecvCmds -_080F9640: .4byte gUnknown_3005E10 -_080F9644: .4byte Rfu -_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 @ =Rfu - 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 @ =Rfu+0x6a0 - 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 @ =Rfu+0x6e - 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 Rfu -_080F970C: .4byte gUnknown_3002008 -_080F9710: .4byte 0xffff8900 -_080F9714: .4byte gUnknown_3001FF8 -_080F9718: .4byte Rfu+0x6a0 -_080F971C: .4byte Rfu+0x6e - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu - thumb_func_end Rfu_ResetBlockReceivedFlag - - thumb_func_start sub_80F9770 -sub_80F9770: @ 80F9770 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _080F9784 @ =Rfu - ldrb r1, [r0, 0xC] - adds r5, r0, 0 - cmp r1, 0x1 - bne _080F9788 - movs r0, 0 - b _080F97AA - .align 2, 0 -_080F9784: .4byte Rfu -_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 @ =Rfu - 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 Rfu -_080F9824: .4byte rfu_func_080F97B8 - thumb_func_end IsSendingKeysToRfu - - thumb_func_start sub_80F9828 -sub_80F9828: @ 80F9828 - push {r4,lr} - ldr r4, _080F9848 @ =Rfu - 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 Rfu -_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 @ =Rfu - movs r0, 0 - str r0, [r1] - bx lr - .align 2, 0 -_080F9864: .4byte Rfu - 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 @ =Rfu - 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 @ =Rfu - strb r0, [r3, 0xD] - ldr r4, _080F994C @ =gRecvCmds + 4 - adds r0, r2, r4 - bl sub_80F9770 - ldr r1, _080F9950 @ =Rfu+0x986 - strb r0, [r1] - b _080F9BF8 - .align 2, 0 -_080F993C: .4byte Rfu -_080F9940: .4byte gReceivedRemoteLinkPlayers -_080F9944: .4byte gRfuLinkStatus -_080F9948: .4byte gRecvCmds + 2 -_080F994C: .4byte gRecvCmds + 4 -_080F9950: .4byte Rfu+0x986 -_080F9954: - ldr r2, _080F99AC @ =Rfu - 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 Rfu -_080F99B0: .4byte gRecvCmds + 2 -_080F99B4: .4byte gRecvCmds + 4 -_080F99B8: - ldr r4, _080F9A88 @ =Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu+0xe4 - add r1, r8 - movs r0, 0x1 - strb r0, [r1] - b _080F9BF4 - .align 2, 0 -_080F9ACC: .4byte Rfu+0xe4 -_080F9AD0: - ldr r2, _080F9AF8 @ =Rfu - 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 Rfu -_080F9AFC: .4byte gRecvCmds + 2 -_080F9B00: - ldr r7, _080F9B4C @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu - 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 @ =Rfu - 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 Rfu -_080F9D80: - bl sub_80F9C50 - lsls r0, 24 - cmp r0, 0 - beq _080F9E22 - ldr r0, _080F9D94 @ =Rfu - adds r0, 0x5A - ldrb r0, [r0] - b _080F9E20 - .align 2, 0 -_080F9D94: .4byte Rfu -_080F9D98: - ldr r3, _080F9DD4 @ =Rfu - 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 Rfu -_080F9DD8: .4byte 0x0000099a -_080F9DDC: .4byte 0x0000099b -_080F9DE0: .4byte gUnknown_843EC41 -_080F9DE4: .4byte 0x00000996 -_080F9DE8: - ldr r0, _080F9DF8 @ =Rfu - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4, 0x2] - b _080F9E22 - .align 2, 0 -_080F9DF8: .4byte Rfu -_080F9DFC: - movs r4, 0 - ldr r3, _080F9E18 @ =Rfu+0xf2 -_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 Rfu+0xf2 -_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 @ =Rfu+0xf2 - 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 Rfu+0xf2 - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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} diff --git a/data/link_rfu_2.s b/data/link_rfu_2.s index 640b04b79..4877a20e2 100644 --- a/data/link_rfu_2.s +++ b/data/link_rfu_2.s @@ -6,18 +6,6 @@ .section .rodata .align 2 - .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" diff --git a/include/link.h b/include/link.h index d61152d8a..bb3ffbb2f 100644 --- a/include/link.h +++ b/include/link.h @@ -188,6 +188,7 @@ extern bool8 gLinkVSyncDisabled; extern u8 gWirelessCommType; extern u8 gShouldAdvanceLinkState; +extern u16 gLinkPartnersHeldKeys[6]; void Task_DestroySelf(u8); void OpenLink(void); diff --git a/include/link_rfu.h b/include/link_rfu.h index 7f695ebe2..cb315f31d 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -97,6 +97,14 @@ struct UnkRfuStruct_2_Sub_9e8 /* 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; +}; + extern struct UnkRfuStruct_1 gUnknown_3005E10; void AddTextPrinterToWindow1(const u8 *str); @@ -120,7 +128,7 @@ 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); +bool32 Rfu_InitBlockSend(const u8 * src, size_t size); bool8 sub_80FA0F8(u8 a0); u8 Rfu_GetBlockReceivedStatus(void); void Rfu_SetBlockReceivedFlag(u8 who); @@ -139,6 +147,7 @@ struct UnkLinkRfuStruct_02022B14 *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); @@ -153,6 +162,11 @@ 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); +bool8 sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2); +bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1); +bool8 sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1); #include "mevent_server.h" extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[]; 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/src/link_rfu_2.c b/src/link_rfu_2.c index 80873ec60..5d8c26983 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -2,6 +2,7 @@ #include "librfu.h" #include "link.h" #include "link_rfu.h" +#include "overworld.h" #include "quest_log.h" #include "task.h" @@ -17,15 +18,7 @@ struct UnkRfuStruct_2_Sub_6c /* 0x12 */ u8 unk_12; }; -struct UnkRfuStruct_2_Sub_c1c -{ - /* 0x00 */ u8 unk_00[2][14]; - /* 0x1c */ vu8 unk_1c; - /* 0x1d */ vu8 unk_1d; - /* 0x1e */ vu8 unk_1e; -}; - -struct +struct UnkRfuStruct_2 { /* 0x000 */ void (*RfuFunc)(void); /* 0x004 */ u16 unk_04; @@ -112,13 +105,23 @@ void sub_80F8AEC(void); void sub_80F8D20(u16 a0); void sub_80F8DA8(u16 a0); void sub_80F906C(void); +void sub_80F9868(u8 unused); void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data); +void sub_80F9D04(u16 command); +void rfufunc_80F9F44(void); +void sub_80F9FA8(void); +void rfufunc_80FA020(void); +void sub_80FA510(void); void sub_80FA738(void); int sub_80FA788(void); void sub_80FA834(u8 taskId); +void sub_80FA9D0(u16 a0); +bool32 sub_80FAA58(void * a0); void sub_80FAA94(u8 taskId); void sub_80FACF0(u8 taskId); void sub_80FAFE0(u8 a0); +void sub_80FB0E8(u32 a0); +void sub_80FBCF8(u32 a0); void sub_80FC208(void); const struct UnkLinkRfuStruct_02022B2C gUnknown_843EBB4 = { @@ -636,3 +639,693 @@ 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; +} + +void sub_80F8FAC(u8 a0) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (a0 & 1) + { + rfu_UNI_readySendData(i); + break; + } + a0 >>= 1; + } +} + +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); +} + +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; + } +} + +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; +} + +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; +} + +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 < 4; 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); + sub_80FA510(); + if (Rfu.unk_ce5 && !Rfu.unk_cd9) + { + gUnknown_203AC08.unk_0e = 0; + rfu_clearSlot(3, Rfu.unk_cda); + for (i = 0; i < 4; i++) + { + if ((Rfu.unk_ce5 >> i) & 1) + { + rfu_setRecvBuffer(0x10, i, Rfu.unk_14[i], 14); + } + } + 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, 70); + 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; +} + +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; + } +} + +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--; + sub_80FA510(); + sub_80F94BC(gSendCmd, sp48); + sub_80FC63C(&Rfu.unk_9e8, sp48); + for (i = 0; i < CMD_LENGTH - 1; i++) + gSendCmd[i] = 0; + } + return IsRfuRecvQueueEmpty(); +} + +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; +} + +u8 sub_80F9770(const u8 *a0) +{ + u8 i; + + if (Rfu.unk_0c == 1) + return FALSE; + for (i = 0; i < 4; i++) + { + Rfu.unk_cde[i] = a0[i]; + } + return a0[Rfu.unk_c3e]; +} + +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 UnkLinkRfuStruct_02022B14 *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; +} + +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]++; + } + } +} + +bool8 sub_80F9C50(void) +{ + s32 i; + + for (i = 0; i < 5; i++) + { + if (Rfu.unk_80[i].unk_12) + return FALSE; + } + return TRUE; +} + +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; +} + +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; +} + +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 < 4; 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; +} + +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; + } + } +} +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; + } +} + +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; +} -- cgit v1.2.3 From b76b38c257e36ce13b32f95ed726175efddb1478 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 12:27:56 -0500 Subject: Finish porting link_rfu_2 --- asm/link_rfu_2.s | 4661 ------------------------------------------- asm/overworld.s | 2 +- common_syms/link_rfu_2.txt | 3 + data/link_rfu_2.s | 45 - include/link.h | 16 + include/link_rfu.h | 9 +- include/mystery_gift_menu.h | 1 + ld_script.txt | 2 - src/link_rfu_2.c | 1747 +++++++++++++++- src/mevent_server_helpers.c | 8 +- sym_common.txt | 11 +- sym_ewram.txt | 8 +- 12 files changed, 1703 insertions(+), 4810 deletions(-) create mode 100644 common_syms/link_rfu_2.txt diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index e67fa8ccf..2428f2984 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -5,4665 +5,4 @@ .text - thumb_func_start sub_80FA0F8 -sub_80FA0F8: @ 80FA0F8 - push {lr} - ldr r1, _080FA110 @ =Rfu - 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 Rfu - 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 @ =Rfu - 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 Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 @ =Rfu - 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 @ =Rfu - 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 Rfu -_080FA34C: .4byte 0x0000069e - thumb_func_end sub_80FA2B0 - - thumb_func_start sub_80FA350 -sub_80FA350: @ 80FA350 - push {r4,lr} - ldr r4, _080FA378 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - ldrb r0, [r0, 0xD] - bx lr - .align 2, 0 -_080FA4F4: .4byte Rfu - thumb_func_end GetRfuPlayerCount - - thumb_func_start IsLinkRfuTaskFinished -IsLinkRfuTaskFinished: @ 80FA4F8 - push {lr} - movs r1, 0 - ldr r0, _080FA50C @ =Rfu - 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 Rfu - thumb_func_end IsLinkRfuTaskFinished - - thumb_func_start sub_80FA510 -sub_80FA510: @ 80FA510 - push {lr} - ldr r0, _080FA524 @ =Rfu - ldr r0, [r0] - cmp r0, 0 - beq _080FA51E - bl _call_via_r0 -_080FA51E: - pop {r0} - bx r0 - .align 2, 0 -_080FA524: .4byte Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu+0x98d - 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 @ =Rfu+0x98d -_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 Rfu+0x98d -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_080FA6B8: .4byte 0x00000989 - thumb_func_end sub_80FA670 - - thumb_func_start sub_80FA6BC -sub_80FA6BC: @ 80FA6BC - push {r4,r5,lr} - ldr r4, _080FA6F0 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu+0x996 - 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 Rfu+0x996 - thumb_func_end sub_80FA9D0 - - thumb_func_start sub_80FA9FC -sub_80FA9FC: @ 80FA9FC - push {r4-r7,lr} - adds r2, r0, 0 - ldr r1, _080FAA4C @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 LinkRfu_REQ_SendData_HandleParentRelationship -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_080FB114: .4byte gUnknown_3005E10 - thumb_func_end sub_80FB0E8 - - thumb_func_start sub_80FB118 -sub_80FB118: @ 80FB118 - ldr r0, _080FB124 @ =Rfu - adds r0, 0xEE - ldrb r1, [r0] - movs r1, 0 - strb r1, [r0] - bx lr - .align 2, 0 -_080FB124: .4byte Rfu - 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 @ =Rfu - adds r0, 0xEE - ldrb r1, [r0] - strb r2, [r0] - b _080FB14A - .align 2, 0 -_080FB13C: .4byte Rfu -_080FB140: - ldr r0, _080FB150 @ =Rfu - adds r0, 0xEE - ldrb r1, [r0] - movs r1, 0x4 - strb r1, [r0] -_080FB14A: - pop {r0} - bx r0 - .align 2, 0 -_080FB150: .4byte Rfu - 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 @ =Rfu - movs r0, 0 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080FB16C: .4byte gUnknown_3005E10 -_080FB170: .4byte Rfu - thumb_func_end sub_80FB154 - - thumb_func_start sub_80FB174 -sub_80FB174: @ 80FB174 - ldr r1, _080FB17C @ =Rfu - ldr r0, _080FB180 @ =sub_80FB154 - str r0, [r1] - bx lr - .align 2, 0 -_080FB17C: .4byte Rfu -_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 @ =Rfu - movs r0, 0x2 - strh r0, [r1, 0x4] - b _080FB366 - .align 2, 0 -_080FB200: .4byte Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_080FB2C4: .4byte 0x0000099f -_080FB2C8: .4byte gUnknown_3005E10 -_080FB2CC: - ldr r0, _080FB2D4 @ =Rfu - adds r0, 0xF0 - b _080FB362 - .align 2, 0 -_080FB2D4: .4byte Rfu -_080FB2D8: - ldr r0, _080FB2E0 @ =Rfu - adds r0, 0xF0 - movs r1, 0x3 - b _080FB364 - .align 2, 0 -_080FB2E0: .4byte Rfu -_080FB2E4: - ldr r1, _080FB314 @ =Rfu - 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 Rfu -_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 @ =Rfu - adds r0, 0xEF - b _080FB362 - .align 2, 0 -_080FB348: .4byte Rfu -_080FB34C: - adds r0, r4, 0 - bl sub_80FB0E8 - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80FB9E4 - ldr r0, _080FB374 @ =Rfu - 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 Rfu -_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 @ =Rfu - movs r0, 0x6 - strh r0, [r1, 0x4] - b _080FB556 - .align 2, 0 -_080FB3F0: .4byte Rfu -_080FB3F4: - ldr r0, _080FB400 @ =Rfu - ldr r1, _080FB404 @ =gUnknown_3005E10 - ldrh r1, [r1, 0x14] - ldr r2, _080FB408 @ =0x00000985 - adds r0, r2 - b _080FB554 - .align 2, 0 -_080FB400: .4byte Rfu -_080FB404: .4byte gUnknown_3005E10 -_080FB408: .4byte 0x00000985 -_080FB40C: - ldr r0, _080FB41C @ =Rfu - 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 Rfu -_080FB420: .4byte gUnknown_3005E10 -_080FB424: .4byte 0x000008f6 -_080FB428: - movs r0, 0x2 - adds r1, r4, 0 - bl sub_80FB9E4 - b _080FB556 -_080FB432: - ldr r4, _080FB468 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 @ =Rfu - 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 Rfu -_080FB4DC: .4byte 0x0000093e -_080FB4E0: .4byte gUnknown_843EDF8 -_080FB4E4: .4byte gReceivedRemoteLinkPlayers -_080FB4E8: - ldr r0, _080FB4FC @ =Rfu - 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 Rfu -_080FB500: .4byte gUnknown_843EE10 -_080FB504: - ldr r1, _080FB51C @ =Rfu - 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 Rfu -_080FB520: .4byte 0x000008f4 -_080FB524: - movs r0, 0x1 - movs r1, 0xF3 - bl sub_80FB9E4 - movs r0, 0xF3 - bl sub_80FB0E8 - ldr r0, _080FB538 @ =Rfu - adds r0, 0xEF - b _080FB552 - .align 2, 0 -_080FB538: .4byte Rfu -_080FB53C: - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80FB9E4 - adds r0, r4, 0 - bl sub_80FB0E8 - ldr r0, _080FB55C @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - movs r0, 0x11 - strh r0, [r1, 0x4] - b _080FB9C2 - .align 2, 0 -_080FB68C: .4byte Rfu -_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 @ =Rfu - 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 Rfu -_080FB708: .4byte 0x00000991 -_080FB70C: .4byte gUnknown_3005E10 -_080FB710: .4byte 0x0000099e -_080FB714: - ldr r0, _080FB744 @ =Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_080FB7D0: - ldr r0, _080FB7DC @ =Rfu - ldr r1, _080FB7E0 @ =gUnknown_3005E10 - ldrh r1, [r1, 0x14] - ldr r2, _080FB7E4 @ =0x00000985 - adds r0, r2 - b _080FB9C0 - .align 2, 0 -_080FB7DC: .4byte Rfu -_080FB7E0: .4byte gUnknown_3005E10 -_080FB7E4: .4byte 0x00000985 -_080FB7E8: - ldr r0, _080FB7F8 @ =Rfu - 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 Rfu -_080FB7FC: .4byte gUnknown_3005E10 -_080FB800: .4byte 0x000008f6 -_080FB804: - ldr r1, _080FB824 @ =Rfu - 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 Rfu -_080FB828: .4byte 0x00000987 -_080FB82C: .4byte sub_80FC028 -_080FB830: - movs r0, 0x2 - movs r1, 0x23 - bl sub_80FB9E4 - b _080FB9C2 -_080FB83A: - ldr r4, _080FB860 @ =Rfu - 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 Rfu -_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 @ =Rfu - adds r0, 0xF0 - movs r1, 0x1 - b _080FB9C0 - .align 2, 0 -_080FB88C: .4byte gUnknown_3005E10 -_080FB890: .4byte Rfu -_080FB894: - ldr r2, _080FB8B4 @ =Rfu - 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 Rfu -_080FB8B8: .4byte gRfuLinkStatus -_080FB8BC: .4byte 0x000008f4 -_080FB8C0: - ldr r0, _080FB900 @ =Rfu - adds r0, 0xF0 - movs r1, 0x2 - strb r1, [r0] -_080FB8C8: - ldr r2, _080FB900 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_080FB97C: - ldr r0, _080FB984 @ =Rfu - ldr r2, _080FB988 @ =0x0000099b - adds r0, r2 - b _080FB9BE - .align 2, 0 -_080FB984: .4byte Rfu -_080FB988: .4byte 0x0000099b -_080FB98C: - movs r0, 0x1 - movs r1, 0xF3 - bl sub_80FB9E4 - movs r0, 0xF3 - bl sub_80FB0E8 - ldr r0, _080FB9A4 @ =Rfu - adds r0, 0xEF - movs r1, 0x1 - b _080FB9C0 - .align 2, 0 -_080FB9A4: .4byte Rfu -_080FB9A8: - adds r0, r4, 0 - bl sub_80FB0E8 - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80FB9E4 - ldr r0, _080FB9C8 @ =Rfu - 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 Rfu -_080FB9CC: .4byte 0x00000993 - thumb_func_end sub_80FB5EC - - thumb_func_start sub_80FB9D0 -sub_80FB9D0: @ 80FB9D0 - ldr r0, _080FB9DC @ =Rfu - ldr r1, _080FB9E0 @ =0x0000099c - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - bx lr - .align 2, 0 -_080FB9DC: .4byte Rfu -_080FB9E0: .4byte 0x0000099c - thumb_func_end sub_80FB9D0 - - thumb_func_start sub_80FB9E4 -sub_80FB9E4: @ 80FB9E4 - ldr r2, _080FB9F0 @ =Rfu - adds r3, r2, 0 - adds r3, 0xF1 - strb r0, [r3] - strh r1, [r2, 0xA] - bx lr - .align 2, 0 -_080FB9F0: .4byte Rfu - thumb_func_end sub_80FB9E4 - - thumb_func_start sub_80FB9F4 -sub_80FB9F4: @ 80FB9F4 - ldr r0, _080FB9FC @ =Rfu - adds r0, 0xF1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080FB9FC: .4byte Rfu - 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 @ =Rfu - movs r1, 0x9A - lsls r1, 4 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080FBA28: .4byte Rfu - thumb_func_end sub_80FBA1C - - thumb_func_start Rfu_IsMaster -Rfu_IsMaster: @ 80FBA2C - ldr r0, _080FBA34 @ =Rfu - ldrb r0, [r0, 0xC] - bx lr - .align 2, 0 -_080FBA34: .4byte Rfu - 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 @ =Rfu - adds r1, 0x66 - strb r0, [r1] -_080FBB3E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FBB44: .4byte nullsub_89 -_080FBB48: .4byte Rfu - 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 @ =Rfu - adds r0, 0x66 - ldrb r0, [r0] - bl DestroyTask -_080FBB66: - pop {r0} - bx r0 - .align 2, 0 -_080FBB6C: .4byte nullsub_89 -_080FBB70: .4byte Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu+0x996 - 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 Rfu+0x996 - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - ldr r1, _080FBF2C @ =0x000008f5 - adds r0, r1 - strb r2, [r0] - b _080FBF36 - .align 2, 0 -_080FBF28: .4byte Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu+0x10a - 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 Rfu+0x10a -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - adds r0, 0xF0 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080FC1C4 - movs r0, 0 - b _080FC1C6 - .align 2, 0 -_080FC1C0: .4byte Rfu -_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 @ =Rfu+0x989 - 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 Rfu+0x989 -_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 @ =Rfu - 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 @ =Rfu - 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 Rfu -_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 @ =Rfu - 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 Rfu -_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 @ =Rfu - ldr r1, _080FC45C @ =0x000008d2 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080FC458: .4byte Rfu -_080FC45C: .4byte 0x000008d2 - thumb_func_end sub_80FC44C - - thumb_func_start GetRfuRecvQueueLength -GetRfuRecvQueueLength: @ 80FC460 - ldr r0, _080FC46C @ =Rfu - ldr r1, _080FC470 @ =0x0000069e - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080FC46C: .4byte Rfu -_080FC470: .4byte 0x0000069e - thumb_func_end GetRfuRecvQueueLength - - thumb_func_start nullsub_89 -nullsub_89: @ 80FC474 - bx lr - thumb_func_end nullsub_89 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 8eeb570f1..5b3c1a495 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 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_2.s b/data/link_rfu_2.s index 4877a20e2..ae38a9c89 100644 --- a/data/link_rfu_2.s +++ b/data/link_rfu_2.s @@ -6,48 +6,3 @@ .section .rodata .align 2 - .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" diff --git a/include/link.h b/include/link.h index bb3ffbb2f..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 @@ -262,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 cb315f31d..a5c60fd52 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -109,7 +109,7 @@ extern struct UnkRfuStruct_1 gUnknown_3005E10; 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); @@ -167,6 +167,13 @@ bool8 sub_80FC888(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2); bool8 sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2); bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1); bool8 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 UnkLinkRfuStruct_02022B14 *data, u8 r9, bool32 r2, s32 r3); +void rfu_syncVBlank_(void); +s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16)); +void sub_80FEB3C(void); +void sub_80FAFE0(u8 a0); #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/ld_script.txt b/ld_script.txt index 8b17d3cd6..942e4ece3 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,7 +226,6 @@ SECTIONS { src/save_menu_util.o(.text); src/map_preview_screen.o(.text); src/link_rfu_2.o(.text); - asm/link_rfu_2.o(.text); asm/link_rfu_4.o(.text); src/link_rfu.o(.text); asm/easy_chat_2.o(.text); @@ -512,7 +511,6 @@ SECTIONS { data/box_party_pokemon_dropdown.o(.rodata); src/map_preview_screen.o(.rodata); src/link_rfu_2.o(.rodata); - data/link_rfu_2.o(.rodata); data/link_rfu_4.o(.rodata); data/link_rfu.o(.rodata); src/pokedex_screen.o(.rodata); diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index 5d8c26983..9baee37ed 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -1,10 +1,17 @@ #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_2_Sub_6c { @@ -24,7 +31,7 @@ struct UnkRfuStruct_2 /* 0x004 */ u16 unk_04; /* 0x006 */ u8 filler_06[4]; /* 0x00a */ u16 unk_0a; - /* 0x00c */ u8 unk_0c; + /* 0x00c */ u8 unk_0c; // parentChildMode? /* 0x00d */ u8 playerCount; /* 0x00e */ u8 unk_0e; /* 0x00f */ u8 unk_0f; @@ -66,7 +73,7 @@ struct UnkRfuStruct_2 /* 0x93e */ u8 unk_c86; /* 0x93f */ u8 unk_c87[5][7][2]; /* 0x985 */ u8 unk_ccd; - /* 0x986 */ u8 unk_cce; + /* 0x986 */ u8 unk_cce; // childId /* 0x987 */ u8 unk_ccf; /* 0x988 */ vu8 unk_cd0; /* 0x989 */ u8 unk_cd1[4]; @@ -87,44 +94,58 @@ struct UnkRfuStruct_2 /* 0x9a1 */ u8 unk_ce9; /* 0x9a2 */ u8 unk_cea[4]; /* 0x9a6 */ u8 unk_cee[4]; -} Rfu; // size: 0x9AC +}; // size: 0x9AC + +struct UnkRfuStruct_8010A14{ + char unk_00[15]; // PokemonSioInfo + u8 unk_0f; + u8 unk_10[4]; + struct LinkPlayer unk_14[5]; + u8 fill_a0[0x5c]; +}; -EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_203ABF0 = {}; -EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_203AC08 = {}; +static EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_203ABF0 = {}; +static EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_203AC08 = {}; -ALIGNED(8) IWRAM_DATA u8 gUnknown_3001188; -ALIGNED(8) IWRAM_DATA struct RfuAPIBuffer gRfuAPIBuffer; -ALIGNED(8) IWRAM_DATA u8 gUnknown_3001FF8[14]; -ALIGNED(8) IWRAM_DATA u16 gUnknown_3002008[7]; +static u8 gUnknown_3001188; +static struct RfuAPIBuffer gRfuAPIBuffer; +static u8 gUnknown_3001FF8[14]; +static u16 gUnknown_3002008[7]; struct UnkLinkRfuStruct_02022B14 gUnknown_3005440; +struct UnkRfuStruct_2 Rfu; u8 gUnknown_3005E00[PLAYER_NAME_LENGTH]; -void sub_80F8AA4(void); -void sub_80F8AEC(void); -void sub_80F8D20(u16 a0); -void sub_80F8DA8(u16 a0); -void sub_80F906C(void); -void sub_80F9868(u8 unused); -void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data); -void sub_80F9D04(u16 command); -void rfufunc_80F9F44(void); -void sub_80F9FA8(void); -void rfufunc_80FA020(void); -void sub_80FA510(void); -void sub_80FA738(void); -int sub_80FA788(void); -void sub_80FA834(u8 taskId); -void sub_80FA9D0(u16 a0); -bool32 sub_80FAA58(void * a0); -void sub_80FAA94(u8 taskId); -void sub_80FACF0(u8 taskId); -void sub_80FAFE0(u8 a0); -void sub_80FB0E8(u32 a0); -void sub_80FBCF8(u32 a0); -void sub_80FC208(void); - -const struct UnkLinkRfuStruct_02022B2C gUnknown_843EBB4 = { +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, @@ -138,11 +159,11 @@ const struct UnkLinkRfuStruct_02022B2C gUnknown_843EBB4 = { .unk_14 = 0x012c }; -const u8 gUnknown_843EBCC[] = { +static const u8 gUnknown_843EBCC[] = { 0, 3, 2, 1, 0 }; -const u32 gUnknown_843EBD4[] = { +static const u32 gUnknown_843EBD4[] = { 0x000000, 0x000001, 0x000003, @@ -170,24 +191,24 @@ const u32 gUnknown_843EBD4[] = { 0xffffff }; -const u8 gUnknown_843EC38[] = { +static const u8 gUnknown_843EC38[] = { 0, 0, 1, 1, 2, 2, 2, 2, 3 }; -const u8 gUnknown_843EC41[] = { +static const u8 gUnknown_843EC41[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }; -const u8 gUnknown_843EC51[] = { +static const u8 gUnknown_843EC51[] = { 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 }; -const struct { +static const struct { u8 *buffer; u32 size; } gUnknown_843EC64[] = { @@ -198,11 +219,11 @@ const struct { { gBlockSendBuffer, 40 } }; -const u16 gUnknown_843EC8C[] = { +static const u16 gUnknown_843EC8C[] = { 0x0002, 0x7f7d, 0xFFFF }; -const char sUnref_843EC92[][15] = { +static const char sUnref_843EC92[][15] = { "RFU WAIT", "RFU BOOT", "RFU ERROR", @@ -216,7 +237,7 @@ const char sUnref_843EC92[][15] = { "RFU CP POLL" }; -const char sUnref_843ED37[][16] = { +static const char sUnref_843ED37[][16] = { " ", "RECOVER START ", "DISSCONECT ", @@ -224,18 +245,18 @@ const char sUnref_843ED37[][16] = { "RECOVER FAILED" }; -const TaskFunc gUnknown_843ED88[] = { +static const TaskFunc gUnknown_843ED88[] = { sub_80FA834, sub_80FAA94, sub_80FACF0 }; -void nullsub_87(const void *unused_0, u8 unused_1, u8 unused_2) +static void nullsub_87(const void *unused_0, u8 unused_1, u8 unused_2) { // debug? } -void nullsub_88(u16 unused_0, u8 unused_1, u8 unused_2, u8 unused_3) +static void nullsub_88(u16 unused_0, u8 unused_1, u8 unused_2, u8 unused_3) { } @@ -287,7 +308,7 @@ void sub_80F86F4(void) } } -void sub_80F8738(u8 taskId) +static void sub_80F8738(u8 taskId) { sub_80FA738(); switch (Rfu.unk_04) @@ -325,12 +346,12 @@ void sub_80F8738(u8 taskId) } } -s32 sub_80F886C(u8 idx) +static u8 sub_80F886C(u8 idx) { return gUnknown_843EC51[idx]; } -void sub_80F887C(s32 r2, s32 r5) +static void sub_80F887C(s32 r2, s32 r5) { u8 i; u8 r4 = 1; @@ -374,7 +395,7 @@ void sub_80F887C(s32 r2, s32 r5) } } -void sub_80F893C(u8 taskId) +static void sub_80F893C(u8 taskId) { switch (Rfu.unk_04) { @@ -428,7 +449,7 @@ void sub_80F893C(u8 taskId) } } -void sub_80F8AA4(void) +static void sub_80F8AA4(void) { u8 i; u8 r5 = gUnknown_3005E10.unk_00; @@ -443,7 +464,7 @@ void sub_80F8AA4(void) } } -void sub_80F8AEC(void) +static void sub_80F8AEC(void) { u8 r5 = gUnknown_3005E10.unk_00; rfu_UNI_setSendData(r5, Rfu.unk_c87, 70); @@ -453,7 +474,7 @@ void sub_80F8AEC(void) Rfu.unk_0c = 1; } -void sub_80F8B34(u8 taskId) +static void sub_80F8B34(u8 taskId) { if (sub_80F9800()->unk_0a_0 == 0x54 && sub_80FB9F4() == 4) { @@ -524,7 +545,7 @@ void sub_80F8D14(void) sub_80FD760(FALSE); } -void sub_80F8D20(u16 unused) +static void sub_80F8D20(u16 unused) { s32 i; @@ -546,7 +567,7 @@ void sub_80F8D20(u16 unused) LinkRfu_REQ_SendData_HandleParentRelationship(TRUE); } -void sub_80F8DA8(u16 unused) +static void sub_80F8DA8(u16 unused) { Rfu.unk_cdb = 1; } @@ -592,14 +613,14 @@ void sub_80F8DC0(void) } } -void sub_80F8E74(void) +static void sub_80F8E74(void) { if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) return; Rfu.unk_67 = CreateTask(sub_80F8738, 1); } -bool8 sub_80F8EA4(void) +static bool8 sub_80F8EA4(void) { if (Rfu.unk_04 == 7 && Rfu.unk_ccd) { @@ -608,7 +629,7 @@ bool8 sub_80F8EA4(void) return FALSE; } -bool32 sub_80F8ECC(void) +static bool32 sub_80F8ECC(void) { if (Rfu.unk_04 == 7 && !sub_80FD610(gRfuLinkStatus->partner[Rfu.unk_c3d].id, 240)) { @@ -618,7 +639,7 @@ bool32 sub_80F8ECC(void) return FALSE; } -void sub_80F8F10(void) +static void sub_80F8F10(void) { if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) return; @@ -655,7 +676,7 @@ void sub_80F8FA0(void) Rfu.unk_04 = 14; } -void sub_80F8FAC(u8 a0) +static void sub_80F8FAC(u8 a0) { u8 i; @@ -670,7 +691,7 @@ void sub_80F8FAC(u8 a0) } } -void sub_80F8FD4(void) +static void sub_80F8FD4(void) { s32 i, j; @@ -686,7 +707,7 @@ void sub_80F8FD4(void) CpuFill16(0, gRecvCmds, sizeof gRecvCmds); } -void sub_80F9038(void) +static void sub_80F9038(void) { s32 i; for (i = 0; i < 7; i++) @@ -699,7 +720,7 @@ void sub_80F9038(void) } } -void sub_80F906C(void) +static void sub_80F906C(void) { if (Rfu.unk_c3c) { @@ -742,7 +763,7 @@ bool32 IsRfuRecvQueueEmpty(void) return TRUE; } -bool32 sub_80F911C(void) +static bool32 sub_80F911C(void) { if (Rfu.unk_04 < 20) { @@ -788,7 +809,7 @@ bool32 sub_80F911C(void) return FALSE; } -bool32 sub_80F9204(void) +static bool32 sub_80F9204(void) { u16 i; u16 flags; @@ -844,7 +865,7 @@ bool32 sub_80F9204(void) } sub_80F9038(); sub_80F9868(0); - sub_80FA510(); + CallRfuFunc(); if (Rfu.unk_ce5 && !Rfu.unk_cd9) { gUnknown_203AC08.unk_0e = 0; @@ -876,7 +897,7 @@ bool32 sub_80F9204(void) return gRfuLinkStatus->sendSlotUNIFlag ? retval & 1 : FALSE; } -void sub_80F94BC(u16 *a0, u8 *a1) +static void sub_80F94BC(u16 *a0, u8 *a1) { s32 i; @@ -897,7 +918,7 @@ void sub_80F94BC(u16 *a0, u8 *a1) } } -bool32 sub_80F9514(void) +static bool32 sub_80F9514(void) { u8 i; u8 j; @@ -935,7 +956,7 @@ bool32 sub_80F9514(void) if (Rfu.unk_cd0) { Rfu.unk_cd0--; - sub_80FA510(); + CallRfuFunc(); sub_80F94BC(gSendCmd, sp48); sub_80FC63C(&Rfu.unk_9e8, sp48); for (i = 0; i < CMD_LENGTH - 1; i++) @@ -944,7 +965,7 @@ bool32 sub_80F9514(void) return IsRfuRecvQueueEmpty(); } -void sub_80F965C(u8 unused, u32 flags) +static void sub_80F965C(u8 unused, u32 flags) { s32 i, j; @@ -986,7 +1007,7 @@ void Rfu_ResetBlockReceivedFlag(u8 a0) Rfu.unk_80[a0].unk_12 = 0; } -u8 sub_80F9770(const u8 *a0) +static u8 sub_80F9770(const u8 *a0) { u8 i; @@ -999,7 +1020,7 @@ u8 sub_80F9770(const u8 *a0) return a0[Rfu.unk_c3e]; } -void rfu_func_080F97B8(void) +static void rfu_func_080F97B8(void) { // static u8 gUnknown_3001188; if (gReceivedRemoteLinkPlayers @@ -1033,7 +1054,7 @@ void Rfu_set_zero(void) Rfu.RfuFunc = NULL; } -void sub_80F9868(u8 unused) +static void sub_80F9868(u8 unused) { u16 i; u16 j; @@ -1138,7 +1159,7 @@ void sub_80F9868(u8 unused) } } -bool8 sub_80F9C50(void) +static bool8 sub_80F9C50(void) { s32 i; @@ -1150,7 +1171,7 @@ bool8 sub_80F9C50(void) return TRUE; } -bool8 sub_80F9C78(void) +static bool8 sub_80F9C78(void) { s32 i; @@ -1162,7 +1183,7 @@ bool8 sub_80F9C78(void) return TRUE; } -void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data) +static void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data) { data->unk_00 = 0; data->unk_02 = 0; @@ -1188,7 +1209,7 @@ u8 Rfu_GetBlockReceivedStatus(void) return flags; } -void sub_80F9D04(u16 command) +static void sub_80F9D04(u16 command) { u8 i; u8 *buff; @@ -1273,7 +1294,7 @@ bool32 Rfu_InitBlockSend(const u8 *src, size_t size) return TRUE; } -void rfufunc_80F9F44(void) +static void rfufunc_80F9F44(void) { if (gSendCmd[0] == 0) { @@ -1290,7 +1311,7 @@ void rfufunc_80F9F44(void) } } } -void sub_80F9FA8(void) +static void sub_80F9FA8(void) { s32 i; const u8 *src = Rfu.unk_6c.unk_04; @@ -1305,7 +1326,7 @@ void sub_80F9FA8(void) } } -void rfufunc_80FA020(void) +static void rfufunc_80FA020(void) { const u8 *src = Rfu.unk_6c.unk_04; u8 mpId = GetMultiplayerId(); @@ -1329,3 +1350,1569 @@ void rfufunc_80FA020(void) 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 == FALSE) + return sub_80FEA34(0, 0); + sub_80FEA34(1, 0x258); + return 0; +} + +void sub_80FA4A8(void) +{ + Rfu.unk_cd9 = 1; + sub_80FD760(FALSE); +} + +u8 rfu_get_multiplayer_id(void) +{ + if (Rfu.unk_0c == 1) + return 0; + return Rfu.unk_cce; +} + +u8 GetRfuPlayerCount(void) +{ + return Rfu.playerCount; +} + +bool8 IsLinkRfuTaskFinished(void) +{ + return Rfu.RfuFunc ? FALSE : TRUE; +} + +static void CallRfuFunc(void) +{ + if (Rfu.RfuFunc) + 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 < 4; 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 < 4; 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 < 4; 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 < 4; 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 < 4; 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 < 4; 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 < 4; 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 < 4; 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 < 4; 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, 0xD); + 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 < 4; 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 < 4; i++) + { + if ((gUnknown_3005E10.unk_14 >> i) & 1) + { + struct UnkLinkRfuStruct_02022B14 *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 < 4; 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 < 4; i++) + { + if ((a0 >> i) & 1) + { + struct UnkLinkRfuStruct_02022B14 *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) +{ + rfu_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 < 4; 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 < 4; i++) + { + u16 trainerId = ReadU16(((struct UnkLinkRfuStruct_02022B14 *)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 < 4; 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 UnkLinkRfuStruct_02022B14 *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 UnkLinkRfuStruct_02022B14 *structPtr2 = &Rfu.unk_10A; + 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(Rfu.unk_10A.unk_00.playerTrainerId); + u8 id = sub_80FBC70(Rfu.playerName, trainerId); + if (id != 0xFF) + { + if (!sub_80FBF98(gTasks[taskId].data[1], (struct UnkLinkRfuStruct_02022B14 *)&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 UnkLinkRfuStruct_02022B14 *structPtr, u8 a2) +{ + u8 taskId, taskId2; + + Rfu.unk_ccf = 0; + Rfu.unk_f1 = 0; + StringCopy(Rfu.playerName, name); + memcpy(&Rfu.unk_10A, structPtr, 0xD); + 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 < 4; 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 < 4; 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 < 4; 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 < 4; 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 < 4; 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/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/sym_common.txt b/sym_common.txt index 848c19613..9f39f9f2b 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -75,17 +75,8 @@ gUnknown_3005078: @ 3005078 gUnknown_3005430: @ 3005430 .space 0x10 -gUnknown_3005440: @ 3005440 - .space 0x10 - -@ This name is necessary to match assert statements in link_rfu_2 -Rfu: @ 3005450 - .space 0x9AC - .align 4 -gUnknown_3005E00: @ 3005E00 - .space 0x10 - + .include "link_rfu_2.o" .align 4 .include "link_rfu.o" .align 4 diff --git a/sym_ewram.txt b/sym_ewram.txt index 9e5e91782..2647ced8c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -330,14 +330,10 @@ gUnknown_203ABE8: @ 203ABE8 .align 2 .include "src/map_preview_screen.o" - .align 2 -gUnknown_203ABF0: @ 203ABF0 - .space 0x18 - -gUnknown_203AC08: @ 203AC08 - .space 0xDC + .include "src/link_rfu_2.o" + .align 2 gUnknown_203ACE4: @ 203ACE4 .space 0x4 -- cgit v1.2.3 From 246e3461c78b8d6fb74cfadcfb9c72690b070069 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 12:41:43 -0500 Subject: Move GFtgtGname out of librfu.h --- include/librfu.h | 28 ---------------------------- include/link_rfu.h | 34 +++++++++++++++++++++++++++++++--- include/trade.h | 6 +++--- include/union_room.h | 4 ++-- src/link_rfu_2.c | 33 +++++++++++++++------------------ src/party_menu.c | 4 ++-- src/trade.c | 4 ++-- 7 files changed, 55 insertions(+), 58 deletions(-) diff --git a/include/librfu.h b/include/librfu.h index 1b8e6573f..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 { diff --git a/include/link_rfu.h b/include/link_rfu.h index a5c60fd52..b7321b025 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -4,6 +4,34 @@ #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; @@ -16,7 +44,7 @@ struct UnkLinkRfuStruct_02022B2C u16 unk_02; u8 unk_04; u16 unk_06; - struct UnkLinkRfuStruct_02022B14 *unk_08; + struct GFtgtGname *unk_08; u8 *unk_0c; u8 unk_10; u8 unk_11; @@ -143,7 +171,7 @@ 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); @@ -169,7 +197,7 @@ bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1); bool8 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 UnkLinkRfuStruct_02022B14 *data, u8 r9, bool32 r2, s32 r3); +void sub_80FCB54(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3); void rfu_syncVBlank_(void); s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16)); void sub_80FEB3C(void); 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/src/link_rfu_2.c b/src/link_rfu_2.c index 9baee37ed..ace634d17 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -58,10 +58,7 @@ struct UnkRfuStruct_2 /* 0x0fe */ u16 unk_fe; /* 0x100 */ u16 unk_100; /* 0x102 */ u8 unk_102; - /* 0x103 */ u8 filler_103[0x10A - 0x103]; - /* 0x10A */ struct UnkLinkRfuStruct_02022B14 unk_10A; - /* 0x11B */ u8 filler_; - /* 0x11C */ u8 playerName[PLAYER_NAME_LENGTH]; + /* 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; @@ -112,7 +109,7 @@ static struct RfuAPIBuffer gRfuAPIBuffer; static u8 gUnknown_3001FF8[14]; static u16 gUnknown_3002008[7]; -struct UnkLinkRfuStruct_02022B14 gUnknown_3005440; +struct GFtgtGname gUnknown_3005440; struct UnkRfuStruct_2 Rfu; u8 gUnknown_3005E00[PLAYER_NAME_LENGTH]; @@ -1033,7 +1030,7 @@ static void rfu_func_080F97B8(void) } } -struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void) +struct GFtgtGname *sub_80F9800(void) { return &gUnknown_3005440; } @@ -1994,7 +1991,7 @@ static void sub_80FAF1C(void) void sub_80FAF34(void) { - memset(&gUnknown_3005440, 0, 0xD); + memset(&gUnknown_3005440, 0, RFU_GAME_NAME_LENGTH); sub_80FCB54(&gUnknown_3005440, 0, 0, 0); } @@ -2107,7 +2104,7 @@ static void sub_80FB184(u8 a0, u8 unused1) { if ((gUnknown_3005E10.unk_14 >> i) & 1) { - struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)&gRfuLinkStatus->partner[i].gname; + struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname; if (structPtr->unk_0a_0 == sub_80F9800()->unk_0a_0) { Rfu.unk_cd1[i] = 0; @@ -2267,7 +2264,7 @@ static u8 sub_80FB5A0(s32 a0) { if ((a0 >> i) & 1) { - struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)&gRfuLinkStatus->partner[i].gname; + struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname; if (structPtr->unk_0a_0 == 0x45) ret |= (1 << i); } @@ -2565,7 +2562,7 @@ static u8 sub_80FBC70(const u8 *a0, u16 a1) for (i = 0; i < 4; i++) { - u16 trainerId = ReadU16(((struct UnkLinkRfuStruct_02022B14 *)gRfuLinkStatus->partner[i].gname)->unk_00.playerTrainerId); + 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) @@ -2697,7 +2694,7 @@ void sub_80FBF54(const u8 *src, u16 trainerId) data[8] = trainerId; } -static bool32 sub_80FBF98(s16 a1, struct UnkLinkRfuStruct_02022B14 *structPtr) +static bool32 sub_80FBF98(s16 a1, struct GFtgtGname *structPtr) { if (sub_80F9800()->unk_0a_0 == 0x45) { @@ -2710,7 +2707,7 @@ static bool32 sub_80FBF98(s16 a1, struct UnkLinkRfuStruct_02022B14 *structPtr) } else if (a1 == 0x44) { - struct UnkLinkRfuStruct_02022B14 *structPtr2 = &Rfu.unk_10A; + struct GFtgtGname *structPtr2 = (struct GFtgtGname *)&Rfu.unk_104.gname; if (structPtr2->species == SPECIES_EGG) { if (structPtr->species == structPtr2->species) @@ -2742,11 +2739,11 @@ static void sub_80FC028(u8 taskId) if (Rfu.unk_ccd != 0 && gUnknown_3005E10.unk_06 == 0) { - u16 trainerId = ReadU16(Rfu.unk_10A.unk_00.playerTrainerId); - u8 id = sub_80FBC70(Rfu.playerName, trainerId); + 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 UnkLinkRfuStruct_02022B14 *)&gRfuLinkStatus->partner[id].gname)) + 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)) { @@ -2763,14 +2760,14 @@ static void sub_80FC028(u8 taskId) } } -void sub_80FC114(const u8 *name, struct UnkLinkRfuStruct_02022B14 *structPtr, u8 a2) +void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2) { u8 taskId, taskId2; Rfu.unk_ccf = 0; Rfu.unk_f1 = 0; - StringCopy(Rfu.playerName, name); - memcpy(&Rfu.unk_10A, structPtr, 0xD); + 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; 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; -- cgit v1.2.3 From 97b4865fec6139d8fb87c0005e4d5eead8bbf57c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 12:43:46 -0500 Subject: Remove link_rfu_2 asm files --- asm/link_rfu_2.s | 8 -------- data/link_rfu_2.s | 8 -------- 2 files changed, 16 deletions(-) delete mode 100644 asm/link_rfu_2.s delete mode 100644 data/link_rfu_2.s diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s deleted file mode 100644 index 2428f2984..000000000 --- a/asm/link_rfu_2.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - .align 2, 0 @ Don't pad with nop. diff --git a/data/link_rfu_2.s b/data/link_rfu_2.s deleted file mode 100644 index ae38a9c89..000000000 --- a/data/link_rfu_2.s +++ /dev/null @@ -1,8 +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 - -- cgit v1.2.3 From 0d5f88f49696d695aa934c76c500ffff4db36f4a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 12:45:33 -0500 Subject: Move UnkRfuStruct_2 to link_rfu.h where it belongs --- include/link_rfu.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/link_rfu_2.c | 80 ------------------------------------------------------ 2 files changed, 80 insertions(+), 80 deletions(-) diff --git a/include/link_rfu.h b/include/link_rfu.h index b7321b025..bc3fa6b70 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -107,6 +107,18 @@ struct UnkRfuStruct_1 /* 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]; @@ -133,6 +145,74 @@ struct UnkRfuStruct_2_Sub_c1c /* 0x1e */ vu8 unk_1e; }; +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[4][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[4]; + /* 0x98d */ u8 unk_cd5[4]; + /* 0x991 */ u8 unk_cd9; + /* 0x992 */ u8 unk_cda; + /* 0x993 */ vu8 unk_cdb; + /* 0x994 */ vu8 unk_cdc; + /* 0x995 */ u8 unk_cdd; + /* 0x996 */ u8 unk_cde[4]; + /* 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[4]; + /* 0x9a6 */ u8 unk_cee[4]; +}; // size: 0x9AC + extern struct UnkRfuStruct_1 gUnknown_3005E10; void AddTextPrinterToWindow1(const u8 *str); diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index ace634d17..f63fe2a69 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -13,86 +13,6 @@ #include "task.h" #include "constants/species.h" -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 -{ - /* 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[4][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[4]; - /* 0x98d */ u8 unk_cd5[4]; - /* 0x991 */ u8 unk_cd9; - /* 0x992 */ u8 unk_cda; - /* 0x993 */ vu8 unk_cdb; - /* 0x994 */ vu8 unk_cdc; - /* 0x995 */ u8 unk_cdd; - /* 0x996 */ u8 unk_cde[4]; - /* 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[4]; - /* 0x9a6 */ u8 unk_cee[4]; -}; // size: 0x9AC - struct UnkRfuStruct_8010A14{ char unk_00[15]; // PokemonSioInfo u8 unk_0f; -- cgit v1.2.3 From 5ef7bf7bf4208f806214c781a2367d4129732461 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 12:50:49 -0500 Subject: data/link_rfu.s --> data/easy_chat_2.s --- asm/link_rfu_4.s | 1001 +--------------------------------------------------- data/easy_chat_2.s | 296 ++++++++++++++++ data/link_rfu.s | 296 ---------------- data/link_rfu_4.s | 124 ------- include/link_rfu.h | 29 +- ld_script.txt | 5 +- src/link.c | 2 +- src/link_rfu.c | 2 +- src/link_rfu_2.c | 91 +++-- src/link_rfu_4.c | 596 +++++++++++++++++++++++++++++++ sym_bss.txt | 6 +- 11 files changed, 977 insertions(+), 1471 deletions(-) create mode 100644 data/easy_chat_2.s delete mode 100644 data/link_rfu.s create mode 100644 src/link_rfu_4.c diff --git a/asm/link_rfu_4.s b/asm/link_rfu_4.s index 7d3d3ca7a..ab67ce135 100644 --- a/asm/link_rfu_4.s +++ b/asm/link_rfu_4.s @@ -5,979 +5,6 @@ .text - 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} @@ -1276,7 +303,7 @@ _080FCD8A: ldrb r0, [r0] cmp r0, 0x1 bne _080FCDE4 - ldr r0, _080FCDD0 @ =gUnknown_843F284 + ldr r0, _080FCDD0 @ =sWirelessStatusIndicatorSpriteTemplate adds r1, r3, 0 movs r3, 0 bl CreateSprite @@ -1290,7 +317,7 @@ _080FCD8A: adds r4, r0 ldr r0, _080FCDD8 @ =0x00001234 strh r0, [r4, 0x3C] - ldr r0, _080FCDDC @ =gUnknown_843F274 + ldr r0, _080FCDDC @ =sWirelessStatusIndicatorSpriteSheet ldrh r0, [r0, 0x6] bl GetSpriteTileStartByTag strh r0, [r4, 0x3A] @@ -1304,13 +331,13 @@ _080FCD8A: b _080FCE2A .align 2, 0 _080FCDCC: .4byte gRfuLinkStatus -_080FCDD0: .4byte gUnknown_843F284 +_080FCDD0: .4byte sWirelessStatusIndicatorSpriteTemplate _080FCDD4: .4byte gSprites _080FCDD8: .4byte 0x00001234 -_080FCDDC: .4byte gUnknown_843F274 +_080FCDDC: .4byte sWirelessStatusIndicatorSpriteSheet _080FCDE0: .4byte gUnknown_203ACE4 _080FCDE4: - ldr r0, _080FCE30 @ =gUnknown_843F284 + ldr r0, _080FCE30 @ =sWirelessStatusIndicatorSpriteTemplate adds r1, r3, 0 movs r3, 0 bl CreateSprite @@ -1324,7 +351,7 @@ _080FCDE4: adds r0, r5 ldr r1, _080FCE3C @ =0x00001234 strh r1, [r0, 0x3C] - ldr r0, _080FCE40 @ =gUnknown_843F274 + ldr r0, _080FCE40 @ =sWirelessStatusIndicatorSpriteSheet ldrh r0, [r0, 0x6] bl GetSpriteTileStartByTag ldrb r2, [r4] @@ -1348,11 +375,11 @@ _080FCE2A: pop {r0} bx r0 .align 2, 0 -_080FCE30: .4byte gUnknown_843F284 +_080FCE30: .4byte sWirelessStatusIndicatorSpriteTemplate _080FCE34: .4byte gUnknown_203ACE4 _080FCE38: .4byte gSprites _080FCE3C: .4byte 0x00001234 -_080FCE40: .4byte gUnknown_843F274 +_080FCE40: .4byte sWirelessStatusIndicatorSpriteSheet thumb_func_end CreateWirelessStatusIndicatorSprite thumb_func_start DestroyWirelessStatusIndicatorSprite @@ -1406,7 +433,7 @@ _080FCEA4: .4byte 0x070003e8 thumb_func_start LoadWirelessStatusIndicatorSpriteGfx LoadWirelessStatusIndicatorSpriteGfx: @ 80FCEA8 push {r4,lr} - ldr r4, _080FCED4 @ =gUnknown_843F274 + ldr r4, _080FCED4 @ =sWirelessStatusIndicatorSpriteSheet ldrh r0, [r4, 0x6] bl GetSpriteTileStartByTag lsls r0, 16 @@ -1416,7 +443,7 @@ LoadWirelessStatusIndicatorSpriteGfx: @ 80FCEA8 adds r0, r4, 0 bl LoadCompressedSpriteSheet _080FCEC0: - ldr r0, _080FCEDC @ =gUnknown_843F27C + ldr r0, _080FCEDC @ =sWirelessStatusIndicatorSpritePalette bl LoadSpritePalette ldr r1, _080FCEE0 @ =gUnknown_203ACE4 movs r0, 0xFF @@ -1425,9 +452,9 @@ _080FCEC0: pop {r0} bx r0 .align 2, 0 -_080FCED4: .4byte gUnknown_843F274 +_080FCED4: .4byte sWirelessStatusIndicatorSpriteSheet _080FCED8: .4byte 0xffff0000 -_080FCEDC: .4byte gUnknown_843F27C +_080FCEDC: .4byte sWirelessStatusIndicatorSpritePalette _080FCEE0: .4byte gUnknown_203ACE4 thumb_func_end LoadWirelessStatusIndicatorSpriteGfx @@ -1653,7 +680,7 @@ _080FD072: movs r1, 0x84 lsls r1, 3 adds r0, r4, r1 - ldr r1, _080FD114 @ =gUnknown_843F204 + ldr r1, _080FD114 @ =sWirelessStatusIndicatorOamData ldr r2, [r1, 0x4] ldr r1, [r1] str r1, [r0] @@ -1728,7 +755,7 @@ _080FD106: bx r0 .align 2, 0 _080FD110: .4byte gMain -_080FD114: .4byte gUnknown_843F204 +_080FD114: .4byte sWirelessStatusIndicatorOamData _080FD118: .4byte 0x00000422 _080FD11C: .4byte 0x000001ff _080FD120: .4byte 0xfffffe00 diff --git a/data/easy_chat_2.s b/data/easy_chat_2.s new file mode 100644 index 000000000..79be01714 --- /dev/null +++ b/data/easy_chat_2.s @@ -0,0 +1,296 @@ +#include "constants/region_map.h" +#include "constants/flags.h" +#include "constants/moves.h" +#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) + .include "asm/macros.inc" + .include "constants/constants.inc" + .section .rodata + .align 2 + +gUnknown_843F29C:: @ 843F29C + .2byte 0x143a, 0x1817, 0x100b, 0x200f + +gUnknown_843F2A4:: @ 843F2A4 + .2byte 0x0209, 0x140b, 0x1030, 0x102a + +gUnknown_843F2AC:: @ 843F2AC + .byte 0, 2, 2, 0 + .4byte gUnknown_8418A2B + .4byte gUnknown_84186D1 + .4byte gUnknown_84186EF + .4byte gUnknown_841880E + .4byte gUnknown_8418902 + .byte 1, 2, 3, 1 + .4byte gUnknown_8418A33 + .4byte gUnknown_8418706 + .4byte gUnknown_8418725 + .4byte gUnknown_841881B + .4byte gUnknown_8418902 + .byte 2, 2, 3, 1 + .4byte gUnknown_8418A4A + .4byte gUnknown_8418706 + .4byte gUnknown_8418725 + .4byte gUnknown_841883E + .4byte gUnknown_8418902 + .byte 3, 2, 3, 1 + .4byte gUnknown_8418A61 + .4byte gUnknown_8418706 + .4byte gUnknown_8418725 + .4byte gUnknown_841885F + .4byte gUnknown_8418902 + .byte 4, 2, 5, 2 + .4byte NULL + .4byte gUnknown_8418780 + .4byte gUnknown_841879E + .4byte gUnknown_841888C + .4byte gUnknown_8418902 + .byte 5, 2, 2, 0 + .4byte NULL + .4byte gUnknown_8418780 + .4byte gUnknown_841879E + .4byte NULL + .4byte NULL + .byte 6, 2, 3, 1 + .4byte gUnknown_8418A77 + .4byte gUnknown_84187B2 + .4byte gUnknown_84187D1 + .4byte gUnknown_84188AC + .4byte gUnknown_8418902 + .byte 7, 2, 3, 1 + .4byte gUnknown_8418AA1 + .4byte gUnknown_8418745 + .4byte gUnknown_8418763 + .4byte gUnknown_8418881 + .4byte gUnknown_8418902 + .byte 9, 2, 1, 3 + .4byte gUnknown_8418A87 + .4byte gUnknown_84188B9 + .4byte gUnknown_84188D6 + .4byte gUnknown_84188F0 + .4byte gUnknown_8418902 + .byte 14, 2, 2, 0 + .4byte gUnknown_8418AB2 + .4byte gUnknown_84186D1 + .4byte gUnknown_84187EE + .4byte gUnknown_8418881 + .4byte gUnknown_8418902 + +gUnknown_843F39C:: @ 843F39C data8 4x7 + .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00 + .byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00 + .byte 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 + .byte 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a + +gUnknown_843F3B8:: @ 843F3B8 gbapal + .incbin "graphics/link_rfu/unk_843F3F8.gbapal" + +gUnknown_843F3D8:: @ 843F3D8 gbapal + .incbin "graphics/link_rfu/unk_8E9BD28.gbapal" + +gUnknown_843F3F8:: @ 843F3F8 4bpp + .incbin "graphics/link_rfu/unk_843F3F8.4bpp" + +gUnknown_843F418:: @ 843F418 4bpp + .incbin "graphics/link_rfu/unk_843F418.4bpp" + +gUnknown_843F518:: @ 843F518 4bpp + .incbin "graphics/link_rfu/unk_843F518.4bpp" + +gUnknown_843F618:: @ 843F618 gbapal + .incbin "graphics/link_rfu/unk_843F638.gbapal" + +gUnknown_843F638:: @ 843F638 4bpp.lz + .incbin "graphics/link_rfu/unk_843F638.4bpp.lz" + +gUnknown_843F76C:: @ 843F76C gbapal + .incbin "graphics/link_rfu/unk_843F76C.gbapal" + +gUnknown_843F78C:: @ 843F78C gbapal + .incbin "graphics/link_rfu/unk_843F78C.gbapal" + +gUnknown_843F7AC:: @ 843F7AC 4bpp.lz + .incbin "graphics/link_rfu/unk_843F7AC.4bpp.lz" + +gUnknown_843F874:: @ 843F874 gbapal + .2byte RGB(0, 0, 0) + .2byte RGB(0, 0, 0) + .2byte RGB(7, 25, 31) + .2byte RGB(21, 21, 29) + +gUnknown_843F87C:: @ 843F87C gbapal + .2byte RGB(0, 0, 0) + .2byte RGB(31, 31, 31) + .2byte RGB(12, 12, 12) + .2byte RGB(27, 26, 27) + .2byte RGB(8, 17, 9) + + .align 2 +gUnknown_843F888:: @ 843F888 data8 6x4 + .byte 0x03, 0x04, 0x18, 0x04 + .byte 0x01, 0x04, 0x1b, 0x04 + .byte 0x03, 0x00, 0x18, 0x0a + .byte 0x06, 0x06, 0x12, 0x04 + .byte 0x10, 0x04, 0x09, 0x02 + .byte 0x0e, 0x04, 0x12, 0x04 + +gUnknown_843F8A0:: @ 843F8A0 bg_template + .4byte 0x000001c0, 0x000011dd, 0x002021e2, 0x000031fb + +gUnknown_843F8B0:: @ 843F8B0 window_template + .align 2 + .byte 0x01, 0x07, 0x00, 0x10, 0x02, 0x0a + .2byte 0x0010 + @ {0x01, 0x07, 0x00, 0x10, 0x02, 0x0a, 0x0010} + .align 2 + .byte 0x00, 0x04, 0x0f, 0x16, 0x04, 0x0f + .2byte 0x000a + @ {0x00, 0x04, 0x0f, 0x16, 0x04, 0x0f, 0x000a} + .align 2 + .byte 0x02, 0x01, 0x00, 0x1c, 0x20, 0x03 + .2byte 0x0000 + @ {0x02, 0x01, 0x00, 0x1c, 0x20, 0x03, 0x0000} + .align 2 + .byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 + .2byte 0x0000 + @ {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000} + +gUnknown_843F8D0:: @ 843F8D0 window_template + .align 2 + .byte 0x00, 0x16, 0x09, 0x05, 0x04, 0x0f + .2byte 0x0062 + @ {0x00, 0x16, 0x09, 0x05, 0x04, 0x0f, 0x0062} + +gUnknown_843F8D8:: @ 843F8D8 text + .string "{UNDERSCORE}$" + +gUnknown_843F8DB:: @ 843F8DB text + .string "{CLEAR 17}$" + + .align 2 +gUnknown_843F8E0:: @ 843F8E0 + .4byte gUnknown_847A8D8 + .4byte gUnknown_847A8FA + .4byte gUnknown_847A913 + .4byte gUnknown_847A934 + +gUnknown_843F8F0:: @ 843F8F0 sprite_sheet + obj_tiles gUnknown_843F3F8, 0x0020, 0 + obj_tiles gUnknown_843F418, 0x0100, 2 + obj_tiles gUnknown_843F518, 0x0100, 3 + null_obj_tiles + +gUnknown_843F910:: @ 843F910 sprite_palette + obj_pal gUnknown_843F3B8, 0 + obj_pal gUnknown_843F3D8, 1 + obj_pal gUnknown_8E99F24, 2 + obj_pal gUnknown_843F618, 3 + null_obj_pal + +gUnknown_843F938:: @ 843F938 sprite_sheet + obj_tiles gUnknown_843F638, 0x0800, 5 + obj_tiles gUnknown_8E9BD28, 0x1000, 1 + obj_tiles gUnknown_8E99F44, 0x0800, 6 + obj_tiles gUnknown_8E9A168, 0x1000, 4 + +gUnknown_843F958:: @ 843F958 data8 + .byte 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x00 + +gUnknown_843F960:: + .4byte 0x00000000, 0x00000c00 + +gUnknown_843F968:: @ 843F968 sprite_template + spr_template 0, 0, gUnknown_843F960, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101B20 + +gUnknown_843F980:: + .4byte 0xc0004000, 0x00000400 + +gUnknown_843F988:: + obj_image_anim_frame 0x0000, 0 + obj_image_anim_end + +gUnknown_843F990:: + obj_image_anim_frame 0x0020, 0 + obj_image_anim_end + +gUnknown_843F998:: + obj_image_anim_frame 0x0040, 0 + obj_image_anim_end + +gUnknown_843F9A0:: + obj_image_anim_frame 0x0060, 0 + obj_image_anim_end + +gUnknown_843F9A8:: + .4byte gUnknown_843F988 + .4byte gUnknown_843F990 + .4byte gUnknown_843F998 + .4byte gUnknown_843F9A0 + +gUnknown_843F9B8:: @ 843F9B8 sprite_template + spr_template 1, 1, gUnknown_843F980, gUnknown_843F9A8, NULL, gDummySpriteAffineAnimTable, sub_8101B20 + +gUnknown_843F9D0:: + .4byte 0xc0004000, 0x00000400 + +gUnknown_843F9D8:: + obj_image_anim_frame 0x0060, 0 + obj_image_anim_end + +gUnknown_843F9E0:: + obj_image_anim_frame 0x0040, 4 + obj_image_anim_frame 0x0020, 4 + obj_image_anim_end + +gUnknown_843F9EC:: + obj_image_anim_frame 0x0040, 4 + obj_image_anim_frame 0x0000, 4 + obj_image_anim_end + +gUnknown_843F9F8:: + obj_image_anim_frame 0x0040, 4 + obj_image_anim_frame 0x0060, 0 + obj_image_anim_end + +gUnknown_843FA04:: + obj_image_anim_frame 0x0040, 4 + obj_image_anim_end + +gUnknown_843FA0C:: + .4byte gUnknown_843F9D8 + .4byte gUnknown_843F9E0 + .4byte gUnknown_843F9EC + .4byte gUnknown_843F9F8 + .4byte gUnknown_843FA04 + +gUnknown_843FA20:: @ 843FA20 sprite_template + spr_template 4, 2, gUnknown_843F9D0, gUnknown_843FA0C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gUnknown_843FA38:: + .4byte 0xc0000000, 0x00000c00 + +gUnknown_843FA40:: @ 843FA40 sprite_template + spr_template 6, 2, gUnknown_843FA38, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gUnknown_843FA58:: + .4byte 0x40004000, 0x00000400 + +gUnknown_843FA60:: + .4byte 0x40000000, 0x00000400 + +gUnknown_843FA68:: + obj_image_anim_frame 0x0000, 0 + obj_image_anim_end + +gUnknown_843FA70:: + obj_image_anim_frame 0x0004, 0 + obj_image_anim_end + +gUnknown_843FA78:: + .4byte gUnknown_843FA68 + .4byte gUnknown_843FA70 + +gUnknown_843FA80:: @ 843FA80 sprite_template + spr_template 3, 2, gUnknown_843FA58, gUnknown_843FA78, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gUnknown_843FA98:: @ 843FA98 sprite_template + spr_template 2, 2, gUnknown_843FA60, gUnknown_843FA78, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/data/link_rfu.s b/data/link_rfu.s deleted file mode 100644 index 79be01714..000000000 --- a/data/link_rfu.s +++ /dev/null @@ -1,296 +0,0 @@ -#include "constants/region_map.h" -#include "constants/flags.h" -#include "constants/moves.h" -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gUnknown_843F29C:: @ 843F29C - .2byte 0x143a, 0x1817, 0x100b, 0x200f - -gUnknown_843F2A4:: @ 843F2A4 - .2byte 0x0209, 0x140b, 0x1030, 0x102a - -gUnknown_843F2AC:: @ 843F2AC - .byte 0, 2, 2, 0 - .4byte gUnknown_8418A2B - .4byte gUnknown_84186D1 - .4byte gUnknown_84186EF - .4byte gUnknown_841880E - .4byte gUnknown_8418902 - .byte 1, 2, 3, 1 - .4byte gUnknown_8418A33 - .4byte gUnknown_8418706 - .4byte gUnknown_8418725 - .4byte gUnknown_841881B - .4byte gUnknown_8418902 - .byte 2, 2, 3, 1 - .4byte gUnknown_8418A4A - .4byte gUnknown_8418706 - .4byte gUnknown_8418725 - .4byte gUnknown_841883E - .4byte gUnknown_8418902 - .byte 3, 2, 3, 1 - .4byte gUnknown_8418A61 - .4byte gUnknown_8418706 - .4byte gUnknown_8418725 - .4byte gUnknown_841885F - .4byte gUnknown_8418902 - .byte 4, 2, 5, 2 - .4byte NULL - .4byte gUnknown_8418780 - .4byte gUnknown_841879E - .4byte gUnknown_841888C - .4byte gUnknown_8418902 - .byte 5, 2, 2, 0 - .4byte NULL - .4byte gUnknown_8418780 - .4byte gUnknown_841879E - .4byte NULL - .4byte NULL - .byte 6, 2, 3, 1 - .4byte gUnknown_8418A77 - .4byte gUnknown_84187B2 - .4byte gUnknown_84187D1 - .4byte gUnknown_84188AC - .4byte gUnknown_8418902 - .byte 7, 2, 3, 1 - .4byte gUnknown_8418AA1 - .4byte gUnknown_8418745 - .4byte gUnknown_8418763 - .4byte gUnknown_8418881 - .4byte gUnknown_8418902 - .byte 9, 2, 1, 3 - .4byte gUnknown_8418A87 - .4byte gUnknown_84188B9 - .4byte gUnknown_84188D6 - .4byte gUnknown_84188F0 - .4byte gUnknown_8418902 - .byte 14, 2, 2, 0 - .4byte gUnknown_8418AB2 - .4byte gUnknown_84186D1 - .4byte gUnknown_84187EE - .4byte gUnknown_8418881 - .4byte gUnknown_8418902 - -gUnknown_843F39C:: @ 843F39C data8 4x7 - .byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00 - .byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x00 - .byte 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13 - .byte 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a - -gUnknown_843F3B8:: @ 843F3B8 gbapal - .incbin "graphics/link_rfu/unk_843F3F8.gbapal" - -gUnknown_843F3D8:: @ 843F3D8 gbapal - .incbin "graphics/link_rfu/unk_8E9BD28.gbapal" - -gUnknown_843F3F8:: @ 843F3F8 4bpp - .incbin "graphics/link_rfu/unk_843F3F8.4bpp" - -gUnknown_843F418:: @ 843F418 4bpp - .incbin "graphics/link_rfu/unk_843F418.4bpp" - -gUnknown_843F518:: @ 843F518 4bpp - .incbin "graphics/link_rfu/unk_843F518.4bpp" - -gUnknown_843F618:: @ 843F618 gbapal - .incbin "graphics/link_rfu/unk_843F638.gbapal" - -gUnknown_843F638:: @ 843F638 4bpp.lz - .incbin "graphics/link_rfu/unk_843F638.4bpp.lz" - -gUnknown_843F76C:: @ 843F76C gbapal - .incbin "graphics/link_rfu/unk_843F76C.gbapal" - -gUnknown_843F78C:: @ 843F78C gbapal - .incbin "graphics/link_rfu/unk_843F78C.gbapal" - -gUnknown_843F7AC:: @ 843F7AC 4bpp.lz - .incbin "graphics/link_rfu/unk_843F7AC.4bpp.lz" - -gUnknown_843F874:: @ 843F874 gbapal - .2byte RGB(0, 0, 0) - .2byte RGB(0, 0, 0) - .2byte RGB(7, 25, 31) - .2byte RGB(21, 21, 29) - -gUnknown_843F87C:: @ 843F87C gbapal - .2byte RGB(0, 0, 0) - .2byte RGB(31, 31, 31) - .2byte RGB(12, 12, 12) - .2byte RGB(27, 26, 27) - .2byte RGB(8, 17, 9) - - .align 2 -gUnknown_843F888:: @ 843F888 data8 6x4 - .byte 0x03, 0x04, 0x18, 0x04 - .byte 0x01, 0x04, 0x1b, 0x04 - .byte 0x03, 0x00, 0x18, 0x0a - .byte 0x06, 0x06, 0x12, 0x04 - .byte 0x10, 0x04, 0x09, 0x02 - .byte 0x0e, 0x04, 0x12, 0x04 - -gUnknown_843F8A0:: @ 843F8A0 bg_template - .4byte 0x000001c0, 0x000011dd, 0x002021e2, 0x000031fb - -gUnknown_843F8B0:: @ 843F8B0 window_template - .align 2 - .byte 0x01, 0x07, 0x00, 0x10, 0x02, 0x0a - .2byte 0x0010 - @ {0x01, 0x07, 0x00, 0x10, 0x02, 0x0a, 0x0010} - .align 2 - .byte 0x00, 0x04, 0x0f, 0x16, 0x04, 0x0f - .2byte 0x000a - @ {0x00, 0x04, 0x0f, 0x16, 0x04, 0x0f, 0x000a} - .align 2 - .byte 0x02, 0x01, 0x00, 0x1c, 0x20, 0x03 - .2byte 0x0000 - @ {0x02, 0x01, 0x00, 0x1c, 0x20, 0x03, 0x0000} - .align 2 - .byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 - .2byte 0x0000 - @ {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000} - -gUnknown_843F8D0:: @ 843F8D0 window_template - .align 2 - .byte 0x00, 0x16, 0x09, 0x05, 0x04, 0x0f - .2byte 0x0062 - @ {0x00, 0x16, 0x09, 0x05, 0x04, 0x0f, 0x0062} - -gUnknown_843F8D8:: @ 843F8D8 text - .string "{UNDERSCORE}$" - -gUnknown_843F8DB:: @ 843F8DB text - .string "{CLEAR 17}$" - - .align 2 -gUnknown_843F8E0:: @ 843F8E0 - .4byte gUnknown_847A8D8 - .4byte gUnknown_847A8FA - .4byte gUnknown_847A913 - .4byte gUnknown_847A934 - -gUnknown_843F8F0:: @ 843F8F0 sprite_sheet - obj_tiles gUnknown_843F3F8, 0x0020, 0 - obj_tiles gUnknown_843F418, 0x0100, 2 - obj_tiles gUnknown_843F518, 0x0100, 3 - null_obj_tiles - -gUnknown_843F910:: @ 843F910 sprite_palette - obj_pal gUnknown_843F3B8, 0 - obj_pal gUnknown_843F3D8, 1 - obj_pal gUnknown_8E99F24, 2 - obj_pal gUnknown_843F618, 3 - null_obj_pal - -gUnknown_843F938:: @ 843F938 sprite_sheet - obj_tiles gUnknown_843F638, 0x0800, 5 - obj_tiles gUnknown_8E9BD28, 0x1000, 1 - obj_tiles gUnknown_8E99F44, 0x0800, 6 - obj_tiles gUnknown_8E9A168, 0x1000, 4 - -gUnknown_843F958:: @ 843F958 data8 - .byte 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x00 - -gUnknown_843F960:: - .4byte 0x00000000, 0x00000c00 - -gUnknown_843F968:: @ 843F968 sprite_template - spr_template 0, 0, gUnknown_843F960, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101B20 - -gUnknown_843F980:: - .4byte 0xc0004000, 0x00000400 - -gUnknown_843F988:: - obj_image_anim_frame 0x0000, 0 - obj_image_anim_end - -gUnknown_843F990:: - obj_image_anim_frame 0x0020, 0 - obj_image_anim_end - -gUnknown_843F998:: - obj_image_anim_frame 0x0040, 0 - obj_image_anim_end - -gUnknown_843F9A0:: - obj_image_anim_frame 0x0060, 0 - obj_image_anim_end - -gUnknown_843F9A8:: - .4byte gUnknown_843F988 - .4byte gUnknown_843F990 - .4byte gUnknown_843F998 - .4byte gUnknown_843F9A0 - -gUnknown_843F9B8:: @ 843F9B8 sprite_template - spr_template 1, 1, gUnknown_843F980, gUnknown_843F9A8, NULL, gDummySpriteAffineAnimTable, sub_8101B20 - -gUnknown_843F9D0:: - .4byte 0xc0004000, 0x00000400 - -gUnknown_843F9D8:: - obj_image_anim_frame 0x0060, 0 - obj_image_anim_end - -gUnknown_843F9E0:: - obj_image_anim_frame 0x0040, 4 - obj_image_anim_frame 0x0020, 4 - obj_image_anim_end - -gUnknown_843F9EC:: - obj_image_anim_frame 0x0040, 4 - obj_image_anim_frame 0x0000, 4 - obj_image_anim_end - -gUnknown_843F9F8:: - obj_image_anim_frame 0x0040, 4 - obj_image_anim_frame 0x0060, 0 - obj_image_anim_end - -gUnknown_843FA04:: - obj_image_anim_frame 0x0040, 4 - obj_image_anim_end - -gUnknown_843FA0C:: - .4byte gUnknown_843F9D8 - .4byte gUnknown_843F9E0 - .4byte gUnknown_843F9EC - .4byte gUnknown_843F9F8 - .4byte gUnknown_843FA04 - -gUnknown_843FA20:: @ 843FA20 sprite_template - spr_template 4, 2, gUnknown_843F9D0, gUnknown_843FA0C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_843FA38:: - .4byte 0xc0000000, 0x00000c00 - -gUnknown_843FA40:: @ 843FA40 sprite_template - spr_template 6, 2, gUnknown_843FA38, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_843FA58:: - .4byte 0x40004000, 0x00000400 - -gUnknown_843FA60:: - .4byte 0x40000000, 0x00000400 - -gUnknown_843FA68:: - obj_image_anim_frame 0x0000, 0 - obj_image_anim_end - -gUnknown_843FA70:: - obj_image_anim_frame 0x0004, 0 - obj_image_anim_end - -gUnknown_843FA78:: - .4byte gUnknown_843FA68 - .4byte gUnknown_843FA70 - -gUnknown_843FA80:: @ 843FA80 sprite_template - spr_template 3, 2, gUnknown_843FA58, gUnknown_843FA78, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_843FA98:: @ 843FA98 sprite_template - spr_template 2, 2, gUnknown_843FA60, gUnknown_843FA78, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/data/link_rfu_4.s b/data/link_rfu_4.s index da3b341dc..a6e9accb7 100644 --- a/data/link_rfu_4.s +++ b/data/link_rfu_4.s @@ -2,127 +2,3 @@ .include "constants/constants.inc" .section .rodata .align 2, 0 - -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/include/link_rfu.h b/include/link_rfu.h index bc3fa6b70..f23d1d95e 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -145,6 +145,15 @@ struct UnkRfuStruct_2_Sub_c1c /* 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); @@ -157,7 +166,7 @@ struct UnkRfuStruct_2 /* 0x00f */ u8 unk_0f; /* 0x010 */ u16 unk_10; /* 0x012 */ u16 unk_12; - /* 0x014 */ u8 unk_14[4][14]; + /* 0x014 */ u8 unk_14[RFU_CHILD_MAX][14]; /* 0x04c */ u8 unk_4c[14]; /* 0x05a */ u8 unk_5a; /* 0x05b */ u8 unk_5b; @@ -193,14 +202,14 @@ struct UnkRfuStruct_2 /* 0x986 */ u8 unk_cce; // childId /* 0x987 */ u8 unk_ccf; /* 0x988 */ vu8 unk_cd0; - /* 0x989 */ u8 unk_cd1[4]; - /* 0x98d */ u8 unk_cd5[4]; + /* 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[4]; + /* 0x996 */ u8 unk_cde[RFU_CHILD_MAX]; /* 0x99a */ u8 unk_ce2; /* 0x99b */ u8 unk_ce3; /* 0x99c */ u8 unk_ce4; @@ -209,8 +218,8 @@ struct UnkRfuStruct_2 /* 0x99f */ u8 unk_ce7; /* 0x9a0 */ u8 unk_ce8; /* 0x9a1 */ u8 unk_ce9; - /* 0x9a2 */ u8 unk_cea[4]; - /* 0x9a6 */ u8 unk_cee[4]; + /* 0x9a2 */ u8 unk_cea[RFU_CHILD_MAX]; + /* 0x9a6 */ u8 unk_cee[RFU_CHILD_MAX]; }; // size: 0x9AC extern struct UnkRfuStruct_1 gUnknown_3005E10; @@ -235,7 +244,7 @@ bool32 IsSendingKeysToRfu(void); void Rfu_set_zero(void); u8 GetRfuPlayerCount(void); void sub_80F9828(void); -u8 rfu_get_multiplayer_id(void); +u8 LinkRfu_GetMultiplayerId(void); bool32 Rfu_InitBlockSend(const u8 * src, size_t size); bool8 sub_80FA0F8(u8 a0); u8 Rfu_GetBlockReceivedStatus(void); @@ -272,13 +281,13 @@ 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); -bool8 sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const 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); -bool8 sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * 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 rfu_syncVBlank_(void); +void LinkRfu_syncVBlank_(void); s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16)); void sub_80FEB3C(void); void sub_80FAFE0(u8 a0); diff --git a/ld_script.txt b/ld_script.txt index 942e4ece3..a4b99d525 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,6 +226,7 @@ SECTIONS { src/save_menu_util.o(.text); src/map_preview_screen.o(.text); src/link_rfu_2.o(.text); + src/link_rfu_4.o(.text); asm/link_rfu_4.o(.text); src/link_rfu.o(.text); asm/easy_chat_2.o(.text); @@ -511,8 +512,8 @@ SECTIONS { data/box_party_pokemon_dropdown.o(.rodata); src/map_preview_screen.o(.rodata); src/link_rfu_2.o(.rodata); - data/link_rfu_4.o(.rodata); - data/link_rfu.o(.rodata); + src/link_rfu_4.o(.rodata); + data/easy_chat_2.o(.rodata); src/pokedex_screen.o(.rodata); data/pokedex_screen.o(.rodata); src/list_menu.o(.rodata); 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 index 195394cfe..0d6e14551 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -417,7 +417,7 @@ static bool8 sub_80FD850(u16 reqCommandId) return retVal; } -void rfu_syncVBlank_(void) +void LinkRfu_syncVBlank_(void) { if (rfu_syncVBlank()) { diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index f63fe2a69..a06e3bc9c 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -24,7 +24,6 @@ struct UnkRfuStruct_8010A14{ static EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_203ABF0 = {}; static EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_203AC08 = {}; -static u8 gUnknown_3001188; static struct RfuAPIBuffer gRfuAPIBuffer; static u8 gUnknown_3001FF8[14]; static u16 gUnknown_3002008[7]; @@ -276,7 +275,7 @@ static void sub_80F887C(s32 r2, s32 r5) s32 r6 = 0; if (r5 == -1) { - for (i = 0; i < 4; r2 >>= 1, i++) + for (i = 0; i < RFU_CHILD_MAX; r2 >>= 1, i++) { if (r2 & 1) { @@ -287,7 +286,7 @@ static void sub_80F887C(s32 r2, s32 r5) } else { - for (i = 0; i < 4; r1 >>= 1, i++) + for (i = 0; i < RFU_CHILD_MAX; r1 >>= 1, i++) { if (!(r1 & 1)) { @@ -296,13 +295,13 @@ static void sub_80F887C(s32 r2, s32 r5) } for (r4 = 4; r4 != 0; r4--) { - for (i = 0; i < 4 && Rfu.unk_cde[i] != r4; i++); + for (i = 0; i < RFU_CHILD_MAX && Rfu.unk_cde[i] != r4; i++); if (i == 4) { r6 = r4; } } - for (r5 &= ~r2, i = 0; i < 4; r5 >>= 1, i++) + for (r5 &= ~r2, i = 0; i < RFU_CHILD_MAX; r5 >>= 1, i++) { if (r5 & 1) { @@ -351,8 +350,8 @@ static void sub_80F893C(u8 taskId) { u8 r5 = 1 << Rfu.unk_c3e; rfu_clearSlot(12, Rfu.unk_c3e); - rfu_setRecvBuffer(16, Rfu.unk_c3e, Rfu.unk_c3f, 70); - rfu_UNI_setSendData(r5, Rfu.unk_4c, 14); + 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) @@ -370,11 +369,11 @@ static void sub_80F8AA4(void) { u8 i; u8 r5 = gUnknown_3005E10.unk_00; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if (r5 & 1) { - rfu_setRecvBuffer(16, i, Rfu.unk_14[i], 14); + rfu_setRecvBuffer(16, i, Rfu.unk_14[i], sizeof(Rfu.unk_14[i])); rfu_clearSlot(3, i); } r5 >>= 1; @@ -384,7 +383,7 @@ static void sub_80F8AA4(void) static void sub_80F8AEC(void) { u8 r5 = gUnknown_3005E10.unk_00; - rfu_UNI_setSendData(r5, Rfu.unk_c87, 70); + 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); @@ -416,7 +415,7 @@ static void sub_80F8B34(u8 taskId) case 18: break; case 13: - if (rfu_UNI_setSendData(1 << Rfu.unk_c3e, Rfu.unk_4c, 14) == 0) + if (rfu_UNI_setSendData(1 << Rfu.unk_c3e, Rfu.unk_4c, sizeof(Rfu.unk_4c)) == 0) { Rfu.unk_0c = 0; DestroyTask(taskId); @@ -521,7 +520,7 @@ void sub_80F8DC0(void) sub_80F85F8(); } } - for (i = 0; i < 3; i++) + for (i = 0; i < NELEMS(gUnknown_843ED88); i++) { if (FuncIsActiveTask(gUnknown_843ED88[i]) == TRUE) { @@ -597,7 +596,7 @@ static void sub_80F8FAC(u8 a0) { u8 i; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if (a0 & 1) { @@ -751,7 +750,7 @@ static bool32 sub_80F9204(void) Rfu.unk_cdc = 0; gUnknown_203AC08.unk_06++; flags = gUnknown_3005E10.unk_00; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if (flags & 1) { @@ -787,18 +786,18 @@ static bool32 sub_80F9204(void) { gUnknown_203AC08.unk_0e = 0; rfu_clearSlot(3, Rfu.unk_cda); - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((Rfu.unk_ce5 >> i) & 1) { - rfu_setRecvBuffer(0x10, i, Rfu.unk_14[i], 14); + 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, 70); + 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); } @@ -930,7 +929,7 @@ static u8 sub_80F9770(const u8 *a0) if (Rfu.unk_0c == 1) return FALSE; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { Rfu.unk_cde[i] = a0[i]; } @@ -939,7 +938,7 @@ static u8 sub_80F9770(const u8 *a0) static void rfu_func_080F97B8(void) { - // static u8 gUnknown_3001188; + static u8 gUnknown_3001188; if (gReceivedRemoteLinkPlayers && gHeldKeyCodeToSend != LINK_KEY_CODE_NULL && gLinkTransferringData != TRUE) @@ -1149,7 +1148,7 @@ static void sub_80F9D04(u16 command) Rfu.playerCount = gUnknown_843EC41[tmp] + 1; gSendCmd[1] = Rfu.playerCount; buff = (u8 *)(gSendCmd + 2); - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) buff[i] = Rfu.unk_cde[i]; break; case 0x6600: @@ -1450,7 +1449,7 @@ bool32 sub_80FA44C(u32 a0) u8 sub_80FA484(bool32 a0) { - if (a0 == FALSE) + if (!a0) return sub_80FEA34(0, 0); sub_80FEA34(1, 0x258); return 0; @@ -1462,7 +1461,7 @@ void sub_80FA4A8(void) sub_80FD760(FALSE); } -u8 rfu_get_multiplayer_id(void) +u8 LinkRfu_GetMultiplayerId(void) { if (Rfu.unk_0c == 1) return 0; @@ -1476,12 +1475,12 @@ u8 GetRfuPlayerCount(void) bool8 IsLinkRfuTaskFinished(void) { - return Rfu.RfuFunc ? FALSE : TRUE; + return Rfu.RfuFunc != NULL ? FALSE : TRUE; } static void CallRfuFunc(void) { - if (Rfu.RfuFunc) + if (Rfu.RfuFunc != NULL) Rfu.RfuFunc(); } @@ -1518,7 +1517,7 @@ bool32 sub_80FA5D4(void) { u8 flags = 0; s32 i; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if (Rfu.unk_cd5[i] == 11) { @@ -1531,7 +1530,7 @@ bool32 sub_80FA5D4(void) rfu_REQ_disconnect(flags); rfu_waitREQComplete(); } - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if (Rfu.unk_cd5[i] == 10 || Rfu.unk_cd5[i] == 11) return TRUE; @@ -1579,7 +1578,7 @@ static void sub_80FA738(void) s32 i; sub_80FA528(); - for (i = 0; i < 4; i++) + 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) { @@ -1683,7 +1682,7 @@ static void sub_80FA834(u8 taskId) sub_80FEA34(1, 0x258); if (Rfu.unk_ce6) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((Rfu.unk_ce6 >> i) & 1) { @@ -1700,7 +1699,7 @@ static void sub_80FA9D0(u16 a0) { s32 i; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((a0 >> i) & 1) Rfu.unk_cde[i] = 0; @@ -1711,7 +1710,7 @@ static void sub_80FA9FC(const struct UnkRfuStruct_8010A14 *a0) { s32 i; Rfu.playerCount = a0->unk_0f; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) Rfu.unk_cde[i] = a0->unk_10[i]; for (i = 0; i < MAX_RFU_PLAYERS; i++) { @@ -1769,7 +1768,7 @@ static void sub_80FAA94(u8 taskId) r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer; memcpy(r5->unk_00, "PokemonSioInfo", sizeof("PokemonSioInfo")); r5->unk_0f = Rfu.playerCount; - for (i = 0; i < 4; i++) + 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]++; @@ -1777,7 +1776,7 @@ static void sub_80FAA94(u8 taskId) case 4: r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer; r5->unk_0f = Rfu.playerCount; - for (i = 0; i < 4; i++) + 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)) @@ -1791,7 +1790,7 @@ static void sub_80FAA94(u8 taskId) Rfu.unk_ce8 = 0; if (Rfu.unk_ce6) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((Rfu.unk_ce6 >> i) & 1) { @@ -1958,7 +1957,7 @@ void sub_80FB030(u32 a0) r5 = 0; r7 = 0; r8 = Rfu.unk_ce2 ^ Rfu.unk_ce3; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((r8 >> i) & 1) { @@ -2020,7 +2019,7 @@ static void sub_80FB184(u8 a0, u8 unused1) break; case 0x11: sub_80FB564(gUnknown_3005E10.unk_14); - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((gUnknown_3005E10.unk_14 >> i) & 1) { @@ -2165,7 +2164,7 @@ static void sub_80FB564(s32 a0) { s32 i; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((a0 >> i) & 1) { @@ -2180,7 +2179,7 @@ static u8 sub_80FB5A0(s32 a0) u8 ret = 0; u8 i; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((a0 >> i) & 1) { @@ -2370,7 +2369,7 @@ bool8 Rfu_IsMaster(void) void RFUVSync(void) { - rfu_syncVBlank_(); + LinkRfu_syncVBlank_(); } void sub_80FBA44(void) @@ -2400,7 +2399,7 @@ static void sub_80FBA78(void) sub_800B1F4(); OpenLink(); SeedRng(gMain.vblankCounter2); - for (i = 0; i < 4; i++) + 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); @@ -2480,7 +2479,7 @@ static u8 sub_80FBC70(const u8 *a0, u16 a1) u8 i; u8 ret = 0xFF; - for (i = 0; i < 4; i++) + 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) @@ -2520,7 +2519,7 @@ void sub_80FBD6C(u32 a0) s32 i; u8 var = 0; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if (Rfu.unk_cde[i] == a0 && (Rfu.unk_ce2 >> i) & 1) var |= 1 << i; @@ -2716,7 +2715,7 @@ bool32 sub_80FC1CC(void) { s32 i; - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((gUnknown_3005E10.unk_00 >> i) & 1 && Rfu.unk_cd1[i] == 0) return FALSE; @@ -2755,7 +2754,7 @@ static void sub_80FC228(void) nullsub_88(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1); if (Rfu.unk_0c == 1) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((gRfuLinkStatus->getNameFlag >> i) & 1) { @@ -2764,7 +2763,7 @@ static void sub_80FC228(void) nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3); } } - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { for (j = 0; j < 14; j++) { @@ -2775,7 +2774,7 @@ static void sub_80FC228(void) } else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0) { - for (i = 0; i < 4; i++) + for (i = 0; i < RFU_CHILD_MAX; i++) { nullsub_88(0, 1, i + 3, 4); nullsub_87(gUnknown_843EE47, 6, i + 3); @@ -2796,7 +2795,7 @@ static void sub_80FC228(void) nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3); } } - for (; i < 4; i++) + for (; i < RFU_CHILD_MAX; i++) { nullsub_88(0, 1, i + 3, 4); nullsub_87(gUnknown_843EE47, 6, i + 3); diff --git a/src/link_rfu_4.c b/src/link_rfu_4.c new file mode 100644 index 000000000..44ea69d35 --- /dev/null +++ b/src/link_rfu_4.c @@ -0,0 +1,596 @@ +#include "global.h" +#include "link_rfu.h" +#include "random.h" +#include "text.h" + +const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal"); + +const u32 gWirelessLinkIconPic[] = INCBIN_U32("graphics/interface/wireless_link_icon.4bpp.lz"); + +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 +}; + +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 +}; + +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, + }; + +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) +}; + +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) +}; + +const union AnimCmd sWirelessStatusIndicatorAnim2[] = { + // 1 bar + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd sWirelessStatusIndicatorAnim3[] = { + // searching + ANIMCMD_FRAME( 4, 10), + ANIMCMD_FRAME(20, 10), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd sWirelessStatusIndicatorAnim4[] = { + // error + ANIMCMD_FRAME(24, 10), + ANIMCMD_FRAME( 4, 10), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const sWirelessStatusIndicatorAnims[] = { + sWirelessStatusIndicatorAnim0, + sWirelessStatusIndicatorAnim1, + sWirelessStatusIndicatorAnim2, + sWirelessStatusIndicatorAnim3, + sWirelessStatusIndicatorAnim4 +}; + +const struct CompressedSpriteSheet sWirelessStatusIndicatorSpriteSheet = { + gWirelessLinkIconPic, 0x0380, 0xD431 +}; + +const struct SpritePalette sWirelessStatusIndicatorSpritePalette = { + gWirelessLinkIconPalette, 0xD432 +}; + +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; +} + +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; +} + +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; + } +} + +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; +} + +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; + } +} + +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; +} + +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 +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 +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 diff --git a/sym_bss.txt b/sym_bss.txt index e6ef49e94..059233848 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -72,11 +72,9 @@ gUnknown_3000FE8: @ 3000FE8 .include "src/easy_chat.o" .align 2 .include "src/link_rfu_2.o" - .align 2 -gUnknown_3002018: @ 3002018 - .space 0x4 - + .include "src/link_rfu_4.o" + .align 2 .include "src/quest_log.o" .align 2 -- cgit v1.2.3 From de939451d7ee99749a1a26870ce27d88cd47a41b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 17:07:43 -0500 Subject: link_rfu_4 mostly --- asm/link_rfu_3.s | 2 +- asm/link_rfu_4.s | 1034 +--------------------------------------------------- data/link_rfu_4.s | 4 - include/link_rfu.h | 4 + src/link_rfu_4.c | 334 +++++++++++++++++ sym_ewram.txt | 5 +- 6 files changed, 342 insertions(+), 1041 deletions(-) delete mode 100644 data/link_rfu_4.s diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 1bd5420fa..e054a98ad 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.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] diff --git a/asm/link_rfu_4.s b/asm/link_rfu_4.s index ab67ce135..d4a41d2b3 100644 --- a/asm/link_rfu_4.s +++ b/asm/link_rfu_4.s @@ -5,1038 +5,6 @@ .text - 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 @ =sWirelessStatusIndicatorSpriteTemplate - 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 @ =sWirelessStatusIndicatorSpriteSheet - 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 sWirelessStatusIndicatorSpriteTemplate -_080FCDD4: .4byte gSprites -_080FCDD8: .4byte 0x00001234 -_080FCDDC: .4byte sWirelessStatusIndicatorSpriteSheet -_080FCDE0: .4byte gUnknown_203ACE4 -_080FCDE4: - ldr r0, _080FCE30 @ =sWirelessStatusIndicatorSpriteTemplate - 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 @ =sWirelessStatusIndicatorSpriteSheet - 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 sWirelessStatusIndicatorSpriteTemplate -_080FCE34: .4byte gUnknown_203ACE4 -_080FCE38: .4byte gSprites -_080FCE3C: .4byte 0x00001234 -_080FCE40: .4byte sWirelessStatusIndicatorSpriteSheet - 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 @ =sWirelessStatusIndicatorSpriteSheet - 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 @ =sWirelessStatusIndicatorSpritePalette - bl LoadSpritePalette - ldr r1, _080FCEE0 @ =gUnknown_203ACE4 - movs r0, 0xFF - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FCED4: .4byte sWirelessStatusIndicatorSpriteSheet -_080FCED8: .4byte 0xffff0000 -_080FCEDC: .4byte sWirelessStatusIndicatorSpritePalette -_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 @ =sWirelessStatusIndicatorOamData - 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 sWirelessStatusIndicatorOamData -_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} @@ -1076,7 +44,7 @@ _080FD37C: ldr r0, [r6] adds r0, r4 adds r0, 0x4 - bl sub_80FD180 + bl NameIsEmpty cmp r0, 0 bne _080FD394 adds r4, 0xC diff --git a/data/link_rfu_4.s b/data/link_rfu_4.s deleted file mode 100644 index a6e9accb7..000000000 --- a/data/link_rfu_4.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2, 0 diff --git a/include/link_rfu.h b/include/link_rfu.h index f23d1d95e..e6fb946a6 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -223,6 +223,8 @@ struct UnkRfuStruct_2 }; // 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); @@ -291,6 +293,8 @@ 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/src/link_rfu_4.c b/src/link_rfu_4.c index 44ea69d35..80973e30d 100644 --- a/src/link_rfu_4.c +++ b/src/link_rfu_4.c @@ -1,7 +1,15 @@ #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" + +EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0; const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal"); @@ -594,3 +602,329 @@ u8 sub_80FCADC(u8 maxFlags) "\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; +} + +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; +} + +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(); + } + } +} + +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; +} + +void ZeroName(u8 *name) +{ + s32 i; + + for (i = 0; i < PLAYER_NAME_LENGTH; i++) + { + *name++ = 0; + } +} + +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); + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 2647ced8c..210932fe9 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -332,10 +332,9 @@ gUnknown_203ABE8: @ 203ABE8 .include "src/map_preview_screen.o" .align 2 .include "src/link_rfu_2.o" - .align 2 -gUnknown_203ACE4: @ 203ACE4 - .space 0x4 + .include "src/link_rfu_4.o" + .align 2 gUnknown_203ACE8: @ 203ACE8 .space 0x4 -- cgit v1.2.3 From f3e8f6c65f431be5a7e8c03091027e6ccbc98ddf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 18:42:05 -0500 Subject: Finish link_rfu_4 --- asm/link_rfu_4.s | 66 -------------------------------------------------------- ld_script.txt | 1 - src/link_rfu_4.c | 18 ++++++++++++++++ sym_ewram.txt | 1 - 4 files changed, 18 insertions(+), 68 deletions(-) delete mode 100644 asm/link_rfu_4.s diff --git a/asm/link_rfu_4.s b/asm/link_rfu_4.s deleted file mode 100644 index d4a41d2b3..000000000 --- a/asm/link_rfu_4.s +++ /dev/null @@ -1,66 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - 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 NameIsEmpty - 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/ld_script.txt b/ld_script.txt index a4b99d525..1a4749d0f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -227,7 +227,6 @@ SECTIONS { src/map_preview_screen.o(.text); src/link_rfu_2.o(.text); src/link_rfu_4.o(.text); - asm/link_rfu_4.o(.text); src/link_rfu.o(.text); asm/easy_chat_2.o(.text); src/pokedex_screen.o(.text); diff --git a/src/link_rfu_4.c b/src/link_rfu_4.c index 80973e30d..368431281 100644 --- a/src/link_rfu_4.c +++ b/src/link_rfu_4.c @@ -928,3 +928,21 @@ void RecordMixTrainerNames(void) 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/sym_ewram.txt b/sym_ewram.txt index 210932fe9..1171ba918 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 -- cgit v1.2.3 From 87302a21033e6f41d0007d962b37fb16cca995df Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 20:53:19 -0500 Subject: link_rfu_4 static --- src/link_rfu_4.c | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/link_rfu_4.c b/src/link_rfu_4.c index 368431281..01f19d817 100644 --- a/src/link_rfu_4.c +++ b/src/link_rfu_4.c @@ -9,13 +9,13 @@ #include "text.h" #include "constants/flags.h" -EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0; +static EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0; -const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal"); +static const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal"); -const u32 gWirelessLinkIconPic[] = INCBIN_U32("graphics/interface/wireless_link_icon.4bpp.lz"); +static const u32 gWirelessLinkIconPic[] = INCBIN_U32("graphics/interface/wireless_link_icon.4bpp.lz"); -const u8 sWireless_ASCIItoRSETable[] = { +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, @@ -50,7 +50,7 @@ const u8 sWireless_ASCIItoRSETable[] = { 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94 }; -const u8 sWireless_RSEtoASCIITable[] = { +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, @@ -85,7 +85,7 @@ const u8 sWireless_RSEtoASCIITable[] = { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00 }; -const struct OamData sWirelessStatusIndicatorOamData = +static const struct OamData sWirelessStatusIndicatorOamData = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -99,7 +99,7 @@ const struct OamData sWirelessStatusIndicatorOamData = .paletteNum = 0, }; -const union AnimCmd sWirelessStatusIndicatorAnim0[] = { +static const union AnimCmd sWirelessStatusIndicatorAnim0[] = { // 3 bars ANIMCMD_FRAME( 4, 5), ANIMCMD_FRAME( 8, 5), @@ -110,7 +110,7 @@ const union AnimCmd sWirelessStatusIndicatorAnim0[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd sWirelessStatusIndicatorAnim1[] = { +static const union AnimCmd sWirelessStatusIndicatorAnim1[] = { // 2 bars ANIMCMD_FRAME( 4, 5), ANIMCMD_FRAME( 8, 5), @@ -119,28 +119,28 @@ const union AnimCmd sWirelessStatusIndicatorAnim1[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd sWirelessStatusIndicatorAnim2[] = { +static const union AnimCmd sWirelessStatusIndicatorAnim2[] = { // 1 bar ANIMCMD_FRAME(4, 5), ANIMCMD_FRAME(8, 5), ANIMCMD_JUMP(0) }; -const union AnimCmd sWirelessStatusIndicatorAnim3[] = { +static const union AnimCmd sWirelessStatusIndicatorAnim3[] = { // searching ANIMCMD_FRAME( 4, 10), ANIMCMD_FRAME(20, 10), ANIMCMD_JUMP(0) }; -const union AnimCmd sWirelessStatusIndicatorAnim4[] = { +static const union AnimCmd sWirelessStatusIndicatorAnim4[] = { // error ANIMCMD_FRAME(24, 10), ANIMCMD_FRAME( 4, 10), ANIMCMD_JUMP(0) }; -const union AnimCmd *const sWirelessStatusIndicatorAnims[] = { +static const union AnimCmd *const sWirelessStatusIndicatorAnims[] = { sWirelessStatusIndicatorAnim0, sWirelessStatusIndicatorAnim1, sWirelessStatusIndicatorAnim2, @@ -148,15 +148,15 @@ const union AnimCmd *const sWirelessStatusIndicatorAnims[] = { sWirelessStatusIndicatorAnim4 }; -const struct CompressedSpriteSheet sWirelessStatusIndicatorSpriteSheet = { +static const struct CompressedSpriteSheet sWirelessStatusIndicatorSpriteSheet = { gWirelessLinkIconPic, 0x0380, 0xD431 }; -const struct SpritePalette sWirelessStatusIndicatorSpritePalette = { +static const struct SpritePalette sWirelessStatusIndicatorSpritePalette = { gWirelessLinkIconPalette, 0xD432 }; -const struct SpriteTemplate sWirelessStatusIndicatorSpriteTemplate = { +static const struct SpriteTemplate sWirelessStatusIndicatorSpriteTemplate = { 0xD431, 0xD432, &sWirelessStatusIndicatorOamData, @@ -202,7 +202,7 @@ void sub_80FC4D4(struct UnkRfuStruct_2_Sub_9e8 *ptr) ptr->unk_233 = 0; } -void sub_80FC530(struct UnkRfuStruct_Sub_Unused *ptr) +static void sub_80FC530(struct UnkRfuStruct_Sub_Unused *ptr) { s32 i; s32 j; @@ -395,7 +395,7 @@ bool8 sub_80FC888(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2) return TRUE; } -void sub_80FC8D8(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2) +static void sub_80FC8D8(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2) { s32 i; @@ -415,7 +415,7 @@ void sub_80FC8D8(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2) } } -bool8 sub_80FC944(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2) +static bool8 sub_80FC944(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2) { s32 i; @@ -433,7 +433,7 @@ bool8 sub_80FC944(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2) return TRUE; } -void sub_80FC9B8(u8 *q1, u8 mode) +static void sub_80FC9B8(u8 *q1, u8 mode) { s32 i; u8 rval; @@ -479,7 +479,7 @@ void sub_80FC9B8(u8 *q1, u8 mode) } } -void PkmnStrToASCII(u8 *q1, const u8 *q2) +static void PkmnStrToASCII(u8 *q1, const u8 *q2) { s32 i; @@ -490,7 +490,7 @@ void PkmnStrToASCII(u8 *q1, const u8 *q2) q1[i] = 0; } -void ASCIIToPkmnStr(u8 *q1, const u8 *q2) +static void ASCIIToPkmnStr(u8 *q1, const u8 *q2) { s32 i; @@ -502,7 +502,7 @@ void ASCIIToPkmnStr(u8 *q1, const u8 *q2) } #ifdef NONMATCHING -u8 sub_80FCADC(u8 maxFlags) +static u8 sub_80FCADC(u8 maxFlags) { u8 flagCount = 0; u8 flags = gRfuLinkStatus->connSlotFlag; @@ -533,7 +533,7 @@ u8 sub_80FCADC(u8 maxFlags) } #else NAKED -u8 sub_80FCADC(u8 maxFlags) +static u8 sub_80FCADC(u8 maxFlags) { asm_unified("\tpush {r4-r7,lr}\n" "\tlsls r0, 24\n" @@ -734,7 +734,7 @@ void LoadWirelessStatusIndicatorSpriteGfx(void) gWirelessStatusIndicatorSpriteId = 0xFF; } -u8 sub_80FCEE4(void) +static u8 sub_80FCEE4(void) { u8 i; u8 flags = gRfuLinkStatus->connSlotFlag; @@ -749,7 +749,7 @@ u8 sub_80FCEE4(void) return 0; } -void sub_80FCF1C(struct Sprite *sprite, s32 signalStrengthAnimNum) +static void sub_80FCF1C(struct Sprite *sprite, s32 signalStrengthAnimNum) { if (sprite->data[2] != signalStrengthAnimNum) { @@ -831,7 +831,7 @@ void sub_80FCF34(void) } } -void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name) +static void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name) { int i; dest->trainerId = trainerId; @@ -844,7 +844,7 @@ void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 * dest->trainerName[i] = EOS; } -void ZeroName(u8 *name) +static void ZeroName(u8 *name) { s32 i; @@ -854,7 +854,7 @@ void ZeroName(u8 *name) } } -bool32 NameIsEmpty(const u8 *name) +static bool32 NameIsEmpty(const u8 *name) { s32 i; -- cgit v1.2.3 From 69994e89ca0baf69cd43d5df10560300150654f7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 20:57:31 -0500 Subject: Rename files: link_rfu_3 --> union_room, link_rfu_4 --> link_rfu_3 --- asm/link_rfu_3.s | 13203 ---------------------------------------------------- asm/union_room.s | 13203 ++++++++++++++++++++++++++++++++++++++++++++++++++++ data/link_rfu_3.s | 1569 ------- data/union_room.s | 1569 +++++++ ld_script.txt | 8 +- src/link_rfu_3.c | 948 ++++ src/link_rfu_4.c | 948 ---- sym_bss.txt | 2 +- sym_ewram.txt | 2 +- 9 files changed, 15726 insertions(+), 15726 deletions(-) delete mode 100644 asm/link_rfu_3.s create mode 100644 asm/union_room.s delete mode 100644 data/link_rfu_3.s create mode 100644 data/union_room.s create mode 100644 src/link_rfu_3.c delete mode 100644 src/link_rfu_4.c diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s deleted file mode 100644 index e054a98ad..000000000 --- a/asm/link_rfu_3.s +++ /dev/null @@ -1,13203 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_811586C -sub_811586C: @ 811586C - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r1, 0 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r2, 24 - lsrs r5, r2, 24 - adds r0, r6, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - lsls r4, 8 - movs r0, 0x80 - lsls r0, 3 - cmp r4, r0 - beq _081158BC - cmp r4, r0 - bgt _0811589E - movs r0, 0x80 - lsls r0, 2 - cmp r4, r0 - beq _081158B0 - b _0811590E -_0811589E: - movs r0, 0x94 - lsls r0, 6 - cmp r4, r0 - beq _081158CC - movs r0, 0xD4 - lsls r0, 6 - cmp r4, r0 - beq _081158F0 - b _0811590E -_081158B0: - ldr r1, _081158B8 @ =gUnknown_845742C - subs r0, r5, 0x1 - lsls r0, 2 - b _081158D4 - .align 2, 0 -_081158B8: .4byte gUnknown_845742C -_081158BC: - ldr r1, _081158C8 @ =gUnknown_845742C - subs r0, r5, 0x1 - lsls r0, 2 - adds r1, 0x14 - b _081158D4 - .align 2, 0 -_081158C8: .4byte gUnknown_845742C -_081158CC: - ldr r1, _081158EC @ =gUnknown_845742C - subs r0, r5, 0x1 - lsls r0, 2 - adds r1, 0x28 -_081158D4: - adds r0, r1 - ldr r2, [r0] - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r6, 0 - movs r1, 0x2 - movs r3, 0 - bl sub_811A444 - b _0811590E - .align 2, 0 -_081158EC: .4byte gUnknown_845742C -_081158F0: - ldr r1, _08115920 @ =gUnknown_845742C - subs r0, r5, 0x1 - lsls r0, 2 - adds r1, 0x3C - adds r0, r1 - ldr r2, [r0] - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r6, 0 - movs r1, 0x2 - movs r3, 0 - bl sub_811A444 -_0811590E: - adds r0, r6, 0 - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08115920: .4byte gUnknown_845742C - thumb_func_end sub_811586C - - thumb_func_start sub_8115924 -sub_8115924: @ 8115924 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x20 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r6, _08115994 @ =gSaveBlock2Ptr - ldr r2, [r6] - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - mov r8, r0 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r1, 0x2 - movs r3, 0 - bl sub_811A444 - add r5, sp, 0x14 - ldr r1, _08115998 @ =gUnknown_84571B4 - adds r0, r5, 0 - bl StringCopy - ldr r0, [r6] - adds r0, 0xA - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - add r0, sp, 0x8 - movs r2, 0x2 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - adds r0, r5, 0 - add r1, sp, 0x8 - bl StringAppend - movs r0, 0x10 - str r0, [sp] - mov r0, r8 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0 - bl sub_811A444 - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08115994: .4byte gSaveBlock2Ptr -_08115998: .4byte gUnknown_84571B4 - thumb_func_end sub_8115924 - - thumb_func_start sub_811599C -sub_811599C: @ 811599C - push {lr} - lsls r1, 24 - lsrs r1, 24 - subs r0, r1, 0x1 - cmp r0, 0x15 - bhi _08115A18 - lsls r0, 2 - ldr r1, _081159B4 @ =_081159B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081159B4: .4byte _081159B8 - .align 2, 0 -_081159B8: - .4byte _08115A10 - .4byte _08115A10 - .4byte _08115A10 - .4byte _08115A10 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A10 - .4byte _08115A10 - .4byte _08115A10 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A18 - .4byte _08115A10 - .4byte _08115A10 -_08115A10: - ldr r0, _08115A1C @ =gStringVar4 - ldr r1, _08115A20 @ =gUnknown_8457234 - bl StringExpandPlaceholders -_08115A18: - pop {r0} - bx r0 - .align 2, 0 -_08115A1C: .4byte gStringVar4 -_08115A20: .4byte gUnknown_8457234 - thumb_func_end sub_811599C - - thumb_func_start TryBecomeLinkLeader -TryBecomeLinkLeader: @ 8115A24 - push {lr} - ldr r0, _08115A54 @ =sub_8115A68 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08115A58 @ =gUnknown_203B05C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08115A5C @ =gTasks+0x8 - adds r1, r0 - str r1, [r2] - ldr r0, _08115A60 @ =gUnknown_3002024 - str r1, [r0] - movs r0, 0 - strb r0, [r1, 0xC] - strb r0, [r1, 0xD] - ldr r1, _08115A64 @ =gSpecialVar_Result - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08115A54: .4byte sub_8115A68 -_08115A58: .4byte gUnknown_203B05C -_08115A5C: .4byte gTasks+0x8 -_08115A60: .4byte gUnknown_3002024 -_08115A64: .4byte gSpecialVar_Result - thumb_func_end TryBecomeLinkLeader - - thumb_func_start sub_8115A68 -sub_8115A68: @ 8115A68 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08115A88 @ =gUnknown_203B05C - ldr r5, [r0] - ldrb r0, [r5, 0xC] - cmp r0, 0x1E - bls _08115A7C - b _081161D8 -_08115A7C: - lsls r0, 2 - ldr r1, _08115A8C @ =_08115A90 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08115A88: .4byte gUnknown_203B05C -_08115A8C: .4byte _08115A90 - .align 2, 0 -_08115A90: - .4byte _08115B0C - .4byte _081161D8 - .4byte _081161D8 - .4byte _08115B5C - .4byte _08115C60 - .4byte _08115CE8 - .4byte _08115D04 - .4byte _08115E24 - .4byte _081161D8 - .4byte _08115D94 - .4byte _08115DAC - .4byte _08115E40 - .4byte _08115EF4 - .4byte _0811600A - .4byte _08116028 - .4byte _0811603A - .4byte _08116058 - .4byte _08116112 - .4byte _08116128 - .4byte _081160A2 - .4byte _081160C0 - .4byte _08116168 - .4byte _08116194 - .4byte _08116168 - .4byte _0811617E - .4byte _081161D8 - .4byte _081161AC - .4byte _081161D8 - .4byte _081161D8 - .4byte _08115DEC - .4byte _0811614C -_08115B0C: - ldr r3, _08115B4C @ =gUnknown_203B058 - ldr r2, _08115B50 @ =gUnknown_8456CD8 - ldr r1, _08115B54 @ =gSpecialVar_0x8004 - ldrh r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - strb r0, [r3] - ldr r4, _08115B58 @ =gUnknown_203B059 - ldrh r0, [r1] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - lsrs r0, 8 - strb r0, [r4] - ldrb r0, [r3] - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - bl sub_800B1F4 - bl OpenLink - ldrb r1, [r4] - movs r0, 0xF - ands r0, r1 - bl sub_80FBB8C - movs r0, 0x3 - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08115B4C: .4byte gUnknown_203B058 -_08115B50: .4byte gUnknown_8456CD8 -_08115B54: .4byte gSpecialVar_0x8004 -_08115B58: .4byte gUnknown_203B059 -_08115B5C: - movs r0, 0x70 - bl AllocZeroed - str r0, [r5, 0x4] - movs r0, 0xA0 - bl AllocZeroed - str r0, [r5] - movs r0, 0xA0 - bl AllocZeroed - str r0, [r5, 0x8] - ldr r0, [r5, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r5] - movs r1, 0x5 - bl sub_811A5E4 - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x10 - bl sub_80FCD50 - ldr r1, [r5] - movs r3, 0 - movs r0, 0 - strh r0, [r1, 0x18] - ldr r2, [r5] - ldrb r1, [r2, 0x1A] - subs r0, 0x4 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1A] - ldr r2, [r5] - ldrb r1, [r2, 0x1A] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1A] - ldr r0, [r5] - strb r3, [r0, 0x1B] - ldr r0, [r5, 0x4] - movs r1, 0xFF - bl sub_811A054 - strb r0, [r5, 0x17] - ldr r0, _08115C48 @ =gUnknown_8456CD0 - bl AddWindow - strb r0, [r5, 0x10] - ldr r0, _08115C4C @ =gUnknown_8456CFC - bl AddWindow - strb r0, [r5, 0xF] - ldr r0, _08115C50 @ =gUnknown_8456D04 - bl AddWindow - strb r0, [r5, 0x11] - ldrb r0, [r5, 0x10] - movs r1, 0x22 - bl FillWindowPixelBuffer - ldrb r0, [r5, 0x10] - ldr r2, _08115C54 @ =gUnknown_845747C - movs r1, 0x2 - str r1, [sp] - movs r4, 0x4 - str r4, [sp, 0x4] - movs r1, 0 - movs r3, 0x8 - bl sub_811A444 - ldrb r0, [r5, 0x10] - bl PutWindowTilemap - ldrb r0, [r5, 0x10] - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r5, 0xF] - movs r1, 0 - bl DrawStdWindowFrame - ldr r0, _08115C58 @ =gMultiuseListMenuTemplate - adds r2, r0, 0 - ldr r1, _08115C5C @ =gUnknown_8456D34 - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldrb r1, [r5, 0xF] - strb r1, [r0, 0x10] - movs r1, 0 - movs r2, 0 - bl ListMenuInit - strb r0, [r5, 0x12] - ldrb r0, [r5, 0x11] - movs r1, 0 - bl DrawStdWindowFrame - ldrb r0, [r5, 0x11] - bl PutWindowTilemap - ldrb r0, [r5, 0x11] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - strb r0, [r5, 0x13] - strb r4, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08115C48: .4byte gUnknown_8456CD0 -_08115C4C: .4byte gUnknown_8456CFC -_08115C50: .4byte gUnknown_8456D04 -_08115C54: .4byte gUnknown_845747C -_08115C58: .4byte gMultiuseListMenuTemplate -_08115C5C: .4byte gUnknown_8456D34 -_08115C60: - ldr r0, _08115C98 @ =gStringVar1 - ldr r2, _08115C9C @ =gUnknown_8456C74 - ldr r4, _08115CA0 @ =gUnknown_203B058 - ldrb r1, [r4] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - ldr r0, _08115CA4 @ =gUnknown_203B059 - ldrb r2, [r0] - lsrs r0, r2, 4 - cmp r0, 0 - beq _08115CC4 - ldrb r1, [r5, 0x13] - subs r0, 0x1 - cmp r1, r0 - ble _08115CB0 - movs r0, 0xF - ands r0, r2 - cmp r0, 0 - beq _08115CB0 - ldr r0, _08115CA8 @ =gStringVar4 - ldr r1, _08115CAC @ =gUnknown_8457264 - bl StringExpandPlaceholders - b _08115CCC - .align 2, 0 -_08115C98: .4byte gStringVar1 -_08115C9C: .4byte gUnknown_8456C74 -_08115CA0: .4byte gUnknown_203B058 -_08115CA4: .4byte gUnknown_203B059 -_08115CA8: .4byte gStringVar4 -_08115CAC: .4byte gUnknown_8457264 -_08115CB0: - ldr r0, _08115CBC @ =gStringVar4 - ldr r1, _08115CC0 @ =gUnknown_8457234 - bl StringExpandPlaceholders - b _08115CCC - .align 2, 0 -_08115CBC: .4byte gStringVar4 -_08115CC0: .4byte gUnknown_8457234 -_08115CC4: - ldr r0, _08115CE0 @ =gStringVar4 - ldrb r1, [r4] - bl sub_811599C -_08115CCC: - ldrb r0, [r5, 0x11] - ldr r1, _08115CE4 @ =gUnknown_203B059 - ldrb r1, [r1] - ldrb r2, [r5, 0x13] - bl sub_811586C - movs r0, 0x5 - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08115CE0: .4byte gStringVar4 -_08115CE4: .4byte gUnknown_203B059 -_08115CE8: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08115D00 @ =gStringVar4 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08115CFA - b _081161D8 -_08115CFA: - movs r0, 0x6 - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08115D00: .4byte gStringVar4 -_08115D04: - adds r0, r5, 0 - movs r1, 0x7 - movs r2, 0xA - bl sub_8116444 - ldr r0, _08115D24 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08115D40 - ldrb r0, [r5, 0x13] - cmp r0, 0x1 - bne _08115D28 - movs r0, 0x17 - b _08115D3E - .align 2, 0 -_08115D24: .4byte gMain -_08115D28: - ldr r0, _08115D38 @ =gUnknown_203B059 - ldrb r1, [r0] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - beq _08115D3C - movs r0, 0x1E - b _08115D3E - .align 2, 0 -_08115D38: .4byte gUnknown_203B059 -_08115D3C: - movs r0, 0x13 -_08115D3E: - strb r0, [r5, 0xC] -_08115D40: - ldr r0, _08115D8C @ =gUnknown_203B059 - ldrb r2, [r0] - lsrs r0, r2, 4 - cmp r0, 0 - beq _08115D76 - ldrb r1, [r5, 0x13] - subs r0, 0x1 - cmp r1, r0 - ble _08115D76 - movs r4, 0xF - adds r0, r4, 0 - ands r0, r2 - cmp r0, 0 - beq _08115D76 - bl sub_80FC1CC - cmp r0, 0 - beq _08115D76 - ldr r0, _08115D90 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08115D76 - strb r4, [r5, 0xC] - bl sub_80F8F5C -_08115D76: - ldrb r0, [r5, 0xC] - cmp r0, 0x6 - beq _08115D7E - b _081161D8 -_08115D7E: - bl sub_80FA5D4 - cmp r0, 0 - bne _08115D88 - b _081161D8 -_08115D88: - b _08115EEE - .align 2, 0 -_08115D8C: .4byte gUnknown_203B059 -_08115D90: .4byte gMain -_08115D94: - bl sub_80FA5D4 - cmp r0, 0 - beq _08115D9E - b _081161D8 -_08115D9E: - movs r0, 0x6 - strb r0, [r5, 0xC] - ldr r0, [r5] - bl sub_81165E8 - strb r0, [r5, 0x13] - b _081161D8 -_08115DAC: - movs r3, 0 - ldr r0, _08115DE4 @ =gUnknown_203B058 - ldrb r1, [r0] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x2 - bne _08115DBC - movs r3, 0x1 -_08115DBC: - adds r0, r5, 0 - adds r0, 0xD - ldr r2, _08115DE8 @ =gUnknown_845767C - lsls r1, r3, 2 - adds r1, r2 - ldr r1, [r1] - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08115DD4 - b _081161D8 -_08115DD4: - ldr r0, [r5] - bl sub_81165E8 - strb r0, [r5, 0x13] - ldrb r0, [r5, 0x12] - bl RedrawListMenu - b _0811610C - .align 2, 0 -_08115DE4: .4byte gUnknown_203B058 -_08115DE8: .4byte gUnknown_845767C -_08115DEC: - ldr r0, _08115E1C @ =gUnknown_203B059 - ldrb r0, [r0] - movs r1, 0xF - ands r1, r0 - movs r0, 0x2 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r3, r0, 31 - adds r0, r5, 0 - adds r0, 0xD - ldr r2, _08115E20 @ =gUnknown_845767C - lsls r1, r3, 2 - adds r1, r2 - ldr r1, [r1] - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08115E16 - b _081161D8 -_08115E16: - movs r0, 0x15 - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08115E1C: .4byte gUnknown_203B059 -_08115E20: .4byte gUnknown_845767C -_08115E24: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08115E3C @ =gStringVar4 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08115E36 - b _081161D8 -_08115E36: - movs r0, 0xB - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08115E3C: .4byte gStringVar4 -_08115E40: - adds r4, r5, 0 - adds r4, 0xD - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - lsls r0, 16 - lsrs r0, 16 - ldrb r2, [r5, 0x13] - lsls r2, 5 - ldr r1, [r5] - adds r1, r2 - adds r1, 0x10 - bl sub_80FA634 - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_811A14C - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08115EC0 - cmp r1, r0 - bgt _08115E84 - subs r0, 0x2 - cmp r1, r0 - beq _08115EEE - b _081161D8 -_08115E84: - cmp r1, 0 - beq _08115E8E - cmp r1, 0x1 - beq _08115EC0 - b _081161D8 -_08115E8E: - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - movs r0, 0x5 - strb r0, [r5, 0x19] - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldrb r0, [r5, 0x13] - lsls r0, 5 - ldr r2, [r5] - adds r2, r0 - adds r2, 0x10 - movs r0, 0x5 - b _08115EE4 -_08115EC0: - movs r0, 0x6 - strb r0, [r5, 0x19] - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldrb r0, [r5, 0x13] - lsls r0, 5 - ldr r2, [r5] - adds r2, r0 - adds r2, 0x10 - movs r0, 0x6 -_08115EE4: - bl sub_80FA670 - movs r0, 0xC - strb r0, [r5, 0xC] - b _081161D8 -_08115EEE: - movs r0, 0x9 - strb r0, [r5, 0xC] - b _081161D8 -_08115EF4: - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - lsls r0, 16 - lsrs r0, 16 - ldrb r2, [r5, 0x13] - lsls r2, 5 - ldr r1, [r5] - adds r1, r2 - adds r1, 0x10 - bl sub_80FA6FC - cmp r0, 0x1 - bne _08115FFA - ldrb r0, [r5, 0x19] - cmp r0, 0x5 - bne _08115FB4 - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - movs r0, 0 - strb r0, [r1, 0x1B] - ldrb r0, [r5, 0x12] - bl RedrawListMenu - ldrb r0, [r5, 0x13] - adds r0, 0x1 - strb r0, [r5, 0x13] - ldr r1, _08115F58 @ =gUnknown_203B059 - ldrb r1, [r1] - movs r3, 0xF - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r3, 0 - ands r0, r1 - cmp r2, r0 - bne _08115FF0 - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - bne _08115F54 - cmp r2, 0x4 - bne _08115F5C -_08115F54: - strb r3, [r5, 0xC] - b _08115F90 - .align 2, 0 -_08115F58: .4byte gUnknown_203B059 -_08115F5C: - ldr r4, _08115FA4 @ =gStringVar1 - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r1, r0 - subs r1, 0x10 - adds r0, r4, 0 - bl StringCopy7 - ldr r1, [r5] - ldrb r0, [r5, 0x13] - subs r0, 0x1 - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r0, _08115FA8 @ =gStringVar4 - ldr r1, _08115FAC @ =gUnknown_8457554 - bl StringExpandPlaceholders - movs r0, 0xD - strb r0, [r5, 0xC] -_08115F90: - bl sub_80F8F5C - ldrb r0, [r5, 0x11] - ldr r1, _08115FB0 @ =gUnknown_203B059 - ldrb r1, [r1] - ldrb r2, [r5, 0x13] - bl sub_811586C - b _08115FF4 - .align 2, 0 -_08115FA4: .4byte gStringVar1 -_08115FA8: .4byte gStringVar4 -_08115FAC: .4byte gUnknown_8457554 -_08115FB0: .4byte gUnknown_203B059 -_08115FB4: - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r4, r0, 0 - adds r4, 0x10 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80FBD4C - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - ldrb r2, [r1, 0x1A] - movs r0, 0x4 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1A] - ldr r0, [r5] - bl sub_81165E8 - ldrb r0, [r5, 0x12] - bl RedrawListMenu -_08115FF0: - movs r0, 0x4 - strb r0, [r5, 0xC] -_08115FF4: - movs r0, 0 - strb r0, [r5, 0x19] - b _081161D8 -_08115FFA: - cmp r0, 0x2 - beq _08116000 - b _081161D8 -_08116000: - movs r0, 0 - movs r1, 0 - bl sub_80FB9E4 - b _0811610C -_0811600A: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08116024 @ =gStringVar4 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _0811601C - b _081161D8 -_0811601C: - movs r0, 0xE - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08116024: .4byte gStringVar4 -_08116028: - ldrb r0, [r5, 0xE] - adds r0, 0x1 - strb r0, [r5, 0xE] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x78 - bhi _08116038 - b _081161D8 -_08116038: - b _0811607E -_0811603A: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08116054 @ =gUnknown_8457514 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _0811604C - b _081161D8 -_0811604C: - movs r0, 0x10 - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08116054: .4byte gUnknown_8457514 -_08116058: - adds r0, r5, 0 - adds r0, 0xD - movs r1, 0 - bl sub_811A14C - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0811607E - cmp r1, 0 - bgt _08116078 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08116084 - b _081161D8 -_08116078: - cmp r1, 0x1 - beq _08116084 - b _081161D8 -_0811607E: - movs r0, 0x11 - strb r0, [r5, 0xC] - b _081161D8 -_08116084: - ldr r0, _08116098 @ =gUnknown_203B059 - ldrb r1, [r0] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - beq _0811609C - movs r0, 0x1E - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08116098: .4byte gUnknown_203B059 -_0811609C: - movs r0, 0x13 - strb r0, [r5, 0xC] - b _081161D8 -_081160A2: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _081160BC @ =gUnknown_8457530 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _081160B4 - b _081161D8 -_081160B4: - movs r0, 0x14 - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_081160BC: .4byte gUnknown_8457530 -_081160C0: - adds r0, r5, 0 - adds r0, 0xD - movs r1, 0 - bl sub_811A14C - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0811615C - cmp r1, 0 - bgt _081160E0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _081160E4 - b _081161D8 -_081160E0: - cmp r1, 0x1 - bne _081161D8 -_081160E4: - ldr r0, _081160F8 @ =gUnknown_203B059 - ldrb r2, [r0] - movs r0, 0xF0 - ands r0, r2 - cmp r0, 0 - beq _081160FC - movs r0, 0xF - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_081160F8: .4byte gUnknown_203B059 -_081160FC: - movs r3, 0xF - ldrb r1, [r5, 0x13] - adds r0, r3, 0 - ands r0, r2 - cmp r1, r0 - bne _0811610C - strb r3, [r5, 0xC] - b _081161D8 -_0811610C: - movs r0, 0x4 - strb r0, [r5, 0xC] - b _081161D8 -_08116112: - adds r0, r5, 0 - movs r1, 0x7 - movs r2, 0x17 - bl sub_8116444 - lsls r0, 24 - cmp r0, 0 - bne _081161D8 - movs r0, 0x12 - strb r0, [r5, 0xC] - b _081161D8 -_08116128: - bl sub_80F8F40 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08116144 - movs r0, 0 - bl sub_80F8F7C - cmp r0, 0 - beq _081161D8 - movs r0, 0x1A - strb r0, [r5, 0xC] - b _081161D8 -_08116144: - movs r0, 0x1D - strb r0, [r5, 0xC] - strb r1, [r5, 0xD] - b _081161D8 -_0811614C: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08116164 @ =gUnknown_8457610 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - beq _081161D8 -_0811615C: - movs r0, 0x17 - strb r0, [r5, 0xC] - b _081161D8 - .align 2, 0 -_08116164: .4byte gUnknown_8457610 -_08116168: - bl DestroyWirelessStatusIndicatorSprite - bl sub_80F8DC0 - adds r0, r5, 0 - bl sub_81161E4 - ldrb r0, [r5, 0xC] - adds r0, 0x1 - strb r0, [r5, 0xC] - b _081161D8 -_0811617E: - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask - ldr r1, _08116190 @ =gSpecialVar_Result - movs r0, 0x5 - strh r0, [r1] - b _081161D8 - .align 2, 0 -_08116190: .4byte gSpecialVar_Result -_08116194: - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask - ldr r1, _081161A8 @ =gSpecialVar_Result - movs r0, 0x8 - strh r0, [r1] - b _081161D8 - .align 2, 0 -_081161A8: .4byte gSpecialVar_Result -_081161AC: - bl sub_80FBA00 - cmp r0, 0 - beq _081161BA - movs r0, 0x1D - strb r0, [r5, 0xC] - b _081161D8 -_081161BA: - ldr r0, _081161E0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _081161D8 - movs r0, 0x1 - bl sub_80FAFE0 - bl sub_8117990 - adds r0, r5, 0 - bl sub_81161E4 - adds r0, r4, 0 - bl DestroyTask -_081161D8: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081161E0: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_8115A68 - - thumb_func_start sub_81161E4 -sub_81161E4: @ 81161E4 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4, 0x11] - bl ClearWindowTilemap - ldrb r0, [r4, 0x11] - movs r1, 0 - bl ClearStdWindowAndFrame - ldrb r0, [r4, 0x12] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - ldrb r0, [r4, 0x10] - bl ClearWindowTilemap - ldrb r0, [r4, 0xF] - movs r1, 0 - bl ClearStdWindowAndFrame - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldrb r0, [r4, 0x11] - bl RemoveWindow - ldrb r0, [r4, 0xF] - bl RemoveWindow - ldrb r0, [r4, 0x10] - bl RemoveWindow - ldrb r0, [r4, 0x17] - bl DestroyTask - ldr r0, [r4, 0x8] - bl Free - ldr r0, [r4] - bl Free - ldr r0, [r4, 0x4] - bl Free - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81161E4 - - thumb_func_start sub_8116244 -sub_8116244: @ 8116244 - push {lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - subs r0, r1, 0x1 - cmp r0, 0x15 - bhi _081162D8 - lsls r0, 2 - ldr r1, _0811625C @ =_08116260 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811625C: .4byte _08116260 - .align 2, 0 -_08116260: - .4byte _081162B8 - .4byte _081162B8 - .4byte _081162D0 - .4byte _081162B8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D0 - .4byte _081162D0 - .4byte _081162D0 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162D8 - .4byte _081162C0 - .4byte _081162C0 -_081162B8: - ldr r1, _081162BC @ =gUnknown_84574A0 - b _081162C2 - .align 2, 0 -_081162BC: .4byte gUnknown_84574A0 -_081162C0: - ldr r1, _081162CC @ =gUnknown_84574C4 -_081162C2: - adds r0, r2, 0 - bl StringExpandPlaceholders - b _081162D8 - .align 2, 0 -_081162CC: .4byte gUnknown_84574C4 -_081162D0: - ldr r1, _081162DC @ =gUnknown_84574EC - adds r0, r2, 0 - bl StringExpandPlaceholders -_081162D8: - pop {r0} - bx r0 - .align 2, 0 -_081162DC: .4byte gUnknown_84574EC - thumb_func_end sub_8116244 - - thumb_func_start sub_81162E0 -sub_81162E0: @ 81162E0 - push {lr} - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x44 - beq _08116300 - cmp r1, 0x44 - bgt _081162F6 - cmp r1, 0x41 - beq _08116300 - b _08116312 -_081162F6: - cmp r2, 0x45 - beq _0811630C - cmp r2, 0x48 - beq _0811630C - b _08116312 -_08116300: - ldr r1, _08116308 @ =gUnknown_8457E28 - bl StringExpandPlaceholders - b _08116312 - .align 2, 0 -_08116308: .4byte gUnknown_8457E28 -_0811630C: - ldr r1, _08116318 @ =gUnknown_8457E44 - bl StringExpandPlaceholders -_08116312: - pop {r0} - bx r0 - .align 2, 0 -_08116318: .4byte gUnknown_8457E44 - thumb_func_end sub_81162E0 - - thumb_func_start sub_811631C -sub_811631C: @ 811631C - push {lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - subs r0, r1, 0x1 - cmp r0, 0x15 - bhi _081163A8 - lsls r0, 2 - ldr r1, _08116334 @ =_08116338 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08116334: .4byte _08116338 - .align 2, 0 -_08116338: - .4byte _08116390 - .4byte _08116390 - .4byte _081163A0 - .4byte _08116390 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A0 - .4byte _081163A0 - .4byte _081163A0 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _081163A8 - .4byte _08116390 - .4byte _08116390 -_08116390: - ldr r1, _0811639C @ =gUnknown_8459238 - adds r0, r2, 0 - bl StringExpandPlaceholders - b _081163A8 - .align 2, 0 -_0811639C: .4byte gUnknown_8459238 -_081163A0: - ldr r1, _081163AC @ =gUnknown_8459250 - adds r0, r2, 0 - bl StringExpandPlaceholders -_081163A8: - pop {r0} - bx r0 - .align 2, 0 -_081163AC: .4byte gUnknown_8459250 - thumb_func_end sub_811631C - - thumb_func_start sub_81163B0 -sub_81163B0: @ 81163B0 - push {lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - subs r0, r1, 0x1 - cmp r0, 0x15 - bhi _0811643C - lsls r0, 2 - ldr r1, _081163C8 @ =_081163CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081163C8: .4byte _081163CC - .align 2, 0 -_081163CC: - .4byte _08116424 - .4byte _08116424 - .4byte _08116434 - .4byte _08116424 - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _08116434 - .4byte _08116434 - .4byte _08116434 - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _0811643C - .4byte _08116424 - .4byte _08116424 -_08116424: - ldr r1, _08116430 @ =gUnknown_84576AC - adds r0, r2, 0 - bl StringExpandPlaceholders - b _0811643C - .align 2, 0 -_08116430: .4byte gUnknown_84576AC -_08116434: - ldr r1, _08116440 @ =gUnknown_84576C4 - adds r0, r2, 0 - bl StringExpandPlaceholders -_0811643C: - pop {r0} - bx r0 - .align 2, 0 -_08116440: .4byte gUnknown_84576C4 - thumb_func_end sub_81163B0 - - thumb_func_start sub_8116444 -sub_8116444: @ 8116444 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - adds r4, r2, 0 - ldr r0, [r5] - bl sub_8116524 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08116460 - cmp r0, 0x2 - beq _081164AC - b _081164C0 -_08116460: - movs r0, 0x2 - bl PlaySE - ldrb r0, [r5, 0x12] - bl RedrawListMenu - ldr r4, _081164A0 @ =gStringVar2 - ldrb r0, [r5, 0x13] - lsls r0, 5 - ldr r1, [r5] - adds r1, r0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy7 - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r0, _081164A4 @ =gStringVar4 - ldr r1, _081164A8 @ =gUnknown_203B058 - ldrb r1, [r1] - bl sub_8116244 - strb r6, [r5, 0xC] - b _081164C0 - .align 2, 0 -_081164A0: .4byte gStringVar2 -_081164A4: .4byte gStringVar4 -_081164A8: .4byte gUnknown_203B058 -_081164AC: - movs r0, 0 - movs r1, 0 - bl sub_80FB9E4 - ldrb r0, [r5, 0x12] - bl RedrawListMenu - strb r4, [r5, 0xC] - movs r0, 0x1 - b _081164C2 -_081164C0: - movs r0, 0 -_081164C2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8116444 - - thumb_func_start sub_81164C8 -sub_81164C8: @ 81164C8 - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, _081164F4 @ =gUnknown_203B05C - ldr r3, [r0] - movs r2, 0 - ldr r1, [r3] - lsls r0, r4, 5 - adds r1, r0 - ldrb r0, [r1, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - beq _081164F8 - cmp r0, 0x2 - beq _08116502 - b _08116504 - .align 2, 0 -_081164F4: .4byte gUnknown_203B05C -_081164F8: - ldrb r0, [r1, 0x1B] - cmp r0, 0 - beq _08116504 - movs r2, 0x2 - b _08116504 -_08116502: - movs r2, 0x1 -_08116504: - lsls r0, r4, 5 - ldr r3, [r3] - adds r3, r0 - str r2, [sp] - lsls r0, r4, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0 - adds r2, r6, 0 - bl sub_811A910 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81164C8 - - thumb_func_start sub_8116524 -sub_8116524: @ 8116524 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r0, _0811657C @ =gUnknown_203B05C - ldr r5, [r0] - movs r0, 0 - mov r8, r0 - movs r3, 0x1 -_08116538: - ldr r0, [r5] - lsls r6, r3, 5 - adds r2, r0, r6 - ldrb r0, [r2, 0x1A] - lsls r0, 30 - lsrs r0, 30 - mov r9, r0 - cmp r0, 0x1 - bne _08116598 - ldr r1, [r5, 0x4] - adds r0, r2, 0 - str r3, [sp] - bl sub_811A748 - adds r4, r0, 0 - ldr r3, [sp] - cmp r4, 0xFF - beq _08116580 - ldr r1, [r5] - ldr r0, [r5, 0x4] - lsls r2, r4, 3 - subs r2, r4 - lsls r2, 2 - adds r1, r6 - adds r0, r2 - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldr r0, [r5] - adds r0, r6 - mov r1, r9 - strh r1, [r0, 0x18] - b _08116598 - .align 2, 0 -_0811657C: .4byte gUnknown_203B05C -_08116580: - ldr r2, [r5] - adds r2, r6 - ldrb r1, [r2, 0x1A] - movs r4, 0x4 - negs r4, r4 - adds r0, r4, 0 - ands r1, r0 - movs r0, 0x2 - orrs r1, r0 - strb r1, [r2, 0x1A] - movs r7, 0x2 - mov r8, r7 -_08116598: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x4 - bls _08116538 - movs r6, 0 - movs r4, 0x3 -_081165A6: - ldr r0, [r5] - ldr r1, [r5, 0x4] - adds r1, r6 - movs r2, 0x5 - bl sub_811A798 - adds r6, 0x1C - subs r4, 0x1 - ldr r0, [r5] - cmp r4, 0 - bge _081165A6 - mov r1, r8 - cmp r1, 0x2 - beq _081165D8 - adds r1, r0, 0 - movs r4, 0x4 -_081165C6: - ldrb r0, [r1, 0x1B] - cmp r0, 0 - beq _081165D0 - movs r2, 0x1 - mov r8, r2 -_081165D0: - adds r1, 0x20 - subs r4, 0x1 - cmp r4, 0 - bge _081165C6 -_081165D8: - mov r0, r8 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8116524 - - thumb_func_start sub_81165E8 -sub_81165E8: @ 81165E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _081166BC @ =gUnknown_203B05C - ldr r4, [r0] - movs r3, 0 -_081165F8: - ldr r0, [r4, 0x8] - lsls r2, r3, 5 - ldr r1, [r4] - adds r0, r2 - adds r1, r2 - ldm r1!, {r2,r5,r6} - stm r0!, {r2,r5,r6} - ldm r1!, {r2,r5,r7} - stm r0!, {r2,r5,r7} - ldm r1!, {r6,r7} - stm r0!, {r6,r7} - adds r3, 0x1 - ldr r0, [r4, 0x8] - ldr r1, [r4] - cmp r3, 0x4 - ble _081165F8 - movs r5, 0 - mov r8, r1 - mov r9, r0 - movs r3, 0x4 -_08116620: - mov r1, r9 - ldrb r0, [r1, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _08116642 - lsls r0, r5, 5 - add r0, r8 - ldm r1!, {r2,r6,r7} - stm r0!, {r2,r6,r7} - ldm r1!, {r2,r6,r7} - stm r0!, {r2,r6,r7} - ldm r1!, {r2,r6} - stm r0!, {r2,r6} - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_08116642: - movs r7, 0x20 - add r9, r7 - subs r3, 0x1 - cmp r3, 0 - bge _08116620 - mov r10, r5 - cmp r5, 0x4 - bhi _081166A4 - ldr r0, _081166C0 @ =gUnknown_8457034 - mov r9, r0 - movs r1, 0 - mov r12, r1 - movs r2, 0x4 - negs r2, r2 - mov r8, r2 -_08116660: - ldr r1, [r4] - lsls r3, r5, 5 - adds r1, r3 - mov r0, r9 - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - ldr r0, [r4] - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x18] - ldr r1, [r4] - adds r1, r3 - ldrb r2, [r1, 0x1A] - mov r0, r8 - ands r0, r2 - strb r0, [r1, 0x1A] - ldr r1, [r4] - adds r1, r3 - ldrb r2, [r1, 0x1A] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1A] - ldr r0, [r4] - adds r0, r3 - mov r6, r12 - strb r6, [r0, 0x1B] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _08116660 -_081166A4: - movs r3, 0 - ldr r1, [r4] - ldrb r0, [r1, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _081166C4 - ldrb r0, [r1, 0x1B] - cmp r0, 0x40 - bne _081166C4 - mov r10, r3 - b _081166E4 - .align 2, 0 -_081166BC: .4byte gUnknown_203B05C -_081166C0: .4byte gUnknown_8457034 -_081166C4: - adds r3, 0x1 - cmp r3, 0x4 - bgt _081166E4 - lsls r0, r3, 5 - adds r2, r1, r0 - ldrb r0, [r2, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _081166C4 - ldrb r0, [r2, 0x1B] - cmp r0, 0x40 - bne _081166C4 - lsls r0, r3, 24 - lsrs r0, 24 - mov r10, r0 -_081166E4: - mov r0, r10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_81165E8 - - thumb_func_start TryJoinLinkGroup -TryJoinLinkGroup: @ 81166F4 - push {lr} - ldr r0, _08116724 @ =sub_8116738 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08116728 @ =gUnknown_203B05C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0811672C @ =gTasks+0x8 - adds r1, r0 - str r1, [r2] - ldr r0, _08116730 @ =gUnknown_3002028 - str r1, [r0] - movs r0, 0 - strb r0, [r1, 0x8] - strb r0, [r1, 0x9] - ldr r1, _08116734 @ =gSpecialVar_Result - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08116724: .4byte sub_8116738 -_08116728: .4byte gUnknown_203B05C -_0811672C: .4byte gTasks+0x8 -_08116730: .4byte gUnknown_3002028 -_08116734: .4byte gSpecialVar_Result - thumb_func_end TryJoinLinkGroup - - thumb_func_start sub_8116738 -sub_8116738: @ 8116738 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08116758 @ =gUnknown_203B05C - ldr r6, [r0] - ldrb r0, [r6, 0x8] - cmp r0, 0x17 - bls _0811674C - b _08116D06 -_0811674C: - lsls r0, 2 - ldr r1, _0811675C @ =_08116760 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08116758: .4byte gUnknown_203B05C -_0811675C: .4byte _08116760 - .align 2, 0 -_08116760: - .4byte _081167C0 - .4byte _0811680C - .4byte _08116838 - .4byte _08116904 - .4byte _08116D06 - .4byte _081169B4 - .4byte _08116A08 - .4byte _08116B94 - .4byte _08116BB0 - .4byte _08116BFE - .4byte _08116C10 - .4byte _08116C98 - .4byte _08116C10 - .4byte _08116C68 - .4byte _08116C10 - .4byte _08116CA8 - .4byte _08116D06 - .4byte _08116D06 - .4byte _08116C10 - .4byte _08116CC8 - .4byte _08116C10 - .4byte _08116CFC - .4byte _08116D06 - .4byte _08116CEC -_081167C0: - ldr r5, _08116800 @ =gUnknown_84570C8 - ldr r4, _08116804 @ =gSpecialVar_0x8004 - ldrh r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - ldr r1, _08116808 @ =gUnknown_203B058 - ldrh r0, [r4] - adds r0, r5 - ldrb r0, [r0] - strb r0, [r1] - bl sub_800B1F4 - bl OpenLink - bl sub_80FBBD8 - movs r0, 0x70 - bl AllocZeroed - str r0, [r6, 0x4] - movs r0, 0x80 - lsls r0, 2 - bl AllocZeroed - str r0, [r6] - movs r0, 0x1 - strb r0, [r6, 0x8] - b _08116D06 - .align 2, 0 -_08116800: .4byte gUnknown_84570C8 -_08116804: .4byte gSpecialVar_0x8004 -_08116808: .4byte gUnknown_203B058 -_0811680C: - adds r0, r6, 0 - adds r0, 0x9 - ldr r2, _08116830 @ =gUnknown_84591B8 - ldr r1, _08116834 @ =gSpecialVar_0x8004 - ldrh r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08116828 - b _08116D06 -_08116828: - movs r0, 0x2 - strb r0, [r6, 0x8] - b _08116D06 - .align 2, 0 -_08116830: .4byte gUnknown_84591B8 -_08116834: .4byte gSpecialVar_0x8004 -_08116838: - ldr r0, [r6, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r6] - movs r1, 0x10 - bl sub_811A5E4 - ldr r0, [r6, 0x4] - ldr r1, _081168E8 @ =gSpecialVar_0x8004 - ldrh r1, [r1] - bl sub_811A054 - movs r4, 0 - strb r0, [r6, 0x11] - ldr r0, _081168EC @ =gUnknown_8456CD0 - bl AddWindow - strb r0, [r6, 0xC] - ldr r0, _081168F0 @ =gUnknown_8456D4C - bl AddWindow - strb r0, [r6, 0xB] - ldr r0, _081168F4 @ =gUnknown_8456D54 - bl AddWindow - strb r0, [r6, 0xD] - ldrb r0, [r6, 0xC] - movs r1, 0x22 - bl FillWindowPixelBuffer - ldrb r0, [r6, 0xC] - ldr r2, _081168F8 @ =gUnknown_8458FC8 - movs r1, 0x2 - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0 - movs r3, 0x8 - bl sub_811A444 - ldrb r0, [r6, 0xC] - bl PutWindowTilemap - ldrb r0, [r6, 0xC] - movs r1, 0x2 - bl CopyWindowToVram - ldrb r0, [r6, 0xB] - movs r1, 0 - bl DrawStdWindowFrame - ldr r0, _081168FC @ =gMultiuseListMenuTemplate - adds r2, r0, 0 - ldr r1, _08116900 @ =gUnknown_8456DDC - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldrb r1, [r6, 0xB] - strb r1, [r0, 0x10] - movs r1, 0 - movs r2, 0 - bl ListMenuInit - strb r0, [r6, 0xE] - ldrb r0, [r6, 0xD] - movs r1, 0 - bl DrawStdWindowFrame - ldrb r0, [r6, 0xD] - bl PutWindowTilemap - ldrb r0, [r6, 0xD] - bl sub_8115924 - ldrb r0, [r6, 0xD] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - strb r4, [r6, 0xF] - movs r0, 0x3 - strb r0, [r6, 0x8] - b _08116D06 - .align 2, 0 -_081168E8: .4byte gSpecialVar_0x8004 -_081168EC: .4byte gUnknown_8456CD0 -_081168F0: .4byte gUnknown_8456D4C -_081168F4: .4byte gUnknown_8456D54 -_081168F8: .4byte gUnknown_8458FC8 -_081168FC: .4byte gMultiuseListMenuTemplate -_08116900: .4byte gUnknown_8456DDC -_08116904: - bl sub_8116FE4 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0811691E - cmp r4, 0x1 - beq _08116916 - b _08116BF6 -_08116916: - movs r0, 0x2 - bl PlaySE - b _08116BF6 -_0811691E: - ldrb r0, [r6, 0xE] - bl ListMenu_ProcessInput - adds r4, r0, 0 - ldr r0, _0811696C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0811699C - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _0811699C - ldr r0, [r6] - lsls r1, r4, 5 - adds r0, r1 - ldrb r1, [r0, 0xA] - ldrb r0, [r0, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _08116994 - lsrs r0, r1, 7 - cmp r0, 0 - bne _08116994 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8116D10 - adds r1, r0, 0 - cmp r1, 0 - bne _08116970 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8116D60 - movs r0, 0x5 - b _08116982 - .align 2, 0 -_0811696C: .4byte gMain -_08116970: - ldr r0, _0811698C @ =gStringVar4 - ldr r2, _08116990 @ =gUnknown_8457608 - subs r1, 0x1 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - movs r0, 0x12 -_08116982: - strb r0, [r6, 0x8] - movs r0, 0x67 - bl PlaySE - b _08116D06 - .align 2, 0 -_0811698C: .4byte gStringVar4 -_08116990: .4byte gUnknown_8457608 -_08116994: - movs r0, 0x7 - bl PlaySE - b _08116D06 -_0811699C: - ldr r0, _081169B0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _081169AA - b _08116D06 -_081169AA: - movs r0, 0xA - strb r0, [r6, 0x8] - b _08116D06 - .align 2, 0 -_081169B0: .4byte gMain -_081169B4: - ldr r4, _081169FC @ =gStringVar4 - ldr r0, _08116A00 @ =gUnknown_203B058 - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_811631C - adds r0, r6, 0 - adds r0, 0x9 - adds r1, r4, 0 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _081169D2 - b _08116D06 -_081169D2: - ldr r4, _08116A04 @ =gStringVar1 - ldrb r0, [r6, 0xF] - lsls r0, 5 - ldr r1, [r6] - adds r1, r0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy7 - ldr r1, [r6] - ldrb r0, [r6, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - b _08116C0A - .align 2, 0 -_081169FC: .4byte gStringVar4 -_08116A00: .4byte gUnknown_203B058 -_08116A04: .4byte gStringVar1 -_08116A08: - ldr r0, _08116A3C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08116AA4 - ldr r4, _08116A40 @ =gUnknown_203B058 - ldr r1, [r6] - ldrb r0, [r6, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r0, [r1, 0xA] - lsls r0, 25 - lsrs r0, 25 - strb r0, [r4] - movs r0, 0 - movs r1, 0 - bl sub_80FB9E4 - ldrb r0, [r4] - subs r0, 0x1 - cmp r0, 0x15 - bhi _08116AA4 - lsls r0, 2 - ldr r1, _08116A44 @ =_08116A48 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08116A3C: .4byte gReceivedRemoteLinkPlayers -_08116A40: .4byte gUnknown_203B058 -_08116A44: .4byte _08116A48 - .align 2, 0 -_08116A48: - .4byte _08116AA0 - .4byte _08116AA0 - .4byte _08116AA0 - .4byte _08116AA0 - .4byte _08116AA0 - .4byte _08116AA4 - .4byte _08116AA4 - .4byte _08116AA4 - .4byte _08116AA0 - .4byte _08116AA0 - .4byte _08116AA0 - .4byte _08116AA4 - .4byte _08116AA0 - .4byte _08116AA0 - .4byte _08116AA4 - .4byte _08116AA4 - .4byte _08116AA4 - .4byte _08116AA4 - .4byte _08116AA4 - .4byte _08116AA4 - .4byte _08116AA0 - .4byte _08116AA0 -_08116AA0: - movs r0, 0x14 - strb r0, [r6, 0x8] -_08116AA4: - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x8 - bhi _08116B70 - lsls r0, 2 - ldr r1, _08116ABC @ =_08116AC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08116ABC: .4byte _08116AC0 - .align 2, 0 -_08116AC0: - .4byte _08116AE4 - .4byte _08116AEA - .4byte _08116B70 - .4byte _08116B70 - .4byte _08116AF0 - .4byte _08116AEA - .4byte _08116B44 - .4byte _08116B70 - .4byte _08116AEA -_08116AE4: - movs r0, 0xC - strb r0, [r6, 0x8] - b _08116B70 -_08116AEA: - movs r0, 0xE - strb r0, [r6, 0x8] - b _08116B70 -_08116AF0: - ldr r4, _08116B30 @ =gStringVar4 - ldr r5, _08116B34 @ =gUnknown_203B058 - ldrb r1, [r5] - adds r0, r4, 0 - bl sub_81163B0 - adds r0, r6, 0 - adds r0, 0x9 - adds r1, r4, 0 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - beq _08116B70 - movs r0, 0x7 - movs r1, 0 - bl sub_80FB9E4 - ldr r0, _08116B38 @ =gStringVar1 - ldr r2, _08116B3C @ =gUnknown_8456C74 - ldrb r1, [r5] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - ldr r1, _08116B40 @ =gUnknown_8457700 - adds r0, r4, 0 - bl StringExpandPlaceholders - b _08116B70 - .align 2, 0 -_08116B30: .4byte gStringVar4 -_08116B34: .4byte gUnknown_203B058 -_08116B38: .4byte gStringVar1 -_08116B3C: .4byte gUnknown_8456C74 -_08116B40: .4byte gUnknown_8457700 -_08116B44: - ldrb r0, [r6, 0x15] - cmp r0, 0xF0 - bls _08116B6C - adds r0, r6, 0 - adds r0, 0x9 - ldr r1, _08116B68 @ =gStringVar4 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - beq _08116B70 - movs r0, 0xC - movs r1, 0 - bl sub_80FB9E4 - movs r0, 0 - b _08116B6E - .align 2, 0 -_08116B68: .4byte gStringVar4 -_08116B6C: - adds r0, 0x1 -_08116B6E: - strb r0, [r6, 0x15] -_08116B70: - bl sub_80FB9F4 - lsls r0, 24 - cmp r0, 0 - beq _08116B7C - b _08116D06 -_08116B7C: - ldr r0, _08116B90 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08116B8A - b _08116D06 -_08116B8A: - movs r0, 0x7 - strb r0, [r6, 0x8] - b _08116D06 - .align 2, 0 -_08116B90: .4byte gMain -_08116B94: - adds r0, r6, 0 - adds r0, 0x9 - ldr r1, _08116BAC @ =gUnknown_845771C - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08116BA6 - b _08116D06 -_08116BA6: - movs r0, 0x8 - strb r0, [r6, 0x8] - b _08116D06 - .align 2, 0 -_08116BAC: .4byte gUnknown_845771C -_08116BB0: - adds r4, r6, 0 - adds r4, 0x9 - bl sub_80FB9F4 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_811A14C - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08116BEE - cmp r1, r0 - bgt _08116BDC - subs r0, 0x2 - cmp r1, r0 - beq _08116BF2 - b _08116D06 -_08116BDC: - cmp r1, 0 - beq _08116BE6 - cmp r1, 0x1 - beq _08116BEE - b _08116D06 -_08116BE6: - bl sub_80FA6BC - movs r0, 0x9 - b _08116BF4 -_08116BEE: - movs r0, 0x5 - b _08116BF4 -_08116BF2: - movs r0, 0x6 -_08116BF4: - strb r0, [r6, 0x8] -_08116BF6: - ldrb r0, [r6, 0xE] - bl RedrawListMenu - b _08116D06 -_08116BFE: - bl sub_80FB9F4 - lsls r0, 24 - cmp r0, 0 - bne _08116C0A - b _08116D06 -_08116C0A: - movs r0, 0x6 - strb r0, [r6, 0x8] - b _08116D06 -_08116C10: - ldrb r0, [r6, 0xD] - bl ClearWindowTilemap - ldrb r0, [r6, 0xD] - movs r1, 0 - bl ClearStdWindowAndFrame - ldrb r0, [r6, 0xE] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - ldrb r0, [r6, 0xC] - bl ClearWindowTilemap - ldrb r0, [r6, 0xB] - movs r1, 0 - bl ClearStdWindowAndFrame - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldrb r0, [r6, 0xD] - bl RemoveWindow - ldrb r0, [r6, 0xB] - bl RemoveWindow - ldrb r0, [r6, 0xC] - bl RemoveWindow - ldrb r0, [r6, 0x11] - bl DestroyTask - ldr r0, [r6] - bl Free - ldr r0, [r6, 0x4] - bl Free - ldrb r0, [r6, 0x8] - adds r0, 0x1 - strb r0, [r6, 0x8] - b _08116D06 -_08116C68: - bl DestroyWirelessStatusIndicatorSprite - adds r5, r6, 0 - adds r5, 0x9 - ldr r4, _08116C90 @ =gUnknown_8457754 - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 22 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - beq _08116D06 - ldr r0, _08116C94 @ =gSpecialVar_Result - movs r1, 0x6 - b _08116CDC - .align 2, 0 -_08116C90: .4byte gUnknown_8457754 -_08116C94: .4byte gSpecialVar_Result -_08116C98: - bl DestroyWirelessStatusIndicatorSprite - ldr r0, _08116CA4 @ =gSpecialVar_Result - movs r1, 0x5 - b _08116CDC - .align 2, 0 -_08116CA4: .4byte gSpecialVar_Result -_08116CA8: - bl DestroyWirelessStatusIndicatorSprite - adds r5, r6, 0 - adds r5, 0x9 - ldr r4, _08116CC4 @ =gUnknown_8457754 - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 22 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - b _08116CCE - .align 2, 0 -_08116CC4: .4byte gUnknown_8457754 -_08116CC8: - adds r0, r6, 0 - adds r0, 0x9 - ldr r1, _08116CE4 @ =gStringVar4 -_08116CCE: - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - beq _08116D06 - ldr r0, _08116CE8 @ =gSpecialVar_Result - movs r1, 0x8 -_08116CDC: - strh r1, [r0] - movs r0, 0x17 - strb r0, [r6, 0x8] - b _08116D06 - .align 2, 0 -_08116CE4: .4byte gStringVar4 -_08116CE8: .4byte gSpecialVar_Result -_08116CEC: - adds r0, r4, 0 - bl DestroyTask - bl sub_811A41C - bl sub_80F8DC0 - b _08116D06 -_08116CFC: - bl sub_8117990 - adds r0, r4, 0 - bl DestroyTask -_08116D06: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8116738 - - thumb_func_start sub_8116D10 -sub_8116D10: @ 8116D10 - push {lr} - lsls r1, 5 - ldr r0, [r0] - adds r3, r0, r1 - ldr r0, _08116D44 @ =gUnknown_203B058 - ldrb r0, [r0] - cmp r0, 0x4 - bne _08116D56 - ldrb r0, [r3, 0x1] - movs r1, 0x3C - ands r1, r0 - cmp r1, 0x10 - beq _08116D56 - cmp r1, 0x14 - beq _08116D56 - ldr r0, _08116D48 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r1, [r0, 0x9] - movs r2, 0x80 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08116D4C - movs r0, 0x1 - b _08116D5C - .align 2, 0 -_08116D44: .4byte gUnknown_203B058 -_08116D48: .4byte gSaveBlock2Ptr -_08116D4C: - ldrb r1, [r3] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _08116D5A -_08116D56: - movs r0, 0 - b _08116D5C -_08116D5A: - movs r0, 0x2 -_08116D5C: - pop {r1} - bx r1 - thumb_func_end sub_8116D10 - - thumb_func_start sub_8116D60 -sub_8116D60: @ 8116D60 - push {r4,r5,lr} - adds r4, r0, 0 - strb r1, [r4, 0xF] - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - ldrb r0, [r4, 0xE] - bl RedrawListMenu - ldr r5, _08116DD4 @ =gStringVar1 - ldrb r0, [r4, 0xF] - lsls r0, 5 - ldr r1, [r4] - adds r1, r0 - adds r1, 0x10 - adds r0, r5, 0 - bl StringCopy7 - ldr r1, [r4] - ldrb r0, [r4, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r5, 0 - bl ConvertInternationalString - ldr r1, _08116DD8 @ =gUnknown_84570C8 - ldr r0, _08116DDC @ =gSpecialVar_0x8004 - ldrh r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - ldrb r1, [r4, 0xF] - lsls r1, 5 - ldr r0, [r4] - adds r0, r1 - adds r4, r0, 0 - adds r4, 0x10 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80FBF54 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08116DD4: .4byte gStringVar1 -_08116DD8: .4byte gUnknown_84570C8 -_08116DDC: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8116D60 - - thumb_func_start sub_8116DE0 -sub_8116DE0: @ 8116DE0 - push {lr} - ldr r0, _08116E0C @ =sub_8116E1C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08116E10 @ =gUnknown_203B05C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r2, _08116E14 @ =gTasks+0x8 - adds r1, r2 - str r1, [r3] - movs r2, 0 - strb r2, [r1, 0x8] - strb r2, [r1, 0x9] - ldr r2, _08116E18 @ =gUnknown_3002028 - str r1, [r2] - pop {r1} - bx r1 - .align 2, 0 -_08116E0C: .4byte sub_8116E1C -_08116E10: .4byte gUnknown_203B05C -_08116E14: .4byte gTasks+0x8 -_08116E18: .4byte gUnknown_3002028 - thumb_func_end sub_8116DE0 - - thumb_func_start sub_8116E1C -sub_8116E1C: @ 8116E1C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08116E38 @ =gUnknown_203B05C - ldr r4, [r0] - ldrb r0, [r4, 0x8] - cmp r0, 0xB - bhi _08116F20 - lsls r0, 2 - ldr r1, _08116E3C @ =_08116E40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08116E38: .4byte gUnknown_203B05C -_08116E3C: .4byte _08116E40 - .align 2, 0 -_08116E40: - .4byte _08116E70 - .4byte _08116F20 - .4byte _08116EA4 - .4byte _08116EC8 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116F20 - .4byte _08116EF8 - .4byte _08116F16 -_08116E70: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - bl sub_800B1F4 - bl OpenLink - bl sub_80FBBD8 - movs r0, 0x1 - bl sub_80FB128 - movs r0, 0x70 - bl AllocZeroed - str r0, [r4, 0x4] - movs r0, 0x80 - lsls r0, 2 - bl AllocZeroed - str r0, [r4] - movs r0, 0x2 - strb r0, [r4, 0x8] - b _08116F20 -_08116EA4: - ldr r0, [r4, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r4] - movs r1, 0x10 - bl sub_811A5E4 - ldr r0, [r4, 0x4] - movs r1, 0xFF - bl sub_811A054 - movs r1, 0 - strb r0, [r4, 0x11] - strb r1, [r4, 0xF] - movs r0, 0x3 - strb r0, [r4, 0x8] - b _08116F20 -_08116EC8: - bl sub_8116FE4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08116EDA - movs r0, 0x2 - bl PlaySE -_08116EDA: - ldr r0, _08116EF4 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - movs r2, 0x26 - ldrsh r0, [r1, r2] - cmp r0, 0xFF - bne _08116F20 - movs r0, 0xA - strb r0, [r4, 0x8] - b _08116F20 - .align 2, 0 -_08116EF4: .4byte gTasks -_08116EF8: - ldrb r0, [r4, 0x11] - bl DestroyTask - ldr r0, [r4] - bl Free - ldr r0, [r4, 0x4] - bl Free - bl sub_80F8DC0 - ldrb r0, [r4, 0x8] - adds r0, 0x1 - strb r0, [r4, 0x8] - b _08116F20 -_08116F16: - bl sub_80F8DC0 - adds r0, r5, 0 - bl DestroyTask -_08116F20: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8116E1C - - thumb_func_start sub_8116F28 -sub_8116F28: @ 8116F28 - push {lr} - adds r2, r0, 0 - cmp r1, 0xFF - bne _08116F34 -_08116F30: - movs r0, 0x1 - b _08116F58 -_08116F34: - cmp r1, 0xD - bhi _08116F56 - ldr r0, _08116F44 @ =gUnknown_8457094 - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - b _08116F50 - .align 2, 0 -_08116F44: .4byte gUnknown_8457094 -_08116F48: - ldrb r0, [r1] - cmp r0, r2 - beq _08116F30 - adds r1, 0x1 -_08116F50: - ldrb r0, [r1] - cmp r0, 0xFF - bne _08116F48 -_08116F56: - movs r0, 0 -_08116F58: - pop {r1} - bx r1 - thumb_func_end sub_8116F28 - - thumb_func_start sub_8116F5C -sub_8116F5C: @ 8116F5C - push {lr} - ldr r0, [r0] - lsls r1, 5 - adds r1, r0, r1 - ldrb r2, [r1, 0x1A] - lsls r0, r2, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _08116F8E - ldrb r0, [r1, 0xA] - lsrs r0, 7 - cmp r0, 0 - beq _08116F7A - movs r0, 0x3 - b _08116F90 -_08116F7A: - lsls r0, r2, 29 - cmp r0, 0 - bge _08116F84 - movs r0, 0x1 - b _08116F90 -_08116F84: - ldrb r0, [r1, 0x1B] - cmp r0, 0 - beq _08116F8E - movs r0, 0x2 - b _08116F90 -_08116F8E: - movs r0, 0 -_08116F90: - pop {r1} - bx r1 - thumb_func_end sub_8116F5C - - thumb_func_start sub_8116F94 -sub_8116F94: @ 8116F94 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _08116FE0 @ =gUnknown_203B05C - ldr r0, [r0] - mov r8, r0 - bl sub_8116F5C - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 5 - mov r2, r8 - ldr r3, [r2] - adds r3, r1 - str r0, [sp] - lsls r4, 24 - lsrs r4, 24 - str r4, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0x8 - adds r2, r6, 0 - bl sub_811A81C - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08116FE0: .4byte gUnknown_203B05C - thumb_func_end sub_8116F94 - - thumb_func_start sub_8116FE4 -sub_8116FE4: @ 8116FE4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r0, _0811704C @ =gUnknown_203B05C - ldr r6, [r0] - movs r7, 0 - movs r3, 0 -_08116FF4: - ldr r0, [r6] - lsls r5, r3, 5 - adds r2, r0, r5 - ldrb r0, [r2, 0x1A] - lsls r0, 30 - mov r8, r5 - cmp r0, 0 - beq _081170C0 - ldr r1, [r6, 0x4] - adds r0, r2, 0 - str r3, [sp] - bl sub_811A748 - adds r4, r0, 0 - ldr r3, [sp] - cmp r4, 0xFF - beq _0811708E - ldr r0, [r6] - adds r2, r0, r5 - ldrb r1, [r2, 0x1A] - lsls r0, r1, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _0811706C - lsls r0, r4, 3 - subs r0, r4 - lsls r4, r0, 2 - ldr r1, [r6, 0x4] - adds r1, r4 - adds r0, r2, 0 - bl sub_811A6DC - ldr r3, [sp] - cmp r0, 0 - beq _08117050 - ldr r1, [r6] - ldr r0, [r6, 0x4] - adds r1, r5 - adds r0, r4 - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - b _0811707A - .align 2, 0 -_0811704C: .4byte gUnknown_203B05C -_08117050: - ldr r0, [r6] - adds r1, r0, r5 - ldrb r0, [r1, 0x1B] - cmp r0, 0 - beq _08117084 - subs r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r6] - adds r0, r5 - ldrb r0, [r0, 0x1B] - cmp r0, 0 - bne _08117084 - movs r7, 0x2 - b _08117084 -_0811706C: - movs r4, 0x4 - negs r4, r4 - adds r0, r4, 0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1A] -_0811707A: - ldr r0, [r6] - adds r0, r5 - movs r1, 0x40 - strb r1, [r0, 0x1B] - movs r7, 0x1 -_08117084: - ldr r0, [r6] - add r0, r8 - movs r1, 0 - strh r1, [r0, 0x18] - b _081170C0 -_0811708E: - ldr r0, [r6] - adds r1, r0, r5 - ldrb r0, [r1, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x2 - beq _081170C0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] - ldr r0, [r6] - adds r2, r0, r5 - ldrh r1, [r2, 0x18] - ldr r0, _081170FC @ =0x0000012b - cmp r1, r0 - bls _081170C0 - ldrb r0, [r2, 0x1A] - movs r7, 0x4 - negs r7, r7 - adds r1, r7, 0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1A] - movs r7, 0x2 -_081170C0: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _08116FF4 - movs r5, 0 - movs r4, 0x3 -_081170CE: - ldr r0, [r6] - ldr r1, [r6, 0x4] - adds r1, r5 - movs r2, 0x10 - bl sub_811A798 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _081170E4 - movs r7, 0x1 -_081170E4: - adds r5, 0x1C - subs r4, 0x1 - cmp r4, 0 - bge _081170CE - adds r0, r7, 0 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081170FC: .4byte 0x0000012b - thumb_func_end sub_8116FE4 - - thumb_func_start sub_8117100 -sub_8117100: @ 8117100 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl CB2_ReturnFromLinkTrade - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8117100 - - thumb_func_start sub_8117118 -sub_8117118: @ 8117118 - push {lr} - ldr r0, _0811712C @ =sub_8117100 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0811712C: .4byte sub_8117100 - thumb_func_end sub_8117118 - - thumb_func_start sub_8117130 -sub_8117130: @ 8117130 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0811716C @ =gUnknown_203B06C - mov r8, r0 - bl GetMultiplayerId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl sub_811B1EC - adds r7, r0, 0 - ldr r1, _08117170 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0811719C - cmp r0, 0x1 - bgt _08117174 - cmp r0, 0 - beq _0811717E - b _0811725C - .align 2, 0 -_0811716C: .4byte gUnknown_203B06C -_08117170: .4byte gTasks -_08117174: - cmp r0, 0x2 - beq _081171D8 - cmp r0, 0x3 - beq _08117210 - b _0811725C -_0811717E: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08117198 @ =gPlayerParty - adds r1, r0 - movs r0, 0 - movs r2, 0x64 - bl SendBlock - b _0811725C - .align 2, 0 -_08117198: .4byte gPlayerParty -_0811719C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0811725C - bl GetMultiplayerId - adds r1, r0, 0 - ldr r0, _081171D0 @ =gEnemyParty - movs r2, 0x1 - eors r1, r2 - lsls r1, 24 - lsrs r1, 16 - ldr r2, _081171D4 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0x64 - bl memcpy - movs r0, 0x32 - bl IncrementGameStat - bl ResetBlockReceivedFlags - b _081171FA - .align 2, 0 -_081171D0: .4byte gEnemyParty -_081171D4: .4byte gBlockRecvBuffer -_081171D8: - ldr r4, _08117204 @ =gBlockSendBuffer - ldr r0, _08117208 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r0, _0811720C @ =0x00002cd0 - adds r1, r0 - adds r0, r4, 0 - movs r2, 0xDC - bl memcpy - movs r0, 0 - adds r1, r4, 0 - movs r2, 0xDC - bl SendBlock - lsls r0, 24 - cmp r0, 0 - beq _0811725C -_081171FA: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - b _0811725C - .align 2, 0 -_08117204: .4byte gBlockSendBuffer -_08117208: .4byte gSaveBlock1Ptr -_0811720C: .4byte 0x00002cd0 -_08117210: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0811725C - ldr r4, _08117268 @ =gLinkPartnerMail - bl GetMultiplayerId - adds r1, r0, 0 - movs r0, 0x1 - eors r1, r0 - lsls r1, 24 - lsrs r1, 16 - ldr r0, _0811726C @ =gBlockRecvBuffer - adds r1, r0 - adds r0, r4, 0 - movs r2, 0xD8 - bl memcpy - bl ResetBlockReceivedFlags - ldr r1, _08117270 @ =gSelectedTradeMonPositions - strb r7, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r1, _08117274 @ =gMain - ldr r0, _08117278 @ =CB2_ReturnToField - str r0, [r1, 0x8] - ldr r0, _0811727C @ =CB2_InitTradeAnim_LinkTrade - bl SetMainCallback2 - mov r0, r8 - bl sub_811B148 - adds r0, r6, 0 - bl DestroyTask -_0811725C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08117268: .4byte gLinkPartnerMail -_0811726C: .4byte gBlockRecvBuffer -_08117270: .4byte gSelectedTradeMonPositions -_08117274: .4byte gMain -_08117278: .4byte CB2_ReturnToField -_0811727C: .4byte CB2_InitTradeAnim_LinkTrade - thumb_func_end sub_8117130 - - thumb_func_start sub_8117280 -sub_8117280: @ 8117280 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _081172A4 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _081172A8 - cmp r0, 0x1 - beq _081172C0 - b _0811734A - .align 2, 0 -_081172A4: .4byte gTasks -_081172A8: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _081172B8 - movs r0, 0x2 - bl sub_800A474 -_081172B8: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0811734A -_081172C0: - bl GetBlockReceivedStatus - adds r4, r0, 0 - bl sub_800A8D4 - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bne _0811734A - movs r4, 0 - ldr r0, _081172E0 @ =gTrainerCards - adds r7, r0, 0 - adds r7, 0x38 - ldr r6, _081172E4 @ =gLinkPlayers - adds r5, r0, 0 - b _08117302 - .align 2, 0 -_081172E0: .4byte gTrainerCards -_081172E4: .4byte gLinkPlayers -_081172E8: - lsls r0, r4, 8 - ldr r1, _08117338 @ =gBlockRecvBuffer - adds r1, r0, r1 - adds r0, r5, 0 - movs r2, 0x60 - bl memcpy - ldrh r0, [r6] - strb r0, [r7] - adds r7, 0x60 - adds r6, 0x1C - adds r5, 0x60 - adds r4, 0x1 -_08117302: - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - blt _081172E8 - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0811733C - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 16 - ldr r1, _08117338 @ =gBlockRecvBuffer - adds r1, r0, r1 - adds r0, r1, 0 - adds r0, 0x60 - ldrh r0, [r0] - bl sub_81446D0 - b _08117340 - .align 2, 0 -_08117338: .4byte gBlockRecvBuffer -_0811733C: - bl sub_81446C4 -_08117340: - bl ResetBlockReceivedFlags - mov r0, r8 - bl DestroyTask -_0811734A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8117280 - - thumb_func_start sub_8117354 -sub_8117354: @ 8117354 - push {r4,lr} - ldr r0, _0811736C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _08117370 - cmp r0, 0x1 - beq _08117384 - b _081173A2 - .align 2, 0 -_0811736C: .4byte gMain -_08117370: - ldr r0, _08117380 @ =sub_8117280 - movs r1, 0x5 - bl CreateTask - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _081173A2 - .align 2, 0 -_08117380: .4byte sub_8117280 -_08117384: - ldr r0, _081173B8 @ =sub_8117280 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _081173A2 - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081173BC @ =CB2_ReturnToField - bl ShowTrainerCardInLink -_081173A2: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081173B8: .4byte sub_8117280 -_081173BC: .4byte CB2_ReturnToField - thumb_func_end sub_8117354 - - thumb_func_start sub_81173C0 -sub_81173C0: @ 81173C0 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - bl HealPlayerParty - bl SavePlayerParty - bl LoadPlayerBag - ldr r5, _0811742C @ =gLinkPlayers - ldr r0, _08117430 @ =0x00002211 - str r0, [r5, 0x14] - bl GetMultiplayerId - adds r4, r0, 0 - bl GetMultiplayerId - lsls r4, 24 - lsrs r4, 24 - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x18] - bl GetMultiplayerId - adds r4, r0, 0 - bl GetMultiplayerId - movs r2, 0x1 - eors r4, r2 - lsls r4, 24 - lsrs r4, 24 - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 2 - adds r1, r5 - eors r0, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x18] - ldr r1, _08117434 @ =gMain - ldr r0, _08117438 @ =sub_8081668 - str r0, [r1, 0x8] - ldr r0, _0811743C @ =gBattleTypeFlags - str r6, [r0] - bl PlayBattleBGM - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811742C: .4byte gLinkPlayers -_08117430: .4byte 0x00002211 -_08117434: .4byte gMain -_08117438: .4byte sub_8081668 -_0811743C: .4byte gBattleTypeFlags - thumb_func_end sub_81173C0 - - thumb_func_start sub_8117440 -sub_8117440: @ 8117440 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r3, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r3, 16 - lsrs r3, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _081174AC @ =0x0000406f - adds r1, r3, 0 - bl VarSet - ldr r6, _081174B0 @ =gSaveBlock1Ptr - ldr r1, [r6] - movs r0, 0x4 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - mov r8, r2 - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - str r5, [sp] - adds r3, r4, 0 - bl SetWarpDestination - ldr r0, [r6] - movs r1, 0x4 - ldrsb r1, [r0, r1] - movs r2, 0x5 - ldrsb r2, [r0, r2] - str r4, [sp] - str r5, [sp, 0x4] - movs r0, 0 - mov r3, r8 - bl SetDynamicWarpWithCoords - bl WarpIntoMap - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081174AC: .4byte 0x0000406f -_081174B0: .4byte gSaveBlock1Ptr - thumb_func_end sub_8117440 - - thumb_func_start sub_81174B4 -sub_81174B4: @ 81174B4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - mov r8, r2 - adds r6, r3, 0 - ldr r1, [sp, 0x18] - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08117524 @ =gSpecialVar_0x8004 - strh r1, [r0] - ldr r0, _08117528 @ =0x0000406f - bl VarSet - bl GetLinkPlayerCount - ldr r1, _0811752C @ =gUnknown_3005030 - strb r0, [r1] - bl GetMultiplayerId - ldr r1, _08117530 @ =gUnknown_300502C - strb r0, [r1] - bl SetCableClubWarp - lsls r4, 24 - asrs r4, 24 - lsls r5, 24 - asrs r5, 24 - movs r2, 0x1 - negs r2, r2 - mov r0, r8 - lsls r0, 24 - asrs r0, 24 - mov r8, r0 - lsls r6, 24 - asrs r6, 24 - str r6, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - mov r3, r8 - bl SetWarpDestination - bl WarpIntoMap - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08117524: .4byte gSpecialVar_0x8004 -_08117528: .4byte 0x0000406f -_0811752C: .4byte gUnknown_3005030 -_08117530: .4byte gUnknown_300502C - thumb_func_end sub_81174B4 - - thumb_func_start sub_8117534 -sub_8117534: @ 8117534 - push {r4,lr} - ldr r0, _0811754C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _08117550 - cmp r0, 0x1 - beq _08117564 - b _08117576 - .align 2, 0 -_0811754C: .4byte gMain -_08117550: - ldr r0, _08117560 @ =sub_8117280 - movs r1, 0x5 - bl CreateTask - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08117576 - .align 2, 0 -_08117560: .4byte sub_8117280 -_08117564: - ldr r0, _0811758C @ =sub_8117280 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08117576 - ldr r0, _08117590 @ =sub_8056788 - bl SetMainCallback2 -_08117576: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811758C: .4byte sub_8117280 -_08117590: .4byte sub_8056788 - thumb_func_end sub_8117534 - - thumb_func_start sub_8117594 -sub_8117594: @ 8117594 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl TrainerCard_GenerateCardForLinkPlayer - cmp r5, 0 - beq _081175AE - bl sub_81440E8 - adds r1, r4, 0 - adds r1, 0x60 - strh r0, [r1] - b _081175B4 -_081175AE: - adds r0, r4, 0 - adds r0, 0x60 - strh r5, [r0] -_081175B4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8117594 - - thumb_func_start sub_81175BC -sub_81175BC: @ 81175BC - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_81446C4 - ldr r0, _081175DC @ =gUnknown_203B058 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0xD - bhi _08117620 - lsls r0, 2 - ldr r1, _081175E0 @ =_081175E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081175DC: .4byte gUnknown_203B058 -_081175E0: .4byte _081175E4 - .align 2, 0 -_081175E4: - .4byte _0811761C - .4byte _0811761C - .4byte _0811761C - .4byte _0811761C - .4byte _08117620 - .4byte _08117620 - .4byte _08117620 - .4byte _08117620 - .4byte _0811761C - .4byte _0811761C - .4byte _0811761C - .4byte _08117620 - .4byte _0811761C - .4byte _0811761C -_0811761C: - bl RecordMixTrainerNames -_08117620: - ldr r0, _08117638 @ =gUnknown_203B058 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x50 - bls _0811762C - b _081178E0 -_0811762C: - lsls r0, 2 - ldr r1, _0811763C @ =_08117640 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08117638: .4byte gUnknown_203B058 -_0811763C: .4byte _08117640 - .align 2, 0 -_08117640: - .4byte _081177A0 - .4byte _081177C8 - .4byte _081177F0 - .4byte _08117818 - .4byte _08117854 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117878 - .4byte _08117890 - .4byte _081178B0 - .4byte _081178C8 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117784 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117844 - .4byte _08117854 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117878 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _081178E0 - .4byte _08117784 -_08117784: - bl CleanupOverworldWindowsAndTilemaps - ldr r1, _08117798 @ =gMain - ldr r0, _0811779C @ =sub_811C1C8 - str r0, [r1, 0x8] - movs r0, 0x2 - bl InitChooseHalfPartyForBattle - b _081178E0 - .align 2, 0 -_08117798: .4byte gMain -_0811779C: .4byte sub_811C1C8 -_081177A0: - bl CleanupOverworldWindowsAndTilemaps - ldr r0, _081177C4 @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - bl HealPlayerParty - bl SavePlayerParty - bl LoadPlayerBag - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x6 - b _0811782E - .align 2, 0 -_081177C4: .4byte gBlockSendBuffer -_081177C8: - bl CleanupOverworldWindowsAndTilemaps - bl HealPlayerParty - bl SavePlayerParty - bl LoadPlayerBag - ldr r0, _081177EC @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x6 - b _0811782E - .align 2, 0 -_081177EC: .4byte gBlockSendBuffer -_081177F0: - bl CleanupOverworldWindowsAndTilemaps - bl HealPlayerParty - bl SavePlayerParty - bl LoadPlayerBag - ldr r0, _08117814 @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - movs r0, 0x5 - str r0, [sp] - movs r0, 0 - movs r1, 0x3 - b _0811782C - .align 2, 0 -_08117814: .4byte gBlockSendBuffer -_08117818: - ldr r0, _0811783C @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - bl CleanupOverworldWindowsAndTilemaps - movs r0, 0x3 - str r0, [sp] - movs r0, 0 - movs r1, 0x1 -_0811782C: - movs r2, 0x5 -_0811782E: - movs r3, 0x8 - bl sub_81174B4 - ldr r0, _08117840 @ =sub_8117534 - bl SetMainCallback2 - b _081178E0 - .align 2, 0 -_0811783C: .4byte gBlockSendBuffer -_08117840: .4byte sub_8117534 -_08117844: - ldr r0, _08117850 @ =sub_8117130 - movs r1, 0 - bl CreateTask - b _081178E0 - .align 2, 0 -_08117850: .4byte sub_8117130 -_08117854: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _08117864 - bl sub_80F8CFC - b _08117872 -_08117864: - bl sub_80F8D14 - movs r0, 0x45 - movs r1, 0 - movs r2, 0x1 - bl sub_80FAF58 -_08117872: - bl sub_8128420 - b _081178E0 -_08117878: - ldr r0, _08117888 @ =gBlockSendBuffer - movs r1, 0 - bl sub_8117594 - ldr r0, _0811788C @ =sub_8117354 - bl SetMainCallback2 - b _081178E0 - .align 2, 0 -_08117888: .4byte gBlockSendBuffer -_0811788C: .4byte sub_8117354 -_08117890: - movs r0, 0x8 - movs r1, 0x5 - movs r2, 0x1 - bl sub_8117440 - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081178AC @ =CB2_LoadMap - bl sub_8147AA8 - b _081178E0 - .align 2, 0 -_081178AC: .4byte CB2_LoadMap -_081178B0: - movs r0, 0x7 - movs r1, 0x9 - movs r2, 0x1 - bl sub_8117440 - ldr r0, _081178C4 @ =CB2_LoadMap - bl sub_814B754 - b _081178E0 - .align 2, 0 -_081178C4: .4byte CB2_LoadMap -_081178C8: - movs r0, 0x8 - movs r1, 0x5 - movs r2, 0x1 - bl sub_8117440 - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081178F8 @ =CB2_LoadMap - bl sub_81507FC -_081178E0: - adds r0, r4, 0 - bl DestroyTask - ldr r1, _081178FC @ =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] - bl ScriptContext2_Disable - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081178F8: .4byte CB2_LoadMap -_081178FC: .4byte gSpecialVar_Result - thumb_func_end sub_81175BC - - thumb_func_start sub_8117900 -sub_8117900: @ 8117900 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08117924 @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08117944 - cmp r0, 0x1 - bgt _08117928 - cmp r0, 0 - beq _08117932 - b _08117988 - .align 2, 0 -_08117924: .4byte gTasks+0x8 -_08117928: - cmp r0, 0x2 - beq _08117958 - cmp r0, 0x3 - beq _08117974 - b _08117988 -_08117932: - ldr r1, _08117940 @ =gSpecialVar_Result - movs r0, 0x1 - strh r0, [r1] - bl EnableBothScriptContexts - b _08117968 - .align 2, 0 -_08117940: .4byte gSpecialVar_Result -_08117944: - bl ScriptContext1_IsScriptSetUp - lsls r0, 24 - cmp r0, 0 - bne _08117988 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - b _08117968 -_08117958: - ldr r0, _08117970 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08117988 - bl sub_800AB9C -_08117968: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _08117988 - .align 2, 0 -_08117970: .4byte gPaletteFade -_08117974: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08117988 - adds r0, r5, 0 - bl DestroyTask - bl sub_81179A4 -_08117988: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8117900 - - thumb_func_start sub_8117990 -sub_8117990: @ 8117990 - push {lr} - ldr r0, _081179A0 @ =sub_8117900 - movs r1, 0 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_081179A0: .4byte sub_8117900 - thumb_func_end sub_8117990 - - thumb_func_start sub_81179A4 -sub_81179A4: @ 81179A4 - push {lr} - ldr r0, _081179C4 @ =sub_81175BC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081179C8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_081179C4: .4byte sub_81175BC -_081179C8: .4byte gTasks - thumb_func_end sub_81179A4 - - thumb_func_start MEvent_CreateTask_Leader -MEvent_CreateTask_Leader: @ 81179CC - push {r4,lr} - adds r4, r0, 0 - ldr r0, _081179FC @ =sub_8117A0C - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08117A00 @ =gUnknown_203B05C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08117A04 @ =gTasks+0x8 - adds r1, r0 - str r1, [r2] - movs r2, 0 - strb r2, [r1, 0xC] - strb r2, [r1, 0xD] - strb r4, [r1, 0x18] - ldr r0, _08117A08 @ =gSpecialVar_Result - strh r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081179FC: .4byte sub_8117A0C -_08117A00: .4byte gUnknown_203B05C -_08117A04: .4byte gTasks+0x8 -_08117A08: .4byte gSpecialVar_Result - thumb_func_end MEvent_CreateTask_Leader - - thumb_func_start sub_8117A0C -sub_8117A0C: @ 8117A0C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08117A2C @ =gUnknown_203B05C - ldr r5, [r0] - ldrb r0, [r5, 0xC] - cmp r0, 0x11 - bls _08117A20 - b _08117ECA -_08117A20: - lsls r0, 2 - ldr r1, _08117A30 @ =_08117A34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08117A2C: .4byte gUnknown_203B05C -_08117A30: .4byte _08117A34 - .align 2, 0 -_08117A34: - .4byte _08117A7C - .4byte _08117AB8 - .4byte _08117B7C - .4byte _08117BAC - .4byte _08117BBC - .4byte _08117C0C - .4byte _08117BE4 - .4byte _08117C12 - .4byte _08117CB2 - .4byte _08117D94 - .4byte _08117DA4 - .4byte _08117DBA - .4byte _08117DD2 - .4byte _08117DEE - .4byte _08117E26 - .4byte _08117E4C - .4byte _08117E80 - .4byte _08117EBA -_08117A7C: - ldr r1, _08117AB0 @ =gUnknown_203B058 - ldrb r0, [r5, 0x18] - strb r0, [r1] - ldr r1, _08117AB4 @ =gUnknown_203B059 - movs r0, 0x2 - strb r0, [r1] - ldrb r0, [r5, 0x18] - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - movs r0, 0 - movs r1, 0 - bl sub_80FAF74 - bl sub_800B1F4 - bl OpenLink - movs r0, 0x2 - bl sub_80FBB8C - movs r0, 0x1 - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117AB0: .4byte gUnknown_203B058 -_08117AB4: .4byte gUnknown_203B059 -_08117AB8: - movs r0, 0x70 - bl AllocZeroed - str r0, [r5, 0x4] - movs r0, 0xA0 - bl AllocZeroed - str r0, [r5] - movs r0, 0xA0 - bl AllocZeroed - str r0, [r5, 0x8] - ldr r0, [r5, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r5] - movs r1, 0x5 - bl sub_811A5E4 - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x10 - bl sub_80FCD50 - ldr r1, [r5] - movs r3, 0 - movs r0, 0 - strh r0, [r1, 0x18] - ldr r2, [r5] - ldrb r1, [r2, 0x1A] - subs r0, 0x4 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1A] - ldr r2, [r5] - ldrb r1, [r2, 0x1A] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1A] - ldr r0, [r5] - strb r3, [r0, 0x1B] - ldr r0, [r5, 0x4] - movs r1, 0xFF - bl sub_811A054 - strb r0, [r5, 0x17] - ldr r0, _08117B6C @ =gUnknown_8456CFC - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - bl GetMysteryGiftBaseBlock - lsls r0, 16 - ldr r2, _08117B70 @ =0x0000ffff - ldr r1, [sp, 0x4] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl AddWindow - strb r0, [r5, 0xF] - ldrb r0, [r5, 0xF] - bl MG_DrawTextBorder - ldr r0, _08117B74 @ =gMultiuseListMenuTemplate - adds r2, r0, 0 - ldr r1, _08117B78 @ =gUnknown_8456D34 - ldm r1!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r1!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldrb r1, [r5, 0xF] - strb r1, [r0, 0x10] - movs r1, 0 - movs r2, 0 - bl ListMenuInit - strb r0, [r5, 0x12] - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - strb r0, [r5, 0x13] - b _08117C02 - .align 2, 0 -_08117B6C: .4byte gUnknown_8456CFC -_08117B70: .4byte 0x0000ffff -_08117B74: .4byte gMultiuseListMenuTemplate -_08117B78: .4byte gUnknown_8456D34 -_08117B7C: - ldr r0, _08117B9C @ =gStringVar1 - ldr r2, _08117BA0 @ =gUnknown_8456C74 - ldr r4, _08117BA4 @ =gUnknown_203B058 - ldrb r1, [r4] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - ldr r0, _08117BA8 @ =gStringVar4 - ldrb r1, [r4] - bl sub_811599C - movs r0, 0x3 - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117B9C: .4byte gStringVar1 -_08117BA0: .4byte gUnknown_8456C74 -_08117BA4: .4byte gUnknown_203B058 -_08117BA8: .4byte gStringVar4 -_08117BAC: - ldr r0, _08117BB8 @ =gStringVar4 - bl AddTextPrinterToWindow1 - movs r0, 0x4 - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117BB8: .4byte gStringVar4 -_08117BBC: - adds r0, r5, 0 - movs r1, 0x5 - movs r2, 0x6 - bl sub_8116444 - ldr r0, _08117BE0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08117BD4 - b _08117ECA -_08117BD4: - movs r0, 0xD - strb r0, [r5, 0xC] - bl DestroyWirelessStatusIndicatorSprite - b _08117ECA - .align 2, 0 -_08117BE0: .4byte gMain -_08117BE4: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08117C08 @ =gUnknown_84577F8 - bl MG_PrintTextOnWindow1AndWaitButton - cmp r0, 0 - bne _08117BF4 - b _08117ECA -_08117BF4: - ldr r0, [r5] - bl sub_81165E8 - strb r0, [r5, 0x13] - ldrb r0, [r5, 0x12] - bl RedrawListMenu -_08117C02: - movs r0, 0x2 - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117C08: .4byte gUnknown_84577F8 -_08117C0C: - movs r0, 0x7 - strb r0, [r5, 0xC] - b _08117ECA -_08117C12: - adds r0, r5, 0 - adds r0, 0xD - adds r1, r5, 0 - adds r1, 0x14 - ldr r3, _08117C38 @ =gStringVar4 - movs r2, 0 - bl mevent_message_print_and_prompt_yes_no - lsls r0, 24 - asrs r4, r0, 24 - cmp r4, 0 - beq _08117C42 - cmp r4, 0 - bgt _08117C3C - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _08117C84 - b _08117ECA - .align 2, 0 -_08117C38: .4byte gStringVar4 -_08117C3C: - cmp r4, 0x1 - beq _08117C84 - b _08117ECA -_08117C42: - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - strb r4, [r1, 0x1B] - ldrb r0, [r5, 0x12] - bl RedrawListMenu - movs r0, 0x5 - strb r0, [r5, 0x19] - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldrb r0, [r5, 0x13] - lsls r0, 5 - ldr r2, [r5] - adds r2, r0 - adds r2, 0x10 - movs r0, 0x5 - b _08117CA8 -_08117C84: - movs r0, 0x6 - strb r0, [r5, 0x19] - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - ldrb r0, [r5, 0x13] - lsls r0, 5 - ldr r2, [r5] - adds r2, r0 - adds r2, 0x10 - movs r0, 0x6 -_08117CA8: - bl sub_80FA670 - movs r0, 0x8 - strb r0, [r5, 0xC] - b _08117ECA -_08117CB2: - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r0, 0x2 - bl sub_8118658 - lsls r0, 16 - lsrs r0, 16 - ldrb r2, [r5, 0x13] - lsls r2, 5 - ldr r1, [r5] - adds r1, r2 - adds r1, 0x10 - bl sub_80FA6FC - adds r4, r0, 0 - cmp r4, 0x1 - bne _08117D82 - ldrb r0, [r5, 0x19] - cmp r0, 0x5 - bne _08117D3C - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - movs r0, 0 - strb r0, [r1, 0x1B] - ldrb r0, [r5, 0x12] - bl RedrawListMenu - ldrb r0, [r5, 0x13] - adds r0, 0x1 - strb r0, [r5, 0x13] - ldr r4, _08117D30 @ =gStringVar1 - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r1, r0 - subs r1, 0x10 - adds r0, r4, 0 - bl StringCopy7 - ldr r1, [r5] - ldrb r0, [r5, 0x13] - subs r0, 0x1 - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r0, _08117D34 @ =gStringVar4 - ldr r1, _08117D38 @ =gUnknown_8457554 - bl StringExpandPlaceholders - movs r0, 0x9 - strb r0, [r5, 0xC] - bl sub_80F8F5C - b _08117D7C - .align 2, 0 -_08117D30: .4byte gStringVar1 -_08117D34: .4byte gStringVar4 -_08117D38: .4byte gUnknown_8457554 -_08117D3C: - ldrb r1, [r5, 0x13] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r4, r0, 0 - adds r4, 0x10 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80FBD4C - ldr r1, [r5] - ldrb r0, [r5, 0x13] - lsls r0, 5 - adds r1, r0 - ldrb r2, [r1, 0x1A] - movs r0, 0x4 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1A] - ldr r0, [r5] - bl sub_81165E8 - ldrb r0, [r5, 0x12] - bl RedrawListMenu - movs r0, 0x2 - strb r0, [r5, 0xC] -_08117D7C: - movs r0, 0 - strb r0, [r5, 0x19] - b _08117ECA -_08117D82: - cmp r4, 0x2 - beq _08117D88 - b _08117ECA -_08117D88: - movs r0, 0 - movs r1, 0 - bl sub_80FB9E4 - strb r4, [r5, 0xC] - b _08117ECA -_08117D94: - ldr r0, _08117DA0 @ =gStringVar4 - bl AddTextPrinterToWindow1 - movs r0, 0xA - strb r0, [r5, 0xC] - b _08117ECA - .align 2, 0 -_08117DA0: .4byte gStringVar4 -_08117DA4: - ldrb r0, [r5, 0xE] - adds r0, 0x1 - strb r0, [r5, 0xE] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x78 - bhi _08117DB4 - b _08117ECA -_08117DB4: - movs r0, 0xB - strb r0, [r5, 0xC] - b _08117ECA -_08117DBA: - adds r0, r5, 0 - movs r1, 0x5 - movs r2, 0x6 - bl sub_8116444 - lsls r0, 24 - cmp r0, 0 - beq _08117DCC - b _08117ECA -_08117DCC: - movs r0, 0xC - strb r0, [r5, 0xC] - b _08117ECA -_08117DD2: - bl sub_80F8F40 - lsls r0, 24 - cmp r0, 0 - beq _08117DE8 - movs r0, 0 - bl sub_80F8F7C - movs r0, 0xF - strb r0, [r5, 0xC] - b _08117ECA -_08117DE8: - movs r0, 0x6 - strb r0, [r5, 0xC] - b _08117ECA -_08117DEE: - bl DestroyWirelessStatusIndicatorSprite - bl sub_80F8DC0 - ldrb r0, [r5, 0x12] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldrb r0, [r5, 0xF] - bl RemoveWindow - ldrb r0, [r5, 0x17] - bl DestroyTask - ldr r0, [r5, 0x8] - bl Free - ldr r0, [r5] - bl Free - ldr r0, [r5, 0x4] - bl Free - b _08117EB2 -_08117E26: - adds r0, r5, 0 - adds r0, 0xD - ldr r1, _08117E44 @ =gUnknown_84571B8 - bl MG_PrintTextOnWindow1AndWaitButton - cmp r0, 0 - beq _08117ECA - adds r0, r4, 0 - bl DestroyTask - ldr r1, _08117E48 @ =gSpecialVar_Result - movs r0, 0x5 - strh r0, [r1] - b _08117ECA - .align 2, 0 -_08117E44: .4byte gUnknown_84571B8 -_08117E48: .4byte gSpecialVar_Result -_08117E4C: - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08117E64 - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08117E6A -_08117E64: - movs r0, 0xD - strb r0, [r5, 0xC] - b _08117ECA -_08117E6A: - ldr r0, _08117E7C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08117ECA - movs r0, 0x1 - bl sub_80FAFE0 - b _08117EB2 - .align 2, 0 -_08117E7C: .4byte gReceivedRemoteLinkPlayers -_08117E80: - ldrb r0, [r5, 0x12] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldrb r0, [r5, 0xF] - bl RemoveWindow - ldrb r0, [r5, 0x17] - bl DestroyTask - ldr r0, [r5, 0x8] - bl Free - ldr r0, [r5] - bl Free - ldr r0, [r5, 0x4] - bl Free - bl sub_800AB9C -_08117EB2: - ldrb r0, [r5, 0xC] - adds r0, 0x1 - strb r0, [r5, 0xC] - b _08117ECA -_08117EBA: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08117ECA - adds r0, r4, 0 - bl DestroyTask -_08117ECA: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8117A0C - - thumb_func_start MEvent_CreateTask_CardOrNewsWithFriend -MEvent_CreateTask_CardOrNewsWithFriend: @ 8117ED4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08117F0C @ =sub_8117F20 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08117F10 @ =gUnknown_203B05C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08117F14 @ =gTasks+0x8 - adds r1, r0 - str r1, [r2] - ldr r0, _08117F18 @ =gUnknown_3002028 - str r1, [r0] - movs r2, 0 - strb r2, [r1, 0x8] - strb r2, [r1, 0x9] - subs r4, 0x15 - strb r4, [r1, 0x12] - ldr r0, _08117F1C @ =gSpecialVar_Result - strh r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08117F0C: .4byte sub_8117F20 -_08117F10: .4byte gUnknown_203B05C -_08117F14: .4byte gTasks+0x8 -_08117F18: .4byte gUnknown_3002028 -_08117F1C: .4byte gSpecialVar_Result - thumb_func_end MEvent_CreateTask_CardOrNewsWithFriend - - thumb_func_start sub_8117F20 -sub_8117F20: @ 8117F20 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08117F40 @ =gUnknown_203B05C - ldr r5, [r0] - ldrb r0, [r5, 0x8] - cmp r0, 0xC - bls _08117F34 - b _08118288 -_08117F34: - lsls r0, 2 - ldr r1, _08117F44 @ =_08117F48 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08117F40: .4byte gUnknown_203B05C -_08117F44: .4byte _08117F48 - .align 2, 0 -_08117F48: - .4byte _08117F7C - .4byte _08117FB0 - .4byte _08117FC0 - .4byte _08118070 - .4byte _08118150 - .4byte _0811818C - .4byte _081181EC - .4byte _08118248 - .4byte _081181EC - .4byte _08118222 - .4byte _081181EC - .4byte _0811826C - .4byte _08118278 -_08117F7C: - ldrb r0, [r5, 0x12] - adds r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - bl sub_800B1F4 - bl OpenLink - bl sub_80FBBD8 - movs r0, 0x70 - bl AllocZeroed - str r0, [r5, 0x4] - movs r0, 0x80 - lsls r0, 2 - bl AllocZeroed - str r0, [r5] - movs r0, 0x1 - strb r0, [r5, 0x8] - b _08118288 -_08117FB0: - ldr r0, _08117FBC @ =gUnknown_8458FE4 - bl AddTextPrinterToWindow1 - movs r0, 0x2 - strb r0, [r5, 0x8] - b _08118288 - .align 2, 0 -_08117FBC: .4byte gUnknown_8458FE4 -_08117FC0: - ldr r0, [r5, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r5] - movs r1, 0x10 - bl sub_811A5E4 - ldr r0, [r5, 0x4] - ldrb r1, [r5, 0x12] - adds r1, 0x7 - bl sub_811A054 - movs r4, 0 - strb r0, [r5, 0x11] - ldr r0, _0811805C @ =gUnknown_8456D4C - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - bl GetMysteryGiftBaseBlock - lsls r0, 16 - ldr r2, _08118060 @ =0x0000ffff - ldr r1, [sp, 0x4] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl AddWindow - strb r0, [r5, 0xB] - ldr r0, _08118064 @ =gUnknown_8456D54 - bl AddWindow - strb r0, [r5, 0xD] - ldrb r0, [r5, 0xB] - bl MG_DrawTextBorder - ldr r0, _08118068 @ =gMultiuseListMenuTemplate - adds r2, r0, 0 - ldr r1, _0811806C @ =gUnknown_8456DDC - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldrb r1, [r5, 0xB] - strb r1, [r0, 0x10] - movs r1, 0 - movs r2, 0 - bl ListMenuInit - strb r0, [r5, 0xE] - ldrb r0, [r5, 0xD] - bl MG_DrawTextBorder - ldrb r0, [r5, 0xD] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldrb r0, [r5, 0xD] - bl PutWindowTilemap - ldrb r0, [r5, 0xD] - bl sub_8115924 - ldrb r0, [r5, 0xD] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - strb r4, [r5, 0xF] - movs r0, 0x3 - strb r0, [r5, 0x8] - b _08118288 - .align 2, 0 -_0811805C: .4byte gUnknown_8456D4C -_08118060: .4byte 0x0000ffff -_08118064: .4byte gUnknown_8456D54 -_08118068: .4byte gMultiuseListMenuTemplate -_0811806C: .4byte gUnknown_8456DDC -_08118070: - bl sub_8116FE4 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _0811808E - cmp r2, 0x1 - bne _08118086 - movs r0, 0x2 - bl PlaySE -_08118086: - ldrb r0, [r5, 0xE] - bl RedrawListMenu - b _08118288 -_0811808E: - ldrb r0, [r5, 0xE] - bl ListMenu_ProcessInput - adds r2, r0, 0 - ldr r0, _08118128 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08118138 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _08118138 - ldr r0, [r5] - lsls r1, r2, 5 - adds r0, r1 - ldrb r1, [r0, 0xA] - ldrb r0, [r0, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _08118130 - lsrs r0, r1, 7 - cmp r0, 0 - bne _08118130 - strb r2, [r5, 0xF] - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - ldrb r0, [r5, 0xE] - bl RedrawListMenu - ldr r4, _0811812C @ =gStringVar1 - ldrb r0, [r5, 0xF] - lsls r0, 5 - ldr r1, [r5] - adds r1, r0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldr r1, [r5] - ldrb r0, [r5, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldrb r1, [r5, 0xF] - lsls r1, 5 - ldr r0, [r5] - adds r0, r1 - adds r4, r0, 0 - adds r4, 0x10 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80FBF54 - movs r0, 0x67 - bl PlaySE - movs r0, 0x4 - strb r0, [r5, 0x8] - b _08118288 - .align 2, 0 -_08118128: .4byte gMain -_0811812C: .4byte gStringVar1 -_08118130: - movs r0, 0x7 - bl PlaySE - b _08118288 -_08118138: - ldr r0, _0811814C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08118146 - b _08118288 -_08118146: - movs r0, 0x6 - strb r0, [r5, 0x8] - b _08118288 - .align 2, 0 -_0811814C: .4byte gMain -_08118150: - ldr r0, _08118184 @ =gUnknown_8459238 - bl AddTextPrinterToWindow1 - ldr r4, _08118188 @ =gStringVar1 - ldrb r0, [r5, 0xF] - lsls r0, 5 - ldr r1, [r5] - adds r1, r0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldr r1, [r5] - ldrb r0, [r5, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - movs r0, 0x5 - strb r0, [r5, 0x8] - b _08118288 - .align 2, 0 -_08118184: .4byte gUnknown_8459238 -_08118188: .4byte gStringVar1 -_0811818C: - ldr r0, _081181C4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _081181AA - ldr r2, _081181C8 @ =gUnknown_203B058 - ldr r1, [r5] - ldrb r0, [r5, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r0, [r1, 0xA] - lsls r0, 25 - lsrs r0, 25 - strb r0, [r2] - movs r0, 0xA - strb r0, [r5, 0x8] -_081181AA: - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - beq _081181D6 - cmp r0, 0x5 - bgt _081181CC - cmp r0, 0x2 - bgt _08118288 - cmp r0, 0x1 - blt _08118288 - b _081181D0 - .align 2, 0 -_081181C4: .4byte gReceivedRemoteLinkPlayers -_081181C8: .4byte gUnknown_203B058 -_081181CC: - cmp r0, 0x6 - bne _08118288 -_081181D0: - movs r0, 0x8 - strb r0, [r5, 0x8] - b _08118288 -_081181D6: - ldr r0, _081181E8 @ =gUnknown_84576AC - bl AddTextPrinterToWindow1 - movs r0, 0 - movs r1, 0 - bl sub_80FB9E4 - b _08118288 - .align 2, 0 -_081181E8: .4byte gUnknown_84576AC -_081181EC: - ldrb r0, [r5, 0xE] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldrb r0, [r5, 0xD] - bl RemoveWindow - ldrb r0, [r5, 0xB] - bl RemoveWindow - ldrb r0, [r5, 0x11] - bl DestroyTask - ldr r0, [r5] - bl Free - ldr r0, [r5, 0x4] - bl Free - ldrb r0, [r5, 0x8] - adds r0, 0x1 - strb r0, [r5, 0x8] - b _08118288 -_08118222: - adds r5, 0x9 - ldr r4, _08118244 @ =gUnknown_8457838 - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 22 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - bl MG_PrintTextOnWindow1AndWaitButton - cmp r0, 0 - beq _08118288 - bl DestroyWirelessStatusIndicatorSprite - b _08118252 - .align 2, 0 -_08118244: .4byte gUnknown_8457838 -_08118248: - bl DestroyWirelessStatusIndicatorSprite - ldr r0, _08118264 @ =gUnknown_84571B8 - bl AddTextPrinterToWindow1 -_08118252: - adds r0, r6, 0 - bl DestroyTask - bl sub_80F8DC0 - ldr r1, _08118268 @ =gSpecialVar_Result - movs r0, 0x5 - strh r0, [r1] - b _08118288 - .align 2, 0 -_08118264: .4byte gUnknown_84571B8 -_08118268: .4byte gSpecialVar_Result -_0811826C: - ldrb r0, [r5, 0x8] - adds r0, 0x1 - strb r0, [r5, 0x8] - bl sub_800AB9C - b _08118288 -_08118278: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08118288 - adds r0, r6, 0 - bl DestroyTask -_08118288: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8117F20 - - thumb_func_start MEvent_CreateTask_CardOrNewsOverWireless -MEvent_CreateTask_CardOrNewsOverWireless: @ 8118290 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _081182C8 @ =sub_81182DC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _081182CC @ =gUnknown_203B05C - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _081182D0 @ =gTasks+0x8 - adds r1, r0 - str r1, [r2] - ldr r0, _081182D4 @ =gUnknown_3002028 - str r1, [r0] - movs r2, 0 - strb r2, [r1, 0x8] - strb r2, [r1, 0x9] - subs r4, 0x15 - strb r4, [r1, 0x12] - ldr r0, _081182D8 @ =gSpecialVar_Result - strh r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081182C8: .4byte sub_81182DC -_081182CC: .4byte gUnknown_203B05C -_081182D0: .4byte gTasks+0x8 -_081182D4: .4byte gUnknown_3002028 -_081182D8: .4byte gSpecialVar_Result - thumb_func_end MEvent_CreateTask_CardOrNewsOverWireless - - thumb_func_start sub_81182DC -sub_81182DC: @ 81182DC - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081182FC @ =gUnknown_203B05C - ldr r5, [r0] - ldrb r0, [r5, 0x8] - cmp r0, 0xE - bls _081182F0 - b _08118604 -_081182F0: - lsls r0, 2 - ldr r1, _08118300 @ =_08118304 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081182FC: .4byte gUnknown_203B05C -_08118300: .4byte _08118304 - .align 2, 0 -_08118304: - .4byte _08118340 - .4byte _0811836E - .4byte _08118380 - .4byte _08118408 - .4byte _081184C8 - .4byte _08118504 - .4byte _08118564 - .4byte _081185A8 - .4byte _08118564 - .4byte _0811859A - .4byte _08118564 - .4byte _081185B4 - .4byte _08118564 - .4byte _081185E8 - .4byte _081185F4 -_08118340: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - bl sub_800B1F4 - bl OpenLink - bl sub_80FBBD8 - movs r0, 0x70 - bl AllocZeroed - str r0, [r5, 0x4] - movs r0, 0x80 - lsls r0, 2 - bl AllocZeroed - str r0, [r5] - movs r0, 0x1 - strb r0, [r5, 0x8] - b _08118604 -_0811836E: - ldr r0, _0811837C @ =gUnknown_84591DC - bl AddTextPrinterToWindow1 - movs r0, 0x2 - strb r0, [r5, 0x8] - b _08118604 - .align 2, 0 -_0811837C: .4byte gUnknown_84591DC -_08118380: - ldr r0, [r5, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r5] - movs r1, 0x10 - bl sub_811A5E4 - ldr r0, [r5, 0x4] - ldrb r1, [r5, 0x12] - adds r1, 0x7 - bl sub_811A084 - strb r0, [r5, 0x11] - ldrb r0, [r5, 0x13] - cmp r0, 0 - beq _081183EC - ldr r0, _081183F8 @ =gUnknown_8456D4C - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - bl GetMysteryGiftBaseBlock - lsls r0, 16 - ldr r2, _081183FC @ =0x0000ffff - ldr r1, [sp, 0x4] - ands r1, r2 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl AddWindow - strb r0, [r5, 0xB] - ldrb r0, [r5, 0xB] - bl MG_DrawTextBorder - ldr r0, _08118400 @ =gMultiuseListMenuTemplate - adds r2, r0, 0 - ldr r1, _08118404 @ =gUnknown_8456DDC - ldm r1!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r1!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldrb r1, [r5, 0xB] - strb r1, [r0, 0x10] - movs r1, 0 - movs r2, 0 - bl ListMenuInit - strb r0, [r5, 0xE] - movs r0, 0 - bl CopyBgTilemapBufferToVram -_081183EC: - movs r0, 0 - strb r0, [r5, 0xF] - movs r0, 0x3 - strb r0, [r5, 0x8] - b _08118604 - .align 2, 0 -_081183F8: .4byte gUnknown_8456D4C -_081183FC: .4byte 0x0000ffff -_08118400: .4byte gMultiuseListMenuTemplate -_08118404: .4byte gUnknown_8456DDC -_08118408: - bl sub_8116FE4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0811842E - cmp r0, 0x1 - bne _0811841E - movs r0, 0x2 - bl PlaySE -_0811841E: - ldrb r0, [r5, 0x13] - cmp r0, 0 - bne _08118426 - b _08118604 -_08118426: - ldrb r0, [r5, 0xE] - bl RedrawListMenu - b _08118604 -_0811842E: - ldrb r0, [r5, 0x13] - cmp r0, 0 - beq _0811843A - ldrb r0, [r5, 0xE] - bl ListMenu_ProcessInput -_0811843A: - ldrb r0, [r5, 0x14] - cmp r0, 0x78 - bls _081184A8 - ldr r2, [r5] - ldrb r1, [r2, 0x1A] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _081184BC - ldrb r1, [r2, 0xA] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _081184BC - ldrb r1, [r5, 0x12] - adds r1, 0x7 - adds r0, r2, 0 - bl sub_8119FB0 - cmp r0, 0 - beq _0811849C - strb r4, [r5, 0xF] - strb r4, [r5, 0x14] - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - ldr r0, [r5] - adds r4, r0, 0 - adds r4, 0x10 - adds r0, 0x2 - bl sub_8118658 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_80FBF54 - movs r0, 0x67 - bl PlaySE - movs r0, 0x4 - strb r0, [r5, 0x8] - b _081184BC -_0811849C: - movs r0, 0x16 - bl PlaySE - movs r0, 0xA - strb r0, [r5, 0x8] - b _081184BC -_081184A8: - ldr r0, _081184C4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081184BC - movs r1, 0 - movs r0, 0x6 - strb r0, [r5, 0x8] - strb r1, [r5, 0x14] -_081184BC: - ldrb r0, [r5, 0x14] - adds r0, 0x1 - strb r0, [r5, 0x14] - b _08118604 - .align 2, 0 -_081184C4: .4byte gMain -_081184C8: - ldr r0, _081184FC @ =gUnknown_845928C - bl AddTextPrinterToWindow1 - ldr r4, _08118500 @ =gStringVar1 - ldrb r0, [r5, 0xF] - lsls r0, 5 - ldr r1, [r5] - adds r1, r0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldr r1, [r5] - ldrb r0, [r5, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - movs r0, 0x5 - strb r0, [r5, 0x8] - b _08118604 - .align 2, 0 -_081184FC: .4byte gUnknown_845928C -_08118500: .4byte gStringVar1 -_08118504: - ldr r0, _0811853C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08118522 - ldr r2, _08118540 @ =gUnknown_203B058 - ldr r1, [r5] - ldrb r0, [r5, 0xF] - lsls r0, 5 - adds r1, r0 - ldrb r0, [r1, 0xA] - lsls r0, 25 - lsrs r0, 25 - strb r0, [r2] - movs r0, 0xC - strb r0, [r5, 0x8] -_08118522: - bl sub_80FB9F4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - beq _0811854E - cmp r0, 0x5 - bgt _08118544 - cmp r0, 0x2 - bgt _08118604 - cmp r0, 0x1 - blt _08118604 - b _08118548 - .align 2, 0 -_0811853C: .4byte gReceivedRemoteLinkPlayers -_08118540: .4byte gUnknown_203B058 -_08118544: - cmp r0, 0x6 - bne _08118604 -_08118548: - movs r0, 0x8 - strb r0, [r5, 0x8] - b _08118604 -_0811854E: - ldr r0, _08118560 @ =gUnknown_845777C - bl AddTextPrinterToWindow1 - movs r0, 0 - movs r1, 0 - bl sub_80FB9E4 - b _08118604 - .align 2, 0 -_08118560: .4byte gUnknown_845777C -_08118564: - ldrb r0, [r5, 0x13] - cmp r0, 0 - beq _08118580 - ldrb r0, [r5, 0xE] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldrb r0, [r5, 0xB] - bl RemoveWindow -_08118580: - ldrb r0, [r5, 0x11] - bl DestroyTask - ldr r0, [r5] - bl Free - ldr r0, [r5, 0x4] - bl Free - ldrb r0, [r5, 0x8] - adds r0, 0x1 - strb r0, [r5, 0x8] - b _08118604 -_0811859A: - adds r0, r5, 0 - adds r0, 0x9 - ldr r1, _081185A4 @ =gUnknown_84577BC - b _081185C2 - .align 2, 0 -_081185A4: .4byte gUnknown_84577BC -_081185A8: - adds r0, r5, 0 - adds r0, 0x9 - ldr r1, _081185B0 @ =gUnknown_84571E0 - b _081185C2 - .align 2, 0 -_081185B0: .4byte gUnknown_84571E0 -_081185B4: - adds r0, r5, 0 - adds r0, 0x9 - ldr r2, _081185E0 @ =gUnknown_845933C - ldrb r1, [r5, 0x12] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] -_081185C2: - bl MG_PrintTextOnWindow1AndWaitButton - cmp r0, 0 - beq _08118604 - bl DestroyWirelessStatusIndicatorSprite - adds r0, r4, 0 - bl DestroyTask - bl sub_80F8DC0 - ldr r1, _081185E4 @ =gSpecialVar_Result - movs r0, 0x5 - strh r0, [r1] - b _08118604 - .align 2, 0 -_081185E0: .4byte gUnknown_845933C -_081185E4: .4byte gSpecialVar_Result -_081185E8: - ldrb r0, [r5, 0x8] - adds r0, 0x1 - strb r0, [r5, 0x8] - bl sub_800AB9C - b _08118604 -_081185F4: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08118604 - adds r0, r4, 0 - bl DestroyTask -_08118604: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_81182DC - - thumb_func_start UnionRoomSpecial -UnionRoomSpecial: @ 811860C - push {r4,lr} - bl sub_80FAF34 - ldr r0, _08118648 @ =sub_81186E0 - movs r1, 0xA - bl CreateTask - ldr r4, _0811864C @ =gUnknown_203B05C - movs r0, 0x96 - lsls r0, 2 - bl AllocZeroed - str r0, [r4] - ldr r1, _08118650 @ =gUnknown_300202C - str r0, [r1] - movs r1, 0 - strb r1, [r0, 0x14] - strb r1, [r0, 0x16] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - ldr r0, _08118654 @ =gSpecialVar_Result - strh r1, [r0] - movs r0, 0xD0 - movs r1, 0x1 - bl sub_8107D38 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08118648: .4byte sub_81186E0 -_0811864C: .4byte gUnknown_203B05C -_08118650: .4byte gUnknown_300202C -_08118654: .4byte gSpecialVar_Result - thumb_func_end UnionRoomSpecial - - thumb_func_start sub_8118658 -sub_8118658: @ 8118658 - ldrb r1, [r0, 0x1] - lsls r1, 8 - ldrb r0, [r0] - orrs r0, r1 - bx lr - thumb_func_end sub_8118658 - - thumb_func_start sub_8118664 -sub_8118664: @ 8118664 - push {lr} - adds r3, r1, 0 - ldr r1, _08118684 @ =gUnknown_203B05C - ldr r2, [r1] - movs r1, 0x8 - strb r1, [r2, 0x14] - strb r0, [r2, 0x15] - ldr r0, _08118688 @ =gStringVar4 - cmp r3, r0 - beq _0811867E - adds r1, r3, 0 - bl StringExpandPlaceholders -_0811867E: - pop {r0} - bx r0 - .align 2, 0 -_08118684: .4byte gUnknown_203B05C -_08118688: .4byte gStringVar4 - thumb_func_end sub_8118664 - - thumb_func_start sub_811868C -sub_811868C: @ 811868C - push {lr} - adds r2, r0, 0 - ldr r0, _081186A8 @ =gUnknown_203B05C - ldr r1, [r0] - movs r0, 0x1A - strb r0, [r1, 0x14] - ldr r0, _081186AC @ =gStringVar4 - cmp r2, r0 - beq _081186A4 - adds r1, r2, 0 - bl StringExpandPlaceholders -_081186A4: - pop {r0} - bx r0 - .align 2, 0 -_081186A8: .4byte gUnknown_203B05C -_081186AC: .4byte gStringVar4 - thumb_func_end sub_811868C - - thumb_func_start sub_81186B0 -sub_81186B0: @ 81186B0 - push {lr} - ldr r3, _081186C4 @ =gDecompressionBuffer + 0x3F00 - ldr r1, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r0, r3, 0 - bl memcpy - pop {r0} - bx r0 - .align 2, 0 -_081186C4: .4byte gDecompressionBuffer + 0x3F00 - thumb_func_end sub_81186B0 - - thumb_func_start sub_81186C8 -sub_81186C8: @ 81186C8 - push {lr} - ldr r0, [r0] - ldr r1, _081186DC @ =gDecompressionBuffer + 0x3F00 - movs r2, 0x80 - lsls r2, 1 - bl memcpy - pop {r0} - bx r0 - .align 2, 0 -_081186DC: .4byte gDecompressionBuffer + 0x3F00 - thumb_func_end sub_81186C8 - - thumb_func_start sub_81186E0 -sub_81186E0: @ 81186E0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - ldr r0, _08118710 @ =gUnknown_203B05C - ldr r6, [r0] - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08118714 @ =gTasks+0x8 - adds r7, r0, r1 - ldrb r0, [r6, 0x14] - cmp r0, 0x38 - bls _08118706 - bl _081198DC -_08118706: - lsls r0, 2 - ldr r1, _08118718 @ =_0811871C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08118710: .4byte gUnknown_203B05C -_08118714: .4byte gTasks+0x8 -_08118718: .4byte _0811871C - .align 2, 0 -_0811871C: - .4byte _08118800 - .4byte _08118858 - .4byte _0811887C - .4byte _081188CC - .4byte _081189AA - .4byte _08118E60 - .4byte _08118C58 - .4byte _08118E60 - .4byte _081198C8 - .4byte _081191D4 - .4byte _081192E0 - .4byte _081190B0 - .4byte _081190CA - .4byte _08119330 - .4byte _08119354 - .4byte _0811935C - .4byte _0811936C - .4byte _0811939A - .4byte _081193AE - .4byte _08118F36 - .4byte _08118FBC - .4byte _08118FDA - .4byte _0811904E - .4byte _08118ADE - .4byte _08118B04 - .4byte _08118B7C - .4byte _0811989C - .4byte _08118D50 - .4byte _08118D38 - .4byte _08118DD4 - .4byte _08118C2E - .4byte _08118DAA - .4byte _08118DA0 - .4byte _08119164 - .4byte _08119184 - .4byte _081191C4 - .4byte _081192E8 - .4byte _08119324 - .4byte _08118BF8 - .4byte _0811910C - .4byte _08118E98 - .4byte _08118EC8 - .4byte _081193D8 - .4byte _08119468 - .4byte _081195B8 - .4byte _08119620 - .4byte _0811963C - .4byte _08119484 - .4byte _08119644 - .4byte _08119784 - .4byte _081197B8 - .4byte _08119840 - .4byte _0811953C - .4byte _081194F0 - .4byte _08119504 - .4byte _0811959C - .4byte _081195EC -_08118800: - movs r0, 0x70 - bl AllocZeroed - str r0, [r6, 0x4] - movs r0, 0x70 - bl AllocZeroed - str r0, [r6, 0xC] - movs r0, 0x80 - lsls r0, 1 - bl AllocZeroed - str r0, [r6] - movs r0, 0x20 - bl AllocZeroed - str r0, [r6, 0x8] - ldr r0, [r6] - movs r1, 0x8 - bl sub_811A5E4 - ldr r1, _08118854 @ =gUnknown_203B058 - movs r0, 0x40 - strb r0, [r1] - ldr r0, [r6, 0xC] - ldr r1, [r6, 0x4] - movs r2, 0x9 - bl sub_8119E84 - adds r1, r6, 0 - adds r1, 0x20 - strb r0, [r1] - adds r0, r6, 0 - adds r0, 0x8C - bl sub_811B754 - bl sub_811BB68 - movs r0, 0x1 - bl _081198DA - .align 2, 0 -_08118854: .4byte gUnknown_203B058 -_08118858: - adds r0, r6, 0 - adds r0, 0x21 - movs r2, 0 - ldrsh r1, [r7, r2] - bl sub_811BAAC - ldrh r0, [r7] - adds r0, 0x1 - strh r0, [r7] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - beq _08118876 - bl _081198DC -_08118876: - movs r0, 0x2 - bl _081198DA -_0811887C: - movs r0, 0x40 - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - ldr r2, _081188C4 @ =gUnknown_203B06C - ldrh r0, [r2, 0x2] - ldrh r1, [r2, 0xA] - ldrh r2, [r2, 0xC] - bl sub_80FAFA0 - bl sub_800B1F4 - bl OpenLink - bl sub_80FBC00 - ldr r0, [r6, 0x8] - movs r1, 0x1 - bl sub_811A5E4 - ldr r0, [r6, 0x4] - movs r1, 0x4 - bl sub_811A650 - ldr r0, [r6, 0xC] - movs r1, 0x4 - bl sub_811A650 - ldr r1, _081188C8 @ =gSpecialVar_Result - movs r0, 0 - strh r0, [r1] - movs r0, 0x3 - bl _081198DA - .align 2, 0 -_081188C4: .4byte gUnknown_203B06C -_081188C8: .4byte gSpecialVar_Result -_081188CC: - bl GetPartyMenuType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8 - beq _081188E4 - bl GetPartyMenuType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bne _081189A4 -_081188E4: - ldr r4, _08118900 @ =gUnknown_203B06C - ldrh r0, [r4] - cmp r0, 0 - beq _081189A4 - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4] - cmp r0, 0x1 - beq _08118904 - cmp r0, 0x2 - beq _08118954 - b _08118992 - .align 2, 0 -_08118900: .4byte gUnknown_203B06C -_08118904: - movs r0, 0x54 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - cmp r5, 0x5 - bls _08118930 - adds r0, r4, 0 - bl sub_811B148 - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_80FAFA0 - ldr r0, _0811892C @ =gUnknown_8458D54 - bl sub_811868C - b _08118992 - .align 2, 0 -_0811892C: .4byte gUnknown_8458D54 -_08118930: - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_811B16C - cmp r0, 0 - bne _08118950 - ldr r1, _0811894C @ =gUnknown_8458CD4 - movs r0, 0x34 - bl sub_8118664 - b _08118992 - .align 2, 0 -_0811894C: .4byte gUnknown_8458CD4 -_08118950: - movs r0, 0x37 - b _08118990 -_08118954: - adds r0, r6, 0 - bl sub_81186C8 - ldrb r0, [r4, 0x8] - strh r0, [r7, 0x2] - cmp r5, 0x5 - bls _08118970 - ldr r0, _0811896C @ =gUnknown_8458D9C - bl sub_811868C - b _08118992 - .align 2, 0 -_0811896C: .4byte gUnknown_8458D9C -_08118970: - movs r0, 0x54 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - ldr r1, _0811899C @ =gUnknown_203B058 - movs r0, 0x44 - strb r0, [r1] - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_811B1B4 - movs r0, 0x33 -_08118990: - strb r0, [r6, 0x14] -_08118992: - ldr r1, _081189A0 @ =gUnknown_203B06C - movs r0, 0 - strh r0, [r1] - bl _081198DC - .align 2, 0 -_0811899C: .4byte gUnknown_203B058 -_081189A0: .4byte gUnknown_203B06C -_081189A4: - movs r0, 0x4 - bl _081198DA -_081189AA: - ldr r4, _081189D8 @ =gSpecialVar_Result - ldrh r0, [r4] - cmp r0, 0 - beq _08118A0E - cmp r0, 0x9 - bne _081189E4 - movs r0, 0x54 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - movs r0, 0x2 - bl PlaySE - ldr r0, _081189DC @ =gStringVar1 - ldr r1, _081189E0 @ =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - movs r1, 0 - movs r0, 0x2A - b _08118A06 - .align 2, 0 -_081189D8: .4byte gSpecialVar_Result -_081189DC: .4byte gStringVar1 -_081189E0: .4byte gSaveBlock2Ptr -_081189E4: - cmp r0, 0xB - bne _081189F8 - movs r0, 0x54 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - movs r1, 0 - movs r0, 0x17 - b _08118A06 -_081189F8: - movs r0, 0 - strh r0, [r7] - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r7, 0x2] - movs r1, 0 - movs r0, 0x18 -_08118A06: - strb r0, [r6, 0x14] - strh r1, [r4] - bl _081198DC -_08118A0E: - bl ScriptContext2_IsEnabled - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08118A1E - bl _081198DC -_08118A1E: - ldr r0, _08118A4C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08118A84 - ldr r0, [r6] - adds r2, r7, 0x2 - adds r3, r6, 0 - adds r3, 0x21 - adds r1, r7, 0 - bl sub_811BF00 - cmp r0, 0 - beq _08118A50 - movs r0, 0x5 - bl PlaySE - bl sub_811B298 - movs r0, 0x18 - bl _081198DA - .align 2, 0 -_08118A4C: .4byte gMain -_08118A50: - bl sub_811A9B8 - cmp r0, 0 - beq _08118A84 - movs r0, 0x54 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - movs r0, 0x2 - bl PlaySE - bl sub_811B298 - ldr r0, _08118A7C @ =gStringVar1 - ldr r1, _08118A80 @ =gSaveBlock2Ptr - ldr r1, [r1] - bl StringCopy - movs r0, 0x2D - bl _081198DA - .align 2, 0 -_08118A7C: .4byte gStringVar1 -_08118A80: .4byte gSaveBlock2Ptr -_08118A84: - bl sub_8119B94 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _08118AA6 - cmp r0, 0x2 - bgt _08118A9A - cmp r0, 0x1 - beq _08118AA0 - b _08118AD4 -_08118A9A: - cmp r0, 0x4 - beq _08118AAE - b _08118AD4 -_08118AA0: - movs r0, 0x37 - bl PlaySE -_08118AA6: - adds r0, r6, 0 - bl sub_811BECC - b _08118AD4 -_08118AAE: - movs r0, 0xB - strb r0, [r6, 0x14] - bl sub_811B298 - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_80FAFA0 - adds r0, r6, 0 - bl sub_811B2D8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x53 - movs r2, 0 - bl sub_80FB008 -_08118AD4: - adds r0, r6, 0 - bl sub_811BEDC - bl _081198DC -_08118ADE: - ldr r0, _08118B00 @ =Task_StartMenuHandleInput - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08118AEE - bl _081198DC -_08118AEE: - movs r0, 0x40 - movs r1, 0 - movs r2, 0 - bl sub_80FB008 - movs r0, 0x4 - bl _081198DA - .align 2, 0 -_08118B00: .4byte Task_StartMenuHandleInput -_08118B04: - bl sub_811A0E0 - movs r3, 0x2 - ldrsh r0, [r7, r3] - ldr r1, [r6] - bl sub_811ADC4 - adds r4, r0, 0 - movs r0, 0x54 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - ldr r0, [r6] - ldrb r1, [r7] - ldrb r2, [r7, 0x2] - adds r3, r4, 0 - bl sub_811AA5C - cmp r0, 0x1 - beq _08118B48 - cmp r0, 0x1 - bgt _08118B3A - cmp r0, 0 - beq _08118B42 - bl _081198DC -_08118B3A: - cmp r0, 0x2 - beq _08118B6C - bl _081198DC -_08118B42: - movs r0, 0x1A - bl _081198DA -_08118B48: - movs r1, 0x2 - ldrsh r0, [r7, r1] - lsls r0, 5 - ldr r1, [r6] - adds r1, r0 - adds r0, r1, 0 - adds r0, 0x10 - ldr r2, _08118B68 @ =gUnknown_203B058 - ldrb r2, [r2] - bl sub_80FC114 - strh r5, [r6, 0x12] - movs r0, 0x19 - bl _081198DA - .align 2, 0 -_08118B68: .4byte gUnknown_203B058 -_08118B6C: - ldr r1, _08118B78 @ =gStringVar4 - movs r0, 0x13 - bl sub_8118664 - bl _081198DC - .align 2, 0 -_08118B78: .4byte gStringVar4 -_08118B7C: - bl sub_811A0E0 - bl sub_80FB9F4 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - blt _08118BC2 - cmp r4, 0x2 - ble _08118B9E - cmp r4, 0x4 - bne _08118BC2 - movs r0, 0x1 - bl sub_811B258 - strb r4, [r6, 0x14] - b _08118BC2 -_08118B9E: - bl sub_80FBB0C - cmp r0, 0x1 - bne _08118BB4 - ldr r0, _08118BB0 @ =gUnknown_8457F90 - bl sub_811868C - b _08118BBC - .align 2, 0 -_08118BB0: .4byte gUnknown_8457F90 -_08118BB4: - ldr r1, _08118BE4 @ =gUnknown_8457F90 - movs r0, 0x1E - bl sub_8118664 -_08118BBC: - ldr r1, _08118BE8 @ =gUnknown_203B058 - movs r0, 0x40 - strb r0, [r1] -_08118BC2: - ldr r0, _08118BEC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08118BCE - bl _081198DC -_08118BCE: - ldr r0, _08118BF0 @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - ldr r0, _08118BF4 @ =sub_8117280 - movs r1, 0x5 - bl CreateTask - movs r0, 0x26 - bl _081198DA - .align 2, 0 -_08118BE4: .4byte gUnknown_8457F90 -_08118BE8: .4byte gUnknown_203B058 -_08118BEC: .4byte gReceivedRemoteLinkPlayers -_08118BF0: .4byte gBlockSendBuffer -_08118BF4: .4byte sub_8117280 -_08118BF8: - ldr r0, _08118C1C @ =sub_8117280 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08118C08 - bl _081198DC -_08118C08: - ldr r0, _08118C20 @ =gUnknown_203B058 - ldrb r0, [r0] - cmp r0, 0x44 - bne _08118C28 - ldr r1, _08118C24 @ =gUnknown_84578BC - movs r0, 0x1F - bl sub_8118664 - bl _081198DC - .align 2, 0 -_08118C1C: .4byte sub_8117280 -_08118C20: .4byte gUnknown_203B058 -_08118C24: .4byte gUnknown_84578BC -_08118C28: - movs r0, 0x5 - bl _081198DA -_08118C2E: - ldr r0, _08118C54 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08118C3A - bl _081198DC -_08118C3A: - movs r0, 0 - bl sub_811B258 - movs r2, 0 - ldrsh r0, [r7, r2] - movs r3, 0x2 - ldrsh r1, [r7, r3] - ldr r2, [r6] - bl sub_811C028 - movs r0, 0x2 - bl _081198DA - .align 2, 0 -_08118C54: .4byte gReceivedRemoteLinkPlayers -_08118C58: - adds r0, r6, 0 - adds r0, 0x16 - adds r1, r6, 0 - adds r1, 0x1B - adds r2, r6, 0 - adds r2, 0x1C - ldr r3, _08118C8C @ =gUnknown_8456DF4 - ldr r4, _08118C90 @ =gUnknown_8456E1C - str r4, [sp] - bl sub_811A218 - adds r5, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _08118C7C - bl _081198DC -_08118C7C: - ldr r0, _08118C94 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08118C98 - movs r0, 0x1C - bl _081198DA - .align 2, 0 -_08118C8C: .4byte gUnknown_8456DF4 -_08118C90: .4byte gUnknown_8456E1C -_08118C94: .4byte gReceivedRemoteLinkPlayers -_08118C98: - adds r1, r6, 0 - adds r1, 0x84 - movs r0, 0 - strh r0, [r1] - movs r2, 0x2 - ldrsh r0, [r7, r2] - ldr r1, [r6] - bl sub_811ADC4 - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _08118CB6 - cmp r5, 0x40 - bne _08118CE8 -_08118CB6: - adds r0, r6, 0 - adds r0, 0x4C - movs r1, 0x40 - strh r1, [r0] - bl sub_80F9E2C - ldr r0, _08118CDC @ =gStringVar4 - ldr r2, _08118CE0 @ =gUnknown_845842C - ldr r1, _08118CE4 @ =gLinkPlayers - ldrb r1, [r1, 0x13] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - movs r0, 0x20 - bl _081198DA - .align 2, 0 -_08118CDC: .4byte gStringVar4 -_08118CE0: .4byte gUnknown_845842C -_08118CE4: .4byte gLinkPlayers -_08118CE8: - ldr r0, _08118D10 @ =gUnknown_203B058 - strb r5, [r0] - ldr r1, _08118D14 @ =gUnknown_203B059 - lsrs r0, r5, 8 - strb r0, [r1] - lsls r0, r5, 24 - lsrs r0, 24 - cmp r0, 0x41 - bne _08118D1C - bl sub_811B0F0 - cmp r0, 0 - bne _08118D1C - ldr r1, _08118D18 @ =gUnknown_845847C - movs r0, 0x5 - bl sub_8118664 - bl _081198DC - .align 2, 0 -_08118D10: .4byte gUnknown_203B058 -_08118D14: .4byte gUnknown_203B059 -_08118D18: .4byte gUnknown_845847C -_08118D1C: - ldr r0, _08118D34 @ =gUnknown_203B058 - ldrb r0, [r0] - movs r1, 0x40 - orrs r1, r0 - adds r0, r6, 0 - adds r0, 0x4C - strh r1, [r0] - bl sub_80F9E2C - movs r0, 0x1B - bl _081198DA - .align 2, 0 -_08118D34: .4byte gUnknown_203B058 -_08118D38: - ldr r0, _08118D48 @ =gStringVar4 - ldr r1, _08118D4C @ =gUnknown_8458434 - bl StringCopy - movs r0, 0x24 - bl _081198DA - .align 2, 0 -_08118D48: .4byte gStringVar4 -_08118D4C: .4byte gUnknown_8458434 -_08118D50: - adds r0, r6, 0 - bl sub_811B0A4 - movs r3, 0x2 - ldrsh r0, [r7, r3] - ldr r1, [r6] - bl sub_811ADC4 - adds r4, r0, 0 - adds r0, r6, 0 - adds r0, 0x4C - ldrh r1, [r0] - movs r0, 0x3F - ands r0, r1 - bl sub_811A9FC - adds r5, r0, 0 - adds r0, r6, 0 - adds r0, 0x16 - ldr r3, _08118D9C @ =gUnknown_84580F4 - lsls r1, r5, 2 - lsls r2, r4, 4 - adds r1, r2 - adds r1, r3 - ldr r1, [r1] - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08118D90 - bl _081198DC -_08118D90: - movs r0, 0 - strh r0, [r7, 0x6] - movs r0, 0x1D - bl _081198DA - .align 2, 0 -_08118D9C: .4byte gUnknown_84580F4 -_08118DA0: - bl sub_800AAC0 - movs r0, 0x24 - bl _081198DA -_08118DAA: - adds r0, r6, 0 - adds r0, 0x4C - movs r1, 0x44 - strh r1, [r0] - ldr r2, _08118DD0 @ =gUnknown_203B06C - ldrh r1, [r2, 0xE] - adds r3, r6, 0 - adds r3, 0x4E - strh r1, [r3] - ldrh r2, [r2, 0x10] - adds r1, r6, 0 - adds r1, 0x50 - strh r2, [r1] - bl sub_80F9E2C - movs r0, 0x1D - bl _081198DA - .align 2, 0 -_08118DD0: .4byte gUnknown_203B06C -_08118DD4: - ldr r0, _08118DEC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _08118DF8 - ldr r0, _08118DF0 @ =gStringVar4 - ldr r1, _08118DF4 @ =gUnknown_8458434 - bl StringCopy - movs r0, 0x1C - bl _081198DA - .align 2, 0 -_08118DEC: .4byte gReceivedRemoteLinkPlayers -_08118DF0: .4byte gStringVar4 -_08118DF4: .4byte gUnknown_8458434 -_08118DF8: - adds r0, r6, 0 - bl sub_811B0A4 - adds r0, r6, 0 - adds r0, 0x84 - ldrh r0, [r0] - cmp r0, 0x51 - bne _08118E2E - ldr r0, _08118E20 @ =gUnknown_203B058 - ldrb r0, [r0] - cmp r0, 0x8 - bne _08118E28 - ldr r0, _08118E24 @ =gStringVar4 - adds r1, r6, 0 - movs r2, 0 - bl sub_811B31C - movs r0, 0x28 - bl _081198DA - .align 2, 0 -_08118E20: .4byte gUnknown_203B058 -_08118E24: .4byte gStringVar4 -_08118E28: - movs r0, 0xD - bl _081198DA -_08118E2E: - cmp r0, 0x52 - beq _08118E36 - bl _081198DC -_08118E36: - movs r5, 0 - movs r0, 0x20 - strb r0, [r6, 0x14] - ldr r0, _08118E54 @ =gStringVar4 - ldr r4, _08118E58 @ =gUnknown_203B058 - ldrb r2, [r4] - movs r1, 0x40 - orrs r1, r2 - ldr r2, _08118E5C @ =gLinkPlayers - ldrb r2, [r2, 0x13] - bl sub_811AE68 - strb r5, [r4] - bl _081198DC - .align 2, 0 -_08118E54: .4byte gStringVar4 -_08118E58: .4byte gUnknown_203B058 -_08118E5C: .4byte gLinkPlayers -_08118E60: - movs r0, 0x2 - ldrsh r1, [r7, r0] - lsls r1, 5 - ldr r0, [r6] - adds r0, r1 - bl sub_811AA24 - adds r5, r0, 0 - movs r1, 0x2 - ldrsh r0, [r7, r1] - ldr r1, [r6] - bl sub_811ADC4 - adds r4, r0, 0 - ldr r2, _08118E94 @ =gUnknown_8457B04 - lsls r0, r4, 2 - lsls r1, r5, 3 - adds r0, r1 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x6 - bl sub_8118664 - bl _081198DC - .align 2, 0 -_08118E94: .4byte gUnknown_8457B04 -_08118E98: - adds r0, r6, 0 - adds r0, 0x16 - ldr r1, _08118EC4 @ =gStringVar4 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08118EAC - bl _081198DC -_08118EAC: - movs r4, 0 - movs r0, 0x29 - strb r0, [r6, 0x14] - bl sub_800AB9C - adds r0, r6, 0 - adds r0, 0x84 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - bl _081198DC - .align 2, 0 -_08118EC4: .4byte gStringVar4 -_08118EC8: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _08118ED6 - bl _081198DC -_08118ED6: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _08118F30 - ldr r5, _08118F20 @ =gStringVar1 - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r4, _08118F24 @ =gLinkPlayers + 8 - adds r1, r4 - adds r0, r5, 0 - bl StringCopy - ldrh r0, [r4, 0x18] - adds r4, 0x1C - adds r1, r4, 0 - bl sub_80FD338 - adds r5, r0, 0 - ldr r0, _08118F28 @ =gStringVar4 - ldr r2, _08118F2C @ =gUnknown_8457C20 - lsls r1, r5, 2 - adds r1, r2 - ldr r1, [r1] - bl StringExpandPlaceholders - movs r0, 0x21 - bl _081198DA - .align 2, 0 -_08118F20: .4byte gStringVar1 -_08118F24: .4byte gLinkPlayers + 8 -_08118F28: .4byte gStringVar4 -_08118F2C: .4byte gUnknown_8457C20 -_08118F30: - movs r0, 0x7 - bl _081198DA -_08118F36: - adds r0, r6, 0 - adds r0, 0x16 - movs r1, 0 - bl sub_811A14C - lsls r0, 24 - asrs r5, r0, 24 - cmp r5, 0 - beq _08118F60 - cmp r5, 0 - bgt _08118F58 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - beq _08118F9C - bl _081198DC -_08118F58: - cmp r5, 0x1 - beq _08118F9C - bl _081198DC -_08118F60: - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r4, _08118F98 @ =gUnknown_203B058 - movs r0, 0x45 - strb r0, [r4] - movs r0, 0x45 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - movs r2, 0x2 - ldrsh r0, [r7, r2] - lsls r0, 5 - ldr r1, [r6] - adds r1, r0 - adds r0, r1, 0 - adds r0, 0x10 - ldrb r2, [r4] - bl sub_80FC114 - ldrh r0, [r7, 0x2] - strh r0, [r6, 0x12] - movs r0, 0x14 - strb r0, [r6, 0x14] - strh r5, [r7, 0x6] - bl _081198DC - .align 2, 0 -_08118F98: .4byte gUnknown_203B058 -_08118F9C: - movs r3, 0x2 - ldrsh r0, [r7, r3] - ldr r1, [r6] - bl sub_811ADC4 - adds r4, r0, 0 - ldr r1, _08118FB8 @ =gUnknown_8458548 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - bl sub_811868C - bl _081198DC - .align 2, 0 -_08118FB8: .4byte gUnknown_8458548 -_08118FBC: - ldrh r0, [r7, 0x4] - adds r0, 0x1 - strh r0, [r7, 0x4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - bgt _08118FCE - bl _081198DC -_08118FCE: - movs r1, 0 - movs r0, 0x15 - strb r0, [r6, 0x14] - strh r1, [r7, 0x4] - bl _081198DC -_08118FDA: - bl sub_80FB9F4 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - beq _08119040 - cmp r4, 0x3 - ble _08118FF8 - cmp r4, 0x4 - bne _08119044 - movs r0, 0x1 - bl sub_811B258 - strb r4, [r6, 0x14] - b _08119044 -_08118FF8: - cmp r4, 0x1 - blt _08119044 - movs r1, 0x2 - ldrsh r0, [r7, r1] - ldr r1, [r6] - bl sub_811ADC4 - adds r4, r0, 0 - movs r0, 0x54 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - bl sub_80FBB0C - cmp r0, 0x1 - bne _0811902C - ldr r0, _08119028 @ =gUnknown_84585E8 - lsls r1, r4, 2 - adds r1, r0 - ldr r0, [r1] - bl sub_811868C - b _08119044 - .align 2, 0 -_08119028: .4byte gUnknown_84585E8 -_0811902C: - ldr r0, _0811903C @ =gUnknown_84585E8 - lsls r1, r4, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x1E - bl sub_8118664 - b _08119044 - .align 2, 0 -_0811903C: .4byte gUnknown_84585E8 -_08119040: - movs r0, 0x16 - strb r0, [r6, 0x14] -_08119044: - ldrh r0, [r7, 0x6] - adds r0, 0x1 - strh r0, [r7, 0x6] - bl _081198DC -_0811904E: - bl sub_80FBA00 - cmp r0, 0 - beq _08119096 - movs r2, 0x2 - ldrsh r0, [r7, r2] - ldr r1, [r6] - bl sub_811ADC4 - adds r4, r0, 0 - movs r0, 0x54 - movs r1, 0 - movs r2, 0x1 - bl sub_80FB008 - bl sub_80FBB0C - cmp r0, 0x1 - bne _08119088 - ldr r0, _08119084 @ =gUnknown_84585E8 - lsls r1, r4, 2 - adds r1, r0 - ldr r0, [r1] - bl sub_811868C - b _08119096 - .align 2, 0 -_08119084: .4byte gUnknown_84585E8 -_08119088: - ldr r0, _081190A8 @ =gUnknown_84585E8 - lsls r1, r4, 2 - adds r1, r0 - ldr r1, [r1] - movs r0, 0x1E - bl sub_8118664 -_08119096: - ldr r0, _081190AC @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _081190A2 - bl _081198DC -_081190A2: - movs r0, 0x10 - bl _081198DA - .align 2, 0 -_081190A8: .4byte gUnknown_84585E8 -_081190AC: .4byte gReceivedRemoteLinkPlayers -_081190B0: - movs r0, 0x42 - bl PlaySE - bl sub_80F8FA0 - movs r0, 0 - movs r1, 0xC - strb r1, [r6, 0x14] - adds r1, r6, 0 - adds r1, 0x86 - strh r0, [r1] - bl _081198DC -_081190CA: - bl sub_80FBA00 - cmp r0, 0 - beq _081190DE - movs r0, 0 - bl sub_811B258 - movs r0, 0x2 - bl _081198DA -_081190DE: - ldr r0, _08119100 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _081190EA - bl _081198DC -_081190EA: - ldr r0, _08119104 @ =gBlockSendBuffer - movs r1, 0x1 - bl sub_8117594 - ldr r0, _08119108 @ =sub_8117280 - movs r1, 0x5 - bl CreateTask - movs r0, 0x27 - bl _081198DA - .align 2, 0 -_08119100: .4byte gReceivedRemoteLinkPlayers -_08119104: .4byte gBlockSendBuffer -_08119108: .4byte sub_8117280 -_0811910C: - adds r0, r6, 0 - bl sub_8119904 - ldr r0, _08119150 @ =sub_8117280 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08119122 - bl _081198DC -_08119122: - movs r0, 0x21 - strb r0, [r6, 0x14] - ldr r0, _08119154 @ =gStringVar1 - ldr r4, _08119158 @ =gLinkPlayers + 0x24 - adds r1, r4, 0 - bl StringCopy - adds r0, r4, 0 - subs r0, 0x24 - ldrh r0, [r0, 0x20] - adds r1, r4, 0 - bl sub_80FD338 - adds r5, r0, 0 - ldr r0, _0811915C @ =gStringVar4 - ldr r2, _08119160 @ =gUnknown_8457BCC - lsls r1, r5, 2 - adds r1, r2 - ldr r1, [r1] - bl StringExpandPlaceholders - b _081198DC - .align 2, 0 -_08119150: .4byte sub_8117280 -_08119154: .4byte gStringVar1 -_08119158: .4byte gLinkPlayers + 0x24 -_0811915C: .4byte gStringVar4 -_08119160: .4byte gUnknown_8457BCC -_08119164: - adds r0, r6, 0 - bl sub_8119904 - adds r0, r6, 0 - adds r0, 0x16 - ldr r1, _08119180 @ =gStringVar4 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _0811917C - b _081198DC -_0811917C: - movs r0, 0x22 - b _081198DA - .align 2, 0 -_08119180: .4byte gStringVar4 -_08119184: - adds r0, r6, 0 - bl sub_8119904 - adds r0, r6, 0 - bl sub_8119944 - cmp r0, 0 - bne _08119196 - b _081198DC -_08119196: - ldr r0, _081191B8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _081191A4 - b _081198DC -_081191A4: - movs r0, 0x1 - bl sub_80FBD6C - ldr r0, _081191BC @ =gStringVar4 - ldr r1, _081191C0 @ =gUnknown_8457E60 - bl StringCopy - movs r0, 0x24 - b _081198DA - .align 2, 0 -_081191B8: .4byte gMain -_081191BC: .4byte gStringVar4 -_081191C0: .4byte gUnknown_8457E60 -_081191C4: - ldr r1, _081191D0 @ =gStringVar4 - movs r0, 0x9 - bl sub_8118664 - b _081198DC - .align 2, 0 -_081191D0: .4byte gStringVar4 -_081191D4: - adds r0, r6, 0 - adds r0, 0x16 - movs r1, 0 - bl sub_811A14C - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _081191FA - cmp r1, 0 - bgt _081191F4 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _081192BA - b _081198DC -_081191F4: - cmp r1, 0x1 - beq _081192BA - b _081198DC -_081191FA: - adds r0, r6, 0 - adds r0, 0x4C - movs r1, 0x51 - strh r1, [r0] - ldr r1, _08119228 @ =gUnknown_203B058 - ldrb r1, [r1] - adds r5, r0, 0 - cmp r1, 0x45 - bne _0811922C - movs r4, 0x40 - orrs r4, r1 - movs r0, 0x1 - bl sub_811B2A8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0 - bl sub_80FB008 - b _0811924A - .align 2, 0 -_08119228: .4byte gUnknown_203B058 -_0811922C: - movs r0, 0x40 - adds r4, r1, 0 - orrs r4, r0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - bl sub_811B2A8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0x1 - bl sub_80FB008 -_0811924A: - ldr r1, [r6, 0x8] - movs r0, 0 - strb r0, [r1, 0x1B] - strh r0, [r7, 0x6] - ldr r0, _0811927C @ =gUnknown_203B058 - ldrb r0, [r0] - cmp r0, 0x41 - bne _08119292 - bl sub_811B0F0 - cmp r0, 0 - bne _08119288 - movs r0, 0x52 - strh r0, [r5] - adds r0, r5, 0 - bl sub_80F9E2C - movs r0, 0xA - strb r0, [r6, 0x14] - ldr r0, _08119280 @ =gStringVar4 - ldr r1, _08119284 @ =gUnknown_84584C0 - bl StringCopy - b _081198DC - .align 2, 0 -_0811927C: .4byte gUnknown_203B058 -_08119280: .4byte gStringVar4 -_08119284: .4byte gUnknown_84584C0 -_08119288: - adds r0, r5, 0 - bl sub_80F9E2C - movs r0, 0xD - b _081198DA -_08119292: - cmp r0, 0x48 - bne _081192B0 - adds r0, r5, 0 - bl sub_80F9E2C - ldr r0, _081192AC @ =gStringVar4 - adds r1, r6, 0 - movs r2, 0x1 - bl sub_811B31C - movs r0, 0x28 - b _081198DA - .align 2, 0 -_081192AC: .4byte gStringVar4 -_081192B0: - adds r0, r5, 0 - bl sub_80F9E2C - movs r0, 0xD - b _081198DA -_081192BA: - adds r0, r6, 0 - adds r0, 0x4C - movs r1, 0x52 - strh r1, [r0] - bl sub_80F9E2C - movs r0, 0xA - strb r0, [r6, 0x14] - ldr r0, _081192D8 @ =gStringVar4 - ldr r1, _081192DC @ =gUnknown_203B058 - ldrb r1, [r1] - bl sub_81162E0 - b _081198DC - .align 2, 0 -_081192D8: .4byte gStringVar4 -_081192DC: .4byte gUnknown_203B058 -_081192E0: - bl sub_800AAC0 - movs r0, 0x24 - b _081198DA -_081192E8: - ldr r0, _08119318 @ =gReceivedRemoteLinkPlayers - ldrb r4, [r0] - cmp r4, 0 - beq _081192F2 - b _081198DC -_081192F2: - ldr r1, _0811931C @ =gUnknown_203B058 - movs r0, 0x40 - strb r0, [r1] - ldr r1, _08119320 @ =gStringVar4 - movs r0, 0x25 - bl sub_8118664 - adds r0, r6, 0 - adds r0, 0x4C - movs r1, 0 - movs r2, 0xC - bl memset - adds r0, r6, 0 - adds r0, 0x86 - strh r4, [r0] - subs r0, 0x2 - strh r4, [r0] - b _081198DC - .align 2, 0 -_08119318: .4byte gReceivedRemoteLinkPlayers -_0811931C: .4byte gUnknown_203B058 -_08119320: .4byte gStringVar4 -_08119324: - movs r0, 0x2 - strb r0, [r6, 0x14] - movs r0, 0 - bl sub_811B258 - b _081198DC -_08119330: - ldr r4, _0811934C @ =gStringVar4 - ldr r0, _08119350 @ =gUnknown_203B058 - ldrb r0, [r0] - movs r1, 0x40 - orrs r1, r0 - adds r0, r4, 0 - bl sub_811AECC - movs r0, 0xE - adds r1, r4, 0 - bl sub_8118664 - b _081198DC - .align 2, 0 -_0811934C: .4byte gStringVar4 -_08119350: .4byte gUnknown_203B058 -_08119354: - bl sub_800AB9C - movs r0, 0xF - b _081198DA -_0811935C: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _08119368 - b _081198DC -_08119368: - movs r0, 0x10 - b _081198DA -_0811936C: - ldr r0, [r6, 0x8] - bl Free - ldr r0, [r6] - bl Free - ldr r0, [r6, 0xC] - bl Free - ldr r0, [r6, 0x4] - bl Free - adds r0, r6, 0 - adds r0, 0x20 - ldrb r0, [r0] - bl DestroyTask - adds r0, r6, 0 - adds r0, 0x21 - bl sub_811BB40 - movs r0, 0x11 - b _081198DA -_0811939A: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x12 - b _081198DA -_081193AE: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - beq _081193BA - b _081198DC -_081193BA: - bl sub_811BA78 - adds r0, r4, 0 - bl DestroyTask - ldr r0, _081193D4 @ =gUnknown_203B05C - ldr r0, [r0] - bl Free - bl sub_81179A4 - b _081198DC - .align 2, 0 -_081193D4: .4byte gUnknown_203B05C -_081193D8: - bl sub_80F9800 - ldrh r1, [r0, 0x8] - ldr r4, _081193EC @ =0x000003ff - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _081193F0 - movs r0, 0x2B - b _081198DA - .align 2, 0 -_081193EC: .4byte 0x000003ff -_081193F0: - bl sub_80F9800 - ldrh r1, [r0, 0x8] - adds r0, r4, 0 - ands r0, r1 - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _08119414 - ldr r0, _0811940C @ =gStringVar4 - ldr r1, _08119410 @ =gUnknown_8458DE8 - bl StringCopy - b _0811944A - .align 2, 0 -_0811940C: .4byte gStringVar4 -_08119410: .4byte gUnknown_8458DE8 -_08119414: - ldr r4, _08119454 @ =gStringVar1 - bl sub_80F9800 - ldrh r0, [r0, 0x8] - lsls r0, 22 - lsrs r0, 22 - movs r1, 0xB - muls r1, r0 - ldr r0, _08119458 @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r4, _0811945C @ =gStringVar2 - bl sub_80F9800 - ldrb r1, [r0, 0xB] - lsrs r1, 1 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, _08119460 @ =gStringVar4 - ldr r1, _08119464 @ =gUnknown_8458DBC - bl StringExpandPlaceholders -_0811944A: - ldr r1, _08119460 @ =gStringVar4 - movs r0, 0x2C - bl sub_8118664 - b _081198DC - .align 2, 0 -_08119454: .4byte gStringVar1 -_08119458: .4byte gSpeciesNames -_0811945C: .4byte gStringVar2 -_08119460: .4byte gStringVar4 -_08119464: .4byte gUnknown_8458DBC -_08119468: - adds r0, r6, 0 - adds r0, 0x16 - ldr r1, _08119480 @ =gUnknown_8458AB8 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _0811947A - b _081198DC -_0811947A: - movs r0, 0x2F - b _081198DA - .align 2, 0 -_08119480: .4byte gUnknown_8458AB8 -_08119484: - adds r0, r6, 0 - adds r0, 0x16 - adds r1, r6, 0 - adds r1, 0x1D - adds r2, r6, 0 - adds r2, 0x1E - ldr r3, _081194BC @ =gUnknown_8456E34 - ldr r4, _081194C0 @ =gUnknown_8456E54 - str r4, [sp] - bl sub_811A218 - adds r5, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _081194A6 - b _081198DC -_081194A6: - subs r0, 0x1 - cmp r5, r0 - beq _081194B0 - cmp r5, 0x3 - bne _081194C4 -_081194B0: - movs r0, 0x4 - strb r0, [r6, 0x14] - movs r0, 0x1 - bl sub_811B258 - b _081194E4 - .align 2, 0 -_081194BC: .4byte gUnknown_8456E34 -_081194C0: .4byte gUnknown_8456E54 -_081194C4: - cmp r5, 0x1 - beq _081194CE - cmp r5, 0x2 - beq _081194DC - b _081194E4 -_081194CE: - ldr r1, _081194D8 @ =gUnknown_8458D1C - movs r0, 0x35 - bl sub_8118664 - b _081194E4 - .align 2, 0 -_081194D8: .4byte gUnknown_8458D1C -_081194DC: - ldr r1, _081194EC @ =gUnknown_8458B44 - movs r0, 0x2F - bl sub_8118664 -_081194E4: - bl DestroyHelpMessageWindow_ - b _081198DC - .align 2, 0 -_081194EC: .4byte gUnknown_8458B44 -_081194F0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x36 - b _081198DA -_08119504: - ldr r0, _08119528 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08119512 - b _081198DC -_08119512: - ldr r1, _0811952C @ =gUnknown_203B06C - movs r0, 0x1 - strh r0, [r1] - ldr r1, _08119530 @ =gFieldCallback - ldr r0, _08119534 @ =sub_807DCE4 - str r0, [r1] - ldr r1, _08119538 @ =CB2_ReturnToField - movs r0, 0x8 - bl sub_81277F4 - b _081198DC - .align 2, 0 -_08119528: .4byte gPaletteFade -_0811952C: .4byte gUnknown_203B06C -_08119530: .4byte gFieldCallback -_08119534: .4byte sub_807DCE4 -_08119538: .4byte CB2_ReturnToField -_0811953C: - adds r0, r6, 0 - adds r0, 0x16 - adds r1, r6, 0 - adds r1, 0x1D - adds r2, r6, 0 - adds r2, 0x1E - ldr r3, _08119580 @ =gUnknown_8456E6C - ldr r4, _08119584 @ =gUnknown_8456F04 - str r4, [sp] - bl sub_811A218 - adds r5, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _0811955E - b _081198DC -_0811955E: - subs r0, 0x1 - cmp r5, r0 - beq _08119568 - cmp r5, 0x12 - bne _08119590 -_08119568: - ldr r0, _08119588 @ =gUnknown_203B06C - bl sub_811B148 - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_80FAFA0 - ldr r0, _0811958C @ =gUnknown_8458D54 - bl sub_811868C - b _081198DC - .align 2, 0 -_08119580: .4byte gUnknown_8456E6C -_08119584: .4byte gUnknown_8456F04 -_08119588: .4byte gUnknown_203B06C -_0811958C: .4byte gUnknown_8458D54 -_08119590: - ldr r0, _08119598 @ =gUnknown_203B06C - strh r5, [r0, 0x2] - movs r0, 0x37 - b _081198DA - .align 2, 0 -_08119598: .4byte gUnknown_203B06C -_0811959C: - ldr r2, _081195B0 @ =gUnknown_203B06C - ldrh r0, [r2, 0x2] - ldrh r1, [r2, 0xA] - ldrh r2, [r2, 0xC] - bl sub_80FAFA0 - ldr r0, _081195B4 @ =gUnknown_8458D78 - bl sub_811868C - b _081198DC - .align 2, 0 -_081195B0: .4byte gUnknown_203B06C -_081195B4: .4byte gUnknown_8458D78 -_081195B8: - adds r0, r6, 0 - adds r0, 0x16 - movs r1, 0 - bl sub_811A14C - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _081195DE - cmp r1, 0 - bgt _081195D8 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _081195E2 - b _081198DC -_081195D8: - cmp r1, 0x1 - beq _081195E2 - b _081198DC -_081195DE: - movs r0, 0x38 - b _081198DA -_081195E2: - movs r0, 0x1 - bl sub_811B258 - movs r0, 0x4 - b _081198DA -_081195EC: - adds r0, r6, 0 - adds r0, 0x16 - ldr r1, _08119618 @ =gUnknown_8458E10 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _081195FE - b _081198DC -_081195FE: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_80FAFA0 - ldr r0, _0811961C @ =gUnknown_203B06C - bl sub_811B148 - movs r0, 0x1 - bl sub_811B258 - movs r0, 0x4 - b _081198DA - .align 2, 0 -_08119618: .4byte gUnknown_8458E10 -_0811961C: .4byte gUnknown_203B06C -_08119620: - adds r0, r6, 0 - adds r0, 0x16 - ldr r1, _08119638 @ =gUnknown_8458A98 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _08119632 - b _081198DC -_08119632: - movs r0, 0x2E - b _081198DA - .align 2, 0 -_08119638: .4byte gUnknown_8458A98 -_0811963C: - bl sub_811A3F8 - movs r0, 0x30 - b _081198DA -_08119644: - adds r0, r6, 0 - adds r0, 0x16 - adds r1, r6, 0 - adds r1, 0x1D - adds r2, r6, 0 - adds r2, 0x4A - adds r3, r6, 0 - adds r3, 0x1E - ldr r4, _08119688 @ =gUnknown_8456F24 - str r4, [sp] - ldr r4, _0811968C @ =gUnknown_8456F7C - str r4, [sp, 0x4] - ldr r4, [r6] - str r4, [sp, 0x8] - bl sub_811A2EC - adds r5, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _08119670 - b _081198DC -_08119670: - subs r0, 0x1 - cmp r5, r0 - beq _0811967A - cmp r5, 0x8 - bne _08119690 -_0811967A: - movs r0, 0x1 - bl sub_811B258 - bl DestroyHelpMessageWindow_ - movs r0, 0x4 - b _081198DA - .align 2, 0 -_08119688: .4byte gUnknown_8456F24 -_0811968C: .4byte gUnknown_8456F7C -_08119690: - ldr r1, [r6] - lsls r3, r5, 5 - mov r8, r3 - add r1, r8 - ldrb r0, [r1, 0x9] - lsrs r0, 2 - ldrh r1, [r1, 0x8] - lsls r1, 22 - lsrs r1, 22 - bl sub_811ADD0 - cmp r0, 0x1 - beq _081196EC - cmp r0, 0x1 - bgt _081196B4 - cmp r0, 0 - beq _081196BA - b _081198DC -_081196B4: - cmp r0, 0x2 - beq _08119734 - b _081198DC -_081196BA: - ldr r4, _081196E4 @ =gStringVar1 - ldr r1, [r6] - add r1, r8 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldr r0, [r6] - add r0, r8 - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r1, _081196E8 @ =gUnknown_8458E70 - movs r0, 0x31 - bl sub_8118664 - strh r5, [r7, 0x2] - b _081198DC - .align 2, 0 -_081196E4: .4byte gStringVar1 -_081196E8: .4byte gUnknown_8458E70 -_081196EC: - ldr r4, _08119724 @ =gStringVar1 - ldr r1, [r6] - add r1, r8 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldr r0, [r6] - add r0, r8 - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r0, _08119728 @ =gStringVar2 - ldr r1, [r6] - add r1, r8 - ldrb r2, [r1, 0x9] - lsrs r2, 2 - lsls r1, r2, 3 - subs r1, r2 - ldr r2, _0811972C @ =gTypeNames - adds r1, r2 - bl StringCopy - ldr r1, _08119730 @ =gUnknown_8458ED0 - b _0811976A - .align 2, 0 -_08119724: .4byte gStringVar1 -_08119728: .4byte gStringVar2 -_0811972C: .4byte gTypeNames -_08119730: .4byte gUnknown_8458ED0 -_08119734: - ldr r4, _08119774 @ =gStringVar1 - ldr r1, [r6] - add r1, r8 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldr r0, [r6] - add r0, r8 - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r0, _08119778 @ =gStringVar2 - ldr r1, [r6] - add r1, r8 - ldrb r2, [r1, 0x9] - lsrs r2, 2 - lsls r1, r2, 3 - subs r1, r2 - ldr r2, _0811977C @ =gTypeNames - adds r1, r2 - bl StringCopy - ldr r1, _08119780 @ =gUnknown_8458F04 -_0811976A: - movs r0, 0x2E - bl sub_8118664 - b _081198DC - .align 2, 0 -_08119774: .4byte gStringVar1 -_08119778: .4byte gStringVar2 -_0811977C: .4byte gTypeNames -_08119780: .4byte gUnknown_8458F04 -_08119784: - adds r0, r6, 0 - adds r0, 0x16 - movs r1, 0 - bl sub_811A14C - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _081197AA - cmp r1, 0 - bgt _081197A4 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _081197AE - b _081198DC -_081197A4: - cmp r1, 0x1 - beq _081197AE - b _081198DC -_081197AA: - movs r0, 0x32 - b _081198DA -_081197AE: - movs r0, 0x1 - bl sub_811B258 - movs r0, 0x4 - b _081198DA -_081197B8: - adds r0, r6, 0 - adds r0, 0x16 - ldr r1, _08119820 @ =gUnknown_8458D1C - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - bne _081197CA - b _081198DC -_081197CA: - ldr r4, _08119824 @ =gUnknown_203B06C - movs r0, 0x2 - strh r0, [r4] - ldr r2, _08119828 @ =gUnknown_203B064 - movs r1, 0x2 - ldrsh r0, [r7, r1] - ldr r1, [r6] - lsls r0, 5 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r2, _0811982C @ =gUnionRoomRequestedMonType - ldr r1, [r6] - movs r3, 0x2 - ldrsh r0, [r7, r3] - lsls r0, 5 - adds r1, r0 - ldrb r0, [r1, 0x9] - lsrs r0, 2 - strb r0, [r2] - ldr r2, _08119830 @ =gUnionRoomOfferedSpecies - ldr r1, [r6] - movs r3, 0x2 - ldrsh r0, [r7, r3] - lsls r0, 5 - adds r1, r0 - ldrh r0, [r1, 0x8] - lsls r0, 22 - lsrs r0, 22 - strh r0, [r2] - ldr r1, _08119834 @ =gFieldCallback - ldr r0, _08119838 @ =sub_807DCE4 - str r0, [r1] - ldr r1, _0811983C @ =CB2_ReturnToField - movs r0, 0x9 - bl sub_81277F4 - adds r0, r6, 0 - bl sub_81186B0 - ldrh r0, [r7, 0x2] - strb r0, [r4, 0x8] - b _081198DC - .align 2, 0 -_08119820: .4byte gUnknown_8458D1C -_08119824: .4byte gUnknown_203B06C -_08119828: .4byte gUnknown_203B064 -_0811982C: .4byte gUnionRoomRequestedMonType -_08119830: .4byte gUnionRoomOfferedSpecies -_08119834: .4byte gFieldCallback -_08119838: .4byte sub_807DCE4 -_0811983C: .4byte CB2_ReturnToField -_08119840: - ldr r1, _08119890 @ =gUnknown_203B058 - movs r0, 0x44 - strb r0, [r1] - movs r1, 0x2 - ldrsh r0, [r7, r1] - lsls r0, 5 - ldr r1, [r6] - adds r1, r0 - adds r0, r1, 0 - adds r0, 0x10 - movs r2, 0x44 - bl sub_80FC114 - ldr r4, _08119894 @ =gStringVar1 - movs r2, 0x2 - ldrsh r0, [r7, r2] - lsls r0, 5 - ldr r1, [r6] - adds r1, r0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldr r1, [r6] - movs r3, 0x2 - ldrsh r0, [r7, r3] - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r0, _08119898 @ =gUnknown_8457A34 - ldr r0, [r0, 0x8] - bl sub_811A0B4 - movs r0, 0x19 - b _081198DA - .align 2, 0 -_08119890: .4byte gUnknown_203B058 -_08119894: .4byte gStringVar1 -_08119898: .4byte gUnknown_8457A34 -_0811989C: - adds r0, r6, 0 - adds r0, 0x16 - ldr r1, _081198C4 @ =gStringVar4 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - beq _081198DC - movs r0, 0x1 - bl sub_811B258 - movs r1, 0 - ldrsh r0, [r7, r1] - movs r2, 0x2 - ldrsh r1, [r7, r2] - ldr r2, [r6] - bl sub_811C028 - movs r0, 0x4 - b _081198DA - .align 2, 0 -_081198C4: .4byte gStringVar4 -_081198C8: - adds r0, r6, 0 - adds r0, 0x16 - ldr r1, _081198E8 @ =gStringVar4 - bl sub_811A0F8 - lsls r0, 24 - cmp r0, 0 - beq _081198DC - ldrb r0, [r6, 0x15] -_081198DA: - strb r0, [r6, 0x14] -_081198DC: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081198E8: .4byte gStringVar4 - thumb_func_end sub_81186E0 - - thumb_func_start var_800D_set_xB -var_800D_set_xB: @ 81198EC - push {lr} - bl InUnionRoom - cmp r0, 0x1 - bne _081198FC - ldr r1, _08119900 @ =gSpecialVar_Result - movs r0, 0xB - strh r0, [r1] -_081198FC: - pop {r0} - bx r0 - .align 2, 0 -_08119900: .4byte gSpecialVar_Result - thumb_func_end var_800D_set_xB - - thumb_func_start sub_8119904 -sub_8119904: @ 8119904 - push {r4,r5,lr} - adds r2, r0, 0 - ldr r3, _08119940 @ =gRecvCmds - ldrh r5, [r3, 0x12] - adds r4, r5, 0 - cmp r4, 0 - beq _08119938 - ldrh r0, [r3, 0x10] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _08119938 - adds r0, r2, 0 - adds r0, 0x86 - strh r5, [r0] - cmp r4, 0x44 - bne _08119938 - ldrh r1, [r3, 0x14] - adds r0, 0x2 - strh r1, [r0] - ldrh r1, [r3, 0x16] - adds r0, 0x2 - strh r1, [r0] -_08119938: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08119940: .4byte gRecvCmds - thumb_func_end sub_8119904 - - thumb_func_start sub_8119944 -sub_8119944: @ 8119944 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r4, 0 - adds r5, 0x86 - ldrh r0, [r5] - cmp r0, 0 - beq _08119994 - ldr r0, _08119978 @ =gStringVar4 - ldr r1, _0811997C @ =gLinkPlayers - adds r1, 0x2F - ldrb r1, [r1] - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_811AF6C - cmp r0, 0 - beq _08119994 - cmp r0, 0x1 - bne _08119984 - movs r0, 0x23 - strb r0, [r4, 0x14] - ldr r1, _08119980 @ =gUnknown_203B058 - ldrh r0, [r5] - strb r0, [r1] - movs r0, 0 - b _08119996 - .align 2, 0 -_08119978: .4byte gStringVar4 -_0811997C: .4byte gLinkPlayers -_08119980: .4byte gUnknown_203B058 -_08119984: - cmp r0, 0x2 - bne _08119994 - movs r0, 0x24 - strb r0, [r4, 0x14] - bl sub_800AAC0 - movs r0, 0 - b _08119996 -_08119994: - movs r0, 0x1 -_08119996: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8119944 - - thumb_func_start InitUnionRoom -InitUnionRoom: @ 811999C - push {r4-r6,lr} - ldr r5, _081199E8 @ =gUnknown_203B04C - movs r0, 0x1 - negs r0, r0 - adds r6, r0, 0 - movs r0, 0xFF - strb r0, [r5] - ldr r0, _081199EC @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _081199E0 - ldr r0, _081199F0 @ =sub_81199FC - movs r1, 0 - bl CreateTask - ldr r4, _081199F4 @ =gUnknown_203B05C - movs r0, 0x96 - lsls r0, 2 - bl AllocZeroed - str r0, [r4] - ldr r1, _081199F8 @ =gUnknown_300202C - str r0, [r1] - movs r1, 0 - strb r1, [r0, 0x14] - strb r1, [r0, 0x16] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - ldrb r0, [r5] - orrs r0, r6 - strb r0, [r5] -_081199E0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081199E8: .4byte gUnknown_203B04C -_081199EC: .4byte gUnknown_203ADFA -_081199F0: .4byte sub_81199FC -_081199F4: .4byte gUnknown_203B05C -_081199F8: .4byte gUnknown_300202C - thumb_func_end InitUnionRoom - - thumb_func_start sub_81199FC -sub_81199FC: @ 81199FC - push {r4-r6,lr} - sub sp, 0x20 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08119A1C @ =gUnknown_203B05C - ldr r5, [r0] - ldrb r0, [r5, 0x14] - cmp r0, 0x4 - bls _08119A10 - b _08119B5C -_08119A10: - lsls r0, 2 - ldr r1, _08119A20 @ =_08119A24 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08119A1C: .4byte gUnknown_203B05C -_08119A20: .4byte _08119A24 - .align 2, 0 -_08119A24: - .4byte _08119A38 - .4byte _08119A3E - .4byte _08119A60 - .4byte _08119AB0 - .4byte _08119B28 -_08119A38: - movs r0, 0x1 - strb r0, [r5, 0x14] - b _08119B5C -_08119A3E: - movs r0, 0xC - movs r1, 0 - movs r2, 0 - bl sub_80FAF58 - bl sub_800B1F4 - bl OpenLink - bl sub_80FBC00 - movs r0, 0x1 - bl sub_80FB128 - movs r0, 0x2 - strb r0, [r5, 0x14] - b _08119B5C -_08119A60: - movs r0, 0x70 - bl AllocZeroed - str r0, [r5, 0x4] - movs r1, 0x4 - bl sub_811A650 - movs r0, 0x70 - bl AllocZeroed - str r0, [r5, 0xC] - movs r1, 0x4 - bl sub_811A650 - movs r0, 0x80 - lsls r0, 1 - bl AllocZeroed - str r0, [r5] - movs r1, 0x8 - bl sub_811A5E4 - movs r0, 0x20 - bl AllocZeroed - str r0, [r5, 0x8] - movs r1, 0x1 - bl sub_811A5E4 - ldr r0, [r5, 0xC] - ldr r1, [r5, 0x4] - movs r2, 0xA - bl sub_8119E84 - adds r1, r5, 0 - adds r1, 0x20 - strb r0, [r1] - movs r0, 0x3 - strb r0, [r5, 0x14] - b _08119B5C -_08119AB0: - bl sub_8119B94 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - blt _08119B5C - cmp r0, 0x2 - bgt _08119B5C - ldr r0, _08119B14 @ =gUnknown_203B04C - ldrb r0, [r0] - cmp r0, 0xFF - bne _08119B5C - movs r6, 0 -_08119ACA: - ldr r0, [r5] - lsls r4, r6, 5 - adds r1, r0, r4 - ldrb r0, [r1, 0x1A] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _08119B0A - adds r1, 0x10 - mov r0, sp - bl StringCopy - ldr r0, [r5] - adds r0, r4 - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - mov r0, sp - bl ConvertInternationalString - ldr r0, [r5] - adds r0, r4 - adds r0, 0x2 - bl sub_8118658 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - bl sub_80FD338 - cmp r0, 0 - bne _08119B18 -_08119B0A: - adds r6, 0x1 - cmp r6, 0x7 - ble _08119ACA - b _08119B5C - .align 2, 0 -_08119B14: .4byte gUnknown_203B04C -_08119B18: - ldr r0, _08119B24 @ =gUnknown_203B04C - mov r1, sp - bl StringCopy - b _08119B5C - .align 2, 0 -_08119B24: .4byte gUnknown_203B04C -_08119B28: - ldr r0, [r5, 0x8] - bl Free - ldr r0, [r5] - bl Free - ldr r0, [r5, 0xC] - bl Free - ldr r0, [r5, 0x4] - bl Free - adds r0, r5, 0 - adds r0, 0x20 - ldrb r0, [r0] - bl DestroyTask - ldr r0, _08119B64 @ =gUnknown_203B05C - ldr r0, [r0] - bl Free - bl sub_80F8DC0 - adds r0, r4, 0 - bl DestroyTask -_08119B5C: - add sp, 0x20 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08119B64: .4byte gUnknown_203B05C - thumb_func_end sub_81199FC - - thumb_func_start BufferUnionRoomPlayerName -BufferUnionRoomPlayerName: @ 8119B68 - push {r4,lr} - ldr r4, _08119B78 @ =gUnknown_203B04C - ldrb r0, [r4] - cmp r0, 0xFF - bne _08119B7C - movs r0, 0 - b _08119B8A - .align 2, 0 -_08119B78: .4byte gUnknown_203B04C -_08119B7C: - ldr r0, _08119B90 @ =gStringVar1 - adds r1, r4, 0 - bl StringCopy - movs r0, 0xFF - strb r0, [r4] - movs r0, 0x1 -_08119B8A: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08119B90: .4byte gStringVar1 - thumb_func_end BufferUnionRoomPlayerName - - thumb_func_start sub_8119B94 -sub_8119B94: @ 8119B94 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08119BE8 @ =gUnknown_203B05C - ldr r4, [r0] - movs r7, 0 - movs r6, 0 - movs r5, 0 -_08119BA6: - ldr r0, [r4, 0xC] - adds r0, r5 - ldr r1, _08119BEC @ =gUnknown_8457034 - bl sub_811A694 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x1 - bne _08119BF0 - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x8] - adds r1, r5 - ldm r1!, {r2,r5,r6} - stm r0!, {r2,r5,r6} - ldm r1!, {r2,r5,r6} - stm r0!, {r2,r5,r6} - ldr r1, [r4, 0x8] - movs r0, 0 - strh r0, [r1, 0x18] - ldr r2, [r4, 0x8] - ldrb r1, [r2, 0x1A] - movs r5, 0x4 - negs r5, r5 - adds r0, r5, 0 - ands r1, r0 - movs r0, 0x1 - orrs r1, r0 - strb r1, [r2, 0x1A] - ldr r0, [r4, 0x8] - strb r3, [r0, 0x1B] - movs r0, 0x4 - b _08119D24 - .align 2, 0 -_08119BE8: .4byte gUnknown_203B05C -_08119BEC: .4byte gUnknown_8457034 -_08119BF0: - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _08119BA6 - movs r6, 0 - mov r9, r6 -_08119BFC: - ldr r0, [r4] - mov r1, r9 - lsls r5, r1, 5 - adds r2, r0, r5 - ldrb r0, [r2, 0x1A] - lsls r0, 30 - mov r8, r5 - cmp r0, 0 - beq _08119CF0 - ldr r1, [r4, 0x4] - adds r0, r2, 0 - bl sub_811A748 - adds r6, r0, 0 - cmp r6, 0xFF - beq _08119C96 - ldr r0, [r4] - adds r2, r0, r5 - ldrb r1, [r2, 0x1A] - lsls r0, r1, 30 - lsrs r0, 30 - cmp r0, 0x1 - bne _08119C74 - lsls r0, r6, 3 - subs r0, r6 - lsls r6, r0, 2 - ldr r1, [r4, 0x4] - adds r1, r6 - adds r0, r2, 0 - bl sub_811A6DC - cmp r0, 0 - beq _08119C5A - ldr r1, [r4] - ldr r0, [r4, 0x4] - adds r1, r5 - adds r0, r6 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r4] - adds r0, r5 - movs r1, 0x40 - strb r1, [r0, 0x1B] - movs r7, 0x1 - b _08119C8C -_08119C5A: - ldr r0, [r4] - adds r1, r0, r5 - ldrb r0, [r1, 0x1B] - cmp r0, 0 - beq _08119C8C - subs r0, 0x1 - strb r0, [r1, 0x1B] - ldr r0, [r4] - adds r0, r5 - ldrb r0, [r0, 0x1B] - cmp r0, 0 - bne _08119C8C - b _08119C8A -_08119C74: - movs r3, 0x4 - negs r3, r3 - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x1A] - ldr r0, [r4] - adds r0, r5 - movs r1, 0 - strb r1, [r0, 0x1B] -_08119C8A: - movs r7, 0x2 -_08119C8C: - ldr r0, [r4] - add r0, r8 - movs r1, 0 - strh r1, [r0, 0x18] - b _08119CF0 -_08119C96: - ldr r0, [r4] - adds r1, r0, r5 - ldrb r0, [r1, 0x1A] - lsls r2, r0, 30 - lsrs r0, r2, 30 - cmp r0, 0x2 - beq _08119CD0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] - ldr r0, [r4] - adds r2, r0, r5 - ldrh r1, [r2, 0x18] - ldr r0, _08119CCC @ =0x00000257 - cmp r1, r0 - bls _08119CF0 - ldrb r0, [r2, 0x1A] - movs r5, 0x4 - negs r5, r5 - adds r1, r5, 0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0x1A] - movs r7, 0x2 - b _08119CF0 - .align 2, 0 -_08119CCC: .4byte 0x00000257 -_08119CD0: - lsrs r0, r2, 30 - cmp r0, 0x2 - bne _08119CF0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] - ldr r0, [r4] - adds r2, r0, r5 - ldrh r1, [r2, 0x18] - ldr r0, _08119D30 @ =0x00000383 - cmp r1, r0 - bls _08119CF0 - adds r0, r2, 0 - movs r1, 0x1 - bl sub_811A5E4 -_08119CF0: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r0, 0x7 - bhi _08119D00 - b _08119BFC -_08119D00: - movs r5, 0 - movs r6, 0x3 -_08119D04: - ldr r0, [r4] - ldr r1, [r4, 0x4] - adds r1, r5 - movs r2, 0x8 - bl sub_811A798 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08119D1A - movs r7, 0x1 -_08119D1A: - adds r5, 0x1C - subs r6, 0x1 - cmp r6, 0 - bge _08119D04 - adds r0, r7, 0 -_08119D24: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08119D30: .4byte 0x00000383 - thumb_func_end sub_8119B94 - - thumb_func_start sub_8119D34 -sub_8119D34: @ 8119D34 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r0, 2 - add r0, r10 - lsls r0, 3 - ldr r1, _08119E24 @ =gTasks+0x8 - adds r6, r0, r1 - movs r7, 0 - mov r0, sp - adds r0, 0x10 - str r0, [sp, 0x18] -_08119D58: - lsls r2, r7, 24 - lsrs r2, 24 - mov r0, sp - ldr r1, [sp, 0x18] - bl sub_80FCC3C - lsls r0, 24 - lsrs r4, r0, 24 - mov r0, sp - ldrb r0, [r0, 0xA] - lsls r0, 25 - lsrs r0, 25 - mov r2, r10 - lsls r1, r2, 2 - add r1, r10 - lsls r1, 3 - ldr r3, _08119E28 @ =gTasks - adds r1, r3 - movs r5, 0x10 - ldrsh r1, [r1, r5] - bl sub_8116F28 - cmp r0, 0 - bne _08119D94 - mov r1, sp - ldr r0, _08119E2C @ =gUnknown_8457034 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} -_08119D94: - mov r0, sp - ldrb r1, [r0] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _08119DAC - mov r1, sp - ldr r0, _08119E2C @ =gUnknown_8457034 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} -_08119DAC: - cmp r4, 0 - bne _08119E30 - lsls r0, r7, 3 - mov r8, r0 - adds r1, r7, 0x1 - mov r9, r1 - cmp r7, 0 - ble _08119DEC - movs r2, 0 - str r2, [sp, 0x1C] - adds r4, r7, 0 -_08119DC2: - ldr r0, [r6, 0x4] - ldr r3, [sp, 0x1C] - adds r0, r3 - mov r1, sp - bl sub_811A694 - lsls r0, 24 - cmp r0, 0 - bne _08119DE0 - mov r1, sp - ldr r0, _08119E2C @ =gUnknown_8457034 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} -_08119DE0: - ldr r5, [sp, 0x1C] - adds r5, 0x1C - str r5, [sp, 0x1C] - subs r4, 0x1 - cmp r4, 0 - bne _08119DC2 -_08119DEC: - ldr r1, [r6, 0x4] - mov r0, r8 - subs r4, r0, r7 - lsls r4, 2 - adds r1, r4 - mov r0, sp - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldr r0, [r6, 0x4] - adds r0, r4 - ldr r1, _08119E2C @ =gUnknown_8457034 - bl sub_811A694 - ldr r3, [r6, 0x4] - adds r3, r4 - movs r2, 0x1 - ands r2, r0 - ldrb r0, [r3, 0x18] - movs r4, 0x2 - negs r4, r4 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x18] - b _08119E68 - .align 2, 0 -_08119E24: .4byte gTasks+0x8 -_08119E28: .4byte gTasks -_08119E2C: .4byte gUnknown_8457034 -_08119E30: - ldr r1, [r6] - lsls r4, r7, 3 - subs r4, r7 - lsls r4, 2 - adds r1, r4 - mov r0, sp - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldr r0, [r6] - adds r0, r4 - ldr r1, _08119E80 @ =gUnknown_8457034 - bl sub_811A694 - ldr r3, [r6] - adds r3, r4 - movs r2, 0x1 - ands r2, r0 - ldrb r0, [r3, 0x18] - movs r4, 0x2 - negs r4, r4 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x18] - adds r7, 0x1 - mov r9, r7 -_08119E68: - mov r7, r9 - cmp r7, 0x3 - bgt _08119E70 - b _08119D58 -_08119E70: - 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 -_08119E80: .4byte gUnknown_8457034 - thumb_func_end sub_8119D34 - - thumb_func_start sub_8119E84 -sub_8119E84: @ 8119E84 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - ldr r0, _08119EB0 @ =sub_8119D34 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r2, _08119EB4 @ =gTasks+0x8 - adds r3, r1, r2 - str r4, [r3] - str r5, [r3, 0x4] - adds r2, r1 - strh r6, [r2, 0x8] - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08119EB0: .4byte sub_8119D34 -_08119EB4: .4byte gTasks+0x8 - thumb_func_end sub_8119E84 - - thumb_func_start sub_8119EB8 -sub_8119EB8: @ 8119EB8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r0, 2 - add r0, r10 - lsls r0, 3 - ldr r1, _08119FA4 @ =gTasks+0x8 - adds r6, r0, r1 - movs r3, 0 -_08119ED6: - lsls r4, r3, 3 - subs r0, r4, r3 - lsls r5, r0, 2 - ldr r0, [r6] - adds r0, r5 - adds r1, r0, 0 - adds r1, 0x10 - lsls r2, r3, 24 - lsrs r2, 24 - str r3, [sp] - bl sub_80FCC3C - ldr r0, [r6] - adds r0, r5 - ldrb r0, [r0, 0xA] - lsls r0, 25 - lsrs r0, 25 - mov r2, r10 - lsls r1, r2, 2 - add r1, r10 - lsls r1, 3 - ldr r7, _08119FA8 @ =gTasks - adds r1, r7 - movs r2, 0xC - ldrsh r1, [r1, r2] - bl sub_8116F28 - mov r8, r4 - ldr r3, [sp] - cmp r0, 0 - bne _08119F22 - ldr r1, [r6] - adds r1, r5 - ldr r0, _08119FAC @ =gUnknown_8457034 - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} -_08119F22: - adds r4, r3, 0x1 - mov r9, r4 - cmp r3, 0 - ble _08119F66 - str r5, [sp, 0x4] - movs r5, 0 - str r5, [sp, 0x8] - adds r4, r3, 0 -_08119F32: - ldr r1, [r6] - ldr r7, [sp, 0x8] - adds r0, r1, r7 - ldr r2, [sp, 0x4] - adds r1, r2 - str r3, [sp] - bl sub_811A694 - lsls r0, 24 - ldr r3, [sp] - cmp r0, 0 - bne _08119F5A - ldr r1, [r6] - ldr r5, [sp, 0x4] - adds r1, r5 - ldr r0, _08119FAC @ =gUnknown_8457034 - ldm r0!, {r2,r5,r7} - stm r1!, {r2,r5,r7} - ldm r0!, {r2,r5,r7} - stm r1!, {r2,r5,r7} -_08119F5A: - ldr r7, [sp, 0x8] - adds r7, 0x1C - str r7, [sp, 0x8] - subs r4, 0x1 - cmp r4, 0 - bne _08119F32 -_08119F66: - mov r0, r8 - subs r4, r0, r3 - lsls r4, 2 - ldr r0, [r6] - adds r0, r4 - ldr r1, _08119FAC @ =gUnknown_8457034 - bl sub_811A694 - ldr r3, [r6] - adds r3, r4 - movs r2, 0x1 - ands r2, r0 - ldrb r0, [r3, 0x18] - movs r4, 0x2 - negs r4, r4 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x18] - mov r3, r9 - cmp r3, 0x3 - ble _08119ED6 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08119FA4: .4byte gTasks+0x8 -_08119FA8: .4byte gTasks -_08119FAC: .4byte gUnknown_8457034 - thumb_func_end sub_8119EB8 - - thumb_func_start sub_8119FB0 -sub_8119FB0: @ 8119FB0 - push {lr} - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7 - bne _08119FC0 - ldrb r1, [r0] - movs r0, 0x20 - b _08119FC8 -_08119FC0: - cmp r1, 0x8 - bne _08119FD2 - ldrb r1, [r0] - movs r0, 0x10 -_08119FC8: - ands r0, r1 - cmp r0, 0 - beq _08119FD2 - movs r0, 0x1 - b _08119FD4 -_08119FD2: - movs r0, 0 -_08119FD4: - pop {r1} - bx r1 - thumb_func_end sub_8119FB0 - - thumb_func_start sub_8119FD8 -sub_8119FD8: @ 8119FD8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0811A04C @ =gTasks+0x8 - adds r4, r1, r0 - movs r6, 0 - subs r0, 0x8 - movs r5, 0 - adds r1, r0 - mov r8, r1 -_08119FF6: - ldr r0, [r4] - adds r0, r5 - adds r1, r0, 0 - adds r1, 0x10 - lsls r2, r6, 24 - lsrs r2, 24 - bl sub_80FCCF4 - lsls r0, 24 - cmp r0, 0 - beq _0811A01A - ldr r0, [r4] - adds r0, r5 - mov r2, r8 - movs r3, 0xC - ldrsh r1, [r2, r3] - bl sub_8119FB0 -_0811A01A: - ldr r0, [r4] - adds r0, r5 - ldr r1, _0811A050 @ =gUnknown_8457034 - bl sub_811A694 - ldr r3, [r4] - adds r3, r5 - movs r2, 0x1 - ands r2, r0 - ldrb r0, [r3, 0x18] - movs r7, 0x2 - negs r7, r7 - adds r1, r7, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, 0x18] - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _08119FF6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811A04C: .4byte gTasks+0x8 -_0811A050: .4byte gUnknown_8457034 - thumb_func_end sub_8119FD8 - - thumb_func_start sub_811A054 -sub_811A054: @ 811A054 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _0811A07C @ =sub_8119EB8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - ldr r1, _0811A080 @ =gTasks+0x8 - adds r3, r2, r1 - str r4, [r3] - adds r1, r2 - strh r5, [r1, 0x4] - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811A07C: .4byte sub_8119EB8 -_0811A080: .4byte gTasks+0x8 - thumb_func_end sub_811A054 - - thumb_func_start sub_811A084 -sub_811A084: @ 811A084 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _0811A0AC @ =sub_8119FD8 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - ldr r1, _0811A0B0 @ =gTasks+0x8 - adds r3, r2, r1 - str r4, [r3] - adds r1, r2 - strh r5, [r1, 0x4] - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0811A0AC: .4byte sub_8119FD8 -_0811A0B0: .4byte gTasks+0x8 - thumb_func_end sub_811A084 - - thumb_func_start sub_811A0B4 -sub_811A0B4: @ 811A0B4 - push {r4,lr} - adds r4, r0, 0 - bl LoadStdWindowFrameGfx - movs r0, 0 - movs r1, 0x1 - bl DrawDialogueFrame - ldr r0, _0811A0DC @ =gStringVar4 - adds r1, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - movs r1, 0x1 - bl AddTextPrinterWithCustomSpeedForMessage - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811A0DC: .4byte gStringVar4 - thumb_func_end sub_811A0B4 - - thumb_func_start sub_811A0E0 -sub_811A0E0: @ 811A0E0 - push {lr} - bl RunTextPrinters_CheckPrinter0Active - lsls r0, 16 - cmp r0, 0 - beq _0811A0F0 - movs r0, 0 - b _0811A0F2 -_0811A0F0: - movs r0, 0x1 -_0811A0F2: - pop {r1} - bx r1 - thumb_func_end sub_811A0E0 - - thumb_func_start sub_811A0F8 -sub_811A0F8: @ 811A0F8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0811A10A - cmp r0, 0x1 - beq _0811A130 - b _0811A142 -_0811A10A: - bl LoadStdWindowFrameGfx - movs r0, 0 - movs r1, 0x1 - bl DrawDialogueFrame - ldr r0, _0811A12C @ =gStringVar4 - adds r1, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - bl AddTextPrinterForMessage - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0811A142 - .align 2, 0 -_0811A12C: .4byte gStringVar4 -_0811A130: - bl RunTextPrinters_CheckPrinter0Active - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0811A142 - strb r0, [r4] - movs r0, 0x1 - b _0811A144 -_0811A142: - movs r0, 0 -_0811A144: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_811A0F8 - - thumb_func_start sub_811A14C -sub_811A14C: @ 811A14C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - cmp r0, 0 - beq _0811A15E - cmp r0, 0x1 - beq _0811A174 - b _0811A1A0 -_0811A15E: - cmp r5, 0 - beq _0811A168 - movs r0, 0x3 - negs r0, r0 - b _0811A1A4 -_0811A168: - bl DisplayYesNoMenuDefaultYes - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0811A1A0 -_0811A174: - cmp r5, 0 - beq _0811A186 - bl DestroyYesNoMenu - movs r0, 0 - strb r0, [r4] - movs r0, 0x3 - negs r0, r0 - b _0811A1A4 -_0811A186: - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x2 - bhi _0811A1A0 - strb r5, [r4] - adds r0, r1, 0 - b _0811A1A4 -_0811A1A0: - movs r0, 0x2 - negs r0, r0 -_0811A1A4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_811A14C - - thumb_func_start sub_811A1AC -sub_811A1AC: @ 811A1AC - push {r4,lr} - sub sp, 0x8 - bl AddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl DrawStdWindowFrame - adds r0, r4, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - ldr r2, _0811A1F8 @ =gUnknown_8459378 - movs r0, 0x1 - str r0, [sp] - movs r0, 0x6 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r1, 0 - movs r3, 0x8 - bl sub_811A444 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x2 - bl CopyWindowToVram - adds r0, r4, 0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811A1F8: .4byte gUnknown_8459378 - thumb_func_end sub_811A1AC - - thumb_func_start sub_811A1FC -sub_811A1FC: @ 811A1FC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x1 - bl ClearStdWindowAndFrame - adds r0, r4, 0 - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_811A1FC - - thumb_func_start sub_811A218 -sub_811A218: @ 811A218 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - adds r5, r1, 0 - mov r9, r2 - adds r0, r3, 0 - ldrb r4, [r7] - cmp r4, 0 - beq _0811A234 - cmp r4, 0x1 - beq _0811A274 - b _0811A2DA -_0811A234: - bl AddWindow - strb r0, [r5] - ldrb r0, [r5] - movs r1, 0 - bl DrawStdWindowFrame - ldr r0, _0811A270 @ =gMultiuseListMenuTemplate - adds r2, r0, 0 - ldr r1, [sp, 0x1C] - ldm r1!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r1!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldrb r1, [r5] - strb r1, [r0, 0x10] - movs r1, 0 - movs r2, 0 - bl ListMenuInit - mov r1, r9 - strb r0, [r1] - ldrb r0, [r5] - movs r1, 0x1 - bl CopyWindowToVram - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - b _0811A2DA - .align 2, 0 -_0811A270: .4byte gMultiuseListMenuTemplate -_0811A274: - mov r3, r9 - ldrb r0, [r3] - bl ListMenu_ProcessInput - mov r8, r0 - ldr r0, _0811A2AC @ =gMain - ldrh r1, [r0, 0x2E] - ands r4, r1 - cmp r4, 0 - beq _0811A2B0 - mov r4, r9 - ldrb r0, [r4] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - ldrb r0, [r5] - movs r1, 0x1 - bl ClearStdWindowAndFrame - ldrb r0, [r5] - bl RemoveWindow - movs r0, 0 - strb r0, [r7] - mov r0, r8 - b _0811A2DE - .align 2, 0 -_0811A2AC: .4byte gMain -_0811A2B0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0811A2DA - mov r6, r9 - ldrb r0, [r6] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - ldrb r0, [r5] - movs r1, 0x1 - bl ClearStdWindowAndFrame - ldrb r0, [r5] - bl RemoveWindow - strb r4, [r7] - movs r0, 0x2 - negs r0, r0 - b _0811A2DE -_0811A2DA: - movs r0, 0x1 - negs r0, r0 -_0811A2DE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811A218 - - thumb_func_start sub_811A2EC -sub_811A2EC: @ 811A2EC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r7, r3, 0 - ldrb r0, [r0] - cmp r0, 0 - beq _0811A308 - cmp r0, 0x1 - beq _0811A358 - b _0811A3E6 -_0811A308: - ldr r0, _0811A350 @ =gUnknown_8456F1C - bl sub_811A1AC - strb r0, [r7] - ldr r0, [sp, 0x1C] - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl DrawStdWindowFrame - ldr r0, _0811A354 @ =gMultiuseListMenuTemplate - adds r2, r0, 0 - ldr r1, [sp, 0x20] - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldm r1!, {r3,r6,r7} - stm r2!, {r3,r6,r7} - ldrb r1, [r4] - strb r1, [r0, 0x10] - movs r1, 0 - movs r2, 0x1 - bl ListMenuInit - strb r0, [r5] - ldrb r0, [r4] - movs r1, 0x1 - bl CopyWindowToVram - mov r1, r9 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0811A3E6 - .align 2, 0 -_0811A350: .4byte gUnknown_8456F1C -_0811A354: .4byte gMultiuseListMenuTemplate -_0811A358: - ldrb r0, [r5] - bl ListMenu_ProcessInput - adds r1, r0, 0 - ldr r0, _0811A3A8 @ =gMain - ldrh r2, [r0, 0x2E] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0 - beq _0811A3E6 - cmp r1, 0x8 - beq _0811A37E - movs r0, 0x2 - ands r0, r2 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r0, 0 - beq _0811A3AC -_0811A37E: - ldrb r0, [r5] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - ldrb r0, [r4] - movs r1, 0x1 - bl ClearStdWindowAndFrame - ldrb r0, [r4] - bl RemoveWindow - ldrb r0, [r7] - bl sub_811A1FC - movs r0, 0 - mov r3, r9 - strb r0, [r3] - movs r0, 0x2 - negs r0, r0 - b _0811A3EA - .align 2, 0 -_0811A3A8: .4byte gMain -_0811A3AC: - ldr r0, [sp, 0x24] - bl sub_811AD7C - adds r6, r0, 0 - cmp r6, 0 - blt _0811A3E0 - ldrb r0, [r5] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - ldrb r0, [r4] - movs r1, 0x1 - bl ClearStdWindowAndFrame - ldrb r0, [r4] - bl RemoveWindow - ldrb r0, [r7] - bl sub_811A1FC - mov r0, r8 - mov r7, r9 - strb r0, [r7] - adds r0, r6, 0 - b _0811A3EA -_0811A3E0: - movs r0, 0x7 - bl PlaySE -_0811A3E6: - movs r0, 0x1 - negs r0, r0 -_0811A3EA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811A2EC - - thumb_func_start sub_811A3F8 -sub_811A3F8: @ 811A3F8 - push {lr} - sub sp, 0xC - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r0} - bx r0 - thumb_func_end sub_811A3F8 - - thumb_func_start sub_811A41C -sub_811A41C: @ 811A41C - push {lr} - sub sp, 0xC - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r0, 0 - bl CopyBgTilemapBufferToVram - bl EnableBothScriptContexts - add sp, 0xC - pop {r0} - bx r0 - thumb_func_end sub_811A41C - - thumb_func_start sub_811A444 -sub_811A444: @ 811A444 - push {r4,r5,lr} - sub sp, 0x10 - ldr r5, [sp, 0x1C] - ldr r4, [sp, 0x20] - lsls r3, 24 - lsrs r3, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - str r2, [sp] - mov r2, sp - strb r0, [r2, 0x4] - mov r0, sp - strb r1, [r0, 0x5] - strb r3, [r0, 0x6] - strb r5, [r0, 0x7] - strb r3, [r0, 0x8] - strb r5, [r0, 0x9] - ldrb r1, [r2, 0xC] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0xC] - ldr r2, _0811A490 @ =gTextFlags - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - cmp r4, 0x6 - bls _0811A486 - b _0811A5D2 -_0811A486: - lsls r0, r4, 2 - ldr r1, _0811A494 @ =_0811A498 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811A490: .4byte gTextFlags -_0811A494: .4byte _0811A498 - .align 2, 0 -_0811A498: - .4byte _0811A4B4 - .4byte _0811A4E0 - .4byte _0811A50C - .4byte _0811A538 - .4byte _0811A564 - .4byte _0811A590 - .4byte _0811A5A8 -_0811A4B4: - mov r0, sp - movs r1, 0 - strb r1, [r0, 0xA] - strb r1, [r0, 0xB] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r3, 0xF - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0xC] - ldrb r1, [r2, 0xD] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0xD] - ands r0, r3 - movs r1, 0x30 - b _0811A5CE -_0811A4E0: - mov r0, sp - movs r1, 0 - strb r1, [r0, 0xA] - strb r1, [r0, 0xB] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r3, 0xF - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2, 0xC] - ldrb r1, [r2, 0xD] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0xD] - ands r0, r3 - movs r1, 0x50 - b _0811A5CE -_0811A50C: - mov r0, sp - movs r1, 0 - strb r1, [r0, 0xA] - strb r1, [r0, 0xB] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r3, 0xF - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x60 - orrs r0, r1 - strb r0, [r2, 0xC] - ldrb r1, [r2, 0xD] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0xD] - ands r0, r3 - movs r1, 0x70 - b _0811A5CE -_0811A538: - mov r0, sp - movs r1, 0 - strb r1, [r0, 0xA] - strb r1, [r0, 0xB] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r3, 0xF - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0xC] - ldrb r1, [r2, 0xD] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0xD] - ands r0, r3 - movs r1, 0x30 - b _0811A5CE -_0811A564: - mov r0, sp - movs r1, 0 - strb r1, [r0, 0xA] - strb r1, [r0, 0xB] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r3, 0xF - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0xC] - ldrb r1, [r2, 0xD] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2, 0xD] - ands r0, r3 - movs r1, 0x30 - b _0811A5CE -_0811A590: - mov r0, sp - movs r1, 0 - strb r1, [r0, 0xA] - strb r1, [r0, 0xB] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r4, 0xF - movs r3, 0xF - adds r0, r3, 0 - ands r0, r1 - movs r1, 0x70 - b _0811A5BE -_0811A5A8: - mov r0, sp - movs r1, 0 - strb r1, [r0, 0xA] - strb r1, [r0, 0xB] - mov r2, sp - ldrb r1, [r2, 0xC] - movs r4, 0xF - movs r3, 0xF - adds r0, r3, 0 - ands r0, r1 - movs r1, 0xE0 -_0811A5BE: - orrs r0, r1 - strb r0, [r2, 0xC] - mov r1, sp - ldrb r0, [r1, 0xD] - orrs r0, r4 - strb r0, [r1, 0xD] - ands r0, r3 - movs r1, 0x90 -_0811A5CE: - orrs r0, r1 - strb r0, [r2, 0xD] -_0811A5D2: - mov r0, sp - movs r1, 0xFF - movs r2, 0 - bl AddTextPrinter - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_811A444 - - thumb_func_start sub_811A5E4 -sub_811A5E4: @ 811A5E4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - beq _0811A63C - ldr r2, _0811A64C @ =gUnknown_8457034 - mov r8, r2 - movs r5, 0 - mov r9, r5 - movs r6, 0x4 - negs r6, r6 - mov r12, r6 - adds r2, r0, 0 - adds r2, 0x18 - adds r4, r0, 0 - movs r7, 0xFF - mov r10, r7 - adds r3, r1, 0 -_0811A610: - adds r1, r4, 0 - mov r0, r8 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - mov r0, r10 - strh r0, [r2] - ldrb r1, [r2, 0x2] - mov r0, r12 - ands r0, r1 - movs r1, 0x5 - negs r1, r1 - ands r0, r1 - strb r0, [r2, 0x2] - mov r5, r9 - strb r5, [r2, 0x3] - adds r2, 0x20 - adds r4, 0x20 - subs r3, 0x1 - cmp r3, 0 - bne _0811A610 -_0811A63C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811A64C: .4byte gUnknown_8457034 - thumb_func_end sub_811A5E4 - - thumb_func_start sub_811A650 -sub_811A650: @ 811A650 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _0811A690 @ =gUnknown_8457034 - mov r12, r1 - movs r5, 0x2 - negs r5, r5 - mov r8, r5 - adds r2, r0, 0 - adds r2, 0x18 - adds r3, r0, 0 - movs r4, 0x3 -_0811A668: - adds r1, r3, 0 - mov r0, r12 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldrb r1, [r2] - mov r0, r8 - ands r0, r1 - strb r0, [r2] - adds r2, 0x1C - adds r3, 0x1C - subs r4, 0x1 - cmp r4, 0 - bge _0811A668 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811A690: .4byte gUnknown_8457034 - thumb_func_end sub_811A650 - - thumb_func_start sub_811A694 -sub_811A694: @ 811A694 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - movs r2, 0 - adds r4, r5, 0x2 - adds r3, r6, 0x2 -_0811A6A0: - adds r0, r4, r2 - adds r1, r3, r2 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bne _0811A6C8 - adds r2, 0x1 - cmp r2, 0x1 - ble _0811A6A0 - movs r2, 0 - adds r4, r5, 0 - adds r4, 0x10 - adds r3, r6, 0 - adds r3, 0x10 -_0811A6BC: - adds r0, r4, r2 - adds r1, r3, r2 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _0811A6CC -_0811A6C8: - movs r0, 0x1 - b _0811A6D4 -_0811A6CC: - adds r2, 0x1 - cmp r2, 0x7 - ble _0811A6BC - movs r0, 0 -_0811A6D4: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_811A694 - - thumb_func_start sub_811A6DC -sub_811A6DC: @ 811A6DC - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldrb r3, [r5, 0xA] - movs r0, 0x7F - ldrb r2, [r6, 0xA] - adds r1, r0, 0 - ands r1, r3 - ands r0, r2 - cmp r1, r0 - bne _0811A740 - movs r0, 0x80 - adds r1, r0, 0 - ands r1, r3 - ands r0, r2 - cmp r1, r0 - bne _0811A740 - movs r2, 0 - adds r4, r5, 0x4 - adds r3, r6, 0x4 -_0811A704: - adds r0, r4, r2 - adds r1, r3, r2 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bne _0811A740 - adds r2, 0x1 - cmp r2, 0x3 - ble _0811A704 - ldrh r2, [r5, 0x8] - ldr r0, _0811A73C @ =0x000003ff - ldrh r3, [r6, 0x8] - adds r1, r0, 0 - ands r1, r2 - ands r0, r3 - cmp r1, r0 - bne _0811A740 - ldrb r2, [r5, 0x9] - movs r0, 0xFC - ldrb r3, [r6, 0x9] - adds r1, r0, 0 - ands r1, r2 - ands r0, r3 - cmp r1, r0 - bne _0811A740 - movs r0, 0 - b _0811A742 - .align 2, 0 -_0811A73C: .4byte 0x000003ff -_0811A740: - movs r0, 0x1 -_0811A742: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_811A6DC - - thumb_func_start sub_811A748 -sub_811A748: @ 811A748 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - movs r7, 0xFF - movs r6, 0 - adds r4, r1, 0 - adds r4, 0x18 - adds r5, r1, 0 -_0811A75A: - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0811A782 - mov r0, r8 - adds r1, r5, 0 - bl sub_811A694 - lsls r0, 24 - cmp r0, 0 - bne _0811A782 - lsls r0, r6, 24 - lsrs r7, r0, 24 - ldrb r0, [r4] - movs r2, 0x2 - negs r2, r2 - adds r1, r2, 0 - ands r0, r1 - strb r0, [r4] -_0811A782: - adds r4, 0x1C - adds r5, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _0811A75A - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811A748 - - thumb_func_start sub_811A798 -sub_811A798: @ 811A798 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r3, r0, 0 - mov r8, r1 - lsls r2, 24 - lsrs r6, r2, 24 - ldrb r1, [r1, 0x18] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0811A80C - movs r5, 0 - cmp r5, r6 - bge _0811A80C - movs r0, 0x4 - negs r0, r0 - mov r9, r0 - movs r1, 0x2 - negs r1, r1 - mov r12, r1 - adds r2, r3, 0 - adds r2, 0x18 - adds r1, r3, 0 -_0811A7CA: - ldrb r0, [r2, 0x2] - movs r3, 0x3 - ands r3, r0 - cmp r3, 0 - bne _0811A802 - mov r0, r8 - ldm r0!, {r4,r6,r7} - stm r1!, {r4,r6,r7} - ldm r0!, {r4,r6,r7} - stm r1!, {r4,r6,r7} - strh r3, [r2] - ldrb r1, [r2, 0x2] - mov r0, r9 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x2] - movs r0, 0x40 - strb r0, [r2, 0x3] - mov r0, r8 - ldrb r1, [r0, 0x18] - mov r0, r12 - ands r0, r1 - mov r1, r8 - strb r0, [r1, 0x18] - lsls r0, r5, 24 - lsrs r0, 24 - b _0811A80E -_0811A802: - adds r2, 0x20 - adds r1, 0x20 - adds r5, 0x1 - cmp r5, r6 - blt _0811A7CA -_0811A80C: - movs r0, 0xFF -_0811A80E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811A798 - - thumb_func_start sub_811A81C -sub_811A81C: @ 811A81C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x30 - adds r4, r1, 0 - adds r5, r3, 0 - ldr r3, [sp, 0x50] - ldr r1, [sp, 0x54] - lsls r0, 24 - lsrs r7, r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _0811A904 @ =gStringVar4 - mov r8, r0 - adds r1, 0x1 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r1, _0811A908 @ =gUnknown_84571B0 - mov r0, r8 - bl StringAppend - str r6, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0 - mov r2, r8 - adds r3, r4, 0 - bl sub_811A444 - adds r4, 0x12 - lsls r4, 24 - lsrs r4, 24 - mov r9, r4 - ldrb r0, [r5, 0xA] - lsls r0, 25 - lsrs r2, r0, 25 - ldrb r1, [r5, 0x1A] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _0811A8F2 - movs r0, 0x40 - ands r2, r0 - cmp r2, 0 - bne _0811A8F2 - add r4, sp, 0x10 - adds r1, r5, 0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldrb r1, [r5] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - str r6, [sp] - mov r0, r10 - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0x2 - adds r2, r4, 0 - mov r3, r9 - bl sub_811A444 - ldrb r1, [r5, 0x2] - ldrb r0, [r5, 0x3] - lsls r0, 8 - orrs r1, r0 - add r0, sp, 0x8 - movs r2, 0x2 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - ldr r1, _0811A90C @ =gUnknown_84571B4 - mov r0, r8 - bl StringCopy - mov r0, r8 - add r1, sp, 0x8 - bl StringAppend - mov r3, r9 - adds r3, 0x4D - lsls r3, 24 - lsrs r3, 24 - str r6, [sp] - mov r0, r10 - str r0, [sp, 0x4] - adds r0, r7, 0 - movs r1, 0 - mov r2, r8 - bl sub_811A444 -_0811A8F2: - add sp, 0x30 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811A904: .4byte gStringVar4 -_0811A908: .4byte gUnknown_84571B0 -_0811A90C: .4byte gUnknown_84571B4 - thumb_func_end sub_811A81C - - thumb_func_start sub_811A910 -sub_811A910: @ 811A910 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x30 - adds r5, r3, 0 - ldr r3, [sp, 0x4C] - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - lsls r3, 24 - lsrs r7, r3, 24 - ldrb r1, [r5, 0x1A] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _0811A9A2 - add r4, sp, 0x10 - adds r1, r5, 0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldrb r1, [r5] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - mov r0, r8 - str r0, [sp] - str r7, [sp, 0x4] - mov r0, r9 - movs r1, 0x2 - adds r2, r4, 0 - adds r3, r6, 0 - bl sub_811A444 - ldrb r1, [r5, 0x2] - ldrb r0, [r5, 0x3] - lsls r0, 8 - orrs r1, r0 - add r0, sp, 0x8 - movs r2, 0x2 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - ldr r4, _0811A9B0 @ =gStringVar4 - ldr r1, _0811A9B4 @ =gUnknown_84571B4 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - add r1, sp, 0x8 - bl StringAppend - adds r3, r6, 0 - adds r3, 0x47 - lsls r3, 24 - lsrs r3, 24 - mov r0, r8 - str r0, [sp] - str r7, [sp, 0x4] - mov r0, r9 - movs r1, 0 - adds r2, r4, 0 - bl sub_811A444 -_0811A9A2: - add sp, 0x30 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811A9B0: .4byte gStringVar4 -_0811A9B4: .4byte gUnknown_84571B4 - thumb_func_end sub_811A910 - - thumb_func_start sub_811A9B8 -sub_811A9B8: @ 811A9B8 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x9 - bne _0811A9F0 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x8 - bne _0811A9F0 - ldr r0, _0811A9EC @ =gPlayerAvatar - ldrb r0, [r0, 0x3] - cmp r0, 0x2 - beq _0811A9E6 - cmp r0, 0 - bne _0811A9F0 -_0811A9E6: - movs r0, 0x1 - b _0811A9F2 - .align 2, 0 -_0811A9EC: .4byte gPlayerAvatar -_0811A9F0: - movs r0, 0 -_0811A9F2: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811A9B8 - - thumb_func_start sub_811A9FC -sub_811A9FC: @ 811A9FC - push {lr} - cmp r0, 0x4 - beq _0811AA14 - cmp r0, 0x4 - ble _0811AA1C - cmp r0, 0x5 - beq _0811AA10 - cmp r0, 0x8 - beq _0811AA18 - b _0811AA1C -_0811AA10: - movs r0, 0x1 - b _0811AA1E -_0811AA14: - movs r0, 0x2 - b _0811AA1E -_0811AA18: - movs r0, 0x3 - b _0811AA1E -_0811AA1C: - movs r0, 0 -_0811AA1E: - pop {r1} - bx r1 - thumb_func_end sub_811A9FC - - thumb_func_start sub_811AA24 -sub_811AA24: @ 811AA24 - push {r4,lr} - sub sp, 0x20 - adds r4, r0, 0 - adds r1, r4, 0 - adds r1, 0x10 - mov r0, sp - bl StringCopy - ldrb r1, [r4] - lsls r1, 28 - lsrs r1, 28 - mov r0, sp - bl ConvertInternationalString - adds r4, 0x2 - adds r0, r4, 0 - bl sub_8118658 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - bl sub_80FD338 - add sp, 0x20 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811AA24 - - thumb_func_start sub_811AA5C -sub_811AA5C: @ 811AA5C - push {r4-r7,lr} - adds r7, r3, 0 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 19 - adds r5, r0, r2 - ldrb r1, [r5, 0xA] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0811AAE4 - cmp r6, 0 - bne _0811AAE4 - ldr r4, _0811AAC4 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldrb r1, [r5] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - adds r0, r5, 0x2 - bl sub_8118658 - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl sub_80FD338 - adds r2, r0, 0 - ldrb r1, [r5, 0xA] - movs r0, 0x7F - ands r0, r1 - cmp r0, 0x45 - bne _0811AAD0 - ldr r0, _0811AAC8 @ =gStringVar4 - ldr r3, _0811AACC @ =gUnknown_8457F80 - lsls r1, r7, 2 - lsls r2, 3 - adds r1, r2 - adds r1, r3 - ldr r1, [r1] - bl StringExpandPlaceholders - movs r0, 0x2 - b _0811ABD2 - .align 2, 0 -_0811AAC4: .4byte gStringVar1 -_0811AAC8: .4byte gStringVar4 -_0811AACC: .4byte gUnknown_8457F80 -_0811AAD0: - ldr r0, _0811AAE0 @ =gUnknown_8457A34 - lsls r1, r2, 2 - adds r1, r0 - ldr r0, [r1] - bl sub_811A0B4 - movs r0, 0x1 - b _0811ABD2 - .align 2, 0 -_0811AAE0: .4byte gUnknown_8457A34 -_0811AAE4: - ldr r4, _0811AB24 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x10 - adds r0, r4, 0 - bl StringCopy - ldrb r1, [r5] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl ConvertInternationalString - cmp r6, 0 - beq _0811AB0A - adds r0, r5, r6 - ldrb r0, [r0, 0x3] - lsrs r7, r0, 3 - movs r0, 0x1 - ands r7, r0 -_0811AB0A: - ldrb r0, [r5, 0xA] - lsls r0, 25 - lsrs r0, 25 - movs r1, 0x3F - ands r1, r0 - cmp r1, 0x4 - beq _0811AB58 - cmp r1, 0x4 - bgt _0811AB28 - cmp r1, 0x1 - beq _0811AB32 - b _0811ABC8 - .align 2, 0 -_0811AB24: .4byte gStringVar1 -_0811AB28: - cmp r1, 0x5 - beq _0811AB78 - cmp r1, 0x8 - beq _0811AB9C - b _0811ABC8 -_0811AB32: - ldr r5, _0811AB50 @ =gStringVar4 - ldr r4, _0811AB54 @ =gUnknown_8458758 - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 14 - lsls r0, r7, 4 - adds r1, r0 - adds r1, r4 - ldr r1, [r1] - b _0811ABB6 - .align 2, 0 -_0811AB50: .4byte gStringVar4 -_0811AB54: .4byte gUnknown_8458758 -_0811AB58: - ldr r5, _0811AB70 @ =gStringVar4 - ldr r4, _0811AB74 @ =gUnknown_8458A78 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - lsls r1, r7, 4 - b _0811ABB0 - .align 2, 0 -_0811AB70: .4byte gStringVar4 -_0811AB74: .4byte gUnknown_8458A78 -_0811AB78: - ldr r5, _0811AB94 @ =gStringVar4 - ldr r4, _0811AB98 @ =gUnknown_84588BC - bl Random - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 14 - lsls r0, r7, 4 - adds r1, r0 - adds r1, r4 - ldr r1, [r1] - b _0811ABB6 - .align 2, 0 -_0811AB94: .4byte gStringVar4 -_0811AB98: .4byte gUnknown_84588BC -_0811AB9C: - ldr r5, _0811ABC0 @ =gStringVar4 - ldr r4, _0811ABC4 @ =gUnknown_84589AC - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - lsls r0, 2 - lsls r1, r7, 3 -_0811ABB0: - adds r0, r1 - adds r0, r4 - ldr r1, [r0] -_0811ABB6: - adds r0, r5, 0 - bl StringExpandPlaceholders - b _0811ABD0 - .align 2, 0 -_0811ABC0: .4byte gStringVar4 -_0811ABC4: .4byte gUnknown_84589AC -_0811ABC8: - ldr r0, _0811ABD8 @ =gStringVar4 - ldr r1, _0811ABDC @ =gUnknown_8457F90 - bl StringExpandPlaceholders -_0811ABD0: - movs r0, 0 -_0811ABD2: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811ABD8: .4byte gStringVar4 -_0811ABDC: .4byte gUnknown_8457F90 - thumb_func_end sub_811AA5C - - thumb_func_start nullsub_92 -nullsub_92: @ 811ABE0 - bx lr - thumb_func_end nullsub_92 - - thumb_func_start sub_811ABE4 -sub_811ABE4: @ 811ABE4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - ldr r4, [sp, 0x28] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r4, 24 - lsrs r4, 24 - ldrh r0, [r2, 0x8] - lsls r0, 22 - lsrs r0, 22 - mov r8, r0 - ldrb r0, [r2, 0x9] - lsrs r7, r0, 2 - ldrb r0, [r2, 0xB] - lsrs r0, 1 - mov r9, r0 - str r5, [sp] - str r4, [sp, 0x4] - adds r0, r6, 0 - movs r1, 0x2 - adds r2, r3, 0 - movs r3, 0x8 - bl sub_811A444 - movs r0, 0xCE - lsls r0, 1 - cmp r8, r0 - bne _0811AC3C - ldr r2, _0811AC38 @ =gUnknown_8458FBC - str r5, [sp] - str r4, [sp, 0x4] - adds r0, r6, 0 - movs r1, 0x2 - movs r3, 0x44 - bl sub_811A444 - b _0811AC90 - .align 2, 0 -_0811AC38: .4byte gUnknown_8458FBC -_0811AC3C: - adds r1, r7, 0x1 - adds r0, r6, 0 - movs r2, 0x44 - adds r3, r5, 0 - bl BlitMoveInfoIcon - movs r0, 0xB - mov r2, r8 - muls r2, r0 - ldr r0, _0811ACA0 @ =gSpeciesNames - adds r2, r0 - str r5, [sp] - str r4, [sp, 0x4] - adds r0, r6, 0 - movs r1, 0x2 - movs r3, 0x76 - bl sub_811A444 - add r0, sp, 0x8 - mov r1, r9 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r0, 0x2 - add r1, sp, 0x8 - movs r2, 0 - bl GetStringWidth - lsls r0, 16 - lsrs r0, 16 - movs r3, 0xDA - subs r3, r0 - lsls r3, 24 - lsrs r3, 24 - str r5, [sp] - str r4, [sp, 0x4] - adds r0, r6, 0 - movs r1, 0x2 - add r2, sp, 0x8 - bl sub_811A444 -_0811AC90: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0811ACA0: .4byte gSpeciesNames - thumb_func_end sub_811ABE4 - - thumb_func_start sub_811ACA4 -sub_811ACA4: @ 811ACA4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - ldr r0, _0811ACF8 @ =gUnknown_203B05C - ldr r6, [r0] - movs r0, 0x3 - negs r0, r0 - cmp r4, r0 - bne _0811AD38 - ldr r0, _0811ACFC @ =gUnknown_8456F7C - ldrb r0, [r0, 0x14] - lsls r0, 28 - lsrs r0, 28 - cmp r8, r0 - bne _0811AD38 - bl sub_80F9800 - adds r2, r0, 0 - ldrh r1, [r2, 0x8] - ldr r0, _0811AD00 @ =0x000003ff - ands r0, r1 - cmp r0, 0 - beq _0811AD6C - ldr r0, _0811AD04 @ =gSaveBlock2Ptr - ldr r3, [r0] - movs r0, 0x5 - str r0, [sp] - mov r0, r9 - mov r1, r8 - bl sub_811ABE4 - b _0811AD6C - .align 2, 0 -_0811ACF8: .4byte gUnknown_203B05C -_0811ACFC: .4byte gUnknown_8456F7C -_0811AD00: .4byte 0x000003ff -_0811AD04: .4byte gSaveBlock2Ptr -_0811AD08: - mov r0, r12 - adds r1, r0, r4 - adds r1, 0x10 - add r0, sp, 0x4 - bl StringCopy - ldr r0, [r6] - adds r0, r4 - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - add r0, sp, 0x4 - bl ConvertInternationalString - ldr r2, [r6] - adds r2, r4 - movs r0, 0x6 - str r0, [sp] - mov r0, r9 - mov r1, r8 - add r3, sp, 0x4 - bl sub_811ABE4 - b _0811AD6C -_0811AD38: - movs r5, 0 - movs r1, 0 - ldr r0, [r6] - mov r12, r0 - mov r2, r12 - adds r2, 0x8 - movs r3, 0 - adds r7, r4, 0x1 -_0811AD48: - ldrb r0, [r2, 0x12] - lsls r0, 30 - lsrs r0, 30 - adds r4, r3, 0 - cmp r0, 0x1 - bne _0811AD5E - ldrh r0, [r2] - lsls r0, 22 - cmp r0, 0 - beq _0811AD5E - adds r5, 0x1 -_0811AD5E: - cmp r5, r7 - beq _0811AD08 - adds r2, 0x20 - adds r3, 0x20 - adds r1, 0x1 - cmp r1, 0x7 - ble _0811AD48 -_0811AD6C: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_811ACA4 - - thumb_func_start sub_811AD7C -sub_811AD7C: @ 811AD7C - push {r4-r7,lr} - movs r4, 0 - movs r3, 0 - movs r7, 0x3 - ldr r6, _0811ADAC @ =0x000003ff - adds r2, r0, 0 - adds r2, 0x8 - adds r5, r1, 0x1 -_0811AD8C: - ldrb r1, [r2, 0x12] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0x1 - bne _0811ADA2 - ldrh r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0811ADA2 - adds r4, 0x1 -_0811ADA2: - cmp r4, r5 - bne _0811ADB0 - adds r0, r3, 0 - b _0811ADBC - .align 2, 0 -_0811ADAC: .4byte 0x000003ff -_0811ADB0: - adds r2, 0x20 - adds r3, 0x1 - cmp r3, 0x7 - ble _0811AD8C - movs r0, 0x1 - negs r0, r0 -_0811ADBC: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_811AD7C - - thumb_func_start sub_811ADC4 -sub_811ADC4: @ 811ADC4 - lsls r0, 5 - adds r0, r1 - ldrb r0, [r0, 0xB] - lsls r0, 31 - lsrs r0, 31 - bx lr - thumb_func_end sub_811ADC4 - - thumb_func_start sub_811ADD0 -sub_811ADD0: @ 811ADD0 - push {r4-r6,lr} - adds r5, r0, 0 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bne _0811AE10 - movs r4, 0 - b _0811ADFA -_0811ADE0: - movs r0, 0x64 - muls r0, r4 - ldr r1, _0811AE08 @ =gPlayerParty - adds r0, r1 - movs r1, 0x41 - bl GetMonData - adds r1, r0, 0 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _0811AE40 - adds r4, 0x1 -_0811ADFA: - ldr r0, _0811AE0C @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r4, r0 - blt _0811ADE0 - movs r0, 0x2 - b _0811AE5C - .align 2, 0 -_0811AE08: .4byte gPlayerParty -_0811AE0C: .4byte gPlayerPartyCount -_0811AE10: - movs r4, 0 - ldr r0, _0811AE44 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r4, r0 - bge _0811AE5A - ldr r6, _0811AE48 @ =gBaseStats -_0811AE1C: - movs r0, 0x64 - muls r0, r4 - ldr r1, _0811AE4C @ =gPlayerParty - adds r0, r1 - movs r1, 0x41 - bl GetMonData - adds r1, r0, 0 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r1, r0, r6 - ldrb r0, [r1, 0x6] - cmp r0, r5 - beq _0811AE40 - ldrb r0, [r1, 0x7] - cmp r0, r5 - bne _0811AE50 -_0811AE40: - movs r0, 0 - b _0811AE5C - .align 2, 0 -_0811AE44: .4byte gPlayerPartyCount -_0811AE48: .4byte gBaseStats -_0811AE4C: .4byte gPlayerParty -_0811AE50: - adds r4, 0x1 - ldr r0, _0811AE64 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r4, r0 - blt _0811AE1C -_0811AE5A: - movs r0, 0x1 -_0811AE5C: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0811AE64: .4byte gPlayerPartyCount - thumb_func_end sub_811ADD0 - - thumb_func_start sub_811AE68 -sub_811AE68: @ 811AE68 - push {lr} - adds r3, r0, 0 - cmp r1, 0x44 - beq _0811AEA4 - cmp r1, 0x44 - bgt _0811AE7A - cmp r1, 0x41 - beq _0811AE84 - b _0811AEC2 -_0811AE7A: - cmp r1, 0x45 - beq _0811AE94 - cmp r1, 0x48 - beq _0811AEB4 - b _0811AEC2 -_0811AE84: - ldr r0, _0811AE90 @ =gUnknown_8458314 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - b _0811AEA6 - .align 2, 0 -_0811AE90: .4byte gUnknown_8458314 -_0811AE94: - ldr r0, _0811AEA0 @ =gUnknown_84585E8 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - b _0811AEA6 - .align 2, 0 -_0811AEA0: .4byte gUnknown_84585E8 -_0811AEA4: - ldr r1, _0811AEB0 @ =gUnknown_8458F9C -_0811AEA6: - adds r0, r3, 0 - bl StringExpandPlaceholders - b _0811AEC2 - .align 2, 0 -_0811AEB0: .4byte gUnknown_8458F9C -_0811AEB4: - ldr r0, _0811AEC8 @ =gUnknown_84583B4 - lsls r1, r2, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r3, 0 - bl StringExpandPlaceholders -_0811AEC2: - pop {r0} - bx r0 - .align 2, 0 -_0811AEC8: .4byte gUnknown_84583B4 - thumb_func_end sub_811AE68 - - thumb_func_start sub_811AECC -sub_811AECC: @ 811AECC - push {r4-r6,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - adds r6, r4, 0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _0811AF00 @ =gLinkPlayers - movs r0, 0x1 - adds r1, r3, 0 - eors r1, r0 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x13] - cmp r4, 0x44 - beq _0811AF20 - cmp r4, 0x44 - bgt _0811AF04 - cmp r4, 0x41 - beq _0811AF0A - b _0811AF60 - .align 2, 0 -_0811AF00: .4byte gLinkPlayers -_0811AF04: - cmp r6, 0x45 - beq _0811AF44 - b _0811AF60 -_0811AF0A: - ldr r2, _0811AF1C @ =gUnknown_8458230 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 3 - adds r1, r0 - b _0811AF32 - .align 2, 0 -_0811AF1C: .4byte gUnknown_8458230 -_0811AF20: - ldr r2, _0811AF40 @ =gUnknown_8458230 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 3 - adds r1, r0 - adds r2, 0x8 -_0811AF32: - adds r1, r2 - ldr r1, [r1] - adds r0, r5, 0 - bl StringCopy - b _0811AF60 - .align 2, 0 -_0811AF40: .4byte gUnknown_8458230 -_0811AF44: - ldr r2, _0811AF68 @ =gUnknown_8458230 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 3 - adds r1, r0 - adds r2, 0x4 - adds r1, r2 - ldr r1, [r1] - adds r0, r5, 0 - bl StringCopy -_0811AF60: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811AF68: .4byte gUnknown_8458230 - thumb_func_end sub_811AECC - - thumb_func_start sub_811AF6C -sub_811AF6C: @ 811AF6C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - adds r5, r2, 0 - adds r6, r3, 0 - movs r2, 0 - mov r8, r2 - ldrh r0, [r5] - subs r0, 0x40 - cmp r0, 0x8 - bls _0811AF86 - b _0811B092 -_0811AF86: - lsls r0, 2 - ldr r1, _0811AF90 @ =_0811AF94 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811AF90: .4byte _0811AF94 - .align 2, 0 -_0811AF94: - .4byte _0811B088 - .4byte _0811AFB8 - .4byte _0811B092 - .4byte _0811B092 - .4byte _0811AFC8 - .4byte _0811AFC0 - .4byte _0811B092 - .4byte _0811B092 - .4byte _0811B078 -_0811AFB8: - ldr r1, _0811AFBC @ =gUnknown_8457CA4 - b _0811B07A - .align 2, 0 -_0811AFBC: .4byte gUnknown_8457CA4 -_0811AFC0: - ldr r1, _0811AFC4 @ =gUnknown_8457CF8 - b _0811B07A - .align 2, 0 -_0811AFC4: .4byte gUnknown_8457CF8 -_0811AFC8: - adds r0, r6, 0 - adds r0, 0x58 - ldr r4, _0811AFF0 @ =gUnknown_203B06C - ldrh r1, [r4, 0xC] - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - adds r0, r6, 0 - adds r0, 0x63 - ldrh r2, [r4, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, _0811AFF4 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - movs r4, 0 - b _0811AFFA - .align 2, 0 -_0811AFF0: .4byte gUnknown_203B06C -_0811AFF4: .4byte gSpeciesNames -_0811AFF8: - adds r4, 0x1 -_0811AFFA: - cmp r4, 0x3 - bgt _0811B030 - ldr r0, _0811B044 @ =gRfuLinkStatus - ldr r0, [r0] - lsls r1, r4, 5 - adds r0, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bne _0811AFF8 - ldrh r1, [r5, 0x4] - adds r0, r6, 0 - adds r0, 0x6E - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldrh r1, [r5, 0x2] - movs r0, 0xB - muls r1, r0 - ldr r0, _0811B048 @ =gSpeciesNames - adds r1, r0 - adds r0, r6, 0 - adds r0, 0x79 - bl StringCopy - ldrh r5, [r5, 0x2] - mov r8, r5 -_0811B030: - movs r0, 0xCE - lsls r0, 1 - cmp r8, r0 - bne _0811B050 - ldr r1, _0811B04C @ =gUnknown_8457DB8 - adds r0, r7, 0 - bl StringCopy - b _0811B080 - .align 2, 0 -_0811B044: .4byte gRfuLinkStatus -_0811B048: .4byte gSpeciesNames -_0811B04C: .4byte gUnknown_8457DB8 -_0811B050: - movs r4, 0 - adds r5, r6, 0 - adds r5, 0x58 -_0811B056: - lsls r0, r4, 24 - lsrs r0, 24 - adds r1, r5, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - adds r5, 0xB - adds r4, 0x1 - cmp r4, 0x3 - ble _0811B056 - ldr r1, _0811B074 @ =gUnknown_8457D44 - adds r0, r7, 0 - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - b _0811B080 - .align 2, 0 -_0811B074: .4byte gUnknown_8457D44 -_0811B078: - ldr r1, _0811B084 @ =gUnknown_8457C48 -_0811B07A: - adds r0, r7, 0 - bl StringExpandPlaceholders -_0811B080: - movs r2, 0x1 - b _0811B092 - .align 2, 0 -_0811B084: .4byte gUnknown_8457C48 -_0811B088: - ldr r1, _0811B0A0 @ =gUnknown_8457E0C - adds r0, r7, 0 - bl StringExpandPlaceholders - movs r2, 0x2 -_0811B092: - adds r0, r2, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B0A0: .4byte gUnknown_8457E0C - thumb_func_end sub_811AF6C - - thumb_func_start sub_811B0A4 -sub_811B0A4: @ 811B0A4 - push {lr} - adds r2, r0, 0 - ldr r0, _0811B0C4 @ =gRecvCmds - ldrh r1, [r0, 0x2] - cmp r1, 0 - beq _0811B0C8 - cmp r1, 0x51 - beq _0811B0B8 - cmp r1, 0x52 - bne _0811B0C8 -_0811B0B8: - adds r0, r2, 0 - adds r0, 0x84 - strh r1, [r0] - movs r0, 0x1 - b _0811B0CA - .align 2, 0 -_0811B0C4: .4byte gRecvCmds -_0811B0C8: - movs r0, 0 -_0811B0CA: - pop {r1} - bx r1 - thumb_func_end sub_811B0A4 - - thumb_func_start InUnionRoom -InUnionRoom: @ 811B0D0 - push {lr} - movs r2, 0 - ldr r0, _0811B0EC @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _0811B0E4 - movs r2, 0x1 -_0811B0E4: - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 -_0811B0EC: .4byte gSaveBlock1Ptr - thumb_func_end InUnionRoom - - thumb_func_start sub_811B0F0 -sub_811B0F0: @ 811B0F0 - push {r4-r6,lr} - movs r6, 0 - movs r5, 0 - ldr r0, _0811B138 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r6, r0 - bge _0811B130 -_0811B0FE: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0811B13C @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x1E - bhi _0811B126 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - beq _0811B126 - adds r6, 0x1 -_0811B126: - adds r5, 0x1 - ldr r0, _0811B138 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r5, r0 - blt _0811B0FE -_0811B130: - cmp r6, 0x1 - bgt _0811B140 - movs r0, 0 - b _0811B142 - .align 2, 0 -_0811B138: .4byte gPlayerPartyCount -_0811B13C: .4byte gPlayerParty -_0811B140: - movs r0, 0x1 -_0811B142: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_811B0F0 - - thumb_func_start sub_811B148 -sub_811B148: @ 811B148 - movs r1, 0 - strh r1, [r0] - strh r1, [r0, 0x2] - str r1, [r0, 0x4] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - str r1, [r0, 0x14] - bx lr - thumb_func_end sub_811B148 - - thumb_func_start Script_ResetUnionRoomTrade -Script_ResetUnionRoomTrade: @ 811B15C - push {lr} - ldr r0, _0811B168 @ =gUnknown_203B06C - bl sub_811B148 - pop {r0} - bx r0 - .align 2, 0 -_0811B168: .4byte gUnknown_203B06C - thumb_func_end Script_ResetUnionRoomTrade - - thumb_func_start sub_811B16C -sub_811B16C: @ 811B16C - push {r4,r5,lr} - adds r5, r1, 0 - movs r1, 0x64 - adds r4, r0, 0 - muls r4, r1 - ldr r0, _0811B1A8 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - strh r0, [r5, 0xA] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - strh r0, [r5, 0xC] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [r5, 0x4] - ldrh r1, [r5, 0xA] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _0811B1AC - movs r0, 0 - b _0811B1AE - .align 2, 0 -_0811B1A8: .4byte gPlayerParty -_0811B1AC: - movs r0, 0x1 -_0811B1AE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_811B16C - - thumb_func_start sub_811B1B4 -sub_811B1B4: @ 811B1B4 - push {r4,r5,lr} - adds r5, r1, 0 - movs r1, 0x64 - adds r4, r0, 0 - muls r4, r1 - ldr r0, _0811B1E8 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - strh r0, [r5, 0xE] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - strh r0, [r5, 0x10] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [r5, 0x14] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0811B1E8: .4byte gPlayerParty - thumb_func_end sub_811B1B4 - - thumb_func_start sub_811B1EC -sub_811B1EC: @ 811B1EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r1, 24 - movs r2, 0 - mov r8, r2 - cmp r1, 0 - bne _0811B20A - ldrh r7, [r0, 0xA] - ldr r6, [r0, 0x4] - b _0811B20E -_0811B202: - lsls r0, r5, 16 - lsrs r0, 16 - mov r8, r0 - b _0811B242 -_0811B20A: - ldrh r7, [r0, 0xE] - ldr r6, [r0, 0x14] -_0811B20E: - movs r5, 0 - b _0811B23A -_0811B212: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0811B250 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - cmp r0, r6 - bne _0811B238 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, r7 - beq _0811B202 -_0811B238: - adds r5, 0x1 -_0811B23A: - ldr r0, _0811B254 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r5, r0 - blt _0811B212 -_0811B242: - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0811B250: .4byte gPlayerParty -_0811B254: .4byte gPlayerPartyCount - thumb_func_end sub_811B1EC - - thumb_func_start sub_811B258 -sub_811B258: @ 811B258 - push {r4,lr} - adds r4, r0, 0 - bl sub_811A3F8 - bl ScriptContext2_Disable - bl sub_80696F0 - ldr r1, _0811B290 @ =gUnknown_203B058 - movs r0, 0 - strb r0, [r1] - cmp r4, 0 - beq _0811B288 - ldr r2, _0811B294 @ =gUnknown_203B06C - ldrh r0, [r2, 0x2] - ldrh r1, [r2, 0xA] - ldrh r2, [r2, 0xC] - bl sub_80FAFA0 - movs r0, 0x40 - movs r1, 0 - movs r2, 0 - bl sub_80FB008 -_0811B288: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0811B290: .4byte gUnknown_203B058 -_0811B294: .4byte gUnknown_203B06C - thumb_func_end sub_811B258 - - thumb_func_start sub_811B298 -sub_811B298: @ 811B298 - push {lr} - bl ScriptContext2_Enable - bl ScriptFreezeObjectEvents - pop {r0} - bx r0 - thumb_func_end sub_811B298 - - thumb_func_start sub_811B2A8 -sub_811B2A8: @ 811B2A8 - push {r4,lr} - movs r4, 0x80 - ldr r3, _0811B2D4 @ =gLinkPlayers - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r0, r1, r3 - ldrb r2, [r0, 0x13] - lsls r2, 3 - orrs r2, r4 - adds r3, 0x4 - adds r1, r3 - ldr r0, [r1] - movs r1, 0x7 - ands r0, r1 - orrs r0, r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0811B2D4: .4byte gLinkPlayers - thumb_func_end sub_811B2A8 - - thumb_func_start sub_811B2D8 -sub_811B2D8: @ 811B2D8 - push {r4,lr} - movs r3, 0x80 - movs r2, 0 - ldr r4, [r0, 0xC] -_0811B2E0: - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r1, r4, r0 - ldrb r0, [r1, 0x18] - lsls r0, 31 - cmp r0, 0 - beq _0811B308 - ldrb r0, [r1, 0xB] - lsls r0, 31 - lsrs r0, 31 - lsls r0, 3 - orrs r3, r0 - ldrb r1, [r1, 0x2] - movs r0, 0x7 - ands r0, r1 - orrs r3, r0 - lsls r0, r3, 24 - lsrs r3, r0, 24 - b _0811B312 -_0811B308: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _0811B2E0 -_0811B312: - adds r0, r3, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_811B2D8 - - thumb_func_start sub_811B31C -sub_811B31C: @ 811B31C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 5 - ldr r0, _0811B4B0 @ =gTrainerCards - adds r1, r0 - mov r8, r1 - bl DynamicPlaceholderTextUtil_Reset - mov r6, r9 - adds r6, 0xAC - bl sub_80447F0 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xD - muls r1, r0 - ldr r0, _0811B4B4 @ =gTrainerClassNames - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - movs r0, 0 - adds r1, r6, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - mov r1, r8 - adds r1, 0x30 - movs r0, 0x1 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - movs r4, 0xB0 - lsls r4, 1 - add r4, r9 - ldr r1, _0811B4B8 @ =gUnknown_84594B0 - mov r2, r8 - ldrb r0, [r2, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - movs r0, 0x2 - adds r1, r4, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - mov r5, r9 - adds r5, 0xCA - mov r0, r8 - ldrh r1, [r0, 0xC] - adds r0, r5, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r0, 0x3 - adds r1, r5, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - movs r2, 0xD9 - add r2, r9 - mov r10, r2 - mov r0, r8 - ldrh r1, [r0, 0x10] - mov r0, r10 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r4, r9 - adds r4, 0xE8 - mov r2, r8 - ldrh r1, [r2, 0x12] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - movs r0, 0x4 - mov r1, r10 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - movs r0, 0x5 - adds r1, r4, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - movs r4, 0xC8 - lsls r4, 1 - add r4, r9 - ldr r1, _0811B4BC @ =gUnknown_84594C4 - adds r0, r4, 0 - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - ldr r0, _0811B4C0 @ =gStringVar4 - adds r1, r4, 0 - bl StringCopy - mov r0, r8 - ldrh r1, [r0, 0x14] - ldr r4, _0811B4C4 @ =0x0000270f - cmp r1, r4 - ble _0811B40A - adds r1, r4, 0 -_0811B40A: - adds r0, r6, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - movs r0, 0 - adds r1, r6, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - mov r2, r8 - ldrh r1, [r2, 0x16] - cmp r1, r4 - ble _0811B426 - adds r1, r4, 0 -_0811B426: - mov r4, r9 - adds r4, 0xBB - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - movs r0, 0x2 - adds r1, r4, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - mov r0, r8 - ldrh r1, [r0, 0x20] - adds r0, r5, 0 - movs r2, 0 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - movs r0, 0x3 - adds r1, r5, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - movs r7, 0 - movs r6, 0x80 - lsls r6, 19 - mov r5, r8 - adds r5, 0x28 - mov r4, r10 -_0811B45E: - ldrh r1, [r5] - adds r0, r4, 0 - bl CopyEasyChatWord - lsrs r0, r6, 24 - adds r1, r4, 0 - bl DynamicPlaceholderTextUtil_SetPlaceholderPtr - movs r2, 0x80 - lsls r2, 17 - adds r6, r2 - adds r5, 0x2 - adds r4, 0xF - adds r7, 0x1 - cmp r7, 0x3 - ble _0811B45E - movs r4, 0xC8 - lsls r4, 1 - add r4, r9 - ldr r1, _0811B4C8 @ =gUnknown_8459504 - adds r0, r4, 0 - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - ldr r5, _0811B4C0 @ =gStringVar4 - adds r0, r5, 0 - adds r1, r4, 0 - bl StringAppend - ldr r0, [sp] - cmp r0, 0x1 - bne _0811B4D0 - ldr r1, _0811B4CC @ =gUnknown_8459588 - adds r0, r4, 0 - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - adds r0, r5, 0 - adds r1, r4, 0 - bl StringAppend - b _0811B4F0 - .align 2, 0 -_0811B4B0: .4byte gTrainerCards -_0811B4B4: .4byte gTrainerClassNames -_0811B4B8: .4byte gUnknown_84594B0 -_0811B4BC: .4byte gUnknown_84594C4 -_0811B4C0: .4byte gStringVar4 -_0811B4C4: .4byte 0x0000270f -_0811B4C8: .4byte gUnknown_8459504 -_0811B4CC: .4byte gUnknown_8459588 -_0811B4D0: - ldr r2, [sp] - cmp r2, 0 - bne _0811B4F0 - ldr r0, _0811B500 @ =gUnknown_8459580 - mov r2, r8 - ldrb r1, [r2] - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r4, 0 - bl DynamicPlaceholderTextUtil_ExpandPlaceholders - adds r0, r5, 0 - adds r1, r4, 0 - bl StringAppend -_0811B4F0: - 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 -_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.s b/asm/union_room.s new file mode 100644 index 000000000..e054a98ad --- /dev/null +++ b/asm/union_room.s @@ -0,0 +1,13203 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_811586C +sub_811586C: @ 811586C + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r1, 0 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r5, r2, 24 + adds r0, r6, 0 + movs r1, 0x11 + bl FillWindowPixelBuffer + lsls r4, 8 + movs r0, 0x80 + lsls r0, 3 + cmp r4, r0 + beq _081158BC + cmp r4, r0 + bgt _0811589E + movs r0, 0x80 + lsls r0, 2 + cmp r4, r0 + beq _081158B0 + b _0811590E +_0811589E: + movs r0, 0x94 + lsls r0, 6 + cmp r4, r0 + beq _081158CC + movs r0, 0xD4 + lsls r0, 6 + cmp r4, r0 + beq _081158F0 + b _0811590E +_081158B0: + ldr r1, _081158B8 @ =gUnknown_845742C + subs r0, r5, 0x1 + lsls r0, 2 + b _081158D4 + .align 2, 0 +_081158B8: .4byte gUnknown_845742C +_081158BC: + ldr r1, _081158C8 @ =gUnknown_845742C + subs r0, r5, 0x1 + lsls r0, 2 + adds r1, 0x14 + b _081158D4 + .align 2, 0 +_081158C8: .4byte gUnknown_845742C +_081158CC: + ldr r1, _081158EC @ =gUnknown_845742C + subs r0, r5, 0x1 + lsls r0, 2 + adds r1, 0x28 +_081158D4: + adds r0, r1 + ldr r2, [r0] + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_811A444 + b _0811590E + .align 2, 0 +_081158EC: .4byte gUnknown_845742C +_081158F0: + ldr r1, _08115920 @ =gUnknown_845742C + subs r0, r5, 0x1 + lsls r0, 2 + adds r1, 0x3C + adds r0, r1 + ldr r2, [r0] + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_811A444 +_0811590E: + adds r0, r6, 0 + movs r1, 0x2 + bl CopyWindowToVram + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08115920: .4byte gUnknown_845742C + thumb_func_end sub_811586C + + thumb_func_start sub_8115924 +sub_8115924: @ 8115924 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x20 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r6, _08115994 @ =gSaveBlock2Ptr + ldr r2, [r6] + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + mov r8, r0 + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r1, 0x2 + movs r3, 0 + bl sub_811A444 + add r5, sp, 0x14 + ldr r1, _08115998 @ =gUnknown_84571B4 + adds r0, r5, 0 + bl StringCopy + ldr r0, [r6] + adds r0, 0xA + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + add r0, sp, 0x8 + movs r2, 0x2 + movs r3, 0x5 + bl ConvertIntToDecimalStringN + adds r0, r5, 0 + add r1, sp, 0x8 + bl StringAppend + movs r0, 0x10 + str r0, [sp] + mov r0, r8 + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_811A444 + add sp, 0x20 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08115994: .4byte gSaveBlock2Ptr +_08115998: .4byte gUnknown_84571B4 + thumb_func_end sub_8115924 + + thumb_func_start sub_811599C +sub_811599C: @ 811599C + push {lr} + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x15 + bhi _08115A18 + lsls r0, 2 + ldr r1, _081159B4 @ =_081159B8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081159B4: .4byte _081159B8 + .align 2, 0 +_081159B8: + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A10 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A18 + .4byte _08115A10 + .4byte _08115A10 +_08115A10: + ldr r0, _08115A1C @ =gStringVar4 + ldr r1, _08115A20 @ =gUnknown_8457234 + bl StringExpandPlaceholders +_08115A18: + pop {r0} + bx r0 + .align 2, 0 +_08115A1C: .4byte gStringVar4 +_08115A20: .4byte gUnknown_8457234 + thumb_func_end sub_811599C + + thumb_func_start TryBecomeLinkLeader +TryBecomeLinkLeader: @ 8115A24 + push {lr} + ldr r0, _08115A54 @ =sub_8115A68 + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08115A58 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08115A5C @ =gTasks+0x8 + adds r1, r0 + str r1, [r2] + ldr r0, _08115A60 @ =gUnknown_3002024 + str r1, [r0] + movs r0, 0 + strb r0, [r1, 0xC] + strb r0, [r1, 0xD] + ldr r1, _08115A64 @ =gSpecialVar_Result + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08115A54: .4byte sub_8115A68 +_08115A58: .4byte gUnknown_203B05C +_08115A5C: .4byte gTasks+0x8 +_08115A60: .4byte gUnknown_3002024 +_08115A64: .4byte gSpecialVar_Result + thumb_func_end TryBecomeLinkLeader + + thumb_func_start sub_8115A68 +sub_8115A68: @ 8115A68 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08115A88 @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0xC] + cmp r0, 0x1E + bls _08115A7C + b _081161D8 +_08115A7C: + lsls r0, 2 + ldr r1, _08115A8C @ =_08115A90 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08115A88: .4byte gUnknown_203B05C +_08115A8C: .4byte _08115A90 + .align 2, 0 +_08115A90: + .4byte _08115B0C + .4byte _081161D8 + .4byte _081161D8 + .4byte _08115B5C + .4byte _08115C60 + .4byte _08115CE8 + .4byte _08115D04 + .4byte _08115E24 + .4byte _081161D8 + .4byte _08115D94 + .4byte _08115DAC + .4byte _08115E40 + .4byte _08115EF4 + .4byte _0811600A + .4byte _08116028 + .4byte _0811603A + .4byte _08116058 + .4byte _08116112 + .4byte _08116128 + .4byte _081160A2 + .4byte _081160C0 + .4byte _08116168 + .4byte _08116194 + .4byte _08116168 + .4byte _0811617E + .4byte _081161D8 + .4byte _081161AC + .4byte _081161D8 + .4byte _081161D8 + .4byte _08115DEC + .4byte _0811614C +_08115B0C: + ldr r3, _08115B4C @ =gUnknown_203B058 + ldr r2, _08115B50 @ =gUnknown_8456CD8 + ldr r1, _08115B54 @ =gSpecialVar_0x8004 + ldrh r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + strb r0, [r3] + ldr r4, _08115B58 @ =gUnknown_203B059 + ldrh r0, [r1] + lsls r0, 2 + adds r0, r2 + ldr r0, [r0] + lsrs r0, 8 + strb r0, [r4] + ldrb r0, [r3] + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl OpenLink + ldrb r1, [r4] + movs r0, 0xF + ands r0, r1 + bl sub_80FBB8C + movs r0, 0x3 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115B4C: .4byte gUnknown_203B058 +_08115B50: .4byte gUnknown_8456CD8 +_08115B54: .4byte gSpecialVar_0x8004 +_08115B58: .4byte gUnknown_203B059 +_08115B5C: + movs r0, 0x70 + bl AllocZeroed + str r0, [r5, 0x4] + movs r0, 0xA0 + bl AllocZeroed + str r0, [r5] + movs r0, 0xA0 + bl AllocZeroed + str r0, [r5, 0x8] + ldr r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r5] + movs r1, 0x5 + bl sub_811A5E4 + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0x10 + bl sub_80FCD50 + ldr r1, [r5] + movs r3, 0 + movs r0, 0 + strh r0, [r1, 0x18] + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + subs r0, 0x4 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1A] + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x1A] + ldr r0, [r5] + strb r3, [r0, 0x1B] + ldr r0, [r5, 0x4] + movs r1, 0xFF + bl sub_811A054 + strb r0, [r5, 0x17] + ldr r0, _08115C48 @ =gUnknown_8456CD0 + bl AddWindow + strb r0, [r5, 0x10] + ldr r0, _08115C4C @ =gUnknown_8456CFC + bl AddWindow + strb r0, [r5, 0xF] + ldr r0, _08115C50 @ =gUnknown_8456D04 + bl AddWindow + strb r0, [r5, 0x11] + ldrb r0, [r5, 0x10] + movs r1, 0x22 + bl FillWindowPixelBuffer + ldrb r0, [r5, 0x10] + ldr r2, _08115C54 @ =gUnknown_845747C + movs r1, 0x2 + str r1, [sp] + movs r4, 0x4 + str r4, [sp, 0x4] + movs r1, 0 + movs r3, 0x8 + bl sub_811A444 + ldrb r0, [r5, 0x10] + bl PutWindowTilemap + ldrb r0, [r5, 0x10] + movs r1, 0x2 + bl CopyWindowToVram + ldrb r0, [r5, 0xF] + movs r1, 0 + bl DrawStdWindowFrame + ldr r0, _08115C58 @ =gMultiuseListMenuTemplate + adds r2, r0, 0 + ldr r1, _08115C5C @ =gUnknown_8456D34 + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldrb r1, [r5, 0xF] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl ListMenuInit + strb r0, [r5, 0x12] + ldrb r0, [r5, 0x11] + movs r1, 0 + bl DrawStdWindowFrame + ldrb r0, [r5, 0x11] + bl PutWindowTilemap + ldrb r0, [r5, 0x11] + movs r1, 0x2 + bl CopyWindowToVram + movs r0, 0 + bl CopyBgTilemapBufferToVram + movs r0, 0x1 + strb r0, [r5, 0x13] + strb r4, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115C48: .4byte gUnknown_8456CD0 +_08115C4C: .4byte gUnknown_8456CFC +_08115C50: .4byte gUnknown_8456D04 +_08115C54: .4byte gUnknown_845747C +_08115C58: .4byte gMultiuseListMenuTemplate +_08115C5C: .4byte gUnknown_8456D34 +_08115C60: + ldr r0, _08115C98 @ =gStringVar1 + ldr r2, _08115C9C @ =gUnknown_8456C74 + ldr r4, _08115CA0 @ =gUnknown_203B058 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl StringCopy + ldr r0, _08115CA4 @ =gUnknown_203B059 + ldrb r2, [r0] + lsrs r0, r2, 4 + cmp r0, 0 + beq _08115CC4 + ldrb r1, [r5, 0x13] + subs r0, 0x1 + cmp r1, r0 + ble _08115CB0 + movs r0, 0xF + ands r0, r2 + cmp r0, 0 + beq _08115CB0 + ldr r0, _08115CA8 @ =gStringVar4 + ldr r1, _08115CAC @ =gUnknown_8457264 + bl StringExpandPlaceholders + b _08115CCC + .align 2, 0 +_08115C98: .4byte gStringVar1 +_08115C9C: .4byte gUnknown_8456C74 +_08115CA0: .4byte gUnknown_203B058 +_08115CA4: .4byte gUnknown_203B059 +_08115CA8: .4byte gStringVar4 +_08115CAC: .4byte gUnknown_8457264 +_08115CB0: + ldr r0, _08115CBC @ =gStringVar4 + ldr r1, _08115CC0 @ =gUnknown_8457234 + bl StringExpandPlaceholders + b _08115CCC + .align 2, 0 +_08115CBC: .4byte gStringVar4 +_08115CC0: .4byte gUnknown_8457234 +_08115CC4: + ldr r0, _08115CE0 @ =gStringVar4 + ldrb r1, [r4] + bl sub_811599C +_08115CCC: + ldrb r0, [r5, 0x11] + ldr r1, _08115CE4 @ =gUnknown_203B059 + ldrb r1, [r1] + ldrb r2, [r5, 0x13] + bl sub_811586C + movs r0, 0x5 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115CE0: .4byte gStringVar4 +_08115CE4: .4byte gUnknown_203B059 +_08115CE8: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08115D00 @ =gStringVar4 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08115CFA + b _081161D8 +_08115CFA: + movs r0, 0x6 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115D00: .4byte gStringVar4 +_08115D04: + adds r0, r5, 0 + movs r1, 0x7 + movs r2, 0xA + bl sub_8116444 + ldr r0, _08115D24 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08115D40 + ldrb r0, [r5, 0x13] + cmp r0, 0x1 + bne _08115D28 + movs r0, 0x17 + b _08115D3E + .align 2, 0 +_08115D24: .4byte gMain +_08115D28: + ldr r0, _08115D38 @ =gUnknown_203B059 + ldrb r1, [r0] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _08115D3C + movs r0, 0x1E + b _08115D3E + .align 2, 0 +_08115D38: .4byte gUnknown_203B059 +_08115D3C: + movs r0, 0x13 +_08115D3E: + strb r0, [r5, 0xC] +_08115D40: + ldr r0, _08115D8C @ =gUnknown_203B059 + ldrb r2, [r0] + lsrs r0, r2, 4 + cmp r0, 0 + beq _08115D76 + ldrb r1, [r5, 0x13] + subs r0, 0x1 + cmp r1, r0 + ble _08115D76 + movs r4, 0xF + adds r0, r4, 0 + ands r0, r2 + cmp r0, 0 + beq _08115D76 + bl sub_80FC1CC + cmp r0, 0 + beq _08115D76 + ldr r0, _08115D90 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08115D76 + strb r4, [r5, 0xC] + bl sub_80F8F5C +_08115D76: + ldrb r0, [r5, 0xC] + cmp r0, 0x6 + beq _08115D7E + b _081161D8 +_08115D7E: + bl sub_80FA5D4 + cmp r0, 0 + bne _08115D88 + b _081161D8 +_08115D88: + b _08115EEE + .align 2, 0 +_08115D8C: .4byte gUnknown_203B059 +_08115D90: .4byte gMain +_08115D94: + bl sub_80FA5D4 + cmp r0, 0 + beq _08115D9E + b _081161D8 +_08115D9E: + movs r0, 0x6 + strb r0, [r5, 0xC] + ldr r0, [r5] + bl sub_81165E8 + strb r0, [r5, 0x13] + b _081161D8 +_08115DAC: + movs r3, 0 + ldr r0, _08115DE4 @ =gUnknown_203B058 + ldrb r1, [r0] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x2 + bne _08115DBC + movs r3, 0x1 +_08115DBC: + adds r0, r5, 0 + adds r0, 0xD + ldr r2, _08115DE8 @ =gUnknown_845767C + lsls r1, r3, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08115DD4 + b _081161D8 +_08115DD4: + ldr r0, [r5] + bl sub_81165E8 + strb r0, [r5, 0x13] + ldrb r0, [r5, 0x12] + bl RedrawListMenu + b _0811610C + .align 2, 0 +_08115DE4: .4byte gUnknown_203B058 +_08115DE8: .4byte gUnknown_845767C +_08115DEC: + ldr r0, _08115E1C @ =gUnknown_203B059 + ldrb r0, [r0] + movs r1, 0xF + ands r1, r0 + movs r0, 0x2 + eors r1, r0 + negs r0, r1 + orrs r0, r1 + lsrs r3, r0, 31 + adds r0, r5, 0 + adds r0, 0xD + ldr r2, _08115E20 @ =gUnknown_845767C + lsls r1, r3, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08115E16 + b _081161D8 +_08115E16: + movs r0, 0x15 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115E1C: .4byte gUnknown_203B059 +_08115E20: .4byte gUnknown_845767C +_08115E24: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08115E3C @ =gStringVar4 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08115E36 + b _081161D8 +_08115E36: + movs r0, 0xB + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08115E3C: .4byte gStringVar4 +_08115E40: + adds r4, r5, 0 + adds r4, 0xD + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + ldrb r2, [r5, 0x13] + lsls r2, 5 + ldr r1, [r5] + adds r1, r2 + adds r1, 0x10 + bl sub_80FA634 + adds r1, r0, 0 + adds r0, r4, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08115EC0 + cmp r1, r0 + bgt _08115E84 + subs r0, 0x2 + cmp r1, r0 + beq _08115EEE + b _081161D8 +_08115E84: + cmp r1, 0 + beq _08115E8E + cmp r1, 0x1 + beq _08115EC0 + b _081161D8 +_08115E8E: + bl LoadWirelessStatusIndicatorSpriteGfx + movs r0, 0 + movs r1, 0 + bl CreateWirelessStatusIndicatorSprite + movs r0, 0x5 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r2, [r5] + adds r2, r0 + adds r2, 0x10 + movs r0, 0x5 + b _08115EE4 +_08115EC0: + movs r0, 0x6 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r2, [r5] + adds r2, r0 + adds r2, 0x10 + movs r0, 0x6 +_08115EE4: + bl sub_80FA670 + movs r0, 0xC + strb r0, [r5, 0xC] + b _081161D8 +_08115EEE: + movs r0, 0x9 + strb r0, [r5, 0xC] + b _081161D8 +_08115EF4: + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + ldrb r2, [r5, 0x13] + lsls r2, 5 + ldr r1, [r5] + adds r1, r2 + adds r1, 0x10 + bl sub_80FA6FC + cmp r0, 0x1 + bne _08115FFA + ldrb r0, [r5, 0x19] + cmp r0, 0x5 + bne _08115FB4 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + movs r0, 0 + strb r0, [r1, 0x1B] + ldrb r0, [r5, 0x12] + bl RedrawListMenu + ldrb r0, [r5, 0x13] + adds r0, 0x1 + strb r0, [r5, 0x13] + ldr r1, _08115F58 @ =gUnknown_203B059 + ldrb r1, [r1] + movs r3, 0xF + lsls r0, 24 + lsrs r2, r0, 24 + adds r0, r3, 0 + ands r0, r1 + cmp r2, r0 + bne _08115FF0 + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + bne _08115F54 + cmp r2, 0x4 + bne _08115F5C +_08115F54: + strb r3, [r5, 0xC] + b _08115F90 + .align 2, 0 +_08115F58: .4byte gUnknown_203B059 +_08115F5C: + ldr r4, _08115FA4 @ =gStringVar1 + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r1, r0 + subs r1, 0x10 + adds r0, r4, 0 + bl StringCopy7 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + subs r0, 0x1 + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + ldr r0, _08115FA8 @ =gStringVar4 + ldr r1, _08115FAC @ =gUnknown_8457554 + bl StringExpandPlaceholders + movs r0, 0xD + strb r0, [r5, 0xC] +_08115F90: + bl sub_80F8F5C + ldrb r0, [r5, 0x11] + ldr r1, _08115FB0 @ =gUnknown_203B059 + ldrb r1, [r1] + ldrb r2, [r5, 0x13] + bl sub_811586C + b _08115FF4 + .align 2, 0 +_08115FA4: .4byte gStringVar1 +_08115FA8: .4byte gStringVar4 +_08115FAC: .4byte gUnknown_8457554 +_08115FB0: .4byte gUnknown_203B059 +_08115FB4: + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBD4C + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + ldrb r2, [r1, 0x1A] + movs r0, 0x4 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1A] + ldr r0, [r5] + bl sub_81165E8 + ldrb r0, [r5, 0x12] + bl RedrawListMenu +_08115FF0: + movs r0, 0x4 + strb r0, [r5, 0xC] +_08115FF4: + movs r0, 0 + strb r0, [r5, 0x19] + b _081161D8 +_08115FFA: + cmp r0, 0x2 + beq _08116000 + b _081161D8 +_08116000: + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + b _0811610C +_0811600A: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08116024 @ =gStringVar4 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _0811601C + b _081161D8 +_0811601C: + movs r0, 0xE + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08116024: .4byte gStringVar4 +_08116028: + ldrb r0, [r5, 0xE] + adds r0, 0x1 + strb r0, [r5, 0xE] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x78 + bhi _08116038 + b _081161D8 +_08116038: + b _0811607E +_0811603A: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08116054 @ =gUnknown_8457514 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _0811604C + b _081161D8 +_0811604C: + movs r0, 0x10 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08116054: .4byte gUnknown_8457514 +_08116058: + adds r0, r5, 0 + adds r0, 0xD + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0811607E + cmp r1, 0 + bgt _08116078 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08116084 + b _081161D8 +_08116078: + cmp r1, 0x1 + beq _08116084 + b _081161D8 +_0811607E: + movs r0, 0x11 + strb r0, [r5, 0xC] + b _081161D8 +_08116084: + ldr r0, _08116098 @ =gUnknown_203B059 + ldrb r1, [r0] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _0811609C + movs r0, 0x1E + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08116098: .4byte gUnknown_203B059 +_0811609C: + movs r0, 0x13 + strb r0, [r5, 0xC] + b _081161D8 +_081160A2: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _081160BC @ =gUnknown_8457530 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _081160B4 + b _081161D8 +_081160B4: + movs r0, 0x14 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_081160BC: .4byte gUnknown_8457530 +_081160C0: + adds r0, r5, 0 + adds r0, 0xD + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _0811615C + cmp r1, 0 + bgt _081160E0 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081160E4 + b _081161D8 +_081160E0: + cmp r1, 0x1 + bne _081161D8 +_081160E4: + ldr r0, _081160F8 @ =gUnknown_203B059 + ldrb r2, [r0] + movs r0, 0xF0 + ands r0, r2 + cmp r0, 0 + beq _081160FC + movs r0, 0xF + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_081160F8: .4byte gUnknown_203B059 +_081160FC: + movs r3, 0xF + ldrb r1, [r5, 0x13] + adds r0, r3, 0 + ands r0, r2 + cmp r1, r0 + bne _0811610C + strb r3, [r5, 0xC] + b _081161D8 +_0811610C: + movs r0, 0x4 + strb r0, [r5, 0xC] + b _081161D8 +_08116112: + adds r0, r5, 0 + movs r1, 0x7 + movs r2, 0x17 + bl sub_8116444 + lsls r0, 24 + cmp r0, 0 + bne _081161D8 + movs r0, 0x12 + strb r0, [r5, 0xC] + b _081161D8 +_08116128: + bl sub_80F8F40 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08116144 + movs r0, 0 + bl sub_80F8F7C + cmp r0, 0 + beq _081161D8 + movs r0, 0x1A + strb r0, [r5, 0xC] + b _081161D8 +_08116144: + movs r0, 0x1D + strb r0, [r5, 0xC] + strb r1, [r5, 0xD] + b _081161D8 +_0811614C: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08116164 @ =gUnknown_8457610 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _081161D8 +_0811615C: + movs r0, 0x17 + strb r0, [r5, 0xC] + b _081161D8 + .align 2, 0 +_08116164: .4byte gUnknown_8457610 +_08116168: + bl DestroyWirelessStatusIndicatorSprite + bl sub_80F8DC0 + adds r0, r5, 0 + bl sub_81161E4 + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] + b _081161D8 +_0811617E: + bl EnableBothScriptContexts + adds r0, r4, 0 + bl DestroyTask + ldr r1, _08116190 @ =gSpecialVar_Result + movs r0, 0x5 + strh r0, [r1] + b _081161D8 + .align 2, 0 +_08116190: .4byte gSpecialVar_Result +_08116194: + bl EnableBothScriptContexts + adds r0, r4, 0 + bl DestroyTask + ldr r1, _081161A8 @ =gSpecialVar_Result + movs r0, 0x8 + strh r0, [r1] + b _081161D8 + .align 2, 0 +_081161A8: .4byte gSpecialVar_Result +_081161AC: + bl sub_80FBA00 + cmp r0, 0 + beq _081161BA + movs r0, 0x1D + strb r0, [r5, 0xC] + b _081161D8 +_081161BA: + ldr r0, _081161E0 @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _081161D8 + movs r0, 0x1 + bl sub_80FAFE0 + bl sub_8117990 + adds r0, r5, 0 + bl sub_81161E4 + adds r0, r4, 0 + bl DestroyTask +_081161D8: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081161E0: .4byte gReceivedRemoteLinkPlayers + thumb_func_end sub_8115A68 + + thumb_func_start sub_81161E4 +sub_81161E4: @ 81161E4 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x11] + bl ClearWindowTilemap + ldrb r0, [r4, 0x11] + movs r1, 0 + bl ClearStdWindowAndFrame + ldrb r0, [r4, 0x12] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + ldrb r0, [r4, 0x10] + bl ClearWindowTilemap + ldrb r0, [r4, 0xF] + movs r1, 0 + bl ClearStdWindowAndFrame + movs r0, 0 + bl CopyBgTilemapBufferToVram + ldrb r0, [r4, 0x11] + bl RemoveWindow + ldrb r0, [r4, 0xF] + bl RemoveWindow + ldrb r0, [r4, 0x10] + bl RemoveWindow + ldrb r0, [r4, 0x17] + bl DestroyTask + ldr r0, [r4, 0x8] + bl Free + ldr r0, [r4] + bl Free + ldr r0, [r4, 0x4] + bl Free + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_81161E4 + + thumb_func_start sub_8116244 +sub_8116244: @ 8116244 + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x15 + bhi _081162D8 + lsls r0, 2 + ldr r1, _0811625C @ =_08116260 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811625C: .4byte _08116260 + .align 2, 0 +_08116260: + .4byte _081162B8 + .4byte _081162B8 + .4byte _081162D0 + .4byte _081162B8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D0 + .4byte _081162D0 + .4byte _081162D0 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162D8 + .4byte _081162C0 + .4byte _081162C0 +_081162B8: + ldr r1, _081162BC @ =gUnknown_84574A0 + b _081162C2 + .align 2, 0 +_081162BC: .4byte gUnknown_84574A0 +_081162C0: + ldr r1, _081162CC @ =gUnknown_84574C4 +_081162C2: + adds r0, r2, 0 + bl StringExpandPlaceholders + b _081162D8 + .align 2, 0 +_081162CC: .4byte gUnknown_84574C4 +_081162D0: + ldr r1, _081162DC @ =gUnknown_84574EC + adds r0, r2, 0 + bl StringExpandPlaceholders +_081162D8: + pop {r0} + bx r0 + .align 2, 0 +_081162DC: .4byte gUnknown_84574EC + thumb_func_end sub_8116244 + + thumb_func_start sub_81162E0 +sub_81162E0: @ 81162E0 + push {lr} + lsls r1, 24 + lsrs r1, 24 + adds r2, r1, 0 + cmp r1, 0x44 + beq _08116300 + cmp r1, 0x44 + bgt _081162F6 + cmp r1, 0x41 + beq _08116300 + b _08116312 +_081162F6: + cmp r2, 0x45 + beq _0811630C + cmp r2, 0x48 + beq _0811630C + b _08116312 +_08116300: + ldr r1, _08116308 @ =gUnknown_8457E28 + bl StringExpandPlaceholders + b _08116312 + .align 2, 0 +_08116308: .4byte gUnknown_8457E28 +_0811630C: + ldr r1, _08116318 @ =gUnknown_8457E44 + bl StringExpandPlaceholders +_08116312: + pop {r0} + bx r0 + .align 2, 0 +_08116318: .4byte gUnknown_8457E44 + thumb_func_end sub_81162E0 + + thumb_func_start sub_811631C +sub_811631C: @ 811631C + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x15 + bhi _081163A8 + lsls r0, 2 + ldr r1, _08116334 @ =_08116338 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116334: .4byte _08116338 + .align 2, 0 +_08116338: + .4byte _08116390 + .4byte _08116390 + .4byte _081163A0 + .4byte _08116390 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A0 + .4byte _081163A0 + .4byte _081163A0 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _081163A8 + .4byte _08116390 + .4byte _08116390 +_08116390: + ldr r1, _0811639C @ =gUnknown_8459238 + adds r0, r2, 0 + bl StringExpandPlaceholders + b _081163A8 + .align 2, 0 +_0811639C: .4byte gUnknown_8459238 +_081163A0: + ldr r1, _081163AC @ =gUnknown_8459250 + adds r0, r2, 0 + bl StringExpandPlaceholders +_081163A8: + pop {r0} + bx r0 + .align 2, 0 +_081163AC: .4byte gUnknown_8459250 + thumb_func_end sub_811631C + + thumb_func_start sub_81163B0 +sub_81163B0: @ 81163B0 + push {lr} + adds r2, r0, 0 + lsls r1, 24 + lsrs r1, 24 + subs r0, r1, 0x1 + cmp r0, 0x15 + bhi _0811643C + lsls r0, 2 + ldr r1, _081163C8 @ =_081163CC + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081163C8: .4byte _081163CC + .align 2, 0 +_081163CC: + .4byte _08116424 + .4byte _08116424 + .4byte _08116434 + .4byte _08116424 + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _08116434 + .4byte _08116434 + .4byte _08116434 + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _0811643C + .4byte _08116424 + .4byte _08116424 +_08116424: + ldr r1, _08116430 @ =gUnknown_84576AC + adds r0, r2, 0 + bl StringExpandPlaceholders + b _0811643C + .align 2, 0 +_08116430: .4byte gUnknown_84576AC +_08116434: + ldr r1, _08116440 @ =gUnknown_84576C4 + adds r0, r2, 0 + bl StringExpandPlaceholders +_0811643C: + pop {r0} + bx r0 + .align 2, 0 +_08116440: .4byte gUnknown_84576C4 + thumb_func_end sub_81163B0 + + thumb_func_start sub_8116444 +sub_8116444: @ 8116444 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + adds r4, r2, 0 + ldr r0, [r5] + bl sub_8116524 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08116460 + cmp r0, 0x2 + beq _081164AC + b _081164C0 +_08116460: + movs r0, 0x2 + bl PlaySE + ldrb r0, [r5, 0x12] + bl RedrawListMenu + ldr r4, _081164A0 @ =gStringVar2 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r1, [r5] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy7 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + ldr r0, _081164A4 @ =gStringVar4 + ldr r1, _081164A8 @ =gUnknown_203B058 + ldrb r1, [r1] + bl sub_8116244 + strb r6, [r5, 0xC] + b _081164C0 + .align 2, 0 +_081164A0: .4byte gStringVar2 +_081164A4: .4byte gStringVar4 +_081164A8: .4byte gUnknown_203B058 +_081164AC: + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + ldrb r0, [r5, 0x12] + bl RedrawListMenu + strb r4, [r5, 0xC] + movs r0, 0x1 + b _081164C2 +_081164C0: + movs r0, 0 +_081164C2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8116444 + + thumb_func_start sub_81164C8 +sub_81164C8: @ 81164C8 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _081164F4 @ =gUnknown_203B05C + ldr r3, [r0] + movs r2, 0 + ldr r1, [r3] + lsls r0, r4, 5 + adds r1, r0 + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + beq _081164F8 + cmp r0, 0x2 + beq _08116502 + b _08116504 + .align 2, 0 +_081164F4: .4byte gUnknown_203B05C +_081164F8: + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _08116504 + movs r2, 0x2 + b _08116504 +_08116502: + movs r2, 0x1 +_08116504: + lsls r0, r4, 5 + ldr r3, [r3] + adds r3, r0 + str r2, [sp] + lsls r0, r4, 24 + lsrs r0, 24 + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0 + adds r2, r6, 0 + bl sub_811A910 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81164C8 + + thumb_func_start sub_8116524 +sub_8116524: @ 8116524 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + ldr r0, _0811657C @ =gUnknown_203B05C + ldr r5, [r0] + movs r0, 0 + mov r8, r0 + movs r3, 0x1 +_08116538: + ldr r0, [r5] + lsls r6, r3, 5 + adds r2, r0, r6 + ldrb r0, [r2, 0x1A] + lsls r0, 30 + lsrs r0, 30 + mov r9, r0 + cmp r0, 0x1 + bne _08116598 + ldr r1, [r5, 0x4] + adds r0, r2, 0 + str r3, [sp] + bl sub_811A748 + adds r4, r0, 0 + ldr r3, [sp] + cmp r4, 0xFF + beq _08116580 + ldr r1, [r5] + ldr r0, [r5, 0x4] + lsls r2, r4, 3 + subs r2, r4 + lsls r2, 2 + adds r1, r6 + adds r0, r2 + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + ldr r0, [r5] + adds r0, r6 + mov r1, r9 + strh r1, [r0, 0x18] + b _08116598 + .align 2, 0 +_0811657C: .4byte gUnknown_203B05C +_08116580: + ldr r2, [r5] + adds r2, r6 + ldrb r1, [r2, 0x1A] + movs r4, 0x4 + negs r4, r4 + adds r0, r4, 0 + ands r1, r0 + movs r0, 0x2 + orrs r1, r0 + strb r1, [r2, 0x1A] + movs r7, 0x2 + mov r8, r7 +_08116598: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x4 + bls _08116538 + movs r6, 0 + movs r4, 0x3 +_081165A6: + ldr r0, [r5] + ldr r1, [r5, 0x4] + adds r1, r6 + movs r2, 0x5 + bl sub_811A798 + adds r6, 0x1C + subs r4, 0x1 + ldr r0, [r5] + cmp r4, 0 + bge _081165A6 + mov r1, r8 + cmp r1, 0x2 + beq _081165D8 + adds r1, r0, 0 + movs r4, 0x4 +_081165C6: + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _081165D0 + movs r2, 0x1 + mov r8, r2 +_081165D0: + adds r1, 0x20 + subs r4, 0x1 + cmp r4, 0 + bge _081165C6 +_081165D8: + mov r0, r8 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8116524 + + thumb_func_start sub_81165E8 +sub_81165E8: @ 81165E8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r0, _081166BC @ =gUnknown_203B05C + ldr r4, [r0] + movs r3, 0 +_081165F8: + ldr r0, [r4, 0x8] + lsls r2, r3, 5 + ldr r1, [r4] + adds r0, r2 + adds r1, r2 + ldm r1!, {r2,r5,r6} + stm r0!, {r2,r5,r6} + ldm r1!, {r2,r5,r7} + stm r0!, {r2,r5,r7} + ldm r1!, {r6,r7} + stm r0!, {r6,r7} + adds r3, 0x1 + ldr r0, [r4, 0x8] + ldr r1, [r4] + cmp r3, 0x4 + ble _081165F8 + movs r5, 0 + mov r8, r1 + mov r9, r0 + movs r3, 0x4 +_08116620: + mov r1, r9 + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08116642 + lsls r0, r5, 5 + add r0, r8 + ldm r1!, {r2,r6,r7} + stm r0!, {r2,r6,r7} + ldm r1!, {r2,r6,r7} + stm r0!, {r2,r6,r7} + ldm r1!, {r2,r6} + stm r0!, {r2,r6} + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08116642: + movs r7, 0x20 + add r9, r7 + subs r3, 0x1 + cmp r3, 0 + bge _08116620 + mov r10, r5 + cmp r5, 0x4 + bhi _081166A4 + ldr r0, _081166C0 @ =gUnknown_8457034 + mov r9, r0 + movs r1, 0 + mov r12, r1 + movs r2, 0x4 + negs r2, r2 + mov r8, r2 +_08116660: + ldr r1, [r4] + lsls r3, r5, 5 + adds r1, r3 + mov r0, r9 + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + ldm r0!, {r2,r6,r7} + stm r1!, {r2,r6,r7} + ldr r0, [r4] + adds r0, r3 + movs r1, 0 + strh r1, [r0, 0x18] + ldr r1, [r4] + adds r1, r3 + ldrb r2, [r1, 0x1A] + mov r0, r8 + ands r0, r2 + strb r0, [r1, 0x1A] + ldr r1, [r4] + adds r1, r3 + ldrb r2, [r1, 0x1A] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1A] + ldr r0, [r4] + adds r0, r3 + mov r6, r12 + strb r6, [r0, 0x1B] + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x4 + bls _08116660 +_081166A4: + movs r3, 0 + ldr r1, [r4] + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _081166C4 + ldrb r0, [r1, 0x1B] + cmp r0, 0x40 + bne _081166C4 + mov r10, r3 + b _081166E4 + .align 2, 0 +_081166BC: .4byte gUnknown_203B05C +_081166C0: .4byte gUnknown_8457034 +_081166C4: + adds r3, 0x1 + cmp r3, 0x4 + bgt _081166E4 + lsls r0, r3, 5 + adds r2, r1, r0 + ldrb r0, [r2, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _081166C4 + ldrb r0, [r2, 0x1B] + cmp r0, 0x40 + bne _081166C4 + lsls r0, r3, 24 + lsrs r0, 24 + mov r10, r0 +_081166E4: + mov r0, r10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_81165E8 + + thumb_func_start TryJoinLinkGroup +TryJoinLinkGroup: @ 81166F4 + push {lr} + ldr r0, _08116724 @ =sub_8116738 + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08116728 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0811672C @ =gTasks+0x8 + adds r1, r0 + str r1, [r2] + ldr r0, _08116730 @ =gUnknown_3002028 + str r1, [r0] + movs r0, 0 + strb r0, [r1, 0x8] + strb r0, [r1, 0x9] + ldr r1, _08116734 @ =gSpecialVar_Result + strh r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08116724: .4byte sub_8116738 +_08116728: .4byte gUnknown_203B05C +_0811672C: .4byte gTasks+0x8 +_08116730: .4byte gUnknown_3002028 +_08116734: .4byte gSpecialVar_Result + thumb_func_end TryJoinLinkGroup + + thumb_func_start sub_8116738 +sub_8116738: @ 8116738 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08116758 @ =gUnknown_203B05C + ldr r6, [r0] + ldrb r0, [r6, 0x8] + cmp r0, 0x17 + bls _0811674C + b _08116D06 +_0811674C: + lsls r0, 2 + ldr r1, _0811675C @ =_08116760 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116758: .4byte gUnknown_203B05C +_0811675C: .4byte _08116760 + .align 2, 0 +_08116760: + .4byte _081167C0 + .4byte _0811680C + .4byte _08116838 + .4byte _08116904 + .4byte _08116D06 + .4byte _081169B4 + .4byte _08116A08 + .4byte _08116B94 + .4byte _08116BB0 + .4byte _08116BFE + .4byte _08116C10 + .4byte _08116C98 + .4byte _08116C10 + .4byte _08116C68 + .4byte _08116C10 + .4byte _08116CA8 + .4byte _08116D06 + .4byte _08116D06 + .4byte _08116C10 + .4byte _08116CC8 + .4byte _08116C10 + .4byte _08116CFC + .4byte _08116D06 + .4byte _08116CEC +_081167C0: + ldr r5, _08116800 @ =gUnknown_84570C8 + ldr r4, _08116804 @ =gSpecialVar_0x8004 + ldrh r0, [r4] + adds r0, r5 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + ldr r1, _08116808 @ =gUnknown_203B058 + ldrh r0, [r4] + adds r0, r5 + ldrb r0, [r0] + strb r0, [r1] + bl sub_800B1F4 + bl OpenLink + bl sub_80FBBD8 + movs r0, 0x70 + bl AllocZeroed + str r0, [r6, 0x4] + movs r0, 0x80 + lsls r0, 2 + bl AllocZeroed + str r0, [r6] + movs r0, 0x1 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116800: .4byte gUnknown_84570C8 +_08116804: .4byte gSpecialVar_0x8004 +_08116808: .4byte gUnknown_203B058 +_0811680C: + adds r0, r6, 0 + adds r0, 0x9 + ldr r2, _08116830 @ =gUnknown_84591B8 + ldr r1, _08116834 @ =gSpecialVar_0x8004 + ldrh r1, [r1] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08116828 + b _08116D06 +_08116828: + movs r0, 0x2 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116830: .4byte gUnknown_84591B8 +_08116834: .4byte gSpecialVar_0x8004 +_08116838: + ldr r0, [r6, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r6] + movs r1, 0x10 + bl sub_811A5E4 + ldr r0, [r6, 0x4] + ldr r1, _081168E8 @ =gSpecialVar_0x8004 + ldrh r1, [r1] + bl sub_811A054 + movs r4, 0 + strb r0, [r6, 0x11] + ldr r0, _081168EC @ =gUnknown_8456CD0 + bl AddWindow + strb r0, [r6, 0xC] + ldr r0, _081168F0 @ =gUnknown_8456D4C + bl AddWindow + strb r0, [r6, 0xB] + ldr r0, _081168F4 @ =gUnknown_8456D54 + bl AddWindow + strb r0, [r6, 0xD] + ldrb r0, [r6, 0xC] + movs r1, 0x22 + bl FillWindowPixelBuffer + ldrb r0, [r6, 0xC] + ldr r2, _081168F8 @ =gUnknown_8458FC8 + movs r1, 0x2 + str r1, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + movs r1, 0 + movs r3, 0x8 + bl sub_811A444 + ldrb r0, [r6, 0xC] + bl PutWindowTilemap + ldrb r0, [r6, 0xC] + movs r1, 0x2 + bl CopyWindowToVram + ldrb r0, [r6, 0xB] + movs r1, 0 + bl DrawStdWindowFrame + ldr r0, _081168FC @ =gMultiuseListMenuTemplate + adds r2, r0, 0 + ldr r1, _08116900 @ =gUnknown_8456DDC + ldm r1!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + ldm r1!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + ldrb r1, [r6, 0xB] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl ListMenuInit + strb r0, [r6, 0xE] + ldrb r0, [r6, 0xD] + movs r1, 0 + bl DrawStdWindowFrame + ldrb r0, [r6, 0xD] + bl PutWindowTilemap + ldrb r0, [r6, 0xD] + bl sub_8115924 + ldrb r0, [r6, 0xD] + movs r1, 0x2 + bl CopyWindowToVram + movs r0, 0 + bl CopyBgTilemapBufferToVram + strb r4, [r6, 0xF] + movs r0, 0x3 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_081168E8: .4byte gSpecialVar_0x8004 +_081168EC: .4byte gUnknown_8456CD0 +_081168F0: .4byte gUnknown_8456D4C +_081168F4: .4byte gUnknown_8456D54 +_081168F8: .4byte gUnknown_8458FC8 +_081168FC: .4byte gMultiuseListMenuTemplate +_08116900: .4byte gUnknown_8456DDC +_08116904: + bl sub_8116FE4 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0811691E + cmp r4, 0x1 + beq _08116916 + b _08116BF6 +_08116916: + movs r0, 0x2 + bl PlaySE + b _08116BF6 +_0811691E: + ldrb r0, [r6, 0xE] + bl ListMenu_ProcessInput + adds r4, r0, 0 + ldr r0, _0811696C @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0811699C + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _0811699C + ldr r0, [r6] + lsls r1, r4, 5 + adds r0, r1 + ldrb r1, [r0, 0xA] + ldrb r0, [r0, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08116994 + lsrs r0, r1, 7 + cmp r0, 0 + bne _08116994 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8116D10 + adds r1, r0, 0 + cmp r1, 0 + bne _08116970 + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8116D60 + movs r0, 0x5 + b _08116982 + .align 2, 0 +_0811696C: .4byte gMain +_08116970: + ldr r0, _0811698C @ =gStringVar4 + ldr r2, _08116990 @ =gUnknown_8457608 + subs r1, 0x1 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl StringCopy + movs r0, 0x12 +_08116982: + strb r0, [r6, 0x8] + movs r0, 0x67 + bl PlaySE + b _08116D06 + .align 2, 0 +_0811698C: .4byte gStringVar4 +_08116990: .4byte gUnknown_8457608 +_08116994: + movs r0, 0x7 + bl PlaySE + b _08116D06 +_0811699C: + ldr r0, _081169B0 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _081169AA + b _08116D06 +_081169AA: + movs r0, 0xA + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_081169B0: .4byte gMain +_081169B4: + ldr r4, _081169FC @ =gStringVar4 + ldr r0, _08116A00 @ =gUnknown_203B058 + ldrb r1, [r0] + adds r0, r4, 0 + bl sub_811631C + adds r0, r6, 0 + adds r0, 0x9 + adds r1, r4, 0 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _081169D2 + b _08116D06 +_081169D2: + ldr r4, _08116A04 @ =gStringVar1 + ldrb r0, [r6, 0xF] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy7 + ldr r1, [r6] + ldrb r0, [r6, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + b _08116C0A + .align 2, 0 +_081169FC: .4byte gStringVar4 +_08116A00: .4byte gUnknown_203B058 +_08116A04: .4byte gStringVar1 +_08116A08: + ldr r0, _08116A3C @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _08116AA4 + ldr r4, _08116A40 @ =gUnknown_203B058 + ldr r1, [r6] + ldrb r0, [r6, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsls r0, 25 + lsrs r0, 25 + strb r0, [r4] + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + ldrb r0, [r4] + subs r0, 0x1 + cmp r0, 0x15 + bhi _08116AA4 + lsls r0, 2 + ldr r1, _08116A44 @ =_08116A48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116A3C: .4byte gReceivedRemoteLinkPlayers +_08116A40: .4byte gUnknown_203B058 +_08116A44: .4byte _08116A48 + .align 2, 0 +_08116A48: + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA4 + .4byte _08116AA0 + .4byte _08116AA0 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA4 + .4byte _08116AA0 + .4byte _08116AA0 +_08116AA0: + movs r0, 0x14 + strb r0, [r6, 0x8] +_08116AA4: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + subs r0, 0x1 + cmp r0, 0x8 + bhi _08116B70 + lsls r0, 2 + ldr r1, _08116ABC @ =_08116AC0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116ABC: .4byte _08116AC0 + .align 2, 0 +_08116AC0: + .4byte _08116AE4 + .4byte _08116AEA + .4byte _08116B70 + .4byte _08116B70 + .4byte _08116AF0 + .4byte _08116AEA + .4byte _08116B44 + .4byte _08116B70 + .4byte _08116AEA +_08116AE4: + movs r0, 0xC + strb r0, [r6, 0x8] + b _08116B70 +_08116AEA: + movs r0, 0xE + strb r0, [r6, 0x8] + b _08116B70 +_08116AF0: + ldr r4, _08116B30 @ =gStringVar4 + ldr r5, _08116B34 @ =gUnknown_203B058 + ldrb r1, [r5] + adds r0, r4, 0 + bl sub_81163B0 + adds r0, r6, 0 + adds r0, 0x9 + adds r1, r4, 0 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _08116B70 + movs r0, 0x7 + movs r1, 0 + bl sub_80FB9E4 + ldr r0, _08116B38 @ =gStringVar1 + ldr r2, _08116B3C @ =gUnknown_8456C74 + ldrb r1, [r5] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl StringCopy + ldr r1, _08116B40 @ =gUnknown_8457700 + adds r0, r4, 0 + bl StringExpandPlaceholders + b _08116B70 + .align 2, 0 +_08116B30: .4byte gStringVar4 +_08116B34: .4byte gUnknown_203B058 +_08116B38: .4byte gStringVar1 +_08116B3C: .4byte gUnknown_8456C74 +_08116B40: .4byte gUnknown_8457700 +_08116B44: + ldrb r0, [r6, 0x15] + cmp r0, 0xF0 + bls _08116B6C + adds r0, r6, 0 + adds r0, 0x9 + ldr r1, _08116B68 @ =gStringVar4 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _08116B70 + movs r0, 0xC + movs r1, 0 + bl sub_80FB9E4 + movs r0, 0 + b _08116B6E + .align 2, 0 +_08116B68: .4byte gStringVar4 +_08116B6C: + adds r0, 0x1 +_08116B6E: + strb r0, [r6, 0x15] +_08116B70: + bl sub_80FB9F4 + lsls r0, 24 + cmp r0, 0 + beq _08116B7C + b _08116D06 +_08116B7C: + ldr r0, _08116B90 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08116B8A + b _08116D06 +_08116B8A: + movs r0, 0x7 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116B90: .4byte gMain +_08116B94: + adds r0, r6, 0 + adds r0, 0x9 + ldr r1, _08116BAC @ =gUnknown_845771C + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08116BA6 + b _08116D06 +_08116BA6: + movs r0, 0x8 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116BAC: .4byte gUnknown_845771C +_08116BB0: + adds r4, r6, 0 + adds r4, 0x9 + bl sub_80FB9F4 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _08116BEE + cmp r1, r0 + bgt _08116BDC + subs r0, 0x2 + cmp r1, r0 + beq _08116BF2 + b _08116D06 +_08116BDC: + cmp r1, 0 + beq _08116BE6 + cmp r1, 0x1 + beq _08116BEE + b _08116D06 +_08116BE6: + bl sub_80FA6BC + movs r0, 0x9 + b _08116BF4 +_08116BEE: + movs r0, 0x5 + b _08116BF4 +_08116BF2: + movs r0, 0x6 +_08116BF4: + strb r0, [r6, 0x8] +_08116BF6: + ldrb r0, [r6, 0xE] + bl RedrawListMenu + b _08116D06 +_08116BFE: + bl sub_80FB9F4 + lsls r0, 24 + cmp r0, 0 + bne _08116C0A + b _08116D06 +_08116C0A: + movs r0, 0x6 + strb r0, [r6, 0x8] + b _08116D06 +_08116C10: + ldrb r0, [r6, 0xD] + bl ClearWindowTilemap + ldrb r0, [r6, 0xD] + movs r1, 0 + bl ClearStdWindowAndFrame + ldrb r0, [r6, 0xE] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + ldrb r0, [r6, 0xC] + bl ClearWindowTilemap + ldrb r0, [r6, 0xB] + movs r1, 0 + bl ClearStdWindowAndFrame + movs r0, 0 + bl CopyBgTilemapBufferToVram + ldrb r0, [r6, 0xD] + bl RemoveWindow + ldrb r0, [r6, 0xB] + bl RemoveWindow + ldrb r0, [r6, 0xC] + bl RemoveWindow + ldrb r0, [r6, 0x11] + bl DestroyTask + ldr r0, [r6] + bl Free + ldr r0, [r6, 0x4] + bl Free + ldrb r0, [r6, 0x8] + adds r0, 0x1 + strb r0, [r6, 0x8] + b _08116D06 +_08116C68: + bl DestroyWirelessStatusIndicatorSprite + adds r5, r6, 0 + adds r5, 0x9 + ldr r4, _08116C90 @ =gUnknown_8457754 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r1, [r0] + adds r0, r5, 0 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _08116D06 + ldr r0, _08116C94 @ =gSpecialVar_Result + movs r1, 0x6 + b _08116CDC + .align 2, 0 +_08116C90: .4byte gUnknown_8457754 +_08116C94: .4byte gSpecialVar_Result +_08116C98: + bl DestroyWirelessStatusIndicatorSprite + ldr r0, _08116CA4 @ =gSpecialVar_Result + movs r1, 0x5 + b _08116CDC + .align 2, 0 +_08116CA4: .4byte gSpecialVar_Result +_08116CA8: + bl DestroyWirelessStatusIndicatorSprite + adds r5, r6, 0 + adds r5, 0x9 + ldr r4, _08116CC4 @ =gUnknown_8457754 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r1, [r0] + adds r0, r5, 0 + b _08116CCE + .align 2, 0 +_08116CC4: .4byte gUnknown_8457754 +_08116CC8: + adds r0, r6, 0 + adds r0, 0x9 + ldr r1, _08116CE4 @ =gStringVar4 +_08116CCE: + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _08116D06 + ldr r0, _08116CE8 @ =gSpecialVar_Result + movs r1, 0x8 +_08116CDC: + strh r1, [r0] + movs r0, 0x17 + strb r0, [r6, 0x8] + b _08116D06 + .align 2, 0 +_08116CE4: .4byte gStringVar4 +_08116CE8: .4byte gSpecialVar_Result +_08116CEC: + adds r0, r4, 0 + bl DestroyTask + bl sub_811A41C + bl sub_80F8DC0 + b _08116D06 +_08116CFC: + bl sub_8117990 + adds r0, r4, 0 + bl DestroyTask +_08116D06: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8116738 + + thumb_func_start sub_8116D10 +sub_8116D10: @ 8116D10 + push {lr} + lsls r1, 5 + ldr r0, [r0] + adds r3, r0, r1 + ldr r0, _08116D44 @ =gUnknown_203B058 + ldrb r0, [r0] + cmp r0, 0x4 + bne _08116D56 + ldrb r0, [r3, 0x1] + movs r1, 0x3C + ands r1, r0 + cmp r1, 0x10 + beq _08116D56 + cmp r1, 0x14 + beq _08116D56 + ldr r0, _08116D48 @ =gSaveBlock2Ptr + ldr r0, [r0] + ldrb r1, [r0, 0x9] + movs r2, 0x80 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08116D4C + movs r0, 0x1 + b _08116D5C + .align 2, 0 +_08116D44: .4byte gUnknown_203B058 +_08116D48: .4byte gSaveBlock2Ptr +_08116D4C: + ldrb r1, [r3] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _08116D5A +_08116D56: + movs r0, 0 + b _08116D5C +_08116D5A: + movs r0, 0x2 +_08116D5C: + pop {r1} + bx r1 + thumb_func_end sub_8116D10 + + thumb_func_start sub_8116D60 +sub_8116D60: @ 8116D60 + push {r4,r5,lr} + adds r4, r0, 0 + strb r1, [r4, 0xF] + bl LoadWirelessStatusIndicatorSpriteGfx + movs r0, 0 + movs r1, 0 + bl CreateWirelessStatusIndicatorSprite + ldrb r0, [r4, 0xE] + bl RedrawListMenu + ldr r5, _08116DD4 @ =gStringVar1 + ldrb r0, [r4, 0xF] + lsls r0, 5 + ldr r1, [r4] + adds r1, r0 + adds r1, 0x10 + adds r0, r5, 0 + bl StringCopy7 + ldr r1, [r4] + ldrb r0, [r4, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r5, 0 + bl ConvertInternationalString + ldr r1, _08116DD8 @ =gUnknown_84570C8 + ldr r0, _08116DDC @ =gSpecialVar_0x8004 + ldrh r0, [r0] + adds r0, r1 + ldrb r0, [r0] + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + ldrb r1, [r4, 0xF] + lsls r1, 5 + ldr r0, [r4] + adds r0, r1 + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBF54 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08116DD4: .4byte gStringVar1 +_08116DD8: .4byte gUnknown_84570C8 +_08116DDC: .4byte gSpecialVar_0x8004 + thumb_func_end sub_8116D60 + + thumb_func_start sub_8116DE0 +sub_8116DE0: @ 8116DE0 + push {lr} + ldr r0, _08116E0C @ =sub_8116E1C + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08116E10 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _08116E14 @ =gTasks+0x8 + adds r1, r2 + str r1, [r3] + movs r2, 0 + strb r2, [r1, 0x8] + strb r2, [r1, 0x9] + ldr r2, _08116E18 @ =gUnknown_3002028 + str r1, [r2] + pop {r1} + bx r1 + .align 2, 0 +_08116E0C: .4byte sub_8116E1C +_08116E10: .4byte gUnknown_203B05C +_08116E14: .4byte gTasks+0x8 +_08116E18: .4byte gUnknown_3002028 + thumb_func_end sub_8116DE0 + + thumb_func_start sub_8116E1C +sub_8116E1C: @ 8116E1C + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, _08116E38 @ =gUnknown_203B05C + ldr r4, [r0] + ldrb r0, [r4, 0x8] + cmp r0, 0xB + bhi _08116F20 + lsls r0, 2 + ldr r1, _08116E3C @ =_08116E40 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08116E38: .4byte gUnknown_203B05C +_08116E3C: .4byte _08116E40 + .align 2, 0 +_08116E40: + .4byte _08116E70 + .4byte _08116F20 + .4byte _08116EA4 + .4byte _08116EC8 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116F20 + .4byte _08116EF8 + .4byte _08116F16 +_08116E70: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl OpenLink + bl sub_80FBBD8 + movs r0, 0x1 + bl sub_80FB128 + movs r0, 0x70 + bl AllocZeroed + str r0, [r4, 0x4] + movs r0, 0x80 + lsls r0, 2 + bl AllocZeroed + str r0, [r4] + movs r0, 0x2 + strb r0, [r4, 0x8] + b _08116F20 +_08116EA4: + ldr r0, [r4, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r4] + movs r1, 0x10 + bl sub_811A5E4 + ldr r0, [r4, 0x4] + movs r1, 0xFF + bl sub_811A054 + movs r1, 0 + strb r0, [r4, 0x11] + strb r1, [r4, 0xF] + movs r0, 0x3 + strb r0, [r4, 0x8] + b _08116F20 +_08116EC8: + bl sub_8116FE4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08116EDA + movs r0, 0x2 + bl PlaySE +_08116EDA: + ldr r0, _08116EF4 @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + movs r2, 0x26 + ldrsh r0, [r1, r2] + cmp r0, 0xFF + bne _08116F20 + movs r0, 0xA + strb r0, [r4, 0x8] + b _08116F20 + .align 2, 0 +_08116EF4: .4byte gTasks +_08116EF8: + ldrb r0, [r4, 0x11] + bl DestroyTask + ldr r0, [r4] + bl Free + ldr r0, [r4, 0x4] + bl Free + bl sub_80F8DC0 + ldrb r0, [r4, 0x8] + adds r0, 0x1 + strb r0, [r4, 0x8] + b _08116F20 +_08116F16: + bl sub_80F8DC0 + adds r0, r5, 0 + bl DestroyTask +_08116F20: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8116E1C + + thumb_func_start sub_8116F28 +sub_8116F28: @ 8116F28 + push {lr} + adds r2, r0, 0 + cmp r1, 0xFF + bne _08116F34 +_08116F30: + movs r0, 0x1 + b _08116F58 +_08116F34: + cmp r1, 0xD + bhi _08116F56 + ldr r0, _08116F44 @ =gUnknown_8457094 + lsls r1, 2 + adds r1, r0 + ldr r1, [r1] + b _08116F50 + .align 2, 0 +_08116F44: .4byte gUnknown_8457094 +_08116F48: + ldrb r0, [r1] + cmp r0, r2 + beq _08116F30 + adds r1, 0x1 +_08116F50: + ldrb r0, [r1] + cmp r0, 0xFF + bne _08116F48 +_08116F56: + movs r0, 0 +_08116F58: + pop {r1} + bx r1 + thumb_func_end sub_8116F28 + + thumb_func_start sub_8116F5C +sub_8116F5C: @ 8116F5C + push {lr} + ldr r0, [r0] + lsls r1, 5 + adds r1, r0, r1 + ldrb r2, [r1, 0x1A] + lsls r0, r2, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08116F8E + ldrb r0, [r1, 0xA] + lsrs r0, 7 + cmp r0, 0 + beq _08116F7A + movs r0, 0x3 + b _08116F90 +_08116F7A: + lsls r0, r2, 29 + cmp r0, 0 + bge _08116F84 + movs r0, 0x1 + b _08116F90 +_08116F84: + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _08116F8E + movs r0, 0x2 + b _08116F90 +_08116F8E: + movs r0, 0 +_08116F90: + pop {r1} + bx r1 + thumb_func_end sub_8116F5C + + thumb_func_start sub_8116F94 +sub_8116F94: @ 8116F94 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _08116FE0 @ =gUnknown_203B05C + ldr r0, [r0] + mov r8, r0 + bl sub_8116F5C + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 5 + mov r2, r8 + ldr r3, [r2] + adds r3, r1 + str r0, [sp] + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0x8 + adds r2, r6, 0 + bl sub_811A81C + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08116FE0: .4byte gUnknown_203B05C + thumb_func_end sub_8116F94 + + thumb_func_start sub_8116FE4 +sub_8116FE4: @ 8116FE4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r0, _0811704C @ =gUnknown_203B05C + ldr r6, [r0] + movs r7, 0 + movs r3, 0 +_08116FF4: + ldr r0, [r6] + lsls r5, r3, 5 + adds r2, r0, r5 + ldrb r0, [r2, 0x1A] + lsls r0, 30 + mov r8, r5 + cmp r0, 0 + beq _081170C0 + ldr r1, [r6, 0x4] + adds r0, r2, 0 + str r3, [sp] + bl sub_811A748 + adds r4, r0, 0 + ldr r3, [sp] + cmp r4, 0xFF + beq _0811708E + ldr r0, [r6] + adds r2, r0, r5 + ldrb r1, [r2, 0x1A] + lsls r0, r1, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _0811706C + lsls r0, r4, 3 + subs r0, r4 + lsls r4, r0, 2 + ldr r1, [r6, 0x4] + adds r1, r4 + adds r0, r2, 0 + bl sub_811A6DC + ldr r3, [sp] + cmp r0, 0 + beq _08117050 + ldr r1, [r6] + ldr r0, [r6, 0x4] + adds r1, r5 + adds r0, r4 + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + b _0811707A + .align 2, 0 +_0811704C: .4byte gUnknown_203B05C +_08117050: + ldr r0, [r6] + adds r1, r0, r5 + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _08117084 + subs r0, 0x1 + strb r0, [r1, 0x1B] + ldr r0, [r6] + adds r0, r5 + ldrb r0, [r0, 0x1B] + cmp r0, 0 + bne _08117084 + movs r7, 0x2 + b _08117084 +_0811706C: + movs r4, 0x4 + negs r4, r4 + adds r0, r4, 0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1A] +_0811707A: + ldr r0, [r6] + adds r0, r5 + movs r1, 0x40 + strb r1, [r0, 0x1B] + movs r7, 0x1 +_08117084: + ldr r0, [r6] + add r0, r8 + movs r1, 0 + strh r1, [r0, 0x18] + b _081170C0 +_0811708E: + ldr r0, [r6] + adds r1, r0, r5 + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x2 + beq _081170C0 + ldrh r0, [r1, 0x18] + adds r0, 0x1 + strh r0, [r1, 0x18] + ldr r0, [r6] + adds r2, r0, r5 + ldrh r1, [r2, 0x18] + ldr r0, _081170FC @ =0x0000012b + cmp r1, r0 + bls _081170C0 + ldrb r0, [r2, 0x1A] + movs r7, 0x4 + negs r7, r7 + adds r1, r7, 0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x1A] + movs r7, 0x2 +_081170C0: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _08116FF4 + movs r5, 0 + movs r4, 0x3 +_081170CE: + ldr r0, [r6] + ldr r1, [r6, 0x4] + adds r1, r5 + movs r2, 0x10 + bl sub_811A798 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _081170E4 + movs r7, 0x1 +_081170E4: + adds r5, 0x1C + subs r4, 0x1 + cmp r4, 0 + bge _081170CE + adds r0, r7, 0 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_081170FC: .4byte 0x0000012b + thumb_func_end sub_8116FE4 + + thumb_func_start sub_8117100 +sub_8117100: @ 8117100 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl CB2_ReturnFromLinkTrade + adds r0, r4, 0 + bl DestroyTask + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8117100 + + thumb_func_start sub_8117118 +sub_8117118: @ 8117118 + push {lr} + ldr r0, _0811712C @ =sub_8117100 + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0811712C: .4byte sub_8117100 + thumb_func_end sub_8117118 + + thumb_func_start sub_8117130 +sub_8117130: @ 8117130 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0811716C @ =gUnknown_203B06C + mov r8, r0 + bl GetMultiplayerId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_811B1EC + adds r7, r0, 0 + ldr r1, _08117170 @ =gTasks + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 3 + adds r5, r0, r1 + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0x1 + beq _0811719C + cmp r0, 0x1 + bgt _08117174 + cmp r0, 0 + beq _0811717E + b _0811725C + .align 2, 0 +_0811716C: .4byte gUnknown_203B06C +_08117170: .4byte gTasks +_08117174: + cmp r0, 0x2 + beq _081171D8 + cmp r0, 0x3 + beq _08117210 + b _0811725C +_0811717E: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x64 + adds r1, r7, 0 + muls r1, r0 + ldr r0, _08117198 @ =gPlayerParty + adds r1, r0 + movs r0, 0 + movs r2, 0x64 + bl SendBlock + b _0811725C + .align 2, 0 +_08117198: .4byte gPlayerParty +_0811719C: + bl GetBlockReceivedStatus + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0811725C + bl GetMultiplayerId + adds r1, r0, 0 + ldr r0, _081171D0 @ =gEnemyParty + movs r2, 0x1 + eors r1, r2 + lsls r1, 24 + lsrs r1, 16 + ldr r2, _081171D4 @ =gBlockRecvBuffer + adds r1, r2 + movs r2, 0x64 + bl memcpy + movs r0, 0x32 + bl IncrementGameStat + bl ResetBlockReceivedFlags + b _081171FA + .align 2, 0 +_081171D0: .4byte gEnemyParty +_081171D4: .4byte gBlockRecvBuffer +_081171D8: + ldr r4, _08117204 @ =gBlockSendBuffer + ldr r0, _08117208 @ =gSaveBlock1Ptr + ldr r1, [r0] + ldr r0, _0811720C @ =0x00002cd0 + adds r1, r0 + adds r0, r4, 0 + movs r2, 0xDC + bl memcpy + movs r0, 0 + adds r1, r4, 0 + movs r2, 0xDC + bl SendBlock + lsls r0, 24 + cmp r0, 0 + beq _0811725C +_081171FA: + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + b _0811725C + .align 2, 0 +_08117204: .4byte gBlockSendBuffer +_08117208: .4byte gSaveBlock1Ptr +_0811720C: .4byte 0x00002cd0 +_08117210: + bl GetBlockReceivedStatus + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0811725C + ldr r4, _08117268 @ =gLinkPartnerMail + bl GetMultiplayerId + adds r1, r0, 0 + movs r0, 0x1 + eors r1, r0 + lsls r1, 24 + lsrs r1, 16 + ldr r0, _0811726C @ =gBlockRecvBuffer + adds r1, r0 + adds r0, r4, 0 + movs r2, 0xD8 + bl memcpy + bl ResetBlockReceivedFlags + ldr r1, _08117270 @ =gSelectedTradeMonPositions + strb r7, [r1] + movs r0, 0x6 + strb r0, [r1, 0x1] + ldr r1, _08117274 @ =gMain + ldr r0, _08117278 @ =CB2_ReturnToField + str r0, [r1, 0x8] + ldr r0, _0811727C @ =CB2_InitTradeAnim_LinkTrade + bl SetMainCallback2 + mov r0, r8 + bl sub_811B148 + adds r0, r6, 0 + bl DestroyTask +_0811725C: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08117268: .4byte gLinkPartnerMail +_0811726C: .4byte gBlockRecvBuffer +_08117270: .4byte gSelectedTradeMonPositions +_08117274: .4byte gMain +_08117278: .4byte CB2_ReturnToField +_0811727C: .4byte CB2_InitTradeAnim_LinkTrade + thumb_func_end sub_8117130 + + thumb_func_start sub_8117280 +sub_8117280: @ 8117280 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r1, _081172A4 @ =gTasks + lsls r0, 2 + add r0, r8 + lsls r0, 3 + adds r4, r0, r1 + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _081172A8 + cmp r0, 0x1 + beq _081172C0 + b _0811734A + .align 2, 0 +_081172A4: .4byte gTasks +_081172A8: + bl GetMultiplayerId + lsls r0, 24 + cmp r0, 0 + bne _081172B8 + movs r0, 0x2 + bl sub_800A474 +_081172B8: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + b _0811734A +_081172C0: + bl GetBlockReceivedStatus + adds r4, r0, 0 + bl sub_800A8D4 + lsls r4, 24 + lsls r0, 24 + cmp r4, r0 + bne _0811734A + movs r4, 0 + ldr r0, _081172E0 @ =gTrainerCards + adds r7, r0, 0 + adds r7, 0x38 + ldr r6, _081172E4 @ =gLinkPlayers + adds r5, r0, 0 + b _08117302 + .align 2, 0 +_081172E0: .4byte gTrainerCards +_081172E4: .4byte gLinkPlayers +_081172E8: + lsls r0, r4, 8 + ldr r1, _08117338 @ =gBlockRecvBuffer + adds r1, r0, r1 + adds r0, r5, 0 + movs r2, 0x60 + bl memcpy + ldrh r0, [r6] + strb r0, [r7] + adds r7, 0x60 + adds r6, 0x1C + adds r5, 0x60 + adds r4, 0x1 +_08117302: + bl GetLinkPlayerCount + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + blt _081172E8 + bl GetLinkPlayerCount + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0811733C + bl GetMultiplayerId + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 16 + ldr r1, _08117338 @ =gBlockRecvBuffer + adds r1, r0, r1 + adds r0, r1, 0 + adds r0, 0x60 + ldrh r0, [r0] + bl sub_81446D0 + b _08117340 + .align 2, 0 +_08117338: .4byte gBlockRecvBuffer +_0811733C: + bl sub_81446C4 +_08117340: + bl ResetBlockReceivedFlags + mov r0, r8 + bl DestroyTask +_0811734A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8117280 + + thumb_func_start sub_8117354 +sub_8117354: @ 8117354 + push {r4,lr} + ldr r0, _0811736C @ =gMain + movs r1, 0x87 + lsls r1, 3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + beq _08117370 + cmp r0, 0x1 + beq _08117384 + b _081173A2 + .align 2, 0 +_0811736C: .4byte gMain +_08117370: + ldr r0, _08117380 @ =sub_8117280 + movs r1, 0x5 + bl CreateTask + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _081173A2 + .align 2, 0 +_08117380: .4byte sub_8117280 +_08117384: + ldr r0, _081173B8 @ =sub_8117280 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _081173A2 + bl GetMultiplayerId + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081173BC @ =CB2_ReturnToField + bl ShowTrainerCardInLink +_081173A2: + bl RunTasks + bl RunTextPrinters + bl AnimateSprites + bl BuildOamBuffer + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081173B8: .4byte sub_8117280 +_081173BC: .4byte CB2_ReturnToField + thumb_func_end sub_8117354 + + thumb_func_start sub_81173C0 +sub_81173C0: @ 81173C0 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r6, 16 + lsrs r6, 16 + bl HealPlayerParty + bl SavePlayerParty + bl LoadPlayerBag + ldr r5, _0811742C @ =gLinkPlayers + ldr r0, _08117430 @ =0x00002211 + str r0, [r5, 0x14] + bl GetMultiplayerId + adds r4, r0, 0 + bl GetMultiplayerId + lsls r4, 24 + lsrs r4, 24 + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + adds r1, r5 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x18] + bl GetMultiplayerId + adds r4, r0, 0 + bl GetMultiplayerId + movs r2, 0x1 + eors r4, r2 + lsls r4, 24 + lsrs r4, 24 + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + adds r1, r5 + eors r0, r2 + lsls r0, 24 + lsrs r0, 24 + strh r0, [r1, 0x18] + ldr r1, _08117434 @ =gMain + ldr r0, _08117438 @ =sub_8081668 + str r0, [r1, 0x8] + ldr r0, _0811743C @ =gBattleTypeFlags + str r6, [r0] + bl PlayBattleBGM + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811742C: .4byte gLinkPlayers +_08117430: .4byte 0x00002211 +_08117434: .4byte gMain +_08117438: .4byte sub_8081668 +_0811743C: .4byte gBattleTypeFlags + thumb_func_end sub_81173C0 + + thumb_func_start sub_8117440 +sub_8117440: @ 8117440 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x8 + adds r3, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldr r0, _081174AC @ =0x0000406f + adds r1, r3, 0 + bl VarSet + ldr r6, _081174B0 @ =gSaveBlock1Ptr + ldr r1, [r6] + movs r0, 0x4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + movs r2, 0x1 + negs r2, r2 + mov r8, r2 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + str r5, [sp] + adds r3, r4, 0 + bl SetWarpDestination + ldr r0, [r6] + movs r1, 0x4 + ldrsb r1, [r0, r1] + movs r2, 0x5 + ldrsb r2, [r0, r2] + str r4, [sp] + str r5, [sp, 0x4] + movs r0, 0 + mov r3, r8 + bl SetDynamicWarpWithCoords + bl WarpIntoMap + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081174AC: .4byte 0x0000406f +_081174B0: .4byte gSaveBlock1Ptr + thumb_func_end sub_8117440 + + thumb_func_start sub_81174B4 +sub_81174B4: @ 81174B4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + mov r8, r2 + adds r6, r3, 0 + ldr r1, [sp, 0x18] + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _08117524 @ =gSpecialVar_0x8004 + strh r1, [r0] + ldr r0, _08117528 @ =0x0000406f + bl VarSet + bl GetLinkPlayerCount + ldr r1, _0811752C @ =gUnknown_3005030 + strb r0, [r1] + bl GetMultiplayerId + ldr r1, _08117530 @ =gUnknown_300502C + strb r0, [r1] + bl SetCableClubWarp + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + movs r2, 0x1 + negs r2, r2 + mov r0, r8 + lsls r0, 24 + asrs r0, 24 + mov r8, r0 + lsls r6, 24 + asrs r6, 24 + str r6, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + mov r3, r8 + bl SetWarpDestination + bl WarpIntoMap + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08117524: .4byte gSpecialVar_0x8004 +_08117528: .4byte 0x0000406f +_0811752C: .4byte gUnknown_3005030 +_08117530: .4byte gUnknown_300502C + thumb_func_end sub_81174B4 + + thumb_func_start sub_8117534 +sub_8117534: @ 8117534 + push {r4,lr} + ldr r0, _0811754C @ =gMain + movs r1, 0x87 + lsls r1, 3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + beq _08117550 + cmp r0, 0x1 + beq _08117564 + b _08117576 + .align 2, 0 +_0811754C: .4byte gMain +_08117550: + ldr r0, _08117560 @ =sub_8117280 + movs r1, 0x5 + bl CreateTask + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08117576 + .align 2, 0 +_08117560: .4byte sub_8117280 +_08117564: + ldr r0, _0811758C @ =sub_8117280 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _08117576 + ldr r0, _08117590 @ =sub_8056788 + bl SetMainCallback2 +_08117576: + bl RunTasks + bl RunTextPrinters + bl AnimateSprites + bl BuildOamBuffer + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811758C: .4byte sub_8117280 +_08117590: .4byte sub_8056788 + thumb_func_end sub_8117534 + + thumb_func_start sub_8117594 +sub_8117594: @ 8117594 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl TrainerCard_GenerateCardForLinkPlayer + cmp r5, 0 + beq _081175AE + bl sub_81440E8 + adds r1, r4, 0 + adds r1, 0x60 + strh r0, [r1] + b _081175B4 +_081175AE: + adds r0, r4, 0 + adds r0, 0x60 + strh r5, [r0] +_081175B4: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8117594 + + thumb_func_start sub_81175BC +sub_81175BC: @ 81175BC + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_81446C4 + ldr r0, _081175DC @ =gUnknown_203B058 + ldrb r0, [r0] + subs r0, 0x1 + cmp r0, 0xD + bhi _08117620 + lsls r0, 2 + ldr r1, _081175E0 @ =_081175E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081175DC: .4byte gUnknown_203B058 +_081175E0: .4byte _081175E4 + .align 2, 0 +_081175E4: + .4byte _0811761C + .4byte _0811761C + .4byte _0811761C + .4byte _0811761C + .4byte _08117620 + .4byte _08117620 + .4byte _08117620 + .4byte _08117620 + .4byte _0811761C + .4byte _0811761C + .4byte _0811761C + .4byte _08117620 + .4byte _0811761C + .4byte _0811761C +_0811761C: + bl RecordMixTrainerNames +_08117620: + ldr r0, _08117638 @ =gUnknown_203B058 + ldrb r0, [r0] + subs r0, 0x1 + cmp r0, 0x50 + bls _0811762C + b _081178E0 +_0811762C: + lsls r0, 2 + ldr r1, _0811763C @ =_08117640 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08117638: .4byte gUnknown_203B058 +_0811763C: .4byte _08117640 + .align 2, 0 +_08117640: + .4byte _081177A0 + .4byte _081177C8 + .4byte _081177F0 + .4byte _08117818 + .4byte _08117854 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117878 + .4byte _08117890 + .4byte _081178B0 + .4byte _081178C8 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117784 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117844 + .4byte _08117854 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117878 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _081178E0 + .4byte _08117784 +_08117784: + bl CleanupOverworldWindowsAndTilemaps + ldr r1, _08117798 @ =gMain + ldr r0, _0811779C @ =sub_811C1C8 + str r0, [r1, 0x8] + movs r0, 0x2 + bl InitChooseHalfPartyForBattle + b _081178E0 + .align 2, 0 +_08117798: .4byte gMain +_0811779C: .4byte sub_811C1C8 +_081177A0: + bl CleanupOverworldWindowsAndTilemaps + ldr r0, _081177C4 @ =gBlockSendBuffer + movs r1, 0x1 + bl sub_8117594 + bl HealPlayerParty + bl SavePlayerParty + bl LoadPlayerBag + movs r0, 0x1 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x6 + b _0811782E + .align 2, 0 +_081177C4: .4byte gBlockSendBuffer +_081177C8: + bl CleanupOverworldWindowsAndTilemaps + bl HealPlayerParty + bl SavePlayerParty + bl LoadPlayerBag + ldr r0, _081177EC @ =gBlockSendBuffer + movs r1, 0x1 + bl sub_8117594 + movs r0, 0x2 + str r0, [sp] + movs r0, 0 + movs r1, 0 + movs r2, 0x6 + b _0811782E + .align 2, 0 +_081177EC: .4byte gBlockSendBuffer +_081177F0: + bl CleanupOverworldWindowsAndTilemaps + bl HealPlayerParty + bl SavePlayerParty + bl LoadPlayerBag + ldr r0, _08117814 @ =gBlockSendBuffer + movs r1, 0x1 + bl sub_8117594 + movs r0, 0x5 + str r0, [sp] + movs r0, 0 + movs r1, 0x3 + b _0811782C + .align 2, 0 +_08117814: .4byte gBlockSendBuffer +_08117818: + ldr r0, _0811783C @ =gBlockSendBuffer + movs r1, 0x1 + bl sub_8117594 + bl CleanupOverworldWindowsAndTilemaps + movs r0, 0x3 + str r0, [sp] + movs r0, 0 + movs r1, 0x1 +_0811782C: + movs r2, 0x5 +_0811782E: + movs r3, 0x8 + bl sub_81174B4 + ldr r0, _08117840 @ =sub_8117534 + bl SetMainCallback2 + b _081178E0 + .align 2, 0 +_0811783C: .4byte gBlockSendBuffer +_08117840: .4byte sub_8117534 +_08117844: + ldr r0, _08117850 @ =sub_8117130 + movs r1, 0 + bl CreateTask + b _081178E0 + .align 2, 0 +_08117850: .4byte sub_8117130 +_08117854: + bl GetMultiplayerId + lsls r0, 24 + cmp r0, 0 + bne _08117864 + bl sub_80F8CFC + b _08117872 +_08117864: + bl sub_80F8D14 + movs r0, 0x45 + movs r1, 0 + movs r2, 0x1 + bl sub_80FAF58 +_08117872: + bl sub_8128420 + b _081178E0 +_08117878: + ldr r0, _08117888 @ =gBlockSendBuffer + movs r1, 0 + bl sub_8117594 + ldr r0, _0811788C @ =sub_8117354 + bl SetMainCallback2 + b _081178E0 + .align 2, 0 +_08117888: .4byte gBlockSendBuffer +_0811788C: .4byte sub_8117354 +_08117890: + movs r0, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_8117440 + bl GetCursorSelectionMonId + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081178AC @ =CB2_LoadMap + bl sub_8147AA8 + b _081178E0 + .align 2, 0 +_081178AC: .4byte CB2_LoadMap +_081178B0: + movs r0, 0x7 + movs r1, 0x9 + movs r2, 0x1 + bl sub_8117440 + ldr r0, _081178C4 @ =CB2_LoadMap + bl sub_814B754 + b _081178E0 + .align 2, 0 +_081178C4: .4byte CB2_LoadMap +_081178C8: + movs r0, 0x8 + movs r1, 0x5 + movs r2, 0x1 + bl sub_8117440 + bl GetCursorSelectionMonId + lsls r0, 24 + lsrs r0, 24 + ldr r1, _081178F8 @ =CB2_LoadMap + bl sub_81507FC +_081178E0: + adds r0, r4, 0 + bl DestroyTask + ldr r1, _081178FC @ =gSpecialVar_Result + movs r0, 0x1 + strh r0, [r1] + bl ScriptContext2_Disable + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081178F8: .4byte CB2_LoadMap +_081178FC: .4byte gSpecialVar_Result + thumb_func_end sub_81175BC + + thumb_func_start sub_8117900 +sub_8117900: @ 8117900 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08117924 @ =gTasks+0x8 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _08117944 + cmp r0, 0x1 + bgt _08117928 + cmp r0, 0 + beq _08117932 + b _08117988 + .align 2, 0 +_08117924: .4byte gTasks+0x8 +_08117928: + cmp r0, 0x2 + beq _08117958 + cmp r0, 0x3 + beq _08117974 + b _08117988 +_08117932: + ldr r1, _08117940 @ =gSpecialVar_Result + movs r0, 0x1 + strh r0, [r1] + bl EnableBothScriptContexts + b _08117968 + .align 2, 0 +_08117940: .4byte gSpecialVar_Result +_08117944: + bl ScriptContext1_IsScriptSetUp + lsls r0, 24 + cmp r0, 0 + bne _08117988 + movs r0, 0x1 + movs r1, 0 + bl fade_screen + b _08117968 +_08117958: + ldr r0, _08117970 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _08117988 + bl sub_800AB9C +_08117968: + ldrh r0, [r4] + adds r0, 0x1 + strh r0, [r4] + b _08117988 + .align 2, 0 +_08117970: .4byte gPaletteFade +_08117974: + bl IsLinkTaskFinished + lsls r0, 24 + cmp r0, 0 + beq _08117988 + adds r0, r5, 0 + bl DestroyTask + bl sub_81179A4 +_08117988: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8117900 + + thumb_func_start sub_8117990 +sub_8117990: @ 8117990 + push {lr} + ldr r0, _081179A0 @ =sub_8117900 + movs r1, 0 + bl CreateTask + pop {r0} + bx r0 + .align 2, 0 +_081179A0: .4byte sub_8117900 + thumb_func_end sub_8117990 + + thumb_func_start sub_81179A4 +sub_81179A4: @ 81179A4 + push {lr} + ldr r0, _081179C4 @ =sub_81175BC + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081179C8 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_081179C4: .4byte sub_81175BC +_081179C8: .4byte gTasks + thumb_func_end sub_81179A4 + + thumb_func_start MEvent_CreateTask_Leader +MEvent_CreateTask_Leader: @ 81179CC + push {r4,lr} + adds r4, r0, 0 + ldr r0, _081179FC @ =sub_8117A0C + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08117A00 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08117A04 @ =gTasks+0x8 + adds r1, r0 + str r1, [r2] + movs r2, 0 + strb r2, [r1, 0xC] + strb r2, [r1, 0xD] + strb r4, [r1, 0x18] + ldr r0, _08117A08 @ =gSpecialVar_Result + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081179FC: .4byte sub_8117A0C +_08117A00: .4byte gUnknown_203B05C +_08117A04: .4byte gTasks+0x8 +_08117A08: .4byte gSpecialVar_Result + thumb_func_end MEvent_CreateTask_Leader + + thumb_func_start sub_8117A0C +sub_8117A0C: @ 8117A0C + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08117A2C @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0xC] + cmp r0, 0x11 + bls _08117A20 + b _08117ECA +_08117A20: + lsls r0, 2 + ldr r1, _08117A30 @ =_08117A34 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08117A2C: .4byte gUnknown_203B05C +_08117A30: .4byte _08117A34 + .align 2, 0 +_08117A34: + .4byte _08117A7C + .4byte _08117AB8 + .4byte _08117B7C + .4byte _08117BAC + .4byte _08117BBC + .4byte _08117C0C + .4byte _08117BE4 + .4byte _08117C12 + .4byte _08117CB2 + .4byte _08117D94 + .4byte _08117DA4 + .4byte _08117DBA + .4byte _08117DD2 + .4byte _08117DEE + .4byte _08117E26 + .4byte _08117E4C + .4byte _08117E80 + .4byte _08117EBA +_08117A7C: + ldr r1, _08117AB0 @ =gUnknown_203B058 + ldrb r0, [r5, 0x18] + strb r0, [r1] + ldr r1, _08117AB4 @ =gUnknown_203B059 + movs r0, 0x2 + strb r0, [r1] + ldrb r0, [r5, 0x18] + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + movs r0, 0 + movs r1, 0 + bl sub_80FAF74 + bl sub_800B1F4 + bl OpenLink + movs r0, 0x2 + bl sub_80FBB8C + movs r0, 0x1 + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117AB0: .4byte gUnknown_203B058 +_08117AB4: .4byte gUnknown_203B059 +_08117AB8: + movs r0, 0x70 + bl AllocZeroed + str r0, [r5, 0x4] + movs r0, 0xA0 + bl AllocZeroed + str r0, [r5] + movs r0, 0xA0 + bl AllocZeroed + str r0, [r5, 0x8] + ldr r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r5] + movs r1, 0x5 + bl sub_811A5E4 + ldr r0, [r5] + adds r1, r0, 0 + adds r1, 0x10 + bl sub_80FCD50 + ldr r1, [r5] + movs r3, 0 + movs r0, 0 + strh r0, [r1, 0x18] + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + subs r0, 0x4 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1A] + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0x1A] + ldr r0, [r5] + strb r3, [r0, 0x1B] + ldr r0, [r5, 0x4] + movs r1, 0xFF + bl sub_811A054 + strb r0, [r5, 0x17] + ldr r0, _08117B6C @ =gUnknown_8456CFC + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + bl GetMysteryGiftBaseBlock + lsls r0, 16 + ldr r2, _08117B70 @ =0x0000ffff + ldr r1, [sp, 0x4] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl AddWindow + strb r0, [r5, 0xF] + ldrb r0, [r5, 0xF] + bl MG_DrawTextBorder + ldr r0, _08117B74 @ =gMultiuseListMenuTemplate + adds r2, r0, 0 + ldr r1, _08117B78 @ =gUnknown_8456D34 + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldrb r1, [r5, 0xF] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl ListMenuInit + strb r0, [r5, 0x12] + movs r0, 0 + bl CopyBgTilemapBufferToVram + movs r0, 0x1 + strb r0, [r5, 0x13] + b _08117C02 + .align 2, 0 +_08117B6C: .4byte gUnknown_8456CFC +_08117B70: .4byte 0x0000ffff +_08117B74: .4byte gMultiuseListMenuTemplate +_08117B78: .4byte gUnknown_8456D34 +_08117B7C: + ldr r0, _08117B9C @ =gStringVar1 + ldr r2, _08117BA0 @ =gUnknown_8456C74 + ldr r4, _08117BA4 @ =gUnknown_203B058 + ldrb r1, [r4] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl StringCopy + ldr r0, _08117BA8 @ =gStringVar4 + ldrb r1, [r4] + bl sub_811599C + movs r0, 0x3 + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117B9C: .4byte gStringVar1 +_08117BA0: .4byte gUnknown_8456C74 +_08117BA4: .4byte gUnknown_203B058 +_08117BA8: .4byte gStringVar4 +_08117BAC: + ldr r0, _08117BB8 @ =gStringVar4 + bl AddTextPrinterToWindow1 + movs r0, 0x4 + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117BB8: .4byte gStringVar4 +_08117BBC: + adds r0, r5, 0 + movs r1, 0x5 + movs r2, 0x6 + bl sub_8116444 + ldr r0, _08117BE0 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08117BD4 + b _08117ECA +_08117BD4: + movs r0, 0xD + strb r0, [r5, 0xC] + bl DestroyWirelessStatusIndicatorSprite + b _08117ECA + .align 2, 0 +_08117BE0: .4byte gMain +_08117BE4: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08117C08 @ =gUnknown_84577F8 + bl MG_PrintTextOnWindow1AndWaitButton + cmp r0, 0 + bne _08117BF4 + b _08117ECA +_08117BF4: + ldr r0, [r5] + bl sub_81165E8 + strb r0, [r5, 0x13] + ldrb r0, [r5, 0x12] + bl RedrawListMenu +_08117C02: + movs r0, 0x2 + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117C08: .4byte gUnknown_84577F8 +_08117C0C: + movs r0, 0x7 + strb r0, [r5, 0xC] + b _08117ECA +_08117C12: + adds r0, r5, 0 + adds r0, 0xD + adds r1, r5, 0 + adds r1, 0x14 + ldr r3, _08117C38 @ =gStringVar4 + movs r2, 0 + bl mevent_message_print_and_prompt_yes_no + lsls r0, 24 + asrs r4, r0, 24 + cmp r4, 0 + beq _08117C42 + cmp r4, 0 + bgt _08117C3C + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _08117C84 + b _08117ECA + .align 2, 0 +_08117C38: .4byte gStringVar4 +_08117C3C: + cmp r4, 0x1 + beq _08117C84 + b _08117ECA +_08117C42: + bl LoadWirelessStatusIndicatorSpriteGfx + movs r0, 0 + movs r1, 0 + bl CreateWirelessStatusIndicatorSprite + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + strb r4, [r1, 0x1B] + ldrb r0, [r5, 0x12] + bl RedrawListMenu + movs r0, 0x5 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r2, [r5] + adds r2, r0 + adds r2, 0x10 + movs r0, 0x5 + b _08117CA8 +_08117C84: + movs r0, 0x6 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + ldrb r0, [r5, 0x13] + lsls r0, 5 + ldr r2, [r5] + adds r2, r0 + adds r2, 0x10 + movs r0, 0x6 +_08117CA8: + bl sub_80FA670 + movs r0, 0x8 + strb r0, [r5, 0xC] + b _08117ECA +_08117CB2: + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r0, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + ldrb r2, [r5, 0x13] + lsls r2, 5 + ldr r1, [r5] + adds r1, r2 + adds r1, 0x10 + bl sub_80FA6FC + adds r4, r0, 0 + cmp r4, 0x1 + bne _08117D82 + ldrb r0, [r5, 0x19] + cmp r0, 0x5 + bne _08117D3C + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + movs r0, 0 + strb r0, [r1, 0x1B] + ldrb r0, [r5, 0x12] + bl RedrawListMenu + ldrb r0, [r5, 0x13] + adds r0, 0x1 + strb r0, [r5, 0x13] + ldr r4, _08117D30 @ =gStringVar1 + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r1, r0 + subs r1, 0x10 + adds r0, r4, 0 + bl StringCopy7 + ldr r1, [r5] + ldrb r0, [r5, 0x13] + subs r0, 0x1 + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + ldr r0, _08117D34 @ =gStringVar4 + ldr r1, _08117D38 @ =gUnknown_8457554 + bl StringExpandPlaceholders + movs r0, 0x9 + strb r0, [r5, 0xC] + bl sub_80F8F5C + b _08117D7C + .align 2, 0 +_08117D30: .4byte gStringVar1 +_08117D34: .4byte gStringVar4 +_08117D38: .4byte gUnknown_8457554 +_08117D3C: + ldrb r1, [r5, 0x13] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBD4C + ldr r1, [r5] + ldrb r0, [r5, 0x13] + lsls r0, 5 + adds r1, r0 + ldrb r2, [r1, 0x1A] + movs r0, 0x4 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x1A] + ldr r0, [r5] + bl sub_81165E8 + ldrb r0, [r5, 0x12] + bl RedrawListMenu + movs r0, 0x2 + strb r0, [r5, 0xC] +_08117D7C: + movs r0, 0 + strb r0, [r5, 0x19] + b _08117ECA +_08117D82: + cmp r4, 0x2 + beq _08117D88 + b _08117ECA +_08117D88: + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + strb r4, [r5, 0xC] + b _08117ECA +_08117D94: + ldr r0, _08117DA0 @ =gStringVar4 + bl AddTextPrinterToWindow1 + movs r0, 0xA + strb r0, [r5, 0xC] + b _08117ECA + .align 2, 0 +_08117DA0: .4byte gStringVar4 +_08117DA4: + ldrb r0, [r5, 0xE] + adds r0, 0x1 + strb r0, [r5, 0xE] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x78 + bhi _08117DB4 + b _08117ECA +_08117DB4: + movs r0, 0xB + strb r0, [r5, 0xC] + b _08117ECA +_08117DBA: + adds r0, r5, 0 + movs r1, 0x5 + movs r2, 0x6 + bl sub_8116444 + lsls r0, 24 + cmp r0, 0 + beq _08117DCC + b _08117ECA +_08117DCC: + movs r0, 0xC + strb r0, [r5, 0xC] + b _08117ECA +_08117DD2: + bl sub_80F8F40 + lsls r0, 24 + cmp r0, 0 + beq _08117DE8 + movs r0, 0 + bl sub_80F8F7C + movs r0, 0xF + strb r0, [r5, 0xC] + b _08117ECA +_08117DE8: + movs r0, 0x6 + strb r0, [r5, 0xC] + b _08117ECA +_08117DEE: + bl DestroyWirelessStatusIndicatorSprite + bl sub_80F8DC0 + ldrb r0, [r5, 0x12] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + movs r0, 0 + bl CopyBgTilemapBufferToVram + ldrb r0, [r5, 0xF] + bl RemoveWindow + ldrb r0, [r5, 0x17] + bl DestroyTask + ldr r0, [r5, 0x8] + bl Free + ldr r0, [r5] + bl Free + ldr r0, [r5, 0x4] + bl Free + b _08117EB2 +_08117E26: + adds r0, r5, 0 + adds r0, 0xD + ldr r1, _08117E44 @ =gUnknown_84571B8 + bl MG_PrintTextOnWindow1AndWaitButton + cmp r0, 0 + beq _08117ECA + adds r0, r4, 0 + bl DestroyTask + ldr r1, _08117E48 @ =gSpecialVar_Result + movs r0, 0x5 + strh r0, [r1] + b _08117ECA + .align 2, 0 +_08117E44: .4byte gUnknown_84571B8 +_08117E48: .4byte gSpecialVar_Result +_08117E4C: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08117E64 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08117E6A +_08117E64: + movs r0, 0xD + strb r0, [r5, 0xC] + b _08117ECA +_08117E6A: + ldr r0, _08117E7C @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _08117ECA + movs r0, 0x1 + bl sub_80FAFE0 + b _08117EB2 + .align 2, 0 +_08117E7C: .4byte gReceivedRemoteLinkPlayers +_08117E80: + ldrb r0, [r5, 0x12] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + movs r0, 0 + bl CopyBgTilemapBufferToVram + ldrb r0, [r5, 0xF] + bl RemoveWindow + ldrb r0, [r5, 0x17] + bl DestroyTask + ldr r0, [r5, 0x8] + bl Free + ldr r0, [r5] + bl Free + ldr r0, [r5, 0x4] + bl Free + bl sub_800AB9C +_08117EB2: + ldrb r0, [r5, 0xC] + adds r0, 0x1 + strb r0, [r5, 0xC] + b _08117ECA +_08117EBA: + bl IsLinkTaskFinished + lsls r0, 24 + cmp r0, 0 + beq _08117ECA + adds r0, r4, 0 + bl DestroyTask +_08117ECA: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8117A0C + + thumb_func_start MEvent_CreateTask_CardOrNewsWithFriend +MEvent_CreateTask_CardOrNewsWithFriend: @ 8117ED4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _08117F0C @ =sub_8117F20 + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08117F10 @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _08117F14 @ =gTasks+0x8 + adds r1, r0 + str r1, [r2] + ldr r0, _08117F18 @ =gUnknown_3002028 + str r1, [r0] + movs r2, 0 + strb r2, [r1, 0x8] + strb r2, [r1, 0x9] + subs r4, 0x15 + strb r4, [r1, 0x12] + ldr r0, _08117F1C @ =gSpecialVar_Result + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08117F0C: .4byte sub_8117F20 +_08117F10: .4byte gUnknown_203B05C +_08117F14: .4byte gTasks+0x8 +_08117F18: .4byte gUnknown_3002028 +_08117F1C: .4byte gSpecialVar_Result + thumb_func_end MEvent_CreateTask_CardOrNewsWithFriend + + thumb_func_start sub_8117F20 +sub_8117F20: @ 8117F20 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08117F40 @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0x8] + cmp r0, 0xC + bls _08117F34 + b _08118288 +_08117F34: + lsls r0, 2 + ldr r1, _08117F44 @ =_08117F48 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08117F40: .4byte gUnknown_203B05C +_08117F44: .4byte _08117F48 + .align 2, 0 +_08117F48: + .4byte _08117F7C + .4byte _08117FB0 + .4byte _08117FC0 + .4byte _08118070 + .4byte _08118150 + .4byte _0811818C + .4byte _081181EC + .4byte _08118248 + .4byte _081181EC + .4byte _08118222 + .4byte _081181EC + .4byte _0811826C + .4byte _08118278 +_08117F7C: + ldrb r0, [r5, 0x12] + adds r0, 0x15 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl OpenLink + bl sub_80FBBD8 + movs r0, 0x70 + bl AllocZeroed + str r0, [r5, 0x4] + movs r0, 0x80 + lsls r0, 2 + bl AllocZeroed + str r0, [r5] + movs r0, 0x1 + strb r0, [r5, 0x8] + b _08118288 +_08117FB0: + ldr r0, _08117FBC @ =gUnknown_8458FE4 + bl AddTextPrinterToWindow1 + movs r0, 0x2 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_08117FBC: .4byte gUnknown_8458FE4 +_08117FC0: + ldr r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r5] + movs r1, 0x10 + bl sub_811A5E4 + ldr r0, [r5, 0x4] + ldrb r1, [r5, 0x12] + adds r1, 0x7 + bl sub_811A054 + movs r4, 0 + strb r0, [r5, 0x11] + ldr r0, _0811805C @ =gUnknown_8456D4C + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + bl GetMysteryGiftBaseBlock + lsls r0, 16 + ldr r2, _08118060 @ =0x0000ffff + ldr r1, [sp, 0x4] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl AddWindow + strb r0, [r5, 0xB] + ldr r0, _08118064 @ =gUnknown_8456D54 + bl AddWindow + strb r0, [r5, 0xD] + ldrb r0, [r5, 0xB] + bl MG_DrawTextBorder + ldr r0, _08118068 @ =gMultiuseListMenuTemplate + adds r2, r0, 0 + ldr r1, _0811806C @ =gUnknown_8456DDC + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldrb r1, [r5, 0xB] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl ListMenuInit + strb r0, [r5, 0xE] + ldrb r0, [r5, 0xD] + bl MG_DrawTextBorder + ldrb r0, [r5, 0xD] + movs r1, 0x11 + bl FillWindowPixelBuffer + ldrb r0, [r5, 0xD] + bl PutWindowTilemap + ldrb r0, [r5, 0xD] + bl sub_8115924 + ldrb r0, [r5, 0xD] + movs r1, 0x2 + bl CopyWindowToVram + movs r0, 0 + bl CopyBgTilemapBufferToVram + strb r4, [r5, 0xF] + movs r0, 0x3 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_0811805C: .4byte gUnknown_8456D4C +_08118060: .4byte 0x0000ffff +_08118064: .4byte gUnknown_8456D54 +_08118068: .4byte gMultiuseListMenuTemplate +_0811806C: .4byte gUnknown_8456DDC +_08118070: + bl sub_8116FE4 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _0811808E + cmp r2, 0x1 + bne _08118086 + movs r0, 0x2 + bl PlaySE +_08118086: + ldrb r0, [r5, 0xE] + bl RedrawListMenu + b _08118288 +_0811808E: + ldrb r0, [r5, 0xE] + bl ListMenu_ProcessInput + adds r2, r0, 0 + ldr r0, _08118128 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08118138 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + beq _08118138 + ldr r0, [r5] + lsls r1, r2, 5 + adds r0, r1 + ldrb r1, [r0, 0xA] + ldrb r0, [r0, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08118130 + lsrs r0, r1, 7 + cmp r0, 0 + bne _08118130 + strb r2, [r5, 0xF] + bl LoadWirelessStatusIndicatorSpriteGfx + movs r0, 0 + movs r1, 0 + bl CreateWirelessStatusIndicatorSprite + ldrb r0, [r5, 0xE] + bl RedrawListMenu + ldr r4, _0811812C @ =gStringVar1 + ldrb r0, [r5, 0xF] + lsls r0, 5 + ldr r1, [r5] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + ldrb r1, [r5, 0xF] + lsls r1, 5 + ldr r0, [r5] + adds r0, r1 + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBF54 + movs r0, 0x67 + bl PlaySE + movs r0, 0x4 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_08118128: .4byte gMain +_0811812C: .4byte gStringVar1 +_08118130: + movs r0, 0x7 + bl PlaySE + b _08118288 +_08118138: + ldr r0, _0811814C @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08118146 + b _08118288 +_08118146: + movs r0, 0x6 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_0811814C: .4byte gMain +_08118150: + ldr r0, _08118184 @ =gUnknown_8459238 + bl AddTextPrinterToWindow1 + ldr r4, _08118188 @ =gStringVar1 + ldrb r0, [r5, 0xF] + lsls r0, 5 + ldr r1, [r5] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + movs r0, 0x5 + strb r0, [r5, 0x8] + b _08118288 + .align 2, 0 +_08118184: .4byte gUnknown_8459238 +_08118188: .4byte gStringVar1 +_0811818C: + ldr r0, _081181C4 @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _081181AA + ldr r2, _081181C8 @ =gUnknown_203B058 + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsls r0, 25 + lsrs r0, 25 + strb r0, [r2] + movs r0, 0xA + strb r0, [r5, 0x8] +_081181AA: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + beq _081181D6 + cmp r0, 0x5 + bgt _081181CC + cmp r0, 0x2 + bgt _08118288 + cmp r0, 0x1 + blt _08118288 + b _081181D0 + .align 2, 0 +_081181C4: .4byte gReceivedRemoteLinkPlayers +_081181C8: .4byte gUnknown_203B058 +_081181CC: + cmp r0, 0x6 + bne _08118288 +_081181D0: + movs r0, 0x8 + strb r0, [r5, 0x8] + b _08118288 +_081181D6: + ldr r0, _081181E8 @ =gUnknown_84576AC + bl AddTextPrinterToWindow1 + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + b _08118288 + .align 2, 0 +_081181E8: .4byte gUnknown_84576AC +_081181EC: + ldrb r0, [r5, 0xE] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + movs r0, 0 + bl CopyBgTilemapBufferToVram + ldrb r0, [r5, 0xD] + bl RemoveWindow + ldrb r0, [r5, 0xB] + bl RemoveWindow + ldrb r0, [r5, 0x11] + bl DestroyTask + ldr r0, [r5] + bl Free + ldr r0, [r5, 0x4] + bl Free + ldrb r0, [r5, 0x8] + adds r0, 0x1 + strb r0, [r5, 0x8] + b _08118288 +_08118222: + adds r5, 0x9 + ldr r4, _08118244 @ =gUnknown_8457838 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r1, [r0] + adds r0, r5, 0 + bl MG_PrintTextOnWindow1AndWaitButton + cmp r0, 0 + beq _08118288 + bl DestroyWirelessStatusIndicatorSprite + b _08118252 + .align 2, 0 +_08118244: .4byte gUnknown_8457838 +_08118248: + bl DestroyWirelessStatusIndicatorSprite + ldr r0, _08118264 @ =gUnknown_84571B8 + bl AddTextPrinterToWindow1 +_08118252: + adds r0, r6, 0 + bl DestroyTask + bl sub_80F8DC0 + ldr r1, _08118268 @ =gSpecialVar_Result + movs r0, 0x5 + strh r0, [r1] + b _08118288 + .align 2, 0 +_08118264: .4byte gUnknown_84571B8 +_08118268: .4byte gSpecialVar_Result +_0811826C: + ldrb r0, [r5, 0x8] + adds r0, 0x1 + strb r0, [r5, 0x8] + bl sub_800AB9C + b _08118288 +_08118278: + bl IsLinkTaskFinished + lsls r0, 24 + cmp r0, 0 + beq _08118288 + adds r0, r6, 0 + bl DestroyTask +_08118288: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8117F20 + + thumb_func_start MEvent_CreateTask_CardOrNewsOverWireless +MEvent_CreateTask_CardOrNewsOverWireless: @ 8118290 + push {r4,lr} + adds r4, r0, 0 + ldr r0, _081182C8 @ =sub_81182DC + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _081182CC @ =gUnknown_203B05C + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _081182D0 @ =gTasks+0x8 + adds r1, r0 + str r1, [r2] + ldr r0, _081182D4 @ =gUnknown_3002028 + str r1, [r0] + movs r2, 0 + strb r2, [r1, 0x8] + strb r2, [r1, 0x9] + subs r4, 0x15 + strb r4, [r1, 0x12] + ldr r0, _081182D8 @ =gSpecialVar_Result + strh r2, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_081182C8: .4byte sub_81182DC +_081182CC: .4byte gUnknown_203B05C +_081182D0: .4byte gTasks+0x8 +_081182D4: .4byte gUnknown_3002028 +_081182D8: .4byte gSpecialVar_Result + thumb_func_end MEvent_CreateTask_CardOrNewsOverWireless + + thumb_func_start sub_81182DC +sub_81182DC: @ 81182DC + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _081182FC @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0x8] + cmp r0, 0xE + bls _081182F0 + b _08118604 +_081182F0: + lsls r0, 2 + ldr r1, _08118300 @ =_08118304 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_081182FC: .4byte gUnknown_203B05C +_08118300: .4byte _08118304 + .align 2, 0 +_08118304: + .4byte _08118340 + .4byte _0811836E + .4byte _08118380 + .4byte _08118408 + .4byte _081184C8 + .4byte _08118504 + .4byte _08118564 + .4byte _081185A8 + .4byte _08118564 + .4byte _0811859A + .4byte _08118564 + .4byte _081185B4 + .4byte _08118564 + .4byte _081185E8 + .4byte _081185F4 +_08118340: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl OpenLink + bl sub_80FBBD8 + movs r0, 0x70 + bl AllocZeroed + str r0, [r5, 0x4] + movs r0, 0x80 + lsls r0, 2 + bl AllocZeroed + str r0, [r5] + movs r0, 0x1 + strb r0, [r5, 0x8] + b _08118604 +_0811836E: + ldr r0, _0811837C @ =gUnknown_84591DC + bl AddTextPrinterToWindow1 + movs r0, 0x2 + strb r0, [r5, 0x8] + b _08118604 + .align 2, 0 +_0811837C: .4byte gUnknown_84591DC +_08118380: + ldr r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r5] + movs r1, 0x10 + bl sub_811A5E4 + ldr r0, [r5, 0x4] + ldrb r1, [r5, 0x12] + adds r1, 0x7 + bl sub_811A084 + strb r0, [r5, 0x11] + ldrb r0, [r5, 0x13] + cmp r0, 0 + beq _081183EC + ldr r0, _081183F8 @ =gUnknown_8456D4C + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + bl GetMysteryGiftBaseBlock + lsls r0, 16 + ldr r2, _081183FC @ =0x0000ffff + ldr r1, [sp, 0x4] + ands r1, r2 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl AddWindow + strb r0, [r5, 0xB] + ldrb r0, [r5, 0xB] + bl MG_DrawTextBorder + ldr r0, _08118400 @ =gMultiuseListMenuTemplate + adds r2, r0, 0 + ldr r1, _08118404 @ =gUnknown_8456DDC + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldrb r1, [r5, 0xB] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl ListMenuInit + strb r0, [r5, 0xE] + movs r0, 0 + bl CopyBgTilemapBufferToVram +_081183EC: + movs r0, 0 + strb r0, [r5, 0xF] + movs r0, 0x3 + strb r0, [r5, 0x8] + b _08118604 + .align 2, 0 +_081183F8: .4byte gUnknown_8456D4C +_081183FC: .4byte 0x0000ffff +_08118400: .4byte gMultiuseListMenuTemplate +_08118404: .4byte gUnknown_8456DDC +_08118408: + bl sub_8116FE4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0811842E + cmp r0, 0x1 + bne _0811841E + movs r0, 0x2 + bl PlaySE +_0811841E: + ldrb r0, [r5, 0x13] + cmp r0, 0 + bne _08118426 + b _08118604 +_08118426: + ldrb r0, [r5, 0xE] + bl RedrawListMenu + b _08118604 +_0811842E: + ldrb r0, [r5, 0x13] + cmp r0, 0 + beq _0811843A + ldrb r0, [r5, 0xE] + bl ListMenu_ProcessInput +_0811843A: + ldrb r0, [r5, 0x14] + cmp r0, 0x78 + bls _081184A8 + ldr r2, [r5] + ldrb r1, [r2, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _081184BC + ldrb r1, [r2, 0xA] + movs r0, 0x80 + ands r0, r1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _081184BC + ldrb r1, [r5, 0x12] + adds r1, 0x7 + adds r0, r2, 0 + bl sub_8119FB0 + cmp r0, 0 + beq _0811849C + strb r4, [r5, 0xF] + strb r4, [r5, 0x14] + bl LoadWirelessStatusIndicatorSpriteGfx + movs r0, 0 + movs r1, 0 + bl CreateWirelessStatusIndicatorSprite + ldr r0, [r5] + adds r4, r0, 0 + adds r4, 0x10 + adds r0, 0x2 + bl sub_8118658 + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl sub_80FBF54 + movs r0, 0x67 + bl PlaySE + movs r0, 0x4 + strb r0, [r5, 0x8] + b _081184BC +_0811849C: + movs r0, 0x16 + bl PlaySE + movs r0, 0xA + strb r0, [r5, 0x8] + b _081184BC +_081184A8: + ldr r0, _081184C4 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _081184BC + movs r1, 0 + movs r0, 0x6 + strb r0, [r5, 0x8] + strb r1, [r5, 0x14] +_081184BC: + ldrb r0, [r5, 0x14] + adds r0, 0x1 + strb r0, [r5, 0x14] + b _08118604 + .align 2, 0 +_081184C4: .4byte gMain +_081184C8: + ldr r0, _081184FC @ =gUnknown_845928C + bl AddTextPrinterToWindow1 + ldr r4, _08118500 @ =gStringVar1 + ldrb r0, [r5, 0xF] + lsls r0, 5 + ldr r1, [r5] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + movs r0, 0x5 + strb r0, [r5, 0x8] + b _08118604 + .align 2, 0 +_081184FC: .4byte gUnknown_845928C +_08118500: .4byte gStringVar1 +_08118504: + ldr r0, _0811853C @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _08118522 + ldr r2, _08118540 @ =gUnknown_203B058 + ldr r1, [r5] + ldrb r0, [r5, 0xF] + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0xA] + lsls r0, 25 + lsrs r0, 25 + strb r0, [r2] + movs r0, 0xC + strb r0, [r5, 0x8] +_08118522: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + beq _0811854E + cmp r0, 0x5 + bgt _08118544 + cmp r0, 0x2 + bgt _08118604 + cmp r0, 0x1 + blt _08118604 + b _08118548 + .align 2, 0 +_0811853C: .4byte gReceivedRemoteLinkPlayers +_08118540: .4byte gUnknown_203B058 +_08118544: + cmp r0, 0x6 + bne _08118604 +_08118548: + movs r0, 0x8 + strb r0, [r5, 0x8] + b _08118604 +_0811854E: + ldr r0, _08118560 @ =gUnknown_845777C + bl AddTextPrinterToWindow1 + movs r0, 0 + movs r1, 0 + bl sub_80FB9E4 + b _08118604 + .align 2, 0 +_08118560: .4byte gUnknown_845777C +_08118564: + ldrb r0, [r5, 0x13] + cmp r0, 0 + beq _08118580 + ldrb r0, [r5, 0xE] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + movs r0, 0 + bl CopyBgTilemapBufferToVram + ldrb r0, [r5, 0xB] + bl RemoveWindow +_08118580: + ldrb r0, [r5, 0x11] + bl DestroyTask + ldr r0, [r5] + bl Free + ldr r0, [r5, 0x4] + bl Free + ldrb r0, [r5, 0x8] + adds r0, 0x1 + strb r0, [r5, 0x8] + b _08118604 +_0811859A: + adds r0, r5, 0 + adds r0, 0x9 + ldr r1, _081185A4 @ =gUnknown_84577BC + b _081185C2 + .align 2, 0 +_081185A4: .4byte gUnknown_84577BC +_081185A8: + adds r0, r5, 0 + adds r0, 0x9 + ldr r1, _081185B0 @ =gUnknown_84571E0 + b _081185C2 + .align 2, 0 +_081185B0: .4byte gUnknown_84571E0 +_081185B4: + adds r0, r5, 0 + adds r0, 0x9 + ldr r2, _081185E0 @ =gUnknown_845933C + ldrb r1, [r5, 0x12] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] +_081185C2: + bl MG_PrintTextOnWindow1AndWaitButton + cmp r0, 0 + beq _08118604 + bl DestroyWirelessStatusIndicatorSprite + adds r0, r4, 0 + bl DestroyTask + bl sub_80F8DC0 + ldr r1, _081185E4 @ =gSpecialVar_Result + movs r0, 0x5 + strh r0, [r1] + b _08118604 + .align 2, 0 +_081185E0: .4byte gUnknown_845933C +_081185E4: .4byte gSpecialVar_Result +_081185E8: + ldrb r0, [r5, 0x8] + adds r0, 0x1 + strb r0, [r5, 0x8] + bl sub_800AB9C + b _08118604 +_081185F4: + bl IsLinkTaskFinished + lsls r0, 24 + cmp r0, 0 + beq _08118604 + adds r0, r4, 0 + bl DestroyTask +_08118604: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_81182DC + + thumb_func_start UnionRoomSpecial +UnionRoomSpecial: @ 811860C + push {r4,lr} + bl sub_80FAF34 + ldr r0, _08118648 @ =sub_81186E0 + movs r1, 0xA + bl CreateTask + ldr r4, _0811864C @ =gUnknown_203B05C + movs r0, 0x96 + lsls r0, 2 + bl AllocZeroed + str r0, [r4] + ldr r1, _08118650 @ =gUnknown_300202C + str r0, [r1] + movs r1, 0 + strb r1, [r0, 0x14] + strb r1, [r0, 0x16] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + ldr r0, _08118654 @ =gSpecialVar_Result + strh r1, [r0] + movs r0, 0xD0 + movs r1, 0x1 + bl sub_8107D38 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08118648: .4byte sub_81186E0 +_0811864C: .4byte gUnknown_203B05C +_08118650: .4byte gUnknown_300202C +_08118654: .4byte gSpecialVar_Result + thumb_func_end UnionRoomSpecial + + thumb_func_start sub_8118658 +sub_8118658: @ 8118658 + ldrb r1, [r0, 0x1] + lsls r1, 8 + ldrb r0, [r0] + orrs r0, r1 + bx lr + thumb_func_end sub_8118658 + + thumb_func_start sub_8118664 +sub_8118664: @ 8118664 + push {lr} + adds r3, r1, 0 + ldr r1, _08118684 @ =gUnknown_203B05C + ldr r2, [r1] + movs r1, 0x8 + strb r1, [r2, 0x14] + strb r0, [r2, 0x15] + ldr r0, _08118688 @ =gStringVar4 + cmp r3, r0 + beq _0811867E + adds r1, r3, 0 + bl StringExpandPlaceholders +_0811867E: + pop {r0} + bx r0 + .align 2, 0 +_08118684: .4byte gUnknown_203B05C +_08118688: .4byte gStringVar4 + thumb_func_end sub_8118664 + + thumb_func_start sub_811868C +sub_811868C: @ 811868C + push {lr} + adds r2, r0, 0 + ldr r0, _081186A8 @ =gUnknown_203B05C + ldr r1, [r0] + movs r0, 0x1A + strb r0, [r1, 0x14] + ldr r0, _081186AC @ =gStringVar4 + cmp r2, r0 + beq _081186A4 + adds r1, r2, 0 + bl StringExpandPlaceholders +_081186A4: + pop {r0} + bx r0 + .align 2, 0 +_081186A8: .4byte gUnknown_203B05C +_081186AC: .4byte gStringVar4 + thumb_func_end sub_811868C + + thumb_func_start sub_81186B0 +sub_81186B0: @ 81186B0 + push {lr} + ldr r3, _081186C4 @ =gDecompressionBuffer + 0x3F00 + ldr r1, [r0] + movs r2, 0x80 + lsls r2, 1 + adds r0, r3, 0 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_081186C4: .4byte gDecompressionBuffer + 0x3F00 + thumb_func_end sub_81186B0 + + thumb_func_start sub_81186C8 +sub_81186C8: @ 81186C8 + push {lr} + ldr r0, [r0] + ldr r1, _081186DC @ =gDecompressionBuffer + 0x3F00 + movs r2, 0x80 + lsls r2, 1 + bl memcpy + pop {r0} + bx r0 + .align 2, 0 +_081186DC: .4byte gDecompressionBuffer + 0x3F00 + thumb_func_end sub_81186C8 + + thumb_func_start sub_81186E0 +sub_81186E0: @ 81186E0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0xC + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0 + ldr r0, _08118710 @ =gUnknown_203B05C + ldr r6, [r0] + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _08118714 @ =gTasks+0x8 + adds r7, r0, r1 + ldrb r0, [r6, 0x14] + cmp r0, 0x38 + bls _08118706 + bl _081198DC +_08118706: + lsls r0, 2 + ldr r1, _08118718 @ =_0811871C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08118710: .4byte gUnknown_203B05C +_08118714: .4byte gTasks+0x8 +_08118718: .4byte _0811871C + .align 2, 0 +_0811871C: + .4byte _08118800 + .4byte _08118858 + .4byte _0811887C + .4byte _081188CC + .4byte _081189AA + .4byte _08118E60 + .4byte _08118C58 + .4byte _08118E60 + .4byte _081198C8 + .4byte _081191D4 + .4byte _081192E0 + .4byte _081190B0 + .4byte _081190CA + .4byte _08119330 + .4byte _08119354 + .4byte _0811935C + .4byte _0811936C + .4byte _0811939A + .4byte _081193AE + .4byte _08118F36 + .4byte _08118FBC + .4byte _08118FDA + .4byte _0811904E + .4byte _08118ADE + .4byte _08118B04 + .4byte _08118B7C + .4byte _0811989C + .4byte _08118D50 + .4byte _08118D38 + .4byte _08118DD4 + .4byte _08118C2E + .4byte _08118DAA + .4byte _08118DA0 + .4byte _08119164 + .4byte _08119184 + .4byte _081191C4 + .4byte _081192E8 + .4byte _08119324 + .4byte _08118BF8 + .4byte _0811910C + .4byte _08118E98 + .4byte _08118EC8 + .4byte _081193D8 + .4byte _08119468 + .4byte _081195B8 + .4byte _08119620 + .4byte _0811963C + .4byte _08119484 + .4byte _08119644 + .4byte _08119784 + .4byte _081197B8 + .4byte _08119840 + .4byte _0811953C + .4byte _081194F0 + .4byte _08119504 + .4byte _0811959C + .4byte _081195EC +_08118800: + movs r0, 0x70 + bl AllocZeroed + str r0, [r6, 0x4] + movs r0, 0x70 + bl AllocZeroed + str r0, [r6, 0xC] + movs r0, 0x80 + lsls r0, 1 + bl AllocZeroed + str r0, [r6] + movs r0, 0x20 + bl AllocZeroed + str r0, [r6, 0x8] + ldr r0, [r6] + movs r1, 0x8 + bl sub_811A5E4 + ldr r1, _08118854 @ =gUnknown_203B058 + movs r0, 0x40 + strb r0, [r1] + ldr r0, [r6, 0xC] + ldr r1, [r6, 0x4] + movs r2, 0x9 + bl sub_8119E84 + adds r1, r6, 0 + adds r1, 0x20 + strb r0, [r1] + adds r0, r6, 0 + adds r0, 0x8C + bl sub_811B754 + bl sub_811BB68 + movs r0, 0x1 + bl _081198DA + .align 2, 0 +_08118854: .4byte gUnknown_203B058 +_08118858: + adds r0, r6, 0 + adds r0, 0x21 + movs r2, 0 + ldrsh r1, [r7, r2] + bl sub_811BAAC + ldrh r0, [r7] + adds r0, 0x1 + strh r0, [r7] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x8 + beq _08118876 + bl _081198DC +_08118876: + movs r0, 0x2 + bl _081198DA +_0811887C: + movs r0, 0x40 + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + ldr r2, _081188C4 @ =gUnknown_203B06C + ldrh r0, [r2, 0x2] + ldrh r1, [r2, 0xA] + ldrh r2, [r2, 0xC] + bl sub_80FAFA0 + bl sub_800B1F4 + bl OpenLink + bl sub_80FBC00 + ldr r0, [r6, 0x8] + movs r1, 0x1 + bl sub_811A5E4 + ldr r0, [r6, 0x4] + movs r1, 0x4 + bl sub_811A650 + ldr r0, [r6, 0xC] + movs r1, 0x4 + bl sub_811A650 + ldr r1, _081188C8 @ =gSpecialVar_Result + movs r0, 0 + strh r0, [r1] + movs r0, 0x3 + bl _081198DA + .align 2, 0 +_081188C4: .4byte gUnknown_203B06C +_081188C8: .4byte gSpecialVar_Result +_081188CC: + bl GetPartyMenuType + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8 + beq _081188E4 + bl GetPartyMenuType + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bne _081189A4 +_081188E4: + ldr r4, _08118900 @ =gUnknown_203B06C + ldrh r0, [r4] + cmp r0, 0 + beq _081189A4 + bl GetCursorSelectionMonId + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r4] + cmp r0, 0x1 + beq _08118904 + cmp r0, 0x2 + beq _08118954 + b _08118992 + .align 2, 0 +_08118900: .4byte gUnknown_203B06C +_08118904: + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + cmp r5, 0x5 + bls _08118930 + adds r0, r4, 0 + bl sub_811B148 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAFA0 + ldr r0, _0811892C @ =gUnknown_8458D54 + bl sub_811868C + b _08118992 + .align 2, 0 +_0811892C: .4byte gUnknown_8458D54 +_08118930: + bl GetCursorSelectionMonId + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_811B16C + cmp r0, 0 + bne _08118950 + ldr r1, _0811894C @ =gUnknown_8458CD4 + movs r0, 0x34 + bl sub_8118664 + b _08118992 + .align 2, 0 +_0811894C: .4byte gUnknown_8458CD4 +_08118950: + movs r0, 0x37 + b _08118990 +_08118954: + adds r0, r6, 0 + bl sub_81186C8 + ldrb r0, [r4, 0x8] + strh r0, [r7, 0x2] + cmp r5, 0x5 + bls _08118970 + ldr r0, _0811896C @ =gUnknown_8458D9C + bl sub_811868C + b _08118992 + .align 2, 0 +_0811896C: .4byte gUnknown_8458D9C +_08118970: + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + ldr r1, _0811899C @ =gUnknown_203B058 + movs r0, 0x44 + strb r0, [r1] + bl GetCursorSelectionMonId + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + bl sub_811B1B4 + movs r0, 0x33 +_08118990: + strb r0, [r6, 0x14] +_08118992: + ldr r1, _081189A0 @ =gUnknown_203B06C + movs r0, 0 + strh r0, [r1] + bl _081198DC + .align 2, 0 +_0811899C: .4byte gUnknown_203B058 +_081189A0: .4byte gUnknown_203B06C +_081189A4: + movs r0, 0x4 + bl _081198DA +_081189AA: + ldr r4, _081189D8 @ =gSpecialVar_Result + ldrh r0, [r4] + cmp r0, 0 + beq _08118A0E + cmp r0, 0x9 + bne _081189E4 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + movs r0, 0x2 + bl PlaySE + ldr r0, _081189DC @ =gStringVar1 + ldr r1, _081189E0 @ =gSaveBlock2Ptr + ldr r1, [r1] + bl StringCopy + movs r1, 0 + movs r0, 0x2A + b _08118A06 + .align 2, 0 +_081189D8: .4byte gSpecialVar_Result +_081189DC: .4byte gStringVar1 +_081189E0: .4byte gSaveBlock2Ptr +_081189E4: + cmp r0, 0xB + bne _081189F8 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + movs r1, 0 + movs r0, 0x17 + b _08118A06 +_081189F8: + movs r0, 0 + strh r0, [r7] + ldrh r0, [r4] + subs r0, 0x1 + strh r0, [r7, 0x2] + movs r1, 0 + movs r0, 0x18 +_08118A06: + strb r0, [r6, 0x14] + strh r1, [r4] + bl _081198DC +_08118A0E: + bl ScriptContext2_IsEnabled + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08118A1E + bl _081198DC +_08118A1E: + ldr r0, _08118A4C @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08118A84 + ldr r0, [r6] + adds r2, r7, 0x2 + adds r3, r6, 0 + adds r3, 0x21 + adds r1, r7, 0 + bl sub_811BF00 + cmp r0, 0 + beq _08118A50 + movs r0, 0x5 + bl PlaySE + bl sub_811B298 + movs r0, 0x18 + bl _081198DA + .align 2, 0 +_08118A4C: .4byte gMain +_08118A50: + bl sub_811A9B8 + cmp r0, 0 + beq _08118A84 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + movs r0, 0x2 + bl PlaySE + bl sub_811B298 + ldr r0, _08118A7C @ =gStringVar1 + ldr r1, _08118A80 @ =gSaveBlock2Ptr + ldr r1, [r1] + bl StringCopy + movs r0, 0x2D + bl _081198DA + .align 2, 0 +_08118A7C: .4byte gStringVar1 +_08118A80: .4byte gSaveBlock2Ptr +_08118A84: + bl sub_8119B94 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _08118AA6 + cmp r0, 0x2 + bgt _08118A9A + cmp r0, 0x1 + beq _08118AA0 + b _08118AD4 +_08118A9A: + cmp r0, 0x4 + beq _08118AAE + b _08118AD4 +_08118AA0: + movs r0, 0x37 + bl PlaySE +_08118AA6: + adds r0, r6, 0 + bl sub_811BECC + b _08118AD4 +_08118AAE: + movs r0, 0xB + strb r0, [r6, 0x14] + bl sub_811B298 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAFA0 + adds r0, r6, 0 + bl sub_811B2D8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0x53 + movs r2, 0 + bl sub_80FB008 +_08118AD4: + adds r0, r6, 0 + bl sub_811BEDC + bl _081198DC +_08118ADE: + ldr r0, _08118B00 @ =Task_StartMenuHandleInput + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + beq _08118AEE + bl _081198DC +_08118AEE: + movs r0, 0x40 + movs r1, 0 + movs r2, 0 + bl sub_80FB008 + movs r0, 0x4 + bl _081198DA + .align 2, 0 +_08118B00: .4byte Task_StartMenuHandleInput +_08118B04: + bl sub_811A0E0 + movs r3, 0x2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + ldr r0, [r6] + ldrb r1, [r7] + ldrb r2, [r7, 0x2] + adds r3, r4, 0 + bl sub_811AA5C + cmp r0, 0x1 + beq _08118B48 + cmp r0, 0x1 + bgt _08118B3A + cmp r0, 0 + beq _08118B42 + bl _081198DC +_08118B3A: + cmp r0, 0x2 + beq _08118B6C + bl _081198DC +_08118B42: + movs r0, 0x1A + bl _081198DA +_08118B48: + movs r1, 0x2 + ldrsh r0, [r7, r1] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r0, r1, 0 + adds r0, 0x10 + ldr r2, _08118B68 @ =gUnknown_203B058 + ldrb r2, [r2] + bl sub_80FC114 + strh r5, [r6, 0x12] + movs r0, 0x19 + bl _081198DA + .align 2, 0 +_08118B68: .4byte gUnknown_203B058 +_08118B6C: + ldr r1, _08118B78 @ =gStringVar4 + movs r0, 0x13 + bl sub_8118664 + bl _081198DC + .align 2, 0 +_08118B78: .4byte gStringVar4 +_08118B7C: + bl sub_811A0E0 + bl sub_80FB9F4 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + blt _08118BC2 + cmp r4, 0x2 + ble _08118B9E + cmp r4, 0x4 + bne _08118BC2 + movs r0, 0x1 + bl sub_811B258 + strb r4, [r6, 0x14] + b _08118BC2 +_08118B9E: + bl sub_80FBB0C + cmp r0, 0x1 + bne _08118BB4 + ldr r0, _08118BB0 @ =gUnknown_8457F90 + bl sub_811868C + b _08118BBC + .align 2, 0 +_08118BB0: .4byte gUnknown_8457F90 +_08118BB4: + ldr r1, _08118BE4 @ =gUnknown_8457F90 + movs r0, 0x1E + bl sub_8118664 +_08118BBC: + ldr r1, _08118BE8 @ =gUnknown_203B058 + movs r0, 0x40 + strb r0, [r1] +_08118BC2: + ldr r0, _08118BEC @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + bne _08118BCE + bl _081198DC +_08118BCE: + ldr r0, _08118BF0 @ =gBlockSendBuffer + movs r1, 0x1 + bl sub_8117594 + ldr r0, _08118BF4 @ =sub_8117280 + movs r1, 0x5 + bl CreateTask + movs r0, 0x26 + bl _081198DA + .align 2, 0 +_08118BE4: .4byte gUnknown_8457F90 +_08118BE8: .4byte gUnknown_203B058 +_08118BEC: .4byte gReceivedRemoteLinkPlayers +_08118BF0: .4byte gBlockSendBuffer +_08118BF4: .4byte sub_8117280 +_08118BF8: + ldr r0, _08118C1C @ =sub_8117280 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + beq _08118C08 + bl _081198DC +_08118C08: + ldr r0, _08118C20 @ =gUnknown_203B058 + ldrb r0, [r0] + cmp r0, 0x44 + bne _08118C28 + ldr r1, _08118C24 @ =gUnknown_84578BC + movs r0, 0x1F + bl sub_8118664 + bl _081198DC + .align 2, 0 +_08118C1C: .4byte sub_8117280 +_08118C20: .4byte gUnknown_203B058 +_08118C24: .4byte gUnknown_84578BC +_08118C28: + movs r0, 0x5 + bl _081198DA +_08118C2E: + ldr r0, _08118C54 @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + beq _08118C3A + bl _081198DC +_08118C3A: + movs r0, 0 + bl sub_811B258 + movs r2, 0 + ldrsh r0, [r7, r2] + movs r3, 0x2 + ldrsh r1, [r7, r3] + ldr r2, [r6] + bl sub_811C028 + movs r0, 0x2 + bl _081198DA + .align 2, 0 +_08118C54: .4byte gReceivedRemoteLinkPlayers +_08118C58: + adds r0, r6, 0 + adds r0, 0x16 + adds r1, r6, 0 + adds r1, 0x1B + adds r2, r6, 0 + adds r2, 0x1C + ldr r3, _08118C8C @ =gUnknown_8456DF4 + ldr r4, _08118C90 @ =gUnknown_8456E1C + str r4, [sp] + bl sub_811A218 + adds r5, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _08118C7C + bl _081198DC +_08118C7C: + ldr r0, _08118C94 @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + bne _08118C98 + movs r0, 0x1C + bl _081198DA + .align 2, 0 +_08118C8C: .4byte gUnknown_8456DF4 +_08118C90: .4byte gUnknown_8456E1C +_08118C94: .4byte gReceivedRemoteLinkPlayers +_08118C98: + adds r1, r6, 0 + adds r1, 0x84 + movs r0, 0 + strh r0, [r1] + movs r2, 0x2 + ldrsh r0, [r7, r2] + ldr r1, [r6] + bl sub_811ADC4 + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + beq _08118CB6 + cmp r5, 0x40 + bne _08118CE8 +_08118CB6: + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0x40 + strh r1, [r0] + bl sub_80F9E2C + ldr r0, _08118CDC @ =gStringVar4 + ldr r2, _08118CE0 @ =gUnknown_845842C + ldr r1, _08118CE4 @ =gLinkPlayers + ldrb r1, [r1, 0x13] + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl StringCopy + movs r0, 0x20 + bl _081198DA + .align 2, 0 +_08118CDC: .4byte gStringVar4 +_08118CE0: .4byte gUnknown_845842C +_08118CE4: .4byte gLinkPlayers +_08118CE8: + ldr r0, _08118D10 @ =gUnknown_203B058 + strb r5, [r0] + ldr r1, _08118D14 @ =gUnknown_203B059 + lsrs r0, r5, 8 + strb r0, [r1] + lsls r0, r5, 24 + lsrs r0, 24 + cmp r0, 0x41 + bne _08118D1C + bl sub_811B0F0 + cmp r0, 0 + bne _08118D1C + ldr r1, _08118D18 @ =gUnknown_845847C + movs r0, 0x5 + bl sub_8118664 + bl _081198DC + .align 2, 0 +_08118D10: .4byte gUnknown_203B058 +_08118D14: .4byte gUnknown_203B059 +_08118D18: .4byte gUnknown_845847C +_08118D1C: + ldr r0, _08118D34 @ =gUnknown_203B058 + ldrb r0, [r0] + movs r1, 0x40 + orrs r1, r0 + adds r0, r6, 0 + adds r0, 0x4C + strh r1, [r0] + bl sub_80F9E2C + movs r0, 0x1B + bl _081198DA + .align 2, 0 +_08118D34: .4byte gUnknown_203B058 +_08118D38: + ldr r0, _08118D48 @ =gStringVar4 + ldr r1, _08118D4C @ =gUnknown_8458434 + bl StringCopy + movs r0, 0x24 + bl _081198DA + .align 2, 0 +_08118D48: .4byte gStringVar4 +_08118D4C: .4byte gUnknown_8458434 +_08118D50: + adds r0, r6, 0 + bl sub_811B0A4 + movs r3, 0x2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + adds r0, r6, 0 + adds r0, 0x4C + ldrh r1, [r0] + movs r0, 0x3F + ands r0, r1 + bl sub_811A9FC + adds r5, r0, 0 + adds r0, r6, 0 + adds r0, 0x16 + ldr r3, _08118D9C @ =gUnknown_84580F4 + lsls r1, r5, 2 + lsls r2, r4, 4 + adds r1, r2 + adds r1, r3 + ldr r1, [r1] + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08118D90 + bl _081198DC +_08118D90: + movs r0, 0 + strh r0, [r7, 0x6] + movs r0, 0x1D + bl _081198DA + .align 2, 0 +_08118D9C: .4byte gUnknown_84580F4 +_08118DA0: + bl sub_800AAC0 + movs r0, 0x24 + bl _081198DA +_08118DAA: + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0x44 + strh r1, [r0] + ldr r2, _08118DD0 @ =gUnknown_203B06C + ldrh r1, [r2, 0xE] + adds r3, r6, 0 + adds r3, 0x4E + strh r1, [r3] + ldrh r2, [r2, 0x10] + adds r1, r6, 0 + adds r1, 0x50 + strh r2, [r1] + bl sub_80F9E2C + movs r0, 0x1D + bl _081198DA + .align 2, 0 +_08118DD0: .4byte gUnknown_203B06C +_08118DD4: + ldr r0, _08118DEC @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + bne _08118DF8 + ldr r0, _08118DF0 @ =gStringVar4 + ldr r1, _08118DF4 @ =gUnknown_8458434 + bl StringCopy + movs r0, 0x1C + bl _081198DA + .align 2, 0 +_08118DEC: .4byte gReceivedRemoteLinkPlayers +_08118DF0: .4byte gStringVar4 +_08118DF4: .4byte gUnknown_8458434 +_08118DF8: + adds r0, r6, 0 + bl sub_811B0A4 + adds r0, r6, 0 + adds r0, 0x84 + ldrh r0, [r0] + cmp r0, 0x51 + bne _08118E2E + ldr r0, _08118E20 @ =gUnknown_203B058 + ldrb r0, [r0] + cmp r0, 0x8 + bne _08118E28 + ldr r0, _08118E24 @ =gStringVar4 + adds r1, r6, 0 + movs r2, 0 + bl sub_811B31C + movs r0, 0x28 + bl _081198DA + .align 2, 0 +_08118E20: .4byte gUnknown_203B058 +_08118E24: .4byte gStringVar4 +_08118E28: + movs r0, 0xD + bl _081198DA +_08118E2E: + cmp r0, 0x52 + beq _08118E36 + bl _081198DC +_08118E36: + movs r5, 0 + movs r0, 0x20 + strb r0, [r6, 0x14] + ldr r0, _08118E54 @ =gStringVar4 + ldr r4, _08118E58 @ =gUnknown_203B058 + ldrb r2, [r4] + movs r1, 0x40 + orrs r1, r2 + ldr r2, _08118E5C @ =gLinkPlayers + ldrb r2, [r2, 0x13] + bl sub_811AE68 + strb r5, [r4] + bl _081198DC + .align 2, 0 +_08118E54: .4byte gStringVar4 +_08118E58: .4byte gUnknown_203B058 +_08118E5C: .4byte gLinkPlayers +_08118E60: + movs r0, 0x2 + ldrsh r1, [r7, r0] + lsls r1, 5 + ldr r0, [r6] + adds r0, r1 + bl sub_811AA24 + adds r5, r0, 0 + movs r1, 0x2 + ldrsh r0, [r7, r1] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + ldr r2, _08118E94 @ =gUnknown_8457B04 + lsls r0, r4, 2 + lsls r1, r5, 3 + adds r0, r1 + adds r0, r2 + ldr r1, [r0] + movs r0, 0x6 + bl sub_8118664 + bl _081198DC + .align 2, 0 +_08118E94: .4byte gUnknown_8457B04 +_08118E98: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08118EC4 @ =gStringVar4 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08118EAC + bl _081198DC +_08118EAC: + movs r4, 0 + movs r0, 0x29 + strb r0, [r6, 0x14] + bl sub_800AB9C + adds r0, r6, 0 + adds r0, 0x84 + strh r4, [r0] + adds r0, 0x2 + strh r4, [r0] + bl _081198DC + .align 2, 0 +_08118EC4: .4byte gStringVar4 +_08118EC8: + bl IsLinkTaskFinished + lsls r0, 24 + cmp r0, 0 + bne _08118ED6 + bl _081198DC +_08118ED6: + bl GetMultiplayerId + lsls r0, 24 + cmp r0, 0 + bne _08118F30 + ldr r5, _08118F20 @ =gStringVar1 + bl GetMultiplayerId + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + ldr r4, _08118F24 @ =gLinkPlayers + 8 + adds r1, r4 + adds r0, r5, 0 + bl StringCopy + ldrh r0, [r4, 0x18] + adds r4, 0x1C + adds r1, r4, 0 + bl sub_80FD338 + adds r5, r0, 0 + ldr r0, _08118F28 @ =gStringVar4 + ldr r2, _08118F2C @ =gUnknown_8457C20 + lsls r1, r5, 2 + adds r1, r2 + ldr r1, [r1] + bl StringExpandPlaceholders + movs r0, 0x21 + bl _081198DA + .align 2, 0 +_08118F20: .4byte gStringVar1 +_08118F24: .4byte gLinkPlayers + 8 +_08118F28: .4byte gStringVar4 +_08118F2C: .4byte gUnknown_8457C20 +_08118F30: + movs r0, 0x7 + bl _081198DA +_08118F36: + adds r0, r6, 0 + adds r0, 0x16 + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r5, r0, 24 + cmp r5, 0 + beq _08118F60 + cmp r5, 0 + bgt _08118F58 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + beq _08118F9C + bl _081198DC +_08118F58: + cmp r5, 0x1 + beq _08118F9C + bl _081198DC +_08118F60: + movs r0, 0 + bl CopyBgTilemapBufferToVram + ldr r4, _08118F98 @ =gUnknown_203B058 + movs r0, 0x45 + strb r0, [r4] + movs r0, 0x45 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + movs r2, 0x2 + ldrsh r0, [r7, r2] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r0, r1, 0 + adds r0, 0x10 + ldrb r2, [r4] + bl sub_80FC114 + ldrh r0, [r7, 0x2] + strh r0, [r6, 0x12] + movs r0, 0x14 + strb r0, [r6, 0x14] + strh r5, [r7, 0x6] + bl _081198DC + .align 2, 0 +_08118F98: .4byte gUnknown_203B058 +_08118F9C: + movs r3, 0x2 + ldrsh r0, [r7, r3] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + ldr r1, _08118FB8 @ =gUnknown_8458548 + lsls r0, r4, 2 + adds r0, r1 + ldr r0, [r0] + bl sub_811868C + bl _081198DC + .align 2, 0 +_08118FB8: .4byte gUnknown_8458548 +_08118FBC: + ldrh r0, [r7, 0x4] + adds r0, 0x1 + strh r0, [r7, 0x4] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3C + bgt _08118FCE + bl _081198DC +_08118FCE: + movs r1, 0 + movs r0, 0x15 + strb r0, [r6, 0x14] + strh r1, [r7, 0x4] + bl _081198DC +_08118FDA: + bl sub_80FB9F4 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3 + beq _08119040 + cmp r4, 0x3 + ble _08118FF8 + cmp r4, 0x4 + bne _08119044 + movs r0, 0x1 + bl sub_811B258 + strb r4, [r6, 0x14] + b _08119044 +_08118FF8: + cmp r4, 0x1 + blt _08119044 + movs r1, 0x2 + ldrsh r0, [r7, r1] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + bl sub_80FBB0C + cmp r0, 0x1 + bne _0811902C + ldr r0, _08119028 @ =gUnknown_84585E8 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_811868C + b _08119044 + .align 2, 0 +_08119028: .4byte gUnknown_84585E8 +_0811902C: + ldr r0, _0811903C @ =gUnknown_84585E8 + lsls r1, r4, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x1E + bl sub_8118664 + b _08119044 + .align 2, 0 +_0811903C: .4byte gUnknown_84585E8 +_08119040: + movs r0, 0x16 + strb r0, [r6, 0x14] +_08119044: + ldrh r0, [r7, 0x6] + adds r0, 0x1 + strh r0, [r7, 0x6] + bl _081198DC +_0811904E: + bl sub_80FBA00 + cmp r0, 0 + beq _08119096 + movs r2, 0x2 + ldrsh r0, [r7, r2] + ldr r1, [r6] + bl sub_811ADC4 + adds r4, r0, 0 + movs r0, 0x54 + movs r1, 0 + movs r2, 0x1 + bl sub_80FB008 + bl sub_80FBB0C + cmp r0, 0x1 + bne _08119088 + ldr r0, _08119084 @ =gUnknown_84585E8 + lsls r1, r4, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_811868C + b _08119096 + .align 2, 0 +_08119084: .4byte gUnknown_84585E8 +_08119088: + ldr r0, _081190A8 @ =gUnknown_84585E8 + lsls r1, r4, 2 + adds r1, r0 + ldr r1, [r1] + movs r0, 0x1E + bl sub_8118664 +_08119096: + ldr r0, _081190AC @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + bne _081190A2 + bl _081198DC +_081190A2: + movs r0, 0x10 + bl _081198DA + .align 2, 0 +_081190A8: .4byte gUnknown_84585E8 +_081190AC: .4byte gReceivedRemoteLinkPlayers +_081190B0: + movs r0, 0x42 + bl PlaySE + bl sub_80F8FA0 + movs r0, 0 + movs r1, 0xC + strb r1, [r6, 0x14] + adds r1, r6, 0 + adds r1, 0x86 + strh r0, [r1] + bl _081198DC +_081190CA: + bl sub_80FBA00 + cmp r0, 0 + beq _081190DE + movs r0, 0 + bl sub_811B258 + movs r0, 0x2 + bl _081198DA +_081190DE: + ldr r0, _08119100 @ =gReceivedRemoteLinkPlayers + ldrb r0, [r0] + cmp r0, 0 + bne _081190EA + bl _081198DC +_081190EA: + ldr r0, _08119104 @ =gBlockSendBuffer + movs r1, 0x1 + bl sub_8117594 + ldr r0, _08119108 @ =sub_8117280 + movs r1, 0x5 + bl CreateTask + movs r0, 0x27 + bl _081198DA + .align 2, 0 +_08119100: .4byte gReceivedRemoteLinkPlayers +_08119104: .4byte gBlockSendBuffer +_08119108: .4byte sub_8117280 +_0811910C: + adds r0, r6, 0 + bl sub_8119904 + ldr r0, _08119150 @ =sub_8117280 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + beq _08119122 + bl _081198DC +_08119122: + movs r0, 0x21 + strb r0, [r6, 0x14] + ldr r0, _08119154 @ =gStringVar1 + ldr r4, _08119158 @ =gLinkPlayers + 0x24 + adds r1, r4, 0 + bl StringCopy + adds r0, r4, 0 + subs r0, 0x24 + ldrh r0, [r0, 0x20] + adds r1, r4, 0 + bl sub_80FD338 + adds r5, r0, 0 + ldr r0, _0811915C @ =gStringVar4 + ldr r2, _08119160 @ =gUnknown_8457BCC + lsls r1, r5, 2 + adds r1, r2 + ldr r1, [r1] + bl StringExpandPlaceholders + b _081198DC + .align 2, 0 +_08119150: .4byte sub_8117280 +_08119154: .4byte gStringVar1 +_08119158: .4byte gLinkPlayers + 0x24 +_0811915C: .4byte gStringVar4 +_08119160: .4byte gUnknown_8457BCC +_08119164: + adds r0, r6, 0 + bl sub_8119904 + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119180 @ =gStringVar4 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _0811917C + b _081198DC +_0811917C: + movs r0, 0x22 + b _081198DA + .align 2, 0 +_08119180: .4byte gStringVar4 +_08119184: + adds r0, r6, 0 + bl sub_8119904 + adds r0, r6, 0 + bl sub_8119944 + cmp r0, 0 + bne _08119196 + b _081198DC +_08119196: + ldr r0, _081191B8 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _081191A4 + b _081198DC +_081191A4: + movs r0, 0x1 + bl sub_80FBD6C + ldr r0, _081191BC @ =gStringVar4 + ldr r1, _081191C0 @ =gUnknown_8457E60 + bl StringCopy + movs r0, 0x24 + b _081198DA + .align 2, 0 +_081191B8: .4byte gMain +_081191BC: .4byte gStringVar4 +_081191C0: .4byte gUnknown_8457E60 +_081191C4: + ldr r1, _081191D0 @ =gStringVar4 + movs r0, 0x9 + bl sub_8118664 + b _081198DC + .align 2, 0 +_081191D0: .4byte gStringVar4 +_081191D4: + adds r0, r6, 0 + adds r0, 0x16 + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _081191FA + cmp r1, 0 + bgt _081191F4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081192BA + b _081198DC +_081191F4: + cmp r1, 0x1 + beq _081192BA + b _081198DC +_081191FA: + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0x51 + strh r1, [r0] + ldr r1, _08119228 @ =gUnknown_203B058 + ldrb r1, [r1] + adds r5, r0, 0 + cmp r1, 0x45 + bne _0811922C + movs r4, 0x40 + orrs r4, r1 + movs r0, 0x1 + bl sub_811B2A8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + movs r2, 0 + bl sub_80FB008 + b _0811924A + .align 2, 0 +_08119228: .4byte gUnknown_203B058 +_0811922C: + movs r0, 0x40 + adds r4, r1, 0 + orrs r4, r0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x1 + bl sub_811B2A8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + movs r2, 0x1 + bl sub_80FB008 +_0811924A: + ldr r1, [r6, 0x8] + movs r0, 0 + strb r0, [r1, 0x1B] + strh r0, [r7, 0x6] + ldr r0, _0811927C @ =gUnknown_203B058 + ldrb r0, [r0] + cmp r0, 0x41 + bne _08119292 + bl sub_811B0F0 + cmp r0, 0 + bne _08119288 + movs r0, 0x52 + strh r0, [r5] + adds r0, r5, 0 + bl sub_80F9E2C + movs r0, 0xA + strb r0, [r6, 0x14] + ldr r0, _08119280 @ =gStringVar4 + ldr r1, _08119284 @ =gUnknown_84584C0 + bl StringCopy + b _081198DC + .align 2, 0 +_0811927C: .4byte gUnknown_203B058 +_08119280: .4byte gStringVar4 +_08119284: .4byte gUnknown_84584C0 +_08119288: + adds r0, r5, 0 + bl sub_80F9E2C + movs r0, 0xD + b _081198DA +_08119292: + cmp r0, 0x48 + bne _081192B0 + adds r0, r5, 0 + bl sub_80F9E2C + ldr r0, _081192AC @ =gStringVar4 + adds r1, r6, 0 + movs r2, 0x1 + bl sub_811B31C + movs r0, 0x28 + b _081198DA + .align 2, 0 +_081192AC: .4byte gStringVar4 +_081192B0: + adds r0, r5, 0 + bl sub_80F9E2C + movs r0, 0xD + b _081198DA +_081192BA: + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0x52 + strh r1, [r0] + bl sub_80F9E2C + movs r0, 0xA + strb r0, [r6, 0x14] + ldr r0, _081192D8 @ =gStringVar4 + ldr r1, _081192DC @ =gUnknown_203B058 + ldrb r1, [r1] + bl sub_81162E0 + b _081198DC + .align 2, 0 +_081192D8: .4byte gStringVar4 +_081192DC: .4byte gUnknown_203B058 +_081192E0: + bl sub_800AAC0 + movs r0, 0x24 + b _081198DA +_081192E8: + ldr r0, _08119318 @ =gReceivedRemoteLinkPlayers + ldrb r4, [r0] + cmp r4, 0 + beq _081192F2 + b _081198DC +_081192F2: + ldr r1, _0811931C @ =gUnknown_203B058 + movs r0, 0x40 + strb r0, [r1] + ldr r1, _08119320 @ =gStringVar4 + movs r0, 0x25 + bl sub_8118664 + adds r0, r6, 0 + adds r0, 0x4C + movs r1, 0 + movs r2, 0xC + bl memset + adds r0, r6, 0 + adds r0, 0x86 + strh r4, [r0] + subs r0, 0x2 + strh r4, [r0] + b _081198DC + .align 2, 0 +_08119318: .4byte gReceivedRemoteLinkPlayers +_0811931C: .4byte gUnknown_203B058 +_08119320: .4byte gStringVar4 +_08119324: + movs r0, 0x2 + strb r0, [r6, 0x14] + movs r0, 0 + bl sub_811B258 + b _081198DC +_08119330: + ldr r4, _0811934C @ =gStringVar4 + ldr r0, _08119350 @ =gUnknown_203B058 + ldrb r0, [r0] + movs r1, 0x40 + orrs r1, r0 + adds r0, r4, 0 + bl sub_811AECC + movs r0, 0xE + adds r1, r4, 0 + bl sub_8118664 + b _081198DC + .align 2, 0 +_0811934C: .4byte gStringVar4 +_08119350: .4byte gUnknown_203B058 +_08119354: + bl sub_800AB9C + movs r0, 0xF + b _081198DA +_0811935C: + bl IsLinkTaskFinished + lsls r0, 24 + cmp r0, 0 + bne _08119368 + b _081198DC +_08119368: + movs r0, 0x10 + b _081198DA +_0811936C: + ldr r0, [r6, 0x8] + bl Free + ldr r0, [r6] + bl Free + ldr r0, [r6, 0xC] + bl Free + ldr r0, [r6, 0x4] + bl Free + adds r0, r6, 0 + adds r0, 0x20 + ldrb r0, [r0] + bl DestroyTask + adds r0, r6, 0 + adds r0, 0x21 + bl sub_811BB40 + movs r0, 0x11 + b _081198DA +_0811939A: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + movs r0, 0x12 + b _081198DA +_081193AE: + bl UpdatePaletteFade + lsls r0, 24 + cmp r0, 0 + beq _081193BA + b _081198DC +_081193BA: + bl sub_811BA78 + adds r0, r4, 0 + bl DestroyTask + ldr r0, _081193D4 @ =gUnknown_203B05C + ldr r0, [r0] + bl Free + bl sub_81179A4 + b _081198DC + .align 2, 0 +_081193D4: .4byte gUnknown_203B05C +_081193D8: + bl sub_80F9800 + ldrh r1, [r0, 0x8] + ldr r4, _081193EC @ =0x000003ff + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + bne _081193F0 + movs r0, 0x2B + b _081198DA + .align 2, 0 +_081193EC: .4byte 0x000003ff +_081193F0: + bl sub_80F9800 + ldrh r1, [r0, 0x8] + adds r0, r4, 0 + ands r0, r1 + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + bne _08119414 + ldr r0, _0811940C @ =gStringVar4 + ldr r1, _08119410 @ =gUnknown_8458DE8 + bl StringCopy + b _0811944A + .align 2, 0 +_0811940C: .4byte gStringVar4 +_08119410: .4byte gUnknown_8458DE8 +_08119414: + ldr r4, _08119454 @ =gStringVar1 + bl sub_80F9800 + ldrh r0, [r0, 0x8] + lsls r0, 22 + lsrs r0, 22 + movs r1, 0xB + muls r1, r0 + ldr r0, _08119458 @ =gSpeciesNames + adds r1, r0 + adds r0, r4, 0 + bl StringCopy + ldr r4, _0811945C @ =gStringVar2 + bl sub_80F9800 + ldrb r1, [r0, 0xB] + lsrs r1, 1 + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x3 + bl ConvertIntToDecimalStringN + ldr r0, _08119460 @ =gStringVar4 + ldr r1, _08119464 @ =gUnknown_8458DBC + bl StringExpandPlaceholders +_0811944A: + ldr r1, _08119460 @ =gStringVar4 + movs r0, 0x2C + bl sub_8118664 + b _081198DC + .align 2, 0 +_08119454: .4byte gStringVar1 +_08119458: .4byte gSpeciesNames +_0811945C: .4byte gStringVar2 +_08119460: .4byte gStringVar4 +_08119464: .4byte gUnknown_8458DBC +_08119468: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119480 @ =gUnknown_8458AB8 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _0811947A + b _081198DC +_0811947A: + movs r0, 0x2F + b _081198DA + .align 2, 0 +_08119480: .4byte gUnknown_8458AB8 +_08119484: + adds r0, r6, 0 + adds r0, 0x16 + adds r1, r6, 0 + adds r1, 0x1D + adds r2, r6, 0 + adds r2, 0x1E + ldr r3, _081194BC @ =gUnknown_8456E34 + ldr r4, _081194C0 @ =gUnknown_8456E54 + str r4, [sp] + bl sub_811A218 + adds r5, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _081194A6 + b _081198DC +_081194A6: + subs r0, 0x1 + cmp r5, r0 + beq _081194B0 + cmp r5, 0x3 + bne _081194C4 +_081194B0: + movs r0, 0x4 + strb r0, [r6, 0x14] + movs r0, 0x1 + bl sub_811B258 + b _081194E4 + .align 2, 0 +_081194BC: .4byte gUnknown_8456E34 +_081194C0: .4byte gUnknown_8456E54 +_081194C4: + cmp r5, 0x1 + beq _081194CE + cmp r5, 0x2 + beq _081194DC + b _081194E4 +_081194CE: + ldr r1, _081194D8 @ =gUnknown_8458D1C + movs r0, 0x35 + bl sub_8118664 + b _081194E4 + .align 2, 0 +_081194D8: .4byte gUnknown_8458D1C +_081194DC: + ldr r1, _081194EC @ =gUnknown_8458B44 + movs r0, 0x2F + bl sub_8118664 +_081194E4: + bl DestroyHelpMessageWindow_ + b _081198DC + .align 2, 0 +_081194EC: .4byte gUnknown_8458B44 +_081194F0: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + movs r0, 0x36 + b _081198DA +_08119504: + ldr r0, _08119528 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08119512 + b _081198DC +_08119512: + ldr r1, _0811952C @ =gUnknown_203B06C + movs r0, 0x1 + strh r0, [r1] + ldr r1, _08119530 @ =gFieldCallback + ldr r0, _08119534 @ =sub_807DCE4 + str r0, [r1] + ldr r1, _08119538 @ =CB2_ReturnToField + movs r0, 0x8 + bl sub_81277F4 + b _081198DC + .align 2, 0 +_08119528: .4byte gPaletteFade +_0811952C: .4byte gUnknown_203B06C +_08119530: .4byte gFieldCallback +_08119534: .4byte sub_807DCE4 +_08119538: .4byte CB2_ReturnToField +_0811953C: + adds r0, r6, 0 + adds r0, 0x16 + adds r1, r6, 0 + adds r1, 0x1D + adds r2, r6, 0 + adds r2, 0x1E + ldr r3, _08119580 @ =gUnknown_8456E6C + ldr r4, _08119584 @ =gUnknown_8456F04 + str r4, [sp] + bl sub_811A218 + adds r5, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _0811955E + b _081198DC +_0811955E: + subs r0, 0x1 + cmp r5, r0 + beq _08119568 + cmp r5, 0x12 + bne _08119590 +_08119568: + ldr r0, _08119588 @ =gUnknown_203B06C + bl sub_811B148 + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAFA0 + ldr r0, _0811958C @ =gUnknown_8458D54 + bl sub_811868C + b _081198DC + .align 2, 0 +_08119580: .4byte gUnknown_8456E6C +_08119584: .4byte gUnknown_8456F04 +_08119588: .4byte gUnknown_203B06C +_0811958C: .4byte gUnknown_8458D54 +_08119590: + ldr r0, _08119598 @ =gUnknown_203B06C + strh r5, [r0, 0x2] + movs r0, 0x37 + b _081198DA + .align 2, 0 +_08119598: .4byte gUnknown_203B06C +_0811959C: + ldr r2, _081195B0 @ =gUnknown_203B06C + ldrh r0, [r2, 0x2] + ldrh r1, [r2, 0xA] + ldrh r2, [r2, 0xC] + bl sub_80FAFA0 + ldr r0, _081195B4 @ =gUnknown_8458D78 + bl sub_811868C + b _081198DC + .align 2, 0 +_081195B0: .4byte gUnknown_203B06C +_081195B4: .4byte gUnknown_8458D78 +_081195B8: + adds r0, r6, 0 + adds r0, 0x16 + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _081195DE + cmp r1, 0 + bgt _081195D8 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081195E2 + b _081198DC +_081195D8: + cmp r1, 0x1 + beq _081195E2 + b _081198DC +_081195DE: + movs r0, 0x38 + b _081198DA +_081195E2: + movs r0, 0x1 + bl sub_811B258 + movs r0, 0x4 + b _081198DA +_081195EC: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119618 @ =gUnknown_8458E10 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _081195FE + b _081198DC +_081195FE: + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl sub_80FAFA0 + ldr r0, _0811961C @ =gUnknown_203B06C + bl sub_811B148 + movs r0, 0x1 + bl sub_811B258 + movs r0, 0x4 + b _081198DA + .align 2, 0 +_08119618: .4byte gUnknown_8458E10 +_0811961C: .4byte gUnknown_203B06C +_08119620: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119638 @ =gUnknown_8458A98 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _08119632 + b _081198DC +_08119632: + movs r0, 0x2E + b _081198DA + .align 2, 0 +_08119638: .4byte gUnknown_8458A98 +_0811963C: + bl sub_811A3F8 + movs r0, 0x30 + b _081198DA +_08119644: + adds r0, r6, 0 + adds r0, 0x16 + adds r1, r6, 0 + adds r1, 0x1D + adds r2, r6, 0 + adds r2, 0x4A + adds r3, r6, 0 + adds r3, 0x1E + ldr r4, _08119688 @ =gUnknown_8456F24 + str r4, [sp] + ldr r4, _0811968C @ =gUnknown_8456F7C + str r4, [sp, 0x4] + ldr r4, [r6] + str r4, [sp, 0x8] + bl sub_811A2EC + adds r5, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _08119670 + b _081198DC +_08119670: + subs r0, 0x1 + cmp r5, r0 + beq _0811967A + cmp r5, 0x8 + bne _08119690 +_0811967A: + movs r0, 0x1 + bl sub_811B258 + bl DestroyHelpMessageWindow_ + movs r0, 0x4 + b _081198DA + .align 2, 0 +_08119688: .4byte gUnknown_8456F24 +_0811968C: .4byte gUnknown_8456F7C +_08119690: + ldr r1, [r6] + lsls r3, r5, 5 + mov r8, r3 + add r1, r8 + ldrb r0, [r1, 0x9] + lsrs r0, 2 + ldrh r1, [r1, 0x8] + lsls r1, 22 + lsrs r1, 22 + bl sub_811ADD0 + cmp r0, 0x1 + beq _081196EC + cmp r0, 0x1 + bgt _081196B4 + cmp r0, 0 + beq _081196BA + b _081198DC +_081196B4: + cmp r0, 0x2 + beq _08119734 + b _081198DC +_081196BA: + ldr r4, _081196E4 @ =gStringVar1 + ldr r1, [r6] + add r1, r8 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldr r0, [r6] + add r0, r8 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + ldr r1, _081196E8 @ =gUnknown_8458E70 + movs r0, 0x31 + bl sub_8118664 + strh r5, [r7, 0x2] + b _081198DC + .align 2, 0 +_081196E4: .4byte gStringVar1 +_081196E8: .4byte gUnknown_8458E70 +_081196EC: + ldr r4, _08119724 @ =gStringVar1 + ldr r1, [r6] + add r1, r8 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldr r0, [r6] + add r0, r8 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + ldr r0, _08119728 @ =gStringVar2 + ldr r1, [r6] + add r1, r8 + ldrb r2, [r1, 0x9] + lsrs r2, 2 + lsls r1, r2, 3 + subs r1, r2 + ldr r2, _0811972C @ =gTypeNames + adds r1, r2 + bl StringCopy + ldr r1, _08119730 @ =gUnknown_8458ED0 + b _0811976A + .align 2, 0 +_08119724: .4byte gStringVar1 +_08119728: .4byte gStringVar2 +_0811972C: .4byte gTypeNames +_08119730: .4byte gUnknown_8458ED0 +_08119734: + ldr r4, _08119774 @ =gStringVar1 + ldr r1, [r6] + add r1, r8 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldr r0, [r6] + add r0, r8 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + ldr r0, _08119778 @ =gStringVar2 + ldr r1, [r6] + add r1, r8 + ldrb r2, [r1, 0x9] + lsrs r2, 2 + lsls r1, r2, 3 + subs r1, r2 + ldr r2, _0811977C @ =gTypeNames + adds r1, r2 + bl StringCopy + ldr r1, _08119780 @ =gUnknown_8458F04 +_0811976A: + movs r0, 0x2E + bl sub_8118664 + b _081198DC + .align 2, 0 +_08119774: .4byte gStringVar1 +_08119778: .4byte gStringVar2 +_0811977C: .4byte gTypeNames +_08119780: .4byte gUnknown_8458F04 +_08119784: + adds r0, r6, 0 + adds r0, 0x16 + movs r1, 0 + bl sub_811A14C + lsls r0, 24 + asrs r1, r0, 24 + cmp r1, 0 + beq _081197AA + cmp r1, 0 + bgt _081197A4 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _081197AE + b _081198DC +_081197A4: + cmp r1, 0x1 + beq _081197AE + b _081198DC +_081197AA: + movs r0, 0x32 + b _081198DA +_081197AE: + movs r0, 0x1 + bl sub_811B258 + movs r0, 0x4 + b _081198DA +_081197B8: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _08119820 @ =gUnknown_8458D1C + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + bne _081197CA + b _081198DC +_081197CA: + ldr r4, _08119824 @ =gUnknown_203B06C + movs r0, 0x2 + strh r0, [r4] + ldr r2, _08119828 @ =gUnknown_203B064 + movs r1, 0x2 + ldrsh r0, [r7, r1] + ldr r1, [r6] + lsls r0, 5 + adds r0, r1 + ldr r0, [r0] + str r0, [r2] + ldr r2, _0811982C @ =gUnionRoomRequestedMonType + ldr r1, [r6] + movs r3, 0x2 + ldrsh r0, [r7, r3] + lsls r0, 5 + adds r1, r0 + ldrb r0, [r1, 0x9] + lsrs r0, 2 + strb r0, [r2] + ldr r2, _08119830 @ =gUnionRoomOfferedSpecies + ldr r1, [r6] + movs r3, 0x2 + ldrsh r0, [r7, r3] + lsls r0, 5 + adds r1, r0 + ldrh r0, [r1, 0x8] + lsls r0, 22 + lsrs r0, 22 + strh r0, [r2] + ldr r1, _08119834 @ =gFieldCallback + ldr r0, _08119838 @ =sub_807DCE4 + str r0, [r1] + ldr r1, _0811983C @ =CB2_ReturnToField + movs r0, 0x9 + bl sub_81277F4 + adds r0, r6, 0 + bl sub_81186B0 + ldrh r0, [r7, 0x2] + strb r0, [r4, 0x8] + b _081198DC + .align 2, 0 +_08119820: .4byte gUnknown_8458D1C +_08119824: .4byte gUnknown_203B06C +_08119828: .4byte gUnknown_203B064 +_0811982C: .4byte gUnionRoomRequestedMonType +_08119830: .4byte gUnionRoomOfferedSpecies +_08119834: .4byte gFieldCallback +_08119838: .4byte sub_807DCE4 +_0811983C: .4byte CB2_ReturnToField +_08119840: + ldr r1, _08119890 @ =gUnknown_203B058 + movs r0, 0x44 + strb r0, [r1] + movs r1, 0x2 + ldrsh r0, [r7, r1] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r0, r1, 0 + adds r0, 0x10 + movs r2, 0x44 + bl sub_80FC114 + ldr r4, _08119894 @ =gStringVar1 + movs r2, 0x2 + ldrsh r0, [r7, r2] + lsls r0, 5 + ldr r1, [r6] + adds r1, r0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldr r1, [r6] + movs r3, 0x2 + ldrsh r0, [r7, r3] + lsls r0, 5 + adds r1, r0 + ldrb r1, [r1] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + ldr r0, _08119898 @ =gUnknown_8457A34 + ldr r0, [r0, 0x8] + bl sub_811A0B4 + movs r0, 0x19 + b _081198DA + .align 2, 0 +_08119890: .4byte gUnknown_203B058 +_08119894: .4byte gStringVar1 +_08119898: .4byte gUnknown_8457A34 +_0811989C: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _081198C4 @ =gStringVar4 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _081198DC + movs r0, 0x1 + bl sub_811B258 + movs r1, 0 + ldrsh r0, [r7, r1] + movs r2, 0x2 + ldrsh r1, [r7, r2] + ldr r2, [r6] + bl sub_811C028 + movs r0, 0x4 + b _081198DA + .align 2, 0 +_081198C4: .4byte gStringVar4 +_081198C8: + adds r0, r6, 0 + adds r0, 0x16 + ldr r1, _081198E8 @ =gStringVar4 + bl sub_811A0F8 + lsls r0, 24 + cmp r0, 0 + beq _081198DC + ldrb r0, [r6, 0x15] +_081198DA: + strb r0, [r6, 0x14] +_081198DC: + add sp, 0xC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_081198E8: .4byte gStringVar4 + thumb_func_end sub_81186E0 + + thumb_func_start var_800D_set_xB +var_800D_set_xB: @ 81198EC + push {lr} + bl InUnionRoom + cmp r0, 0x1 + bne _081198FC + ldr r1, _08119900 @ =gSpecialVar_Result + movs r0, 0xB + strh r0, [r1] +_081198FC: + pop {r0} + bx r0 + .align 2, 0 +_08119900: .4byte gSpecialVar_Result + thumb_func_end var_800D_set_xB + + thumb_func_start sub_8119904 +sub_8119904: @ 8119904 + push {r4,r5,lr} + adds r2, r0, 0 + ldr r3, _08119940 @ =gRecvCmds + ldrh r5, [r3, 0x12] + adds r4, r5, 0 + cmp r4, 0 + beq _08119938 + ldrh r0, [r3, 0x10] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _08119938 + adds r0, r2, 0 + adds r0, 0x86 + strh r5, [r0] + cmp r4, 0x44 + bne _08119938 + ldrh r1, [r3, 0x14] + adds r0, 0x2 + strh r1, [r0] + ldrh r1, [r3, 0x16] + adds r0, 0x2 + strh r1, [r0] +_08119938: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08119940: .4byte gRecvCmds + thumb_func_end sub_8119904 + + thumb_func_start sub_8119944 +sub_8119944: @ 8119944 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r4, 0 + adds r5, 0x86 + ldrh r0, [r5] + cmp r0, 0 + beq _08119994 + ldr r0, _08119978 @ =gStringVar4 + ldr r1, _0811997C @ =gLinkPlayers + adds r1, 0x2F + ldrb r1, [r1] + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_811AF6C + cmp r0, 0 + beq _08119994 + cmp r0, 0x1 + bne _08119984 + movs r0, 0x23 + strb r0, [r4, 0x14] + ldr r1, _08119980 @ =gUnknown_203B058 + ldrh r0, [r5] + strb r0, [r1] + movs r0, 0 + b _08119996 + .align 2, 0 +_08119978: .4byte gStringVar4 +_0811997C: .4byte gLinkPlayers +_08119980: .4byte gUnknown_203B058 +_08119984: + cmp r0, 0x2 + bne _08119994 + movs r0, 0x24 + strb r0, [r4, 0x14] + bl sub_800AAC0 + movs r0, 0 + b _08119996 +_08119994: + movs r0, 0x1 +_08119996: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8119944 + + thumb_func_start InitUnionRoom +InitUnionRoom: @ 811999C + push {r4-r6,lr} + ldr r5, _081199E8 @ =gUnknown_203B04C + movs r0, 0x1 + negs r0, r0 + adds r6, r0, 0 + movs r0, 0xFF + strb r0, [r5] + ldr r0, _081199EC @ =gUnknown_203ADFA + ldrb r0, [r0] + subs r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _081199E0 + ldr r0, _081199F0 @ =sub_81199FC + movs r1, 0 + bl CreateTask + ldr r4, _081199F4 @ =gUnknown_203B05C + movs r0, 0x96 + lsls r0, 2 + bl AllocZeroed + str r0, [r4] + ldr r1, _081199F8 @ =gUnknown_300202C + str r0, [r1] + movs r1, 0 + strb r1, [r0, 0x14] + strb r1, [r0, 0x16] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + ldrb r0, [r5] + orrs r0, r6 + strb r0, [r5] +_081199E0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_081199E8: .4byte gUnknown_203B04C +_081199EC: .4byte gUnknown_203ADFA +_081199F0: .4byte sub_81199FC +_081199F4: .4byte gUnknown_203B05C +_081199F8: .4byte gUnknown_300202C + thumb_func_end InitUnionRoom + + thumb_func_start sub_81199FC +sub_81199FC: @ 81199FC + push {r4-r6,lr} + sub sp, 0x20 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08119A1C @ =gUnknown_203B05C + ldr r5, [r0] + ldrb r0, [r5, 0x14] + cmp r0, 0x4 + bls _08119A10 + b _08119B5C +_08119A10: + lsls r0, 2 + ldr r1, _08119A20 @ =_08119A24 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08119A1C: .4byte gUnknown_203B05C +_08119A20: .4byte _08119A24 + .align 2, 0 +_08119A24: + .4byte _08119A38 + .4byte _08119A3E + .4byte _08119A60 + .4byte _08119AB0 + .4byte _08119B28 +_08119A38: + movs r0, 0x1 + strb r0, [r5, 0x14] + b _08119B5C +_08119A3E: + movs r0, 0xC + movs r1, 0 + movs r2, 0 + bl sub_80FAF58 + bl sub_800B1F4 + bl OpenLink + bl sub_80FBC00 + movs r0, 0x1 + bl sub_80FB128 + movs r0, 0x2 + strb r0, [r5, 0x14] + b _08119B5C +_08119A60: + movs r0, 0x70 + bl AllocZeroed + str r0, [r5, 0x4] + movs r1, 0x4 + bl sub_811A650 + movs r0, 0x70 + bl AllocZeroed + str r0, [r5, 0xC] + movs r1, 0x4 + bl sub_811A650 + movs r0, 0x80 + lsls r0, 1 + bl AllocZeroed + str r0, [r5] + movs r1, 0x8 + bl sub_811A5E4 + movs r0, 0x20 + bl AllocZeroed + str r0, [r5, 0x8] + movs r1, 0x1 + bl sub_811A5E4 + ldr r0, [r5, 0xC] + ldr r1, [r5, 0x4] + movs r2, 0xA + bl sub_8119E84 + adds r1, r5, 0 + adds r1, 0x20 + strb r0, [r1] + movs r0, 0x3 + strb r0, [r5, 0x14] + b _08119B5C +_08119AB0: + bl sub_8119B94 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + blt _08119B5C + cmp r0, 0x2 + bgt _08119B5C + ldr r0, _08119B14 @ =gUnknown_203B04C + ldrb r0, [r0] + cmp r0, 0xFF + bne _08119B5C + movs r6, 0 +_08119ACA: + ldr r0, [r5] + lsls r4, r6, 5 + adds r1, r0, r4 + ldrb r0, [r1, 0x1A] + lsls r0, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08119B0A + adds r1, 0x10 + mov r0, sp + bl StringCopy + ldr r0, [r5] + adds r0, r4 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + mov r0, sp + bl ConvertInternationalString + ldr r0, [r5] + adds r0, r4 + adds r0, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + bl sub_80FD338 + cmp r0, 0 + bne _08119B18 +_08119B0A: + adds r6, 0x1 + cmp r6, 0x7 + ble _08119ACA + b _08119B5C + .align 2, 0 +_08119B14: .4byte gUnknown_203B04C +_08119B18: + ldr r0, _08119B24 @ =gUnknown_203B04C + mov r1, sp + bl StringCopy + b _08119B5C + .align 2, 0 +_08119B24: .4byte gUnknown_203B04C +_08119B28: + ldr r0, [r5, 0x8] + bl Free + ldr r0, [r5] + bl Free + ldr r0, [r5, 0xC] + bl Free + ldr r0, [r5, 0x4] + bl Free + adds r0, r5, 0 + adds r0, 0x20 + ldrb r0, [r0] + bl DestroyTask + ldr r0, _08119B64 @ =gUnknown_203B05C + ldr r0, [r0] + bl Free + bl sub_80F8DC0 + adds r0, r4, 0 + bl DestroyTask +_08119B5C: + add sp, 0x20 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08119B64: .4byte gUnknown_203B05C + thumb_func_end sub_81199FC + + thumb_func_start BufferUnionRoomPlayerName +BufferUnionRoomPlayerName: @ 8119B68 + push {r4,lr} + ldr r4, _08119B78 @ =gUnknown_203B04C + ldrb r0, [r4] + cmp r0, 0xFF + bne _08119B7C + movs r0, 0 + b _08119B8A + .align 2, 0 +_08119B78: .4byte gUnknown_203B04C +_08119B7C: + ldr r0, _08119B90 @ =gStringVar1 + adds r1, r4, 0 + bl StringCopy + movs r0, 0xFF + strb r0, [r4] + movs r0, 0x1 +_08119B8A: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08119B90: .4byte gStringVar1 + thumb_func_end BufferUnionRoomPlayerName + + thumb_func_start sub_8119B94 +sub_8119B94: @ 8119B94 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _08119BE8 @ =gUnknown_203B05C + ldr r4, [r0] + movs r7, 0 + movs r6, 0 + movs r5, 0 +_08119BA6: + ldr r0, [r4, 0xC] + adds r0, r5 + ldr r1, _08119BEC @ =gUnknown_8457034 + bl sub_811A694 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x1 + bne _08119BF0 + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x8] + adds r1, r5 + ldm r1!, {r2,r5,r6} + stm r0!, {r2,r5,r6} + ldm r1!, {r2,r5,r6} + stm r0!, {r2,r5,r6} + ldr r1, [r4, 0x8] + movs r0, 0 + strh r0, [r1, 0x18] + ldr r2, [r4, 0x8] + ldrb r1, [r2, 0x1A] + movs r5, 0x4 + negs r5, r5 + adds r0, r5, 0 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strb r1, [r2, 0x1A] + ldr r0, [r4, 0x8] + strb r3, [r0, 0x1B] + movs r0, 0x4 + b _08119D24 + .align 2, 0 +_08119BE8: .4byte gUnknown_203B05C +_08119BEC: .4byte gUnknown_8457034 +_08119BF0: + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _08119BA6 + movs r6, 0 + mov r9, r6 +_08119BFC: + ldr r0, [r4] + mov r1, r9 + lsls r5, r1, 5 + adds r2, r0, r5 + ldrb r0, [r2, 0x1A] + lsls r0, 30 + mov r8, r5 + cmp r0, 0 + beq _08119CF0 + ldr r1, [r4, 0x4] + adds r0, r2, 0 + bl sub_811A748 + adds r6, r0, 0 + cmp r6, 0xFF + beq _08119C96 + ldr r0, [r4] + adds r2, r0, r5 + ldrb r1, [r2, 0x1A] + lsls r0, r1, 30 + lsrs r0, 30 + cmp r0, 0x1 + bne _08119C74 + lsls r0, r6, 3 + subs r0, r6 + lsls r6, r0, 2 + ldr r1, [r4, 0x4] + adds r1, r6 + adds r0, r2, 0 + bl sub_811A6DC + cmp r0, 0 + beq _08119C5A + ldr r1, [r4] + ldr r0, [r4, 0x4] + adds r1, r5 + adds r0, r6 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r4] + adds r0, r5 + movs r1, 0x40 + strb r1, [r0, 0x1B] + movs r7, 0x1 + b _08119C8C +_08119C5A: + ldr r0, [r4] + adds r1, r0, r5 + ldrb r0, [r1, 0x1B] + cmp r0, 0 + beq _08119C8C + subs r0, 0x1 + strb r0, [r1, 0x1B] + ldr r0, [r4] + adds r0, r5 + ldrb r0, [r0, 0x1B] + cmp r0, 0 + bne _08119C8C + b _08119C8A +_08119C74: + movs r3, 0x4 + negs r3, r3 + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x1A] + ldr r0, [r4] + adds r0, r5 + movs r1, 0 + strb r1, [r0, 0x1B] +_08119C8A: + movs r7, 0x2 +_08119C8C: + ldr r0, [r4] + add r0, r8 + movs r1, 0 + strh r1, [r0, 0x18] + b _08119CF0 +_08119C96: + ldr r0, [r4] + adds r1, r0, r5 + ldrb r0, [r1, 0x1A] + lsls r2, r0, 30 + lsrs r0, r2, 30 + cmp r0, 0x2 + beq _08119CD0 + ldrh r0, [r1, 0x18] + adds r0, 0x1 + strh r0, [r1, 0x18] + ldr r0, [r4] + adds r2, r0, r5 + ldrh r1, [r2, 0x18] + ldr r0, _08119CCC @ =0x00000257 + cmp r1, r0 + bls _08119CF0 + ldrb r0, [r2, 0x1A] + movs r5, 0x4 + negs r5, r5 + adds r1, r5, 0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0x1A] + movs r7, 0x2 + b _08119CF0 + .align 2, 0 +_08119CCC: .4byte 0x00000257 +_08119CD0: + lsrs r0, r2, 30 + cmp r0, 0x2 + bne _08119CF0 + ldrh r0, [r1, 0x18] + adds r0, 0x1 + strh r0, [r1, 0x18] + ldr r0, [r4] + adds r2, r0, r5 + ldrh r1, [r2, 0x18] + ldr r0, _08119D30 @ =0x00000383 + cmp r1, r0 + bls _08119CF0 + adds r0, r2, 0 + movs r1, 0x1 + bl sub_811A5E4 +_08119CF0: + mov r0, r9 + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r0, 0x7 + bhi _08119D00 + b _08119BFC +_08119D00: + movs r5, 0 + movs r6, 0x3 +_08119D04: + ldr r0, [r4] + ldr r1, [r4, 0x4] + adds r1, r5 + movs r2, 0x8 + bl sub_811A798 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08119D1A + movs r7, 0x1 +_08119D1A: + adds r5, 0x1C + subs r6, 0x1 + cmp r6, 0 + bge _08119D04 + adds r0, r7, 0 +_08119D24: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08119D30: .4byte 0x00000383 + thumb_func_end sub_8119B94 + + thumb_func_start sub_8119D34 +sub_8119D34: @ 8119D34 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r0, 2 + add r0, r10 + lsls r0, 3 + ldr r1, _08119E24 @ =gTasks+0x8 + adds r6, r0, r1 + movs r7, 0 + mov r0, sp + adds r0, 0x10 + str r0, [sp, 0x18] +_08119D58: + lsls r2, r7, 24 + lsrs r2, 24 + mov r0, sp + ldr r1, [sp, 0x18] + bl sub_80FCC3C + lsls r0, 24 + lsrs r4, r0, 24 + mov r0, sp + ldrb r0, [r0, 0xA] + lsls r0, 25 + lsrs r0, 25 + mov r2, r10 + lsls r1, r2, 2 + add r1, r10 + lsls r1, 3 + ldr r3, _08119E28 @ =gTasks + adds r1, r3 + movs r5, 0x10 + ldrsh r1, [r1, r5] + bl sub_8116F28 + cmp r0, 0 + bne _08119D94 + mov r1, sp + ldr r0, _08119E2C @ =gUnknown_8457034 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} +_08119D94: + mov r0, sp + ldrb r1, [r0] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + bne _08119DAC + mov r1, sp + ldr r0, _08119E2C @ =gUnknown_8457034 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} +_08119DAC: + cmp r4, 0 + bne _08119E30 + lsls r0, r7, 3 + mov r8, r0 + adds r1, r7, 0x1 + mov r9, r1 + cmp r7, 0 + ble _08119DEC + movs r2, 0 + str r2, [sp, 0x1C] + adds r4, r7, 0 +_08119DC2: + ldr r0, [r6, 0x4] + ldr r3, [sp, 0x1C] + adds r0, r3 + mov r1, sp + bl sub_811A694 + lsls r0, 24 + cmp r0, 0 + bne _08119DE0 + mov r1, sp + ldr r0, _08119E2C @ =gUnknown_8457034 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} +_08119DE0: + ldr r5, [sp, 0x1C] + adds r5, 0x1C + str r5, [sp, 0x1C] + subs r4, 0x1 + cmp r4, 0 + bne _08119DC2 +_08119DEC: + ldr r1, [r6, 0x4] + mov r0, r8 + subs r4, r0, r7 + lsls r4, 2 + adds r1, r4 + mov r0, sp + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r6, 0x4] + adds r0, r4 + ldr r1, _08119E2C @ =gUnknown_8457034 + bl sub_811A694 + ldr r3, [r6, 0x4] + adds r3, r4 + movs r2, 0x1 + ands r2, r0 + ldrb r0, [r3, 0x18] + movs r4, 0x2 + negs r4, r4 + adds r1, r4, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + b _08119E68 + .align 2, 0 +_08119E24: .4byte gTasks+0x8 +_08119E28: .4byte gTasks +_08119E2C: .4byte gUnknown_8457034 +_08119E30: + ldr r1, [r6] + lsls r4, r7, 3 + subs r4, r7 + lsls r4, 2 + adds r1, r4 + mov r0, sp + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r6] + adds r0, r4 + ldr r1, _08119E80 @ =gUnknown_8457034 + bl sub_811A694 + ldr r3, [r6] + adds r3, r4 + movs r2, 0x1 + ands r2, r0 + ldrb r0, [r3, 0x18] + movs r4, 0x2 + negs r4, r4 + adds r1, r4, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + adds r7, 0x1 + mov r9, r7 +_08119E68: + mov r7, r9 + cmp r7, 0x3 + bgt _08119E70 + b _08119D58 +_08119E70: + 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 +_08119E80: .4byte gUnknown_8457034 + thumb_func_end sub_8119D34 + + thumb_func_start sub_8119E84 +sub_8119E84: @ 8119E84 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r0, _08119EB0 @ =sub_8119D34 + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _08119EB4 @ =gTasks+0x8 + adds r3, r1, r2 + str r4, [r3] + str r5, [r3, 0x4] + adds r2, r1 + strh r6, [r2, 0x8] + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08119EB0: .4byte sub_8119D34 +_08119EB4: .4byte gTasks+0x8 + thumb_func_end sub_8119E84 + + thumb_func_start sub_8119EB8 +sub_8119EB8: @ 8119EB8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + lsls r0, 2 + add r0, r10 + lsls r0, 3 + ldr r1, _08119FA4 @ =gTasks+0x8 + adds r6, r0, r1 + movs r3, 0 +_08119ED6: + lsls r4, r3, 3 + subs r0, r4, r3 + lsls r5, r0, 2 + ldr r0, [r6] + adds r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + lsls r2, r3, 24 + lsrs r2, 24 + str r3, [sp] + bl sub_80FCC3C + ldr r0, [r6] + adds r0, r5 + ldrb r0, [r0, 0xA] + lsls r0, 25 + lsrs r0, 25 + mov r2, r10 + lsls r1, r2, 2 + add r1, r10 + lsls r1, 3 + ldr r7, _08119FA8 @ =gTasks + adds r1, r7 + movs r2, 0xC + ldrsh r1, [r1, r2] + bl sub_8116F28 + mov r8, r4 + ldr r3, [sp] + cmp r0, 0 + bne _08119F22 + ldr r1, [r6] + adds r1, r5 + ldr r0, _08119FAC @ =gUnknown_8457034 + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} + ldm r0!, {r2,r4,r7} + stm r1!, {r2,r4,r7} +_08119F22: + adds r4, r3, 0x1 + mov r9, r4 + cmp r3, 0 + ble _08119F66 + str r5, [sp, 0x4] + movs r5, 0 + str r5, [sp, 0x8] + adds r4, r3, 0 +_08119F32: + ldr r1, [r6] + ldr r7, [sp, 0x8] + adds r0, r1, r7 + ldr r2, [sp, 0x4] + adds r1, r2 + str r3, [sp] + bl sub_811A694 + lsls r0, 24 + ldr r3, [sp] + cmp r0, 0 + bne _08119F5A + ldr r1, [r6] + ldr r5, [sp, 0x4] + adds r1, r5 + ldr r0, _08119FAC @ =gUnknown_8457034 + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} +_08119F5A: + ldr r7, [sp, 0x8] + adds r7, 0x1C + str r7, [sp, 0x8] + subs r4, 0x1 + cmp r4, 0 + bne _08119F32 +_08119F66: + mov r0, r8 + subs r4, r0, r3 + lsls r4, 2 + ldr r0, [r6] + adds r0, r4 + ldr r1, _08119FAC @ =gUnknown_8457034 + bl sub_811A694 + ldr r3, [r6] + adds r3, r4 + movs r2, 0x1 + ands r2, r0 + ldrb r0, [r3, 0x18] + movs r4, 0x2 + negs r4, r4 + adds r1, r4, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + mov r3, r9 + cmp r3, 0x3 + ble _08119ED6 + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08119FA4: .4byte gTasks+0x8 +_08119FA8: .4byte gTasks +_08119FAC: .4byte gUnknown_8457034 + thumb_func_end sub_8119EB8 + + thumb_func_start sub_8119FB0 +sub_8119FB0: @ 8119FB0 + push {lr} + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x7 + bne _08119FC0 + ldrb r1, [r0] + movs r0, 0x20 + b _08119FC8 +_08119FC0: + cmp r1, 0x8 + bne _08119FD2 + ldrb r1, [r0] + movs r0, 0x10 +_08119FC8: + ands r0, r1 + cmp r0, 0 + beq _08119FD2 + movs r0, 0x1 + b _08119FD4 +_08119FD2: + movs r0, 0 +_08119FD4: + pop {r1} + bx r1 + thumb_func_end sub_8119FB0 + + thumb_func_start sub_8119FD8 +sub_8119FD8: @ 8119FD8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _0811A04C @ =gTasks+0x8 + adds r4, r1, r0 + movs r6, 0 + subs r0, 0x8 + movs r5, 0 + adds r1, r0 + mov r8, r1 +_08119FF6: + ldr r0, [r4] + adds r0, r5 + adds r1, r0, 0 + adds r1, 0x10 + lsls r2, r6, 24 + lsrs r2, 24 + bl sub_80FCCF4 + lsls r0, 24 + cmp r0, 0 + beq _0811A01A + ldr r0, [r4] + adds r0, r5 + mov r2, r8 + movs r3, 0xC + ldrsh r1, [r2, r3] + bl sub_8119FB0 +_0811A01A: + ldr r0, [r4] + adds r0, r5 + ldr r1, _0811A050 @ =gUnknown_8457034 + bl sub_811A694 + ldr r3, [r4] + adds r3, r5 + movs r2, 0x1 + ands r2, r0 + ldrb r0, [r3, 0x18] + movs r7, 0x2 + negs r7, r7 + adds r1, r7, 0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _08119FF6 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A04C: .4byte gTasks+0x8 +_0811A050: .4byte gUnknown_8457034 + thumb_func_end sub_8119FD8 + + thumb_func_start sub_811A054 +sub_811A054: @ 811A054 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0811A07C @ =sub_8119EB8 + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + ldr r1, _0811A080 @ =gTasks+0x8 + adds r3, r2, r1 + str r4, [r3] + adds r1, r2 + strh r5, [r1, 0x4] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811A07C: .4byte sub_8119EB8 +_0811A080: .4byte gTasks+0x8 + thumb_func_end sub_811A054 + + thumb_func_start sub_811A084 +sub_811A084: @ 811A084 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0811A0AC @ =sub_8119FD8 + movs r1, 0 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 3 + ldr r1, _0811A0B0 @ =gTasks+0x8 + adds r3, r2, r1 + str r4, [r3] + adds r1, r2 + strh r5, [r1, 0x4] + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0811A0AC: .4byte sub_8119FD8 +_0811A0B0: .4byte gTasks+0x8 + thumb_func_end sub_811A084 + + thumb_func_start sub_811A0B4 +sub_811A0B4: @ 811A0B4 + push {r4,lr} + adds r4, r0, 0 + bl LoadStdWindowFrameGfx + movs r0, 0 + movs r1, 0x1 + bl DrawDialogueFrame + ldr r0, _0811A0DC @ =gStringVar4 + adds r1, r4, 0 + bl StringExpandPlaceholders + movs r0, 0 + movs r1, 0x1 + bl AddTextPrinterWithCustomSpeedForMessage + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811A0DC: .4byte gStringVar4 + thumb_func_end sub_811A0B4 + + thumb_func_start sub_811A0E0 +sub_811A0E0: @ 811A0E0 + push {lr} + bl RunTextPrinters_CheckPrinter0Active + lsls r0, 16 + cmp r0, 0 + beq _0811A0F0 + movs r0, 0 + b _0811A0F2 +_0811A0F0: + movs r0, 0x1 +_0811A0F2: + pop {r1} + bx r1 + thumb_func_end sub_811A0E0 + + thumb_func_start sub_811A0F8 +sub_811A0F8: @ 811A0F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0811A10A + cmp r0, 0x1 + beq _0811A130 + b _0811A142 +_0811A10A: + bl LoadStdWindowFrameGfx + movs r0, 0 + movs r1, 0x1 + bl DrawDialogueFrame + ldr r0, _0811A12C @ =gStringVar4 + adds r1, r5, 0 + bl StringExpandPlaceholders + movs r0, 0x1 + bl AddTextPrinterForMessage + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0811A142 + .align 2, 0 +_0811A12C: .4byte gStringVar4 +_0811A130: + bl RunTextPrinters_CheckPrinter0Active + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0811A142 + strb r0, [r4] + movs r0, 0x1 + b _0811A144 +_0811A142: + movs r0, 0 +_0811A144: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811A0F8 + + thumb_func_start sub_811A14C +sub_811A14C: @ 811A14C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + cmp r0, 0 + beq _0811A15E + cmp r0, 0x1 + beq _0811A174 + b _0811A1A0 +_0811A15E: + cmp r5, 0 + beq _0811A168 + movs r0, 0x3 + negs r0, r0 + b _0811A1A4 +_0811A168: + bl DisplayYesNoMenuDefaultYes + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0811A1A0 +_0811A174: + cmp r5, 0 + beq _0811A186 + bl DestroyYesNoMenu + movs r0, 0 + strb r0, [r4] + movs r0, 0x3 + negs r0, r0 + b _0811A1A4 +_0811A186: + bl Menu_ProcessInputNoWrapClearOnChoose + lsls r0, 24 + asrs r1, r0, 24 + movs r2, 0x80 + lsls r2, 17 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x2 + bhi _0811A1A0 + strb r5, [r4] + adds r0, r1, 0 + b _0811A1A4 +_0811A1A0: + movs r0, 0x2 + negs r0, r0 +_0811A1A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811A14C + + thumb_func_start sub_811A1AC +sub_811A1AC: @ 811A1AC + push {r4,lr} + sub sp, 0x8 + bl AddWindow + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0 + bl DrawStdWindowFrame + adds r0, r4, 0 + movs r1, 0xFF + bl FillWindowPixelBuffer + ldr r2, _0811A1F8 @ =gUnknown_8459378 + movs r0, 0x1 + str r0, [sp] + movs r0, 0x6 + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r1, 0 + movs r3, 0x8 + bl sub_811A444 + adds r0, r4, 0 + bl PutWindowTilemap + adds r0, r4, 0 + movs r1, 0x2 + bl CopyWindowToVram + adds r0, r4, 0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811A1F8: .4byte gUnknown_8459378 + thumb_func_end sub_811A1AC + + thumb_func_start sub_811A1FC +sub_811A1FC: @ 811A1FC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + movs r1, 0x1 + bl ClearStdWindowAndFrame + adds r0, r4, 0 + bl RemoveWindow + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_811A1FC + + thumb_func_start sub_811A218 +sub_811A218: @ 811A218 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + adds r5, r1, 0 + mov r9, r2 + adds r0, r3, 0 + ldrb r4, [r7] + cmp r4, 0 + beq _0811A234 + cmp r4, 0x1 + beq _0811A274 + b _0811A2DA +_0811A234: + bl AddWindow + strb r0, [r5] + ldrb r0, [r5] + movs r1, 0 + bl DrawStdWindowFrame + ldr r0, _0811A270 @ =gMultiuseListMenuTemplate + adds r2, r0, 0 + ldr r1, [sp, 0x1C] + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldm r1!, {r3,r4,r6} + stm r2!, {r3,r4,r6} + ldrb r1, [r5] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0 + bl ListMenuInit + mov r1, r9 + strb r0, [r1] + ldrb r0, [r5] + movs r1, 0x1 + bl CopyWindowToVram + ldrb r0, [r7] + adds r0, 0x1 + strb r0, [r7] + b _0811A2DA + .align 2, 0 +_0811A270: .4byte gMultiuseListMenuTemplate +_0811A274: + mov r3, r9 + ldrb r0, [r3] + bl ListMenu_ProcessInput + mov r8, r0 + ldr r0, _0811A2AC @ =gMain + ldrh r1, [r0, 0x2E] + ands r4, r1 + cmp r4, 0 + beq _0811A2B0 + mov r4, r9 + ldrb r0, [r4] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + ldrb r0, [r5] + movs r1, 0x1 + bl ClearStdWindowAndFrame + ldrb r0, [r5] + bl RemoveWindow + movs r0, 0 + strb r0, [r7] + mov r0, r8 + b _0811A2DE + .align 2, 0 +_0811A2AC: .4byte gMain +_0811A2B0: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0811A2DA + mov r6, r9 + ldrb r0, [r6] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + ldrb r0, [r5] + movs r1, 0x1 + bl ClearStdWindowAndFrame + ldrb r0, [r5] + bl RemoveWindow + strb r4, [r7] + movs r0, 0x2 + negs r0, r0 + b _0811A2DE +_0811A2DA: + movs r0, 0x1 + negs r0, r0 +_0811A2DE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811A218 + + thumb_func_start sub_811A2EC +sub_811A2EC: @ 811A2EC + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r0 + adds r4, r1, 0 + adds r5, r2, 0 + adds r7, r3, 0 + ldrb r0, [r0] + cmp r0, 0 + beq _0811A308 + cmp r0, 0x1 + beq _0811A358 + b _0811A3E6 +_0811A308: + ldr r0, _0811A350 @ =gUnknown_8456F1C + bl sub_811A1AC + strb r0, [r7] + ldr r0, [sp, 0x1C] + bl AddWindow + strb r0, [r4] + ldrb r0, [r4] + movs r1, 0 + bl DrawStdWindowFrame + ldr r0, _0811A354 @ =gMultiuseListMenuTemplate + adds r2, r0, 0 + ldr r1, [sp, 0x20] + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldm r1!, {r3,r6,r7} + stm r2!, {r3,r6,r7} + ldrb r1, [r4] + strb r1, [r0, 0x10] + movs r1, 0 + movs r2, 0x1 + bl ListMenuInit + strb r0, [r5] + ldrb r0, [r4] + movs r1, 0x1 + bl CopyWindowToVram + mov r1, r9 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + b _0811A3E6 + .align 2, 0 +_0811A350: .4byte gUnknown_8456F1C +_0811A354: .4byte gMultiuseListMenuTemplate +_0811A358: + ldrb r0, [r5] + bl ListMenu_ProcessInput + adds r1, r0, 0 + ldr r0, _0811A3A8 @ =gMain + ldrh r2, [r0, 0x2E] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0 + beq _0811A3E6 + cmp r1, 0x8 + beq _0811A37E + movs r0, 0x2 + ands r0, r2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + cmp r0, 0 + beq _0811A3AC +_0811A37E: + ldrb r0, [r5] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + ldrb r0, [r4] + movs r1, 0x1 + bl ClearStdWindowAndFrame + ldrb r0, [r4] + bl RemoveWindow + ldrb r0, [r7] + bl sub_811A1FC + movs r0, 0 + mov r3, r9 + strb r0, [r3] + movs r0, 0x2 + negs r0, r0 + b _0811A3EA + .align 2, 0 +_0811A3A8: .4byte gMain +_0811A3AC: + ldr r0, [sp, 0x24] + bl sub_811AD7C + adds r6, r0, 0 + cmp r6, 0 + blt _0811A3E0 + ldrb r0, [r5] + movs r1, 0 + movs r2, 0 + bl DestroyListMenuTask + ldrb r0, [r4] + movs r1, 0x1 + bl ClearStdWindowAndFrame + ldrb r0, [r4] + bl RemoveWindow + ldrb r0, [r7] + bl sub_811A1FC + mov r0, r8 + mov r7, r9 + strb r0, [r7] + adds r0, r6, 0 + b _0811A3EA +_0811A3E0: + movs r0, 0x7 + bl PlaySE +_0811A3E6: + movs r0, 0x1 + negs r0, r0 +_0811A3EA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811A2EC + + thumb_func_start sub_811A3F8 +sub_811A3F8: @ 811A3F8 + push {lr} + sub sp, 0xC + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl FillBgTilemapBufferRect + movs r0, 0 + bl CopyBgTilemapBufferToVram + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_811A3F8 + + thumb_func_start sub_811A41C +sub_811A41C: @ 811A41C + push {lr} + sub sp, 0xC + movs r0, 0x20 + str r0, [sp] + str r0, [sp, 0x4] + movs r0, 0 + str r0, [sp, 0x8] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl FillBgTilemapBufferRect + movs r0, 0 + bl CopyBgTilemapBufferToVram + bl EnableBothScriptContexts + add sp, 0xC + pop {r0} + bx r0 + thumb_func_end sub_811A41C + + thumb_func_start sub_811A444 +sub_811A444: @ 811A444 + push {r4,r5,lr} + sub sp, 0x10 + ldr r5, [sp, 0x1C] + ldr r4, [sp, 0x20] + lsls r3, 24 + lsrs r3, 24 + lsls r5, 24 + lsrs r5, 24 + lsls r4, 24 + lsrs r4, 24 + str r2, [sp] + mov r2, sp + strb r0, [r2, 0x4] + mov r0, sp + strb r1, [r0, 0x5] + strb r3, [r0, 0x6] + strb r5, [r0, 0x7] + strb r3, [r0, 0x8] + strb r5, [r0, 0x9] + ldrb r1, [r2, 0xC] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0xC] + ldr r2, _0811A490 @ =gTextFlags + ldrb r1, [r2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + cmp r4, 0x6 + bls _0811A486 + b _0811A5D2 +_0811A486: + lsls r0, r4, 2 + ldr r1, _0811A494 @ =_0811A498 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811A490: .4byte gTextFlags +_0811A494: .4byte _0811A498 + .align 2, 0 +_0811A498: + .4byte _0811A4B4 + .4byte _0811A4E0 + .4byte _0811A50C + .4byte _0811A538 + .4byte _0811A564 + .4byte _0811A590 + .4byte _0811A5A8 +_0811A4B4: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x30 + b _0811A5CE +_0811A4E0: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x50 + b _0811A5CE +_0811A50C: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x60 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x70 + b _0811A5CE +_0811A538: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x30 + b _0811A5CE +_0811A564: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r2, 0xC] + ldrb r1, [r2, 0xD] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2, 0xD] + ands r0, r3 + movs r1, 0x30 + b _0811A5CE +_0811A590: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r4, 0xF + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0x70 + b _0811A5BE +_0811A5A8: + mov r0, sp + movs r1, 0 + strb r1, [r0, 0xA] + strb r1, [r0, 0xB] + mov r2, sp + ldrb r1, [r2, 0xC] + movs r4, 0xF + movs r3, 0xF + adds r0, r3, 0 + ands r0, r1 + movs r1, 0xE0 +_0811A5BE: + orrs r0, r1 + strb r0, [r2, 0xC] + mov r1, sp + ldrb r0, [r1, 0xD] + orrs r0, r4 + strb r0, [r1, 0xD] + ands r0, r3 + movs r1, 0x90 +_0811A5CE: + orrs r0, r1 + strb r0, [r2, 0xD] +_0811A5D2: + mov r0, sp + movs r1, 0xFF + movs r2, 0 + bl AddTextPrinter + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_811A444 + + thumb_func_start sub_811A5E4 +sub_811A5E4: @ 811A5E4 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + beq _0811A63C + ldr r2, _0811A64C @ =gUnknown_8457034 + mov r8, r2 + movs r5, 0 + mov r9, r5 + movs r6, 0x4 + negs r6, r6 + mov r12, r6 + adds r2, r0, 0 + adds r2, 0x18 + adds r4, r0, 0 + movs r7, 0xFF + mov r10, r7 + adds r3, r1, 0 +_0811A610: + adds r1, r4, 0 + mov r0, r8 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + mov r0, r10 + strh r0, [r2] + ldrb r1, [r2, 0x2] + mov r0, r12 + ands r0, r1 + movs r1, 0x5 + negs r1, r1 + ands r0, r1 + strb r0, [r2, 0x2] + mov r5, r9 + strb r5, [r2, 0x3] + adds r2, 0x20 + adds r4, 0x20 + subs r3, 0x1 + cmp r3, 0 + bne _0811A610 +_0811A63C: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A64C: .4byte gUnknown_8457034 + thumb_func_end sub_811A5E4 + + thumb_func_start sub_811A650 +sub_811A650: @ 811A650 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r1, _0811A690 @ =gUnknown_8457034 + mov r12, r1 + movs r5, 0x2 + negs r5, r5 + mov r8, r5 + adds r2, r0, 0 + adds r2, 0x18 + adds r3, r0, 0 + movs r4, 0x3 +_0811A668: + adds r1, r3, 0 + mov r0, r12 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldrb r1, [r2] + mov r0, r8 + ands r0, r1 + strb r0, [r2] + adds r2, 0x1C + adds r3, 0x1C + subs r4, 0x1 + cmp r4, 0 + bge _0811A668 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A690: .4byte gUnknown_8457034 + thumb_func_end sub_811A650 + + thumb_func_start sub_811A694 +sub_811A694: @ 811A694 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + movs r2, 0 + adds r4, r5, 0x2 + adds r3, r6, 0x2 +_0811A6A0: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0811A6C8 + adds r2, 0x1 + cmp r2, 0x1 + ble _0811A6A0 + movs r2, 0 + adds r4, r5, 0 + adds r4, 0x10 + adds r3, r6, 0 + adds r3, 0x10 +_0811A6BC: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _0811A6CC +_0811A6C8: + movs r0, 0x1 + b _0811A6D4 +_0811A6CC: + adds r2, 0x1 + cmp r2, 0x7 + ble _0811A6BC + movs r0, 0 +_0811A6D4: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811A694 + + thumb_func_start sub_811A6DC +sub_811A6DC: @ 811A6DC + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + ldrb r3, [r5, 0xA] + movs r0, 0x7F + ldrb r2, [r6, 0xA] + adds r1, r0, 0 + ands r1, r3 + ands r0, r2 + cmp r1, r0 + bne _0811A740 + movs r0, 0x80 + adds r1, r0, 0 + ands r1, r3 + ands r0, r2 + cmp r1, r0 + bne _0811A740 + movs r2, 0 + adds r4, r5, 0x4 + adds r3, r6, 0x4 +_0811A704: + adds r0, r4, r2 + adds r1, r3, r2 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0811A740 + adds r2, 0x1 + cmp r2, 0x3 + ble _0811A704 + ldrh r2, [r5, 0x8] + ldr r0, _0811A73C @ =0x000003ff + ldrh r3, [r6, 0x8] + adds r1, r0, 0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _0811A740 + ldrb r2, [r5, 0x9] + movs r0, 0xFC + ldrb r3, [r6, 0x9] + adds r1, r0, 0 + ands r1, r2 + ands r0, r3 + cmp r1, r0 + bne _0811A740 + movs r0, 0 + b _0811A742 + .align 2, 0 +_0811A73C: .4byte 0x000003ff +_0811A740: + movs r0, 0x1 +_0811A742: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811A6DC + + thumb_func_start sub_811A748 +sub_811A748: @ 811A748 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r0 + movs r7, 0xFF + movs r6, 0 + adds r4, r1, 0 + adds r4, 0x18 + adds r5, r1, 0 +_0811A75A: + ldrb r1, [r4] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0811A782 + mov r0, r8 + adds r1, r5, 0 + bl sub_811A694 + lsls r0, 24 + cmp r0, 0 + bne _0811A782 + lsls r0, r6, 24 + lsrs r7, r0, 24 + ldrb r0, [r4] + movs r2, 0x2 + negs r2, r2 + adds r1, r2, 0 + ands r0, r1 + strb r0, [r4] +_0811A782: + adds r4, 0x1C + adds r5, 0x1C + adds r6, 0x1 + cmp r6, 0x3 + ble _0811A75A + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811A748 + + thumb_func_start sub_811A798 +sub_811A798: @ 811A798 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r3, r0, 0 + mov r8, r1 + lsls r2, 24 + lsrs r6, r2, 24 + ldrb r1, [r1, 0x18] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0811A80C + movs r5, 0 + cmp r5, r6 + bge _0811A80C + movs r0, 0x4 + negs r0, r0 + mov r9, r0 + movs r1, 0x2 + negs r1, r1 + mov r12, r1 + adds r2, r3, 0 + adds r2, 0x18 + adds r1, r3, 0 +_0811A7CA: + ldrb r0, [r2, 0x2] + movs r3, 0x3 + ands r3, r0 + cmp r3, 0 + bne _0811A802 + mov r0, r8 + ldm r0!, {r4,r6,r7} + stm r1!, {r4,r6,r7} + ldm r0!, {r4,r6,r7} + stm r1!, {r4,r6,r7} + strh r3, [r2] + ldrb r1, [r2, 0x2] + mov r0, r9 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2, 0x2] + movs r0, 0x40 + strb r0, [r2, 0x3] + mov r0, r8 + ldrb r1, [r0, 0x18] + mov r0, r12 + ands r0, r1 + mov r1, r8 + strb r0, [r1, 0x18] + lsls r0, r5, 24 + lsrs r0, 24 + b _0811A80E +_0811A802: + adds r2, 0x20 + adds r1, 0x20 + adds r5, 0x1 + cmp r5, r6 + blt _0811A7CA +_0811A80C: + movs r0, 0xFF +_0811A80E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811A798 + + thumb_func_start sub_811A81C +sub_811A81C: @ 811A81C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x30 + adds r4, r1, 0 + adds r5, r3, 0 + ldr r3, [sp, 0x50] + ldr r1, [sp, 0x54] + lsls r0, 24 + lsrs r7, r0, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r6, r2, 24 + lsls r3, 24 + lsrs r3, 24 + mov r10, r3 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _0811A904 @ =gStringVar4 + mov r8, r0 + adds r1, 0x1 + movs r2, 0x2 + movs r3, 0x2 + bl ConvertIntToDecimalStringN + ldr r1, _0811A908 @ =gUnknown_84571B0 + mov r0, r8 + bl StringAppend + str r6, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0 + mov r2, r8 + adds r3, r4, 0 + bl sub_811A444 + adds r4, 0x12 + lsls r4, 24 + lsrs r4, 24 + mov r9, r4 + ldrb r0, [r5, 0xA] + lsls r0, 25 + lsrs r2, r0, 25 + ldrb r1, [r5, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0811A8F2 + movs r0, 0x40 + ands r2, r0 + cmp r2, 0 + bne _0811A8F2 + add r4, sp, 0x10 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + str r6, [sp] + mov r0, r10 + str r0, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0x2 + adds r2, r4, 0 + mov r3, r9 + bl sub_811A444 + ldrb r1, [r5, 0x2] + ldrb r0, [r5, 0x3] + lsls r0, 8 + orrs r1, r0 + add r0, sp, 0x8 + movs r2, 0x2 + movs r3, 0x5 + bl ConvertIntToDecimalStringN + ldr r1, _0811A90C @ =gUnknown_84571B4 + mov r0, r8 + bl StringCopy + mov r0, r8 + add r1, sp, 0x8 + bl StringAppend + mov r3, r9 + adds r3, 0x4D + lsls r3, 24 + lsrs r3, 24 + str r6, [sp] + mov r0, r10 + str r0, [sp, 0x4] + adds r0, r7, 0 + movs r1, 0 + mov r2, r8 + bl sub_811A444 +_0811A8F2: + add sp, 0x30 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A904: .4byte gStringVar4 +_0811A908: .4byte gUnknown_84571B0 +_0811A90C: .4byte gUnknown_84571B4 + thumb_func_end sub_811A81C + + thumb_func_start sub_811A910 +sub_811A910: @ 811A910 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x30 + adds r5, r3, 0 + ldr r3, [sp, 0x4C] + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + lsls r3, 24 + lsrs r7, r3, 24 + ldrb r1, [r5, 0x1A] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0811A9A2 + add r4, sp, 0x10 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + mov r0, r8 + str r0, [sp] + str r7, [sp, 0x4] + mov r0, r9 + movs r1, 0x2 + adds r2, r4, 0 + adds r3, r6, 0 + bl sub_811A444 + ldrb r1, [r5, 0x2] + ldrb r0, [r5, 0x3] + lsls r0, 8 + orrs r1, r0 + add r0, sp, 0x8 + movs r2, 0x2 + movs r3, 0x5 + bl ConvertIntToDecimalStringN + ldr r4, _0811A9B0 @ =gStringVar4 + ldr r1, _0811A9B4 @ =gUnknown_84571B4 + adds r0, r4, 0 + bl StringCopy + adds r0, r4, 0 + add r1, sp, 0x8 + bl StringAppend + adds r3, r6, 0 + adds r3, 0x47 + lsls r3, 24 + lsrs r3, 24 + mov r0, r8 + str r0, [sp] + str r7, [sp, 0x4] + mov r0, r9 + movs r1, 0 + adds r2, r4, 0 + bl sub_811A444 +_0811A9A2: + add sp, 0x30 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811A9B0: .4byte gStringVar4 +_0811A9B4: .4byte gUnknown_84571B4 + thumb_func_end sub_811A910 + + thumb_func_start sub_811A9B8 +sub_811A9B8: @ 811A9B8 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl GetXYCoordsOneStepInFrontOfPlayer + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x9 + bne _0811A9F0 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + bne _0811A9F0 + ldr r0, _0811A9EC @ =gPlayerAvatar + ldrb r0, [r0, 0x3] + cmp r0, 0x2 + beq _0811A9E6 + cmp r0, 0 + bne _0811A9F0 +_0811A9E6: + movs r0, 0x1 + b _0811A9F2 + .align 2, 0 +_0811A9EC: .4byte gPlayerAvatar +_0811A9F0: + movs r0, 0 +_0811A9F2: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811A9B8 + + thumb_func_start sub_811A9FC +sub_811A9FC: @ 811A9FC + push {lr} + cmp r0, 0x4 + beq _0811AA14 + cmp r0, 0x4 + ble _0811AA1C + cmp r0, 0x5 + beq _0811AA10 + cmp r0, 0x8 + beq _0811AA18 + b _0811AA1C +_0811AA10: + movs r0, 0x1 + b _0811AA1E +_0811AA14: + movs r0, 0x2 + b _0811AA1E +_0811AA18: + movs r0, 0x3 + b _0811AA1E +_0811AA1C: + movs r0, 0 +_0811AA1E: + pop {r1} + bx r1 + thumb_func_end sub_811A9FC + + thumb_func_start sub_811AA24 +sub_811AA24: @ 811AA24 + push {r4,lr} + sub sp, 0x20 + adds r4, r0, 0 + adds r1, r4, 0 + adds r1, 0x10 + mov r0, sp + bl StringCopy + ldrb r1, [r4] + lsls r1, 28 + lsrs r1, 28 + mov r0, sp + bl ConvertInternationalString + adds r4, 0x2 + adds r0, r4, 0 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + bl sub_80FD338 + add sp, 0x20 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811AA24 + + thumb_func_start sub_811AA5C +sub_811AA5C: @ 811AA5C + push {r4-r7,lr} + adds r7, r3, 0 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r2, 19 + adds r5, r0, r2 + ldrb r1, [r5, 0xA] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0811AAE4 + cmp r6, 0 + bne _0811AAE4 + ldr r4, _0811AAC4 @ =gStringVar1 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + adds r0, r5, 0x2 + bl sub_8118658 + lsls r0, 16 + lsrs r0, 16 + adds r1, r4, 0 + bl sub_80FD338 + adds r2, r0, 0 + ldrb r1, [r5, 0xA] + movs r0, 0x7F + ands r0, r1 + cmp r0, 0x45 + bne _0811AAD0 + ldr r0, _0811AAC8 @ =gStringVar4 + ldr r3, _0811AACC @ =gUnknown_8457F80 + lsls r1, r7, 2 + lsls r2, 3 + adds r1, r2 + adds r1, r3 + ldr r1, [r1] + bl StringExpandPlaceholders + movs r0, 0x2 + b _0811ABD2 + .align 2, 0 +_0811AAC4: .4byte gStringVar1 +_0811AAC8: .4byte gStringVar4 +_0811AACC: .4byte gUnknown_8457F80 +_0811AAD0: + ldr r0, _0811AAE0 @ =gUnknown_8457A34 + lsls r1, r2, 2 + adds r1, r0 + ldr r0, [r1] + bl sub_811A0B4 + movs r0, 0x1 + b _0811ABD2 + .align 2, 0 +_0811AAE0: .4byte gUnknown_8457A34 +_0811AAE4: + ldr r4, _0811AB24 @ =gStringVar1 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + bl StringCopy + ldrb r1, [r5] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl ConvertInternationalString + cmp r6, 0 + beq _0811AB0A + adds r0, r5, r6 + ldrb r0, [r0, 0x3] + lsrs r7, r0, 3 + movs r0, 0x1 + ands r7, r0 +_0811AB0A: + ldrb r0, [r5, 0xA] + lsls r0, 25 + lsrs r0, 25 + movs r1, 0x3F + ands r1, r0 + cmp r1, 0x4 + beq _0811AB58 + cmp r1, 0x4 + bgt _0811AB28 + cmp r1, 0x1 + beq _0811AB32 + b _0811ABC8 + .align 2, 0 +_0811AB24: .4byte gStringVar1 +_0811AB28: + cmp r1, 0x5 + beq _0811AB78 + cmp r1, 0x8 + beq _0811AB9C + b _0811ABC8 +_0811AB32: + ldr r5, _0811AB50 @ =gStringVar4 + ldr r4, _0811AB54 @ =gUnknown_8458758 + bl Random + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 14 + lsls r0, r7, 4 + adds r1, r0 + adds r1, r4 + ldr r1, [r1] + b _0811ABB6 + .align 2, 0 +_0811AB50: .4byte gStringVar4 +_0811AB54: .4byte gUnknown_8458758 +_0811AB58: + ldr r5, _0811AB70 @ =gStringVar4 + ldr r4, _0811AB74 @ =gUnknown_8458A78 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + lsls r1, r7, 4 + b _0811ABB0 + .align 2, 0 +_0811AB70: .4byte gStringVar4 +_0811AB74: .4byte gUnknown_8458A78 +_0811AB78: + ldr r5, _0811AB94 @ =gStringVar4 + ldr r4, _0811AB98 @ =gUnknown_84588BC + bl Random + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 14 + lsls r0, r7, 4 + adds r1, r0 + adds r1, r4 + ldr r1, [r1] + b _0811ABB6 + .align 2, 0 +_0811AB94: .4byte gStringVar4 +_0811AB98: .4byte gUnknown_84588BC +_0811AB9C: + ldr r5, _0811ABC0 @ =gStringVar4 + ldr r4, _0811ABC4 @ =gUnknown_84589AC + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ands r0, r1 + lsls r0, 2 + lsls r1, r7, 3 +_0811ABB0: + adds r0, r1 + adds r0, r4 + ldr r1, [r0] +_0811ABB6: + adds r0, r5, 0 + bl StringExpandPlaceholders + b _0811ABD0 + .align 2, 0 +_0811ABC0: .4byte gStringVar4 +_0811ABC4: .4byte gUnknown_84589AC +_0811ABC8: + ldr r0, _0811ABD8 @ =gStringVar4 + ldr r1, _0811ABDC @ =gUnknown_8457F90 + bl StringExpandPlaceholders +_0811ABD0: + movs r0, 0 +_0811ABD2: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811ABD8: .4byte gStringVar4 +_0811ABDC: .4byte gUnknown_8457F90 + thumb_func_end sub_811AA5C + + thumb_func_start nullsub_92 +nullsub_92: @ 811ABE0 + bx lr + thumb_func_end nullsub_92 + + thumb_func_start sub_811ABE4 +sub_811ABE4: @ 811ABE4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + ldr r4, [sp, 0x28] + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r4, 24 + lsrs r4, 24 + ldrh r0, [r2, 0x8] + lsls r0, 22 + lsrs r0, 22 + mov r8, r0 + ldrb r0, [r2, 0x9] + lsrs r7, r0, 2 + ldrb r0, [r2, 0xB] + lsrs r0, 1 + mov r9, r0 + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + adds r2, r3, 0 + movs r3, 0x8 + bl sub_811A444 + movs r0, 0xCE + lsls r0, 1 + cmp r8, r0 + bne _0811AC3C + ldr r2, _0811AC38 @ =gUnknown_8458FBC + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0x44 + bl sub_811A444 + b _0811AC90 + .align 2, 0 +_0811AC38: .4byte gUnknown_8458FBC +_0811AC3C: + adds r1, r7, 0x1 + adds r0, r6, 0 + movs r2, 0x44 + adds r3, r5, 0 + bl BlitMoveInfoIcon + movs r0, 0xB + mov r2, r8 + muls r2, r0 + ldr r0, _0811ACA0 @ =gSpeciesNames + adds r2, r0 + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + movs r3, 0x76 + bl sub_811A444 + add r0, sp, 0x8 + mov r1, r9 + movs r2, 0 + movs r3, 0x3 + bl ConvertIntToDecimalStringN + movs r0, 0x2 + add r1, sp, 0x8 + movs r2, 0 + bl GetStringWidth + lsls r0, 16 + lsrs r0, 16 + movs r3, 0xDA + subs r3, r0 + lsls r3, 24 + lsrs r3, 24 + str r5, [sp] + str r4, [sp, 0x4] + adds r0, r6, 0 + movs r1, 0x2 + add r2, sp, 0x8 + bl sub_811A444 +_0811AC90: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0811ACA0: .4byte gSpeciesNames + thumb_func_end sub_811ABE4 + + thumb_func_start sub_811ACA4 +sub_811ACA4: @ 811ACA4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + ldr r0, _0811ACF8 @ =gUnknown_203B05C + ldr r6, [r0] + movs r0, 0x3 + negs r0, r0 + cmp r4, r0 + bne _0811AD38 + ldr r0, _0811ACFC @ =gUnknown_8456F7C + ldrb r0, [r0, 0x14] + lsls r0, 28 + lsrs r0, 28 + cmp r8, r0 + bne _0811AD38 + bl sub_80F9800 + adds r2, r0, 0 + ldrh r1, [r2, 0x8] + ldr r0, _0811AD00 @ =0x000003ff + ands r0, r1 + cmp r0, 0 + beq _0811AD6C + ldr r0, _0811AD04 @ =gSaveBlock2Ptr + ldr r3, [r0] + movs r0, 0x5 + str r0, [sp] + mov r0, r9 + mov r1, r8 + bl sub_811ABE4 + b _0811AD6C + .align 2, 0 +_0811ACF8: .4byte gUnknown_203B05C +_0811ACFC: .4byte gUnknown_8456F7C +_0811AD00: .4byte 0x000003ff +_0811AD04: .4byte gSaveBlock2Ptr +_0811AD08: + mov r0, r12 + adds r1, r0, r4 + adds r1, 0x10 + add r0, sp, 0x4 + bl StringCopy + ldr r0, [r6] + adds r0, r4 + ldrb r1, [r0] + lsls r1, 28 + lsrs r1, 28 + add r0, sp, 0x4 + bl ConvertInternationalString + ldr r2, [r6] + adds r2, r4 + movs r0, 0x6 + str r0, [sp] + mov r0, r9 + mov r1, r8 + add r3, sp, 0x4 + bl sub_811ABE4 + b _0811AD6C +_0811AD38: + movs r5, 0 + movs r1, 0 + ldr r0, [r6] + mov r12, r0 + mov r2, r12 + adds r2, 0x8 + movs r3, 0 + adds r7, r4, 0x1 +_0811AD48: + ldrb r0, [r2, 0x12] + lsls r0, 30 + lsrs r0, 30 + adds r4, r3, 0 + cmp r0, 0x1 + bne _0811AD5E + ldrh r0, [r2] + lsls r0, 22 + cmp r0, 0 + beq _0811AD5E + adds r5, 0x1 +_0811AD5E: + cmp r5, r7 + beq _0811AD08 + adds r2, 0x20 + adds r3, 0x20 + adds r1, 0x1 + cmp r1, 0x7 + ble _0811AD48 +_0811AD6C: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_811ACA4 + + thumb_func_start sub_811AD7C +sub_811AD7C: @ 811AD7C + push {r4-r7,lr} + movs r4, 0 + movs r3, 0 + movs r7, 0x3 + ldr r6, _0811ADAC @ =0x000003ff + adds r2, r0, 0 + adds r2, 0x8 + adds r5, r1, 0x1 +_0811AD8C: + ldrb r1, [r2, 0x12] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0x1 + bne _0811ADA2 + ldrh r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0811ADA2 + adds r4, 0x1 +_0811ADA2: + cmp r4, r5 + bne _0811ADB0 + adds r0, r3, 0 + b _0811ADBC + .align 2, 0 +_0811ADAC: .4byte 0x000003ff +_0811ADB0: + adds r2, 0x20 + adds r3, 0x1 + cmp r3, 0x7 + ble _0811AD8C + movs r0, 0x1 + negs r0, r0 +_0811ADBC: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_811AD7C + + thumb_func_start sub_811ADC4 +sub_811ADC4: @ 811ADC4 + lsls r0, 5 + adds r0, r1 + ldrb r0, [r0, 0xB] + lsls r0, 31 + lsrs r0, 31 + bx lr + thumb_func_end sub_811ADC4 + + thumb_func_start sub_811ADD0 +sub_811ADD0: @ 811ADD0 + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + bne _0811AE10 + movs r4, 0 + b _0811ADFA +_0811ADE0: + movs r0, 0x64 + muls r0, r4 + ldr r1, _0811AE08 @ =gPlayerParty + adds r0, r1 + movs r1, 0x41 + bl GetMonData + adds r1, r0, 0 + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _0811AE40 + adds r4, 0x1 +_0811ADFA: + ldr r0, _0811AE0C @ =gPlayerPartyCount + ldrb r0, [r0] + cmp r4, r0 + blt _0811ADE0 + movs r0, 0x2 + b _0811AE5C + .align 2, 0 +_0811AE08: .4byte gPlayerParty +_0811AE0C: .4byte gPlayerPartyCount +_0811AE10: + movs r4, 0 + ldr r0, _0811AE44 @ =gPlayerPartyCount + ldrb r0, [r0] + cmp r4, r0 + bge _0811AE5A + ldr r6, _0811AE48 @ =gBaseStats +_0811AE1C: + movs r0, 0x64 + muls r0, r4 + ldr r1, _0811AE4C @ =gPlayerParty + adds r0, r1 + movs r1, 0x41 + bl GetMonData + adds r1, r0, 0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r1, r0, r6 + ldrb r0, [r1, 0x6] + cmp r0, r5 + beq _0811AE40 + ldrb r0, [r1, 0x7] + cmp r0, r5 + bne _0811AE50 +_0811AE40: + movs r0, 0 + b _0811AE5C + .align 2, 0 +_0811AE44: .4byte gPlayerPartyCount +_0811AE48: .4byte gBaseStats +_0811AE4C: .4byte gPlayerParty +_0811AE50: + adds r4, 0x1 + ldr r0, _0811AE64 @ =gPlayerPartyCount + ldrb r0, [r0] + cmp r4, r0 + blt _0811AE1C +_0811AE5A: + movs r0, 0x1 +_0811AE5C: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0811AE64: .4byte gPlayerPartyCount + thumb_func_end sub_811ADD0 + + thumb_func_start sub_811AE68 +sub_811AE68: @ 811AE68 + push {lr} + adds r3, r0, 0 + cmp r1, 0x44 + beq _0811AEA4 + cmp r1, 0x44 + bgt _0811AE7A + cmp r1, 0x41 + beq _0811AE84 + b _0811AEC2 +_0811AE7A: + cmp r1, 0x45 + beq _0811AE94 + cmp r1, 0x48 + beq _0811AEB4 + b _0811AEC2 +_0811AE84: + ldr r0, _0811AE90 @ =gUnknown_8458314 + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + b _0811AEA6 + .align 2, 0 +_0811AE90: .4byte gUnknown_8458314 +_0811AE94: + ldr r0, _0811AEA0 @ =gUnknown_84585E8 + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + b _0811AEA6 + .align 2, 0 +_0811AEA0: .4byte gUnknown_84585E8 +_0811AEA4: + ldr r1, _0811AEB0 @ =gUnknown_8458F9C +_0811AEA6: + adds r0, r3, 0 + bl StringExpandPlaceholders + b _0811AEC2 + .align 2, 0 +_0811AEB0: .4byte gUnknown_8458F9C +_0811AEB4: + ldr r0, _0811AEC8 @ =gUnknown_84583B4 + lsls r1, r2, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r3, 0 + bl StringExpandPlaceholders +_0811AEC2: + pop {r0} + bx r0 + .align 2, 0 +_0811AEC8: .4byte gUnknown_84583B4 + thumb_func_end sub_811AE68 + + thumb_func_start sub_811AECC +sub_811AECC: @ 811AECC + push {r4-r6,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + adds r6, r4, 0 + bl GetMultiplayerId + lsls r0, 24 + lsrs r3, r0, 24 + ldr r2, _0811AF00 @ =gLinkPlayers + movs r0, 0x1 + adds r1, r3, 0 + eors r1, r0 + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x13] + cmp r4, 0x44 + beq _0811AF20 + cmp r4, 0x44 + bgt _0811AF04 + cmp r4, 0x41 + beq _0811AF0A + b _0811AF60 + .align 2, 0 +_0811AF00: .4byte gLinkPlayers +_0811AF04: + cmp r6, 0x45 + beq _0811AF44 + b _0811AF60 +_0811AF0A: + ldr r2, _0811AF1C @ =gUnknown_8458230 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r1, r0 + b _0811AF32 + .align 2, 0 +_0811AF1C: .4byte gUnknown_8458230 +_0811AF20: + ldr r2, _0811AF40 @ =gUnknown_8458230 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r1, r0 + adds r2, 0x8 +_0811AF32: + adds r1, r2 + ldr r1, [r1] + adds r0, r5, 0 + bl StringCopy + b _0811AF60 + .align 2, 0 +_0811AF40: .4byte gUnknown_8458230 +_0811AF44: + ldr r2, _0811AF68 @ =gUnknown_8458230 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r1, r0 + adds r2, 0x4 + adds r1, r2 + ldr r1, [r1] + adds r0, r5, 0 + bl StringCopy +_0811AF60: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0811AF68: .4byte gUnknown_8458230 + thumb_func_end sub_811AECC + + thumb_func_start sub_811AF6C +sub_811AF6C: @ 811AF6C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r5, r2, 0 + adds r6, r3, 0 + movs r2, 0 + mov r8, r2 + ldrh r0, [r5] + subs r0, 0x40 + cmp r0, 0x8 + bls _0811AF86 + b _0811B092 +_0811AF86: + lsls r0, 2 + ldr r1, _0811AF90 @ =_0811AF94 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0811AF90: .4byte _0811AF94 + .align 2, 0 +_0811AF94: + .4byte _0811B088 + .4byte _0811AFB8 + .4byte _0811B092 + .4byte _0811B092 + .4byte _0811AFC8 + .4byte _0811AFC0 + .4byte _0811B092 + .4byte _0811B092 + .4byte _0811B078 +_0811AFB8: + ldr r1, _0811AFBC @ =gUnknown_8457CA4 + b _0811B07A + .align 2, 0 +_0811AFBC: .4byte gUnknown_8457CA4 +_0811AFC0: + ldr r1, _0811AFC4 @ =gUnknown_8457CF8 + b _0811B07A + .align 2, 0 +_0811AFC4: .4byte gUnknown_8457CF8 +_0811AFC8: + adds r0, r6, 0 + adds r0, 0x58 + ldr r4, _0811AFF0 @ =gUnknown_203B06C + ldrh r1, [r4, 0xC] + movs r2, 0 + movs r3, 0x3 + bl ConvertIntToDecimalStringN + adds r0, r6, 0 + adds r0, 0x63 + ldrh r2, [r4, 0xA] + movs r1, 0xB + muls r1, r2 + ldr r2, _0811AFF4 @ =gSpeciesNames + adds r1, r2 + bl StringCopy + movs r4, 0 + b _0811AFFA + .align 2, 0 +_0811AFF0: .4byte gUnknown_203B06C +_0811AFF4: .4byte gSpeciesNames +_0811AFF8: + adds r4, 0x1 +_0811AFFA: + cmp r4, 0x3 + bgt _0811B030 + ldr r0, _0811B044 @ =gRfuLinkStatus + ldr r0, [r0] + lsls r1, r4, 5 + adds r0, r1 + ldrh r0, [r0, 0x18] + cmp r0, 0x2 + bne _0811AFF8 + ldrh r1, [r5, 0x4] + adds r0, r6, 0 + adds r0, 0x6E + movs r2, 0 + movs r3, 0x3 + bl ConvertIntToDecimalStringN + ldrh r1, [r5, 0x2] + movs r0, 0xB + muls r1, r0 + ldr r0, _0811B048 @ =gSpeciesNames + adds r1, r0 + adds r0, r6, 0 + adds r0, 0x79 + bl StringCopy + ldrh r5, [r5, 0x2] + mov r8, r5 +_0811B030: + movs r0, 0xCE + lsls r0, 1 + cmp r8, r0 + bne _0811B050 + ldr r1, _0811B04C @ =gUnknown_8457DB8 + adds r0, r7, 0 + bl StringCopy + b _0811B080 + .align 2, 0 +_0811B044: .4byte gRfuLinkStatus +_0811B048: .4byte gSpeciesNames +_0811B04C: .4byte gUnknown_8457DB8 +_0811B050: + movs r4, 0 + adds r5, r6, 0 + adds r5, 0x58 +_0811B056: + lsls r0, r4, 24 + lsrs r0, 24 + adds r1, r5, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + adds r5, 0xB + adds r4, 0x1 + cmp r4, 0x3 + ble _0811B056 + ldr r1, _0811B074 @ =gUnknown_8457D44 + adds r0, r7, 0 + bl DynamicPlaceholderTextUtil_ExpandPlaceholders + b _0811B080 + .align 2, 0 +_0811B074: .4byte gUnknown_8457D44 +_0811B078: + ldr r1, _0811B084 @ =gUnknown_8457C48 +_0811B07A: + adds r0, r7, 0 + bl StringExpandPlaceholders +_0811B080: + movs r2, 0x1 + b _0811B092 + .align 2, 0 +_0811B084: .4byte gUnknown_8457C48 +_0811B088: + ldr r1, _0811B0A0 @ =gUnknown_8457E0C + adds r0, r7, 0 + bl StringExpandPlaceholders + movs r2, 0x2 +_0811B092: + adds r0, r2, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811B0A0: .4byte gUnknown_8457E0C + thumb_func_end sub_811AF6C + + thumb_func_start sub_811B0A4 +sub_811B0A4: @ 811B0A4 + push {lr} + adds r2, r0, 0 + ldr r0, _0811B0C4 @ =gRecvCmds + ldrh r1, [r0, 0x2] + cmp r1, 0 + beq _0811B0C8 + cmp r1, 0x51 + beq _0811B0B8 + cmp r1, 0x52 + bne _0811B0C8 +_0811B0B8: + adds r0, r2, 0 + adds r0, 0x84 + strh r1, [r0] + movs r0, 0x1 + b _0811B0CA + .align 2, 0 +_0811B0C4: .4byte gRecvCmds +_0811B0C8: + movs r0, 0 +_0811B0CA: + pop {r1} + bx r1 + thumb_func_end sub_811B0A4 + + thumb_func_start InUnionRoom +InUnionRoom: @ 811B0D0 + push {lr} + movs r2, 0 + ldr r0, _0811B0EC @ =gSaveBlock1Ptr + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0x80 + lsls r0, 3 + cmp r1, r0 + bne _0811B0E4 + movs r2, 0x1 +_0811B0E4: + adds r0, r2, 0 + pop {r1} + bx r1 + .align 2, 0 +_0811B0EC: .4byte gSaveBlock1Ptr + thumb_func_end InUnionRoom + + thumb_func_start sub_811B0F0 +sub_811B0F0: @ 811B0F0 + push {r4-r6,lr} + movs r6, 0 + movs r5, 0 + ldr r0, _0811B138 @ =gPlayerPartyCount + ldrb r0, [r0] + cmp r6, r0 + bge _0811B130 +_0811B0FE: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0811B13C @ =gPlayerParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0x38 + bl GetMonData + cmp r0, 0x1E + bhi _0811B126 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + movs r1, 0xCE + lsls r1, 1 + cmp r0, r1 + beq _0811B126 + adds r6, 0x1 +_0811B126: + adds r5, 0x1 + ldr r0, _0811B138 @ =gPlayerPartyCount + ldrb r0, [r0] + cmp r5, r0 + blt _0811B0FE +_0811B130: + cmp r6, 0x1 + bgt _0811B140 + movs r0, 0 + b _0811B142 + .align 2, 0 +_0811B138: .4byte gPlayerPartyCount +_0811B13C: .4byte gPlayerParty +_0811B140: + movs r0, 0x1 +_0811B142: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_811B0F0 + + thumb_func_start sub_811B148 +sub_811B148: @ 811B148 + movs r1, 0 + strh r1, [r0] + strh r1, [r0, 0x2] + str r1, [r0, 0x4] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + str r1, [r0, 0x14] + bx lr + thumb_func_end sub_811B148 + + thumb_func_start Script_ResetUnionRoomTrade +Script_ResetUnionRoomTrade: @ 811B15C + push {lr} + ldr r0, _0811B168 @ =gUnknown_203B06C + bl sub_811B148 + pop {r0} + bx r0 + .align 2, 0 +_0811B168: .4byte gUnknown_203B06C + thumb_func_end Script_ResetUnionRoomTrade + + thumb_func_start sub_811B16C +sub_811B16C: @ 811B16C + push {r4,r5,lr} + adds r5, r1, 0 + movs r1, 0x64 + adds r4, r0, 0 + muls r4, r1 + ldr r0, _0811B1A8 @ =gPlayerParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + strh r0, [r5, 0xA] + adds r0, r4, 0 + movs r1, 0x38 + bl GetMonData + strh r0, [r5, 0xC] + adds r0, r4, 0 + movs r1, 0 + bl GetMonData + str r0, [r5, 0x4] + ldrh r1, [r5, 0xA] + movs r0, 0xCE + lsls r0, 1 + cmp r1, r0 + beq _0811B1AC + movs r0, 0 + b _0811B1AE + .align 2, 0 +_0811B1A8: .4byte gPlayerParty +_0811B1AC: + movs r0, 0x1 +_0811B1AE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_811B16C + + thumb_func_start sub_811B1B4 +sub_811B1B4: @ 811B1B4 + push {r4,r5,lr} + adds r5, r1, 0 + movs r1, 0x64 + adds r4, r0, 0 + muls r4, r1 + ldr r0, _0811B1E8 @ =gPlayerParty + adds r4, r0 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + strh r0, [r5, 0xE] + adds r0, r4, 0 + movs r1, 0x38 + bl GetMonData + strh r0, [r5, 0x10] + adds r0, r4, 0 + movs r1, 0 + bl GetMonData + str r0, [r5, 0x14] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0811B1E8: .4byte gPlayerParty + thumb_func_end sub_811B1B4 + + thumb_func_start sub_811B1EC +sub_811B1EC: @ 811B1EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r1, 24 + movs r2, 0 + mov r8, r2 + cmp r1, 0 + bne _0811B20A + ldrh r7, [r0, 0xA] + ldr r6, [r0, 0x4] + b _0811B20E +_0811B202: + lsls r0, r5, 16 + lsrs r0, 16 + mov r8, r0 + b _0811B242 +_0811B20A: + ldrh r7, [r0, 0xE] + ldr r6, [r0, 0x14] +_0811B20E: + movs r5, 0 + b _0811B23A +_0811B212: + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0811B250 @ =gPlayerParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0 + bl GetMonData + cmp r0, r6 + bne _0811B238 + adds r0, r4, 0 + movs r1, 0x41 + bl GetMonData + lsls r0, 16 + lsrs r0, 16 + cmp r0, r7 + beq _0811B202 +_0811B238: + adds r5, 0x1 +_0811B23A: + ldr r0, _0811B254 @ =gPlayerPartyCount + ldrb r0, [r0] + cmp r5, r0 + blt _0811B212 +_0811B242: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0811B250: .4byte gPlayerParty +_0811B254: .4byte gPlayerPartyCount + thumb_func_end sub_811B1EC + + thumb_func_start sub_811B258 +sub_811B258: @ 811B258 + push {r4,lr} + adds r4, r0, 0 + bl sub_811A3F8 + bl ScriptContext2_Disable + bl sub_80696F0 + ldr r1, _0811B290 @ =gUnknown_203B058 + movs r0, 0 + strb r0, [r1] + cmp r4, 0 + beq _0811B288 + ldr r2, _0811B294 @ =gUnknown_203B06C + ldrh r0, [r2, 0x2] + ldrh r1, [r2, 0xA] + ldrh r2, [r2, 0xC] + bl sub_80FAFA0 + movs r0, 0x40 + movs r1, 0 + movs r2, 0 + bl sub_80FB008 +_0811B288: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0811B290: .4byte gUnknown_203B058 +_0811B294: .4byte gUnknown_203B06C + thumb_func_end sub_811B258 + + thumb_func_start sub_811B298 +sub_811B298: @ 811B298 + push {lr} + bl ScriptContext2_Enable + bl ScriptFreezeObjectEvents + pop {r0} + bx r0 + thumb_func_end sub_811B298 + + thumb_func_start sub_811B2A8 +sub_811B2A8: @ 811B2A8 + push {r4,lr} + movs r4, 0x80 + ldr r3, _0811B2D4 @ =gLinkPlayers + lsls r1, r0, 3 + subs r1, r0 + lsls r1, 2 + adds r0, r1, r3 + ldrb r2, [r0, 0x13] + lsls r2, 3 + orrs r2, r4 + adds r3, 0x4 + adds r1, r3 + ldr r0, [r1] + movs r1, 0x7 + ands r0, r1 + orrs r0, r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0811B2D4: .4byte gLinkPlayers + thumb_func_end sub_811B2A8 + + thumb_func_start sub_811B2D8 +sub_811B2D8: @ 811B2D8 + push {r4,lr} + movs r3, 0x80 + movs r2, 0 + ldr r4, [r0, 0xC] +_0811B2E0: + lsls r0, r2, 3 + subs r0, r2 + lsls r0, 2 + adds r1, r4, r0 + ldrb r0, [r1, 0x18] + lsls r0, 31 + cmp r0, 0 + beq _0811B308 + ldrb r0, [r1, 0xB] + lsls r0, 31 + lsrs r0, 31 + lsls r0, 3 + orrs r3, r0 + ldrb r1, [r1, 0x2] + movs r0, 0x7 + ands r0, r1 + orrs r3, r0 + lsls r0, r3, 24 + lsrs r3, r0, 24 + b _0811B312 +_0811B308: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0811B2E0 +_0811B312: + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_811B2D8 + + thumb_func_start sub_811B31C +sub_811B31C: @ 811B31C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + str r2, [sp] + bl GetMultiplayerId + movs r1, 0x1 + eors r0, r1 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 5 + ldr r0, _0811B4B0 @ =gTrainerCards + adds r1, r0 + mov r8, r1 + bl DynamicPlaceholderTextUtil_Reset + mov r6, r9 + adds r6, 0xAC + bl sub_80447F0 + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xD + muls r1, r0 + ldr r0, _0811B4B4 @ =gTrainerClassNames + adds r1, r0 + adds r0, r6, 0 + bl StringCopy + movs r0, 0 + adds r1, r6, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + mov r1, r8 + adds r1, 0x30 + movs r0, 0x1 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + movs r4, 0xB0 + lsls r4, 1 + add r4, r9 + ldr r1, _0811B4B8 @ =gUnknown_84594B0 + mov r2, r8 + ldrb r0, [r2, 0x1] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + adds r0, r4, 0 + bl StringCopy + movs r0, 0x2 + adds r1, r4, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + mov r5, r9 + adds r5, 0xCA + mov r0, r8 + ldrh r1, [r0, 0xC] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0x3 + bl ConvertIntToDecimalStringN + movs r0, 0x3 + adds r1, r5, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + movs r2, 0xD9 + add r2, r9 + mov r10, r2 + mov r0, r8 + ldrh r1, [r0, 0x10] + mov r0, r10 + movs r2, 0 + movs r3, 0x3 + bl ConvertIntToDecimalStringN + mov r4, r9 + adds r4, 0xE8 + mov r2, r8 + ldrh r1, [r2, 0x12] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl ConvertIntToDecimalStringN + movs r0, 0x4 + mov r1, r10 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + movs r0, 0x5 + adds r1, r4, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + movs r4, 0xC8 + lsls r4, 1 + add r4, r9 + ldr r1, _0811B4BC @ =gUnknown_84594C4 + adds r0, r4, 0 + bl DynamicPlaceholderTextUtil_ExpandPlaceholders + ldr r0, _0811B4C0 @ =gStringVar4 + adds r1, r4, 0 + bl StringCopy + mov r0, r8 + ldrh r1, [r0, 0x14] + ldr r4, _0811B4C4 @ =0x0000270f + cmp r1, r4 + ble _0811B40A + adds r1, r4, 0 +_0811B40A: + adds r0, r6, 0 + movs r2, 0 + movs r3, 0x4 + bl ConvertIntToDecimalStringN + movs r0, 0 + adds r1, r6, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + mov r2, r8 + ldrh r1, [r2, 0x16] + cmp r1, r4 + ble _0811B426 + adds r1, r4, 0 +_0811B426: + mov r4, r9 + adds r4, 0xBB + adds r0, r4, 0 + movs r2, 0 + movs r3, 0x4 + bl ConvertIntToDecimalStringN + movs r0, 0x2 + adds r1, r4, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + mov r0, r8 + ldrh r1, [r0, 0x20] + adds r0, r5, 0 + movs r2, 0 + movs r3, 0x5 + bl ConvertIntToDecimalStringN + movs r0, 0x3 + adds r1, r5, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + movs r7, 0 + movs r6, 0x80 + lsls r6, 19 + mov r5, r8 + adds r5, 0x28 + mov r4, r10 +_0811B45E: + ldrh r1, [r5] + adds r0, r4, 0 + bl CopyEasyChatWord + lsrs r0, r6, 24 + adds r1, r4, 0 + bl DynamicPlaceholderTextUtil_SetPlaceholderPtr + movs r2, 0x80 + lsls r2, 17 + adds r6, r2 + adds r5, 0x2 + adds r4, 0xF + adds r7, 0x1 + cmp r7, 0x3 + ble _0811B45E + movs r4, 0xC8 + lsls r4, 1 + add r4, r9 + ldr r1, _0811B4C8 @ =gUnknown_8459504 + adds r0, r4, 0 + bl DynamicPlaceholderTextUtil_ExpandPlaceholders + ldr r5, _0811B4C0 @ =gStringVar4 + adds r0, r5, 0 + adds r1, r4, 0 + bl StringAppend + ldr r0, [sp] + cmp r0, 0x1 + bne _0811B4D0 + ldr r1, _0811B4CC @ =gUnknown_8459588 + adds r0, r4, 0 + bl DynamicPlaceholderTextUtil_ExpandPlaceholders + adds r0, r5, 0 + adds r1, r4, 0 + bl StringAppend + b _0811B4F0 + .align 2, 0 +_0811B4B0: .4byte gTrainerCards +_0811B4B4: .4byte gTrainerClassNames +_0811B4B8: .4byte gUnknown_84594B0 +_0811B4BC: .4byte gUnknown_84594C4 +_0811B4C0: .4byte gStringVar4 +_0811B4C4: .4byte 0x0000270f +_0811B4C8: .4byte gUnknown_8459504 +_0811B4CC: .4byte gUnknown_8459588 +_0811B4D0: + ldr r2, [sp] + cmp r2, 0 + bne _0811B4F0 + ldr r0, _0811B500 @ =gUnknown_8459580 + mov r2, r8 + ldrb r1, [r2] + lsls r1, 2 + adds r1, r0 + ldr r1, [r1] + adds r0, r4, 0 + bl DynamicPlaceholderTextUtil_ExpandPlaceholders + adds r0, r5, 0 + adds r1, r4, 0 + bl StringAppend +_0811B4F0: + 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 +_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/data/link_rfu_3.s b/data/link_rfu_3.s deleted file mode 100644 index 6cd65b04d..000000000 --- a/data/link_rfu_3.s +++ /dev/null @@ -1,1569 +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_8456C74:: @ 8456C74 - .word gUnknown_84571AC - .word gUnknown_8459394 - .word gUnknown_84593A4 - .word gUnknown_84593B4 - .word gUnknown_84593C4 - .word gUnknown_84593D4 - .word gUnknown_84593E4 - .word gUnknown_84593F4 - .word gUnknown_84593DC - .word gUnknown_8459400 - .word gUnknown_8459410 - .word gUnknown_845941C - .word gUnknown_845942C - .word gUnknown_8459434 - .word gUnknown_8459440 - .word gUnknown_84571AC - .word gUnknown_84571AC - .word gUnknown_84571AC - .word gUnknown_84571AC - .word gUnknown_84571AC - .word gUnknown_84571AC - .word gUnknown_84593E4 - .word gUnknown_84593F4 - -gUnknown_8456CD0:: @ 8456CD0 - .byte 0x00, 0x00, 0x00, 0x1E, 0x02, 0x0F @ window template - .2byte 0x0008 - - @ pal table? -gUnknown_8456CD8:: @ 8456CD8 - .2byte 0x0201, 0x0000 - .2byte 0x0202, 0x0000 - .2byte 0x0403, 0x0000 - .2byte 0x0204, 0x0000 - .2byte 0x2509, 0x0000 - .2byte 0x250A, 0x0000 - .2byte 0x350B, 0x0000 - .2byte 0x350D, 0x0000 - .2byte 0x350E, 0x0000 - -gUnknown_8456CFC:: @ 8456CFC - .byte 0x00, 0x01, 0x03, 0x0D, 0x0A, 0x0F @ window template - .2byte 0x0044 - -gUnknown_8456D04:: @ 8456D04 - .byte 0x00, 0x10, 0x03, 0x07, 0x04, 0x0F @ window template - .2byte 0x00C6 - -gUnknown_8456D0C:: @ 8456D0C - .word gUnknown_84571AC, 0 - .word gUnknown_84571AC, 1 - .word gUnknown_84571AC, 2 - .word gUnknown_84571AC, 3 - .word gUnknown_84571AC, 4 - -gUnknown_8456D34:: @ 8456D34 - .word gUnknown_8456D0C - .word NULL - .word sub_81164C8 - .2byte 0x0005 - .2byte 0x0005 - .byte 0x00, 0x00, 0x01, 0x00, 0x20, 0x31, 0x10, 0x42 - -gUnknown_8456D4C:: @ 8456D4C - .byte 0x00, 0x01, 0x03, 0x11, 0x0A, 0x0F @ window template - .2byte 0x0044 - -gUnknown_8456D54:: @ 8456D54 - .byte 0x00, 0x14, 0x03, 0x07, 0x04, 0x0F @ window template - .2byte 0x00EE - -gUnknown_8456D5C:: @ 8456D5C - .word gUnknown_84571AC, 0 - .word gUnknown_84571AC, 1 - .word gUnknown_84571AC, 2 - .word gUnknown_84571AC, 3 - .word gUnknown_84571AC, 4 - .word gUnknown_84571AC, 5 - .word gUnknown_84571AC, 6 - .word gUnknown_84571AC, 7 - .word gUnknown_84571AC, 8 - .word gUnknown_84571AC, 9 - .word gUnknown_84571AC, 10 - .word gUnknown_84571AC, 11 - .word gUnknown_84571AC, 12 - .word gUnknown_84571AC, 13 - .word gUnknown_84571AC, 14 - .word gUnknown_84571AC, 15 - -gUnknown_8456DDC:: @ 8456DDC - .word gUnknown_8456D5C - .word ListMenuDefaultCursorMoveFunc - .word sub_8116F94 - .2byte 0x0010 - .2byte 0x0005 - .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x50, 0x02 - -gUnknown_8456DF4:: @ 8456DF4 - .byte 0x00, 0x14, 0x06, 0x08, 0x07, 0x0F @ window template? - .2byte 0x0001 - -gUnknown_8456DFC:: @ 8456DFC - .word gUnknown_8459354, 0x00000208 - .word gUnknown_8459344, 0x00000241 - .word gUnknown_845934C, 0x00000245 - .word gUnknown_8459360, 0x00000040 - -gUnknown_8456E1C:: @ 8456E1C - .word gUnknown_8456DFC - .word ListMenuDefaultCursorMoveFunc - .word NULL - .2byte 0x0004 - .2byte 0x0004 - .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02 - -gUnknown_8456E34:: @ 8456E34 - .byte 0x00, 0x12, 0x08, 0x0B, 0x05, 0x0F @ window template - .2byte 0x0001 - -gUnknown_8456E3C:: @ 8456E3C - .word gText_Register, 1 - .word gUnknown_8459370, 2 - .word gUnknown_8459360, 3 - -gUnknown_8456E54:: @ 8456E54 - .word gUnknown_8456E3C - .word ListMenuDefaultCursorMoveFunc - .word NULL - .2byte 0x0003 - .2byte 0x0003 - .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02 - -gUnknown_8456E6C:: @ 8456E6C - .byte 0x00, 0x14, 0x02, 0x09, 0x0B, 0x0F @ window template - .2byte 0x0001 - -gUnknown_8456E74:: @ 8456E74 - .word gTypeNames + 0x00, 0 - .word gTypeNames + 0x46, 10 - .word gTypeNames + 0x4D, 11 - .word gTypeNames + 0x5B, 13 - .word gTypeNames + 0x54, 12 - .word gTypeNames + 0x69, 15 - .word gTypeNames + 0x1C, 4 - .word gTypeNames + 0x23, 5 - .word gTypeNames + 0x0E, 2 - .word gTypeNames + 0x62, 14 - .word gTypeNames + 0x07, 1 - .word gTypeNames + 0x15, 3 - .word gTypeNames + 0x2A, 6 - .word gTypeNames + 0x31, 7 - .word gTypeNames + 0x70, 16 - .word gTypeNames + 0x38, 8 - .word gTypeNames + 0x77, 17 - .word gUnknown_8459360, 18 - -gUnknown_8456F04:: @ 8456F04 - .word gUnknown_8456E74 - .word ListMenuDefaultCursorMoveFunc - .word NULL - .2byte 0x0012 - .2byte 0x0006 - .byte 0x00, 0x00, 0x08, 0x00, 0x22, 0x31, 0x01, 0x02 - -gUnknown_8456F1C:: @ 8456F1C - .byte 0x00, 0x01, 0x01, 0x1C, 0x02, 0x0D @ window template - .2byte 0x0001 - -gUnknown_8456F24:: @ 8456F24 - .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D @ window template - .2byte 0x0039 - -gUnknown_8456F2C:: @ 8456F2C - .word gUnknown_84571AC, -3 - .word gUnknown_84571AC, 0 - .word gUnknown_84571AC, 1 - .word gUnknown_84571AC, 2 - .word gUnknown_84571AC, 3 - .word gUnknown_84571AC, 4 - .word gUnknown_84571AC, 5 - .word gUnknown_84571AC, 6 - .word gUnknown_84571AC, 7 - .word gUnknown_8459368, 8 - -gUnknown_8456F7C:: @ 8456F7C - .word gUnknown_8456F2C - .word ListMenuDefaultCursorMoveFunc - .word sub_811ACA4 - .2byte 0x000A - .2byte 0x0005 - .byte 0x00, 0x00, 0x0C, 0x00, 0xE2, 0xDF, 0x09, 0x02 - - @ unused window template? - .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D - .2byte 0x0039 - -gUnknown_8456F9C:: @ 8456F9C - .word gUnknown_84571AC, 0 - .word gUnknown_84571AC, 1 - .word gUnknown_84571AC, 2 - .word gUnknown_84571AC, 3 - .word gUnknown_84571AC, 4 - .word gUnknown_84571AC, 5 - .word gUnknown_84571AC, 6 - .word gUnknown_84571AC, 7 - .word gUnknown_84571AC, 8 - .word gUnknown_84571AC, 9 - .word gUnknown_84571AC, 10 - .word gUnknown_84571AC, 11 - .word gUnknown_84571AC, 12 - .word gUnknown_84571AC, 13 - .word gUnknown_84571AC, 14 - .word gUnknown_84571AC, 15 - -gUnknown_845701C:: @ 845701C - .word gUnknown_8456F9C - .word ListMenuDefaultCursorMoveFunc - .word nullsub_92 - .2byte 0x0010 - .2byte 0x0004 - .byte 0x00, 0x00, 0x08, 0x01, 0x20, 0x31, 0x41, 0x02 - -gUnknown_8457034:: @ 8457034 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - @ starts at gUnknown_082F0474 in pokeemerald, union link groups -gUnknown_845704C:: @ 845704C - .byte 0x01, 0xFF, 0x00, 0x00 -gUnknown_8457050:: @ 8457050 - .byte 0x02, 0xFF, 0x00, 0x00 -gUnknown_8457054:: @ 8457054 - .byte 0x03, 0xFF, 0x00, 0x00 -gUnknown_8457058:: @ 8457058 - .byte 0x04, 0xFF, 0x00, 0x00 -gUnknown_845705C:: @ 845705C - .byte 0x09, 0xFF, 0x00, 0x00 -gUnknown_8457060:: @ 8457060 - .byte 0x0A, 0xFF, 0x00, 0x00 -gUnknown_8457064:: @ 8457064 - .byte 0x0B, 0xFF, 0x00, 0x00 -gUnknown_8457068:: @ 8457068 - .byte 0x15, 0xFF, 0x00, 0x00 -gUnknown_845706C:: @ 845706C - .byte 0x16, 0xFF, 0x00, 0x00 -gUnknown_8457070:: @ 8457070 - .byte 0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xFF, 0x00, 0x00 -gUnknown_845707C:: @ 845707C - .byte 0x0C, 0xFF, 0x00, 0x00 -gUnknown_8457080:: @ 8457080 - .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0x0D, 0xFF, 0x00 -gUnknown_845708C:: @ 845708C - .byte 0x01, 0x02, 0x03, 0x04, 0x0A, 0xFF, 0x00, 0x00 - -gUnknown_8457094:: @ 8457094 - .word gUnknown_845704C - .word gUnknown_8457050 - .word gUnknown_8457054 - .word gUnknown_8457058 - .word gUnknown_845705C - .word gUnknown_8457060 - .word gUnknown_8457064 - .word gUnknown_8457068 - .word gUnknown_845706C - .word gUnknown_8457070 - .word gUnknown_845707C - .word gUnknown_8457080 - .word gUnknown_845708C - -gUnknown_84570C8:: @ 84570C8 - .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0xF7, 0x00, 0xAF, 0xF7, 0x01, 0xFF, 0x00 - -gUnknown_84570D8:: @ 84570D8 - .byte 0x29, 0x36, 0x27, 0x12, 0x13, 0x14, 0x19, 0x1A, 0x00, 0x00, 0x2A, 0x3A, 0x28, 0x16, 0x17, 0x18, 0x1C, 0x1D, 0x00, 0x00 - -gUnknown_84570EC:: @ 84570EC - .2byte 0x0004 - .2byte 0x0006 - .2byte 0x000D - .2byte 0x0008 - .2byte 0x000A - .2byte 0x0006 - .2byte 0x0001 - .2byte 0x0008 - .2byte 0x000D - .2byte 0x0004 - .2byte 0x0007 - .2byte 0x0004 - .2byte 0x0001 - .2byte 0x0004 - .2byte 0x0007 - .2byte 0x0008 - -gUnknown_845710C:: @ 845710C - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01 - -gUnknown_8457116:: @ 8457116 - .byte 0x00, 0x02, 0x01, 0x04, 0x03 - -gUnknown_845711B:: @ 845711B - .byte 0x01, 0x03, 0x01, 0x04, 0x02 - -gUnknown_8457120:: @ 8457120 - .byte 0x09, 0x08, 0x07, 0x02, 0x06, 0x05, 0x04, 0x03, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00 - - .align 2 -gUnknown_8457138:: @ 8457138 - abspath "rfu_union_tool.c" - - .align 2 -gUnknown_8457174:: @ 8457174 - .asciz "0" - - .align 2 -gUnknown_8457178:: @ 8457178 - .asciz "UnionObjWork != NULL" - -gUnknown_845718D:: @ 845718D - .byte 0xA4, 0xFE - -gUnknown_845718F:: @ 845718F - .byte 0xA5, 0xFE, 0x00, 0x00, 0x00 - -gUnknown_8457194:: @ 8457194 - .2byte 0x01FC, 0x0000 @ BgTemplate - -gUnknown_8457198:: @ 8457198 - .byte 0x00, 0x02, 0x0F, 0x1A, 0x04, 0x0E @ window template - .2byte 0x0014 - - @ ??? - .byte -1, 0, 0, 0 - .byte 0, 0, 0, 0 - -gUnknown_84571A8:: @ 84571A8 - .byte 0x01, 0x02, 0x03, 0x00 - -gUnknown_84571AC:: @ 84571AC - .string "$" - - .align 2 -gUnknown_84571B0:: @ 84571B0 - .string ":$" - - .align 2 -gUnknown_84571B4:: @ 84571B4 - .string "{EXTRA 7}$" - - .align 2 -gUnknown_84571B8:: @ 84571B8 - .string "Please start over from the beginning.$" - - .align 2 -gUnknown_84571E0:: @ 84571E0 - .string "The WIRELESS COMMUNICATION\n" - .string "SYSTEM search has been canceled.$" - - .align 2 - .string "ともだちからの れんらくを\n" @ something about waiting for a friend to connect? - .string "まっています$" - - .align 2 -gUnknown_8457234:: @ 8457234 - .string "{STR_VAR_1}! Awaiting\n" - .string "communication from another player.$" - - .align 2 -gUnknown_8457264:: @ 8457264 - .string "{STR_VAR_1}! Awaiting link!\n" - .string "Press START when everyone's ready.$" - - .align 2 -gJPText_SingleBattle:: - .string "シングルバトルを かいさいする$" - - .align 2 -gJPText_DoubleBattle:: - .string "ダブルバトルを かいさいする$" - - .align 2 -gJPText_MultiBattle:: - .string "マルチバトルを かいさいする$" - - .align 2 -gJPText_TradePokemon:: - .string "ポケモンこうかんを かいさいする$" - - .align 2 -gJPText_Chat:: - .string "チャットを かいさいする$" - - .align 2 -gJPText_DistWonderCard:: - .string "ふしぎなカードをくばる$" - - .align 2 -gJPText_DistWonderNews:: - .string "ふしぎなニュースをくばる$" - - .align 2 -unref_text_union_room_1:: - .string "ふしぎなできごとを かいさいする$" - - .align 2 -gJPText_HoldPokemonJump:: - .string "なわとびを かいさいする$" - - .align 2 -gJPText_HoldBerryCrush:: - .string "きのみマッシャーを かいさいする$" - - .align 2 -gJPText_HoldBerryPicking:: - .string "きのみどりを かいさいする$" - - .align 2 -gJPText_HoldSpinTrade:: - .string "ぐるぐるこうかんを かいさいする$" - - .align 2 -gJPText_HoldSpinShop:: - .string "ぐるぐるショップを かいさいする$" - - .align 2 -unref_text_ptrs_union_room_0:: - .word gJPText_SingleBattle - .word gJPText_DoubleBattle - .word gJPText_MultiBattle - .word gJPText_TradePokemon - .word gJPText_Chat - .word gJPText_DistWonderCard - .word gJPText_DistWonderNews - .word gJPText_DistWonderCard - .word gJPText_HoldPokemonJump - .word gJPText_HoldBerryCrush - .word gJPText_HoldBerryPicking - .word gJPText_HoldBerryPicking - .word gJPText_HoldSpinTrade - .word gJPText_HoldSpinShop - -gText_1PlayerNeeded:: - .string "1 player\n" - .string "needed.$" -gText_2PlayersNeeded:: - .string "2 players\n" - .string "needed.$" -gText_3PlayersNeeded:: - .string "3 players\n" - .string "needed.$" -gText_4PlayersNeeded:: @ uhhhh this one is JP but not the others??? but its english in emerald??? - .string "あと4にん\n" - .string "ひつよう$" -gText_2PlayerMode:: - .string "2-PLAYER\n" - .string "MODE$" -gText_3PlayerMode:: - .string "3-PLAYER\n" - .string "MODE$" -gText_4PlayerMode:: - .string "4-PLAYER\n" - .string "MODE$" -gText_5PlayerMode:: - .string "5-PLAYER\n" - .string "MODE$" - -gUnknown_845742C:: @ 845742C - .word gText_1PlayerNeeded - .word gText_2PlayerMode - .word NULL - .word NULL - .word NULL - - .word gText_3PlayersNeeded - .word gText_2PlayersNeeded - .word gText_1PlayerNeeded - .word gText_4PlayerMode - .word NULL - - .word gText_1PlayerNeeded - .word gText_2PlayerMode - .word gText_3PlayerMode - .word gText_4PlayerMode - .word gText_5PlayerMode - - .word gText_2PlayersNeeded - .word gText_1PlayerNeeded - .word gText_3PlayerMode - .word gText_4PlayerMode - .word gText_5PlayerMode - - @ Huh? No 4 ptrs here from pokeemerald? - - .align 2 -gUnknown_845747C:: @ 845747C - .string "{B_BUTTON}CANCEL$" - - .align 2 -unref_text_union_room_2:: - .string "ため\nさんかしゃ ぼしゅうちゅう です!$" - - .align 2 -gUnknown_84574A0:: @ 84574A0 - .string "{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?$" - - .align 2 -gUnknown_84574C4:: @ 84574C4 - .string "{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?$" - - .align 2 -gUnknown_84574EC:: @ 84574EC - .string "{STR_VAR_2} contacted you.\nAdd to the members?$" - - .align 2 -gUnknown_8457514:: @ 8457514 - .string "{STR_VAR_1}!\nAre these members OK?$" - - .align 2 -gUnknown_8457530:: @ 8457530 - .string "Cancel {STR_VAR_1} MODE\nwith these members?$" - - .align 2 -gUnknown_8457554:: @ 8457554 - .string "An “OK” was sent\nto {STR_VAR_1}.$" - - .align 2 -gUnknown_845756C:: @ 845756C - .string "The other TRAINER doesn't appear\nto be available now…\p$" - - .align 2 -gUnknown_84575A4:: @ 84575A4 - .string "You can't transmit with a TRAINER\nwho is too far away.\p$" - - .align 2 -gUnknown_84575DC:: @ 84575DC - .string "The other TRAINER(S) is/are not\nready yet.\p$" - - .align 2 -gUnknown_8457608:: @ 8457608 - .word gUnknown_84575A4 - .word gUnknown_84575DC - - .align 2 -gUnknown_8457610:: @ 8457610 - .string "The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 90}$" - - .align 2 -gUnknown_8457644:: @ 8457644 - .string "There is a member who can no\nlonger remain available.\p$" - - .align 2 -gUnknown_845767C:: @ 845767C - .word gUnknown_845756C - .word gUnknown_8457644 - - .align 2 -gUnknown_8457684:: @ 8457684 - .string "The other TRAINER appears\nunavailable…\p$" - - .align 2 -gUnknown_84576AC:: @ 84576AC - .string "{STR_VAR_1} sent back an “OK”!$" - - .align 2 -gUnknown_84576C4:: @ 84576C4 - .string "{STR_VAR_1} OK'd your registration as\na member.$" - - .align 2 -gUnknown_84576EC:: @ 84576EC - .string "{STR_VAR_1} replied, “No…”\p$" - - .align 2 -gUnknown_8457700:: @ 8457700 - .string "{STR_VAR_1}!\nAwaiting other members!$" - - .align 2 -gUnknown_845771C:: @ 845771C - .string "Quit being a member?$" - - .align 2 -gUnknown_8457734:: @ 8457734 - .string "You stopped being a member.\p$" - - .align 2 -gUnknown_8457754:: @ 8457754 - .word NULL - .word gUnknown_8457644 - .word gUnknown_8457684 - .word NULL - .word NULL - .word NULL - .word gUnknown_84576EC - .word NULL - .word NULL - .word gUnknown_8457734 - - .align 2 -gUnknown_845777C:: @ 845777C - .string "The WIRELESS COMMUNICATION\nSYSTEM link has been established.$" - - .align 2 -gUnknown_84577BC:: @ 84577BC - .string "The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…$" - - .align 2 -gUnknown_84577F8:: @ 84577F8 - .string "The link with your friend has been\ndropped…$" - - .align 2 -gUnknown_8457824:: @ 8457824 - .string "{STR_VAR_1} replied, “No…”$" - - .align 2 -gUnknown_8457838:: @ 8457838 - .word NULL - .word gUnknown_84577F8 - .word gUnknown_84577F8 - .word NULL - .word NULL - .word NULL - .word gUnknown_8457824 - .word NULL - .word NULL - .word NULL - - .align 2 -gUnknown_8457860:: @ 8457860 - .string "Do you want the {STR_VAR_2}\nMODE?$" - - .align 2 -gUnknown_845787C:: @ 845787C - .string "Do you want the {STR_VAR_2}\nMODE?$" - - .align 2 -gUnknown_8457898:: @ 8457898 - .word gUnknown_8457860 - .word gUnknown_845787C - - .align 2 -gUnknown_84578A0:: @ 84578A0 - .string "はなしかけています…\n" @ Communicating... please wait - .string "しょうしょう おまちください$" - - .align 2 -gUnknown_84578BC:: @ 84578BC - .string "Awaiting {STR_VAR_1}'s response about\nthe trade…$" - - .align 2 -gUnknown_84578E4:: @ 84578E4 - .string "Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$" - - .align 2 -gUnknown_8457950:: @ 8457950 - .string "Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$" - - .align 2 -gUnknown_84579BC:: @ 84579BC - .string "Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$" - - .align 2 -gUnknown_8457A34:: @ 8457A34 - .word gUnknown_84578E4 - .word gUnknown_8457950 - .word gUnknown_84579BC - - .align 2 -gUnknown_8457A40:: @ 8457A40 - .string "Hiya! Is there something that you\nwanted to do?$" - - .align 2 -gUnknown_8457A70:: @ 8457A70 - .string "Hello!\nWould you like to do something?$" - - .align 2 -gUnknown_8457A98:: @ 8457A98 - .string "{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?$" - - .align 2 -gUnknown_8457AD0:: @ 8457AD0 - .string "{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?$" - - .align 2 -gUnknown_8457B04:: @ 8457B04 - .word gUnknown_8457A40 - .word gUnknown_8457A70 - .word gUnknown_8457A98 - .word gUnknown_8457AD0 - - .align 2 -gUnknown_8457B14:: @ 8457B14 - .string "Want to do something?$" - - .align 2 -gUnknown_8457B2C:: @ 8457B2C - .string "Would you like to do something?$" - - .align 2 -gUnknown_8457B4C:: @ 8457B4C - .string "{STR_VAR_1}: What would you like to\ndo now?$" - - .align 2 -gUnknown_8457B70:: @ 8457B70 - .string "{STR_VAR_1}‘また なにかする?$" @ Want to do anything else? - - .align 2 -gUnknown_8457B80:: @ 8457B80 - .word gUnknown_8457B14 - .word gUnknown_8457B2C - .word gUnknown_8457B4C - .word gUnknown_8457B4C - - .align 2 -gUnknown_8457B90:: @ 8457B90 - .string "Somebody has contacted you.{PAUSE 60}$" - - .align 2 -gUnknown_8457BA0:: @ 8457BA0 - .string "{STR_VAR_1} has contacted you.{PAUSE 60}$" - - .align 2 -gUnknown_8457BCC:: @ 8457BCC - .word gUnknown_8457B90 - .word gUnknown_8457BA0 - - .align 2 -gUnknown_8457BD4:: @ 8457BD4 - .string "Awaiting a response from\nthe other TRAINER…$" - - .align 2 -gUnknown_8457C00:: @ 8457C00 - .string "Awaiting a response from\n{STR_VAR_1}…$" - - .align 2 -gUnknown_8457C20:: @ 8457C20 - .word gUnknown_8457BD4 - .word gUnknown_8457C00 - - .align 2 -gUnknown_8457C28:: @ 8457C28 - .string "あいての ていあんを まっています\n" - .string "ビーボタンで キャンセル$" - - .align 2 -gUnknown_8457C48:: @ 8457C48 - .string "The other TRAINER showed\n" - .string "you their TRAINER CARD.\p" - .string "Would you like to show your\n" - .string "TRAINER CARD?$" - - .align 2 -gUnknown_8457CA4:: @ 8457CA4 - .string "The other TRAINER challenges you\n" - .string "to battle.\p" - .string "Will you accept the battle\n" - .string "challenge?$" - - .align 2 -gUnknown_8457CF8:: @ 8457CF8 - .string "The other TRAINER invites you\n" - .string "to chat.\p" - .string "Will you accept the chat\n" - .string "invitation?$" - - .align 2 -gUnknown_8457D44:: @ 8457D44 - .string "There is an offer to trade your\n" - .string "registered Lv. {DYNAMIC 0} {DYNAMIC 1}\p" - .string "in exchange for a\n" - .string "Lv. {DYNAMIC 2} {DYNAMIC 3}.\p" - .string "Will you accept this trade\n" - .string "offer?$" - - .align 2 -gUnknown_8457DB8:: @ 8457DB8 - .string "There is an offer to trade your\n" - .string "registered EGG.\l" - .string "Will you accept this trade offer?$" - - .align 2 -gUnknown_8457E0C:: @ 8457E0C - .string "The chat has been dropped.\p$" - -gUnknown_8457E28:: @ 8457E28 - .string "You declined the offer.\p$" - - .align 2 -gUnknown_8457E44:: @ 8457E44 - .string "You declined the offer.\p$" - - .align 2 -gUnknown_8457E60:: @ 8457E60 - .string "The chat was ended.\p$" - .align 2 - -gUnknown_8457E78:: - .4byte gUnknown_8457C48 - .4byte gUnknown_8457CA4 - .4byte gUnknown_8457CF8 - .4byte gUnknown_8457D44 - - .align 2 -gUnknown_8457E88:: - .string "Oh, hey! We're in a chat right now.\n" - .string "Want to join us?$" - - .align 2 -gUnknown_8457EC0:: - .string "{STR_VAR_1}: Hey, {PLAYER}!\n" - .string "We're having a chat right now.\l" - .string "Want to join us?$" - - .align 2 -gUnknown_8457F00:: - .string "Oh, hi! We're having a chat now.\n" - .string "Would you like to join us?$" - - .align 2 -gUnknown_8457F3C:: - .string "{STR_VAR_1}: Oh, hi, {PLAYER}!\n" - .string "We're having a chat now.\l" - .string "Would you like to join us?$" - - .align 2 -gUnknown_8457F80:: @ 8457F80 - .4byte gUnknown_8457E88 - .4byte gUnknown_8457F00 - .4byte gUnknown_8457EC0 - .4byte gUnknown_8457F3C - -gUnknown_8457F90:: @ 8457F90 - .string "……\n" - .string "The TRAINER appears to be busy…\p$" - - .align 2 -gUnknown_8457FB4:: - .string "A battle, huh?\n" - .string "All right, just give me some time.$" - - .align 2 -gUnknown_8457FE8:: - .string "You want to chat, huh?\n" - .string "Sure, just wait a little.$" - - .align 2 -gUnknown_845801C:: - .string "Sure thing! As my “Greetings,”\n" - .string "here's my TRAINER CARD.$" - - .align 2 -gUnknown_8458054:: - .string "A battle? Of course, but I need\n" - .string "time to get ready.$" - - .align 2 -gUnknown_8458088:: - .string "Did you want to chat?\n" - .string "Okay, but please wait a moment.$" - - .align 2 -gUnknown_84580C0:: - .string "As my introduction, I'll show you\n" - .string "my TRAINER CARD.$" - - .align 2 -gUnknown_84580F4:: @ 84580F4 - .4byte gUnknown_8457FB4 - .4byte gUnknown_8457FE8 - .4byte 0 - .4byte gUnknown_845801C - .4byte gUnknown_8458054 - .4byte gUnknown_8458088 - .4byte 0 - .4byte gUnknown_84580C0 - - .align 2 - .string "チャットだね!\n" @ You want to chat, huh? Sure, just wait a little. - .string "わかった ちょっと まってて!$" - - .align 2 -gUnknown_845812C:: - .string "Thanks for waiting!\n" - .string "Let's get our battle started!{PAUSE 60}$" - - .align 2 -gUnknown_8458164:: - .string "All right!\n" - .string "Let's chat!{PAUSE 60}$" - - .align 2 -gUnknown_8458180:: - .string "Sorry I made you wait!\n" - .string "Let's get started!{PAUSE 60}$" - - .align 2 -gUnknown_84581B0:: - .string "Sorry I made you wait!\n" - .string "Let's chat.{PAUSE 60}$" - - .align 2 -gUnknown_84581D8:: - .string "The trade will be started.{PAUSE 60}$" - - .align 2 -gUnknown_84581F8:: - .string "The battle will be started.{PAUSE 60}$" - - .align 2 -gUnknown_8458218:: - .string "Entering the chat…{PAUSE 60}$" - - .align 2 -gUnknown_8458230:: @ 8458230 - .4byte gUnknown_84581F8 - .4byte gUnknown_8458218 - .4byte gUnknown_84581D8 - .4byte gUnknown_84581F8 - .4byte gUnknown_8458218 - .4byte gUnknown_84581D8 - .4byte gUnknown_845812C - .4byte gUnknown_8458164 - .4byte gUnknown_84581D8 - .4byte gUnknown_8458180 - .4byte gUnknown_84581B0 - .4byte gUnknown_84581D8 - -gUnknown_8458260:: - .string "Sorry! My POKéMON don't seem to\n" - .string "be feeling too well right now.\l" - .string "Let me battle you another time.\p$" - -gUnknown_84582C0:: - .string "I'm terribly sorry, but my POKéMON\n" - .string "aren't feeling well…\p" - .string "Let's battle another time.\p$" - -gUnknown_8458314:: @ 8458314 - .4byte gUnknown_8458260 - .4byte gUnknown_84582C0 - - .align 2 -gUnknown_845831C:: - .string "Huh? My TRAINER CARD…\n" - .string "Where'd it go now?\l" - .string "Sorry! I'll show you another time!\p$" - - .align 2 -gUnknown_845836C:: - .string "Oh? Now where did I put my\n" - .string "TRAINER CARD?…\l" - .string "Sorry! I'll show you later!\p$" - - .align 2 -gUnknown_84583B4:: @ 84583B4 - .4byte gUnknown_845831C - .4byte gUnknown_845836C - - .align 2 -gUnknown_84583BC:: - .string "If you want to do something with\n" - .string "me, just give me a shout!\p$" - .align 2 -gUnknown_84583F8:: - .string "If you want to do something with\n" - .string "me, don't be shy.\p$" - - .align 2 -gUnknown_845842C:: @ 845842C - .4byte gUnknown_84583BC - .4byte gUnknown_84583F8 - -gUnknown_8458434:: @ 8458434 - .string "Whoops! Sorry, but I have to do\n" - .string "something else.\l" - .string "Another time, okay?\p$" - - .align 2 -gUnknown_845847C:: @ 845847C - .string "If you want to battle, you need\n" - .string "two POKéMON that are below\l" - .string "Lv. 30.\p$" - -gUnknown_84584C0:: @ 84584C0 - .string "For a battle, you need two\n" - .string "POKéMON that are below Lv. 30.\p$" - - .align 2 -gUnknown_84584FC:: - .string "Oh, all right.\n" - .string "Come see me anytime, okay?\p$" - - .align 2 -gUnknown_8458528:: - .string "Oh…\n" - .string "Please come by anytime.\p$" - - .align 2 -gUnknown_8458548:: @ 8458548 - .4byte gUnknown_84584FC - .4byte gUnknown_8458528 - - .align 2 -gUnknown_8458550:: - .string "Oh, sorry!\n" - .string "I just can't right this instant.\l" - .string "Let's chat another time.\p$" - - .align 2 -gUnknown_8458598:: - .string "Oh, I'm sorry.\n" - .string "I have too much to do right now.\l" - .string "Let's chat some other time.\p$" - - .align 2 -gUnknown_84585E8:: @ 84585E8 - .4byte gUnknown_8458550 - .4byte gUnknown_8458598 - - .align 2 -gUnknown_84585F0:: - .string "Whoa!\n" - .string "I can tell you're pretty tough!\p$" - - .align 2 -gUnknown_8458618:: - .string "You used that move?\n" - .string "That's good strategy!\p$" - - .align 2 -gUnknown_8458644:: - .string "Way to go!\n" - .string "That was an eye-opener!\p$" - - .align 2 -gUnknown_8458668:: - .string "Oh! How could you use that\n" - .string "POKéMON in that situation?\p$" - - .align 2 -gUnknown_84586A0:: - .string "That POKéMON…\n" - .string "It's been raised really well!\p$" - - .align 2 -gUnknown_84586D0:: - .string "That's it!\n" - .string "This is the right move now!\p$" - - .align 2 -gUnknown_84586F8:: - .string "That's awesome!\n" - .string "You can battle that way?\p$" - - .align 2 -gUnknown_8458724:: - .string "You have exquisite timing for\n" - .string "switching POKéMON!\p$" - - .align 2 -gUnknown_8458758:: @ 8458758 - .4byte gUnknown_84585F0 - .4byte gUnknown_8458618 - .4byte gUnknown_8458644 - .4byte gUnknown_8458668 - .4byte gUnknown_84586A0 - .4byte gUnknown_84586D0 - .4byte gUnknown_84586F8 - .4byte gUnknown_8458724 - - .align 2 -gUnknown_8458778:: - .string "Oh, I see!\n" - .string "This is educational!\p$" - - .align 2 -gUnknown_845879C:: - .string "Don't say anything funny anymore!\n" - .string "I'm sore from laughing!\p$" - - .align 2 -gUnknown_84587D8:: - .string "Oh?\n" - .string "Something like that happened.\p$" - - .align 2 -gUnknown_84587FC:: - .string "Hmhm… What?\n" - .string "So is this what you're saying?\p$" - - .align 2 -gUnknown_8458828:: - .string "Is that right?\n" - .string "I didn't know that.\p$" - - .align 2 -gUnknown_845884C:: - .string "Ahaha!\n" - .string "What is that about?\p$" - - .align 2 -gUnknown_8458868:: - .string "Yes, that's exactly it!\n" - .string "That's what I meant.\p$" - - .align 2 -gUnknown_8458898:: - .string "In other words…\n" - .string "Yes! That's right!\p$" - - .align 2 -gUnknown_84588BC:: @ 84588BC - .4byte gUnknown_8458778 - .4byte gUnknown_845879C - .4byte gUnknown_84587D8 - .4byte gUnknown_84587FC - .4byte gUnknown_8458828 - .4byte gUnknown_845884C - .4byte gUnknown_8458868 - .4byte gUnknown_8458898 - - .align 2 -gUnknown_84588DC:: - .string "I'm just showing my TRAINER CARD\n" - .string "as my way of greeting.\p$" - - .align 2 -gUnknown_8458918:: - .string "I hope I get to know you better!\p$" - - .align 2 -gUnknown_845893C:: - .string "We're showing each other our\n" - .string "TRAINER CARDS to get acquainted.\p$" - - .align 2 -gUnknown_845897C:: - .string "Glad to meet you.\n" - .string "Please don't be a stranger!\p$" - - .align 2 -gUnknown_84589AC:: @ 84589AC - .4byte gUnknown_84588DC - .4byte gUnknown_8458918 - .4byte gUnknown_845893C - .4byte gUnknown_845897C - - .align 2 -gUnknown_84589BC:: - .string "Yeahah!\n" - .string "I really wanted this POKéMON!\p$" - - .align 2 -gUnknown_84589E4:: - .string "Finally, a trade got me that\n" - .string "POKéMON I'd wanted a long time.\p$" - - .align 2 -gUnknown_8458A24:: - .string "I'm trading POKéMON right now.\p$" - - .align 2 -gUnknown_8458A44:: - .string "I finally got that POKéMON I\n" - .string "wanted in a trade!\p$" - - .align 2 -gUnknown_8458A78:: @ 8458A78 - .4byte gUnknown_84589BC - .4byte gUnknown_84589E4 - .4byte NULL - .4byte NULL - .4byte gUnknown_8458A24 - .4byte gUnknown_8458A44 - .4byte NULL - .4byte NULL - -gUnknown_8458A98:: @ 8458A98 - .string "{STR_VAR_1} checked the\n" - .string "TRADING BOARD.\p$" - - .align 2 -gUnknown_8458AB8:: @ 8458AB8 - .string "Welcome to the TRADING BOARD.\p" - .string "You may register your POKéMON\n" - .string "and offer it up for a trade.\p" - .string "Would you like to register one of\n" - .string "your POKéMON?$" - - .align 2 -gUnknown_8458B44:: @ 8458B44 - .string "This TRADING BOARD is used for\n" - .string "offering a POKéMON for a trade.\p" - .string "All you need to do is register a\n" - .string "POKéMON for a trade.\p" - .string "Another TRAINER may offer a party\n" - .string "POKéMON in return for the trade.\p" - .string "We hope you will register POKéMON\n" - .string "and trade them with many, many\l" - .string "other TRAINERS.\p" - .string "Would you like to register one of\n" - .string "your POKéMON?$" - - .align 2 - .string "こうかんけいじばん の とうろくが\n" - .string "かんりょう しました\p" - .string "ごりよう ありがとう\n" - .string "ございました!\p$" - - .align 2 - .string "けいじばんに だれも ポケモンを\n" - .string "とうろく していません\p\n$" - - .align 2 -gUnknown_8458CD4:: @ 8458CD4 - .string "Please choose the type of POKéMON\n" - .string "that you would like in the trade.\n$" - - .align 2 -gUnknown_8458D1C:: @ 8458D1C - .string "Which of your party POKéMON will\n" - .string "you offer in trade?\p$" - - .align 2 -gUnknown_8458D54:: @ 8458D54 - .string "Registration has been canceled.\p$" - - .align 2 -gUnknown_8458D78:: @ 8458D78 - .string "Registration has been completed.\p$" - - .align 2 -gUnknown_8458D9C:: @ 8458D9C - .string "The trade has been canceled.\p$" - - .align 2 -gUnknown_8458DBC:: @ 8458DBC - .string "Cancel the registration of your\n" - .string "Lv. {STR_VAR_2} {STR_VAR_1}?$" - - .align 2 -gUnknown_8458DE8:: @ 8458DE8 - .string "Cancel the registration of your\n" - .string "EGG?$" - - .align 2 -gUnknown_8458E10:: @ 8458E10 - .string "The registration has been canceled.\p$" - - .align 2 - .string "こうかんを きぼうしているひとを\n" - .string "ひょうじします$" - - .align 2 - .string "こうかん したい トレーナーを\n" - .string "えらんで ください$" - - .align 2 -gUnknown_8458E70:: @ 8458E70 - .string "Would you like to ask {STR_VAR_1} to\n" - .string "make a trade?$" - - .align 2 - .string "……\n" - .string "あいての へんじを まっています$" - - .align 2 - .string "あなたが こうかんにだす\n" - .string "ポケモンが とうろくされていません\p$" - - .align 2 -gUnknown_8458ED0:: @ 8458ED0 - .string "You don't have a {STR_VAR_2}-type\n" - .string "POKéMON that {STR_VAR_1} wants.\p$" - - .align 2 -gUnknown_8458F04:: @ 8458F04 - .string "You don't have an EGG that\n" - .string "{STR_VAR_1} wants.\p$" - - .align 2 -gUnknown_8458F2C:: @ 8458F2C - .string "{STR_VAR_1} can't make a trade for\n" - .string "your POKéMON right now.\p$" - - .align 2 -gUnknown_8458F60:: @ 8458F60 - .string "You can't make a trade for\n" - .string "{STR_VAR_1}'s POKéMON right now.\p$" - - .align 2 -gUnknown_8458F94:: @ 8458F94 - .word gUnknown_8458F2C - .word gUnknown_8458F60 - -gUnknown_8458F9C:: @ 8458F9C - .string "Your trade offer was rejected.\p$" - -gUnknown_8458FBC:: @ 8458FBC - .string "EGG TRADE$" - - .align 2 -gUnknown_8458FC8:: @ 8458FC8 - .string "{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL$" - - .align 2 -gUnknown_8458FE4:: @ 8458FE4 - .string "Please choose a TRAINER.$" - - .align 2 -gUnknown_8459000:: - .string "Please choose a TRAINER for\n" - .string "a SINGLE BATTLE.$" - - .align 2 -gUnknown_8459030:: - .string "Please choose a TRAINER for\n" - .string "a DOUBLE BATTLE.$" - - .align 2 -gUnknown_8459060:: - .string "Please choose the LEADER\n" - .string "for a MULTI BATTLE.$" - - .align 2 -gUnknown_8459090:: - .string "Please choose the TRAINER to\n" - .string "trade with.$" - - .align 2 -gUnknown_84590BC:: - .string "Please choose the TRAINER who is\n" - .string "sharing WONDER CARDS.$" - - .align 2 -gUnknown_84590F4:: - .string "Please choose the TRAINER who is\n" - .string "sharing WONDER NEWS.$" - - .align 2 -gUnknown_845912C:: - .string "Jump with mini POKéMON!\n" - .string "Please choose the LEADER.$" - - .align 2 -gUnknown_8459160:: - .string "BERRY CRUSH!\n" - .string "Please choose the LEADER.$" - - .align 2 -gUnknown_8459188:: - .string "DODRIO BERRY-PICKING!\n" - .string "Please choose the LEADER.$" - - .align 2 -gUnknown_84591B8:: @ 84591B8 - .4byte gUnknown_8459000 - .4byte gUnknown_8459030 - .4byte gUnknown_8459060 - .4byte gUnknown_8459090 - .4byte gUnknown_845912C - .4byte gUnknown_8459160 - .4byte gUnknown_8459188 - .4byte gUnknown_84590BC - .4byte gUnknown_84590F4 - - .align 2 -gUnknown_84591DC:: @ 84591DC - .string "Searching for a WIRELESS\n" - .string "COMMUNICATION SYSTEM. Wait...$" - - .align 2 - .string "ダブルバトルでは 2ひき いじょうの\n" - .string "ポケモンが ひつようです\p$" - - .align 2 -gUnknown_8459238:: @ 8459238 - .string "Awaiting {STR_VAR_1}'s response…$" - - .align 2 -gUnknown_8459250:: @ 8459250 - .string "{STR_VAR_1} has been asked to register\n" - .string "you as a member. Please wait.$" - - .align 2 -gUnknown_845928C:: @ 845928C - .string "Awaiting a response from the\n" - .string "WIRELESS COMMUNICATION SYSTEM.$" - - .align 2 - .string "ほかの さんかしゃが そろうまで\n" - .string "しょうしょう おまちください$" - - .align 2 -gUnknown_84592E8:: @ 84592E8 - .string "No CARDS appear to be shared \n" - .string "right now.$" - - .align 2 -gUnknown_8459314:: @ 8459314 - .string "No NEWS appears to be shared\n" - .string "right now.$" - -gUnknown_845933C:: @ 845933C - .word gUnknown_84592E8 - .word gUnknown_8459314 - - .align 2 -gUnknown_8459344:: @ 8459344 - .string "BATTLE$" - - .align 2 -gUnknown_845934C:: @ 845934C - .string "CHAT$" - - .align 2 -gUnknown_8459354:: @ 8459354 - .string "GREETINGS$" - - .align 2 -gUnknown_8459360:: @ 8459360 - .string "EXIT$" - - .align 2 -gUnknown_8459368:: @ 8459368 - .string "EXIT$" - - .align 2 -gUnknown_8459370:: @ 8459370 - .string "INFO$" - - .align 2 -gUnknown_8459378:: @ 8459378 - .string "NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.$" - - .align 2 -gUnknown_8459394:: @ 8459394 - .string "SINGLE BATTLE$" - - .align 2 -gUnknown_84593A4:: @ 84593A4 - .string "DOUBLE BATTLE$" - - .align 2 -gUnknown_84593B4:: @ 84593B4 - .string "MULTI BATTLE$" - - .align 2 -gUnknown_84593C4:: @ 84593C4 - .string "POKéMON TRADES$" - - .align 2 -gUnknown_84593D4:: @ 84593D4 - .string "CHAT$" - - .align 2 -gUnknown_84593DC:: @ 84593DC - .string "CARDS$" - - .align 2 -gUnknown_84593E4:: @ 84593E4 - .string "WONDER CARDS$" - - .align 2 -gUnknown_84593F4:: @ 84593F4 - .string "WONDER NEWS$" - - .align 2 -gUnknown_8459400:: @ 8459400 - .string "POKéMON JUMP$" - - .align 2 -gUnknown_8459410:: @ 8459410 - .string "BERRY CRUSH$" - - .align 2 -gUnknown_845941C:: @ 845941C - .string "BERRY-PICKING$" - - .align 2 -gUnknown_845942C:: @ 845942C - .string "SEARCH$" - - .align 2 -gUnknown_8459434:: @ 8459434 - .string "ぐるぐるこうかん$" - - .align 2 -gUnknown_8459440:: @ 8459440 - .string "アイテムトレード$" - - .align 2 -gUnknown_845944C:: @ 845944C - .string "It's a NORMAL CARD.$" - - .align 2 -gUnknown_8459460:: @ 459460 - .string "It's a BRONZE CARD!$" - - .align 2 -gUnknown_8459474:: @ 8459474 - .string "It's a COPPER CARD!$" - - .align 2 -gUnknown_8459488:: @ 8459488 - .string "It's a SILVER CARD!$" - - .align 2 -gUnknown_845949C:: @ 845949C - .string "It's a GOLD CARD!$" - - .align 2 -gUnknown_84594B0:: @ 84594B0 - .word gUnknown_845944C - .word gUnknown_8459460 - .word gUnknown_8459474 - .word gUnknown_8459488 - .word gUnknown_845949C - - .align 2 -gUnknown_84594C4:: @ 84594C4 - .string "This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p$" - - .align 2 -gUnknown_8459504:: @ 8459504 - .string "BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p$" - - .align 2 -gUnknown_8459544:: @ 8459544 - .string "{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}$" - - .align 2 -gUnknown_8459564:: @ 8459564 - .string "{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}$" - - .align 2 -gUnknown_8459580:: @ 8459580 - .word gUnknown_8459544 - .word gUnknown_8459564 - - .align 2 -gUnknown_8459588:: @ 8459588 - .string "Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}$" - - .align 2 -gUnknown_84595B0:: - .string "Canceled reading the Card.$" - - .align 2 -gUnknown_84595CC:: - .4byte 0x02, 0x15 @ RECEIVE ID(0x15) - .4byte 0x0c, 0x00 @ READ PACKET AND COMPUTER SOMETHING - .4byte 0x14, 0x00 @ SEND ALL - .4byte 0x01, 0x0e @ RETURN 0x0e - -gMEventSrvScript_OtherTrainerCanceled:: @ 84595EC @ referenced in mevent/script_common.inc - .4byte 0x12, 0x20, gUnknown_84595CC @ SEND - .4byte 0x01, 0x00, NULL @ WAIT SEND - .4byte 0x14, 0x1b, gUnknown_84595B0 @ SEND_STR - .4byte 0x01, 0x00, NULL @ WAIT SEND - .4byte 0x02, 0x14, NULL @ RECV - .4byte 0x00, 0x09, NULL @ RETURN (other trainer canceled) diff --git a/data/union_room.s b/data/union_room.s new file mode 100644 index 000000000..6cd65b04d --- /dev/null +++ b/data/union_room.s @@ -0,0 +1,1569 @@ +#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_8456C74:: @ 8456C74 + .word gUnknown_84571AC + .word gUnknown_8459394 + .word gUnknown_84593A4 + .word gUnknown_84593B4 + .word gUnknown_84593C4 + .word gUnknown_84593D4 + .word gUnknown_84593E4 + .word gUnknown_84593F4 + .word gUnknown_84593DC + .word gUnknown_8459400 + .word gUnknown_8459410 + .word gUnknown_845941C + .word gUnknown_845942C + .word gUnknown_8459434 + .word gUnknown_8459440 + .word gUnknown_84571AC + .word gUnknown_84571AC + .word gUnknown_84571AC + .word gUnknown_84571AC + .word gUnknown_84571AC + .word gUnknown_84571AC + .word gUnknown_84593E4 + .word gUnknown_84593F4 + +gUnknown_8456CD0:: @ 8456CD0 + .byte 0x00, 0x00, 0x00, 0x1E, 0x02, 0x0F @ window template + .2byte 0x0008 + + @ pal table? +gUnknown_8456CD8:: @ 8456CD8 + .2byte 0x0201, 0x0000 + .2byte 0x0202, 0x0000 + .2byte 0x0403, 0x0000 + .2byte 0x0204, 0x0000 + .2byte 0x2509, 0x0000 + .2byte 0x250A, 0x0000 + .2byte 0x350B, 0x0000 + .2byte 0x350D, 0x0000 + .2byte 0x350E, 0x0000 + +gUnknown_8456CFC:: @ 8456CFC + .byte 0x00, 0x01, 0x03, 0x0D, 0x0A, 0x0F @ window template + .2byte 0x0044 + +gUnknown_8456D04:: @ 8456D04 + .byte 0x00, 0x10, 0x03, 0x07, 0x04, 0x0F @ window template + .2byte 0x00C6 + +gUnknown_8456D0C:: @ 8456D0C + .word gUnknown_84571AC, 0 + .word gUnknown_84571AC, 1 + .word gUnknown_84571AC, 2 + .word gUnknown_84571AC, 3 + .word gUnknown_84571AC, 4 + +gUnknown_8456D34:: @ 8456D34 + .word gUnknown_8456D0C + .word NULL + .word sub_81164C8 + .2byte 0x0005 + .2byte 0x0005 + .byte 0x00, 0x00, 0x01, 0x00, 0x20, 0x31, 0x10, 0x42 + +gUnknown_8456D4C:: @ 8456D4C + .byte 0x00, 0x01, 0x03, 0x11, 0x0A, 0x0F @ window template + .2byte 0x0044 + +gUnknown_8456D54:: @ 8456D54 + .byte 0x00, 0x14, 0x03, 0x07, 0x04, 0x0F @ window template + .2byte 0x00EE + +gUnknown_8456D5C:: @ 8456D5C + .word gUnknown_84571AC, 0 + .word gUnknown_84571AC, 1 + .word gUnknown_84571AC, 2 + .word gUnknown_84571AC, 3 + .word gUnknown_84571AC, 4 + .word gUnknown_84571AC, 5 + .word gUnknown_84571AC, 6 + .word gUnknown_84571AC, 7 + .word gUnknown_84571AC, 8 + .word gUnknown_84571AC, 9 + .word gUnknown_84571AC, 10 + .word gUnknown_84571AC, 11 + .word gUnknown_84571AC, 12 + .word gUnknown_84571AC, 13 + .word gUnknown_84571AC, 14 + .word gUnknown_84571AC, 15 + +gUnknown_8456DDC:: @ 8456DDC + .word gUnknown_8456D5C + .word ListMenuDefaultCursorMoveFunc + .word sub_8116F94 + .2byte 0x0010 + .2byte 0x0005 + .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x50, 0x02 + +gUnknown_8456DF4:: @ 8456DF4 + .byte 0x00, 0x14, 0x06, 0x08, 0x07, 0x0F @ window template? + .2byte 0x0001 + +gUnknown_8456DFC:: @ 8456DFC + .word gUnknown_8459354, 0x00000208 + .word gUnknown_8459344, 0x00000241 + .word gUnknown_845934C, 0x00000245 + .word gUnknown_8459360, 0x00000040 + +gUnknown_8456E1C:: @ 8456E1C + .word gUnknown_8456DFC + .word ListMenuDefaultCursorMoveFunc + .word NULL + .2byte 0x0004 + .2byte 0x0004 + .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02 + +gUnknown_8456E34:: @ 8456E34 + .byte 0x00, 0x12, 0x08, 0x0B, 0x05, 0x0F @ window template + .2byte 0x0001 + +gUnknown_8456E3C:: @ 8456E3C + .word gText_Register, 1 + .word gUnknown_8459370, 2 + .word gUnknown_8459360, 3 + +gUnknown_8456E54:: @ 8456E54 + .word gUnknown_8456E3C + .word ListMenuDefaultCursorMoveFunc + .word NULL + .2byte 0x0003 + .2byte 0x0003 + .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02 + +gUnknown_8456E6C:: @ 8456E6C + .byte 0x00, 0x14, 0x02, 0x09, 0x0B, 0x0F @ window template + .2byte 0x0001 + +gUnknown_8456E74:: @ 8456E74 + .word gTypeNames + 0x00, 0 + .word gTypeNames + 0x46, 10 + .word gTypeNames + 0x4D, 11 + .word gTypeNames + 0x5B, 13 + .word gTypeNames + 0x54, 12 + .word gTypeNames + 0x69, 15 + .word gTypeNames + 0x1C, 4 + .word gTypeNames + 0x23, 5 + .word gTypeNames + 0x0E, 2 + .word gTypeNames + 0x62, 14 + .word gTypeNames + 0x07, 1 + .word gTypeNames + 0x15, 3 + .word gTypeNames + 0x2A, 6 + .word gTypeNames + 0x31, 7 + .word gTypeNames + 0x70, 16 + .word gTypeNames + 0x38, 8 + .word gTypeNames + 0x77, 17 + .word gUnknown_8459360, 18 + +gUnknown_8456F04:: @ 8456F04 + .word gUnknown_8456E74 + .word ListMenuDefaultCursorMoveFunc + .word NULL + .2byte 0x0012 + .2byte 0x0006 + .byte 0x00, 0x00, 0x08, 0x00, 0x22, 0x31, 0x01, 0x02 + +gUnknown_8456F1C:: @ 8456F1C + .byte 0x00, 0x01, 0x01, 0x1C, 0x02, 0x0D @ window template + .2byte 0x0001 + +gUnknown_8456F24:: @ 8456F24 + .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D @ window template + .2byte 0x0039 + +gUnknown_8456F2C:: @ 8456F2C + .word gUnknown_84571AC, -3 + .word gUnknown_84571AC, 0 + .word gUnknown_84571AC, 1 + .word gUnknown_84571AC, 2 + .word gUnknown_84571AC, 3 + .word gUnknown_84571AC, 4 + .word gUnknown_84571AC, 5 + .word gUnknown_84571AC, 6 + .word gUnknown_84571AC, 7 + .word gUnknown_8459368, 8 + +gUnknown_8456F7C:: @ 8456F7C + .word gUnknown_8456F2C + .word ListMenuDefaultCursorMoveFunc + .word sub_811ACA4 + .2byte 0x000A + .2byte 0x0005 + .byte 0x00, 0x00, 0x0C, 0x00, 0xE2, 0xDF, 0x09, 0x02 + + @ unused window template? + .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D + .2byte 0x0039 + +gUnknown_8456F9C:: @ 8456F9C + .word gUnknown_84571AC, 0 + .word gUnknown_84571AC, 1 + .word gUnknown_84571AC, 2 + .word gUnknown_84571AC, 3 + .word gUnknown_84571AC, 4 + .word gUnknown_84571AC, 5 + .word gUnknown_84571AC, 6 + .word gUnknown_84571AC, 7 + .word gUnknown_84571AC, 8 + .word gUnknown_84571AC, 9 + .word gUnknown_84571AC, 10 + .word gUnknown_84571AC, 11 + .word gUnknown_84571AC, 12 + .word gUnknown_84571AC, 13 + .word gUnknown_84571AC, 14 + .word gUnknown_84571AC, 15 + +gUnknown_845701C:: @ 845701C + .word gUnknown_8456F9C + .word ListMenuDefaultCursorMoveFunc + .word nullsub_92 + .2byte 0x0010 + .2byte 0x0004 + .byte 0x00, 0x00, 0x08, 0x01, 0x20, 0x31, 0x41, 0x02 + +gUnknown_8457034:: @ 8457034 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + @ starts at gUnknown_082F0474 in pokeemerald, union link groups +gUnknown_845704C:: @ 845704C + .byte 0x01, 0xFF, 0x00, 0x00 +gUnknown_8457050:: @ 8457050 + .byte 0x02, 0xFF, 0x00, 0x00 +gUnknown_8457054:: @ 8457054 + .byte 0x03, 0xFF, 0x00, 0x00 +gUnknown_8457058:: @ 8457058 + .byte 0x04, 0xFF, 0x00, 0x00 +gUnknown_845705C:: @ 845705C + .byte 0x09, 0xFF, 0x00, 0x00 +gUnknown_8457060:: @ 8457060 + .byte 0x0A, 0xFF, 0x00, 0x00 +gUnknown_8457064:: @ 8457064 + .byte 0x0B, 0xFF, 0x00, 0x00 +gUnknown_8457068:: @ 8457068 + .byte 0x15, 0xFF, 0x00, 0x00 +gUnknown_845706C:: @ 845706C + .byte 0x16, 0xFF, 0x00, 0x00 +gUnknown_8457070:: @ 8457070 + .byte 0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xFF, 0x00, 0x00 +gUnknown_845707C:: @ 845707C + .byte 0x0C, 0xFF, 0x00, 0x00 +gUnknown_8457080:: @ 8457080 + .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0x0D, 0xFF, 0x00 +gUnknown_845708C:: @ 845708C + .byte 0x01, 0x02, 0x03, 0x04, 0x0A, 0xFF, 0x00, 0x00 + +gUnknown_8457094:: @ 8457094 + .word gUnknown_845704C + .word gUnknown_8457050 + .word gUnknown_8457054 + .word gUnknown_8457058 + .word gUnknown_845705C + .word gUnknown_8457060 + .word gUnknown_8457064 + .word gUnknown_8457068 + .word gUnknown_845706C + .word gUnknown_8457070 + .word gUnknown_845707C + .word gUnknown_8457080 + .word gUnknown_845708C + +gUnknown_84570C8:: @ 84570C8 + .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0xF7, 0x00, 0xAF, 0xF7, 0x01, 0xFF, 0x00 + +gUnknown_84570D8:: @ 84570D8 + .byte 0x29, 0x36, 0x27, 0x12, 0x13, 0x14, 0x19, 0x1A, 0x00, 0x00, 0x2A, 0x3A, 0x28, 0x16, 0x17, 0x18, 0x1C, 0x1D, 0x00, 0x00 + +gUnknown_84570EC:: @ 84570EC + .2byte 0x0004 + .2byte 0x0006 + .2byte 0x000D + .2byte 0x0008 + .2byte 0x000A + .2byte 0x0006 + .2byte 0x0001 + .2byte 0x0008 + .2byte 0x000D + .2byte 0x0004 + .2byte 0x0007 + .2byte 0x0004 + .2byte 0x0001 + .2byte 0x0004 + .2byte 0x0007 + .2byte 0x0008 + +gUnknown_845710C:: @ 845710C + .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01 + +gUnknown_8457116:: @ 8457116 + .byte 0x00, 0x02, 0x01, 0x04, 0x03 + +gUnknown_845711B:: @ 845711B + .byte 0x01, 0x03, 0x01, 0x04, 0x02 + +gUnknown_8457120:: @ 8457120 + .byte 0x09, 0x08, 0x07, 0x02, 0x06, 0x05, 0x04, 0x03, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00 + + .align 2 +gUnknown_8457138:: @ 8457138 + abspath "rfu_union_tool.c" + + .align 2 +gUnknown_8457174:: @ 8457174 + .asciz "0" + + .align 2 +gUnknown_8457178:: @ 8457178 + .asciz "UnionObjWork != NULL" + +gUnknown_845718D:: @ 845718D + .byte 0xA4, 0xFE + +gUnknown_845718F:: @ 845718F + .byte 0xA5, 0xFE, 0x00, 0x00, 0x00 + +gUnknown_8457194:: @ 8457194 + .2byte 0x01FC, 0x0000 @ BgTemplate + +gUnknown_8457198:: @ 8457198 + .byte 0x00, 0x02, 0x0F, 0x1A, 0x04, 0x0E @ window template + .2byte 0x0014 + + @ ??? + .byte -1, 0, 0, 0 + .byte 0, 0, 0, 0 + +gUnknown_84571A8:: @ 84571A8 + .byte 0x01, 0x02, 0x03, 0x00 + +gUnknown_84571AC:: @ 84571AC + .string "$" + + .align 2 +gUnknown_84571B0:: @ 84571B0 + .string ":$" + + .align 2 +gUnknown_84571B4:: @ 84571B4 + .string "{EXTRA 7}$" + + .align 2 +gUnknown_84571B8:: @ 84571B8 + .string "Please start over from the beginning.$" + + .align 2 +gUnknown_84571E0:: @ 84571E0 + .string "The WIRELESS COMMUNICATION\n" + .string "SYSTEM search has been canceled.$" + + .align 2 + .string "ともだちからの れんらくを\n" @ something about waiting for a friend to connect? + .string "まっています$" + + .align 2 +gUnknown_8457234:: @ 8457234 + .string "{STR_VAR_1}! Awaiting\n" + .string "communication from another player.$" + + .align 2 +gUnknown_8457264:: @ 8457264 + .string "{STR_VAR_1}! Awaiting link!\n" + .string "Press START when everyone's ready.$" + + .align 2 +gJPText_SingleBattle:: + .string "シングルバトルを かいさいする$" + + .align 2 +gJPText_DoubleBattle:: + .string "ダブルバトルを かいさいする$" + + .align 2 +gJPText_MultiBattle:: + .string "マルチバトルを かいさいする$" + + .align 2 +gJPText_TradePokemon:: + .string "ポケモンこうかんを かいさいする$" + + .align 2 +gJPText_Chat:: + .string "チャットを かいさいする$" + + .align 2 +gJPText_DistWonderCard:: + .string "ふしぎなカードをくばる$" + + .align 2 +gJPText_DistWonderNews:: + .string "ふしぎなニュースをくばる$" + + .align 2 +unref_text_union_room_1:: + .string "ふしぎなできごとを かいさいする$" + + .align 2 +gJPText_HoldPokemonJump:: + .string "なわとびを かいさいする$" + + .align 2 +gJPText_HoldBerryCrush:: + .string "きのみマッシャーを かいさいする$" + + .align 2 +gJPText_HoldBerryPicking:: + .string "きのみどりを かいさいする$" + + .align 2 +gJPText_HoldSpinTrade:: + .string "ぐるぐるこうかんを かいさいする$" + + .align 2 +gJPText_HoldSpinShop:: + .string "ぐるぐるショップを かいさいする$" + + .align 2 +unref_text_ptrs_union_room_0:: + .word gJPText_SingleBattle + .word gJPText_DoubleBattle + .word gJPText_MultiBattle + .word gJPText_TradePokemon + .word gJPText_Chat + .word gJPText_DistWonderCard + .word gJPText_DistWonderNews + .word gJPText_DistWonderCard + .word gJPText_HoldPokemonJump + .word gJPText_HoldBerryCrush + .word gJPText_HoldBerryPicking + .word gJPText_HoldBerryPicking + .word gJPText_HoldSpinTrade + .word gJPText_HoldSpinShop + +gText_1PlayerNeeded:: + .string "1 player\n" + .string "needed.$" +gText_2PlayersNeeded:: + .string "2 players\n" + .string "needed.$" +gText_3PlayersNeeded:: + .string "3 players\n" + .string "needed.$" +gText_4PlayersNeeded:: @ uhhhh this one is JP but not the others??? but its english in emerald??? + .string "あと4にん\n" + .string "ひつよう$" +gText_2PlayerMode:: + .string "2-PLAYER\n" + .string "MODE$" +gText_3PlayerMode:: + .string "3-PLAYER\n" + .string "MODE$" +gText_4PlayerMode:: + .string "4-PLAYER\n" + .string "MODE$" +gText_5PlayerMode:: + .string "5-PLAYER\n" + .string "MODE$" + +gUnknown_845742C:: @ 845742C + .word gText_1PlayerNeeded + .word gText_2PlayerMode + .word NULL + .word NULL + .word NULL + + .word gText_3PlayersNeeded + .word gText_2PlayersNeeded + .word gText_1PlayerNeeded + .word gText_4PlayerMode + .word NULL + + .word gText_1PlayerNeeded + .word gText_2PlayerMode + .word gText_3PlayerMode + .word gText_4PlayerMode + .word gText_5PlayerMode + + .word gText_2PlayersNeeded + .word gText_1PlayerNeeded + .word gText_3PlayerMode + .word gText_4PlayerMode + .word gText_5PlayerMode + + @ Huh? No 4 ptrs here from pokeemerald? + + .align 2 +gUnknown_845747C:: @ 845747C + .string "{B_BUTTON}CANCEL$" + + .align 2 +unref_text_union_room_2:: + .string "ため\nさんかしゃ ぼしゅうちゅう です!$" + + .align 2 +gUnknown_84574A0:: @ 84574A0 + .string "{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?$" + + .align 2 +gUnknown_84574C4:: @ 84574C4 + .string "{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?$" + + .align 2 +gUnknown_84574EC:: @ 84574EC + .string "{STR_VAR_2} contacted you.\nAdd to the members?$" + + .align 2 +gUnknown_8457514:: @ 8457514 + .string "{STR_VAR_1}!\nAre these members OK?$" + + .align 2 +gUnknown_8457530:: @ 8457530 + .string "Cancel {STR_VAR_1} MODE\nwith these members?$" + + .align 2 +gUnknown_8457554:: @ 8457554 + .string "An “OK” was sent\nto {STR_VAR_1}.$" + + .align 2 +gUnknown_845756C:: @ 845756C + .string "The other TRAINER doesn't appear\nto be available now…\p$" + + .align 2 +gUnknown_84575A4:: @ 84575A4 + .string "You can't transmit with a TRAINER\nwho is too far away.\p$" + + .align 2 +gUnknown_84575DC:: @ 84575DC + .string "The other TRAINER(S) is/are not\nready yet.\p$" + + .align 2 +gUnknown_8457608:: @ 8457608 + .word gUnknown_84575A4 + .word gUnknown_84575DC + + .align 2 +gUnknown_8457610:: @ 8457610 + .string "The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 90}$" + + .align 2 +gUnknown_8457644:: @ 8457644 + .string "There is a member who can no\nlonger remain available.\p$" + + .align 2 +gUnknown_845767C:: @ 845767C + .word gUnknown_845756C + .word gUnknown_8457644 + + .align 2 +gUnknown_8457684:: @ 8457684 + .string "The other TRAINER appears\nunavailable…\p$" + + .align 2 +gUnknown_84576AC:: @ 84576AC + .string "{STR_VAR_1} sent back an “OK”!$" + + .align 2 +gUnknown_84576C4:: @ 84576C4 + .string "{STR_VAR_1} OK'd your registration as\na member.$" + + .align 2 +gUnknown_84576EC:: @ 84576EC + .string "{STR_VAR_1} replied, “No…”\p$" + + .align 2 +gUnknown_8457700:: @ 8457700 + .string "{STR_VAR_1}!\nAwaiting other members!$" + + .align 2 +gUnknown_845771C:: @ 845771C + .string "Quit being a member?$" + + .align 2 +gUnknown_8457734:: @ 8457734 + .string "You stopped being a member.\p$" + + .align 2 +gUnknown_8457754:: @ 8457754 + .word NULL + .word gUnknown_8457644 + .word gUnknown_8457684 + .word NULL + .word NULL + .word NULL + .word gUnknown_84576EC + .word NULL + .word NULL + .word gUnknown_8457734 + + .align 2 +gUnknown_845777C:: @ 845777C + .string "The WIRELESS COMMUNICATION\nSYSTEM link has been established.$" + + .align 2 +gUnknown_84577BC:: @ 84577BC + .string "The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…$" + + .align 2 +gUnknown_84577F8:: @ 84577F8 + .string "The link with your friend has been\ndropped…$" + + .align 2 +gUnknown_8457824:: @ 8457824 + .string "{STR_VAR_1} replied, “No…”$" + + .align 2 +gUnknown_8457838:: @ 8457838 + .word NULL + .word gUnknown_84577F8 + .word gUnknown_84577F8 + .word NULL + .word NULL + .word NULL + .word gUnknown_8457824 + .word NULL + .word NULL + .word NULL + + .align 2 +gUnknown_8457860:: @ 8457860 + .string "Do you want the {STR_VAR_2}\nMODE?$" + + .align 2 +gUnknown_845787C:: @ 845787C + .string "Do you want the {STR_VAR_2}\nMODE?$" + + .align 2 +gUnknown_8457898:: @ 8457898 + .word gUnknown_8457860 + .word gUnknown_845787C + + .align 2 +gUnknown_84578A0:: @ 84578A0 + .string "はなしかけています…\n" @ Communicating... please wait + .string "しょうしょう おまちください$" + + .align 2 +gUnknown_84578BC:: @ 84578BC + .string "Awaiting {STR_VAR_1}'s response about\nthe trade…$" + + .align 2 +gUnknown_84578E4:: @ 84578E4 + .string "Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$" + + .align 2 +gUnknown_8457950:: @ 8457950 + .string "Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$" + + .align 2 +gUnknown_84579BC:: @ 84579BC + .string "Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$" + + .align 2 +gUnknown_8457A34:: @ 8457A34 + .word gUnknown_84578E4 + .word gUnknown_8457950 + .word gUnknown_84579BC + + .align 2 +gUnknown_8457A40:: @ 8457A40 + .string "Hiya! Is there something that you\nwanted to do?$" + + .align 2 +gUnknown_8457A70:: @ 8457A70 + .string "Hello!\nWould you like to do something?$" + + .align 2 +gUnknown_8457A98:: @ 8457A98 + .string "{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?$" + + .align 2 +gUnknown_8457AD0:: @ 8457AD0 + .string "{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?$" + + .align 2 +gUnknown_8457B04:: @ 8457B04 + .word gUnknown_8457A40 + .word gUnknown_8457A70 + .word gUnknown_8457A98 + .word gUnknown_8457AD0 + + .align 2 +gUnknown_8457B14:: @ 8457B14 + .string "Want to do something?$" + + .align 2 +gUnknown_8457B2C:: @ 8457B2C + .string "Would you like to do something?$" + + .align 2 +gUnknown_8457B4C:: @ 8457B4C + .string "{STR_VAR_1}: What would you like to\ndo now?$" + + .align 2 +gUnknown_8457B70:: @ 8457B70 + .string "{STR_VAR_1}‘また なにかする?$" @ Want to do anything else? + + .align 2 +gUnknown_8457B80:: @ 8457B80 + .word gUnknown_8457B14 + .word gUnknown_8457B2C + .word gUnknown_8457B4C + .word gUnknown_8457B4C + + .align 2 +gUnknown_8457B90:: @ 8457B90 + .string "Somebody has contacted you.{PAUSE 60}$" + + .align 2 +gUnknown_8457BA0:: @ 8457BA0 + .string "{STR_VAR_1} has contacted you.{PAUSE 60}$" + + .align 2 +gUnknown_8457BCC:: @ 8457BCC + .word gUnknown_8457B90 + .word gUnknown_8457BA0 + + .align 2 +gUnknown_8457BD4:: @ 8457BD4 + .string "Awaiting a response from\nthe other TRAINER…$" + + .align 2 +gUnknown_8457C00:: @ 8457C00 + .string "Awaiting a response from\n{STR_VAR_1}…$" + + .align 2 +gUnknown_8457C20:: @ 8457C20 + .word gUnknown_8457BD4 + .word gUnknown_8457C00 + + .align 2 +gUnknown_8457C28:: @ 8457C28 + .string "あいての ていあんを まっています\n" + .string "ビーボタンで キャンセル$" + + .align 2 +gUnknown_8457C48:: @ 8457C48 + .string "The other TRAINER showed\n" + .string "you their TRAINER CARD.\p" + .string "Would you like to show your\n" + .string "TRAINER CARD?$" + + .align 2 +gUnknown_8457CA4:: @ 8457CA4 + .string "The other TRAINER challenges you\n" + .string "to battle.\p" + .string "Will you accept the battle\n" + .string "challenge?$" + + .align 2 +gUnknown_8457CF8:: @ 8457CF8 + .string "The other TRAINER invites you\n" + .string "to chat.\p" + .string "Will you accept the chat\n" + .string "invitation?$" + + .align 2 +gUnknown_8457D44:: @ 8457D44 + .string "There is an offer to trade your\n" + .string "registered Lv. {DYNAMIC 0} {DYNAMIC 1}\p" + .string "in exchange for a\n" + .string "Lv. {DYNAMIC 2} {DYNAMIC 3}.\p" + .string "Will you accept this trade\n" + .string "offer?$" + + .align 2 +gUnknown_8457DB8:: @ 8457DB8 + .string "There is an offer to trade your\n" + .string "registered EGG.\l" + .string "Will you accept this trade offer?$" + + .align 2 +gUnknown_8457E0C:: @ 8457E0C + .string "The chat has been dropped.\p$" + +gUnknown_8457E28:: @ 8457E28 + .string "You declined the offer.\p$" + + .align 2 +gUnknown_8457E44:: @ 8457E44 + .string "You declined the offer.\p$" + + .align 2 +gUnknown_8457E60:: @ 8457E60 + .string "The chat was ended.\p$" + .align 2 + +gUnknown_8457E78:: + .4byte gUnknown_8457C48 + .4byte gUnknown_8457CA4 + .4byte gUnknown_8457CF8 + .4byte gUnknown_8457D44 + + .align 2 +gUnknown_8457E88:: + .string "Oh, hey! We're in a chat right now.\n" + .string "Want to join us?$" + + .align 2 +gUnknown_8457EC0:: + .string "{STR_VAR_1}: Hey, {PLAYER}!\n" + .string "We're having a chat right now.\l" + .string "Want to join us?$" + + .align 2 +gUnknown_8457F00:: + .string "Oh, hi! We're having a chat now.\n" + .string "Would you like to join us?$" + + .align 2 +gUnknown_8457F3C:: + .string "{STR_VAR_1}: Oh, hi, {PLAYER}!\n" + .string "We're having a chat now.\l" + .string "Would you like to join us?$" + + .align 2 +gUnknown_8457F80:: @ 8457F80 + .4byte gUnknown_8457E88 + .4byte gUnknown_8457F00 + .4byte gUnknown_8457EC0 + .4byte gUnknown_8457F3C + +gUnknown_8457F90:: @ 8457F90 + .string "……\n" + .string "The TRAINER appears to be busy…\p$" + + .align 2 +gUnknown_8457FB4:: + .string "A battle, huh?\n" + .string "All right, just give me some time.$" + + .align 2 +gUnknown_8457FE8:: + .string "You want to chat, huh?\n" + .string "Sure, just wait a little.$" + + .align 2 +gUnknown_845801C:: + .string "Sure thing! As my “Greetings,”\n" + .string "here's my TRAINER CARD.$" + + .align 2 +gUnknown_8458054:: + .string "A battle? Of course, but I need\n" + .string "time to get ready.$" + + .align 2 +gUnknown_8458088:: + .string "Did you want to chat?\n" + .string "Okay, but please wait a moment.$" + + .align 2 +gUnknown_84580C0:: + .string "As my introduction, I'll show you\n" + .string "my TRAINER CARD.$" + + .align 2 +gUnknown_84580F4:: @ 84580F4 + .4byte gUnknown_8457FB4 + .4byte gUnknown_8457FE8 + .4byte 0 + .4byte gUnknown_845801C + .4byte gUnknown_8458054 + .4byte gUnknown_8458088 + .4byte 0 + .4byte gUnknown_84580C0 + + .align 2 + .string "チャットだね!\n" @ You want to chat, huh? Sure, just wait a little. + .string "わかった ちょっと まってて!$" + + .align 2 +gUnknown_845812C:: + .string "Thanks for waiting!\n" + .string "Let's get our battle started!{PAUSE 60}$" + + .align 2 +gUnknown_8458164:: + .string "All right!\n" + .string "Let's chat!{PAUSE 60}$" + + .align 2 +gUnknown_8458180:: + .string "Sorry I made you wait!\n" + .string "Let's get started!{PAUSE 60}$" + + .align 2 +gUnknown_84581B0:: + .string "Sorry I made you wait!\n" + .string "Let's chat.{PAUSE 60}$" + + .align 2 +gUnknown_84581D8:: + .string "The trade will be started.{PAUSE 60}$" + + .align 2 +gUnknown_84581F8:: + .string "The battle will be started.{PAUSE 60}$" + + .align 2 +gUnknown_8458218:: + .string "Entering the chat…{PAUSE 60}$" + + .align 2 +gUnknown_8458230:: @ 8458230 + .4byte gUnknown_84581F8 + .4byte gUnknown_8458218 + .4byte gUnknown_84581D8 + .4byte gUnknown_84581F8 + .4byte gUnknown_8458218 + .4byte gUnknown_84581D8 + .4byte gUnknown_845812C + .4byte gUnknown_8458164 + .4byte gUnknown_84581D8 + .4byte gUnknown_8458180 + .4byte gUnknown_84581B0 + .4byte gUnknown_84581D8 + +gUnknown_8458260:: + .string "Sorry! My POKéMON don't seem to\n" + .string "be feeling too well right now.\l" + .string "Let me battle you another time.\p$" + +gUnknown_84582C0:: + .string "I'm terribly sorry, but my POKéMON\n" + .string "aren't feeling well…\p" + .string "Let's battle another time.\p$" + +gUnknown_8458314:: @ 8458314 + .4byte gUnknown_8458260 + .4byte gUnknown_84582C0 + + .align 2 +gUnknown_845831C:: + .string "Huh? My TRAINER CARD…\n" + .string "Where'd it go now?\l" + .string "Sorry! I'll show you another time!\p$" + + .align 2 +gUnknown_845836C:: + .string "Oh? Now where did I put my\n" + .string "TRAINER CARD?…\l" + .string "Sorry! I'll show you later!\p$" + + .align 2 +gUnknown_84583B4:: @ 84583B4 + .4byte gUnknown_845831C + .4byte gUnknown_845836C + + .align 2 +gUnknown_84583BC:: + .string "If you want to do something with\n" + .string "me, just give me a shout!\p$" + .align 2 +gUnknown_84583F8:: + .string "If you want to do something with\n" + .string "me, don't be shy.\p$" + + .align 2 +gUnknown_845842C:: @ 845842C + .4byte gUnknown_84583BC + .4byte gUnknown_84583F8 + +gUnknown_8458434:: @ 8458434 + .string "Whoops! Sorry, but I have to do\n" + .string "something else.\l" + .string "Another time, okay?\p$" + + .align 2 +gUnknown_845847C:: @ 845847C + .string "If you want to battle, you need\n" + .string "two POKéMON that are below\l" + .string "Lv. 30.\p$" + +gUnknown_84584C0:: @ 84584C0 + .string "For a battle, you need two\n" + .string "POKéMON that are below Lv. 30.\p$" + + .align 2 +gUnknown_84584FC:: + .string "Oh, all right.\n" + .string "Come see me anytime, okay?\p$" + + .align 2 +gUnknown_8458528:: + .string "Oh…\n" + .string "Please come by anytime.\p$" + + .align 2 +gUnknown_8458548:: @ 8458548 + .4byte gUnknown_84584FC + .4byte gUnknown_8458528 + + .align 2 +gUnknown_8458550:: + .string "Oh, sorry!\n" + .string "I just can't right this instant.\l" + .string "Let's chat another time.\p$" + + .align 2 +gUnknown_8458598:: + .string "Oh, I'm sorry.\n" + .string "I have too much to do right now.\l" + .string "Let's chat some other time.\p$" + + .align 2 +gUnknown_84585E8:: @ 84585E8 + .4byte gUnknown_8458550 + .4byte gUnknown_8458598 + + .align 2 +gUnknown_84585F0:: + .string "Whoa!\n" + .string "I can tell you're pretty tough!\p$" + + .align 2 +gUnknown_8458618:: + .string "You used that move?\n" + .string "That's good strategy!\p$" + + .align 2 +gUnknown_8458644:: + .string "Way to go!\n" + .string "That was an eye-opener!\p$" + + .align 2 +gUnknown_8458668:: + .string "Oh! How could you use that\n" + .string "POKéMON in that situation?\p$" + + .align 2 +gUnknown_84586A0:: + .string "That POKéMON…\n" + .string "It's been raised really well!\p$" + + .align 2 +gUnknown_84586D0:: + .string "That's it!\n" + .string "This is the right move now!\p$" + + .align 2 +gUnknown_84586F8:: + .string "That's awesome!\n" + .string "You can battle that way?\p$" + + .align 2 +gUnknown_8458724:: + .string "You have exquisite timing for\n" + .string "switching POKéMON!\p$" + + .align 2 +gUnknown_8458758:: @ 8458758 + .4byte gUnknown_84585F0 + .4byte gUnknown_8458618 + .4byte gUnknown_8458644 + .4byte gUnknown_8458668 + .4byte gUnknown_84586A0 + .4byte gUnknown_84586D0 + .4byte gUnknown_84586F8 + .4byte gUnknown_8458724 + + .align 2 +gUnknown_8458778:: + .string "Oh, I see!\n" + .string "This is educational!\p$" + + .align 2 +gUnknown_845879C:: + .string "Don't say anything funny anymore!\n" + .string "I'm sore from laughing!\p$" + + .align 2 +gUnknown_84587D8:: + .string "Oh?\n" + .string "Something like that happened.\p$" + + .align 2 +gUnknown_84587FC:: + .string "Hmhm… What?\n" + .string "So is this what you're saying?\p$" + + .align 2 +gUnknown_8458828:: + .string "Is that right?\n" + .string "I didn't know that.\p$" + + .align 2 +gUnknown_845884C:: + .string "Ahaha!\n" + .string "What is that about?\p$" + + .align 2 +gUnknown_8458868:: + .string "Yes, that's exactly it!\n" + .string "That's what I meant.\p$" + + .align 2 +gUnknown_8458898:: + .string "In other words…\n" + .string "Yes! That's right!\p$" + + .align 2 +gUnknown_84588BC:: @ 84588BC + .4byte gUnknown_8458778 + .4byte gUnknown_845879C + .4byte gUnknown_84587D8 + .4byte gUnknown_84587FC + .4byte gUnknown_8458828 + .4byte gUnknown_845884C + .4byte gUnknown_8458868 + .4byte gUnknown_8458898 + + .align 2 +gUnknown_84588DC:: + .string "I'm just showing my TRAINER CARD\n" + .string "as my way of greeting.\p$" + + .align 2 +gUnknown_8458918:: + .string "I hope I get to know you better!\p$" + + .align 2 +gUnknown_845893C:: + .string "We're showing each other our\n" + .string "TRAINER CARDS to get acquainted.\p$" + + .align 2 +gUnknown_845897C:: + .string "Glad to meet you.\n" + .string "Please don't be a stranger!\p$" + + .align 2 +gUnknown_84589AC:: @ 84589AC + .4byte gUnknown_84588DC + .4byte gUnknown_8458918 + .4byte gUnknown_845893C + .4byte gUnknown_845897C + + .align 2 +gUnknown_84589BC:: + .string "Yeahah!\n" + .string "I really wanted this POKéMON!\p$" + + .align 2 +gUnknown_84589E4:: + .string "Finally, a trade got me that\n" + .string "POKéMON I'd wanted a long time.\p$" + + .align 2 +gUnknown_8458A24:: + .string "I'm trading POKéMON right now.\p$" + + .align 2 +gUnknown_8458A44:: + .string "I finally got that POKéMON I\n" + .string "wanted in a trade!\p$" + + .align 2 +gUnknown_8458A78:: @ 8458A78 + .4byte gUnknown_84589BC + .4byte gUnknown_84589E4 + .4byte NULL + .4byte NULL + .4byte gUnknown_8458A24 + .4byte gUnknown_8458A44 + .4byte NULL + .4byte NULL + +gUnknown_8458A98:: @ 8458A98 + .string "{STR_VAR_1} checked the\n" + .string "TRADING BOARD.\p$" + + .align 2 +gUnknown_8458AB8:: @ 8458AB8 + .string "Welcome to the TRADING BOARD.\p" + .string "You may register your POKéMON\n" + .string "and offer it up for a trade.\p" + .string "Would you like to register one of\n" + .string "your POKéMON?$" + + .align 2 +gUnknown_8458B44:: @ 8458B44 + .string "This TRADING BOARD is used for\n" + .string "offering a POKéMON for a trade.\p" + .string "All you need to do is register a\n" + .string "POKéMON for a trade.\p" + .string "Another TRAINER may offer a party\n" + .string "POKéMON in return for the trade.\p" + .string "We hope you will register POKéMON\n" + .string "and trade them with many, many\l" + .string "other TRAINERS.\p" + .string "Would you like to register one of\n" + .string "your POKéMON?$" + + .align 2 + .string "こうかんけいじばん の とうろくが\n" + .string "かんりょう しました\p" + .string "ごりよう ありがとう\n" + .string "ございました!\p$" + + .align 2 + .string "けいじばんに だれも ポケモンを\n" + .string "とうろく していません\p\n$" + + .align 2 +gUnknown_8458CD4:: @ 8458CD4 + .string "Please choose the type of POKéMON\n" + .string "that you would like in the trade.\n$" + + .align 2 +gUnknown_8458D1C:: @ 8458D1C + .string "Which of your party POKéMON will\n" + .string "you offer in trade?\p$" + + .align 2 +gUnknown_8458D54:: @ 8458D54 + .string "Registration has been canceled.\p$" + + .align 2 +gUnknown_8458D78:: @ 8458D78 + .string "Registration has been completed.\p$" + + .align 2 +gUnknown_8458D9C:: @ 8458D9C + .string "The trade has been canceled.\p$" + + .align 2 +gUnknown_8458DBC:: @ 8458DBC + .string "Cancel the registration of your\n" + .string "Lv. {STR_VAR_2} {STR_VAR_1}?$" + + .align 2 +gUnknown_8458DE8:: @ 8458DE8 + .string "Cancel the registration of your\n" + .string "EGG?$" + + .align 2 +gUnknown_8458E10:: @ 8458E10 + .string "The registration has been canceled.\p$" + + .align 2 + .string "こうかんを きぼうしているひとを\n" + .string "ひょうじします$" + + .align 2 + .string "こうかん したい トレーナーを\n" + .string "えらんで ください$" + + .align 2 +gUnknown_8458E70:: @ 8458E70 + .string "Would you like to ask {STR_VAR_1} to\n" + .string "make a trade?$" + + .align 2 + .string "……\n" + .string "あいての へんじを まっています$" + + .align 2 + .string "あなたが こうかんにだす\n" + .string "ポケモンが とうろくされていません\p$" + + .align 2 +gUnknown_8458ED0:: @ 8458ED0 + .string "You don't have a {STR_VAR_2}-type\n" + .string "POKéMON that {STR_VAR_1} wants.\p$" + + .align 2 +gUnknown_8458F04:: @ 8458F04 + .string "You don't have an EGG that\n" + .string "{STR_VAR_1} wants.\p$" + + .align 2 +gUnknown_8458F2C:: @ 8458F2C + .string "{STR_VAR_1} can't make a trade for\n" + .string "your POKéMON right now.\p$" + + .align 2 +gUnknown_8458F60:: @ 8458F60 + .string "You can't make a trade for\n" + .string "{STR_VAR_1}'s POKéMON right now.\p$" + + .align 2 +gUnknown_8458F94:: @ 8458F94 + .word gUnknown_8458F2C + .word gUnknown_8458F60 + +gUnknown_8458F9C:: @ 8458F9C + .string "Your trade offer was rejected.\p$" + +gUnknown_8458FBC:: @ 8458FBC + .string "EGG TRADE$" + + .align 2 +gUnknown_8458FC8:: @ 8458FC8 + .string "{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL$" + + .align 2 +gUnknown_8458FE4:: @ 8458FE4 + .string "Please choose a TRAINER.$" + + .align 2 +gUnknown_8459000:: + .string "Please choose a TRAINER for\n" + .string "a SINGLE BATTLE.$" + + .align 2 +gUnknown_8459030:: + .string "Please choose a TRAINER for\n" + .string "a DOUBLE BATTLE.$" + + .align 2 +gUnknown_8459060:: + .string "Please choose the LEADER\n" + .string "for a MULTI BATTLE.$" + + .align 2 +gUnknown_8459090:: + .string "Please choose the TRAINER to\n" + .string "trade with.$" + + .align 2 +gUnknown_84590BC:: + .string "Please choose the TRAINER who is\n" + .string "sharing WONDER CARDS.$" + + .align 2 +gUnknown_84590F4:: + .string "Please choose the TRAINER who is\n" + .string "sharing WONDER NEWS.$" + + .align 2 +gUnknown_845912C:: + .string "Jump with mini POKéMON!\n" + .string "Please choose the LEADER.$" + + .align 2 +gUnknown_8459160:: + .string "BERRY CRUSH!\n" + .string "Please choose the LEADER.$" + + .align 2 +gUnknown_8459188:: + .string "DODRIO BERRY-PICKING!\n" + .string "Please choose the LEADER.$" + + .align 2 +gUnknown_84591B8:: @ 84591B8 + .4byte gUnknown_8459000 + .4byte gUnknown_8459030 + .4byte gUnknown_8459060 + .4byte gUnknown_8459090 + .4byte gUnknown_845912C + .4byte gUnknown_8459160 + .4byte gUnknown_8459188 + .4byte gUnknown_84590BC + .4byte gUnknown_84590F4 + + .align 2 +gUnknown_84591DC:: @ 84591DC + .string "Searching for a WIRELESS\n" + .string "COMMUNICATION SYSTEM. Wait...$" + + .align 2 + .string "ダブルバトルでは 2ひき いじょうの\n" + .string "ポケモンが ひつようです\p$" + + .align 2 +gUnknown_8459238:: @ 8459238 + .string "Awaiting {STR_VAR_1}'s response…$" + + .align 2 +gUnknown_8459250:: @ 8459250 + .string "{STR_VAR_1} has been asked to register\n" + .string "you as a member. Please wait.$" + + .align 2 +gUnknown_845928C:: @ 845928C + .string "Awaiting a response from the\n" + .string "WIRELESS COMMUNICATION SYSTEM.$" + + .align 2 + .string "ほかの さんかしゃが そろうまで\n" + .string "しょうしょう おまちください$" + + .align 2 +gUnknown_84592E8:: @ 84592E8 + .string "No CARDS appear to be shared \n" + .string "right now.$" + + .align 2 +gUnknown_8459314:: @ 8459314 + .string "No NEWS appears to be shared\n" + .string "right now.$" + +gUnknown_845933C:: @ 845933C + .word gUnknown_84592E8 + .word gUnknown_8459314 + + .align 2 +gUnknown_8459344:: @ 8459344 + .string "BATTLE$" + + .align 2 +gUnknown_845934C:: @ 845934C + .string "CHAT$" + + .align 2 +gUnknown_8459354:: @ 8459354 + .string "GREETINGS$" + + .align 2 +gUnknown_8459360:: @ 8459360 + .string "EXIT$" + + .align 2 +gUnknown_8459368:: @ 8459368 + .string "EXIT$" + + .align 2 +gUnknown_8459370:: @ 8459370 + .string "INFO$" + + .align 2 +gUnknown_8459378:: @ 8459378 + .string "NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.$" + + .align 2 +gUnknown_8459394:: @ 8459394 + .string "SINGLE BATTLE$" + + .align 2 +gUnknown_84593A4:: @ 84593A4 + .string "DOUBLE BATTLE$" + + .align 2 +gUnknown_84593B4:: @ 84593B4 + .string "MULTI BATTLE$" + + .align 2 +gUnknown_84593C4:: @ 84593C4 + .string "POKéMON TRADES$" + + .align 2 +gUnknown_84593D4:: @ 84593D4 + .string "CHAT$" + + .align 2 +gUnknown_84593DC:: @ 84593DC + .string "CARDS$" + + .align 2 +gUnknown_84593E4:: @ 84593E4 + .string "WONDER CARDS$" + + .align 2 +gUnknown_84593F4:: @ 84593F4 + .string "WONDER NEWS$" + + .align 2 +gUnknown_8459400:: @ 8459400 + .string "POKéMON JUMP$" + + .align 2 +gUnknown_8459410:: @ 8459410 + .string "BERRY CRUSH$" + + .align 2 +gUnknown_845941C:: @ 845941C + .string "BERRY-PICKING$" + + .align 2 +gUnknown_845942C:: @ 845942C + .string "SEARCH$" + + .align 2 +gUnknown_8459434:: @ 8459434 + .string "ぐるぐるこうかん$" + + .align 2 +gUnknown_8459440:: @ 8459440 + .string "アイテムトレード$" + + .align 2 +gUnknown_845944C:: @ 845944C + .string "It's a NORMAL CARD.$" + + .align 2 +gUnknown_8459460:: @ 459460 + .string "It's a BRONZE CARD!$" + + .align 2 +gUnknown_8459474:: @ 8459474 + .string "It's a COPPER CARD!$" + + .align 2 +gUnknown_8459488:: @ 8459488 + .string "It's a SILVER CARD!$" + + .align 2 +gUnknown_845949C:: @ 845949C + .string "It's a GOLD CARD!$" + + .align 2 +gUnknown_84594B0:: @ 84594B0 + .word gUnknown_845944C + .word gUnknown_8459460 + .word gUnknown_8459474 + .word gUnknown_8459488 + .word gUnknown_845949C + + .align 2 +gUnknown_84594C4:: @ 84594C4 + .string "This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p$" + + .align 2 +gUnknown_8459504:: @ 8459504 + .string "BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p$" + + .align 2 +gUnknown_8459544:: @ 8459544 + .string "{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}$" + + .align 2 +gUnknown_8459564:: @ 8459564 + .string "{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}$" + + .align 2 +gUnknown_8459580:: @ 8459580 + .word gUnknown_8459544 + .word gUnknown_8459564 + + .align 2 +gUnknown_8459588:: @ 8459588 + .string "Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}$" + + .align 2 +gUnknown_84595B0:: + .string "Canceled reading the Card.$" + + .align 2 +gUnknown_84595CC:: + .4byte 0x02, 0x15 @ RECEIVE ID(0x15) + .4byte 0x0c, 0x00 @ READ PACKET AND COMPUTER SOMETHING + .4byte 0x14, 0x00 @ SEND ALL + .4byte 0x01, 0x0e @ RETURN 0x0e + +gMEventSrvScript_OtherTrainerCanceled:: @ 84595EC @ referenced in mevent/script_common.inc + .4byte 0x12, 0x20, gUnknown_84595CC @ SEND + .4byte 0x01, 0x00, NULL @ WAIT SEND + .4byte 0x14, 0x1b, gUnknown_84595B0 @ SEND_STR + .4byte 0x01, 0x00, NULL @ WAIT SEND + .4byte 0x02, 0x14, NULL @ RECV + .4byte 0x00, 0x09, NULL @ RETURN (other trainer canceled) diff --git a/ld_script.txt b/ld_script.txt index 1a4749d0f..25f4608ea 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,7 +226,7 @@ SECTIONS { src/save_menu_util.o(.text); src/map_preview_screen.o(.text); src/link_rfu_2.o(.text); - src/link_rfu_4.o(.text); + src/link_rfu_3.o(.text); src/link_rfu.o(.text); asm/easy_chat_2.o(.text); src/pokedex_screen.o(.text); @@ -241,7 +241,7 @@ 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/pokemon_special_anim.o(.text); src/party_menu.o(.text); asm/union_room_chat.o(.text); @@ -511,7 +511,7 @@ SECTIONS { data/box_party_pokemon_dropdown.o(.rodata); src/map_preview_screen.o(.rodata); src/link_rfu_2.o(.rodata); - src/link_rfu_4.o(.rodata); + src/link_rfu_3.o(.rodata); data/easy_chat_2.o(.rodata); src/pokedex_screen.o(.rodata); data/pokedex_screen.o(.rodata); @@ -526,7 +526,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/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/link_rfu_4.c b/src/link_rfu_4.c deleted file mode 100644 index 01f19d817..000000000 --- a/src/link_rfu_4.c +++ /dev/null @@ -1,948 +0,0 @@ -#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/sym_bss.txt b/sym_bss.txt index 059233848..16c5758fc 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -73,7 +73,7 @@ gUnknown_3000FE8: @ 3000FE8 .align 2 .include "src/link_rfu_2.o" .align 2 - .include "src/link_rfu_4.o" + .include "src/link_rfu_3.o" .align 2 .include "src/quest_log.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index 1171ba918..140915655 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -332,7 +332,7 @@ gUnknown_203ABE8: @ 203ABE8 .align 2 .include "src/link_rfu_2.o" .align 2 - .include "src/link_rfu_4.o" + .include "src/link_rfu_3.o" .align 2 gUnknown_203ACE8: @ 203ACE8 -- cgit v1.2.3 From a97ef533d204c263cf72a9f05a74eeb21c28d87b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 Jan 2020 21:14:01 -0500 Subject: union_room_player_avatar split --- asm/union_room.s | 2056 --------------------------------------- asm/union_room_player_avatar.s | 2064 ++++++++++++++++++++++++++++++++++++++++ data/union_room.s | 2 + ld_script.txt | 1 + 4 files changed, 2067 insertions(+), 2056 deletions(-) create mode 100644 asm/union_room_player_avatar.s diff --git a/asm/union_room.s b/asm/union_room.s index e054a98ad..2e681d8ca 100644 --- a/asm/union_room.s +++ b/asm/union_room.s @@ -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/data/union_room.s b/data/union_room.s index 6cd65b04d..9bcc4a193 100644 --- a/data/union_room.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/ld_script.txt b/ld_script.txt index 25f4608ea..da1f2b676 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -242,6 +242,7 @@ SECTIONS { src/menu.o(.text); src/quest_log.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); -- cgit v1.2.3