From 9258833539074ea1b6973712b12b1e47e65fd7ba Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Fri, 19 Jul 2024 20:38:08 -0400 Subject: [PATCH 1/2] Moved Kermalis's decomped functions to C --- asm/code_800DAC0.s | 5815 ------------------------ asm/code_800E9E4.s | 2152 +++++++++ asm/code_800F990.s | 2653 +++++++++++ asm/code_8010F28.s | 938 ++++ asm/code_8041AD0.s | 285 -- asm/{code_80428A0.s => code_8042B34.s} | 0 include/code_800E9A8.h | 35 + include/code_800F958.h | 42 + include/code_8010EF0.h | 41 + include/code_804267C.h | 13 + include/code_8045A00.h | 8 + include/dungeon.h | 1 + include/dungeon_movement.h | 1 + include/move_effects_target.h | 2 + include/status_checks_1.h | 1 + ld_script.txt | 10 +- src/code_800E9A8.c | 24 + src/code_800F958.c | 23 + src/code_8010EF0.c | 15 + src/code_8041AD0.c | 20 +- src/code_804267C.c | 320 ++ src/code_80428A0.c | 190 - src/code_8045A00.c | 15 +- src/code_8048480.c | 24 +- src/code_8057824_1.c | 12 +- src/code_8066D04.c | 6 +- src/code_8069E0C.c | 10 +- src/code_80718D8.c | 16 +- src/code_8072B78.c | 8 +- src/code_8077274_1.c | 8 +- src/code_807CD9C.c | 18 +- src/dungeon_ai.c | 16 +- src/dungeon_ai_attack.c | 19 +- src/dungeon_ai_leader.c | 38 +- src/dungeon_items.c | 7 +- src/dungeon_pokemon_attributes.c | 6 +- src/move_actions.c | 23 +- src/move_effects_target.c | 63 +- src/status.c | 21 +- src/status_actions.c | 18 +- src/status_checks.c | 15 +- src/status_checks_1.c | 2 +- src/trap.c | 22 +- 43 files changed, 6472 insertions(+), 6484 deletions(-) create mode 100644 asm/code_800E9E4.s create mode 100644 asm/code_800F990.s create mode 100644 asm/code_8010F28.s rename asm/{code_80428A0.s => code_8042B34.s} (100%) create mode 100644 include/code_800E9A8.h create mode 100644 include/code_800F958.h create mode 100644 include/code_8010EF0.h create mode 100644 include/code_804267C.h create mode 100644 include/code_8045A00.h create mode 100644 src/code_800E9A8.c create mode 100644 src/code_800F958.c create mode 100644 src/code_8010EF0.c create mode 100644 src/code_804267C.c delete mode 100644 src/code_80428A0.c diff --git a/asm/code_800DAC0.s b/asm/code_800DAC0.s index 1ce672a62..e51d47d98 100644 --- a/asm/code_800DAC0.s +++ b/asm/code_800DAC0.s @@ -1700,5819 +1700,4 @@ _0800E994: _0800E9A4: .4byte gUnknown_203B0CC thumb_func_end sub_800E970 -@ https://decomp.me/scratch/K8Xny (kermalis 100%) `bool8 sub_800E9A8(s32)` - thumb_func_start sub_800E9A8 -sub_800E9A8: - push {lr} - adds r3, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r3, r0 - beq _0800E9DC - ldr r0, _0800E9D0 - ldr r1, [r0] - movs r2, 0 -_0800E9BA: - ldr r0, [r1, 0x4] - cmp r0, r3 - bne _0800E9D4 - adds r0, r1, 0 - adds r0, 0x54 - ldrb r0, [r0] - cmp r0, 0 - bne _0800E9DC - movs r0, 0x1 - b _0800E9DE - .align 2, 0 -_0800E9D0: .4byte gUnknown_203B0CC -_0800E9D4: - adds r2, 0x1 - adds r1, 0xD0 - cmp r2, 0x1F - ble _0800E9BA -_0800E9DC: - movs r0, 0 -_0800E9DE: - pop {r1} - bx r1 - thumb_func_end sub_800E9A8 - - thumb_func_start sub_800E9E4 -sub_800E9E4: - push {lr} - bl sub_800E2C0 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0800E9F6 - movs r0, 0 - b _0800E9F8 -_0800E9F6: - movs r0, 0x1 -_0800E9F8: - pop {r1} - bx r1 - thumb_func_end sub_800E9E4 - - thumb_func_start sub_800E9FC -sub_800E9FC: - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0800EA38 - ldr r1, [r0] - movs r2, 0 - movs r4, 0x1 - negs r4, r4 -_0800EA0C: - ldr r0, [r1, 0x4] - cmp r0, r4 - beq _0800EA20 - cmp r3, 0 - bne _0800EA3C - adds r0, r1, 0 - adds r0, 0x54 - ldrb r0, [r0] - cmp r0, 0 - beq _0800EA3C -_0800EA20: - adds r2, 0x1 - adds r1, 0xD0 - cmp r2, 0x1F - ble _0800EA0C - bl sub_800EC74 - lsls r0, 24 - cmp r0, 0 - bne _0800EA3C - movs r0, 0 - b _0800EA3E - .align 2, 0 -_0800EA38: .4byte gUnknown_203B0CC -_0800EA3C: - movs r0, 0x1 -_0800EA3E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_800E9FC - - thumb_func_start sub_800EA44 -sub_800EA44: - push {r4-r6,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - lsrs r1, 16 - adds r0, r1, 0 - bl sub_800ECB8 - adds r4, r0, 0 - ldr r0, [r4, 0x20] - bl sub_800ECD0 - adds r1, r0, 0 - movs r2, 0 - ldr r0, [r4, 0x1C] - cmp r2, r0 - bge _0800EA7C - adds r3, r0, 0 -_0800EA68: - movs r6, 0 - ldrsh r0, [r1, r6] - cmp r0, r5 - bne _0800EA74 - ldrb r0, [r1, 0x2] - b _0800EA7E -_0800EA74: - adds r2, 0x1 - adds r1, 0xC - cmp r2, r3 - blt _0800EA68 -_0800EA7C: - ldrb r0, [r4, 0x10] -_0800EA7E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_800EA44 - - thumb_func_start sub_800EA84 -sub_800EA84: - push {r4,lr} - sub sp, 0x50 - adds r4, r0, 0 - ldrh r0, [r4] - bl sub_800ECB8 - movs r1, 0 - ldrsh r0, [r0, r1] - str r0, [sp, 0x28] - ldr r0, [r4, 0x10] - str r0, [sp, 0x2C] - ldr r0, [r4, 0xC] - str r0, [sp, 0x30] - ldr r0, [r4, 0x4] - str r0, [sp, 0x34] - ldr r0, [r4, 0x8] - str r0, [sp, 0x38] - ldrh r0, [r4] - bl sub_800ECB8 - movs r2, 0 - ldrsh r0, [r0, r2] - bl sub_800EBBC - str r0, [sp, 0x3C] - ldr r0, _0800EADC - str r0, [sp, 0x40] - add r1, sp, 0x44 - ldr r0, _0800EAE0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - add r1, sp, 0x28 - mov r0, sp - movs r2, 0x28 - bl memcpy - movs r0, 0x5 - mov r1, sp - bl sub_800E208 - add sp, 0x50 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0800EADC: .4byte 0x0000ffff -_0800EAE0: .4byte gUnknown_80B9C60 - thumb_func_end sub_800EA84 - - thumb_func_start sub_800EAE4 -sub_800EAE4: - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - bl sub_800E2C0 - adds r1, r0, 0 - movs r3, 0x1 - negs r3, r3 - cmp r1, r3 - beq _0800EB1E - ldr r2, _0800EB14 - movs r0, 0xD0 - muls r1, r0 - ldr r0, [r2] - adds r1, r0, r1 - ldr r0, [r4] - str r0, [r1, 0x18] - ldr r0, [r1, 0x20] - cmp r0, r3 - beq _0800EB18 - ldr r0, [r5] - str r0, [r1, 0x1C] - b _0800EB1E - .align 2, 0 -_0800EB14: .4byte gUnknown_203B0CC -_0800EB18: - movs r0, 0 - strh r0, [r1, 0x1C] - strh r0, [r1, 0x1E] -_0800EB1E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_800EAE4 - - thumb_func_start sub_800EB24 -sub_800EB24: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x20 - adds r6, r1, 0 - mov r8, r2 - adds r5, r3, 0 - ldr r4, [sp, 0x38] - bl sub_800E2C0 - adds r1, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0800EBB0 - ldr r2, _0800EB8C - movs r0, 0xD0 - muls r1, r0 - ldr r0, [r2] - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0xCC - ldr r0, [r0] - cmp r0, 0 - bne _0800EB5A - ldr r0, [r6] - str r0, [r2, 0x18] -_0800EB5A: - ldr r0, [r2] - cmp r0, 0x6 - beq _0800EB94 - ldr r0, [r2, 0x8] - movs r1, 0x7 - mov r12, r1 - ands r0, r1 - cmp r0, 0 - bne _0800EB94 - mov r1, sp - ldr r0, _0800EB90 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6} - stm r1!, {r3,r6} - mov r7, r12 - ands r4, r7 - lsls r0, r4, 2 - add r0, sp - ldr r0, [r0] - adds r0, r5, r0 - b _0800EB96 - .align 2, 0 -_0800EB8C: .4byte gUnknown_203B0CC -_0800EB90: .4byte gUnknown_80B9C9C -_0800EB94: - adds r0, r5, 0x1 -_0800EB96: - str r0, [r2, 0x24] - ldr r1, [r2, 0x20] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0800EBAA - mov r1, r8 - ldr r0, [r1] - str r0, [r2, 0x1C] - b _0800EBB0 -_0800EBAA: - movs r0, 0 - strh r0, [r2, 0x1C] - strh r0, [r2, 0x1E] -_0800EBB0: - add sp, 0x20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800EB24 - - thumb_func_start sub_800EBBC -sub_800EBBC: - push {lr} - bl sub_800ECA4 - ldr r0, [r0, 0x1C] - pop {r1} - bx r1 - thumb_func_end sub_800EBBC - - thumb_func_start sub_800EBC8 -sub_800EBC8: - push {r4,lr} - sub sp, 0x50 - adds r4, r0, 0 - ldrh r0, [r4] - bl sub_800ECB8 - movs r1, 0x4 - ldrsh r0, [r0, r1] - str r0, [sp, 0x28] - ldr r0, [r4, 0x10] - str r0, [sp, 0x2C] - ldr r0, [r4, 0xC] - str r0, [sp, 0x30] - ldr r0, [r4, 0x4] - str r0, [sp, 0x34] - ldr r0, [r4, 0x8] - str r0, [sp, 0x38] - ldrh r0, [r4] - bl sub_800ECB8 - movs r2, 0x4 - ldrsh r0, [r0, r2] - bl sub_800EC68 - str r0, [sp, 0x3C] - ldr r0, _0800EC20 - str r0, [sp, 0x40] - add r1, sp, 0x44 - ldr r0, _0800EC24 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - add r1, sp, 0x28 - mov r0, sp - movs r2, 0x28 - bl memcpy - movs r0, 0x6 - mov r1, sp - bl sub_800E208 - add sp, 0x50 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0800EC20: .4byte 0x0000ffff -_0800EC24: .4byte gUnknown_80B9C60 - thumb_func_end sub_800EBC8 - - thumb_func_start sub_800EC28 -sub_800EC28: - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - bl sub_800E2C0 - adds r1, r0, 0 - movs r3, 0x1 - negs r3, r3 - cmp r1, r3 - beq _0800EC62 - ldr r2, _0800EC58 - movs r0, 0xD0 - muls r1, r0 - ldr r0, [r2] - adds r1, r0, r1 - ldr r0, [r4] - str r0, [r1, 0x18] - ldr r0, [r1, 0x20] - cmp r0, r3 - beq _0800EC5C - ldr r0, [r5] - str r0, [r1, 0x1C] - b _0800EC62 - .align 2, 0 -_0800EC58: .4byte gUnknown_203B0CC -_0800EC5C: - movs r0, 0 - strh r0, [r1, 0x1C] - strh r0, [r1, 0x1E] -_0800EC62: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_800EC28 - - thumb_func_start sub_800EC68 -sub_800EC68: - push {lr} - bl sub_800ECA4 - ldr r0, [r0, 0x1C] - pop {r1} - bx r1 - thumb_func_end sub_800EC68 - - thumb_func_start sub_800EC74 -sub_800EC74: - push {lr} - movs r0, 0x1 - bl sub_800F19C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_800EC74 - - thumb_func_start sub_800EC84 -sub_800EC84: - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_800ECB8 - ldrb r0, [r0, 0x8] - pop {r1} - bx r1 - thumb_func_end sub_800EC84 - - thumb_func_start sub_800EC94 -sub_800EC94: - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_800ECB8 - ldrb r0, [r0, 0x9] - pop {r1} - bx r1 - thumb_func_end sub_800EC94 - - thumb_func_start sub_800ECA4 -sub_800ECA4: - adds r1, r0, 0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0800ECB4 - adds r0, r1 - bx lr - .align 2, 0 -_0800ECB4: .4byte gUnknown_80B9CC4 - thumb_func_end sub_800ECA4 - - thumb_func_start sub_800ECB8 -sub_800ECB8: - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0800ECCC - adds r0, r1 - bx lr - .align 2, 0 -_0800ECCC: .4byte gUnknown_80BDBC4 - thumb_func_end sub_800ECB8 - - thumb_func_start sub_800ECD0 -sub_800ECD0: - adds r1, r0, 0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _0800ECE0 - adds r0, r1 - bx lr - .align 2, 0 -_0800ECE0: .4byte gUnknown_80C183C - thumb_func_end sub_800ECD0 - - thumb_func_start sub_800ECE4 -sub_800ECE4: - lsls r0, 24 - ldr r1, _0800ECF4 - lsrs r0, 23 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0800ECF4: .4byte gUnknown_80CE73C - thumb_func_end sub_800ECE4 - - thumb_func_start sub_800ECF8 -sub_800ECF8: - lsls r0, 24 - ldr r1, _0800ED08 - lsrs r0, 22 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0800ED08: .4byte gUnknown_80CE37C - thumb_func_end sub_800ECF8 - - thumb_func_start sub_800ED0C -sub_800ED0C: - lsls r0, 24 - ldr r1, _0800ED1C - lsrs r0, 22 - adds r0, r1 - movs r1, 0x2 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_0800ED1C: .4byte gUnknown_80CE37C - thumb_func_end sub_800ED0C - - thumb_func_start sub_800ED20 -sub_800ED20: - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0800ED34 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r2, 0xC - adds r1, r2 - ldr r0, [r1] - bx lr - .align 2, 0 -_0800ED34: .4byte gUnknown_80BDBC4 - thumb_func_end sub_800ED20 - - thumb_func_start sub_800ED38 -sub_800ED38: - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _0800ED60 - ldr r0, [r4] - cmp r0, 0 - bne _0800ED54 - movs r0, 0x4C - movs r1, 0xB - bl MemoryAlloc - str r0, [r4] - movs r1, 0x4C - bl MemoryClear8 -_0800ED54: - ldr r0, [r4] - str r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800ED60: .4byte gUnknown_203B0D0 - thumb_func_end sub_800ED38 - - thumb_func_start sub_800ED64 -sub_800ED64: - push {r4,lr} - ldr r4, _0800ED7C - ldr r0, [r4] - cmp r0, 0 - beq _0800ED76 - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0800ED76: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800ED7C: .4byte gUnknown_203B0D0 - thumb_func_end sub_800ED64 - - thumb_func_start sub_800ED80 -sub_800ED80: - push {r4,lr} - ldr r2, _0800EDAC - ldr r1, [r2] - movs r0, 0 - str r0, [r1] - adds r4, r2, 0 - movs r3, 0 - movs r2, 0x4 - movs r1, 0x1 -_0800ED92: - ldr r0, [r4] - adds r0, r2 - str r3, [r0] - str r3, [r0, 0x4] - str r3, [r0, 0x8] - adds r2, 0x24 - subs r1, 0x1 - cmp r1, 0 - bge _0800ED92 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800EDAC: .4byte gUnknown_203B0D0 - thumb_func_end sub_800ED80 - - thumb_func_start sub_800EDB0 -sub_800EDB0: - push {r4,r5,lr} - adds r4, r0, 0 - movs r3, 0 - ldr r5, _0800EDDC - movs r2, 0 -_0800EDBA: - ldr r1, [r5] - adds r0, r1, 0x4 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0 - bne _0800EDE0 - adds r1, r2 - adds r1, 0x4 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - b _0800EDEA - .align 2, 0 -_0800EDDC: .4byte gUnknown_203B0D0 -_0800EDE0: - adds r2, 0x24 - adds r3, 0x1 - cmp r3, 0x1 - ble _0800EDBA - movs r0, 0 -_0800EDEA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_800EDB0 - - thumb_func_start sub_800EDF0 -sub_800EDF0: - push {r4,lr} - sub sp, 0x24 - adds r4, r1, 0 - cmp r0, 0 - beq _0800EE00 - cmp r0, 0x1 - beq _0800EE1A - b _0800EE44 -_0800EE00: - movs r0, 0x3 - str r0, [sp] - movs r0, 0xE - str r0, [sp, 0xC] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0x10] - movs r0, 0xDC - lsls r0, 2 - str r0, [sp, 0x18] - movs r0, 0x1F - str r0, [sp, 0x1C] - b _0800EE40 -_0800EE1A: - movs r0, 0x4 - str r0, [sp] - movs r0, 0xE - str r0, [sp, 0xC] - movs r0, 0xF0 - lsls r0, 4 - str r0, [sp, 0x10] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x18] - str r0, [sp, 0x1C] - bl sub_8000728 - movs r2, 0x2 - eors r0, r2 - negs r1, r0 - orrs r1, r0 - asrs r1, 31 - ands r1, r2 -_0800EE40: - str r1, [sp, 0x14] - str r4, [sp, 0x4] -_0800EE44: - ldr r0, [r4, 0x4] - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0x20] - mov r0, sp - bl sub_800EDB0 - add sp, 0x24 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_800EDF0 - - thumb_func_start sub_800EE5C -sub_800EE5C: - push {r4-r6,lr} - adds r4, r0, 0 - bl sub_800ECA4 - adds r6, r0, 0 - cmp r4, 0 - beq _0800EEC2 - ldr r2, [r6] - subs r0, r2, 0x1 - cmp r0, 0x1 - bls _0800EEC2 - ldr r1, [r6, 0x4] - adds r0, r2, 0 - bl sub_800F1C0 - adds r5, r0, 0 - cmp r5, 0 - beq _0800EEC2 - ldr r0, [r6] - ldr r1, [r6, 0x4] - bl sub_800F0F4 - adds r4, r0, 0 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _0800EE9A - adds r0, r5, 0 - bl sub_800F204 - b _0800EEC2 -_0800EE9A: - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _0800EEB6 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_800F13C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_800EDF0 - b _0800EEBC -_0800EEB6: - adds r0, r5, 0 - bl sub_800F204 -_0800EEBC: - ldr r0, [r6, 0x4] - bl sub_800F15C -_0800EEC2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_800EE5C - - thumb_func_start sub_800EEC8 -sub_800EEC8: - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_800ECB8 - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_800EE5C - pop {r0} - bx r0 - thumb_func_end sub_800EEC8 - - thumb_func_start sub_800EEE0 -sub_800EEE0: - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_800ECB8 - movs r1, 0x4 - ldrsh r0, [r0, r1] - bl sub_800EE5C - pop {r0} - bx r0 - thumb_func_end sub_800EEE0 - - thumb_func_start sub_800EEF8 -sub_800EEF8: - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_800ECB8 - movs r1, 0x2 - ldrsh r0, [r0, r1] - bl sub_800EE5C - pop {r0} - bx r0 - thumb_func_end sub_800EEF8 - - thumb_func_start sub_800EF10 -sub_800EF10: - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_800ECB8 - movs r1, 0x6 - ldrsh r0, [r0, r1] - bl sub_800EE5C - pop {r0} - bx r0 - thumb_func_end sub_800EF10 - - thumb_func_start sub_800EF28 -sub_800EF28: - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_800ECE4 - lsls r0, 16 - asrs r0, 16 - bl sub_800EE5C - pop {r0} - bx r0 - thumb_func_end sub_800EF28 - - thumb_func_start sub_800EF40 -sub_800EF40: - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - cmp r1, 0 - beq _0800EF52 - bl sub_800ECF8 - b _0800EF56 -_0800EF52: - bl sub_800ED0C -_0800EF56: - lsls r0, 16 - asrs r0, 16 - bl sub_800EE5C - pop {r0} - bx r0 - thumb_func_end sub_800EF40 - - thumb_func_start sub_800EF64 -sub_800EF64: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _0800EF9C - mov r9, r0 - movs r1, 0x4 - mov r8, r1 - movs r7, 0 - movs r6, 0 - movs r5, 0x1 -_0800EF7A: - mov r0, r9 - ldr r1, [r0] - adds r0, r1, 0x4 - adds r0, r7 - ldr r0, [r0] - cmp r0, 0 - beq _0800F01A - mov r0, r8 - adds r4, r1, r0 - ldr r0, [r4] - cmp r0, 0x3 - beq _0800EFA0 - cmp r0, 0x3 - bls _0800F018 - cmp r0, 0x4 - beq _0800EFDA - b _0800F018 - .align 2, 0 -_0800EF9C: .4byte gUnknown_203B0D0 -_0800EFA0: - ldr r0, [r4, 0x8] - ldr r1, [r4, 0x18] - bl sub_8005674 - mov r1, r9 - ldr r0, [r1] - ldr r0, [r0] - cmp r0, 0 - beq _0800EFCA - cmp r0, 0x1 - bne _0800F00C - ldr r0, [r4, 0x8] - ldr r1, [r0, 0x18] - ldr r0, [r4, 0xC] - adds r0, 0x10 - lsls r0, 20 - lsrs r0, 16 - movs r2, 0x10 - bl sub_809971C - b _0800F00C -_0800EFCA: - ldr r0, [r4, 0xC] - ldr r1, [r4, 0x8] - ldr r1, [r1, 0x18] - ldr r2, [r4, 0x1C] - ldr r3, [r4, 0x20] - bl sub_8005770 - b _0800F00C -_0800EFDA: - bl sub_8000728 - cmp r0, 0x1 - bne _0800F000 - movs r0, 0 - movs r1, 0x1 - bl sub_800CD64 - movs r0, 0 - bl sub_8052210 - movs r0, 0x5 - movs r1, 0 - bl sub_803EAF0 - bl sub_800CB20 - bl xxx_call_update_bg_vram -_0800F000: - ldr r0, [r4, 0x8] - ldr r1, [r4, 0xC] - ldr r2, [r4, 0x10] - ldr r3, [r4, 0x14] - bl sub_8009A1C -_0800F00C: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _0800F018 - bl sub_800F204 - str r6, [r4, 0x4] -_0800F018: - str r6, [r4] -_0800F01A: - movs r0, 0x24 - add r8, r0 - adds r7, 0x24 - subs r5, 0x1 - cmp r5, 0 - bge _0800EF7A - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800EF64 - - thumb_func_start sub_800F034 -sub_800F034: - push {r4-r6,lr} - ldr r4, _0800F074 - ldr r0, [r4] - cmp r0, 0 - bne _0800F04E - movs r0, 0x10 - movs r1, 0xB - bl MemoryAlloc - str r0, [r4] - movs r1, 0x10 - bl MemoryClear8 -_0800F04E: - movs r3, 0 - adds r6, r4, 0 - movs r5, 0x1 - negs r5, r5 - movs r4, 0 -_0800F058: - ldr r0, [r6] - lsls r2, r3, 3 - adds r1, r0, r2 - str r5, [r1] - adds r0, 0x4 - adds r0, r2 - str r4, [r0] - adds r3, 0x1 - cmp r3, 0x1 - ble _0800F058 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800F074: .4byte gUnknown_203B0D4 - thumb_func_end sub_800F034 - - thumb_func_start sub_800F078 -sub_800F078: - push {r4,lr} - ldr r4, _0800F090 - ldr r0, [r4] - cmp r0, 0 - beq _0800F08A - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0800F08A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800F090: .4byte gUnknown_203B0D4 - thumb_func_end sub_800F078 - - thumb_func_start sub_800F094 -sub_800F094: - push {r4-r6,lr} - movs r3, 0 - ldr r6, _0800F0BC - movs r5, 0x1 - negs r5, r5 - movs r4, 0 -_0800F0A0: - ldr r0, [r6] - lsls r2, r3, 3 - adds r1, r0, r2 - str r5, [r1] - adds r0, 0x4 - adds r0, r2 - str r4, [r0] - adds r3, 0x1 - cmp r3, 0x1 - ble _0800F0A0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800F0BC: .4byte gUnknown_203B0D4 - thumb_func_end sub_800F094 - - thumb_func_start sub_800F0C0 -sub_800F0C0: - push {lr} - cmp r0, 0x3 - bne _0800F0D8 - ldr r0, _0800F0D4 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, r1 - bne _0800F0EC - movs r0, 0 - b _0800F0F0 - .align 2, 0 -_0800F0D4: .4byte gUnknown_203B0D4 -_0800F0D8: - ldr r0, _0800F0E8 - ldr r0, [r0] - ldr r0, [r0, 0x8] - cmp r0, r1 - bne _0800F0EC - movs r0, 0x1 - b _0800F0F0 - .align 2, 0 -_0800F0E8: .4byte gUnknown_203B0D4 -_0800F0EC: - movs r0, 0x3 - negs r0, r0 -_0800F0F0: - pop {r1} - bx r1 - thumb_func_end sub_800F0C0 - - thumb_func_start sub_800F0F4 -sub_800F0F4: - push {lr} - cmp r0, 0x3 - bne _0800F114 - ldr r0, _0800F110 - ldr r2, [r0] - ldr r0, [r2] - cmp r0, r1 - beq _0800F11E - ldr r0, [r2, 0x4] - cmp r0, 0 - bne _0800F132 - movs r0, 0 - b _0800F136 - .align 2, 0 -_0800F110: .4byte gUnknown_203B0D4 -_0800F114: - ldr r0, _0800F124 - ldr r2, [r0] - ldr r0, [r2, 0x8] - cmp r0, r1 - bne _0800F128 -_0800F11E: - movs r0, 0x2 - negs r0, r0 - b _0800F136 - .align 2, 0 -_0800F124: .4byte gUnknown_203B0D4 -_0800F128: - ldr r0, [r2, 0xC] - cmp r0, 0 - bne _0800F132 - movs r0, 0x1 - b _0800F136 -_0800F132: - movs r0, 0x1 - negs r0, r0 -_0800F136: - pop {r1} - bx r1 - thumb_func_end sub_800F0F4 - - thumb_func_start sub_800F13C -sub_800F13C: - push {lr} - ldr r1, _0800F158 - ldr r3, [r1] - lsls r1, r0, 3 - adds r0, r3, 0x4 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bne _0800F154 - adds r1, r3, r1 - ldr r0, [r2, 0x4] - str r0, [r1] -_0800F154: - pop {r0} - bx r0 - .align 2, 0 -_0800F158: .4byte gUnknown_203B0D4 - thumb_func_end sub_800F13C - - thumb_func_start sub_800F15C -sub_800F15C: - push {r4,r5,lr} - adds r4, r0, 0 - movs r3, 0 - ldr r5, _0800F17C -_0800F164: - ldr r1, [r5] - lsls r2, r3, 3 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, r4 - bne _0800F180 - adds r1, 0x4 - adds r1, r2 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _0800F186 - .align 2, 0 -_0800F17C: .4byte gUnknown_203B0D4 -_0800F180: - adds r3, 0x1 - cmp r3, 0x1 - ble _0800F164 -_0800F186: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_800F15C - - thumb_func_start sub_800F18C -sub_800F18C: - ldr r1, _0800F198 - lsls r0, 3 - ldr r1, [r1] - adds r1, r0 - adds r0, r1, 0 - bx lr - .align 2, 0 -_0800F198: .4byte gUnknown_203B0D4 - thumb_func_end sub_800F18C - - thumb_func_start sub_800F19C -sub_800F19C: - push {lr} - ldr r1, _0800F1B4 - ldr r1, [r1] - lsls r0, 3 - adds r1, 0x4 - adds r1, r0 - ldr r0, [r1] - cmp r0, 0 - beq _0800F1B8 - movs r0, 0x1 - b _0800F1BA - .align 2, 0 -_0800F1B4: .4byte gUnknown_203B0D4 -_0800F1B8: - movs r0, 0 -_0800F1BA: - pop {r1} - bx r1 - thumb_func_end sub_800F19C - - thumb_func_start sub_800F1C0 -sub_800F1C0: - push {lr} - sub sp, 0x8 - adds r2, r1, 0 - cmp r0, 0x1 - bcc _0800F1EC - cmp r0, 0x3 - bls _0800F1D4 - cmp r0, 0x4 - beq _0800F1E4 - b _0800F1EC -_0800F1D4: - ldr r1, _0800F1E0 - mov r0, sp - bl sprintf - b _0800F1EC - .align 2, 0 -_0800F1E0: .4byte gUnknown_80CE77C -_0800F1E4: - ldr r1, _0800F1FC - mov r0, sp - bl sprintf -_0800F1EC: - ldr r1, _0800F200 - mov r0, sp - bl Call_OpenFileAndGetFileDataPtr - add sp, 0x8 - pop {r1} - bx r1 - .align 2, 0 -_0800F1FC: .4byte gUnknown_80CE788 -_0800F200: .4byte gEffectFileArchive - thumb_func_end sub_800F1C0 - - thumb_func_start sub_800F204 -sub_800F204: - push {lr} - bl CloseFile - pop {r0} - bx r0 - thumb_func_end sub_800F204 - - thumb_func_start GetDungeonPokemonSprite - @ DungeonPokemonSprite *GetDungeonPokemonSprite(int id) -GetDungeonPokemonSprite: - push {r4,lr} - adds r4, r0, 0 - movs r3, 0 - ldr r0, _0800F230 - ldr r0, [r0] - adds r1, r0, 0x4 - adds r2, r0, 0 - adds r2, 0x8 -_0800F220: - ldrb r0, [r1] - cmp r0, 0 - beq _0800F234 - ldr r0, [r2] - cmp r0, r4 - bne _0800F234 - adds r0, r1, 0 - b _0800F240 - .align 2, 0 -_0800F230: .4byte gDungeonPokemonSprites -_0800F234: - adds r1, 0x40 - adds r2, 0x40 - adds r3, 0x1 - cmp r3, 0x15 - ble _0800F220 - movs r0, 0 -_0800F240: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetDungeonPokemonSprite - - thumb_func_start NewDungeonPokemonSprite - @ DungeonPokemonSprite *NewDungeonPokemonSprite(void) -NewDungeonPokemonSprite: - push {lr} - movs r2, 0 - ldr r0, _0800F25C - ldr r0, [r0] - adds r1, r0, 0x4 -_0800F252: - ldrb r0, [r1] - cmp r0, 0 - bne _0800F260 - adds r0, r1, 0 - b _0800F26A - .align 2, 0 -_0800F25C: .4byte gDungeonPokemonSprites -_0800F260: - adds r1, 0x40 - adds r2, 0x1 - cmp r2, 0x15 - ble _0800F252 - movs r0, 0 -_0800F26A: - pop {r1} - bx r1 - thumb_func_end NewDungeonPokemonSprite - - thumb_func_start GetNextStatusSymbol - @ u32 GetNextStatusSymbol(?, int select) - @ The "select" parameter exists to differentiate between the two kinds of - @ status symbols that can appear at the same time. - @ Only frozen falls under select = 1, every other symbol falls under select = 0 -GetNextStatusSymbol: - push {r4-r6,lr} - adds r2, r0, 0 - lsls r0, r1, 3 - adds r0, 0x28 - adds r3, r2, r0 - movs r5, 0x80 - lsls r5, 21 - cmp r1, 0 - bne _0800F284 - movs r5, 0x1 -_0800F284: - movs r6, 0x80 - lsls r6, 21 - cmp r1, 0 - bne _0800F290 - movs r6, 0x80 - lsls r6, 20 -_0800F290: - movs r4, 0x1 - cmp r1, 0 - bne _0800F298 - movs r4, 0x1C -_0800F298: - ldr r0, [r2, 0xC] - cmp r0, 0 - bne _0800F2A4 - b _0800F2CC -_0800F2A0: - adds r0, r1, 0 - b _0800F2CE -_0800F2A4: - ldr r2, [r3] - adds r1, r5, 0 - cmp r2, 0 - beq _0800F2AE - adds r1, r2, 0 -_0800F2AE: - movs r2, 0 - cmp r2, r4 - bge _0800F2CC - adds r3, r0, 0 -_0800F2B6: - lsls r1, 1 - cmp r1, r6 - bls _0800F2BE - adds r1, r5, 0 -_0800F2BE: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0800F2A0 - adds r2, 0x1 - cmp r2, r4 - blt _0800F2B6 -_0800F2CC: - movs r0, 0 -_0800F2CE: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetNextStatusSymbol - - thumb_func_start StatusSymbolBitToIndex -StatusSymbolBitToIndex: - push {lr} - movs r1, 0 - cmp r0, 0 - beq _0800F2E4 -_0800F2DC: - lsrs r0, 1 - adds r1, 0x1 - cmp r0, 0 - bne _0800F2DC -_0800F2E4: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end StatusSymbolBitToIndex - - thumb_func_start sub_800F2EC -sub_800F2EC: - push {r4-r7,lr} - sub sp, 0xC - adds r5, r0, 0 - adds r6, r1, 0 - adds r7, r2, 0 - lsls r0, r6, 3 - adds r0, 0x28 - adds r4, r5, r0 - ldr r0, [r5, 0xC] - cmp r0, 0 - bne _0800F306 - str r0, [r4] - b _0800F35C -_0800F306: - ldr r0, [r4] - cmp r0, 0 - bne _0800F30E - str r0, [r4, 0x4] -_0800F30E: - ldr r0, [r4, 0x4] - cmp r0, 0 - bgt _0800F32A - adds r0, r5, 0 - adds r1, r6, 0 - bl GetNextStatusSymbol - adds r1, r0, 0 - ldr r0, [r4] - cmp r0, r1 - beq _0800F326 - str r1, [r4] -_0800F326: - movs r0, 0x3C - b _0800F32C -_0800F32A: - subs r0, 0x1 -_0800F32C: - str r0, [r4, 0x4] - ldrb r0, [r5, 0x10] - cmp r0, 0 - beq _0800F35C - ldr r0, [r4] - cmp r0, 0 - beq _0800F35C - bl StatusSymbolBitToIndex - adds r1, r0, 0 - movs r2, 0x8 - ldrsh r0, [r5, r2] - adds r2, r5, 0 - adds r2, 0x14 - lsls r3, r6, 2 - adds r3, 0x18 - adds r3, r5, r3 - str r7, [sp] - ldrb r4, [r5, 0x11] - str r4, [sp, 0x4] - ldr r4, [r5, 0x4] - str r4, [sp, 0x8] - bl DrawStatusSprite -_0800F35C: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800F2EC - - thumb_func_start DrawStatusSprite - @ void DrawStatusSprite(?, int status, Position *pos, Position *pos_offset, Position *pos_screen, ?) -DrawStatusSprite: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - mov r12, r2 - ldr r0, [sp, 0x20] - mov r8, r0 - ldr r4, [sp, 0x24] - ldr r0, _0800F410 - lsls r1, 3 - adds r2, r1, r0 - ldr r0, [r2] - ldr r1, [r2, 0x4] - str r0, [sp] - str r1, [sp, 0x4] - lsls r2, r0, 1 - ldr r1, [sp] - adds r2, r1 - lsls r2, 3 - ldr r0, _0800F414 - adds r2, r0 - ldr r0, [r2, 0x8] - ldr r6, _0800F418 - adds r7, r0, r6 - movs r0, 0x3 - ands r4, r0 - lsls r4, 10 - ldr r5, _0800F41C - ldrh r1, [r5, 0x4] - ldr r0, _0800F420 - ands r0, r1 - orrs r0, r4 - strh r0, [r5, 0x4] - mov r0, r12 - movs r4, 0 - ldrsh r1, [r0, r4] - ldr r0, [r2] - lsls r0, 2 - subs r1, r0 - mov r6, r8 - movs r4, 0 - ldrsh r0, [r6, r4] - subs r1, r0 - movs r6, 0 - ldrsh r0, [r3, r6] - adds r4, r1, r0 - mov r0, r12 - movs r6, 0x2 - ldrsh r1, [r0, r6] - ldr r0, [r2, 0x4] - lsls r0, 2 - subs r1, r0 - mov r2, r8 - movs r6, 0x2 - ldrsh r0, [r2, r6] - subs r1, r0 - movs r2, 0x2 - ldrsh r0, [r3, r2] - adds r3, r1, r0 - adds r6, r3, 0 - subs r6, 0x10 - movs r0, 0x20 - negs r0, r0 - cmp r4, r0 - bge _0800F3E8 - b _0800F5E4 -_0800F3E8: - cmp r3, r0 - bge _0800F3EE - b _0800F5E4 -_0800F3EE: - cmp r4, 0xEF - ble _0800F3F4 - b _0800F5E4 -_0800F3F4: - cmp r3, 0x9F - ble _0800F3FA - b _0800F5E4 -_0800F3FA: - ldr r0, [sp] - subs r0, 0x1 - cmp r0, 0xF - bls _0800F404 - b _0800F5A6 -_0800F404: - lsls r0, 2 - ldr r1, _0800F424 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800F410: .4byte gStatusSprites -_0800F414: .4byte gStatusGraphics -_0800F418: .4byte 0x0000032b -_0800F41C: .4byte gUnknown_203B0DC -_0800F420: .4byte 0x0000f3ff -_0800F424: .4byte _0800F428 - .align 2, 0 -_0800F428: - .4byte _0800F468 - .4byte _0800F4CC - .4byte _0800F4CC - .4byte _0800F574 - .4byte _0800F538 - .4byte _0800F4CC - .4byte _0800F4CC - .4byte _0800F498 - .4byte _0800F4CC - .4byte _0800F4CC - .4byte _0800F4CC - .4byte _0800F468 - .4byte _0800F4CC - .4byte _0800F468 - .4byte _0800F4CC - .4byte _0800F500 -_0800F468: - ldrh r2, [r5] - ldr r1, _0800F48C - adds r0, r1, 0 - ands r0, r2 - strh r0, [r5] - ldrh r0, [r5, 0x2] - ands r1, r0 - ldr r0, _0800F490 - ands r4, r0 - movs r0, 0xFE - lsls r0, 8 - ands r1, r0 - orrs r1, r4 - strh r1, [r5, 0x2] - ldr r1, _0800F494 - ands r1, r6 - b _0800F59A - .align 2, 0 -_0800F48C: .4byte 0x00003fff -_0800F490: .4byte 0x000001ff -_0800F494: .4byte 0x00000fff -_0800F498: - movs r3, 0x80 - lsls r3, 8 - ldrh r2, [r5] - ldr r1, _0800F4C0 - adds r0, r1, 0 - ands r0, r2 - orrs r0, r3 - strh r0, [r5] - ldrh r0, [r5, 0x2] - ands r1, r0 - ldr r0, _0800F4C4 - ands r4, r0 - movs r0, 0xFE - lsls r0, 8 - ands r1, r0 - orrs r1, r4 - strh r1, [r5, 0x2] - ldr r1, _0800F4C8 - ands r1, r6 - b _0800F59A - .align 2, 0 -_0800F4C0: .4byte 0x00003fff -_0800F4C4: .4byte 0x000001ff -_0800F4C8: .4byte 0x00000fff -_0800F4CC: - ldrh r2, [r5] - ldr r1, _0800F4F4 - adds r0, r1, 0 - ands r0, r2 - strh r0, [r5] - movs r2, 0x80 - lsls r2, 7 - ldrh r0, [r5, 0x2] - ands r1, r0 - orrs r1, r2 - ldr r0, _0800F4F8 - ands r4, r0 - movs r0, 0xFE - lsls r0, 8 - ands r1, r0 - orrs r1, r4 - strh r1, [r5, 0x2] - ldr r1, _0800F4FC - ands r1, r6 - b _0800F59A - .align 2, 0 -_0800F4F4: .4byte 0x00003fff -_0800F4F8: .4byte 0x000001ff -_0800F4FC: .4byte 0x00000fff -_0800F500: - ldrh r2, [r5] - ldr r1, _0800F52C - adds r0, r1, 0 - ands r0, r2 - strh r0, [r5] - movs r2, 0x80 - lsls r2, 7 - ldrh r0, [r5, 0x2] - ands r1, r0 - orrs r1, r2 - adds r2, r4, 0 - adds r2, 0x8 - ldr r0, _0800F530 - ands r2, r0 - movs r0, 0xFE - lsls r0, 8 - ands r1, r0 - orrs r1, r2 - strh r1, [r5, 0x2] - ldr r1, _0800F534 - ands r1, r6 - b _0800F59A - .align 2, 0 -_0800F52C: .4byte 0x00003fff -_0800F530: .4byte 0x000001ff -_0800F534: .4byte 0x00000fff -_0800F538: - movs r3, 0x80 - lsls r3, 7 - ldrh r2, [r5] - ldr r1, _0800F568 - adds r0, r1, 0 - ands r0, r2 - orrs r0, r3 - strh r0, [r5] - movs r2, 0x80 - lsls r2, 8 - ldrh r0, [r5, 0x2] - ands r1, r0 - orrs r1, r2 - ldr r0, _0800F56C - ands r4, r0 - movs r0, 0xFE - lsls r0, 8 - ands r1, r0 - orrs r1, r4 - strh r1, [r5, 0x2] - ldr r1, _0800F570 - ands r1, r6 - b _0800F59A - .align 2, 0 -_0800F568: .4byte 0x00003fff -_0800F56C: .4byte 0x000001ff -_0800F570: .4byte 0x00000fff -_0800F574: - ldrh r2, [r5] - ldr r1, _0800F5F0 - adds r0, r1, 0 - ands r0, r2 - strh r0, [r5] - movs r2, 0x80 - lsls r2, 8 - ldrh r0, [r5, 0x2] - ands r1, r0 - orrs r1, r2 - ldr r0, _0800F5F4 - ands r4, r0 - movs r0, 0xFE - lsls r0, 8 - ands r1, r0 - orrs r1, r4 - strh r1, [r5, 0x2] - ldr r1, _0800F5F8 - ands r1, r3 -_0800F59A: - lsls r1, 4 - ldrh r2, [r5, 0x6] - movs r0, 0xF - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x6] -_0800F5A6: - ldr r0, _0800F5FC - ands r7, r0 - ldrh r1, [r5, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r7 - movs r1, 0xF - ldr r3, [sp, 0x4] - ands r1, r3 - lsls r1, 12 - ldr r2, _0800F5F8 - ands r0, r2 - orrs r0, r1 - strh r0, [r5, 0x4] - mov r4, r12 - movs r6, 0x2 - ldrsh r1, [r4, r6] - mov r2, r8 - movs r3, 0x2 - ldrsh r0, [r2, r3] - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - adds r1, 0x1 - adds r0, r5, 0 - movs r2, 0 - movs r3, 0 - bl AddSprite -_0800F5E4: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F5F0: .4byte 0x00003fff -_0800F5F4: .4byte 0x000001ff -_0800F5F8: .4byte 0x00000fff -_0800F5FC: .4byte 0x000003ff - thumb_func_end DrawStatusSprite - - thumb_func_start LoadStatusGraphics -LoadStatusGraphics: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - ldr r0, _0800F660 - adds r1, r0 - ldr r7, [r1, 0x14] - ldr r3, [r1, 0x10] - ldr r2, [r1] - ldr r0, [r1, 0x4] - muls r0, r2 - lsls r4, r0, 5 - mov r8, r4 - ldr r0, [r1, 0x8] - ldr r1, _0800F664 - adds r0, r1 - lsls r5, r0, 5 - adds r6, r5, 0 - ldr r0, _0800F668 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - bge _0800F63C - adds r0, 0x3 -_0800F63C: - asrs r0, 2 - adds r1, r3, 0 - bl __modsi3 - muls r0, r4 - ldr r1, _0800F66C - adds r0, r1 - adds r1, r7, r0 - mov r2, r9 - cmp r2, 0 - beq _0800F674 - ldr r2, _0800F670 - adds r0, r5, r2 - adds r2, r4, 0 - bl sub_80098BC - b _0800F67E - .align 2, 0 -_0800F660: .4byte gStatusGraphics -_0800F664: .4byte 0x0000032b -_0800F668: .4byte gDungeonPokemonSprites -_0800F66C: .4byte gStatusGraphics4bpp -_0800F670: .4byte 0x06010000 -_0800F674: - ldr r2, _0800F68C - adds r0, r6, r2 - mov r2, r8 - bl CpuCopy -_0800F67E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F68C: .4byte 0x06010000 - thumb_func_end LoadStatusGraphics - - thumb_func_start InitDungeonPokemonSprites -InitDungeonPokemonSprites: - push {r4,r5,lr} - ldr r5, _0800F738 - ldr r0, [r5] - cmp r0, 0 - bne _0800F6AC - ldr r4, _0800F73C - adds r0, r4, 0 - movs r1, 0xC - bl MemoryAlloc - str r0, [r5] - adds r1, r4, 0 - bl MemoryClear8 -_0800F6AC: - ldr r1, [r5] - movs r0, 0 - str r0, [r1] - movs r0, 0x1 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x2 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x3 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x4 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x5 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x6 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x7 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x8 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x9 - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0xA - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0xB - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0xC - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0xD - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0xE - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0xF - movs r1, 0 - bl LoadStatusGraphics - movs r0, 0x10 - movs r1, 0 - bl LoadStatusGraphics - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800F738: .4byte gDungeonPokemonSprites -_0800F73C: .4byte 0x00000584 - thumb_func_end InitDungeonPokemonSprites - - thumb_func_start FreeDungeonPokemonSprites -FreeDungeonPokemonSprites: - push {r4,lr} - ldr r4, _0800F758 - ldr r0, [r4] - cmp r0, 0 - beq _0800F752 - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0800F752: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800F758: .4byte gDungeonPokemonSprites - thumb_func_end FreeDungeonPokemonSprites - - thumb_func_start UpdateDungeonPokemonSprite - @ void UpdateDungeonPokemonSprite(int id, short species, int status, char visible) -UpdateDungeonPokemonSprite: - push {r4-r7,lr} - adds r4, r0, 0 - adds r7, r2, 0 - lsls r1, 16 - asrs r5, r1, 16 - lsls r3, 24 - lsrs r6, r3, 24 - ldr r0, _0800F790 - ldr r0, [r0] - cmp r0, 0 - beq _0800F788 - adds r0, r4, 0 - bl GetDungeonPokemonSprite - cmp r0, 0 - beq _0800F788 - movs r1, 0 - strh r5, [r0, 0x8] - str r7, [r0, 0xC] - strb r6, [r0, 0x10] - adds r0, 0x38 - strb r1, [r0] -_0800F788: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F790: .4byte gDungeonPokemonSprites - thumb_func_end UpdateDungeonPokemonSprite - - thumb_func_start sub_800F794 -sub_800F794: - push {r4-r6,lr} - adds r1, r0, 0 - adds r4, r2, 0 - adds r5, r3, 0 - ldr r6, [sp, 0x10] - ldr r0, _0800F7CC - ldr r0, [r0] - cmp r0, 0 - beq _0800F7C6 - adds r0, r1, 0 - bl GetDungeonPokemonSprite - adds r2, r0, 0 - cmp r2, 0 - beq _0800F7C6 - adds r1, r2, 0 - adds r1, 0x38 - movs r0, 0x1 - strb r0, [r1] - strh r4, [r2, 0x3C] - strh r5, [r2, 0x3E] - ldr r0, [r6] - str r0, [r2, 0x20] - ldr r0, [r6, 0xC] - str r0, [r2, 0x24] -_0800F7C6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800F7CC: .4byte gDungeonPokemonSprites - thumb_func_end sub_800F794 - - thumb_func_start sub_800F7D0 -sub_800F7D0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - ldr r0, _0800F800 - ldr r0, [r0] - cmp r0, 0 - beq _0800F8C0 - ldr r1, [r0] - adds r0, r1, 0 - cmp r1, 0 - bge _0800F7EA - adds r0, r1, 0x3 -_0800F7EA: - asrs r0, 2 - lsls r0, 2 - subs r0, r1, r0 - cmp r0, 0x1 - beq _0800F82A - cmp r0, 0x1 - bgt _0800F804 - cmp r0, 0 - beq _0800F80E - b _0800F888 - .align 2, 0 -_0800F800: .4byte gDungeonPokemonSprites -_0800F804: - cmp r0, 0x2 - beq _0800F846 - cmp r0, 0x3 - beq _0800F868 - b _0800F888 -_0800F80E: - movs r0, 0x1 - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0x2 - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0x3 - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0x4 - b _0800F860 -_0800F82A: - movs r0, 0x5 - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0x6 - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0x7 - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0x8 - b _0800F860 -_0800F846: - movs r0, 0x9 - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0xA - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0xB - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0xC -_0800F860: - movs r1, 0x1 - bl LoadStatusGraphics - b _0800F888 -_0800F868: - movs r0, 0xD - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0xE - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0xF - movs r1, 0x1 - bl LoadStatusGraphics - movs r0, 0x10 - movs r1, 0x1 - bl LoadStatusGraphics -_0800F888: - movs r5, 0 - movs r6, 0x4 -_0800F88C: - ldr r7, _0800F8CC - ldr r4, [r7] - lsls r0, r5, 6 - adds r0, r4, r0 - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _0800F8B0 - adds r4, r6 - adds r0, r4, 0 - movs r1, 0 - mov r2, r8 - bl sub_800F2EC - adds r0, r4, 0 - movs r1, 0x1 - mov r2, r8 - bl sub_800F2EC -_0800F8B0: - adds r6, 0x40 - adds r5, 0x1 - cmp r5, 0x15 - ble _0800F88C - ldr r1, [r7] - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] -_0800F8C0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F8CC: .4byte gDungeonPokemonSprites - thumb_func_end sub_800F7D0 - - thumb_func_start AddPokemonDungeonSprite - @ void AddPokemonDungeonSprite(int id, short species, Position *pos, ?) -AddPokemonDungeonSprite: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - adds r7, r2, 0 - mov r8, r3 - lsls r1, 16 - asrs r6, r1, 16 - ldr r0, _0800F92C - ldr r0, [r0] - cmp r0, 0 - beq _0800F920 - adds r0, r5, 0 - bl GetDungeonPokemonSprite - adds r4, r0, 0 - cmp r4, 0 - bne _0800F920 - bl NewDungeonPokemonSprite - adds r1, r0, 0 - cmp r1, 0 - beq _0800F920 - movs r0, 0x1 - strb r0, [r1] - str r5, [r1, 0x4] - strh r6, [r1, 0x8] - str r4, [r1, 0xC] - ldr r0, [r7] - str r0, [r1, 0x14] - mov r0, r8 - strb r0, [r1, 0x11] - ldr r0, _0800F930 - ldr r0, [r0] - str r0, [r1, 0x1C] - str r0, [r1, 0x18] - str r4, [r1, 0x28] - str r4, [r1, 0x2C] - str r4, [r1, 0x30] - str r4, [r1, 0x34] -_0800F920: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F92C: .4byte gDungeonPokemonSprites -_0800F930: .4byte gUnknown_80D3564 - thumb_func_end AddPokemonDungeonSprite - - thumb_func_start DeletePokemonDungeonSprite - @ void DeletePokemonDungeonSprite(int id) -DeletePokemonDungeonSprite: - push {lr} - adds r1, r0, 0 - ldr r0, _0800F954 - ldr r0, [r0] - cmp r0, 0 - beq _0800F950 - adds r0, r1, 0 - bl GetDungeonPokemonSprite - cmp r0, 0 - beq _0800F950 - movs r1, 0x40 - bl MemoryClear8 -_0800F950: - pop {r0} - bx r0 - .align 2, 0 -_0800F954: .4byte gDungeonPokemonSprites - thumb_func_end DeletePokemonDungeonSprite - -@ https://decomp.me/scratch/0YVWD (kermalis 100%) `void sub_800F958(s32 dungeonSpriteID, Position *pos, Position *statusOffsets, u32 a3)` - thumb_func_start sub_800F958 -sub_800F958: - push {r4-r7,lr} - adds r4, r0, 0 - adds r6, r1, 0 - adds r5, r2, 0 - adds r7, r3, 0 - ldr r0, _0800F98C - ldr r0, [r0] - cmp r0, 0 - beq _0800F984 - adds r0, r4, 0 - bl GetDungeonPokemonSprite - adds r3, r0, 0 - cmp r3, 0 - beq _0800F984 - ldr r0, [r6] - str r0, [r3, 0x14] - strb r7, [r3, 0x11] - ldr r0, [r5] - str r0, [r3, 0x18] - ldr r0, [r5, 0xC] - str r0, [r3, 0x1C] -_0800F984: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F98C: .4byte gDungeonPokemonSprites - thumb_func_end sub_800F958 - - thumb_func_start sub_800F990 -sub_800F990: - push {r4-r7,lr} - sub sp, 0x8 - adds r6, r0, 0 - ldr r4, _0800FA20 - ldr r0, [r6, 0x8] - str r0, [r4] - ldr r1, _0800FA24 - ldr r2, _0800FA28 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x14 - bl sub_80095CC - movs r0, 0x2 - bl xxx_update_some_bg_tiles - ldr r1, [r4] - ldr r0, _0800FA2C - adds r2, r1, r0 - ldr r0, _0800FA30 - str r0, [r2] - ldrb r0, [r6, 0x5] - ldr r2, _0800FA34 - adds r1, r2 - movs r5, 0 - strb r0, [r1] - bl sub_8010DA4 - ldr r0, [r4] - ldr r2, _0800FA38 - adds r1, r0, r2 - movs r2, 0x1 - negs r2, r2 - str r2, [r1] - ldr r1, _0800FA3C - adds r0, r1 - str r2, [r0] - ldrb r0, [r6, 0x4] - bl sub_800FC5C - ldr r0, [r4] - ldr r2, _0800FA40 - adds r1, r0, r2 - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - ldr r1, _0800FA44 - movs r0, 0xFF - strb r0, [r1] - ldr r0, _0800FA48 - strb r5, [r0] - bl sub_8011760 - add r7, sp, 0x4 -_0800FA00: - movs r5, 0 - str r5, [sp] - str r5, [sp, 0x4] - mov r0, sp - adds r1, r7, 0 - bl sub_800FAA8 - cmp r0, 0x1 - bne _0800FA4C - ldr r0, [sp] - ldr r1, [sp, 0x4] - movs r2, 0x32 - bl sub_80100C0 - b _0800FA00 - .align 2, 0 -_0800FA20: .4byte gUnknown_203B0E4 -_0800FA24: .4byte gUnknown_2026E4E -_0800FA28: .4byte 0x00001010 -_0800FA2C: .4byte 0x00004014 -_0800FA30: .4byte gFriendAreaLocations -_0800FA34: .4byte 0x00004a2c -_0800FA38: .4byte 0x00004a28 -_0800FA3C: .4byte 0x00004a1c -_0800FA40: .4byte 0x00004a20 -_0800FA44: .4byte gUnknown_202DE18 -_0800FA48: .4byte gUnknown_202DE19 -_0800FA4C: - cmp r0, 0x2 - bne _0800FA6C - bl sub_800FB6C - lsls r0, 24 - cmp r0, 0 - beq _0800FA00 - ldr r0, [r4] - ldr r1, _0800FA68 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r6, 0xC] - b _0800FA92 - .align 2, 0 -_0800FA68: .4byte 0x00004df4 -_0800FA6C: - cmp r0, 0x3 - bne _0800FA00 - ldr r0, [r4] - ldr r2, _0800FA8C - adds r1, r0, r2 - adds r2, 0x8 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - cmp r1, r0 - beq _0800FA90 - movs r1, 0 - movs r2, 0xA - bl sub_80100C0 - b _0800FA00 - .align 2, 0 -_0800FA8C: .4byte 0x00004a18 -_0800FA90: - strb r5, [r6, 0xC] -_0800FA92: - bl sub_800FC28 - bl sub_8010EF0 - bl nullsub_16 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800F990 - - thumb_func_start sub_800FAA8 -sub_800FAA8: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - mov r9, r1 - movs r5, 0 - bl sub_8011300 - bl sub_8011398 -_0800FABE: - bl sub_801169C - bl sub_8010014 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xFF - beq _0800FB1C - ldr r6, _0800FB50 - ldr r2, [r6] - ldr r1, _0800FB54 - adds r0, r2, r1 - ldr r4, [r0] - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r0, r2 - lsls r1, r3, 1 - ldr r7, _0800FB58 - adds r0, r7 - adds r1, r0, r1 - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0 - blt _0800FB1C - adds r1, r0, 0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r7, _0800FB5C - adds r0, r7 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FB1C - movs r5, 0x1 - mov r0, r8 - str r1, [r0] - mov r1, r9 - str r3, [r1] - ldr r1, [r6] - ldr r2, _0800FB60 - adds r0, r1, r2 - str r3, [r0] - ldr r7, _0800FB64 - adds r1, r7 - str r4, [r1] -_0800FB1C: - ldr r4, _0800FB68 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0800FB2E - bl sub_80117D0 - movs r5, 0x2 -_0800FB2E: - ldrh r1, [r4, 0x2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800FB3E - bl sub_80117E4 - movs r5, 0x3 -_0800FB3E: - cmp r5, 0 - beq _0800FABE - adds r0, r5, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800FB50: .4byte gUnknown_203B0E4 -_0800FB54: .4byte 0x00004a18 -_0800FB58: .4byte 0x0000401a -_0800FB5C: .4byte 0x00004018 -_0800FB60: .4byte 0x00004a28 -_0800FB64: .4byte 0x00004a1c -_0800FB68: .4byte gRealInputs - thumb_func_end sub_800FAA8 - - thumb_func_start sub_800FB6C -sub_800FB6C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0 - mov r8, r0 - bl sub_8011494 - ldr r7, _0800FBE8 - ldr r6, _0800FBEC -_0800FB7E: - ldr r5, [r7] - ldr r1, _0800FBF0 - adds r4, r5, r1 - adds r0, r4, 0 - bl AddMenuCursorSprite - bl sub_801169C - ldrh r1, [r6, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0800FBA2 - adds r0, r4, 0 - bl MoveMenuCursorDown - bl sub_80117F8 -_0800FBA2: - ldrh r1, [r6, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800FBB6 - adds r0, r4, 0 - bl MoveMenuCursorUp - bl sub_80117F8 -_0800FBB6: - ldrh r1, [r6, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0800FBCA - ldr r2, _0800FBF4 - adds r0, r5, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FC00 -_0800FBCA: - bl sub_80117D0 - ldr r1, [r7] - movs r3, 0x18 - ldrsh r2, [r4, r3] - ldr r3, _0800FBF8 - adds r0, r1, r3 - adds r0, r2 - ldrb r0, [r0] - ldr r2, _0800FBFC - adds r1, r2 - strb r0, [r1] - movs r3, 0x1 - mov r8, r3 - b _0800FC16 - .align 2, 0 -_0800FBE8: .4byte gUnknown_203B0E4 -_0800FBEC: .4byte gRealInputs -_0800FBF0: .4byte 0x00004dfc -_0800FBF4: .4byte 0x00004e25 -_0800FBF8: .4byte 0x00004dec -_0800FBFC: .4byte 0x00004df4 -_0800FC00: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0800FC12 - ldr r1, _0800FC24 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FB7E -_0800FC12: - bl sub_80117E4 -_0800FC16: - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800FC24: .4byte 0x00004e26 - thumb_func_end sub_800FB6C - - thumb_func_start sub_800FC28 -sub_800FC28: - push {r4,r5,lr} - bl sub_8011168 - bl sub_80117AC - ldr r5, _0800FC54 - movs r4, 0x3B -_0800FC36: - ldr r1, [r5] - ldr r0, _0800FC58 - adds r1, r0 - ldr r0, [r1] - subs r0, 0x2 - str r0, [r1] - bl sub_801169C - subs r4, 0x1 - cmp r4, 0 - bge _0800FC36 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800FC54: .4byte gUnknown_203B0E4 -_0800FC58: .4byte 0x00004dcc - thumb_func_end sub_800FC28 - - thumb_func_start sub_800FC5C -sub_800FC5C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x40 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - movs r0, 0 - str r0, [sp, 0x18] - mov r8, r0 - ldr r1, _0800FD1C - mov r9, r1 - ldr r2, _0800FD20 - str r2, [sp, 0x38] -_0800FC7C: - movs r7, 0 - movs r3, 0 - mov r10, r3 - mov r4, r9 - ldr r0, [r4] - ldr r1, [sp, 0x38] - adds r6, r0, r1 - ldr r2, _0800FD24 - adds r0, r2 - mov r3, r8 - lsls r1, r3, 5 - ldr r0, [r0] - adds r2, r0, r1 - adds r1, r6, 0x2 - movs r5, 0x7 -_0800FC9A: - ldrh r0, [r1] - ldr r4, _0800FD28 - orrs r0, r4 - strh r0, [r1] - adds r1, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _0800FC9A - movs r5, 0 - adds r1, r2, 0 - adds r1, 0x8 -_0800FCB0: - adds r4, r1, r5 - ldrb r0, [r4] - str r1, [sp, 0x3C] - bl sub_800FFE8 - lsls r0, 24 - ldr r1, [sp, 0x3C] - cmp r0, 0 - beq _0800FCE4 - ldrb r0, [r4] - ldr r7, [sp, 0x14] - cmp r0, r7 - bne _0800FCCE - mov r2, r8 - str r2, [sp, 0x18] -_0800FCCE: - cmp r0, 0 - bne _0800FCE2 - mov r3, r9 - ldr r0, [r3] - ldr r4, _0800FD2C - adds r0, r4 - mov r7, r8 - str r7, [r0] - movs r0, 0x1 - mov r10, r0 -_0800FCE2: - movs r7, 0x1 -_0800FCE4: - adds r5, 0x1 - cmp r5, 0x7 - ble _0800FCB0 - cmp r7, 0 - beq _0800FD30 - movs r5, 0 - movs r4, 0x1 - strb r4, [r6] - adds r3, r6, 0 - adds r3, 0x14 - mov r1, r9 - ldr r0, [r1] - ldr r1, [r0, 0x8] - movs r2, 0x1 - mov r7, r10 - cmp r7, 0 - beq _0800FD08 - movs r2, 0xC -_0800FD08: - movs r0, 0x40 - str r0, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r3, 0 - movs r3, 0 - bl sub_80053AC - b _0800FD32 - .align 2, 0 -_0800FD1C: .4byte gUnknown_203B0E4 -_0800FD20: .4byte 0x00004018 -_0800FD24: .4byte 0x00004014 -_0800FD28: .4byte 0x0000ffff -_0800FD2C: .4byte 0x00004a24 -_0800FD30: - strb r7, [r6] -_0800FD32: - ldr r0, [sp, 0x38] - adds r0, 0x50 - str r0, [sp, 0x38] - movs r1, 0x1 - add r8, r1 - mov r2, r8 - cmp r2, 0x1F - ble _0800FC7C - movs r3, 0 - mov r8, r3 - ldr r4, [sp, 0x18] - lsls r4, 5 - str r4, [sp, 0x34] -_0800FD4C: - mov r7, r8 - lsls r0, r7, 2 - add r0, r8 - lsls r0, 4 - ldr r1, _0800FEDC - adds r0, r1 - ldr r2, _0800FEE0 - ldr r1, [r2] - adds r3, r1, r0 - ldr r4, _0800FEE4 - adds r1, r4 - lsls r2, r7, 5 - ldr r0, [r1] - adds r0, r2 - str r0, [sp, 0x1C] - ldrb r0, [r3] - adds r7, 0x1 - str r7, [sp, 0x28] - cmp r0, 0 - bne _0800FD76 - b _0800FF56 -_0800FD76: - movs r5, 0 - adds r3, 0x2 - mov r10, r3 - ldr r4, [sp, 0x1C] - adds r4, 0x10 - ldr r6, _0800FEE0 -_0800FD82: - lsls r0, r5, 1 - mov r1, r10 - adds r2, r1, r0 - ldr r1, _0800FEE8 - strh r1, [r2] - adds r1, r4, r0 - ldrh r3, [r1] - movs r7, 0 - ldrsh r0, [r1, r7] - cmp r0, 0 - blt _0800FDB0 - adds r1, r0, 0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r1, _0800FEDC - adds r0, r1 - ldr r1, [r6] - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0800FDB0 - strh r3, [r2] -_0800FDB0: - adds r5, 0x1 - cmp r5, 0x7 - ble _0800FD82 - ldr r3, _0800FEE0 - ldr r2, [r3] - ldr r4, _0800FEEC - adds r0, r2, r4 - ldr r1, [r0] - ldr r7, _0800FEF0 - adds r0, r2, r7 - ldr r3, [r0] - cmp r1, 0 - blt _0800FDEC - cmp r3, 0 - blt _0800FDEC - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 4 - ldr r4, _0800FEDC - adds r0, r4 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _0800FDEC - adds r1, 0x4 - movs r0, 0x7 - ands r1, r0 - lsls r0, r1, 1 - add r0, r10 - strh r3, [r0] -_0800FDEC: - movs r5, 0 -_0800FDEE: - movs r7, 0x1 - negs r7, r7 - str r7, [sp, 0x20] - ldr r0, _0800FEF4 - str r0, [sp, 0x24] - lsls r0, r5, 1 - mov r2, r10 - adds r1, r2, r0 - movs r3, 0 - ldrsh r1, [r1, r3] - str r0, [sp, 0x30] - adds r4, r5, 0x1 - str r4, [sp, 0x2C] - cmp r1, 0 - blt _0800FE0E - b _0800FF4E -_0800FE0E: - movs r6, 0 -_0800FE10: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 4 - ldr r7, _0800FEDC - adds r0, r7 - ldr r2, _0800FEE0 - ldr r1, [r2] - adds r3, r1, r0 - ldr r4, _0800FEE4 - adds r1, r4 - lsls r2, r6, 5 - ldr r0, [r1] - adds r2, r0, r2 - adds r7, r6, 0x1 - mov r9, r7 - cmp r6, r8 - bne _0800FE34 - b _0800FF3A -_0800FE34: - ldrb r0, [r3] - cmp r0, 0 - bne _0800FE3C - b _0800FF3A -_0800FE3C: - movs r1, 0x4 - ldrsh r0, [r2, r1] - ldr r3, [sp, 0x1C] - movs r4, 0x4 - ldrsh r1, [r3, r4] - subs r0, r1 - lsls r0, 8 - str r0, [sp, 0xC] - movs r7, 0x6 - ldrsh r0, [r2, r7] - movs r2, 0x6 - ldrsh r1, [r3, r2] - subs r0, r1 - lsls r0, 8 - str r0, [sp, 0x10] - add r0, sp, 0xC - bl sub_800A0B0 - adds r2, r0, 0 - ldr r0, [sp, 0xC] - cmp r0, 0 - bge _0800FE6A - adds r0, 0x3 -_0800FE6A: - asrs r1, r0, 2 - str r1, [sp, 0xC] - ldr r0, [sp, 0x10] - cmp r0, 0 - bge _0800FE76 - adds r0, 0x3 -_0800FE76: - asrs r0, 2 - str r0, [sp, 0x10] - cmp r1, 0 - bge _0800FE80 - adds r1, 0xFF -_0800FE80: - asrs r1, 8 - str r1, [sp, 0xC] - cmp r0, 0 - bge _0800FE8A - adds r0, 0xFF -_0800FE8A: - asrs r0, 8 - str r0, [sp, 0x10] - cmp r1, 0 - bne _0800FE96 - movs r0, 0x1 - str r0, [sp, 0xC] -_0800FE96: - ldr r0, [sp, 0x10] - cmp r0, 0 - bne _0800FEA0 - movs r0, 0x1 - str r0, [sp, 0x10] -_0800FEA0: - movs r7, 0 - cmp r5, 0x2 - bne _0800FF04 - ldr r1, _0800FEF8 - ldr r4, _0800FEFC - movs r3, 0x8 - cmp r2, r1 - ble _0800FEB8 - ldr r0, _0800FF00 -_0800FEB2: - adds r2, r0 - cmp r2, r1 - bgt _0800FEB2 -_0800FEB8: - cmp r2, 0 - bge _0800FEC6 - movs r0, 0x80 - lsls r0, 5 -_0800FEC0: - adds r2, r0 - cmp r2, 0 - blt _0800FEC0 -_0800FEC6: - adds r1, r3, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, r2 - blt _0800FF20 - movs r4, 0x2 - ldrsh r0, [r1, r4] - cmp r0, r2 - ble _0800FF1C - b _0800FF20 - .align 2, 0 -_0800FEDC: .4byte 0x00004018 -_0800FEE0: .4byte gUnknown_203B0E4 -_0800FEE4: .4byte 0x00004014 -_0800FEE8: .4byte 0x0000ffff -_0800FEEC: .4byte 0x00004a28 -_0800FEF0: .4byte 0x00004a1c -_0800FEF4: .4byte 0x000f423f -_0800FEF8: .4byte 0x00000fff -_0800FEFC: .4byte gUnknown_80D3EBC -_0800FF00: .4byte 0xfffff000 -_0800FF04: - ldr r0, _0800FFC8 - lsls r1, r5, 2 - adds r1, r0 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, r2 - bgt _0800FF1C - movs r4, 0x2 - ldrsh r0, [r1, r4] - cmp r0, r2 - ble _0800FF1C - movs r7, 0x1 -_0800FF1C: - cmp r7, 0 - beq _0800FF3A -_0800FF20: - ldr r0, [sp, 0xC] - adds r1, r0, 0 - muls r1, r0 - ldr r0, [sp, 0x10] - adds r7, r0, 0 - muls r7, r0 - adds r0, r7, 0 - adds r1, r0 - ldr r0, [sp, 0x24] - cmp r0, r1 - ble _0800FF3A - str r1, [sp, 0x24] - str r6, [sp, 0x20] -_0800FF3A: - mov r6, r9 - cmp r6, 0x1F - bgt _0800FF42 - b _0800FE10 -_0800FF42: - ldr r1, [sp, 0x20] - cmp r1, 0 - blt _0800FF4E - ldr r0, [sp, 0x30] - add r0, r10 - strh r1, [r0] -_0800FF4E: - ldr r5, [sp, 0x2C] - cmp r5, 0x7 - bgt _0800FF56 - b _0800FDEE -_0800FF56: - ldr r3, [sp, 0x28] - mov r8, r3 - cmp r3, 0x1F - bgt _0800FF60 - b _0800FD4C -_0800FF60: - ldr r4, _0800FFCC - ldr r1, [r4] - ldr r7, _0800FFD0 - adds r0, r1, r7 - ldr r1, [r1, 0xC] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl sub_80053AC - ldr r2, [r4] - ldr r1, _0800FFD4 - adds r0, r2, r1 - ldr r3, [sp, 0x18] - str r3, [r0] - ldr r4, _0800FFD8 - adds r1, r2, r4 - ldr r7, _0800FFDC - adds r0, r2, r7 - ldr r0, [r0] - ldr r3, [sp, 0x34] - adds r0, r3, r0 - ldr r0, [r0, 0x4] - str r0, [r1] - ldrh r0, [r1] - subs r0, 0x78 - subs r4, 0x4 - adds r1, r2, r4 - strh r0, [r1] - ldr r7, _0800FFE0 - adds r0, r2, r7 - ldrh r0, [r0] - subs r0, 0x50 - ldr r1, _0800FFE4 - adds r2, r1 - strh r0, [r2] - bl sub_8011240 - bl sub_80110B0 - add sp, 0x40 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800FFC8: .4byte gUnknown_80D3EBC -_0800FFCC: .4byte gUnknown_203B0E4 -_0800FFD0: .4byte 0x00004c10 -_0800FFD4: .4byte 0x00004a18 -_0800FFD8: .4byte 0x00004dd8 -_0800FFDC: .4byte 0x00004014 -_0800FFE0: .4byte 0x00004dda -_0800FFE4: .4byte 0x00004dd6 - thumb_func_end sub_800FC5C - - thumb_func_start sub_800FFE8 -sub_800FFE8: - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x39 - bhi _08010004 - cmp r0, 0 - beq _0801000C - ldr r0, _08010008 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0801000C -_08010004: - movs r0, 0 - b _0801000E - .align 2, 0 -_08010008: .4byte gFriendAreas -_0801000C: - movs r0, 0x1 -_0801000E: - pop {r1} - bx r1 - thumb_func_end sub_800FFE8 - - thumb_func_start sub_8010014 -sub_8010014: - push {r4,r5,lr} - sub sp, 0x20 - ldr r1, _08010094 - mov r0, sp - movs r2, 0x10 - bl memcpy - add r4, sp, 0x10 - ldr r1, _08010098 - adds r0, r4, 0 - movs r2, 0x10 - bl memcpy - movs r2, 0 - ldr r0, _0801009C - ldrh r3, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r3 - mov r5, sp - cmp r0, 0 - beq _08010042 - adds r5, r4, 0 -_08010042: - adds r1, r3, 0 - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0801004E - movs r2, 0x1 -_0801004E: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0801005A - movs r0, 0x2 - orrs r2, r0 -_0801005A: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08010066 - movs r0, 0x4 - orrs r2, r0 -_08010066: - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - beq _08010072 - movs r0, 0x8 - orrs r2, r0 -_08010072: - ldr r3, _080100A0 - adds r2, r5, r2 - ldrb r1, [r2] - ldrb r0, [r3] - cmp r0, r1 - bne _080100A8 - ldr r1, _080100A4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bls _080100B0 - ldrb r0, [r2] - b _080100B2 - .align 2, 0 -_08010094: .4byte gUnknown_80D3EDC -_08010098: .4byte gUnknown_80D3EEC -_0801009C: .4byte gRealInputs -_080100A0: .4byte gUnknown_202DE18 -_080100A4: .4byte gUnknown_202DE19 -_080100A8: - strb r1, [r3] - ldr r1, _080100BC - movs r0, 0 - strb r0, [r1] -_080100B0: - movs r0, 0xFF -_080100B2: - add sp, 0x20 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080100BC: .4byte gUnknown_202DE19 - thumb_func_end sub_8010014 - - thumb_func_start sub_80100C0 -sub_80100C0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - str r0, [sp, 0xC] - mov r8, r2 - ldr r4, _080101E0 - ldr r2, [r4] - ldr r3, _080101E4 - adds r0, r2, r3 - ldr r2, [r2, 0xC] - movs r3, 0x7 - ands r3, r1 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r1, 0x1 - str r1, [sp, 0x8] - adds r1, r2, 0 - movs r2, 0 - bl sub_80053AC - bl sub_8011168 - ldr r0, [r4] - ldr r2, _080101E8 - adds r1, r0, r2 - ldr r1, [r1] - ldr r3, _080101EC - adds r0, r3 - ldr r2, [r0] - lsls r1, 5 - adds r1, r2 - ldr r1, [r1, 0x4] - mov r9, r1 - ldr r1, [sp, 0xC] - lsls r0, r1, 5 - adds r0, r2 - ldr r0, [r0, 0x4] - str r0, [sp, 0x10] - bl sub_80117F8 - movs r7, 0 - cmp r7, r8 - bge _0801018A - ldr r2, [sp, 0x10] - lsls r1, r2, 16 - asrs r1, 16 - mov r3, r9 - lsls r0, r3, 16 - asrs r0, 16 - subs r1, r0 - str r1, [sp, 0x14] - movs r0, 0 - mov r10, r0 -_08010132: - ldr r0, _080101E0 - ldr r6, [r0] - lsls r5, r7, 8 - mov r0, r10 - mov r1, r8 - bl __divsi3 - cmp r0, 0 - bge _08010146 - adds r0, 0xFF -_08010146: - asrs r0, 8 - add r0, r9 - ldr r2, _080101F0 - adds r1, r6, r2 - strh r0, [r1] - ldr r3, [sp, 0x10] - asrs r0, r3, 16 - mov r1, r9 - asrs r4, r1, 16 - subs r0, r4 - muls r0, r5 - mov r1, r8 - bl __divsi3 - cmp r0, 0 - bge _08010168 - adds r0, 0xFF -_08010168: - asrs r0, 8 - adds r0, r4 - ldr r2, _080101F4 - adds r1, r6, r2 - strh r0, [r1] - bl sub_8011240 - bl sub_80110B0 - bl sub_801169C - ldr r3, [sp, 0x14] - lsls r0, r3, 8 - add r10, r0 - adds r7, 0x1 - cmp r7, r8 - blt _08010132 -_0801018A: - ldr r4, _080101E0 - ldr r0, [r4] - ldr r2, _080101E8 - adds r1, r0, r2 - ldr r3, [sp, 0xC] - str r3, [r1] - ldr r1, _080101F0 - adds r2, r0, r1 - ldr r3, _080101EC - adds r0, r3 - ldr r1, [r0] - ldr r3, [sp, 0xC] - lsls r0, r3, 5 - adds r0, r1 - ldr r0, [r0, 0x4] - str r0, [r2] - bl sub_8011240 - bl sub_80110B0 - bl sub_801169C - ldr r1, [r4] - ldr r2, _080101E4 - adds r0, r1, r2 - ldr r1, [r1, 0xC] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl sub_80053AC - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080101E0: .4byte gUnknown_203B0E4 -_080101E4: .4byte 0x00004c10 -_080101E8: .4byte 0x00004a18 -_080101EC: .4byte 0x00004014 -_080101F0: .4byte 0x00004dd8 -_080101F4: .4byte 0x00004dda - thumb_func_end sub_80100C0 - - thumb_func_start sub_80101F8 -sub_80101F8: - push {lr} - adds r3, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - bne _08010218 - ldr r0, _08010214 - adds r2, r3, 0 - adds r2, 0x50 - adds r1, r3, 0 - movs r3, 0 - bl xxx_format_string - b _08010220 - .align 2, 0 -_08010214: .4byte gUnknown_80D3EFC -_08010218: - adds r0, r3, 0 - movs r2, 0 - bl sub_8092578 -_08010220: - pop {r0} - bx r0 - thumb_func_end sub_80101F8 - - thumb_func_start sub_8010224 -sub_8010224: - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r0, _08010248 - adds r4, r0, 0x4 - adds r5, r0, 0 - adds r5, 0x8 -_08010234: - movs r2, 0 - adds r3, r5, 0 -_08010238: - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, r6 - bne _0801024C - ldrh r0, [r4] - strh r0, [r1] - ldrh r0, [r4, 0x2] - b _08010260 - .align 2, 0 -_08010248: .4byte gFriendAreaLocations -_0801024C: - adds r2, 0x1 - cmp r2, 0x7 - ble _08010238 - adds r4, 0x20 - adds r5, 0x20 - adds r7, 0x1 - cmp r7, 0x1F - ble _08010234 - movs r0, 0 - strh r0, [r1] -_08010260: - strh r0, [r1, 0x2] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8010224 - - thumb_func_start sub_8010268 -sub_8010268: - push {r4-r6,lr} - ldr r4, _080102D4 - add sp, r4 - adds r5, r0, 0 - ldr r1, _080102D8 - adds r0, 0xB0 - ldr r0, [r0] - str r0, [r1] - ldr r1, _080102DC - ldr r2, _080102E0 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0x14 - bl sub_80095CC - movs r0, 0x2 - bl xxx_update_some_bg_tiles - bl sub_801059C - adds r0, r5, 0x4 - bl sub_8010494 - bl sub_801178C - movs r4, 0x3B -_0801029E: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _0801029E - ldrb r0, [r5, 0x4] - ldrb r1, [r5, 0x8] - bl sub_8010344 - adds r0, r5, 0 - adds r0, 0x8 - bl sub_8010B74 - adds r6, r5, 0 - adds r6, 0x70 - movs r4, 0x3B -_080102BE: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _080102BE - ldrb r0, [r5, 0x14] - cmp r0, 0 - beq _080102E4 - movs r0, 0x20 - ldrsh r1, [r5, r0] - b _080102E6 - .align 2, 0 -_080102D4: .4byte 0xfffffc14 -_080102D8: .4byte gUnknown_203B0E8 -_080102DC: .4byte gUnknown_2026E4E -_080102E0: .4byte 0x00000a06 -_080102E4: - movs r1, 0 -_080102E6: - ldrb r0, [r5, 0x8] - ldrb r3, [r6] - movs r4, 0 - str r4, [sp] - add r2, sp, 0x4 - bl sub_809034C - cmp r0, 0 - beq _0801031C - cmp r0, 0x1 - bne _0801030A - add r0, sp, 0x4 - bl sub_8010C10 - adds r0, r5, 0 - adds r0, 0xB4 - strb r4, [r0] - b _0801032C -_0801030A: - cmp r0, 0x2 - bne _0801032C - add r0, sp, 0x4 - bl sub_8010C58 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08010326 -_0801031C: - adds r1, r5, 0 - adds r1, 0xB4 - movs r0, 0x1 - strb r0, [r1] - b _0801032C -_08010326: - adds r0, r5, 0 - adds r0, 0xB4 - strb r1, [r0] -_0801032C: - bl sub_801091C - bl sub_801073C - bl nullsub_16 - movs r3, 0xFB - lsls r3, 2 - add sp, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8010268 - - thumb_func_start sub_8010344 -sub_8010344: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - lsls r0, 24 - lsls r1, 24 - ldr r2, _08010470 - lsrs r0, 22 - adds r0, r2 - lsrs r1, 22 - adds r1, r2 - ldr r2, [r1] - str r2, [sp, 0x14] - movs r3, 0 - ldrsh r5, [r1, r3] - ldr r1, [r0] - mov r9, r1 - movs r2, 0 - ldrsh r6, [r0, r2] - subs r2, r5, r6 - cmp r2, 0 - bge _08010376 - negs r2, r2 -_08010376: - ldr r3, [sp, 0x14] - asrs r0, r3, 16 - mov r3, r9 - asrs r1, r3, 16 - subs r4, r0, r1 - adds r3, r4, 0 - str r0, [sp, 0x18] - mov r8, r1 - cmp r4, 0 - bge _0801038C - negs r4, r4 -_0801038C: - cmp r4, r2 - bge _08010392 - adds r4, r2, 0 -_08010392: - lsrs r0, r4, 31 - adds r0, r4, r0 - asrs r4, r0, 1 - subs r0, r6, r5 - str r0, [sp, 0xC] - str r3, [sp, 0x10] - add r0, sp, 0xC - bl sub_800A0B0 - ldr r1, _08010474 - adds r3, r0, r1 - cmp r3, 0 - bge _080103B0 - ldr r2, _08010478 - adds r3, r0, r2 -_080103B0: - asrs r3, 9 - movs r0, 0x7 - ands r3, r0 - ldr r0, _0801047C - ldr r1, [r0] - ldr r2, _08010480 - adds r0, r1, r2 - ldr r2, _08010484 - adds r1, r2 - ldr r1, [r1] - movs r2, 0 - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - bl sub_80053AC - movs r7, 0 - cmp r7, r4 - bge _08010448 - mov r10, r5 -_080103DC: - ldr r0, _0801047C - ldr r6, [r0] - mov r3, r9 - lsls r0, r3, 16 - asrs r0, 16 - mov r1, r10 - subs r0, r1, r0 - lsls r5, r7, 8 - muls r0, r5 - adds r1, r4, 0 - bl __divsi3 - cmp r0, 0 - bge _080103FA - adds r0, 0xFF -_080103FA: - asrs r0, 8 - add r0, r9 - ldr r2, _08010488 - adds r1, r6, r2 - strh r0, [r1] - ldr r3, [sp, 0x18] - mov r1, r8 - subs r0, r3, r1 - muls r0, r5 - adds r1, r4, 0 - bl __divsi3 - cmp r0, 0 - bge _08010418 - adds r0, 0xFF -_08010418: - asrs r0, 8 - add r0, r8 - ldr r2, _0801048C - adds r1, r6, r2 - strh r0, [r1] - bl sub_8010798 - bl sub_8010858 - bl sub_8010960 - ldr r0, _08010490 - ldrh r1, [r0, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08010448 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08010448 - adds r7, 0x1 - cmp r7, r4 - blt _080103DC -_08010448: - ldr r0, _0801047C - ldr r0, [r0] - ldr r3, _08010488 - adds r0, r3 - ldr r1, [sp, 0x14] - str r1, [r0] - bl sub_8010798 - bl sub_8010858 - bl sub_8010960 - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010470: .4byte gDungeonCoordinates -_08010474: .4byte 0xfffffc00 -_08010478: .4byte 0xfffffdff -_0801047C: .4byte gUnknown_203B0E8 -_08010480: .4byte 0x00005114 -_08010484: .4byte 0x0000110c -_08010488: .4byte 0x000052dc -_0801048C: .4byte 0x000052de -_08010490: .4byte gRealInputs - thumb_func_end sub_8010344 - - thumb_func_start sub_8010494 -sub_8010494: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r9, r0 - movs r5, 0 - ldr r0, _080104C0 - mov r10, r0 - mov r8, r5 -_080104AA: - mov r1, r10 - ldr r0, [r1] - mov r3, r8 - adds r4, r0, r3 - cmp r5, 0x3E - bgt _080104C4 - mov r0, r9 - adds r0, 0x6D - adds r0, r5 - ldrb r0, [r0] - b _080104C6 - .align 2, 0 -_080104C0: .4byte gUnknown_203B0E8 -_080104C4: - movs r0, 0x1 -_080104C6: - cmp r0, 0 - beq _0801050C - movs r7, 0 - movs r6, 0x1 - strb r6, [r4] - adds r3, r4, 0 - adds r3, 0x8 - mov r1, r10 - ldr r0, [r1] - ldr r1, _08010504 - adds r0, r1 - ldr r1, [r0] - movs r2, 0x1 - cmp r5, 0x3F - bne _080104E6 - movs r2, 0xC -_080104E6: - movs r0, 0x40 - str r0, [sp] - str r7, [sp, 0x4] - str r6, [sp, 0x8] - adds r0, r3, 0 - movs r3, 0 - bl sub_80053AC - ldr r1, _08010508 - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4, 0x4] - b _0801050E - .align 2, 0 -_08010504: .4byte 0x00001108 -_08010508: .4byte gDungeonCoordinates -_0801050C: - strb r0, [r4] -_0801050E: - movs r3, 0x44 - add r8, r3 - adds r5, 0x1 - cmp r5, 0x3F - ble _080104AA - movs r2, 0 - ldr r4, _0801057C - ldr r1, [r4] - ldr r3, _08010580 - adds r0, r1, r3 - ldr r3, _08010584 - adds r1, r3 - ldr r1, [r1] - str r2, [sp] - str r2, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r2, 0 - movs r3, 0 - bl sub_80053AC - ldr r2, [r4] - ldr r4, _08010588 - adds r3, r2, r4 - ldr r1, _0801058C - mov r4, r9 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r3] - ldrh r0, [r3] - subs r0, 0x78 - ldr r3, _08010590 - adds r1, r2, r3 - strh r0, [r1] - ldr r4, _08010594 - adds r0, r2, r4 - ldrh r0, [r0] - subs r0, 0x50 - ldr r1, _08010598 - adds r2, r1 - strh r0, [r2] - bl sub_8010798 - bl sub_8010858 - 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 -_0801057C: .4byte gUnknown_203B0E8 -_08010580: .4byte 0x00005114 -_08010584: .4byte 0x0000110c -_08010588: .4byte 0x000052dc -_0801058C: .4byte gDungeonCoordinates -_08010590: .4byte 0x000052d8 -_08010594: .4byte 0x000052de -_08010598: .4byte 0x000052da - thumb_func_end sub_8010494 - - thumb_func_start sub_801059C -sub_801059C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - bl GetPlayerPokemonStruct - adds r7, r0, 0 - ldr r6, _080106E4 - ldr r0, [r6] - ldr r5, _080106E8 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - str r0, [sp, 0xC] - ldr r0, [r6, 0x4] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - str r0, [sp, 0x10] - ldr r1, _080106EC - movs r0, 0x8 - ldrsh r2, [r7, r0] - mov r0, sp - bl sprintf - ldr r1, _080106F0 - mov r8, r1 - mov r0, sp - bl OpenFileAndGetFileDataPtr - ldr r4, _080106F4 - ldr r1, [r4] - ldr r2, _080106F8 - adds r1, r2 - str r0, [r1] - ldr r0, _080106FC - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r3, _08010700 - mov r9, r3 - add r1, r9 - str r0, [r1] - ldr r0, [r6, 0x8] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r2, _08010704 - mov r10, r2 - add r1, r10 - str r0, [r1] - ldr r0, _08010708 - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - ldr r3, _0801070C - adds r1, r3 - str r0, [r1] - ldr r0, [r6, 0xC] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - movs r2, 0x88 - lsls r2, 5 - adds r1, r2 - str r0, [r1] - movs r3, 0x8 - ldrsh r0, [r7, r3] - movs r1, 0 - bl GetPokemonOverworldPalette - ldr r1, [r4] - ldr r3, _08010710 - adds r2, r1, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [r2] - add r1, r9 - ldr r0, [r1] - movs r1, 0x40 - movs r2, 0x1F - movs r3, 0 - bl sub_8005610 - ldr r0, _08010714 - movs r1, 0 - ldr r2, [sp, 0xC] - bl DecompressATGlobalFile - ldr r1, [r4] - ldr r2, _08010718 - adds r0, r1, r2 - add r1, r10 - ldr r1, [r1] - movs r2, 0x10 - bl sub_8004AA4 - movs r1, 0x80 - lsls r1, 7 - ldr r0, [r4] - ldr r3, _0801071C - adds r0, r3 - ldr r2, [sp, 0x10] - bl DecompressATFile - ldr r1, [r4] - ldr r2, _08010720 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - ldr r3, _08010724 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _08010728 - adds r1, r0 - strh r2, [r1] - movs r3, 0 - ldr r1, _0801072C - mov r9, r1 - mov r8, r4 - ldr r7, _08010730 - ldr r2, _08010734 - adds r4, r2, 0 - ldr r6, _08010738 - movs r5, 0 -_080106A2: - mov r0, r8 - ldr r2, [r0] - lsls r0, r3, 1 - adds r1, r2, r7 - adds r1, r0 - ldrh r0, [r1] - orrs r0, r4 - strh r0, [r1] - adds r2, r6 - adds r2, r3 - strb r5, [r2] - adds r3, 0x1 - cmp r3, r9 - ble _080106A2 - ldr r0, [sp, 0xC] - bl CloseFile - ldr r0, [sp, 0x10] - bl CloseFile - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080106E4: .4byte gUnknown_80D4014 -_080106E8: .4byte gTitleMenuFileArchive -_080106EC: .4byte gUnknown_80D405C -_080106F0: .4byte gMonsterFileArchive -_080106F4: .4byte gUnknown_203B0E8 -_080106F8: .4byte 0x0000110c -_080106FC: .4byte gUnknown_80D4064 -_08010700: .4byte 0x00001108 -_08010704: .4byte 0x00001110 -_08010708: .4byte gUnknown_80D406C -_0801070C: .4byte 0x00001104 -_08010710: .4byte 0x000052d4 -_08010714: .4byte 0x06008000 -_08010718: .4byte 0x00005150 -_0801071C: .4byte 0x00001114 -_08010720: .4byte 0x000052d0 -_08010724: .4byte 0x000052d8 -_08010728: .4byte 0x000052da -_0801072C: .4byte 0x000005db -_08010730: .4byte 0x000052e0 -_08010734: .4byte 0x0000ffff -_08010738: .4byte 0x00005e98 - thumb_func_end sub_801059C - - thumb_func_start sub_801073C -sub_801073C: - push {r4,lr} - ldr r4, _08010784 - ldr r0, [r4] - ldr r1, _08010788 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _0801078C - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _08010790 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - movs r1, 0x88 - lsls r1, 5 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r1, _08010794 - adds r0, r1 - ldr r0, [r0] - bl CloseFile - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010784: .4byte gUnknown_203B0E8 -_08010788: .4byte 0x00001110 -_0801078C: .4byte 0x0000110c -_08010790: .4byte 0x00001108 -_08010794: .4byte 0x00001104 - thumb_func_end sub_801073C - - thumb_func_start sub_8010798 -sub_8010798: - push {r4-r6,lr} - ldr r2, _080107BC - ldr r0, [r2] - ldr r1, _080107C0 - adds r3, r0, r1 - movs r4, 0 - ldrsh r1, [r3, r4] - ldr r5, _080107C4 - adds r4, r0, r5 - movs r6, 0 - ldrsh r0, [r4, r6] - subs r1, r0 - adds r5, r2, 0 - cmp r1, 0x2F - bgt _080107C8 - ldrh r0, [r3] - subs r0, 0x30 - b _080107D0 - .align 2, 0 -_080107BC: .4byte gUnknown_203B0E8 -_080107C0: .4byte 0x000052dc -_080107C4: .4byte 0x000052d8 -_080107C8: - cmp r1, 0xC0 - ble _080107D2 - ldrh r0, [r3] - subs r0, 0xC0 -_080107D0: - strh r0, [r4] -_080107D2: - ldr r0, [r5] - ldr r1, _080107F0 - adds r3, r0, r1 - movs r2, 0 - ldrsh r1, [r3, r2] - ldr r4, _080107F4 - adds r2, r0, r4 - movs r6, 0 - ldrsh r0, [r2, r6] - subs r1, r0 - cmp r1, 0x2F - bgt _080107F8 - ldrh r0, [r3] - subs r0, 0x30 - b _08010800 - .align 2, 0 -_080107F0: .4byte 0x000052de -_080107F4: .4byte 0x000052da -_080107F8: - cmp r1, 0x70 - ble _08010802 - ldrh r0, [r3] - subs r0, 0x70 -_08010800: - strh r0, [r2] -_08010802: - adds r3, r5, 0 - ldr r0, [r3] - ldr r4, _08010850 - adds r1, r0, r4 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bge _08010816 - movs r0, 0 - strh r0, [r1] -_08010816: - ldr r0, [r3] - ldr r2, _08010854 - adds r1, r0, r2 - movs r6, 0 - ldrsh r0, [r1, r6] - cmp r0, 0 - bge _08010828 - movs r0, 0 - strh r0, [r1] -_08010828: - ldr r0, [r3] - adds r1, r0, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xEF - ble _08010838 - movs r0, 0xF0 - strh r0, [r1] -_08010838: - ldr r0, [r5] - adds r2, r0, r2 - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0x9F - ble _08010848 - movs r0, 0xA0 - strh r0, [r2] -_08010848: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08010850: .4byte 0x000052d8 -_08010854: .4byte 0x000052da - thumb_func_end sub_8010798 - - thumb_func_start sub_8010858 -sub_8010858: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080108FC - ldr r1, [r0] - ldr r2, _08010900 - adds r1, r2 - ldrh r1, [r1] - lsls r1, 16 - asrs r6, r1, 19 - adds r2, r6, 0 - movs r3, 0 - mov r10, r0 - movs r0, 0x1F - mov r9, r0 -_0801087C: - mov r1, r10 - ldr r0, [r1] - ldr r1, _08010904 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r4, r0, 19 - lsls r1, r2, 7 - adds r2, 0x1 - mov r12, r2 - adds r3, 0x1 - mov r8, r3 - movs r7, 0x1E - lsls r0, r4, 1 - adds r5, r0, r1 -_0801089A: - mov r2, r9 - ands r4, r2 - ands r6, r2 - lsls r2, r4, 1 - lsls r0, r6, 6 - adds r2, r0 - ldr r3, _08010908 - adds r3, r2, r3 - str r3, [sp] - mov r0, r10 - ldr r1, [r0] - ldr r3, _0801090C - adds r0, r1, r3 - adds r0, r5 - ldrh r0, [r0] - ldr r3, [sp] - strh r0, [r3] - ldr r0, _08010910 - adds r2, r0 - ldr r3, _08010914 - adds r1, r3 - adds r1, r5 - ldrh r0, [r1] - strh r0, [r2] - adds r5, 0x2 - adds r4, 0x1 - subs r7, 0x1 - cmp r7, 0 - bge _0801089A - mov r2, r12 - adds r6, 0x1 - mov r3, r8 - cmp r3, 0x14 - ble _0801087C - movs r0, 0x2 - bl sub_80098F8 - movs r0, 0x3 - bl sub_80098F8 - 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 -_080108FC: .4byte gUnknown_203B0E8 -_08010900: .4byte 0x000052da -_08010904: .4byte 0x000052d8 -_08010908: .4byte gUnknown_202C038 -_0801090C: .4byte 0x00003114 -_08010910: .4byte gUnknown_202C838 -_08010914: .4byte 0x00001114 - thumb_func_end sub_8010858 - - thumb_func_start nullsub_24 -nullsub_24: - bx lr - thumb_func_end nullsub_24 - - thumb_func_start sub_801091C -sub_801091C: - push {r4,r5,lr} - bl sub_8010950 - bl sub_80117C4 - ldr r5, _08010948 - movs r4, 0x3B -_0801092A: - ldr r1, [r5] - ldr r0, _0801094C - adds r1, r0 - ldr r0, [r1] - subs r0, 0x2 - str r0, [r1] - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _0801092A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08010948: .4byte gUnknown_203B0E8 -_0801094C: .4byte 0x000052d0 - thumb_func_end sub_801091C - - thumb_func_start sub_8010950 -sub_8010950: - push {lr} - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r0} - bx r0 - thumb_func_end sub_8010950 - - thumb_func_start sub_8010960 -sub_8010960: - push {r4-r6,lr} - ldr r6, _080109EC - ldr r1, [r6] - ldr r4, _080109F0 - adds r0, r1, r4 - movs r2, 0 - ldrsh r0, [r0, r2] - ldr r5, _080109F4 - adds r1, r5 - movs r2, 0 - ldrsh r1, [r1, r2] - bl SetBG2RegOffsets - ldr r1, [r6] - adds r4, r1, r4 - movs r2, 0 - ldrsh r0, [r4, r2] - adds r1, r5 - movs r2, 0 - ldrsh r1, [r1, r2] - bl SetBG3RegOffsets - movs r0, 0x1 - bl sub_8010A88 - bl sub_8010A00 - movs r0, 0 - movs r1, 0 - bl sub_8005838 - ldr r0, _080109F8 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - bl nullsub_8 - bl sub_8005180 - bl sub_80060EC - ldr r0, _080109FC - ldr r0, [r0] - bl IncrementPlayTime - bl sub_800CB20 - bl LoadBufferedInputs - bl CopySpritesToOam - bl sub_8005304 - bl TransferBGPaletteBuffer - bl xxx_call_update_bg_vram - bl nullsub_24 - bl sub_8009908 - bl xxx_call_update_bg_sound_input - bl sub_8011860 - movs r0, 0 - bl ResetSprites - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080109EC: .4byte gUnknown_203B0E8 -_080109F0: .4byte 0x000052d8 -_080109F4: .4byte 0x000052da -_080109F8: .4byte gGameOptionsRef -_080109FC: .4byte gPlayTimeRef - thumb_func_end sub_8010960 - - thumb_func_start sub_8010A00 -sub_8010A00: - push {r4-r6,lr} - movs r3, 0 - ldr r6, _08010A7C - ldr r0, [r6] - ldr r2, _08010A80 - adds r1, r0, r2 - ldr r2, [r1] - cmp r2, 0x1E - bgt _08010A74 - movs r3, 0x88 - lsls r3, 5 - adds r0, r3 - ldr r0, [r0] - ldr r5, [r0, 0x4] - adds r0, r2, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _08010A28 - movs r0, 0x1F - str r0, [r1] -_08010A28: - movs r4, 0 -_08010A2A: - ldr r0, [r6] - ldr r1, _08010A80 - adds r0, r1 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xDF - ble _08010A2A - ldr r0, _08010A7C - ldr r0, [r0] - ldr r2, _08010A84 - adds r0, r2 - ldr r0, [r0] - ldr r5, [r0, 0x4] - movs r4, 0 -_08010A52: - movs r3, 0x80 - lsls r3, 1 - adds r0, r4, r3 - ldr r1, _08010A7C - ldr r1, [r1] - ldr r2, _08010A80 - adds r1, r2 - ldr r2, [r1] - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xEF - ble _08010A52 - movs r3, 0x1 -_08010A74: - adds r0, r3, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08010A7C: .4byte gUnknown_203B0E8 -_08010A80: .4byte 0x000052d0 -_08010A84: .4byte 0x00001104 - thumb_func_end sub_8010A00 - - thumb_func_start sub_8010A88 -sub_8010A88: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - add r0, sp, 0x8 - bl sub_8004E8C - add r1, sp, 0x8 - ldr r0, _08010B58 - strh r0, [r1, 0x4] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r1, 0xA] - ldr r6, _08010B5C - ldr r0, [r6] - ldr r2, _08010B60 - adds r1, r0, r2 - ldr r5, [r1] - ldr r3, _08010B64 - adds r0, r3 - bl sub_80054BC - mov r0, r9 - cmp r0, 0 - beq _08010AF6 - ldr r4, [r6] - ldr r1, _08010B64 - adds r0, r4, r1 - ldr r2, _08010B68 - adds r1, r4, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - lsls r2, r5, 16 - asrs r2, 16 - subs r1, r2 - ldr r3, _08010B6C - adds r2, r4, r3 - movs r3, 0 - ldrsh r2, [r2, r3] - asrs r3, r5, 16 - subs r2, r3 - ldr r3, _08010B70 - adds r4, r3 - ldr r3, [r4] - str r3, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - movs r3, 0x3 - bl DoAxFrame_800558C -_08010AF6: - lsls r0, r5, 16 - asrs r0, 16 - mov r10, r0 - movs r7, 0 - asrs r5, 16 - mov r8, r5 - movs r6, 0x3F -_08010B04: - ldr r1, _08010B5C - ldr r0, [r1] - adds r4, r0, r7 - ldrb r0, [r4] - cmp r0, 0 - beq _08010B40 - adds r5, r4, 0 - adds r5, 0x8 - adds r0, r5, 0 - bl sub_80054BC - mov r2, r9 - cmp r2, 0 - beq _08010B40 - movs r3, 0x4 - ldrsh r1, [r4, r3] - mov r0, r10 - subs r1, r0 - movs r3, 0x6 - ldrsh r2, [r4, r3] - mov r0, r8 - subs r2, r0 - movs r0, 0 - str r0, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - adds r0, r5, 0 - movs r3, 0x1 - bl DoAxFrame_800558C -_08010B40: - adds r7, 0x44 - subs r6, 0x1 - cmp r6, 0 - bge _08010B04 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010B58: .4byte 0x0000f3ff -_08010B5C: .4byte gUnknown_203B0E8 -_08010B60: .4byte 0x000052d8 -_08010B64: .4byte 0x00005114 -_08010B68: .4byte 0x000052dc -_08010B6C: .4byte 0x000052de -_08010B70: .4byte 0x000052d4 - thumb_func_end sub_8010A88 - - thumb_func_start sub_8010B74 -sub_8010B74: - push {r4,r5,lr} - sub sp, 0x64 - adds r5, r0, 0 - add r4, sp, 0x4 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r2, 0x3 - str r2, [sp, 0x8] - movs r0, 0xC - strh r0, [r4, 0x8] - movs r1, 0x2 - strh r1, [r4, 0xA] - movs r0, 0x10 - strh r0, [r4, 0xC] - strh r1, [r4, 0xE] - strh r1, [r4, 0x10] - str r2, [sp, 0x20] - str r2, [sp, 0x38] - str r2, [sp, 0x50] - ldr r0, _08010BC0 - ldr r0, [r0] - ldr r2, _08010BC4 - adds r1, r0, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - ldr r2, _08010BC8 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r1, r0 - cmp r1, 0x50 - bgt _08010BCC - add r1, sp, 0x4 - movs r0, 0x11 - b _08010BD0 - .align 2, 0 -_08010BC0: .4byte gUnknown_203B0E8 -_08010BC4: .4byte 0x000052de -_08010BC8: .4byte 0x000052da -_08010BCC: - add r1, sp, 0x4 - movs r0, 0x1 -_08010BD0: - strh r0, [r1, 0xA] - add r0, sp, 0x4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0 - bl sub_80073B8 - ldr r0, _08010C08 - adds r1, r5, 0 - bl CopyDungeonName1toBuffer - ldr r2, _08010C0C - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0x2 - movs r3, 0 - bl xxx_format_and_draw - movs r0, 0 - bl sub_80073E0 - add sp, 0x64 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08010C08: .4byte gAvailablePokemonNames -_08010C0C: .4byte gUnknown_80D4074 - thumb_func_end sub_8010B74 - - thumb_func_start sub_8010C10 -sub_8010C10: - push {r4,lr} - sub sp, 0x18 - movs r2, 0 - str r2, [sp] - movs r1, 0x3 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - str r2, [sp, 0xC] - ldr r1, _08010C54 - str r1, [sp, 0x10] - movs r1, 0 - movs r3, 0 - bl sub_8014248 -_08010C2C: - bl xxx_draw_string_80144C4 - bl sub_8010960 - add r0, sp, 0x14 - bl sub_80144A4 - cmp r0, 0 - bne _08010C2C - movs r4, 0x9 -_08010C40: - bl sub_8010960 - subs r4, 0x1 - cmp r4, 0 - bge _08010C40 - add sp, 0x18 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010C54: .4byte 0x00000301 - thumb_func_end sub_8010C10 - - thumb_func_start sub_8010C58 -sub_8010C58: - push {r4-r6,lr} - sub sp, 0x38 - adds r5, r0, 0 - movs r2, 0 - ldrb r0, [r5] - ldr r3, _08010D70 - add r6, sp, 0x2C - cmp r0, 0 - beq _08010C7C - adds r1, r5, 0 -_08010C6C: - ldrb r0, [r1] - cmp r0, 0xA - bne _08010C74 - adds r2, 0xC -_08010C74: - adds r1, 0x1 - ldrb r0, [r1] - cmp r0, 0 - bne _08010C6C -_08010C7C: - adds r2, 0xB - adds r0, r2, 0 - cmp r2, 0 - bge _08010C86 - adds r0, r2, 0x7 -_08010C86: - asrs r2, r0, 3 - movs r0, 0x13 - subs r0, r2 - movs r4, 0 - strh r0, [r3, 0xA] - strh r2, [r3, 0x10] - strh r2, [r3, 0xE] - movs r0, 0xE - subs r0, r2 - strh r0, [r3, 0x22] - adds r0, r3, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0 - bl sub_80073B8 - str r4, [sp] - movs r0, 0x4 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0 - bl xxx_format_and_draw - movs r0, 0 - bl sub_80073E0 - movs r0, 0x1 - bl sub_80073B8 - ldr r2, _08010D74 - str r4, [sp] - movs r0, 0xA - movs r1, 0 - movs r3, 0x1 - bl xxx_format_and_draw - ldr r2, _08010D78 - str r4, [sp] - movs r0, 0xA - movs r1, 0xC - movs r3, 0x1 - bl xxx_format_and_draw - movs r0, 0x1 - bl sub_80073E0 - add r0, sp, 0x4 - movs r2, 0x1 - strh r2, [r0, 0x18] - movs r1, 0x2 - strh r1, [r0, 0x1A] - strh r1, [r0, 0x1C] - strh r4, [r0, 0x1E] - strh r4, [r0, 0x20] - strh r4, [r0, 0x4] - strh r4, [r0, 0x6] - str r2, [sp, 0x4] - strh r4, [r0, 0xC] - strh r4, [r0, 0xE] - strh r4, [r0, 0x14] - strh r4, [r0, 0x16] - movs r1, 0x8 - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - movs r1, 0x18 - bl sub_80137B0 - adds r0, r6, 0 - bl sub_801317C - ldr r4, _08010D7C -_08010D18: - add r0, sp, 0x4 - bl AddMenuCursorSprite - bl sub_8010960 - ldrh r1, [r4, 0x4] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08010D36 - add r0, sp, 0x4 - bl MoveMenuCursorDown - bl sub_80117F8 -_08010D36: - ldrh r1, [r4, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08010D4A - add r0, sp, 0x4 - bl MoveMenuCursorUp - bl sub_80117F8 -_08010D4A: - ldrh r1, [r4, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08010D5E - mov r0, sp - adds r0, 0x2D - ldrb r0, [r0] - cmp r0, 0 - beq _08010D18 -_08010D5E: - bl sub_80117D0 - add r0, sp, 0x4 - movs r1, 0x18 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _08010D80 - movs r0, 0 - b _08010D82 - .align 2, 0 -_08010D70: .4byte gUnknown_203B0EC -_08010D74: .4byte gUnknown_80D407C -_08010D78: .4byte gUnknown_80D4080 -_08010D7C: .4byte gRealInputs -_08010D80: - movs r0, 0x1 -_08010D82: - add sp, 0x38 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8010C58 - - thumb_func_start sub_8010D8C -sub_8010D8C: - lsls r0, 24 - ldr r2, _08010DA0 - lsrs r0, 22 - adds r0, r2 - ldrh r2, [r0] - strh r2, [r1] - ldrh r0, [r0, 0x2] - strh r0, [r1, 0x2] - bx lr - .align 2, 0 -_08010DA0: .4byte gDungeonCoordinates - thumb_func_end sub_8010D8C - - thumb_func_start sub_8010DA4 -sub_8010DA4: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - bl GetPlayerPokemonStruct - mov r9, r0 - ldr r6, _08010EBC - ldr r0, [r6] - ldr r5, _08010EC0 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - mov r10, r0 - ldr r0, [r6, 0x4] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - adds r7, r0, 0 - ldr r1, _08010EC4 - mov r0, r9 - movs r3, 0x8 - ldrsh r2, [r0, r3] - mov r0, sp - bl sprintf - ldr r0, _08010EC8 - mov r8, r0 - mov r0, sp - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r4, _08010ECC - ldr r1, [r4] - str r0, [r1, 0xC] - ldr r0, _08010ED0 - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x8] - ldr r0, [r6, 0x8] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x10] - ldr r0, _08010ED4 - mov r1, r8 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1, 0x4] - ldr r0, [r6, 0xC] - adds r1, r5, 0 - bl OpenFileAndGetFileDataPtr - ldr r1, [r4] - str r0, [r1] - mov r1, r9 - movs r2, 0x8 - ldrsh r0, [r1, r2] - movs r1, 0 - bl GetPokemonOverworldPalette - ldr r2, [r4] - ldr r3, _08010ED8 - adds r1, r2, r3 - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - ldr r0, [r2, 0x8] - movs r1, 0x40 - movs r2, 0x1F - movs r3, 0 - bl sub_8005610 - ldr r0, _08010EDC - movs r1, 0 - mov r2, r10 - bl DecompressATGlobalFile - ldr r1, [r4] - ldr r2, _08010EE0 - adds r0, r1, r2 - ldr r1, [r1, 0x10] - movs r2, 0x10 - bl sub_8004AA4 - movs r1, 0x80 - lsls r1, 7 - ldr r0, [r4] - adds r0, 0x14 - adds r2, r7, 0 - bl DecompressATFile - ldr r1, [r4] - ldr r3, _08010EE4 - adds r0, r1, r3 - movs r2, 0 - str r2, [r0] - adds r3, 0x8 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _08010EE8 - adds r1, r0 - strh r2, [r1] - ldr r5, _08010EEC - movs r3, 0 - movs r1, 0x7 -_08010E84: - ldr r0, [r4] - adds r0, r2, r0 - adds r0, r5 - strh r3, [r0] - adds r2, 0x3C - subs r1, 0x1 - cmp r1, 0 - bge _08010E84 - mov r0, r10 - bl CloseFile - adds r0, r7, 0 - bl CloseFile - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - 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 -_08010EBC: .4byte gUnknown_80D408C -_08010EC0: .4byte gTitleMenuFileArchive -_08010EC4: .4byte gUnknown_80D40E4 -_08010EC8: .4byte gMonsterFileArchive -_08010ECC: .4byte gUnknown_203B0E4 -_08010ED0: .4byte gUnknown_80D40EC -_08010ED4: .4byte gUnknown_80D40F4 -_08010ED8: .4byte 0x00004dd0 -_08010EDC: .4byte 0x06008000 -_08010EE0: .4byte 0x00004c4c -_08010EE4: .4byte 0x00004dcc -_08010EE8: .4byte 0x00004dd6 -_08010EEC: .4byte 0x00004a30 - thumb_func_end sub_8010DA4 - -@ https://decomp.me/scratch/xe9WG (kermalis 100%) `void sub_8010EF0(void)` - thumb_func_start sub_8010EF0 -sub_8010EF0: - push {r4,lr} - ldr r4, _08010F24 - ldr r0, [r4] - ldr r0, [r0, 0x10] - bl CloseFile - ldr r0, [r4] - ldr r0, [r0, 0x8] - bl CloseFile - ldr r0, [r4] - ldr r0, [r0, 0xC] - bl CloseFile - ldr r0, [r4] - ldr r0, [r0] - bl CloseFile - ldr r0, [r4] - ldr r0, [r0, 0x4] - bl CloseFile - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010F24: .4byte gUnknown_203B0E4 - thumb_func_end sub_8010EF0 - - thumb_func_start sub_8010F28 -sub_8010F28: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - add r0, sp, 0x8 - bl sub_8004E8C - add r1, sp, 0x8 - ldr r0, _08011080 - strh r0, [r1, 0x4] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r1, 0xA] - ldr r6, _08011084 - ldr r0, [r6] - ldr r2, _08011088 - adds r1, r0, r2 - ldr r1, [r1] - mov r8, r1 - ldr r4, _0801108C - adds r0, r4 - bl sub_80054BC - ldr r3, [r6] - adds r4, r3, r4 - ldr r7, _08011090 - adds r0, r3, r7 - movs r2, 0 - ldrsh r1, [r0, r2] - mov r7, r8 - lsls r5, r7, 16 - asrs r5, 16 - subs r1, r5 - ldr r2, _08011094 - adds r0, r3, r2 - movs r7, 0 - ldrsh r2, [r0, r7] - mov r7, r8 - asrs r0, r7, 16 - subs r2, r0 - ldr r0, _08011098 - adds r3, r0 - ldr r0, [r3] - str r0, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - adds r0, r4, 0 - movs r3, 0x3 - bl DoAxFrame_800558C - movs r7, 0 - mov r10, r6 - ldr r6, _0801109C - mov r9, r5 -_08010F98: - mov r4, r10 - ldr r0, [r4] - adds r4, r0, r6 - ldr r1, _080110A0 - adds r0, r1 - lsls r1, r7, 5 - ldr r0, [r0] - adds r5, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - beq _08010FD8 - adds r4, 0x14 - adds r0, r4, 0 - bl sub_80054BC - movs r2, 0x4 - ldrsh r1, [r5, r2] - mov r3, r9 - subs r1, r3 - movs r0, 0x6 - ldrsh r2, [r5, r0] - mov r3, r8 - asrs r0, r3, 16 - subs r2, r0 - movs r0, 0 - str r0, [sp] - add r0, sp, 0x8 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r3, 0x1 - bl DoAxFrame_800558C -_08010FD8: - adds r6, 0x50 - adds r7, 0x1 - cmp r7, 0x1F - ble _08010F98 - movs r5, 0 - ldr r1, _08011084 - mov r9, r1 - ldr r6, _080110A4 - movs r2, 0 - str r2, [sp, 0x14] -_08010FEC: - mov r3, r9 - ldr r1, [r3] - ldr r4, [sp, 0x14] - adds r0, r4, r1 - ldr r7, _080110A4 - adds r0, r7 - ldrh r0, [r0] - lsrs r0, 15 - cmp r0, 0 - beq _08011062 - adds r0, r1, r6 - bl sub_80054BC - ldr r0, _080110A8 - ldrh r0, [r0] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _0801101E - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08011062 -_0801101E: - mov r3, r9 - ldr r4, [r3] - adds r0, r4, r6 - ldr r1, _080110AC - lsls r3, r5, 2 - adds r3, r1 - movs r7, 0 - ldrsh r1, [r3, r7] - ldr r7, _08011090 - adds r2, r4, r7 - movs r7, 0 - ldrsh r2, [r2, r7] - adds r1, r2 - mov r7, r8 - lsls r2, r7, 16 - asrs r2, 16 - subs r1, r2 - movs r7, 0x2 - ldrsh r2, [r3, r7] - ldr r3, _08011094 - adds r3, r4 - movs r4, 0 - ldrsh r3, [r3, r4] - adds r2, r3 - mov r7, r8 - asrs r3, r7, 16 - subs r2, r3 - movs r3, 0 - str r3, [sp] - add r3, sp, 0x8 - str r3, [sp, 0x4] - movs r3, 0x2 - bl DoAxFrame_800558C -_08011062: - adds r6, 0x3C - ldr r4, [sp, 0x14] - adds r4, 0x3C - str r4, [sp, 0x14] - adds r5, 0x1 - cmp r5, 0x7 - ble _08010FEC - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011080: .4byte 0x0000f3ff -_08011084: .4byte gUnknown_203B0E4 -_08011088: .4byte 0x00004dd4 -_0801108C: .4byte 0x00004c10 -_08011090: .4byte 0x00004dd8 -_08011094: .4byte 0x00004dda -_08011098: .4byte 0x00004dd0 -_0801109C: .4byte 0x00004018 -_080110A0: .4byte 0x00004014 -_080110A4: .4byte 0x00004a30 -_080110A8: .4byte gRealInputs -_080110AC: .4byte gUnknown_80D40C4 - thumb_func_end sub_8010F28 - - thumb_func_start sub_80110B0 -sub_80110B0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _08011150 - ldr r1, [r0] - ldr r2, _08011154 - adds r1, r2 - ldrh r1, [r1] - lsls r1, 16 - asrs r6, r1, 19 - adds r2, r6, 0 - movs r3, 0 - mov r10, r0 - movs r0, 0x1F - mov r9, r0 -_080110D4: - mov r1, r10 - ldr r0, [r1] - ldr r1, _08011158 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r4, r0, 19 - lsls r1, r2, 7 - adds r2, 0x1 - mov r12, r2 - adds r3, 0x1 - mov r8, r3 - movs r7, 0x1E - lsls r0, r4, 1 - adds r5, r0, r1 -_080110F2: - mov r2, r9 - ands r4, r2 - ands r6, r2 - lsls r2, r4, 1 - lsls r0, r6, 6 - adds r2, r0 - ldr r3, _0801115C - adds r3, r2, r3 - str r3, [sp] - mov r0, r10 - ldr r1, [r0] - ldr r3, _08011160 - adds r0, r1, r3 - adds r0, r5 - ldrh r0, [r0] - ldr r3, [sp] - strh r0, [r3] - ldr r0, _08011164 - adds r2, r0 - adds r1, 0x14 - adds r1, r5 - ldrh r0, [r1] - strh r0, [r2] - adds r5, 0x2 - adds r4, 0x1 - subs r7, 0x1 - cmp r7, 0 - bge _080110F2 - mov r2, r12 - adds r6, 0x1 - mov r3, r8 - cmp r3, 0x14 - ble _080110D4 - movs r0, 0x2 - bl sub_80098F8 - movs r0, 0x3 - bl sub_80098F8 - 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 -_08011150: .4byte gUnknown_203B0E4 -_08011154: .4byte 0x00004dd6 -_08011158: .4byte 0x00004dd4 -_0801115C: .4byte gUnknown_202C038 -_08011160: .4byte 0x00002014 -_08011164: .4byte gUnknown_202C838 - thumb_func_end sub_80110B0 - - thumb_func_start sub_8011168 -sub_8011168: - push {r4,r5,lr} - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r3, _080111B0 - ldr r1, [r3] - ldr r2, _080111B4 - adds r0, r1, r2 - movs r2, 0 - str r2, [r0] - ldr r4, _080111B8 - adds r0, r1, r4 - str r2, [r0] - adds r4, 0x4 - adds r0, r1, r4 - str r2, [r0] - ldr r0, _080111BC - adds r1, r0 - str r2, [r1] - adds r5, r3, 0 - ldr r4, _080111C0 - movs r3, 0 - movs r1, 0x7 -_0801119A: - ldr r0, [r5] - adds r0, r2, r0 - adds r0, r4 - strh r3, [r0] - adds r2, 0x3C - subs r1, 0x1 - cmp r1, 0 - bge _0801119A - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080111B0: .4byte gUnknown_203B0E4 -_080111B4: .4byte 0x00004ddc -_080111B8: .4byte 0x00004de0 -_080111BC: .4byte 0x00004de8 -_080111C0: .4byte 0x00004a30 - thumb_func_end sub_8011168 - - thumb_func_start sub_80111C4 -sub_80111C4: - push {r4-r6,lr} - movs r3, 0 - ldr r6, _08011238 - ldr r0, [r6] - ldr r2, _0801123C - adds r1, r0, r2 - ldr r2, [r1] - cmp r2, 0x1E - bgt _0801122E - ldr r0, [r0] - ldr r5, [r0, 0x4] - adds r0, r2, 0x1 - str r0, [r1] - cmp r0, 0x1E - ble _080111E6 - movs r0, 0x1F - str r0, [r1] -_080111E6: - movs r4, 0 -_080111E8: - ldr r0, [r6] - ldr r1, _0801123C - adds r0, r1 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xDF - ble _080111E8 - ldr r0, _08011238 - ldr r0, [r0] - ldr r0, [r0, 0x4] - ldr r5, [r0, 0x4] - movs r4, 0 -_0801120C: - movs r2, 0x80 - lsls r2, 1 - adds r0, r4, r2 - ldr r1, _08011238 - ldr r1, [r1] - ldr r2, _0801123C - adds r1, r2 - ldr r2, [r1] - adds r1, r5, 0 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r4, 0x1 - cmp r4, 0xEF - ble _0801120C - movs r3, 0x1 -_0801122E: - adds r0, r3, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08011238: .4byte gUnknown_203B0E4 -_0801123C: .4byte 0x00004dcc - thumb_func_end sub_80111C4 - - thumb_func_start sub_8011240 -sub_8011240: - push {r4-r6,lr} - ldr r2, _08011264 - ldr r0, [r2] - ldr r1, _08011268 - adds r3, r0, r1 - movs r4, 0 - ldrsh r1, [r3, r4] - ldr r5, _0801126C - adds r4, r0, r5 - movs r6, 0 - ldrsh r0, [r4, r6] - subs r1, r0 - adds r5, r2, 0 - cmp r1, 0x2F - bgt _08011270 - ldrh r0, [r3] - subs r0, 0x30 - b _08011278 - .align 2, 0 -_08011264: .4byte gUnknown_203B0E4 -_08011268: .4byte 0x00004dd8 -_0801126C: .4byte 0x00004dd4 -_08011270: - cmp r1, 0xC0 - ble _0801127A - ldrh r0, [r3] - subs r0, 0xC0 -_08011278: - strh r0, [r4] -_0801127A: - ldr r0, [r5] - ldr r1, _08011298 - adds r3, r0, r1 - movs r2, 0 - ldrsh r1, [r3, r2] - ldr r4, _0801129C - adds r2, r0, r4 - movs r6, 0 - ldrsh r0, [r2, r6] - subs r1, r0 - cmp r1, 0x2F - bgt _080112A0 - ldrh r0, [r3] - subs r0, 0x30 - b _080112A8 - .align 2, 0 -_08011298: .4byte 0x00004dda -_0801129C: .4byte 0x00004dd6 -_080112A0: - cmp r1, 0x70 - ble _080112AA - ldrh r0, [r3] - subs r0, 0x70 -_080112A8: - strh r0, [r2] -_080112AA: - adds r3, r5, 0 - ldr r0, [r3] - ldr r4, _080112F8 - adds r1, r0, r4 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bge _080112BE - movs r0, 0 - strh r0, [r1] -_080112BE: - ldr r0, [r3] - ldr r2, _080112FC - adds r1, r0, r2 - movs r6, 0 - ldrsh r0, [r1, r6] - cmp r0, 0 - bge _080112D0 - movs r0, 0 - strh r0, [r1] -_080112D0: - ldr r0, [r3] - adds r1, r0, r4 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xEF - ble _080112E0 - movs r0, 0xEF - strh r0, [r1] -_080112E0: - ldr r0, [r5] - adds r2, r0, r2 - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0x97 - ble _080112F0 - movs r0, 0x97 - strh r0, [r2] -_080112F0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080112F8: .4byte 0x00004dd4 -_080112FC: .4byte 0x00004dd6 - thumb_func_end sub_8011240 - - thumb_func_start sub_8011300 -sub_8011300: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - ldr r0, _08011388 - ldr r2, [r0] - ldr r1, _0801138C - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 4 - ldr r3, _08011390 - adds r0, r3 - adds r2, r0 - mov r9, r2 - movs r4, 0 - ldr r0, _08011394 - mov r8, r0 - movs r7, 0 - mov r6, r8 - movs r5, 0 -_0801132E: - ldr r0, _08011388 - ldr r2, [r0] - adds r0, r5, r2 - add r0, r8 - strh r7, [r0] - lsls r1, r4, 1 - mov r0, r9 - adds r0, 0x2 - adds r1, r0, r1 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - blt _08011370 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 4 - ldr r0, _08011390 - adds r1, r0 - adds r1, r2, r1 - ldrb r0, [r1] - cmp r0, 0 - beq _08011370 - adds r0, r2, r6 - ldr r1, [r2, 0x8] - adds r2, r4, 0x4 - movs r3, 0x40 - str r3, [sp] - str r7, [sp, 0x4] - movs r3, 0x1 - str r3, [sp, 0x8] - movs r3, 0 - bl sub_80053AC -_08011370: - adds r6, 0x3C - adds r5, 0x3C - adds r4, 0x1 - cmp r4, 0x7 - ble _0801132E - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011388: .4byte gUnknown_203B0E4 -_0801138C: .4byte 0x00004a18 -_08011390: .4byte 0x00004018 -_08011394: .4byte 0x00004a30 - thumb_func_end sub_8011300 - - thumb_func_start sub_8011398 -sub_8011398: - push {r4-r6,lr} - sub sp, 0x12C - ldr r5, _080113F4 - ldr r0, [r5] - ldr r2, _080113F8 - adds r1, r0, r2 - ldr r1, [r1] - ldr r3, _080113FC - adds r0, r3 - lsls r1, 5 - ldr r0, [r0] - adds r6, r0, r1 - add r4, sp, 0xCC - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r2, 0x3 - str r2, [r4, 0x4] - movs r0, 0x7 - strh r0, [r4, 0x8] - movs r1, 0x2 - strh r1, [r4, 0xA] - movs r0, 0x15 - strh r0, [r4, 0xC] - strh r1, [r4, 0xE] - strh r1, [r4, 0x10] - str r2, [r4, 0x1C] - str r2, [r4, 0x34] - str r2, [r4, 0x4C] - ldr r0, [r5] - ldr r2, _08011400 - adds r1, r0, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - subs r2, 0x4 - adds r0, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - subs r1, r0 - cmp r1, 0x50 - bgt _08011404 - movs r0, 0x11 - b _08011406 - .align 2, 0 -_080113F4: .4byte gUnknown_203B0E4 -_080113F8: .4byte 0x00004a18 -_080113FC: .4byte 0x00004014 -_08011400: .4byte 0x00004dda -_08011404: - movs r0, 0x1 -_08011406: - strh r0, [r4, 0xA] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0 - bl sub_80073B8 - ldr r1, _0801147C - ldr r2, [r6] - add r0, sp, 0x4 - bl sprintfStatic - movs r0, 0 - str r0, [sp] - movs r0, 0xC - movs r1, 0x2 - add r2, sp, 0x4 - movs r3, 0 - bl xxx_format_and_draw - movs r0, 0 - bl sub_80073E0 - ldr r0, _08011480 - ldr r1, [r0] - ldr r0, _08011484 - adds r2, r1, r0 - movs r3, 0x8 - ldrsh r0, [r4, r3] - lsls r0, 3 - subs r0, 0x5 - str r0, [r2] - ldr r0, _08011488 - adds r2, r1, r0 - movs r3, 0xA - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, 0x5 - str r0, [r2] - ldr r0, _0801148C - adds r2, r1, r0 - movs r3, 0xC - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r0, 0xA - str r0, [r2] - ldr r0, _08011490 - adds r1, r0 - movs r2, 0xE - ldrsh r0, [r4, r2] - lsls r0, 3 - adds r0, 0xA - str r0, [r1] - add sp, 0x12C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0801147C: .4byte gUnknown_80D40FC -_08011480: .4byte gUnknown_203B0E4 -_08011484: .4byte 0x00004ddc -_08011488: .4byte 0x00004de0 -_0801148C: .4byte 0x00004de4 -_08011490: .4byte 0x00004de8 - thumb_func_end sub_8011398 - - thumb_func_start sub_8011494 -sub_8011494: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC8 - ldr r0, _08011610 - ldr r2, [r0] - ldr r1, _08011614 - adds r0, r2, r1 - ldr r0, [r0] - ldr r3, _08011618 - adds r1, r2, r3 - lsls r0, 5 - ldr r1, [r1] - adds r1, r0 - mov r8, r1 - ldr r0, _0801161C - adds r7, r2, r0 - add r4, sp, 0x64 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x60 - bl memset - movs r0, 0x6 - str r0, [sp, 0x68] - add r1, sp, 0x6C - movs r0, 0x7 - strh r0, [r1] - movs r2, 0x2 - strh r2, [r1, 0x2] - add r1, sp, 0x70 - movs r0, 0x15 - strh r0, [r1] - mov r0, sp - adds r0, 0x72 - strh r2, [r0] - add r0, sp, 0x74 - strh r2, [r0] - add r5, sp, 0xC4 - str r5, [sp, 0x78] - movs r1, 0x3 - str r1, [sp, 0x80] - add r0, sp, 0x94 - str r1, [r0, 0x4] - add r0, sp, 0xAC - str r1, [r0, 0x4] - add r0, sp, 0x4 - adds r1, r4, 0 - movs r2, 0x60 - bl memcpy - movs r1, 0 - mov r9, r1 - movs r6, 0 - mov r10, r5 -_08011506: - mov r0, r8 - adds r0, 0x8 - adds r4, r0, r6 - ldrb r0, [r4] - bl sub_800FFE8 - lsls r0, 24 - cmp r0, 0 - beq _0801152A - ldr r0, _08011610 - ldr r0, [r0] - ldr r2, _08011620 - adds r0, r2 - add r0, r9 - ldrb r1, [r4] - strb r1, [r0] - movs r3, 0x1 - add r9, r3 -_0801152A: - adds r6, 0x1 - cmp r6, 0x7 - ble _08011506 - ldr r5, _08011610 - ldr r0, [r5] - ldr r1, _08011624 - adds r0, r1 - mov r2, r9 - str r2, [r0] - movs r4, 0 - movs r0, 0x1 - mov r3, r10 - strb r0, [r3] - add r0, sp, 0xC4 - strb r4, [r0, 0x1] - movs r1, 0x12 - strb r1, [r0, 0x2] - strb r4, [r0, 0x3] - strh r4, [r7, 0x18] - strh r2, [r7, 0x1A] - mov r0, r9 - strh r0, [r7, 0x1C] - strh r4, [r7, 0x1E] - strh r4, [r7, 0x20] - strh r4, [r7, 0x4] - movs r0, 0x10 - strh r0, [r7, 0x6] - str r4, [r7] - strh r4, [r7, 0xC] - strh r4, [r7, 0xE] - strh r4, [r7, 0x14] - strh r4, [r7, 0x16] - movs r0, 0x8 - strh r0, [r7, 0x8] - strh r0, [r7, 0xA] - adds r0, r7, 0 - adds r0, 0x28 - bl sub_801317C - movs r1, 0x1C - ldrsh r0, [r7, r1] - movs r1, 0 - bl sub_80095E4 - adds r1, r0, 0 - add r3, sp, 0x4 - adds r2, r3, 0 - adds r0, r1, 0x2 - strh r0, [r2, 0xE] - strh r0, [r3, 0x10] - lsls r1, 3 - adds r0, r7, 0 - bl sub_80137B0 - add r0, sp, 0x4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r1, [r5] - ldr r2, _08011628 - adds r0, r1, r2 - str r4, [r0] - ldr r3, _0801162C - adds r0, r1, r3 - str r4, [r0] - adds r2, 0x8 - adds r0, r1, r2 - str r4, [r0] - adds r3, 0x8 - adds r1, r3 - str r4, [r1] - movs r0, 0 - bl sub_80073B8 - ldr r2, _08011630 - str r4, [sp] - movs r0, 0x10 - movs r1, 0 - movs r3, 0 - bl xxx_format_and_draw - movs r6, 0 - cmp r6, r9 - bge _08011678 - add r0, sp, 0x64 - mov r8, r0 - ldr r1, _08011634 - mov r10, r1 -_080115DC: - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_8013800 - adds r4, r0, 0 - ldr r2, _08011610 - ldr r0, [r2] - ldr r3, _08011620 - adds r0, r3 - adds r0, r6 - ldrb r5, [r0] - ldr r0, _08011638 - adds r1, r5, 0 - bl sub_80101F8 - cmp r5, 0 - bne _08011640 - str r5, [sp] - movs r0, 0xC - adds r1, r4, 0 - ldr r2, _0801163C - movs r3, 0 - bl xxx_format_and_draw - b _08011672 - .align 2, 0 -_08011610: .4byte gUnknown_203B0E4 -_08011614: .4byte 0x00004a18 -_08011618: .4byte 0x00004014 -_0801161C: .4byte 0x00004dfc -_08011620: .4byte 0x00004dec -_08011624: .4byte 0x00004df8 -_08011628: .4byte 0x00004ddc -_0801162C: .4byte 0x00004de0 -_08011630: .4byte gUnknown_80D4104 -_08011634: .4byte gUnknown_202DE30 -_08011638: .4byte gUnknown_202DE58 -_0801163C: .4byte gUnknown_80D4120 -_08011640: - ldr r1, _08011690 - ldr r0, [r1] - ldr r2, _08011694 - adds r0, r2 - ldrb r2, [r0] - adds r0, r5, 0 - mov r1, r8 - bl sub_80926F8 - mov r3, r8 - movs r1, 0x2 - ldrsh r0, [r3, r1] - mov r2, r10 - str r0, [r2] - movs r1, 0 - ldrsh r0, [r3, r1] - str r0, [r2, 0x4] - movs r0, 0 - str r0, [sp] - movs r0, 0xC - adds r1, r4, 0 - ldr r2, _08011698 - movs r3, 0 - bl xxx_format_and_draw -_08011672: - adds r6, 0x1 - cmp r6, r9 - blt _080115DC -_08011678: - movs r0, 0 - bl sub_80073E0 - add sp, 0xC8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011690: .4byte gUnknown_203B0E4 -_08011694: .4byte 0x00004a2c -_08011698: .4byte gUnknown_80D4124 - thumb_func_end sub_8011494 - .align 2,0 diff --git a/asm/code_800E9E4.s b/asm/code_800E9E4.s new file mode 100644 index 000000000..081b86b62 --- /dev/null +++ b/asm/code_800E9E4.s @@ -0,0 +1,2152 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_800E9E4 +sub_800E9E4: + push {lr} + bl sub_800E2C0 + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + bne _0800E9F6 + movs r0, 0 + b _0800E9F8 +_0800E9F6: + movs r0, 0x1 +_0800E9F8: + pop {r1} + bx r1 + thumb_func_end sub_800E9E4 + + thumb_func_start sub_800E9FC +sub_800E9FC: + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r0, _0800EA38 + ldr r1, [r0] + movs r2, 0 + movs r4, 0x1 + negs r4, r4 +_0800EA0C: + ldr r0, [r1, 0x4] + cmp r0, r4 + beq _0800EA20 + cmp r3, 0 + bne _0800EA3C + adds r0, r1, 0 + adds r0, 0x54 + ldrb r0, [r0] + cmp r0, 0 + beq _0800EA3C +_0800EA20: + adds r2, 0x1 + adds r1, 0xD0 + cmp r2, 0x1F + ble _0800EA0C + bl sub_800EC74 + lsls r0, 24 + cmp r0, 0 + bne _0800EA3C + movs r0, 0 + b _0800EA3E + .align 2, 0 +_0800EA38: .4byte gUnknown_203B0CC +_0800EA3C: + movs r0, 0x1 +_0800EA3E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_800E9FC + + thumb_func_start sub_800EA44 +sub_800EA44: + push {r4-r6,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + lsrs r1, 16 + adds r0, r1, 0 + bl sub_800ECB8 + adds r4, r0, 0 + ldr r0, [r4, 0x20] + bl sub_800ECD0 + adds r1, r0, 0 + movs r2, 0 + ldr r0, [r4, 0x1C] + cmp r2, r0 + bge _0800EA7C + adds r3, r0, 0 +_0800EA68: + movs r6, 0 + ldrsh r0, [r1, r6] + cmp r0, r5 + bne _0800EA74 + ldrb r0, [r1, 0x2] + b _0800EA7E +_0800EA74: + adds r2, 0x1 + adds r1, 0xC + cmp r2, r3 + blt _0800EA68 +_0800EA7C: + ldrb r0, [r4, 0x10] +_0800EA7E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_800EA44 + + thumb_func_start sub_800EA84 +sub_800EA84: + push {r4,lr} + sub sp, 0x50 + adds r4, r0, 0 + ldrh r0, [r4] + bl sub_800ECB8 + movs r1, 0 + ldrsh r0, [r0, r1] + str r0, [sp, 0x28] + ldr r0, [r4, 0x10] + str r0, [sp, 0x2C] + ldr r0, [r4, 0xC] + str r0, [sp, 0x30] + ldr r0, [r4, 0x4] + str r0, [sp, 0x34] + ldr r0, [r4, 0x8] + str r0, [sp, 0x38] + ldrh r0, [r4] + bl sub_800ECB8 + movs r2, 0 + ldrsh r0, [r0, r2] + bl sub_800EBBC + str r0, [sp, 0x3C] + ldr r0, _0800EADC + str r0, [sp, 0x40] + add r1, sp, 0x44 + ldr r0, _0800EAE0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + add r1, sp, 0x28 + mov r0, sp + movs r2, 0x28 + bl memcpy + movs r0, 0x5 + mov r1, sp + bl sub_800E208 + add sp, 0x50 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0800EADC: .4byte 0x0000ffff +_0800EAE0: .4byte gUnknown_80B9C60 + thumb_func_end sub_800EA84 + + thumb_func_start sub_800EAE4 +sub_800EAE4: + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + bl sub_800E2C0 + adds r1, r0, 0 + movs r3, 0x1 + negs r3, r3 + cmp r1, r3 + beq _0800EB1E + ldr r2, _0800EB14 + movs r0, 0xD0 + muls r1, r0 + ldr r0, [r2] + adds r1, r0, r1 + ldr r0, [r4] + str r0, [r1, 0x18] + ldr r0, [r1, 0x20] + cmp r0, r3 + beq _0800EB18 + ldr r0, [r5] + str r0, [r1, 0x1C] + b _0800EB1E + .align 2, 0 +_0800EB14: .4byte gUnknown_203B0CC +_0800EB18: + movs r0, 0 + strh r0, [r1, 0x1C] + strh r0, [r1, 0x1E] +_0800EB1E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800EAE4 + + thumb_func_start sub_800EB24 +sub_800EB24: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x20 + adds r6, r1, 0 + mov r8, r2 + adds r5, r3, 0 + ldr r4, [sp, 0x38] + bl sub_800E2C0 + adds r1, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0800EBB0 + ldr r2, _0800EB8C + movs r0, 0xD0 + muls r1, r0 + ldr r0, [r2] + adds r2, r0, r1 + adds r0, r2, 0 + adds r0, 0xCC + ldr r0, [r0] + cmp r0, 0 + bne _0800EB5A + ldr r0, [r6] + str r0, [r2, 0x18] +_0800EB5A: + ldr r0, [r2] + cmp r0, 0x6 + beq _0800EB94 + ldr r0, [r2, 0x8] + movs r1, 0x7 + mov r12, r1 + ands r0, r1 + cmp r0, 0 + bne _0800EB94 + mov r1, sp + ldr r0, _0800EB90 + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldm r0!, {r3,r6} + stm r1!, {r3,r6} + mov r7, r12 + ands r4, r7 + lsls r0, r4, 2 + add r0, sp + ldr r0, [r0] + adds r0, r5, r0 + b _0800EB96 + .align 2, 0 +_0800EB8C: .4byte gUnknown_203B0CC +_0800EB90: .4byte gUnknown_80B9C9C +_0800EB94: + adds r0, r5, 0x1 +_0800EB96: + str r0, [r2, 0x24] + ldr r1, [r2, 0x20] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0800EBAA + mov r1, r8 + ldr r0, [r1] + str r0, [r2, 0x1C] + b _0800EBB0 +_0800EBAA: + movs r0, 0 + strh r0, [r2, 0x1C] + strh r0, [r2, 0x1E] +_0800EBB0: + add sp, 0x20 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800EB24 + + thumb_func_start sub_800EBBC +sub_800EBBC: + push {lr} + bl sub_800ECA4 + ldr r0, [r0, 0x1C] + pop {r1} + bx r1 + thumb_func_end sub_800EBBC + + thumb_func_start sub_800EBC8 +sub_800EBC8: + push {r4,lr} + sub sp, 0x50 + adds r4, r0, 0 + ldrh r0, [r4] + bl sub_800ECB8 + movs r1, 0x4 + ldrsh r0, [r0, r1] + str r0, [sp, 0x28] + ldr r0, [r4, 0x10] + str r0, [sp, 0x2C] + ldr r0, [r4, 0xC] + str r0, [sp, 0x30] + ldr r0, [r4, 0x4] + str r0, [sp, 0x34] + ldr r0, [r4, 0x8] + str r0, [sp, 0x38] + ldrh r0, [r4] + bl sub_800ECB8 + movs r2, 0x4 + ldrsh r0, [r0, r2] + bl sub_800EC68 + str r0, [sp, 0x3C] + ldr r0, _0800EC20 + str r0, [sp, 0x40] + add r1, sp, 0x44 + ldr r0, _0800EC24 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + add r1, sp, 0x28 + mov r0, sp + movs r2, 0x28 + bl memcpy + movs r0, 0x6 + mov r1, sp + bl sub_800E208 + add sp, 0x50 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0800EC20: .4byte 0x0000ffff +_0800EC24: .4byte gUnknown_80B9C60 + thumb_func_end sub_800EBC8 + + thumb_func_start sub_800EC28 +sub_800EC28: + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + bl sub_800E2C0 + adds r1, r0, 0 + movs r3, 0x1 + negs r3, r3 + cmp r1, r3 + beq _0800EC62 + ldr r2, _0800EC58 + movs r0, 0xD0 + muls r1, r0 + ldr r0, [r2] + adds r1, r0, r1 + ldr r0, [r4] + str r0, [r1, 0x18] + ldr r0, [r1, 0x20] + cmp r0, r3 + beq _0800EC5C + ldr r0, [r5] + str r0, [r1, 0x1C] + b _0800EC62 + .align 2, 0 +_0800EC58: .4byte gUnknown_203B0CC +_0800EC5C: + movs r0, 0 + strh r0, [r1, 0x1C] + strh r0, [r1, 0x1E] +_0800EC62: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800EC28 + + thumb_func_start sub_800EC68 +sub_800EC68: + push {lr} + bl sub_800ECA4 + ldr r0, [r0, 0x1C] + pop {r1} + bx r1 + thumb_func_end sub_800EC68 + + thumb_func_start sub_800EC74 +sub_800EC74: + push {lr} + movs r0, 0x1 + bl sub_800F19C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_800EC74 + + thumb_func_start sub_800EC84 +sub_800EC84: + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_800ECB8 + ldrb r0, [r0, 0x8] + pop {r1} + bx r1 + thumb_func_end sub_800EC84 + + thumb_func_start sub_800EC94 +sub_800EC94: + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_800ECB8 + ldrb r0, [r0, 0x9] + pop {r1} + bx r1 + thumb_func_end sub_800EC94 + + thumb_func_start sub_800ECA4 +sub_800ECA4: + adds r1, r0, 0 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0800ECB4 + adds r0, r1 + bx lr + .align 2, 0 +_0800ECB4: .4byte gUnknown_80B9CC4 + thumb_func_end sub_800ECA4 + + thumb_func_start sub_800ECB8 +sub_800ECB8: + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0800ECCC + adds r0, r1 + bx lr + .align 2, 0 +_0800ECCC: .4byte gUnknown_80BDBC4 + thumb_func_end sub_800ECB8 + + thumb_func_start sub_800ECD0 +sub_800ECD0: + adds r1, r0, 0 + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 2 + ldr r1, _0800ECE0 + adds r0, r1 + bx lr + .align 2, 0 +_0800ECE0: .4byte gUnknown_80C183C + thumb_func_end sub_800ECD0 + + thumb_func_start sub_800ECE4 +sub_800ECE4: + lsls r0, 24 + ldr r1, _0800ECF4 + lsrs r0, 23 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_0800ECF4: .4byte gUnknown_80CE73C + thumb_func_end sub_800ECE4 + + thumb_func_start sub_800ECF8 +sub_800ECF8: + lsls r0, 24 + ldr r1, _0800ED08 + lsrs r0, 22 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_0800ED08: .4byte gUnknown_80CE37C + thumb_func_end sub_800ECF8 + + thumb_func_start sub_800ED0C +sub_800ED0C: + lsls r0, 24 + ldr r1, _0800ED1C + lsrs r0, 22 + adds r0, r1 + movs r1, 0x2 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_0800ED1C: .4byte gUnknown_80CE37C + thumb_func_end sub_800ED0C + + thumb_func_start sub_800ED20 +sub_800ED20: + lsls r0, 16 + lsrs r0, 16 + ldr r2, _0800ED34 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r2, 0xC + adds r1, r2 + ldr r0, [r1] + bx lr + .align 2, 0 +_0800ED34: .4byte gUnknown_80BDBC4 + thumb_func_end sub_800ED20 + + thumb_func_start sub_800ED38 +sub_800ED38: + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, _0800ED60 + ldr r0, [r4] + cmp r0, 0 + bne _0800ED54 + movs r0, 0x4C + movs r1, 0xB + bl MemoryAlloc + str r0, [r4] + movs r1, 0x4C + bl MemoryClear8 +_0800ED54: + ldr r0, [r4] + str r5, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800ED60: .4byte gUnknown_203B0D0 + thumb_func_end sub_800ED38 + + thumb_func_start sub_800ED64 +sub_800ED64: + push {r4,lr} + ldr r4, _0800ED7C + ldr r0, [r4] + cmp r0, 0 + beq _0800ED76 + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0800ED76: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800ED7C: .4byte gUnknown_203B0D0 + thumb_func_end sub_800ED64 + + thumb_func_start sub_800ED80 +sub_800ED80: + push {r4,lr} + ldr r2, _0800EDAC + ldr r1, [r2] + movs r0, 0 + str r0, [r1] + adds r4, r2, 0 + movs r3, 0 + movs r2, 0x4 + movs r1, 0x1 +_0800ED92: + ldr r0, [r4] + adds r0, r2 + str r3, [r0] + str r3, [r0, 0x4] + str r3, [r0, 0x8] + adds r2, 0x24 + subs r1, 0x1 + cmp r1, 0 + bge _0800ED92 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800EDAC: .4byte gUnknown_203B0D0 + thumb_func_end sub_800ED80 + + thumb_func_start sub_800EDB0 +sub_800EDB0: + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldr r5, _0800EDDC + movs r2, 0 +_0800EDBA: + ldr r1, [r5] + adds r0, r1, 0x4 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0 + bne _0800EDE0 + adds r1, r2 + adds r1, 0x4 + adds r0, r4, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + movs r0, 0x1 + b _0800EDEA + .align 2, 0 +_0800EDDC: .4byte gUnknown_203B0D0 +_0800EDE0: + adds r2, 0x24 + adds r3, 0x1 + cmp r3, 0x1 + ble _0800EDBA + movs r0, 0 +_0800EDEA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_800EDB0 + + thumb_func_start sub_800EDF0 +sub_800EDF0: + push {r4,lr} + sub sp, 0x24 + adds r4, r1, 0 + cmp r0, 0 + beq _0800EE00 + cmp r0, 0x1 + beq _0800EE1A + b _0800EE44 +_0800EE00: + movs r0, 0x3 + str r0, [sp] + movs r0, 0xE + str r0, [sp, 0xC] + movs r1, 0x1 + negs r1, r1 + str r1, [sp, 0x10] + movs r0, 0xDC + lsls r0, 2 + str r0, [sp, 0x18] + movs r0, 0x1F + str r0, [sp, 0x1C] + b _0800EE40 +_0800EE1A: + movs r0, 0x4 + str r0, [sp] + movs r0, 0xE + str r0, [sp, 0xC] + movs r0, 0xF0 + lsls r0, 4 + str r0, [sp, 0x10] + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x18] + str r0, [sp, 0x1C] + bl sub_8000728 + movs r2, 0x2 + eors r0, r2 + negs r1, r0 + orrs r1, r0 + asrs r1, 31 + ands r1, r2 +_0800EE40: + str r1, [sp, 0x14] + str r4, [sp, 0x4] +_0800EE44: + ldr r0, [r4, 0x4] + str r0, [sp, 0x8] + movs r0, 0 + str r0, [sp, 0x20] + mov r0, sp + bl sub_800EDB0 + add sp, 0x24 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_800EDF0 + + thumb_func_start sub_800EE5C +sub_800EE5C: + push {r4-r6,lr} + adds r4, r0, 0 + bl sub_800ECA4 + adds r6, r0, 0 + cmp r4, 0 + beq _0800EEC2 + ldr r2, [r6] + subs r0, r2, 0x1 + cmp r0, 0x1 + bls _0800EEC2 + ldr r1, [r6, 0x4] + adds r0, r2, 0 + bl sub_800F1C0 + adds r5, r0, 0 + cmp r5, 0 + beq _0800EEC2 + ldr r0, [r6] + ldr r1, [r6, 0x4] + bl sub_800F0F4 + adds r4, r0, 0 + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + bne _0800EE9A + adds r0, r5, 0 + bl sub_800F204 + b _0800EEC2 +_0800EE9A: + movs r0, 0x2 + negs r0, r0 + cmp r4, r0 + beq _0800EEB6 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_800F13C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_800EDF0 + b _0800EEBC +_0800EEB6: + adds r0, r5, 0 + bl sub_800F204 +_0800EEBC: + ldr r0, [r6, 0x4] + bl sub_800F15C +_0800EEC2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_800EE5C + + thumb_func_start sub_800EEC8 +sub_800EEC8: + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_800ECB8 + movs r1, 0 + ldrsh r0, [r0, r1] + bl sub_800EE5C + pop {r0} + bx r0 + thumb_func_end sub_800EEC8 + + thumb_func_start sub_800EEE0 +sub_800EEE0: + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_800ECB8 + movs r1, 0x4 + ldrsh r0, [r0, r1] + bl sub_800EE5C + pop {r0} + bx r0 + thumb_func_end sub_800EEE0 + + thumb_func_start sub_800EEF8 +sub_800EEF8: + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_800ECB8 + movs r1, 0x2 + ldrsh r0, [r0, r1] + bl sub_800EE5C + pop {r0} + bx r0 + thumb_func_end sub_800EEF8 + + thumb_func_start sub_800EF10 +sub_800EF10: + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl sub_800ECB8 + movs r1, 0x6 + ldrsh r0, [r0, r1] + bl sub_800EE5C + pop {r0} + bx r0 + thumb_func_end sub_800EF10 + + thumb_func_start sub_800EF28 +sub_800EF28: + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_800ECE4 + lsls r0, 16 + asrs r0, 16 + bl sub_800EE5C + pop {r0} + bx r0 + thumb_func_end sub_800EF28 + + thumb_func_start sub_800EF40 +sub_800EF40: + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + cmp r1, 0 + beq _0800EF52 + bl sub_800ECF8 + b _0800EF56 +_0800EF52: + bl sub_800ED0C +_0800EF56: + lsls r0, 16 + asrs r0, 16 + bl sub_800EE5C + pop {r0} + bx r0 + thumb_func_end sub_800EF40 + + thumb_func_start sub_800EF64 +sub_800EF64: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r0, _0800EF9C + mov r9, r0 + movs r1, 0x4 + mov r8, r1 + movs r7, 0 + movs r6, 0 + movs r5, 0x1 +_0800EF7A: + mov r0, r9 + ldr r1, [r0] + adds r0, r1, 0x4 + adds r0, r7 + ldr r0, [r0] + cmp r0, 0 + beq _0800F01A + mov r0, r8 + adds r4, r1, r0 + ldr r0, [r4] + cmp r0, 0x3 + beq _0800EFA0 + cmp r0, 0x3 + bls _0800F018 + cmp r0, 0x4 + beq _0800EFDA + b _0800F018 + .align 2, 0 +_0800EF9C: .4byte gUnknown_203B0D0 +_0800EFA0: + ldr r0, [r4, 0x8] + ldr r1, [r4, 0x18] + bl sub_8005674 + mov r1, r9 + ldr r0, [r1] + ldr r0, [r0] + cmp r0, 0 + beq _0800EFCA + cmp r0, 0x1 + bne _0800F00C + ldr r0, [r4, 0x8] + ldr r1, [r0, 0x18] + ldr r0, [r4, 0xC] + adds r0, 0x10 + lsls r0, 20 + lsrs r0, 16 + movs r2, 0x10 + bl sub_809971C + b _0800F00C +_0800EFCA: + ldr r0, [r4, 0xC] + ldr r1, [r4, 0x8] + ldr r1, [r1, 0x18] + ldr r2, [r4, 0x1C] + ldr r3, [r4, 0x20] + bl sub_8005770 + b _0800F00C +_0800EFDA: + bl sub_8000728 + cmp r0, 0x1 + bne _0800F000 + movs r0, 0 + movs r1, 0x1 + bl sub_800CD64 + movs r0, 0 + bl sub_8052210 + movs r0, 0x5 + movs r1, 0 + bl sub_803EAF0 + bl sub_800CB20 + bl xxx_call_update_bg_vram +_0800F000: + ldr r0, [r4, 0x8] + ldr r1, [r4, 0xC] + ldr r2, [r4, 0x10] + ldr r3, [r4, 0x14] + bl sub_8009A1C +_0800F00C: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _0800F018 + bl sub_800F204 + str r6, [r4, 0x4] +_0800F018: + str r6, [r4] +_0800F01A: + movs r0, 0x24 + add r8, r0 + adds r7, 0x24 + subs r5, 0x1 + cmp r5, 0 + bge _0800EF7A + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800EF64 + + thumb_func_start sub_800F034 +sub_800F034: + push {r4-r6,lr} + ldr r4, _0800F074 + ldr r0, [r4] + cmp r0, 0 + bne _0800F04E + movs r0, 0x10 + movs r1, 0xB + bl MemoryAlloc + str r0, [r4] + movs r1, 0x10 + bl MemoryClear8 +_0800F04E: + movs r3, 0 + adds r6, r4, 0 + movs r5, 0x1 + negs r5, r5 + movs r4, 0 +_0800F058: + ldr r0, [r6] + lsls r2, r3, 3 + adds r1, r0, r2 + str r5, [r1] + adds r0, 0x4 + adds r0, r2 + str r4, [r0] + adds r3, 0x1 + cmp r3, 0x1 + ble _0800F058 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800F074: .4byte gUnknown_203B0D4 + thumb_func_end sub_800F034 + + thumb_func_start sub_800F078 +sub_800F078: + push {r4,lr} + ldr r4, _0800F090 + ldr r0, [r4] + cmp r0, 0 + beq _0800F08A + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0800F08A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800F090: .4byte gUnknown_203B0D4 + thumb_func_end sub_800F078 + + thumb_func_start sub_800F094 +sub_800F094: + push {r4-r6,lr} + movs r3, 0 + ldr r6, _0800F0BC + movs r5, 0x1 + negs r5, r5 + movs r4, 0 +_0800F0A0: + ldr r0, [r6] + lsls r2, r3, 3 + adds r1, r0, r2 + str r5, [r1] + adds r0, 0x4 + adds r0, r2 + str r4, [r0] + adds r3, 0x1 + cmp r3, 0x1 + ble _0800F0A0 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800F0BC: .4byte gUnknown_203B0D4 + thumb_func_end sub_800F094 + + thumb_func_start sub_800F0C0 +sub_800F0C0: + push {lr} + cmp r0, 0x3 + bne _0800F0D8 + ldr r0, _0800F0D4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, r1 + bne _0800F0EC + movs r0, 0 + b _0800F0F0 + .align 2, 0 +_0800F0D4: .4byte gUnknown_203B0D4 +_0800F0D8: + ldr r0, _0800F0E8 + ldr r0, [r0] + ldr r0, [r0, 0x8] + cmp r0, r1 + bne _0800F0EC + movs r0, 0x1 + b _0800F0F0 + .align 2, 0 +_0800F0E8: .4byte gUnknown_203B0D4 +_0800F0EC: + movs r0, 0x3 + negs r0, r0 +_0800F0F0: + pop {r1} + bx r1 + thumb_func_end sub_800F0C0 + + thumb_func_start sub_800F0F4 +sub_800F0F4: + push {lr} + cmp r0, 0x3 + bne _0800F114 + ldr r0, _0800F110 + ldr r2, [r0] + ldr r0, [r2] + cmp r0, r1 + beq _0800F11E + ldr r0, [r2, 0x4] + cmp r0, 0 + bne _0800F132 + movs r0, 0 + b _0800F136 + .align 2, 0 +_0800F110: .4byte gUnknown_203B0D4 +_0800F114: + ldr r0, _0800F124 + ldr r2, [r0] + ldr r0, [r2, 0x8] + cmp r0, r1 + bne _0800F128 +_0800F11E: + movs r0, 0x2 + negs r0, r0 + b _0800F136 + .align 2, 0 +_0800F124: .4byte gUnknown_203B0D4 +_0800F128: + ldr r0, [r2, 0xC] + cmp r0, 0 + bne _0800F132 + movs r0, 0x1 + b _0800F136 +_0800F132: + movs r0, 0x1 + negs r0, r0 +_0800F136: + pop {r1} + bx r1 + thumb_func_end sub_800F0F4 + + thumb_func_start sub_800F13C +sub_800F13C: + push {lr} + ldr r1, _0800F158 + ldr r3, [r1] + lsls r1, r0, 3 + adds r0, r3, 0x4 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bne _0800F154 + adds r1, r3, r1 + ldr r0, [r2, 0x4] + str r0, [r1] +_0800F154: + pop {r0} + bx r0 + .align 2, 0 +_0800F158: .4byte gUnknown_203B0D4 + thumb_func_end sub_800F13C + + thumb_func_start sub_800F15C +sub_800F15C: + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldr r5, _0800F17C +_0800F164: + ldr r1, [r5] + lsls r2, r3, 3 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, r4 + bne _0800F180 + adds r1, 0x4 + adds r1, r2 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + b _0800F186 + .align 2, 0 +_0800F17C: .4byte gUnknown_203B0D4 +_0800F180: + adds r3, 0x1 + cmp r3, 0x1 + ble _0800F164 +_0800F186: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800F15C + + thumb_func_start sub_800F18C +sub_800F18C: + ldr r1, _0800F198 + lsls r0, 3 + ldr r1, [r1] + adds r1, r0 + adds r0, r1, 0 + bx lr + .align 2, 0 +_0800F198: .4byte gUnknown_203B0D4 + thumb_func_end sub_800F18C + + thumb_func_start sub_800F19C +sub_800F19C: + push {lr} + ldr r1, _0800F1B4 + ldr r1, [r1] + lsls r0, 3 + adds r1, 0x4 + adds r1, r0 + ldr r0, [r1] + cmp r0, 0 + beq _0800F1B8 + movs r0, 0x1 + b _0800F1BA + .align 2, 0 +_0800F1B4: .4byte gUnknown_203B0D4 +_0800F1B8: + movs r0, 0 +_0800F1BA: + pop {r1} + bx r1 + thumb_func_end sub_800F19C + + thumb_func_start sub_800F1C0 +sub_800F1C0: + push {lr} + sub sp, 0x8 + adds r2, r1, 0 + cmp r0, 0x1 + bcc _0800F1EC + cmp r0, 0x3 + bls _0800F1D4 + cmp r0, 0x4 + beq _0800F1E4 + b _0800F1EC +_0800F1D4: + ldr r1, _0800F1E0 + mov r0, sp + bl sprintf + b _0800F1EC + .align 2, 0 +_0800F1E0: .4byte gUnknown_80CE77C +_0800F1E4: + ldr r1, _0800F1FC + mov r0, sp + bl sprintf +_0800F1EC: + ldr r1, _0800F200 + mov r0, sp + bl Call_OpenFileAndGetFileDataPtr + add sp, 0x8 + pop {r1} + bx r1 + .align 2, 0 +_0800F1FC: .4byte gUnknown_80CE788 +_0800F200: .4byte gEffectFileArchive + thumb_func_end sub_800F1C0 + + thumb_func_start sub_800F204 +sub_800F204: + push {lr} + bl CloseFile + pop {r0} + bx r0 + thumb_func_end sub_800F204 + + thumb_func_start GetDungeonPokemonSprite + @ DungeonPokemonSprite *GetDungeonPokemonSprite(int id) +GetDungeonPokemonSprite: + push {r4,lr} + adds r4, r0, 0 + movs r3, 0 + ldr r0, _0800F230 + ldr r0, [r0] + adds r1, r0, 0x4 + adds r2, r0, 0 + adds r2, 0x8 +_0800F220: + ldrb r0, [r1] + cmp r0, 0 + beq _0800F234 + ldr r0, [r2] + cmp r0, r4 + bne _0800F234 + adds r0, r1, 0 + b _0800F240 + .align 2, 0 +_0800F230: .4byte gDungeonPokemonSprites +_0800F234: + adds r1, 0x40 + adds r2, 0x40 + adds r3, 0x1 + cmp r3, 0x15 + ble _0800F220 + movs r0, 0 +_0800F240: + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetDungeonPokemonSprite + + thumb_func_start NewDungeonPokemonSprite + @ DungeonPokemonSprite *NewDungeonPokemonSprite(void) +NewDungeonPokemonSprite: + push {lr} + movs r2, 0 + ldr r0, _0800F25C + ldr r0, [r0] + adds r1, r0, 0x4 +_0800F252: + ldrb r0, [r1] + cmp r0, 0 + bne _0800F260 + adds r0, r1, 0 + b _0800F26A + .align 2, 0 +_0800F25C: .4byte gDungeonPokemonSprites +_0800F260: + adds r1, 0x40 + adds r2, 0x1 + cmp r2, 0x15 + ble _0800F252 + movs r0, 0 +_0800F26A: + pop {r1} + bx r1 + thumb_func_end NewDungeonPokemonSprite + + thumb_func_start GetNextStatusSymbol + @ u32 GetNextStatusSymbol(?, int select) + @ The "select" parameter exists to differentiate between the two kinds of + @ status symbols that can appear at the same time. + @ Only frozen falls under select = 1, every other symbol falls under select = 0 +GetNextStatusSymbol: + push {r4-r6,lr} + adds r2, r0, 0 + lsls r0, r1, 3 + adds r0, 0x28 + adds r3, r2, r0 + movs r5, 0x80 + lsls r5, 21 + cmp r1, 0 + bne _0800F284 + movs r5, 0x1 +_0800F284: + movs r6, 0x80 + lsls r6, 21 + cmp r1, 0 + bne _0800F290 + movs r6, 0x80 + lsls r6, 20 +_0800F290: + movs r4, 0x1 + cmp r1, 0 + bne _0800F298 + movs r4, 0x1C +_0800F298: + ldr r0, [r2, 0xC] + cmp r0, 0 + bne _0800F2A4 + b _0800F2CC +_0800F2A0: + adds r0, r1, 0 + b _0800F2CE +_0800F2A4: + ldr r2, [r3] + adds r1, r5, 0 + cmp r2, 0 + beq _0800F2AE + adds r1, r2, 0 +_0800F2AE: + movs r2, 0 + cmp r2, r4 + bge _0800F2CC + adds r3, r0, 0 +_0800F2B6: + lsls r1, 1 + cmp r1, r6 + bls _0800F2BE + adds r1, r5, 0 +_0800F2BE: + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0800F2A0 + adds r2, 0x1 + cmp r2, r4 + blt _0800F2B6 +_0800F2CC: + movs r0, 0 +_0800F2CE: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end GetNextStatusSymbol + + thumb_func_start StatusSymbolBitToIndex +StatusSymbolBitToIndex: + push {lr} + movs r1, 0 + cmp r0, 0 + beq _0800F2E4 +_0800F2DC: + lsrs r0, 1 + adds r1, 0x1 + cmp r0, 0 + bne _0800F2DC +_0800F2E4: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end StatusSymbolBitToIndex + + thumb_func_start sub_800F2EC +sub_800F2EC: + push {r4-r7,lr} + sub sp, 0xC + adds r5, r0, 0 + adds r6, r1, 0 + adds r7, r2, 0 + lsls r0, r6, 3 + adds r0, 0x28 + adds r4, r5, r0 + ldr r0, [r5, 0xC] + cmp r0, 0 + bne _0800F306 + str r0, [r4] + b _0800F35C +_0800F306: + ldr r0, [r4] + cmp r0, 0 + bne _0800F30E + str r0, [r4, 0x4] +_0800F30E: + ldr r0, [r4, 0x4] + cmp r0, 0 + bgt _0800F32A + adds r0, r5, 0 + adds r1, r6, 0 + bl GetNextStatusSymbol + adds r1, r0, 0 + ldr r0, [r4] + cmp r0, r1 + beq _0800F326 + str r1, [r4] +_0800F326: + movs r0, 0x3C + b _0800F32C +_0800F32A: + subs r0, 0x1 +_0800F32C: + str r0, [r4, 0x4] + ldrb r0, [r5, 0x10] + cmp r0, 0 + beq _0800F35C + ldr r0, [r4] + cmp r0, 0 + beq _0800F35C + bl StatusSymbolBitToIndex + adds r1, r0, 0 + movs r2, 0x8 + ldrsh r0, [r5, r2] + adds r2, r5, 0 + adds r2, 0x14 + lsls r3, r6, 2 + adds r3, 0x18 + adds r3, r5, r3 + str r7, [sp] + ldrb r4, [r5, 0x11] + str r4, [sp, 0x4] + ldr r4, [r5, 0x4] + str r4, [sp, 0x8] + bl DrawStatusSprite +_0800F35C: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800F2EC + + thumb_func_start DrawStatusSprite + @ void DrawStatusSprite(?, int status, Position *pos, Position *pos_offset, Position *pos_screen, ?) +DrawStatusSprite: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + mov r12, r2 + ldr r0, [sp, 0x20] + mov r8, r0 + ldr r4, [sp, 0x24] + ldr r0, _0800F410 + lsls r1, 3 + adds r2, r1, r0 + ldr r0, [r2] + ldr r1, [r2, 0x4] + str r0, [sp] + str r1, [sp, 0x4] + lsls r2, r0, 1 + ldr r1, [sp] + adds r2, r1 + lsls r2, 3 + ldr r0, _0800F414 + adds r2, r0 + ldr r0, [r2, 0x8] + ldr r6, _0800F418 + adds r7, r0, r6 + movs r0, 0x3 + ands r4, r0 + lsls r4, 10 + ldr r5, _0800F41C + ldrh r1, [r5, 0x4] + ldr r0, _0800F420 + ands r0, r1 + orrs r0, r4 + strh r0, [r5, 0x4] + mov r0, r12 + movs r4, 0 + ldrsh r1, [r0, r4] + ldr r0, [r2] + lsls r0, 2 + subs r1, r0 + mov r6, r8 + movs r4, 0 + ldrsh r0, [r6, r4] + subs r1, r0 + movs r6, 0 + ldrsh r0, [r3, r6] + adds r4, r1, r0 + mov r0, r12 + movs r6, 0x2 + ldrsh r1, [r0, r6] + ldr r0, [r2, 0x4] + lsls r0, 2 + subs r1, r0 + mov r2, r8 + movs r6, 0x2 + ldrsh r0, [r2, r6] + subs r1, r0 + movs r2, 0x2 + ldrsh r0, [r3, r2] + adds r3, r1, r0 + adds r6, r3, 0 + subs r6, 0x10 + movs r0, 0x20 + negs r0, r0 + cmp r4, r0 + bge _0800F3E8 + b _0800F5E4 +_0800F3E8: + cmp r3, r0 + bge _0800F3EE + b _0800F5E4 +_0800F3EE: + cmp r4, 0xEF + ble _0800F3F4 + b _0800F5E4 +_0800F3F4: + cmp r3, 0x9F + ble _0800F3FA + b _0800F5E4 +_0800F3FA: + ldr r0, [sp] + subs r0, 0x1 + cmp r0, 0xF + bls _0800F404 + b _0800F5A6 +_0800F404: + lsls r0, 2 + ldr r1, _0800F424 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0800F410: .4byte gStatusSprites +_0800F414: .4byte gStatusGraphics +_0800F418: .4byte 0x0000032b +_0800F41C: .4byte gUnknown_203B0DC +_0800F420: .4byte 0x0000f3ff +_0800F424: .4byte _0800F428 + .align 2, 0 +_0800F428: + .4byte _0800F468 + .4byte _0800F4CC + .4byte _0800F4CC + .4byte _0800F574 + .4byte _0800F538 + .4byte _0800F4CC + .4byte _0800F4CC + .4byte _0800F498 + .4byte _0800F4CC + .4byte _0800F4CC + .4byte _0800F4CC + .4byte _0800F468 + .4byte _0800F4CC + .4byte _0800F468 + .4byte _0800F4CC + .4byte _0800F500 +_0800F468: + ldrh r2, [r5] + ldr r1, _0800F48C + adds r0, r1, 0 + ands r0, r2 + strh r0, [r5] + ldrh r0, [r5, 0x2] + ands r1, r0 + ldr r0, _0800F490 + ands r4, r0 + movs r0, 0xFE + lsls r0, 8 + ands r1, r0 + orrs r1, r4 + strh r1, [r5, 0x2] + ldr r1, _0800F494 + ands r1, r6 + b _0800F59A + .align 2, 0 +_0800F48C: .4byte 0x00003fff +_0800F490: .4byte 0x000001ff +_0800F494: .4byte 0x00000fff +_0800F498: + movs r3, 0x80 + lsls r3, 8 + ldrh r2, [r5] + ldr r1, _0800F4C0 + adds r0, r1, 0 + ands r0, r2 + orrs r0, r3 + strh r0, [r5] + ldrh r0, [r5, 0x2] + ands r1, r0 + ldr r0, _0800F4C4 + ands r4, r0 + movs r0, 0xFE + lsls r0, 8 + ands r1, r0 + orrs r1, r4 + strh r1, [r5, 0x2] + ldr r1, _0800F4C8 + ands r1, r6 + b _0800F59A + .align 2, 0 +_0800F4C0: .4byte 0x00003fff +_0800F4C4: .4byte 0x000001ff +_0800F4C8: .4byte 0x00000fff +_0800F4CC: + ldrh r2, [r5] + ldr r1, _0800F4F4 + adds r0, r1, 0 + ands r0, r2 + strh r0, [r5] + movs r2, 0x80 + lsls r2, 7 + ldrh r0, [r5, 0x2] + ands r1, r0 + orrs r1, r2 + ldr r0, _0800F4F8 + ands r4, r0 + movs r0, 0xFE + lsls r0, 8 + ands r1, r0 + orrs r1, r4 + strh r1, [r5, 0x2] + ldr r1, _0800F4FC + ands r1, r6 + b _0800F59A + .align 2, 0 +_0800F4F4: .4byte 0x00003fff +_0800F4F8: .4byte 0x000001ff +_0800F4FC: .4byte 0x00000fff +_0800F500: + ldrh r2, [r5] + ldr r1, _0800F52C + adds r0, r1, 0 + ands r0, r2 + strh r0, [r5] + movs r2, 0x80 + lsls r2, 7 + ldrh r0, [r5, 0x2] + ands r1, r0 + orrs r1, r2 + adds r2, r4, 0 + adds r2, 0x8 + ldr r0, _0800F530 + ands r2, r0 + movs r0, 0xFE + lsls r0, 8 + ands r1, r0 + orrs r1, r2 + strh r1, [r5, 0x2] + ldr r1, _0800F534 + ands r1, r6 + b _0800F59A + .align 2, 0 +_0800F52C: .4byte 0x00003fff +_0800F530: .4byte 0x000001ff +_0800F534: .4byte 0x00000fff +_0800F538: + movs r3, 0x80 + lsls r3, 7 + ldrh r2, [r5] + ldr r1, _0800F568 + adds r0, r1, 0 + ands r0, r2 + orrs r0, r3 + strh r0, [r5] + movs r2, 0x80 + lsls r2, 8 + ldrh r0, [r5, 0x2] + ands r1, r0 + orrs r1, r2 + ldr r0, _0800F56C + ands r4, r0 + movs r0, 0xFE + lsls r0, 8 + ands r1, r0 + orrs r1, r4 + strh r1, [r5, 0x2] + ldr r1, _0800F570 + ands r1, r6 + b _0800F59A + .align 2, 0 +_0800F568: .4byte 0x00003fff +_0800F56C: .4byte 0x000001ff +_0800F570: .4byte 0x00000fff +_0800F574: + ldrh r2, [r5] + ldr r1, _0800F5F0 + adds r0, r1, 0 + ands r0, r2 + strh r0, [r5] + movs r2, 0x80 + lsls r2, 8 + ldrh r0, [r5, 0x2] + ands r1, r0 + orrs r1, r2 + ldr r0, _0800F5F4 + ands r4, r0 + movs r0, 0xFE + lsls r0, 8 + ands r1, r0 + orrs r1, r4 + strh r1, [r5, 0x2] + ldr r1, _0800F5F8 + ands r1, r3 +_0800F59A: + lsls r1, 4 + ldrh r2, [r5, 0x6] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x6] +_0800F5A6: + ldr r0, _0800F5FC + ands r7, r0 + ldrh r1, [r5, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r1 + orrs r0, r7 + movs r1, 0xF + ldr r3, [sp, 0x4] + ands r1, r3 + lsls r1, 12 + ldr r2, _0800F5F8 + ands r0, r2 + orrs r0, r1 + strh r0, [r5, 0x4] + mov r4, r12 + movs r6, 0x2 + ldrsh r1, [r4, r6] + mov r2, r8 + movs r3, 0x2 + ldrsh r0, [r2, r3] + subs r1, r0 + lsrs r0, r1, 31 + adds r1, r0 + asrs r1, 1 + adds r1, 0x1 + adds r0, r5, 0 + movs r2, 0 + movs r3, 0 + bl AddSprite +_0800F5E4: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800F5F0: .4byte 0x00003fff +_0800F5F4: .4byte 0x000001ff +_0800F5F8: .4byte 0x00000fff +_0800F5FC: .4byte 0x000003ff + thumb_func_end DrawStatusSprite + + thumb_func_start LoadStatusGraphics +LoadStatusGraphics: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r1, 24 + lsrs r1, 24 + mov r9, r1 + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + ldr r0, _0800F660 + adds r1, r0 + ldr r7, [r1, 0x14] + ldr r3, [r1, 0x10] + ldr r2, [r1] + ldr r0, [r1, 0x4] + muls r0, r2 + lsls r4, r0, 5 + mov r8, r4 + ldr r0, [r1, 0x8] + ldr r1, _0800F664 + adds r0, r1 + lsls r5, r0, 5 + adds r6, r5, 0 + ldr r0, _0800F668 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + bge _0800F63C + adds r0, 0x3 +_0800F63C: + asrs r0, 2 + adds r1, r3, 0 + bl __modsi3 + muls r0, r4 + ldr r1, _0800F66C + adds r0, r1 + adds r1, r7, r0 + mov r2, r9 + cmp r2, 0 + beq _0800F674 + ldr r2, _0800F670 + adds r0, r5, r2 + adds r2, r4, 0 + bl sub_80098BC + b _0800F67E + .align 2, 0 +_0800F660: .4byte gStatusGraphics +_0800F664: .4byte 0x0000032b +_0800F668: .4byte gDungeonPokemonSprites +_0800F66C: .4byte gStatusGraphics4bpp +_0800F670: .4byte 0x06010000 +_0800F674: + ldr r2, _0800F68C + adds r0, r6, r2 + mov r2, r8 + bl CpuCopy +_0800F67E: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800F68C: .4byte 0x06010000 + thumb_func_end LoadStatusGraphics + + thumb_func_start InitDungeonPokemonSprites +InitDungeonPokemonSprites: + push {r4,r5,lr} + ldr r5, _0800F738 + ldr r0, [r5] + cmp r0, 0 + bne _0800F6AC + ldr r4, _0800F73C + adds r0, r4, 0 + movs r1, 0xC + bl MemoryAlloc + str r0, [r5] + adds r1, r4, 0 + bl MemoryClear8 +_0800F6AC: + ldr r1, [r5] + movs r0, 0 + str r0, [r1] + movs r0, 0x1 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x2 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x3 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x4 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x5 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x6 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x7 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x8 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x9 + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0xA + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0xB + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0xC + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0xD + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0xE + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0xF + movs r1, 0 + bl LoadStatusGraphics + movs r0, 0x10 + movs r1, 0 + bl LoadStatusGraphics + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800F738: .4byte gDungeonPokemonSprites +_0800F73C: .4byte 0x00000584 + thumb_func_end InitDungeonPokemonSprites + + thumb_func_start FreeDungeonPokemonSprites +FreeDungeonPokemonSprites: + push {r4,lr} + ldr r4, _0800F758 + ldr r0, [r4] + cmp r0, 0 + beq _0800F752 + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0800F752: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800F758: .4byte gDungeonPokemonSprites + thumb_func_end FreeDungeonPokemonSprites + + thumb_func_start UpdateDungeonPokemonSprite + @ void UpdateDungeonPokemonSprite(int id, short species, int status, char visible) +UpdateDungeonPokemonSprite: + push {r4-r7,lr} + adds r4, r0, 0 + adds r7, r2, 0 + lsls r1, 16 + asrs r5, r1, 16 + lsls r3, 24 + lsrs r6, r3, 24 + ldr r0, _0800F790 + ldr r0, [r0] + cmp r0, 0 + beq _0800F788 + adds r0, r4, 0 + bl GetDungeonPokemonSprite + cmp r0, 0 + beq _0800F788 + movs r1, 0 + strh r5, [r0, 0x8] + str r7, [r0, 0xC] + strb r6, [r0, 0x10] + adds r0, 0x38 + strb r1, [r0] +_0800F788: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800F790: .4byte gDungeonPokemonSprites + thumb_func_end UpdateDungeonPokemonSprite + + thumb_func_start sub_800F794 +sub_800F794: + push {r4-r6,lr} + adds r1, r0, 0 + adds r4, r2, 0 + adds r5, r3, 0 + ldr r6, [sp, 0x10] + ldr r0, _0800F7CC + ldr r0, [r0] + cmp r0, 0 + beq _0800F7C6 + adds r0, r1, 0 + bl GetDungeonPokemonSprite + adds r2, r0, 0 + cmp r2, 0 + beq _0800F7C6 + adds r1, r2, 0 + adds r1, 0x38 + movs r0, 0x1 + strb r0, [r1] + strh r4, [r2, 0x3C] + strh r5, [r2, 0x3E] + ldr r0, [r6] + str r0, [r2, 0x20] + ldr r0, [r6, 0xC] + str r0, [r2, 0x24] +_0800F7C6: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0800F7CC: .4byte gDungeonPokemonSprites + thumb_func_end sub_800F794 + + thumb_func_start sub_800F7D0 +sub_800F7D0: + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r0 + ldr r0, _0800F800 + ldr r0, [r0] + cmp r0, 0 + beq _0800F8C0 + ldr r1, [r0] + adds r0, r1, 0 + cmp r1, 0 + bge _0800F7EA + adds r0, r1, 0x3 +_0800F7EA: + asrs r0, 2 + lsls r0, 2 + subs r0, r1, r0 + cmp r0, 0x1 + beq _0800F82A + cmp r0, 0x1 + bgt _0800F804 + cmp r0, 0 + beq _0800F80E + b _0800F888 + .align 2, 0 +_0800F800: .4byte gDungeonPokemonSprites +_0800F804: + cmp r0, 0x2 + beq _0800F846 + cmp r0, 0x3 + beq _0800F868 + b _0800F888 +_0800F80E: + movs r0, 0x1 + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0x2 + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0x3 + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0x4 + b _0800F860 +_0800F82A: + movs r0, 0x5 + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0x6 + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0x7 + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0x8 + b _0800F860 +_0800F846: + movs r0, 0x9 + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0xA + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0xB + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0xC +_0800F860: + movs r1, 0x1 + bl LoadStatusGraphics + b _0800F888 +_0800F868: + movs r0, 0xD + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0xE + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0xF + movs r1, 0x1 + bl LoadStatusGraphics + movs r0, 0x10 + movs r1, 0x1 + bl LoadStatusGraphics +_0800F888: + movs r5, 0 + movs r6, 0x4 +_0800F88C: + ldr r7, _0800F8CC + ldr r4, [r7] + lsls r0, r5, 6 + adds r0, r4, r0 + ldrb r0, [r0, 0x4] + cmp r0, 0 + beq _0800F8B0 + adds r4, r6 + adds r0, r4, 0 + movs r1, 0 + mov r2, r8 + bl sub_800F2EC + adds r0, r4, 0 + movs r1, 0x1 + mov r2, r8 + bl sub_800F2EC +_0800F8B0: + adds r6, 0x40 + adds r5, 0x1 + cmp r5, 0x15 + ble _0800F88C + ldr r1, [r7] + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] +_0800F8C0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800F8CC: .4byte gDungeonPokemonSprites + thumb_func_end sub_800F7D0 + + thumb_func_start AddPokemonDungeonSprite + @ void AddPokemonDungeonSprite(int id, short species, Position *pos, ?) +AddPokemonDungeonSprite: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + adds r7, r2, 0 + mov r8, r3 + lsls r1, 16 + asrs r6, r1, 16 + ldr r0, _0800F92C + ldr r0, [r0] + cmp r0, 0 + beq _0800F920 + adds r0, r5, 0 + bl GetDungeonPokemonSprite + adds r4, r0, 0 + cmp r4, 0 + bne _0800F920 + bl NewDungeonPokemonSprite + adds r1, r0, 0 + cmp r1, 0 + beq _0800F920 + movs r0, 0x1 + strb r0, [r1] + str r5, [r1, 0x4] + strh r6, [r1, 0x8] + str r4, [r1, 0xC] + ldr r0, [r7] + str r0, [r1, 0x14] + mov r0, r8 + strb r0, [r1, 0x11] + ldr r0, _0800F930 + ldr r0, [r0] + str r0, [r1, 0x1C] + str r0, [r1, 0x18] + str r4, [r1, 0x28] + str r4, [r1, 0x2C] + str r4, [r1, 0x30] + str r4, [r1, 0x34] +_0800F920: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800F92C: .4byte gDungeonPokemonSprites +_0800F930: .4byte gUnknown_80D3564 + thumb_func_end AddPokemonDungeonSprite + + thumb_func_start DeletePokemonDungeonSprite + @ void DeletePokemonDungeonSprite(int id) +DeletePokemonDungeonSprite: + push {lr} + adds r1, r0, 0 + ldr r0, _0800F954 + ldr r0, [r0] + cmp r0, 0 + beq _0800F950 + adds r0, r1, 0 + bl GetDungeonPokemonSprite + cmp r0, 0 + beq _0800F950 + movs r1, 0x40 + bl MemoryClear8 +_0800F950: + pop {r0} + bx r0 + .align 2, 0 +_0800F954: .4byte gDungeonPokemonSprites + thumb_func_end DeletePokemonDungeonSprite + + .align 2,0 diff --git a/asm/code_800F990.s b/asm/code_800F990.s new file mode 100644 index 000000000..c1164d98f --- /dev/null +++ b/asm/code_800F990.s @@ -0,0 +1,2653 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_800F990 +sub_800F990: + push {r4-r7,lr} + sub sp, 0x8 + adds r6, r0, 0 + ldr r4, _0800FA20 + ldr r0, [r6, 0x8] + str r0, [r4] + ldr r1, _0800FA24 + ldr r2, _0800FA28 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + movs r1, 0x14 + bl sub_80095CC + movs r0, 0x2 + bl xxx_update_some_bg_tiles + ldr r1, [r4] + ldr r0, _0800FA2C + adds r2, r1, r0 + ldr r0, _0800FA30 + str r0, [r2] + ldrb r0, [r6, 0x5] + ldr r2, _0800FA34 + adds r1, r2 + movs r5, 0 + strb r0, [r1] + bl sub_8010DA4 + ldr r0, [r4] + ldr r2, _0800FA38 + adds r1, r0, r2 + movs r2, 0x1 + negs r2, r2 + str r2, [r1] + ldr r1, _0800FA3C + adds r0, r1 + str r2, [r0] + ldrb r0, [r6, 0x4] + bl sub_800FC5C + ldr r0, [r4] + ldr r2, _0800FA40 + adds r1, r0, r2 + adds r2, 0x4 + adds r0, r2 + ldr r0, [r0] + str r0, [r1] + ldr r1, _0800FA44 + movs r0, 0xFF + strb r0, [r1] + ldr r0, _0800FA48 + strb r5, [r0] + bl sub_8011760 + add r7, sp, 0x4 +_0800FA00: + movs r5, 0 + str r5, [sp] + str r5, [sp, 0x4] + mov r0, sp + adds r1, r7, 0 + bl sub_800FAA8 + cmp r0, 0x1 + bne _0800FA4C + ldr r0, [sp] + ldr r1, [sp, 0x4] + movs r2, 0x32 + bl sub_80100C0 + b _0800FA00 + .align 2, 0 +_0800FA20: .4byte gUnknown_203B0E4 +_0800FA24: .4byte gUnknown_2026E4E +_0800FA28: .4byte 0x00001010 +_0800FA2C: .4byte 0x00004014 +_0800FA30: .4byte gFriendAreaLocations +_0800FA34: .4byte 0x00004a2c +_0800FA38: .4byte 0x00004a28 +_0800FA3C: .4byte 0x00004a1c +_0800FA40: .4byte 0x00004a20 +_0800FA44: .4byte gUnknown_202DE18 +_0800FA48: .4byte gUnknown_202DE19 +_0800FA4C: + cmp r0, 0x2 + bne _0800FA6C + bl sub_800FB6C + lsls r0, 24 + cmp r0, 0 + beq _0800FA00 + ldr r0, [r4] + ldr r1, _0800FA68 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r6, 0xC] + b _0800FA92 + .align 2, 0 +_0800FA68: .4byte 0x00004df4 +_0800FA6C: + cmp r0, 0x3 + bne _0800FA00 + ldr r0, [r4] + ldr r2, _0800FA8C + adds r1, r0, r2 + adds r2, 0x8 + adds r0, r2 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + beq _0800FA90 + movs r1, 0 + movs r2, 0xA + bl sub_80100C0 + b _0800FA00 + .align 2, 0 +_0800FA8C: .4byte 0x00004a18 +_0800FA90: + strb r5, [r6, 0xC] +_0800FA92: + bl sub_800FC28 + bl sub_8010EF0 + bl nullsub_16 + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_800F990 + + thumb_func_start sub_800FAA8 +sub_800FAA8: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r0 + mov r9, r1 + movs r5, 0 + bl sub_8011300 + bl sub_8011398 +_0800FABE: + bl sub_801169C + bl sub_8010014 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xFF + beq _0800FB1C + ldr r6, _0800FB50 + ldr r2, [r6] + ldr r1, _0800FB54 + adds r0, r2, r1 + ldr r4, [r0] + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 4 + adds r0, r2 + lsls r1, r3, 1 + ldr r7, _0800FB58 + adds r0, r7 + adds r1, r0, r1 + movs r7, 0 + ldrsh r0, [r1, r7] + cmp r0, 0 + blt _0800FB1C + adds r1, r0, 0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + ldr r7, _0800FB5C + adds r0, r7 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, 0 + beq _0800FB1C + movs r5, 0x1 + mov r0, r8 + str r1, [r0] + mov r1, r9 + str r3, [r1] + ldr r1, [r6] + ldr r2, _0800FB60 + adds r0, r1, r2 + str r3, [r0] + ldr r7, _0800FB64 + adds r1, r7 + str r4, [r1] +_0800FB1C: + ldr r4, _0800FB68 + ldrh r1, [r4, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0800FB2E + bl sub_80117D0 + movs r5, 0x2 +_0800FB2E: + ldrh r1, [r4, 0x2] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0800FB3E + bl sub_80117E4 + movs r5, 0x3 +_0800FB3E: + cmp r5, 0 + beq _0800FABE + adds r0, r5, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0800FB50: .4byte gUnknown_203B0E4 +_0800FB54: .4byte 0x00004a18 +_0800FB58: .4byte 0x0000401a +_0800FB5C: .4byte 0x00004018 +_0800FB60: .4byte 0x00004a28 +_0800FB64: .4byte 0x00004a1c +_0800FB68: .4byte gRealInputs + thumb_func_end sub_800FAA8 + + thumb_func_start sub_800FB6C +sub_800FB6C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r0, 0 + mov r8, r0 + bl sub_8011494 + ldr r7, _0800FBE8 + ldr r6, _0800FBEC +_0800FB7E: + ldr r5, [r7] + ldr r1, _0800FBF0 + adds r4, r5, r1 + adds r0, r4, 0 + bl AddMenuCursorSprite + bl sub_801169C + ldrh r1, [r6, 0x4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0800FBA2 + adds r0, r4, 0 + bl MoveMenuCursorDown + bl sub_80117F8 +_0800FBA2: + ldrh r1, [r6, 0x4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0800FBB6 + adds r0, r4, 0 + bl MoveMenuCursorUp + bl sub_80117F8 +_0800FBB6: + ldrh r1, [r6, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0800FBCA + ldr r2, _0800FBF4 + adds r0, r5, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0800FC00 +_0800FBCA: + bl sub_80117D0 + ldr r1, [r7] + movs r3, 0x18 + ldrsh r2, [r4, r3] + ldr r3, _0800FBF8 + adds r0, r1, r3 + adds r0, r2 + ldrb r0, [r0] + ldr r2, _0800FBFC + adds r1, r2 + strb r0, [r1] + movs r3, 0x1 + mov r8, r3 + b _0800FC16 + .align 2, 0 +_0800FBE8: .4byte gUnknown_203B0E4 +_0800FBEC: .4byte gRealInputs +_0800FBF0: .4byte 0x00004dfc +_0800FBF4: .4byte 0x00004e25 +_0800FBF8: .4byte 0x00004dec +_0800FBFC: .4byte 0x00004df4 +_0800FC00: + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _0800FC12 + ldr r1, _0800FC24 + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0800FB7E +_0800FC12: + bl sub_80117E4 +_0800FC16: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0800FC24: .4byte 0x00004e26 + thumb_func_end sub_800FB6C + + thumb_func_start sub_800FC28 +sub_800FC28: + push {r4,r5,lr} + bl sub_8011168 + bl sub_80117AC + ldr r5, _0800FC54 + movs r4, 0x3B +_0800FC36: + ldr r1, [r5] + ldr r0, _0800FC58 + adds r1, r0 + ldr r0, [r1] + subs r0, 0x2 + str r0, [r1] + bl sub_801169C + subs r4, 0x1 + cmp r4, 0 + bge _0800FC36 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0800FC54: .4byte gUnknown_203B0E4 +_0800FC58: .4byte 0x00004dcc + thumb_func_end sub_800FC28 + + thumb_func_start sub_800FC5C +sub_800FC5C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x40 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0x14] + movs r0, 0 + str r0, [sp, 0x18] + mov r8, r0 + ldr r1, _0800FD1C + mov r9, r1 + ldr r2, _0800FD20 + str r2, [sp, 0x38] +_0800FC7C: + movs r7, 0 + movs r3, 0 + mov r10, r3 + mov r4, r9 + ldr r0, [r4] + ldr r1, [sp, 0x38] + adds r6, r0, r1 + ldr r2, _0800FD24 + adds r0, r2 + mov r3, r8 + lsls r1, r3, 5 + ldr r0, [r0] + adds r2, r0, r1 + adds r1, r6, 0x2 + movs r5, 0x7 +_0800FC9A: + ldrh r0, [r1] + ldr r4, _0800FD28 + orrs r0, r4 + strh r0, [r1] + adds r1, 0x2 + subs r5, 0x1 + cmp r5, 0 + bge _0800FC9A + movs r5, 0 + adds r1, r2, 0 + adds r1, 0x8 +_0800FCB0: + adds r4, r1, r5 + ldrb r0, [r4] + str r1, [sp, 0x3C] + bl sub_800FFE8 + lsls r0, 24 + ldr r1, [sp, 0x3C] + cmp r0, 0 + beq _0800FCE4 + ldrb r0, [r4] + ldr r7, [sp, 0x14] + cmp r0, r7 + bne _0800FCCE + mov r2, r8 + str r2, [sp, 0x18] +_0800FCCE: + cmp r0, 0 + bne _0800FCE2 + mov r3, r9 + ldr r0, [r3] + ldr r4, _0800FD2C + adds r0, r4 + mov r7, r8 + str r7, [r0] + movs r0, 0x1 + mov r10, r0 +_0800FCE2: + movs r7, 0x1 +_0800FCE4: + adds r5, 0x1 + cmp r5, 0x7 + ble _0800FCB0 + cmp r7, 0 + beq _0800FD30 + movs r5, 0 + movs r4, 0x1 + strb r4, [r6] + adds r3, r6, 0 + adds r3, 0x14 + mov r1, r9 + ldr r0, [r1] + ldr r1, [r0, 0x8] + movs r2, 0x1 + mov r7, r10 + cmp r7, 0 + beq _0800FD08 + movs r2, 0xC +_0800FD08: + movs r0, 0x40 + str r0, [sp] + str r5, [sp, 0x4] + str r4, [sp, 0x8] + adds r0, r3, 0 + movs r3, 0 + bl sub_80053AC + b _0800FD32 + .align 2, 0 +_0800FD1C: .4byte gUnknown_203B0E4 +_0800FD20: .4byte 0x00004018 +_0800FD24: .4byte 0x00004014 +_0800FD28: .4byte 0x0000ffff +_0800FD2C: .4byte 0x00004a24 +_0800FD30: + strb r7, [r6] +_0800FD32: + ldr r0, [sp, 0x38] + adds r0, 0x50 + str r0, [sp, 0x38] + movs r1, 0x1 + add r8, r1 + mov r2, r8 + cmp r2, 0x1F + ble _0800FC7C + movs r3, 0 + mov r8, r3 + ldr r4, [sp, 0x18] + lsls r4, 5 + str r4, [sp, 0x34] +_0800FD4C: + mov r7, r8 + lsls r0, r7, 2 + add r0, r8 + lsls r0, 4 + ldr r1, _0800FEDC + adds r0, r1 + ldr r2, _0800FEE0 + ldr r1, [r2] + adds r3, r1, r0 + ldr r4, _0800FEE4 + adds r1, r4 + lsls r2, r7, 5 + ldr r0, [r1] + adds r0, r2 + str r0, [sp, 0x1C] + ldrb r0, [r3] + adds r7, 0x1 + str r7, [sp, 0x28] + cmp r0, 0 + bne _0800FD76 + b _0800FF56 +_0800FD76: + movs r5, 0 + adds r3, 0x2 + mov r10, r3 + ldr r4, [sp, 0x1C] + adds r4, 0x10 + ldr r6, _0800FEE0 +_0800FD82: + lsls r0, r5, 1 + mov r1, r10 + adds r2, r1, r0 + ldr r1, _0800FEE8 + strh r1, [r2] + adds r1, r4, r0 + ldrh r3, [r1] + movs r7, 0 + ldrsh r0, [r1, r7] + cmp r0, 0 + blt _0800FDB0 + adds r1, r0, 0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + ldr r1, _0800FEDC + adds r0, r1 + ldr r1, [r6] + adds r1, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _0800FDB0 + strh r3, [r2] +_0800FDB0: + adds r5, 0x1 + cmp r5, 0x7 + ble _0800FD82 + ldr r3, _0800FEE0 + ldr r2, [r3] + ldr r4, _0800FEEC + adds r0, r2, r4 + ldr r1, [r0] + ldr r7, _0800FEF0 + adds r0, r2, r7 + ldr r3, [r0] + cmp r1, 0 + blt _0800FDEC + cmp r3, 0 + blt _0800FDEC + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 4 + ldr r4, _0800FEDC + adds r0, r4 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, 0 + beq _0800FDEC + adds r1, 0x4 + movs r0, 0x7 + ands r1, r0 + lsls r0, r1, 1 + add r0, r10 + strh r3, [r0] +_0800FDEC: + movs r5, 0 +_0800FDEE: + movs r7, 0x1 + negs r7, r7 + str r7, [sp, 0x20] + ldr r0, _0800FEF4 + str r0, [sp, 0x24] + lsls r0, r5, 1 + mov r2, r10 + adds r1, r2, r0 + movs r3, 0 + ldrsh r1, [r1, r3] + str r0, [sp, 0x30] + adds r4, r5, 0x1 + str r4, [sp, 0x2C] + cmp r1, 0 + blt _0800FE0E + b _0800FF4E +_0800FE0E: + movs r6, 0 +_0800FE10: + lsls r0, r6, 2 + adds r0, r6 + lsls r0, 4 + ldr r7, _0800FEDC + adds r0, r7 + ldr r2, _0800FEE0 + ldr r1, [r2] + adds r3, r1, r0 + ldr r4, _0800FEE4 + adds r1, r4 + lsls r2, r6, 5 + ldr r0, [r1] + adds r2, r0, r2 + adds r7, r6, 0x1 + mov r9, r7 + cmp r6, r8 + bne _0800FE34 + b _0800FF3A +_0800FE34: + ldrb r0, [r3] + cmp r0, 0 + bne _0800FE3C + b _0800FF3A +_0800FE3C: + movs r1, 0x4 + ldrsh r0, [r2, r1] + ldr r3, [sp, 0x1C] + movs r4, 0x4 + ldrsh r1, [r3, r4] + subs r0, r1 + lsls r0, 8 + str r0, [sp, 0xC] + movs r7, 0x6 + ldrsh r0, [r2, r7] + movs r2, 0x6 + ldrsh r1, [r3, r2] + subs r0, r1 + lsls r0, 8 + str r0, [sp, 0x10] + add r0, sp, 0xC + bl sub_800A0B0 + adds r2, r0, 0 + ldr r0, [sp, 0xC] + cmp r0, 0 + bge _0800FE6A + adds r0, 0x3 +_0800FE6A: + asrs r1, r0, 2 + str r1, [sp, 0xC] + ldr r0, [sp, 0x10] + cmp r0, 0 + bge _0800FE76 + adds r0, 0x3 +_0800FE76: + asrs r0, 2 + str r0, [sp, 0x10] + cmp r1, 0 + bge _0800FE80 + adds r1, 0xFF +_0800FE80: + asrs r1, 8 + str r1, [sp, 0xC] + cmp r0, 0 + bge _0800FE8A + adds r0, 0xFF +_0800FE8A: + asrs r0, 8 + str r0, [sp, 0x10] + cmp r1, 0 + bne _0800FE96 + movs r0, 0x1 + str r0, [sp, 0xC] +_0800FE96: + ldr r0, [sp, 0x10] + cmp r0, 0 + bne _0800FEA0 + movs r0, 0x1 + str r0, [sp, 0x10] +_0800FEA0: + movs r7, 0 + cmp r5, 0x2 + bne _0800FF04 + ldr r1, _0800FEF8 + ldr r4, _0800FEFC + movs r3, 0x8 + cmp r2, r1 + ble _0800FEB8 + ldr r0, _0800FF00 +_0800FEB2: + adds r2, r0 + cmp r2, r1 + bgt _0800FEB2 +_0800FEB8: + cmp r2, 0 + bge _0800FEC6 + movs r0, 0x80 + lsls r0, 5 +_0800FEC0: + adds r2, r0 + cmp r2, 0 + blt _0800FEC0 +_0800FEC6: + adds r1, r3, r4 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, r2 + blt _0800FF20 + movs r4, 0x2 + ldrsh r0, [r1, r4] + cmp r0, r2 + ble _0800FF1C + b _0800FF20 + .align 2, 0 +_0800FEDC: .4byte 0x00004018 +_0800FEE0: .4byte gUnknown_203B0E4 +_0800FEE4: .4byte 0x00004014 +_0800FEE8: .4byte 0x0000ffff +_0800FEEC: .4byte 0x00004a28 +_0800FEF0: .4byte 0x00004a1c +_0800FEF4: .4byte 0x000f423f +_0800FEF8: .4byte 0x00000fff +_0800FEFC: .4byte gUnknown_80D3EBC +_0800FF00: .4byte 0xfffff000 +_0800FF04: + ldr r0, _0800FFC8 + lsls r1, r5, 2 + adds r1, r0 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, r2 + bgt _0800FF1C + movs r4, 0x2 + ldrsh r0, [r1, r4] + cmp r0, r2 + ble _0800FF1C + movs r7, 0x1 +_0800FF1C: + cmp r7, 0 + beq _0800FF3A +_0800FF20: + ldr r0, [sp, 0xC] + adds r1, r0, 0 + muls r1, r0 + ldr r0, [sp, 0x10] + adds r7, r0, 0 + muls r7, r0 + adds r0, r7, 0 + adds r1, r0 + ldr r0, [sp, 0x24] + cmp r0, r1 + ble _0800FF3A + str r1, [sp, 0x24] + str r6, [sp, 0x20] +_0800FF3A: + mov r6, r9 + cmp r6, 0x1F + bgt _0800FF42 + b _0800FE10 +_0800FF42: + ldr r1, [sp, 0x20] + cmp r1, 0 + blt _0800FF4E + ldr r0, [sp, 0x30] + add r0, r10 + strh r1, [r0] +_0800FF4E: + ldr r5, [sp, 0x2C] + cmp r5, 0x7 + bgt _0800FF56 + b _0800FDEE +_0800FF56: + ldr r3, [sp, 0x28] + mov r8, r3 + cmp r3, 0x1F + bgt _0800FF60 + b _0800FD4C +_0800FF60: + ldr r4, _0800FFCC + ldr r1, [r4] + ldr r7, _0800FFD0 + adds r0, r1, r7 + ldr r1, [r1, 0xC] + movs r2, 0 + str r2, [sp] + str r2, [sp, 0x4] + movs r2, 0x1 + str r2, [sp, 0x8] + movs r2, 0 + movs r3, 0 + bl sub_80053AC + ldr r2, [r4] + ldr r1, _0800FFD4 + adds r0, r2, r1 + ldr r3, [sp, 0x18] + str r3, [r0] + ldr r4, _0800FFD8 + adds r1, r2, r4 + ldr r7, _0800FFDC + adds r0, r2, r7 + ldr r0, [r0] + ldr r3, [sp, 0x34] + adds r0, r3, r0 + ldr r0, [r0, 0x4] + str r0, [r1] + ldrh r0, [r1] + subs r0, 0x78 + subs r4, 0x4 + adds r1, r2, r4 + strh r0, [r1] + ldr r7, _0800FFE0 + adds r0, r2, r7 + ldrh r0, [r0] + subs r0, 0x50 + ldr r1, _0800FFE4 + adds r2, r1 + strh r0, [r2] + bl sub_8011240 + bl sub_80110B0 + add sp, 0x40 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800FFC8: .4byte gUnknown_80D3EBC +_0800FFCC: .4byte gUnknown_203B0E4 +_0800FFD0: .4byte 0x00004c10 +_0800FFD4: .4byte 0x00004a18 +_0800FFD8: .4byte 0x00004dd8 +_0800FFDC: .4byte 0x00004014 +_0800FFE0: .4byte 0x00004dda +_0800FFE4: .4byte 0x00004dd6 + thumb_func_end sub_800FC5C + + thumb_func_start sub_800FFE8 +sub_800FFE8: + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x39 + bhi _08010004 + cmp r0, 0 + beq _0801000C + ldr r0, _08010008 + ldr r0, [r0] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0801000C +_08010004: + movs r0, 0 + b _0801000E + .align 2, 0 +_08010008: .4byte gFriendAreas +_0801000C: + movs r0, 0x1 +_0801000E: + pop {r1} + bx r1 + thumb_func_end sub_800FFE8 + + thumb_func_start sub_8010014 +sub_8010014: + push {r4,r5,lr} + sub sp, 0x20 + ldr r1, _08010094 + mov r0, sp + movs r2, 0x10 + bl memcpy + add r4, sp, 0x10 + ldr r1, _08010098 + adds r0, r4, 0 + movs r2, 0x10 + bl memcpy + movs r2, 0 + ldr r0, _0801009C + ldrh r3, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r3 + mov r5, sp + cmp r0, 0 + beq _08010042 + adds r5, r4, 0 +_08010042: + adds r1, r3, 0 + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0801004E + movs r2, 0x1 +_0801004E: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0801005A + movs r0, 0x2 + orrs r2, r0 +_0801005A: + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08010066 + movs r0, 0x4 + orrs r2, r0 +_08010066: + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + beq _08010072 + movs r0, 0x8 + orrs r2, r0 +_08010072: + ldr r3, _080100A0 + adds r2, r5, r2 + ldrb r1, [r2] + ldrb r0, [r3] + cmp r0, r1 + bne _080100A8 + ldr r1, _080100A4 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bls _080100B0 + ldrb r0, [r2] + b _080100B2 + .align 2, 0 +_08010094: .4byte gUnknown_80D3EDC +_08010098: .4byte gUnknown_80D3EEC +_0801009C: .4byte gRealInputs +_080100A0: .4byte gUnknown_202DE18 +_080100A4: .4byte gUnknown_202DE19 +_080100A8: + strb r1, [r3] + ldr r1, _080100BC + movs r0, 0 + strb r0, [r1] +_080100B0: + movs r0, 0xFF +_080100B2: + add sp, 0x20 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080100BC: .4byte gUnknown_202DE19 + thumb_func_end sub_8010014 + + thumb_func_start sub_80100C0 +sub_80100C0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + str r0, [sp, 0xC] + mov r8, r2 + ldr r4, _080101E0 + ldr r2, [r4] + ldr r3, _080101E4 + adds r0, r2, r3 + ldr r2, [r2, 0xC] + movs r3, 0x7 + ands r3, r1 + movs r1, 0 + str r1, [sp] + str r1, [sp, 0x4] + movs r1, 0x1 + str r1, [sp, 0x8] + adds r1, r2, 0 + movs r2, 0 + bl sub_80053AC + bl sub_8011168 + ldr r0, [r4] + ldr r2, _080101E8 + adds r1, r0, r2 + ldr r1, [r1] + ldr r3, _080101EC + adds r0, r3 + ldr r2, [r0] + lsls r1, 5 + adds r1, r2 + ldr r1, [r1, 0x4] + mov r9, r1 + ldr r1, [sp, 0xC] + lsls r0, r1, 5 + adds r0, r2 + ldr r0, [r0, 0x4] + str r0, [sp, 0x10] + bl sub_80117F8 + movs r7, 0 + cmp r7, r8 + bge _0801018A + ldr r2, [sp, 0x10] + lsls r1, r2, 16 + asrs r1, 16 + mov r3, r9 + lsls r0, r3, 16 + asrs r0, 16 + subs r1, r0 + str r1, [sp, 0x14] + movs r0, 0 + mov r10, r0 +_08010132: + ldr r0, _080101E0 + ldr r6, [r0] + lsls r5, r7, 8 + mov r0, r10 + mov r1, r8 + bl __divsi3 + cmp r0, 0 + bge _08010146 + adds r0, 0xFF +_08010146: + asrs r0, 8 + add r0, r9 + ldr r2, _080101F0 + adds r1, r6, r2 + strh r0, [r1] + ldr r3, [sp, 0x10] + asrs r0, r3, 16 + mov r1, r9 + asrs r4, r1, 16 + subs r0, r4 + muls r0, r5 + mov r1, r8 + bl __divsi3 + cmp r0, 0 + bge _08010168 + adds r0, 0xFF +_08010168: + asrs r0, 8 + adds r0, r4 + ldr r2, _080101F4 + adds r1, r6, r2 + strh r0, [r1] + bl sub_8011240 + bl sub_80110B0 + bl sub_801169C + ldr r3, [sp, 0x14] + lsls r0, r3, 8 + add r10, r0 + adds r7, 0x1 + cmp r7, r8 + blt _08010132 +_0801018A: + ldr r4, _080101E0 + ldr r0, [r4] + ldr r2, _080101E8 + adds r1, r0, r2 + ldr r3, [sp, 0xC] + str r3, [r1] + ldr r1, _080101F0 + adds r2, r0, r1 + ldr r3, _080101EC + adds r0, r3 + ldr r1, [r0] + ldr r3, [sp, 0xC] + lsls r0, r3, 5 + adds r0, r1 + ldr r0, [r0, 0x4] + str r0, [r2] + bl sub_8011240 + bl sub_80110B0 + bl sub_801169C + ldr r1, [r4] + ldr r2, _080101E4 + adds r0, r1, r2 + ldr r1, [r1, 0xC] + movs r2, 0 + str r2, [sp] + str r2, [sp, 0x4] + movs r2, 0x1 + str r2, [sp, 0x8] + movs r2, 0 + movs r3, 0 + bl sub_80053AC + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080101E0: .4byte gUnknown_203B0E4 +_080101E4: .4byte 0x00004c10 +_080101E8: .4byte 0x00004a18 +_080101EC: .4byte 0x00004014 +_080101F0: .4byte 0x00004dd8 +_080101F4: .4byte 0x00004dda + thumb_func_end sub_80100C0 + + thumb_func_start sub_80101F8 +sub_80101F8: + push {lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0 + bne _08010218 + ldr r0, _08010214 + adds r2, r3, 0 + adds r2, 0x50 + adds r1, r3, 0 + movs r3, 0 + bl xxx_format_string + b _08010220 + .align 2, 0 +_08010214: .4byte gUnknown_80D3EFC +_08010218: + adds r0, r3, 0 + movs r2, 0 + bl sub_8092578 +_08010220: + pop {r0} + bx r0 + thumb_func_end sub_80101F8 + + thumb_func_start sub_8010224 +sub_8010224: + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r7, 0 + ldr r0, _08010248 + adds r4, r0, 0x4 + adds r5, r0, 0 + adds r5, 0x8 +_08010234: + movs r2, 0 + adds r3, r5, 0 +_08010238: + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, r6 + bne _0801024C + ldrh r0, [r4] + strh r0, [r1] + ldrh r0, [r4, 0x2] + b _08010260 + .align 2, 0 +_08010248: .4byte gFriendAreaLocations +_0801024C: + adds r2, 0x1 + cmp r2, 0x7 + ble _08010238 + adds r4, 0x20 + adds r5, 0x20 + adds r7, 0x1 + cmp r7, 0x1F + ble _08010234 + movs r0, 0 + strh r0, [r1] +_08010260: + strh r0, [r1, 0x2] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8010224 + + thumb_func_start sub_8010268 +sub_8010268: + push {r4-r6,lr} + ldr r4, _080102D4 + add sp, r4 + adds r5, r0, 0 + ldr r1, _080102D8 + adds r0, 0xB0 + ldr r0, [r0] + str r0, [r1] + ldr r1, _080102DC + ldr r2, _080102E0 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0 + movs r1, 0x14 + bl sub_80095CC + movs r0, 0x2 + bl xxx_update_some_bg_tiles + bl sub_801059C + adds r0, r5, 0x4 + bl sub_8010494 + bl sub_801178C + movs r4, 0x3B +_0801029E: + bl sub_8010960 + subs r4, 0x1 + cmp r4, 0 + bge _0801029E + ldrb r0, [r5, 0x4] + ldrb r1, [r5, 0x8] + bl sub_8010344 + adds r0, r5, 0 + adds r0, 0x8 + bl sub_8010B74 + adds r6, r5, 0 + adds r6, 0x70 + movs r4, 0x3B +_080102BE: + bl sub_8010960 + subs r4, 0x1 + cmp r4, 0 + bge _080102BE + ldrb r0, [r5, 0x14] + cmp r0, 0 + beq _080102E4 + movs r0, 0x20 + ldrsh r1, [r5, r0] + b _080102E6 + .align 2, 0 +_080102D4: .4byte 0xfffffc14 +_080102D8: .4byte gUnknown_203B0E8 +_080102DC: .4byte gUnknown_2026E4E +_080102E0: .4byte 0x00000a06 +_080102E4: + movs r1, 0 +_080102E6: + ldrb r0, [r5, 0x8] + ldrb r3, [r6] + movs r4, 0 + str r4, [sp] + add r2, sp, 0x4 + bl sub_809034C + cmp r0, 0 + beq _0801031C + cmp r0, 0x1 + bne _0801030A + add r0, sp, 0x4 + bl sub_8010C10 + adds r0, r5, 0 + adds r0, 0xB4 + strb r4, [r0] + b _0801032C +_0801030A: + cmp r0, 0x2 + bne _0801032C + add r0, sp, 0x4 + bl sub_8010C58 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _08010326 +_0801031C: + adds r1, r5, 0 + adds r1, 0xB4 + movs r0, 0x1 + strb r0, [r1] + b _0801032C +_08010326: + adds r0, r5, 0 + adds r0, 0xB4 + strb r1, [r0] +_0801032C: + bl sub_801091C + bl sub_801073C + bl nullsub_16 + movs r3, 0xFB + lsls r3, 2 + add sp, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8010268 + + thumb_func_start sub_8010344 +sub_8010344: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + lsls r0, 24 + lsls r1, 24 + ldr r2, _08010470 + lsrs r0, 22 + adds r0, r2 + lsrs r1, 22 + adds r1, r2 + ldr r2, [r1] + str r2, [sp, 0x14] + movs r3, 0 + ldrsh r5, [r1, r3] + ldr r1, [r0] + mov r9, r1 + movs r2, 0 + ldrsh r6, [r0, r2] + subs r2, r5, r6 + cmp r2, 0 + bge _08010376 + negs r2, r2 +_08010376: + ldr r3, [sp, 0x14] + asrs r0, r3, 16 + mov r3, r9 + asrs r1, r3, 16 + subs r4, r0, r1 + adds r3, r4, 0 + str r0, [sp, 0x18] + mov r8, r1 + cmp r4, 0 + bge _0801038C + negs r4, r4 +_0801038C: + cmp r4, r2 + bge _08010392 + adds r4, r2, 0 +_08010392: + lsrs r0, r4, 31 + adds r0, r4, r0 + asrs r4, r0, 1 + subs r0, r6, r5 + str r0, [sp, 0xC] + str r3, [sp, 0x10] + add r0, sp, 0xC + bl sub_800A0B0 + ldr r1, _08010474 + adds r3, r0, r1 + cmp r3, 0 + bge _080103B0 + ldr r2, _08010478 + adds r3, r0, r2 +_080103B0: + asrs r3, 9 + movs r0, 0x7 + ands r3, r0 + ldr r0, _0801047C + ldr r1, [r0] + ldr r2, _08010480 + adds r0, r1, r2 + ldr r2, _08010484 + adds r1, r2 + ldr r1, [r1] + movs r2, 0 + str r2, [sp] + str r2, [sp, 0x4] + movs r2, 0x1 + str r2, [sp, 0x8] + movs r2, 0 + bl sub_80053AC + movs r7, 0 + cmp r7, r4 + bge _08010448 + mov r10, r5 +_080103DC: + ldr r0, _0801047C + ldr r6, [r0] + mov r3, r9 + lsls r0, r3, 16 + asrs r0, 16 + mov r1, r10 + subs r0, r1, r0 + lsls r5, r7, 8 + muls r0, r5 + adds r1, r4, 0 + bl __divsi3 + cmp r0, 0 + bge _080103FA + adds r0, 0xFF +_080103FA: + asrs r0, 8 + add r0, r9 + ldr r2, _08010488 + adds r1, r6, r2 + strh r0, [r1] + ldr r3, [sp, 0x18] + mov r1, r8 + subs r0, r3, r1 + muls r0, r5 + adds r1, r4, 0 + bl __divsi3 + cmp r0, 0 + bge _08010418 + adds r0, 0xFF +_08010418: + asrs r0, 8 + add r0, r8 + ldr r2, _0801048C + adds r1, r6, r2 + strh r0, [r1] + bl sub_8010798 + bl sub_8010858 + bl sub_8010960 + ldr r0, _08010490 + ldrh r1, [r0, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08010448 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08010448 + adds r7, 0x1 + cmp r7, r4 + blt _080103DC +_08010448: + ldr r0, _0801047C + ldr r0, [r0] + ldr r3, _08010488 + adds r0, r3 + ldr r1, [sp, 0x14] + str r1, [r0] + bl sub_8010798 + bl sub_8010858 + bl sub_8010960 + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08010470: .4byte gDungeonCoordinates +_08010474: .4byte 0xfffffc00 +_08010478: .4byte 0xfffffdff +_0801047C: .4byte gUnknown_203B0E8 +_08010480: .4byte 0x00005114 +_08010484: .4byte 0x0000110c +_08010488: .4byte 0x000052dc +_0801048C: .4byte 0x000052de +_08010490: .4byte gRealInputs + thumb_func_end sub_8010344 + + thumb_func_start sub_8010494 +sub_8010494: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + mov r9, r0 + movs r5, 0 + ldr r0, _080104C0 + mov r10, r0 + mov r8, r5 +_080104AA: + mov r1, r10 + ldr r0, [r1] + mov r3, r8 + adds r4, r0, r3 + cmp r5, 0x3E + bgt _080104C4 + mov r0, r9 + adds r0, 0x6D + adds r0, r5 + ldrb r0, [r0] + b _080104C6 + .align 2, 0 +_080104C0: .4byte gUnknown_203B0E8 +_080104C4: + movs r0, 0x1 +_080104C6: + cmp r0, 0 + beq _0801050C + movs r7, 0 + movs r6, 0x1 + strb r6, [r4] + adds r3, r4, 0 + adds r3, 0x8 + mov r1, r10 + ldr r0, [r1] + ldr r1, _08010504 + adds r0, r1 + ldr r1, [r0] + movs r2, 0x1 + cmp r5, 0x3F + bne _080104E6 + movs r2, 0xC +_080104E6: + movs r0, 0x40 + str r0, [sp] + str r7, [sp, 0x4] + str r6, [sp, 0x8] + adds r0, r3, 0 + movs r3, 0 + bl sub_80053AC + ldr r1, _08010508 + lsls r0, r5, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r4, 0x4] + b _0801050E + .align 2, 0 +_08010504: .4byte 0x00001108 +_08010508: .4byte gDungeonCoordinates +_0801050C: + strb r0, [r4] +_0801050E: + movs r3, 0x44 + add r8, r3 + adds r5, 0x1 + cmp r5, 0x3F + ble _080104AA + movs r2, 0 + ldr r4, _0801057C + ldr r1, [r4] + ldr r3, _08010580 + adds r0, r1, r3 + ldr r3, _08010584 + adds r1, r3 + ldr r1, [r1] + str r2, [sp] + str r2, [sp, 0x4] + movs r2, 0x1 + str r2, [sp, 0x8] + movs r2, 0 + movs r3, 0 + bl sub_80053AC + ldr r2, [r4] + ldr r4, _08010588 + adds r3, r2, r4 + ldr r1, _0801058C + mov r4, r9 + ldrb r0, [r4] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r3] + ldrh r0, [r3] + subs r0, 0x78 + ldr r3, _08010590 + adds r1, r2, r3 + strh r0, [r1] + ldr r4, _08010594 + adds r0, r2, r4 + ldrh r0, [r0] + subs r0, 0x50 + ldr r1, _08010598 + adds r2, r1 + strh r0, [r2] + bl sub_8010798 + bl sub_8010858 + 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 +_0801057C: .4byte gUnknown_203B0E8 +_08010580: .4byte 0x00005114 +_08010584: .4byte 0x0000110c +_08010588: .4byte 0x000052dc +_0801058C: .4byte gDungeonCoordinates +_08010590: .4byte 0x000052d8 +_08010594: .4byte 0x000052de +_08010598: .4byte 0x000052da + thumb_func_end sub_8010494 + + thumb_func_start sub_801059C +sub_801059C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + bl GetPlayerPokemonStruct + adds r7, r0, 0 + ldr r6, _080106E4 + ldr r0, [r6] + ldr r5, _080106E8 + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + str r0, [sp, 0xC] + ldr r0, [r6, 0x4] + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + str r0, [sp, 0x10] + ldr r1, _080106EC + movs r0, 0x8 + ldrsh r2, [r7, r0] + mov r0, sp + bl sprintf + ldr r1, _080106F0 + mov r8, r1 + mov r0, sp + bl OpenFileAndGetFileDataPtr + ldr r4, _080106F4 + ldr r1, [r4] + ldr r2, _080106F8 + adds r1, r2 + str r0, [r1] + ldr r0, _080106FC + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + ldr r1, [r4] + ldr r3, _08010700 + mov r9, r3 + add r1, r9 + str r0, [r1] + ldr r0, [r6, 0x8] + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + ldr r1, [r4] + ldr r2, _08010704 + mov r10, r2 + add r1, r10 + str r0, [r1] + ldr r0, _08010708 + mov r1, r8 + bl OpenFileAndGetFileDataPtr + ldr r1, [r4] + ldr r3, _0801070C + adds r1, r3 + str r0, [r1] + ldr r0, [r6, 0xC] + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + ldr r1, [r4] + movs r2, 0x88 + lsls r2, 5 + adds r1, r2 + str r0, [r1] + movs r3, 0x8 + ldrsh r0, [r7, r3] + movs r1, 0 + bl GetPokemonOverworldPalette + ldr r1, [r4] + ldr r3, _08010710 + adds r2, r1, r3 + lsls r0, 24 + lsrs r0, 24 + str r0, [r2] + add r1, r9 + ldr r0, [r1] + movs r1, 0x40 + movs r2, 0x1F + movs r3, 0 + bl sub_8005610 + ldr r0, _08010714 + movs r1, 0 + ldr r2, [sp, 0xC] + bl DecompressATGlobalFile + ldr r1, [r4] + ldr r2, _08010718 + adds r0, r1, r2 + add r1, r10 + ldr r1, [r1] + movs r2, 0x10 + bl sub_8004AA4 + movs r1, 0x80 + lsls r1, 7 + ldr r0, [r4] + ldr r3, _0801071C + adds r0, r3 + ldr r2, [sp, 0x10] + bl DecompressATFile + ldr r1, [r4] + ldr r2, _08010720 + adds r0, r1, r2 + movs r2, 0 + str r2, [r0] + ldr r3, _08010724 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _08010728 + adds r1, r0 + strh r2, [r1] + movs r3, 0 + ldr r1, _0801072C + mov r9, r1 + mov r8, r4 + ldr r7, _08010730 + ldr r2, _08010734 + adds r4, r2, 0 + ldr r6, _08010738 + movs r5, 0 +_080106A2: + mov r0, r8 + ldr r2, [r0] + lsls r0, r3, 1 + adds r1, r2, r7 + adds r1, r0 + ldrh r0, [r1] + orrs r0, r4 + strh r0, [r1] + adds r2, r6 + adds r2, r3 + strb r5, [r2] + adds r3, 0x1 + cmp r3, r9 + ble _080106A2 + ldr r0, [sp, 0xC] + bl CloseFile + ldr r0, [sp, 0x10] + bl CloseFile + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080106E4: .4byte gUnknown_80D4014 +_080106E8: .4byte gTitleMenuFileArchive +_080106EC: .4byte gUnknown_80D405C +_080106F0: .4byte gMonsterFileArchive +_080106F4: .4byte gUnknown_203B0E8 +_080106F8: .4byte 0x0000110c +_080106FC: .4byte gUnknown_80D4064 +_08010700: .4byte 0x00001108 +_08010704: .4byte 0x00001110 +_08010708: .4byte gUnknown_80D406C +_0801070C: .4byte 0x00001104 +_08010710: .4byte 0x000052d4 +_08010714: .4byte 0x06008000 +_08010718: .4byte 0x00005150 +_0801071C: .4byte 0x00001114 +_08010720: .4byte 0x000052d0 +_08010724: .4byte 0x000052d8 +_08010728: .4byte 0x000052da +_0801072C: .4byte 0x000005db +_08010730: .4byte 0x000052e0 +_08010734: .4byte 0x0000ffff +_08010738: .4byte 0x00005e98 + thumb_func_end sub_801059C + + thumb_func_start sub_801073C +sub_801073C: + push {r4,lr} + ldr r4, _08010784 + ldr r0, [r4] + ldr r1, _08010788 + adds r0, r1 + ldr r0, [r0] + bl CloseFile + ldr r0, [r4] + ldr r1, _0801078C + adds r0, r1 + ldr r0, [r0] + bl CloseFile + ldr r0, [r4] + ldr r1, _08010790 + adds r0, r1 + ldr r0, [r0] + bl CloseFile + ldr r0, [r4] + movs r1, 0x88 + lsls r1, 5 + adds r0, r1 + ldr r0, [r0] + bl CloseFile + ldr r0, [r4] + ldr r1, _08010794 + adds r0, r1 + ldr r0, [r0] + bl CloseFile + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08010784: .4byte gUnknown_203B0E8 +_08010788: .4byte 0x00001110 +_0801078C: .4byte 0x0000110c +_08010790: .4byte 0x00001108 +_08010794: .4byte 0x00001104 + thumb_func_end sub_801073C + + thumb_func_start sub_8010798 +sub_8010798: + push {r4-r6,lr} + ldr r2, _080107BC + ldr r0, [r2] + ldr r1, _080107C0 + adds r3, r0, r1 + movs r4, 0 + ldrsh r1, [r3, r4] + ldr r5, _080107C4 + adds r4, r0, r5 + movs r6, 0 + ldrsh r0, [r4, r6] + subs r1, r0 + adds r5, r2, 0 + cmp r1, 0x2F + bgt _080107C8 + ldrh r0, [r3] + subs r0, 0x30 + b _080107D0 + .align 2, 0 +_080107BC: .4byte gUnknown_203B0E8 +_080107C0: .4byte 0x000052dc +_080107C4: .4byte 0x000052d8 +_080107C8: + cmp r1, 0xC0 + ble _080107D2 + ldrh r0, [r3] + subs r0, 0xC0 +_080107D0: + strh r0, [r4] +_080107D2: + ldr r0, [r5] + ldr r1, _080107F0 + adds r3, r0, r1 + movs r2, 0 + ldrsh r1, [r3, r2] + ldr r4, _080107F4 + adds r2, r0, r4 + movs r6, 0 + ldrsh r0, [r2, r6] + subs r1, r0 + cmp r1, 0x2F + bgt _080107F8 + ldrh r0, [r3] + subs r0, 0x30 + b _08010800 + .align 2, 0 +_080107F0: .4byte 0x000052de +_080107F4: .4byte 0x000052da +_080107F8: + cmp r1, 0x70 + ble _08010802 + ldrh r0, [r3] + subs r0, 0x70 +_08010800: + strh r0, [r2] +_08010802: + adds r3, r5, 0 + ldr r0, [r3] + ldr r4, _08010850 + adds r1, r0, r4 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + bge _08010816 + movs r0, 0 + strh r0, [r1] +_08010816: + ldr r0, [r3] + ldr r2, _08010854 + adds r1, r0, r2 + movs r6, 0 + ldrsh r0, [r1, r6] + cmp r0, 0 + bge _08010828 + movs r0, 0 + strh r0, [r1] +_08010828: + ldr r0, [r3] + adds r1, r0, r4 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0xEF + ble _08010838 + movs r0, 0xF0 + strh r0, [r1] +_08010838: + ldr r0, [r5] + adds r2, r0, r2 + movs r4, 0 + ldrsh r0, [r2, r4] + cmp r0, 0x9F + ble _08010848 + movs r0, 0xA0 + strh r0, [r2] +_08010848: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08010850: .4byte 0x000052d8 +_08010854: .4byte 0x000052da + thumb_func_end sub_8010798 + + thumb_func_start sub_8010858 +sub_8010858: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _080108FC + ldr r1, [r0] + ldr r2, _08010900 + adds r1, r2 + ldrh r1, [r1] + lsls r1, 16 + asrs r6, r1, 19 + adds r2, r6, 0 + movs r3, 0 + mov r10, r0 + movs r0, 0x1F + mov r9, r0 +_0801087C: + mov r1, r10 + ldr r0, [r1] + ldr r1, _08010904 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r4, r0, 19 + lsls r1, r2, 7 + adds r2, 0x1 + mov r12, r2 + adds r3, 0x1 + mov r8, r3 + movs r7, 0x1E + lsls r0, r4, 1 + adds r5, r0, r1 +_0801089A: + mov r2, r9 + ands r4, r2 + ands r6, r2 + lsls r2, r4, 1 + lsls r0, r6, 6 + adds r2, r0 + ldr r3, _08010908 + adds r3, r2, r3 + str r3, [sp] + mov r0, r10 + ldr r1, [r0] + ldr r3, _0801090C + adds r0, r1, r3 + adds r0, r5 + ldrh r0, [r0] + ldr r3, [sp] + strh r0, [r3] + ldr r0, _08010910 + adds r2, r0 + ldr r3, _08010914 + adds r1, r3 + adds r1, r5 + ldrh r0, [r1] + strh r0, [r2] + adds r5, 0x2 + adds r4, 0x1 + subs r7, 0x1 + cmp r7, 0 + bge _0801089A + mov r2, r12 + adds r6, 0x1 + mov r3, r8 + cmp r3, 0x14 + ble _0801087C + movs r0, 0x2 + bl sub_80098F8 + movs r0, 0x3 + bl sub_80098F8 + 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 +_080108FC: .4byte gUnknown_203B0E8 +_08010900: .4byte 0x000052da +_08010904: .4byte 0x000052d8 +_08010908: .4byte gUnknown_202C038 +_0801090C: .4byte 0x00003114 +_08010910: .4byte gUnknown_202C838 +_08010914: .4byte 0x00001114 + thumb_func_end sub_8010858 + + thumb_func_start nullsub_24 +nullsub_24: + bx lr + thumb_func_end nullsub_24 + + thumb_func_start sub_801091C +sub_801091C: + push {r4,r5,lr} + bl sub_8010950 + bl sub_80117C4 + ldr r5, _08010948 + movs r4, 0x3B +_0801092A: + ldr r1, [r5] + ldr r0, _0801094C + adds r1, r0 + ldr r0, [r1] + subs r0, 0x2 + str r0, [r1] + bl sub_8010960 + subs r4, 0x1 + cmp r4, 0 + bge _0801092A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08010948: .4byte gUnknown_203B0E8 +_0801094C: .4byte 0x000052d0 + thumb_func_end sub_801091C + + thumb_func_start sub_8010950 +sub_8010950: + push {lr} + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + pop {r0} + bx r0 + thumb_func_end sub_8010950 + + thumb_func_start sub_8010960 +sub_8010960: + push {r4-r6,lr} + ldr r6, _080109EC + ldr r1, [r6] + ldr r4, _080109F0 + adds r0, r1, r4 + movs r2, 0 + ldrsh r0, [r0, r2] + ldr r5, _080109F4 + adds r1, r5 + movs r2, 0 + ldrsh r1, [r1, r2] + bl SetBG2RegOffsets + ldr r1, [r6] + adds r4, r1, r4 + movs r2, 0 + ldrsh r0, [r4, r2] + adds r1, r5 + movs r2, 0 + ldrsh r1, [r1, r2] + bl SetBG3RegOffsets + movs r0, 0x1 + bl sub_8010A88 + bl sub_8010A00 + movs r0, 0 + movs r1, 0 + bl sub_8005838 + ldr r0, _080109F8 + ldr r0, [r0] + ldrb r0, [r0, 0xA] + bl nullsub_8 + bl sub_8005180 + bl sub_80060EC + ldr r0, _080109FC + ldr r0, [r0] + bl IncrementPlayTime + bl sub_800CB20 + bl LoadBufferedInputs + bl CopySpritesToOam + bl sub_8005304 + bl TransferBGPaletteBuffer + bl xxx_call_update_bg_vram + bl nullsub_24 + bl sub_8009908 + bl xxx_call_update_bg_sound_input + bl sub_8011860 + movs r0, 0 + bl ResetSprites + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080109EC: .4byte gUnknown_203B0E8 +_080109F0: .4byte 0x000052d8 +_080109F4: .4byte 0x000052da +_080109F8: .4byte gGameOptionsRef +_080109FC: .4byte gPlayTimeRef + thumb_func_end sub_8010960 + + thumb_func_start sub_8010A00 +sub_8010A00: + push {r4-r6,lr} + movs r3, 0 + ldr r6, _08010A7C + ldr r0, [r6] + ldr r2, _08010A80 + adds r1, r0, r2 + ldr r2, [r1] + cmp r2, 0x1E + bgt _08010A74 + movs r3, 0x88 + lsls r3, 5 + adds r0, r3 + ldr r0, [r0] + ldr r5, [r0, 0x4] + adds r0, r2, 0x1 + str r0, [r1] + cmp r0, 0x1E + ble _08010A28 + movs r0, 0x1F + str r0, [r1] +_08010A28: + movs r4, 0 +_08010A2A: + ldr r0, [r6] + ldr r1, _08010A80 + adds r0, r1 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + movs r3, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + adds r4, 0x1 + cmp r4, 0xDF + ble _08010A2A + ldr r0, _08010A7C + ldr r0, [r0] + ldr r2, _08010A84 + adds r0, r2 + ldr r0, [r0] + ldr r5, [r0, 0x4] + movs r4, 0 +_08010A52: + movs r3, 0x80 + lsls r3, 1 + adds r0, r4, r3 + ldr r1, _08010A7C + ldr r1, [r1] + ldr r2, _08010A80 + adds r1, r2 + ldr r2, [r1] + adds r1, r5, 0 + movs r3, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + adds r4, 0x1 + cmp r4, 0xEF + ble _08010A52 + movs r3, 0x1 +_08010A74: + adds r0, r3, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08010A7C: .4byte gUnknown_203B0E8 +_08010A80: .4byte 0x000052d0 +_08010A84: .4byte 0x00001104 + thumb_func_end sub_8010A00 + + thumb_func_start sub_8010A88 +sub_8010A88: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + add r0, sp, 0x8 + bl sub_8004E8C + add r1, sp, 0x8 + ldr r0, _08010B58 + strh r0, [r1, 0x4] + movs r0, 0x80 + lsls r0, 4 + strh r0, [r1, 0xA] + ldr r6, _08010B5C + ldr r0, [r6] + ldr r2, _08010B60 + adds r1, r0, r2 + ldr r5, [r1] + ldr r3, _08010B64 + adds r0, r3 + bl sub_80054BC + mov r0, r9 + cmp r0, 0 + beq _08010AF6 + ldr r4, [r6] + ldr r1, _08010B64 + adds r0, r4, r1 + ldr r2, _08010B68 + adds r1, r4, r2 + movs r3, 0 + ldrsh r1, [r1, r3] + lsls r2, r5, 16 + asrs r2, 16 + subs r1, r2 + ldr r3, _08010B6C + adds r2, r4, r3 + movs r3, 0 + ldrsh r2, [r2, r3] + asrs r3, r5, 16 + subs r2, r3 + ldr r3, _08010B70 + adds r4, r3 + ldr r3, [r4] + str r3, [sp] + add r3, sp, 0x8 + str r3, [sp, 0x4] + movs r3, 0x3 + bl DoAxFrame_800558C +_08010AF6: + lsls r0, r5, 16 + asrs r0, 16 + mov r10, r0 + movs r7, 0 + asrs r5, 16 + mov r8, r5 + movs r6, 0x3F +_08010B04: + ldr r1, _08010B5C + ldr r0, [r1] + adds r4, r0, r7 + ldrb r0, [r4] + cmp r0, 0 + beq _08010B40 + adds r5, r4, 0 + adds r5, 0x8 + adds r0, r5, 0 + bl sub_80054BC + mov r2, r9 + cmp r2, 0 + beq _08010B40 + movs r3, 0x4 + ldrsh r1, [r4, r3] + mov r0, r10 + subs r1, r0 + movs r3, 0x6 + ldrsh r2, [r4, r3] + mov r0, r8 + subs r2, r0 + movs r0, 0 + str r0, [sp] + add r3, sp, 0x8 + str r3, [sp, 0x4] + adds r0, r5, 0 + movs r3, 0x1 + bl DoAxFrame_800558C +_08010B40: + adds r7, 0x44 + subs r6, 0x1 + cmp r6, 0 + bge _08010B04 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08010B58: .4byte 0x0000f3ff +_08010B5C: .4byte gUnknown_203B0E8 +_08010B60: .4byte 0x000052d8 +_08010B64: .4byte 0x00005114 +_08010B68: .4byte 0x000052dc +_08010B6C: .4byte 0x000052de +_08010B70: .4byte 0x000052d4 + thumb_func_end sub_8010A88 + + thumb_func_start sub_8010B74 +sub_8010B74: + push {r4,r5,lr} + sub sp, 0x64 + adds r5, r0, 0 + add r4, sp, 0x4 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x60 + bl memset + movs r2, 0x3 + str r2, [sp, 0x8] + movs r0, 0xC + strh r0, [r4, 0x8] + movs r1, 0x2 + strh r1, [r4, 0xA] + movs r0, 0x10 + strh r0, [r4, 0xC] + strh r1, [r4, 0xE] + strh r1, [r4, 0x10] + str r2, [sp, 0x20] + str r2, [sp, 0x38] + str r2, [sp, 0x50] + ldr r0, _08010BC0 + ldr r0, [r0] + ldr r2, _08010BC4 + adds r1, r0, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + ldr r2, _08010BC8 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + subs r1, r0 + cmp r1, 0x50 + bgt _08010BCC + add r1, sp, 0x4 + movs r0, 0x11 + b _08010BD0 + .align 2, 0 +_08010BC0: .4byte gUnknown_203B0E8 +_08010BC4: .4byte 0x000052de +_08010BC8: .4byte 0x000052da +_08010BCC: + add r1, sp, 0x4 + movs r0, 0x1 +_08010BD0: + strh r0, [r1, 0xA] + add r0, sp, 0x4 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + movs r0, 0 + bl sub_80073B8 + ldr r0, _08010C08 + adds r1, r5, 0 + bl CopyDungeonName1toBuffer + ldr r2, _08010C0C + movs r0, 0 + str r0, [sp] + movs r0, 0xC + movs r1, 0x2 + movs r3, 0 + bl xxx_format_and_draw + movs r0, 0 + bl sub_80073E0 + add sp, 0x64 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08010C08: .4byte gAvailablePokemonNames +_08010C0C: .4byte gUnknown_80D4074 + thumb_func_end sub_8010B74 + + thumb_func_start sub_8010C10 +sub_8010C10: + push {r4,lr} + sub sp, 0x18 + movs r2, 0 + str r2, [sp] + movs r1, 0x3 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r2, [sp, 0xC] + ldr r1, _08010C54 + str r1, [sp, 0x10] + movs r1, 0 + movs r3, 0 + bl sub_8014248 +_08010C2C: + bl xxx_draw_string_80144C4 + bl sub_8010960 + add r0, sp, 0x14 + bl sub_80144A4 + cmp r0, 0 + bne _08010C2C + movs r4, 0x9 +_08010C40: + bl sub_8010960 + subs r4, 0x1 + cmp r4, 0 + bge _08010C40 + add sp, 0x18 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08010C54: .4byte 0x00000301 + thumb_func_end sub_8010C10 + + thumb_func_start sub_8010C58 +sub_8010C58: + push {r4-r6,lr} + sub sp, 0x38 + adds r5, r0, 0 + movs r2, 0 + ldrb r0, [r5] + ldr r3, _08010D70 + add r6, sp, 0x2C + cmp r0, 0 + beq _08010C7C + adds r1, r5, 0 +_08010C6C: + ldrb r0, [r1] + cmp r0, 0xA + bne _08010C74 + adds r2, 0xC +_08010C74: + adds r1, 0x1 + ldrb r0, [r1] + cmp r0, 0 + bne _08010C6C +_08010C7C: + adds r2, 0xB + adds r0, r2, 0 + cmp r2, 0 + bge _08010C86 + adds r0, r2, 0x7 +_08010C86: + asrs r2, r0, 3 + movs r0, 0x13 + subs r0, r2 + movs r4, 0 + strh r0, [r3, 0xA] + strh r2, [r3, 0x10] + strh r2, [r3, 0xE] + movs r0, 0xE + subs r0, r2 + strh r0, [r3, 0x22] + adds r0, r3, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + movs r0, 0 + bl sub_80073B8 + str r4, [sp] + movs r0, 0x4 + movs r1, 0 + adds r2, r5, 0 + movs r3, 0 + bl xxx_format_and_draw + movs r0, 0 + bl sub_80073E0 + movs r0, 0x1 + bl sub_80073B8 + ldr r2, _08010D74 + str r4, [sp] + movs r0, 0xA + movs r1, 0 + movs r3, 0x1 + bl xxx_format_and_draw + ldr r2, _08010D78 + str r4, [sp] + movs r0, 0xA + movs r1, 0xC + movs r3, 0x1 + bl xxx_format_and_draw + movs r0, 0x1 + bl sub_80073E0 + add r0, sp, 0x4 + movs r2, 0x1 + strh r2, [r0, 0x18] + movs r1, 0x2 + strh r1, [r0, 0x1A] + strh r1, [r0, 0x1C] + strh r4, [r0, 0x1E] + strh r4, [r0, 0x20] + strh r4, [r0, 0x4] + strh r4, [r0, 0x6] + str r2, [sp, 0x4] + strh r4, [r0, 0xC] + strh r4, [r0, 0xE] + strh r4, [r0, 0x14] + strh r4, [r0, 0x16] + movs r1, 0x8 + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + movs r1, 0x18 + bl sub_80137B0 + adds r0, r6, 0 + bl sub_801317C + ldr r4, _08010D7C +_08010D18: + add r0, sp, 0x4 + bl AddMenuCursorSprite + bl sub_8010960 + ldrh r1, [r4, 0x4] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08010D36 + add r0, sp, 0x4 + bl MoveMenuCursorDown + bl sub_80117F8 +_08010D36: + ldrh r1, [r4, 0x4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08010D4A + add r0, sp, 0x4 + bl MoveMenuCursorUp + bl sub_80117F8 +_08010D4A: + ldrh r1, [r4, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08010D5E + mov r0, sp + adds r0, 0x2D + ldrb r0, [r0] + cmp r0, 0 + beq _08010D18 +_08010D5E: + bl sub_80117D0 + add r0, sp, 0x4 + movs r1, 0x18 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _08010D80 + movs r0, 0 + b _08010D82 + .align 2, 0 +_08010D70: .4byte gUnknown_203B0EC +_08010D74: .4byte gUnknown_80D407C +_08010D78: .4byte gUnknown_80D4080 +_08010D7C: .4byte gRealInputs +_08010D80: + movs r0, 0x1 +_08010D82: + add sp, 0x38 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8010C58 + + thumb_func_start sub_8010D8C +sub_8010D8C: + lsls r0, 24 + ldr r2, _08010DA0 + lsrs r0, 22 + adds r0, r2 + ldrh r2, [r0] + strh r2, [r1] + ldrh r0, [r0, 0x2] + strh r0, [r1, 0x2] + bx lr + .align 2, 0 +_08010DA0: .4byte gDungeonCoordinates + thumb_func_end sub_8010D8C + + thumb_func_start sub_8010DA4 +sub_8010DA4: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + bl GetPlayerPokemonStruct + mov r9, r0 + ldr r6, _08010EBC + ldr r0, [r6] + ldr r5, _08010EC0 + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + mov r10, r0 + ldr r0, [r6, 0x4] + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + adds r7, r0, 0 + ldr r1, _08010EC4 + mov r0, r9 + movs r3, 0x8 + ldrsh r2, [r0, r3] + mov r0, sp + bl sprintf + ldr r0, _08010EC8 + mov r8, r0 + mov r0, sp + mov r1, r8 + bl OpenFileAndGetFileDataPtr + ldr r4, _08010ECC + ldr r1, [r4] + str r0, [r1, 0xC] + ldr r0, _08010ED0 + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + ldr r1, [r4] + str r0, [r1, 0x8] + ldr r0, [r6, 0x8] + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + ldr r1, [r4] + str r0, [r1, 0x10] + ldr r0, _08010ED4 + mov r1, r8 + bl OpenFileAndGetFileDataPtr + ldr r1, [r4] + str r0, [r1, 0x4] + ldr r0, [r6, 0xC] + adds r1, r5, 0 + bl OpenFileAndGetFileDataPtr + ldr r1, [r4] + str r0, [r1] + mov r1, r9 + movs r2, 0x8 + ldrsh r0, [r1, r2] + movs r1, 0 + bl GetPokemonOverworldPalette + ldr r2, [r4] + ldr r3, _08010ED8 + adds r1, r2, r3 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + ldr r0, [r2, 0x8] + movs r1, 0x40 + movs r2, 0x1F + movs r3, 0 + bl sub_8005610 + ldr r0, _08010EDC + movs r1, 0 + mov r2, r10 + bl DecompressATGlobalFile + ldr r1, [r4] + ldr r2, _08010EE0 + adds r0, r1, r2 + ldr r1, [r1, 0x10] + movs r2, 0x10 + bl sub_8004AA4 + movs r1, 0x80 + lsls r1, 7 + ldr r0, [r4] + adds r0, 0x14 + adds r2, r7, 0 + bl DecompressATFile + ldr r1, [r4] + ldr r3, _08010EE4 + adds r0, r1, r3 + movs r2, 0 + str r2, [r0] + adds r3, 0x8 + adds r0, r1, r3 + strh r2, [r0] + ldr r0, _08010EE8 + adds r1, r0 + strh r2, [r1] + ldr r5, _08010EEC + movs r3, 0 + movs r1, 0x7 +_08010E84: + ldr r0, [r4] + adds r0, r2, r0 + adds r0, r5 + strh r3, [r0] + adds r2, 0x3C + subs r1, 0x1 + cmp r1, 0 + bge _08010E84 + mov r0, r10 + bl CloseFile + adds r0, r7, 0 + bl CloseFile + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + 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 +_08010EBC: .4byte gUnknown_80D408C +_08010EC0: .4byte gTitleMenuFileArchive +_08010EC4: .4byte gUnknown_80D40E4 +_08010EC8: .4byte gMonsterFileArchive +_08010ECC: .4byte gUnknown_203B0E4 +_08010ED0: .4byte gUnknown_80D40EC +_08010ED4: .4byte gUnknown_80D40F4 +_08010ED8: .4byte 0x00004dd0 +_08010EDC: .4byte 0x06008000 +_08010EE0: .4byte 0x00004c4c +_08010EE4: .4byte 0x00004dcc +_08010EE8: .4byte 0x00004dd6 +_08010EEC: .4byte 0x00004a30 + thumb_func_end sub_8010DA4 + + .align 2,0 diff --git a/asm/code_8010F28.s b/asm/code_8010F28.s new file mode 100644 index 000000000..45d109ed9 --- /dev/null +++ b/asm/code_8010F28.s @@ -0,0 +1,938 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8010F28 +sub_8010F28: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + add r0, sp, 0x8 + bl sub_8004E8C + add r1, sp, 0x8 + ldr r0, _08011080 + strh r0, [r1, 0x4] + movs r0, 0x80 + lsls r0, 4 + strh r0, [r1, 0xA] + ldr r6, _08011084 + ldr r0, [r6] + ldr r2, _08011088 + adds r1, r0, r2 + ldr r1, [r1] + mov r8, r1 + ldr r4, _0801108C + adds r0, r4 + bl sub_80054BC + ldr r3, [r6] + adds r4, r3, r4 + ldr r7, _08011090 + adds r0, r3, r7 + movs r2, 0 + ldrsh r1, [r0, r2] + mov r7, r8 + lsls r5, r7, 16 + asrs r5, 16 + subs r1, r5 + ldr r2, _08011094 + adds r0, r3, r2 + movs r7, 0 + ldrsh r2, [r0, r7] + mov r7, r8 + asrs r0, r7, 16 + subs r2, r0 + ldr r0, _08011098 + adds r3, r0 + ldr r0, [r3] + str r0, [sp] + add r3, sp, 0x8 + str r3, [sp, 0x4] + adds r0, r4, 0 + movs r3, 0x3 + bl DoAxFrame_800558C + movs r7, 0 + mov r10, r6 + ldr r6, _0801109C + mov r9, r5 +_08010F98: + mov r4, r10 + ldr r0, [r4] + adds r4, r0, r6 + ldr r1, _080110A0 + adds r0, r1 + lsls r1, r7, 5 + ldr r0, [r0] + adds r5, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + beq _08010FD8 + adds r4, 0x14 + adds r0, r4, 0 + bl sub_80054BC + movs r2, 0x4 + ldrsh r1, [r5, r2] + mov r3, r9 + subs r1, r3 + movs r0, 0x6 + ldrsh r2, [r5, r0] + mov r3, r8 + asrs r0, r3, 16 + subs r2, r0 + movs r0, 0 + str r0, [sp] + add r0, sp, 0x8 + str r0, [sp, 0x4] + adds r0, r4, 0 + movs r3, 0x1 + bl DoAxFrame_800558C +_08010FD8: + adds r6, 0x50 + adds r7, 0x1 + cmp r7, 0x1F + ble _08010F98 + movs r5, 0 + ldr r1, _08011084 + mov r9, r1 + ldr r6, _080110A4 + movs r2, 0 + str r2, [sp, 0x14] +_08010FEC: + mov r3, r9 + ldr r1, [r3] + ldr r4, [sp, 0x14] + adds r0, r4, r1 + ldr r7, _080110A4 + adds r0, r7 + ldrh r0, [r0] + lsrs r0, 15 + cmp r0, 0 + beq _08011062 + adds r0, r1, r6 + bl sub_80054BC + ldr r0, _080110A8 + ldrh r0, [r0] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + beq _0801101E + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _08011062 +_0801101E: + mov r3, r9 + ldr r4, [r3] + adds r0, r4, r6 + ldr r1, _080110AC + lsls r3, r5, 2 + adds r3, r1 + movs r7, 0 + ldrsh r1, [r3, r7] + ldr r7, _08011090 + adds r2, r4, r7 + movs r7, 0 + ldrsh r2, [r2, r7] + adds r1, r2 + mov r7, r8 + lsls r2, r7, 16 + asrs r2, 16 + subs r1, r2 + movs r7, 0x2 + ldrsh r2, [r3, r7] + ldr r3, _08011094 + adds r3, r4 + movs r4, 0 + ldrsh r3, [r3, r4] + adds r2, r3 + mov r7, r8 + asrs r3, r7, 16 + subs r2, r3 + movs r3, 0 + str r3, [sp] + add r3, sp, 0x8 + str r3, [sp, 0x4] + movs r3, 0x2 + bl DoAxFrame_800558C +_08011062: + adds r6, 0x3C + ldr r4, [sp, 0x14] + adds r4, 0x3C + str r4, [sp, 0x14] + adds r5, 0x1 + cmp r5, 0x7 + ble _08010FEC + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08011080: .4byte 0x0000f3ff +_08011084: .4byte gUnknown_203B0E4 +_08011088: .4byte 0x00004dd4 +_0801108C: .4byte 0x00004c10 +_08011090: .4byte 0x00004dd8 +_08011094: .4byte 0x00004dda +_08011098: .4byte 0x00004dd0 +_0801109C: .4byte 0x00004018 +_080110A0: .4byte 0x00004014 +_080110A4: .4byte 0x00004a30 +_080110A8: .4byte gRealInputs +_080110AC: .4byte gUnknown_80D40C4 + thumb_func_end sub_8010F28 + + thumb_func_start sub_80110B0 +sub_80110B0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _08011150 + ldr r1, [r0] + ldr r2, _08011154 + adds r1, r2 + ldrh r1, [r1] + lsls r1, 16 + asrs r6, r1, 19 + adds r2, r6, 0 + movs r3, 0 + mov r10, r0 + movs r0, 0x1F + mov r9, r0 +_080110D4: + mov r1, r10 + ldr r0, [r1] + ldr r1, _08011158 + adds r0, r1 + ldrh r0, [r0] + lsls r0, 16 + asrs r4, r0, 19 + lsls r1, r2, 7 + adds r2, 0x1 + mov r12, r2 + adds r3, 0x1 + mov r8, r3 + movs r7, 0x1E + lsls r0, r4, 1 + adds r5, r0, r1 +_080110F2: + mov r2, r9 + ands r4, r2 + ands r6, r2 + lsls r2, r4, 1 + lsls r0, r6, 6 + adds r2, r0 + ldr r3, _0801115C + adds r3, r2, r3 + str r3, [sp] + mov r0, r10 + ldr r1, [r0] + ldr r3, _08011160 + adds r0, r1, r3 + adds r0, r5 + ldrh r0, [r0] + ldr r3, [sp] + strh r0, [r3] + ldr r0, _08011164 + adds r2, r0 + adds r1, 0x14 + adds r1, r5 + ldrh r0, [r1] + strh r0, [r2] + adds r5, 0x2 + adds r4, 0x1 + subs r7, 0x1 + cmp r7, 0 + bge _080110F2 + mov r2, r12 + adds r6, 0x1 + mov r3, r8 + cmp r3, 0x14 + ble _080110D4 + movs r0, 0x2 + bl sub_80098F8 + movs r0, 0x3 + bl sub_80098F8 + 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 +_08011150: .4byte gUnknown_203B0E4 +_08011154: .4byte 0x00004dd6 +_08011158: .4byte 0x00004dd4 +_0801115C: .4byte gUnknown_202C038 +_08011160: .4byte 0x00002014 +_08011164: .4byte gUnknown_202C838 + thumb_func_end sub_80110B0 + + thumb_func_start sub_8011168 +sub_8011168: + push {r4,r5,lr} + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r3, _080111B0 + ldr r1, [r3] + ldr r2, _080111B4 + adds r0, r1, r2 + movs r2, 0 + str r2, [r0] + ldr r4, _080111B8 + adds r0, r1, r4 + str r2, [r0] + adds r4, 0x4 + adds r0, r1, r4 + str r2, [r0] + ldr r0, _080111BC + adds r1, r0 + str r2, [r1] + adds r5, r3, 0 + ldr r4, _080111C0 + movs r3, 0 + movs r1, 0x7 +_0801119A: + ldr r0, [r5] + adds r0, r2, r0 + adds r0, r4 + strh r3, [r0] + adds r2, 0x3C + subs r1, 0x1 + cmp r1, 0 + bge _0801119A + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080111B0: .4byte gUnknown_203B0E4 +_080111B4: .4byte 0x00004ddc +_080111B8: .4byte 0x00004de0 +_080111BC: .4byte 0x00004de8 +_080111C0: .4byte 0x00004a30 + thumb_func_end sub_8011168 + + thumb_func_start sub_80111C4 +sub_80111C4: + push {r4-r6,lr} + movs r3, 0 + ldr r6, _08011238 + ldr r0, [r6] + ldr r2, _0801123C + adds r1, r0, r2 + ldr r2, [r1] + cmp r2, 0x1E + bgt _0801122E + ldr r0, [r0] + ldr r5, [r0, 0x4] + adds r0, r2, 0x1 + str r0, [r1] + cmp r0, 0x1E + ble _080111E6 + movs r0, 0x1F + str r0, [r1] +_080111E6: + movs r4, 0 +_080111E8: + ldr r0, [r6] + ldr r1, _0801123C + adds r0, r1 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + movs r3, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + adds r4, 0x1 + cmp r4, 0xDF + ble _080111E8 + ldr r0, _08011238 + ldr r0, [r0] + ldr r0, [r0, 0x4] + ldr r5, [r0, 0x4] + movs r4, 0 +_0801120C: + movs r2, 0x80 + lsls r2, 1 + adds r0, r4, r2 + ldr r1, _08011238 + ldr r1, [r1] + ldr r2, _0801123C + adds r1, r2 + ldr r2, [r1] + adds r1, r5, 0 + movs r3, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + adds r4, 0x1 + cmp r4, 0xEF + ble _0801120C + movs r3, 0x1 +_0801122E: + adds r0, r3, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08011238: .4byte gUnknown_203B0E4 +_0801123C: .4byte 0x00004dcc + thumb_func_end sub_80111C4 + + thumb_func_start sub_8011240 +sub_8011240: + push {r4-r6,lr} + ldr r2, _08011264 + ldr r0, [r2] + ldr r1, _08011268 + adds r3, r0, r1 + movs r4, 0 + ldrsh r1, [r3, r4] + ldr r5, _0801126C + adds r4, r0, r5 + movs r6, 0 + ldrsh r0, [r4, r6] + subs r1, r0 + adds r5, r2, 0 + cmp r1, 0x2F + bgt _08011270 + ldrh r0, [r3] + subs r0, 0x30 + b _08011278 + .align 2, 0 +_08011264: .4byte gUnknown_203B0E4 +_08011268: .4byte 0x00004dd8 +_0801126C: .4byte 0x00004dd4 +_08011270: + cmp r1, 0xC0 + ble _0801127A + ldrh r0, [r3] + subs r0, 0xC0 +_08011278: + strh r0, [r4] +_0801127A: + ldr r0, [r5] + ldr r1, _08011298 + adds r3, r0, r1 + movs r2, 0 + ldrsh r1, [r3, r2] + ldr r4, _0801129C + adds r2, r0, r4 + movs r6, 0 + ldrsh r0, [r2, r6] + subs r1, r0 + cmp r1, 0x2F + bgt _080112A0 + ldrh r0, [r3] + subs r0, 0x30 + b _080112A8 + .align 2, 0 +_08011298: .4byte 0x00004dda +_0801129C: .4byte 0x00004dd6 +_080112A0: + cmp r1, 0x70 + ble _080112AA + ldrh r0, [r3] + subs r0, 0x70 +_080112A8: + strh r0, [r2] +_080112AA: + adds r3, r5, 0 + ldr r0, [r3] + ldr r4, _080112F8 + adds r1, r0, r4 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + bge _080112BE + movs r0, 0 + strh r0, [r1] +_080112BE: + ldr r0, [r3] + ldr r2, _080112FC + adds r1, r0, r2 + movs r6, 0 + ldrsh r0, [r1, r6] + cmp r0, 0 + bge _080112D0 + movs r0, 0 + strh r0, [r1] +_080112D0: + ldr r0, [r3] + adds r1, r0, r4 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0xEF + ble _080112E0 + movs r0, 0xEF + strh r0, [r1] +_080112E0: + ldr r0, [r5] + adds r2, r0, r2 + movs r4, 0 + ldrsh r0, [r2, r4] + cmp r0, 0x97 + ble _080112F0 + movs r0, 0x97 + strh r0, [r2] +_080112F0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080112F8: .4byte 0x00004dd4 +_080112FC: .4byte 0x00004dd6 + thumb_func_end sub_8011240 + + thumb_func_start sub_8011300 +sub_8011300: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + ldr r0, _08011388 + ldr r2, [r0] + ldr r1, _0801138C + adds r0, r2, r1 + ldr r1, [r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 4 + ldr r3, _08011390 + adds r0, r3 + adds r2, r0 + mov r9, r2 + movs r4, 0 + ldr r0, _08011394 + mov r8, r0 + movs r7, 0 + mov r6, r8 + movs r5, 0 +_0801132E: + ldr r0, _08011388 + ldr r2, [r0] + adds r0, r5, r2 + add r0, r8 + strh r7, [r0] + lsls r1, r4, 1 + mov r0, r9 + adds r0, 0x2 + adds r1, r0, r1 + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0 + blt _08011370 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 4 + ldr r0, _08011390 + adds r1, r0 + adds r1, r2, r1 + ldrb r0, [r1] + cmp r0, 0 + beq _08011370 + adds r0, r2, r6 + ldr r1, [r2, 0x8] + adds r2, r4, 0x4 + movs r3, 0x40 + str r3, [sp] + str r7, [sp, 0x4] + movs r3, 0x1 + str r3, [sp, 0x8] + movs r3, 0 + bl sub_80053AC +_08011370: + adds r6, 0x3C + adds r5, 0x3C + adds r4, 0x1 + cmp r4, 0x7 + ble _0801132E + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08011388: .4byte gUnknown_203B0E4 +_0801138C: .4byte 0x00004a18 +_08011390: .4byte 0x00004018 +_08011394: .4byte 0x00004a30 + thumb_func_end sub_8011300 + + thumb_func_start sub_8011398 +sub_8011398: + push {r4-r6,lr} + sub sp, 0x12C + ldr r5, _080113F4 + ldr r0, [r5] + ldr r2, _080113F8 + adds r1, r0, r2 + ldr r1, [r1] + ldr r3, _080113FC + adds r0, r3 + lsls r1, 5 + ldr r0, [r0] + adds r6, r0, r1 + add r4, sp, 0xCC + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x60 + bl memset + movs r2, 0x3 + str r2, [r4, 0x4] + movs r0, 0x7 + strh r0, [r4, 0x8] + movs r1, 0x2 + strh r1, [r4, 0xA] + movs r0, 0x15 + strh r0, [r4, 0xC] + strh r1, [r4, 0xE] + strh r1, [r4, 0x10] + str r2, [r4, 0x1C] + str r2, [r4, 0x34] + str r2, [r4, 0x4C] + ldr r0, [r5] + ldr r2, _08011400 + adds r1, r0, r2 + movs r3, 0 + ldrsh r1, [r1, r3] + subs r2, 0x4 + adds r0, r2 + movs r3, 0 + ldrsh r0, [r0, r3] + subs r1, r0 + cmp r1, 0x50 + bgt _08011404 + movs r0, 0x11 + b _08011406 + .align 2, 0 +_080113F4: .4byte gUnknown_203B0E4 +_080113F8: .4byte 0x00004a18 +_080113FC: .4byte 0x00004014 +_08011400: .4byte 0x00004dda +_08011404: + movs r0, 0x1 +_08011406: + strh r0, [r4, 0xA] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + movs r0, 0 + bl sub_80073B8 + ldr r1, _0801147C + ldr r2, [r6] + add r0, sp, 0x4 + bl sprintfStatic + movs r0, 0 + str r0, [sp] + movs r0, 0xC + movs r1, 0x2 + add r2, sp, 0x4 + movs r3, 0 + bl xxx_format_and_draw + movs r0, 0 + bl sub_80073E0 + ldr r0, _08011480 + ldr r1, [r0] + ldr r0, _08011484 + adds r2, r1, r0 + movs r3, 0x8 + ldrsh r0, [r4, r3] + lsls r0, 3 + subs r0, 0x5 + str r0, [r2] + ldr r0, _08011488 + adds r2, r1, r0 + movs r3, 0xA + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r0, 0x5 + str r0, [r2] + ldr r0, _0801148C + adds r2, r1, r0 + movs r3, 0xC + ldrsh r0, [r4, r3] + lsls r0, 3 + adds r0, 0xA + str r0, [r2] + ldr r0, _08011490 + adds r1, r0 + movs r2, 0xE + ldrsh r0, [r4, r2] + lsls r0, 3 + adds r0, 0xA + str r0, [r1] + add sp, 0x12C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0801147C: .4byte gUnknown_80D40FC +_08011480: .4byte gUnknown_203B0E4 +_08011484: .4byte 0x00004ddc +_08011488: .4byte 0x00004de0 +_0801148C: .4byte 0x00004de4 +_08011490: .4byte 0x00004de8 + thumb_func_end sub_8011398 + + thumb_func_start sub_8011494 +sub_8011494: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC8 + ldr r0, _08011610 + ldr r2, [r0] + ldr r1, _08011614 + adds r0, r2, r1 + ldr r0, [r0] + ldr r3, _08011618 + adds r1, r2, r3 + lsls r0, 5 + ldr r1, [r1] + adds r1, r0 + mov r8, r1 + ldr r0, _0801161C + adds r7, r2, r0 + add r4, sp, 0x64 + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x60 + bl memset + movs r0, 0x6 + str r0, [sp, 0x68] + add r1, sp, 0x6C + movs r0, 0x7 + strh r0, [r1] + movs r2, 0x2 + strh r2, [r1, 0x2] + add r1, sp, 0x70 + movs r0, 0x15 + strh r0, [r1] + mov r0, sp + adds r0, 0x72 + strh r2, [r0] + add r0, sp, 0x74 + strh r2, [r0] + add r5, sp, 0xC4 + str r5, [sp, 0x78] + movs r1, 0x3 + str r1, [sp, 0x80] + add r0, sp, 0x94 + str r1, [r0, 0x4] + add r0, sp, 0xAC + str r1, [r0, 0x4] + add r0, sp, 0x4 + adds r1, r4, 0 + movs r2, 0x60 + bl memcpy + movs r1, 0 + mov r9, r1 + movs r6, 0 + mov r10, r5 +_08011506: + mov r0, r8 + adds r0, 0x8 + adds r4, r0, r6 + ldrb r0, [r4] + bl sub_800FFE8 + lsls r0, 24 + cmp r0, 0 + beq _0801152A + ldr r0, _08011610 + ldr r0, [r0] + ldr r2, _08011620 + adds r0, r2 + add r0, r9 + ldrb r1, [r4] + strb r1, [r0] + movs r3, 0x1 + add r9, r3 +_0801152A: + adds r6, 0x1 + cmp r6, 0x7 + ble _08011506 + ldr r5, _08011610 + ldr r0, [r5] + ldr r1, _08011624 + adds r0, r1 + mov r2, r9 + str r2, [r0] + movs r4, 0 + movs r0, 0x1 + mov r3, r10 + strb r0, [r3] + add r0, sp, 0xC4 + strb r4, [r0, 0x1] + movs r1, 0x12 + strb r1, [r0, 0x2] + strb r4, [r0, 0x3] + strh r4, [r7, 0x18] + strh r2, [r7, 0x1A] + mov r0, r9 + strh r0, [r7, 0x1C] + strh r4, [r7, 0x1E] + strh r4, [r7, 0x20] + strh r4, [r7, 0x4] + movs r0, 0x10 + strh r0, [r7, 0x6] + str r4, [r7] + strh r4, [r7, 0xC] + strh r4, [r7, 0xE] + strh r4, [r7, 0x14] + strh r4, [r7, 0x16] + movs r0, 0x8 + strh r0, [r7, 0x8] + strh r0, [r7, 0xA] + adds r0, r7, 0 + adds r0, 0x28 + bl sub_801317C + movs r1, 0x1C + ldrsh r0, [r7, r1] + movs r1, 0 + bl sub_80095E4 + adds r1, r0, 0 + add r3, sp, 0x4 + adds r2, r3, 0 + adds r0, r1, 0x2 + strh r0, [r2, 0xE] + strh r0, [r3, 0x10] + lsls r1, 3 + adds r0, r7, 0 + bl sub_80137B0 + add r0, sp, 0x4 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r1, [r5] + ldr r2, _08011628 + adds r0, r1, r2 + str r4, [r0] + ldr r3, _0801162C + adds r0, r1, r3 + str r4, [r0] + adds r2, 0x8 + adds r0, r1, r2 + str r4, [r0] + adds r3, 0x8 + adds r1, r3 + str r4, [r1] + movs r0, 0 + bl sub_80073B8 + ldr r2, _08011630 + str r4, [sp] + movs r0, 0x10 + movs r1, 0 + movs r3, 0 + bl xxx_format_and_draw + movs r6, 0 + cmp r6, r9 + bge _08011678 + add r0, sp, 0x64 + mov r8, r0 + ldr r1, _08011634 + mov r10, r1 +_080115DC: + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_8013800 + adds r4, r0, 0 + ldr r2, _08011610 + ldr r0, [r2] + ldr r3, _08011620 + adds r0, r3 + adds r0, r6 + ldrb r5, [r0] + ldr r0, _08011638 + adds r1, r5, 0 + bl sub_80101F8 + cmp r5, 0 + bne _08011640 + str r5, [sp] + movs r0, 0xC + adds r1, r4, 0 + ldr r2, _0801163C + movs r3, 0 + bl xxx_format_and_draw + b _08011672 + .align 2, 0 +_08011610: .4byte gUnknown_203B0E4 +_08011614: .4byte 0x00004a18 +_08011618: .4byte 0x00004014 +_0801161C: .4byte 0x00004dfc +_08011620: .4byte 0x00004dec +_08011624: .4byte 0x00004df8 +_08011628: .4byte 0x00004ddc +_0801162C: .4byte 0x00004de0 +_08011630: .4byte gUnknown_80D4104 +_08011634: .4byte gUnknown_202DE30 +_08011638: .4byte gUnknown_202DE58 +_0801163C: .4byte gUnknown_80D4120 +_08011640: + ldr r1, _08011690 + ldr r0, [r1] + ldr r2, _08011694 + adds r0, r2 + ldrb r2, [r0] + adds r0, r5, 0 + mov r1, r8 + bl sub_80926F8 + mov r3, r8 + movs r1, 0x2 + ldrsh r0, [r3, r1] + mov r2, r10 + str r0, [r2] + movs r1, 0 + ldrsh r0, [r3, r1] + str r0, [r2, 0x4] + movs r0, 0 + str r0, [sp] + movs r0, 0xC + adds r1, r4, 0 + ldr r2, _08011698 + movs r3, 0 + bl xxx_format_and_draw +_08011672: + adds r6, 0x1 + cmp r6, r9 + blt _080115DC +_08011678: + movs r0, 0 + bl sub_80073E0 + add sp, 0xC8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08011690: .4byte gUnknown_203B0E4 +_08011694: .4byte 0x00004a2c +_08011698: .4byte gUnknown_80D4124 + thumb_func_end sub_8011494 + + .align 2,0 diff --git a/asm/code_8041AD0.s b/asm/code_8041AD0.s index 8e842f258..237859968 100644 --- a/asm/code_8041AD0.s +++ b/asm/code_8041AD0.s @@ -528,289 +528,4 @@ _08042668: bx r1 thumb_func_end sub_8042520 -@ This func plays the appropriate ascend/descend SFX for stairs depending on the direction -@ https://decomp.me/scratch/Soyeh (kermalis 100%) `void sub_804267C(void)` - thumb_func_start sub_804267C -sub_804267C: - push {r4,lr} - ldr r4, _080426B8 - bl sub_8043D10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08042694 - cmp r0, 0 - blt _08042694 - cmp r0, 0x2 - ble _080426AC -_08042694: - ldr r0, _080426BC - ldr r0, [r0] - ldr r1, _080426C0 - adds r0, r1 - ldrb r0, [r0] - bl IsStairDirectionUp - lsls r0, 24 - ldr r4, _080426C4 - cmp r0, 0 - beq _080426AC - subs r4, 0x1 -_080426AC: - adds r0, r4, 0 - bl PlaySoundEffect - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080426B8: .4byte 0x000003e5 -_080426BC: .4byte gDungeon -_080426C0: .4byte 0x00000644 -_080426C4: .4byte 0x00000155 - thumb_func_end sub_804267C - -@ https://decomp.me/scratch/vilX5 (kermalis 100%) `void sub_80426C8(u32, u32)` - thumb_func_start sub_80426C8 -sub_80426C8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - cmp r4, 0x3 - bne _080426D8 - movs r0, 0 - bl DungeonStartNewBGM -_080426D8: - cmp r5, 0x4 - beq _080426F0 - ldr r0, _080426EC - lsls r1, r4, 1 - adds r1, r0 - ldrh r0, [r1] - bl PlaySoundEffect - b _080426FC - .align 2, 0 -_080426EC: .4byte gUnknown_80F67DC -_080426F0: - ldr r0, _08042708 - lsls r1, r4, 1 - adds r1, r0 - ldrh r0, [r1] - bl PlaySoundEffect -_080426FC: - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x80 - bl sub_8042B34 - b _08042712 - .align 2, 0 -_08042708: .4byte gUnknown_80F67E4 -_0804270C: - movs r0, 0x46 - bl sub_803E46C -_08042712: - bl sub_8042CC0 - lsls r0, 24 - cmp r0, 0 - bne _0804270C - bl sub_8042D7C - bl sub_8040238 - movs r0, 0x1 - bl sub_8052210 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80426C8 - -@ https://decomp.me/scratch/AJFhQ (kermalis 100%) `void sub_8042730(Entity *, void *)` - thumb_func_start sub_8042730 -sub_8042730: - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x8 - movs r2, 0x8 - bl sub_806CDD4 - movs r5, 0 - b _08042742 -_08042740: - adds r5, 0x1 -_08042742: - cmp r5, 0x63 - bgt _08042760 - movs r0, 0x51 - bl sub_803E46C - ldr r0, [r4, 0x40] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08042760 - adds r0, r4, 0 - adds r0, 0x6B - ldrb r0, [r0] - cmp r0, 0x8 - beq _08042740 -_08042760: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8042730 - -@ https://decomp.me/scratch/2oNpD (kermalis 100%) `bool8 sub_8042768(Entity *)` - thumb_func_start sub_8042768 -sub_8042768: - push {lr} - adds r1, r0, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0 - bne _08042778 -_08042774: - movs r0, 0 - b _080427A6 -_08042778: - ldr r0, _08042794 - ldr r2, [r0] - ldr r3, _08042798 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0804279C - subs r3, 0x12 - adds r0, r2, r3 - ldr r0, [r0] - cmp r0, r1 - bne _08042774 - movs r0, 0x1 - b _080427A6 - .align 2, 0 -_08042794: .4byte gDungeon -_08042798: .4byte 0x0001820a -_0804279C: - adds r0, r1, 0 - bl sub_8045888 - lsls r0, 24 - lsrs r0, 24 -_080427A6: - pop {r1} - bx r1 - thumb_func_end sub_8042768 - -@ https://decomp.me/scratch/uuAnf (kermalis 100%) `void sub_80427AC(void)` - thumb_func_start sub_80427AC -sub_80427AC: - push {r4-r6,lr} - movs r6, 0 -_080427B0: - ldr r0, _08042808 - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _0804280C - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080427FA - ldr r5, [r4, 0x70] - adds r1, r5, 0 - adds r1, 0xF3 - ldrb r0, [r1] - cmp r0, 0 - beq _080427FA - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl sub_80429A0 - ldrb r0, [r5, 0x6] - cmp r0, 0 - bne _080427FA - ldr r0, _08042810 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08042814 - ldr r1, [r0] - adds r0, r4, 0 - bl sub_805239C -_080427FA: - adds r6, 0x1 - cmp r6, 0x13 - ble _080427B0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08042808: .4byte gDungeon -_0804280C: .4byte 0x000135cc -_08042810: .4byte gAvailablePokemonNames -_08042814: .4byte gPtrFeralFoundItemMessage - thumb_func_end sub_80427AC - -@ https://decomp.me/scratch/hzCAZ (kermalis 100%) `void sub_8042818(u8 a0, bool8 a1)` - thumb_func_start sub_8042818 -sub_8042818: - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - ldr r0, _08042874 - ldr r0, [r0] - ldr r1, _08042878 - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - bne _08042836 - bl GetLeader - adds r4, r0, 0 -_08042836: - ldr r1, _0804287C - lsls r0, r5, 1 - adds r2, r0, r1 - ldrh r1, [r2] - ldr r0, _08042880 - cmp r1, r0 - beq _0804284A - adds r0, r4, 0 - bl sub_80421C0 -_0804284A: - ldr r0, _08042884 - lsls r1, r5, 2 - adds r0, r1, r0 - ldr r5, [r0] - adds r6, r1, 0 - cmp r5, 0 - blt _08042896 - cmp r7, 0 - beq _08042888 - bl IsBossFight - lsls r0, 24 - cmp r0, 0 - bne _08042888 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl sub_804151C - b _08042896 - .align 2, 0 -_08042874: .4byte gDungeon -_08042878: .4byte 0x000181f8 -_0804287C: .4byte gUnknown_80F682C -_08042880: .4byte 0x000003e5 -_08042884: .4byte gUnknown_80F67EC -_08042888: - ldr r0, _0804289C - adds r0, r6, r0 - ldr r1, [r0] - adds r0, r4, 0 - movs r2, 0 - bl sub_804151C -_08042896: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804289C: .4byte gUnknown_80F680C - thumb_func_end sub_8042818 - .align 2,0 diff --git a/asm/code_80428A0.s b/asm/code_8042B34.s similarity index 100% rename from asm/code_80428A0.s rename to asm/code_8042B34.s diff --git a/include/code_800E9A8.h b/include/code_800E9A8.h new file mode 100644 index 000000000..c1aa6dd6d --- /dev/null +++ b/include/code_800E9A8.h @@ -0,0 +1,35 @@ +#ifndef GUARD_CODE_800E9A8_H +#define GUARD_CODE_800E9A8_H + +struct unkStruct_203B0CC_sub +{ + // size: 0xD0 + u32 unk0; + s32 unk4; + u8 fill8[0x34 - 8]; + u32 unk34; + u32 unk38; + u8 fill3C[0x4C - 0x3C]; + u32 unk4C; + s32 unk50; + u8 unk54; + u8 fill55[0xB8 - 0x55]; + u32 unkB8; + u8 fillBC[0xD0 - 0xBC]; +}; + +struct unkStruct_203B0CC +{ + // size: 0x1A18 + struct unkStruct_203B0CC_sub unk0[0x20]; + u32 unk1A00; + /* 0x1A04 */ u32 fileSelection; + u32 unk1A08; + u32 unk1A0C; + u32 unk1A10; + u8 fill1A14[0x1A18 - 0x1A14]; +}; + +bool8 sub_800E9A8(s32 a0); + +#endif diff --git a/include/code_800F958.h b/include/code_800F958.h new file mode 100644 index 000000000..8f0880135 --- /dev/null +++ b/include/code_800F958.h @@ -0,0 +1,42 @@ +#ifndef GUARD_CODE_800F958_H +#define GUARD_CODE_800F958_H + +#include "structs/str_dungeon.h" + +// size: 0x8 +typedef struct DungeonPokemonStatusSprite +{ + /* 0x0 */ u32 status; + /* 0x4 */ u32 frame; +} DungeonPokemonStatusSprite; + +// size: 0x40 +typedef struct DungeonPokemonSprite +{ + /* 0x0 */ u8 exists; + /* 0x4 */ u32 id; + /* 0x8 */ u16 species; // Or sprite ID? + /* 0xA */ u16 unkA; + /* 0xC */ u32 status; + /* 0x10 */ u8 visible; + /* 0x11 */ u8 unk11; + /* 0x14 */ Position pos; + /* 0x18 */ Position statusOffsets[2]; + /* 0x20 */ u32 unk20; + /* 0x24 */ u32 unk24; + /* 0x28 */ DungeonPokemonStatusSprite statusSprites[2]; + /* 0x38 */ u8 unk38; + /* 0x3C */ u16 unk3C; + /* 0x3E */ u16 unk3E; +} DungeonPokemonSprite; + +// size: 0x584 +typedef struct DungeonPokemonSprites +{ + /* 0x0 */ u32 frame; + /* 0x4 */ struct DungeonPokemonSprite sprites[22]; +} DungeonPokemonSprites; + +void sub_800F958(s32 dungeonSpriteID, Position *pos, Position *statusOffsets, u32 a3); + +#endif diff --git a/include/code_8010EF0.h b/include/code_8010EF0.h new file mode 100644 index 000000000..29edb0a9c --- /dev/null +++ b/include/code_8010EF0.h @@ -0,0 +1,41 @@ +#ifndef GUARD_CODE_8010EF0_H +#define GUARD_CODE_8010EF0_H + +#include "file_system.h" + +// size: 0x4 +typedef struct RGB +{ + // IDK which is R G B + u8 unk0; + u8 unk1; + u8 unk2; +} RGB; + +// size: 0x18 +typedef struct unkStruct_202EE8C +{ + u32 unk0; + u16 unk4; + s16 unk6; + RGB *unk8; + RGB *unkC; + RGB *unk10; + RGB unk14; +} unkStruct_202EE8C; + +// size: 0x4DD8 +struct UnkBgStruct +{ + OpenedFile *unk0[5]; + u8 padding[0x4C4C - 0x14]; + unkStruct_202EE8C unk4C4C[16]; + u32 unk4DCC; + u32 unk4DD0; + /* 0x4DD4 */ s16 xoffset; + /* 0x4DD6 */ s16 yoffset; +}; + +void sub_8010EF0(void); + +#endif diff --git a/include/code_804267C.h b/include/code_804267C.h new file mode 100644 index 000000000..0c4557cf8 --- /dev/null +++ b/include/code_804267C.h @@ -0,0 +1,13 @@ +#ifndef GUARD_CODE_804267C_H +#define GUARD_CODE_804267C_H + +#include "structs/dungeon_entity.h" + +void PlayStairsSound(void); +void sub_80426C8(u32 a0, u32 a1); +void sub_8042730(Entity *a0, void *unused); +bool8 sub_8042768(Entity* pokemon); +void sub_80427AC(void); +void sub_8042818(u8 a0, bool8 a1); + +#endif diff --git a/include/code_8045A00.h b/include/code_8045A00.h new file mode 100644 index 000000000..7a3cca85b --- /dev/null +++ b/include/code_8045A00.h @@ -0,0 +1,8 @@ +#ifndef GUARD_CODE_8045A00_H +#define GUARD_CODE_8045A00_H + +#include "structs/dungeon_entity.h" + +void SetMessageArgument(char buffer[], Entity *entity, u32 param_3); + +#endif // GUARD_CODE_8045A00_H \ No newline at end of file diff --git a/include/dungeon.h b/include/dungeon.h index b8d7ca0cc..ccd3a3073 100644 --- a/include/dungeon.h +++ b/include/dungeon.h @@ -38,6 +38,7 @@ extern DungeonName gDungeonNames[]; s32 GetDungeonFloorCount(u8 dungeon); const u8 *GetDungeonName1(u8 dungeon); +bool8 IsStairDirectionUp(u8 dungeon); u32 GetMaxItemsAllowed(u8 dungeon); s8 GetRescuesAllowed(u8 dungeon); bool8 HasCheckpoint(u8 dungeon); diff --git a/include/dungeon_movement.h b/include/dungeon_movement.h index e206c26fb..86ecc90d6 100644 --- a/include/dungeon_movement.h +++ b/include/dungeon_movement.h @@ -2,6 +2,7 @@ #define GUARD_DUNGEON_MOVEMENT #include "structs/dungeon_entity.h" +#include "structs/map.h" u8 GetCrossableTerrain(s16 species); u8 sub_807034C(s16 id, struct Tile *tile); diff --git a/include/move_effects_target.h b/include/move_effects_target.h index 731c2d106..76e7b646d 100644 --- a/include/move_effects_target.h +++ b/include/move_effects_target.h @@ -1,6 +1,8 @@ #ifndef GUARD_MOVE_EFFECTS_TARGET_H #define GUARD_MOVE_EFFECTS_TARGET_H +#include "structs/dungeon_entity.h" + u8 sub_8075BF4(Entity * pokemon, s32 sleepTurns); void sub_8075C58(Entity * pokemon, Entity * target, s32 turns, bool8 displayMessage); bool8 CannotSleep(Entity * pokemon, Entity * target, u8 param_3, bool8 displayMessage); diff --git a/include/status_checks_1.h b/include/status_checks_1.h index c44cfbe97..99a229713 100644 --- a/include/status_checks_1.h +++ b/include/status_checks_1.h @@ -3,6 +3,7 @@ #include "structs/dungeon_entity.h" +void SetMessageArgument_2(char buffer[], EntityInfo *param_2, s32 colorNum); bool8 HasNegativeStatus(Entity *pokemon); bool8 IsSleeping(Entity *pokemon); bool8 HasLowHealth(Entity *pokemon); diff --git a/ld_script.txt b/ld_script.txt index fb23cf5ad..37d2f531b 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -85,6 +85,12 @@ SECTIONS { src/code_800D090_1.o(.text); src/code_800DAC0.o(.text); asm/code_800DAC0.o(.text); + src/code_800E9A8.o(.text); + asm/code_800E9E4.o(.text); + src/code_800F958.o(.text); + asm/code_800F990.o(.text); + src/code_8010EF0.o(.text); + asm/code_8010F28.o(.text); src/code_80118A4.o(.text); src/debug.o(.text); src/save.o(.text); @@ -198,8 +204,8 @@ SECTIONS { asm/code_8040094.o(.text); src/code_8041AD0.o(.text); asm/code_8041AD0.o(.text); - src/code_80428A0.o(.text); - asm/code_80428A0.o(.text); + src/code_804267C.o(.text); + asm/code_8042B34.o(.text); src/dungeon_engine.o(.text); asm/code_8044210.o(.text); src/dungeon_action.o(.text); diff --git a/src/code_800E9A8.c b/src/code_800E9A8.c new file mode 100644 index 000000000..ffca6e9db --- /dev/null +++ b/src/code_800E9A8.c @@ -0,0 +1,24 @@ +#include "global.h" +#include "code_800E9A8.h" + +struct unkStruct_203B0CC *gUnknown_203B0CC; + +bool8 sub_800E9A8(s32 a0) +{ + s32 i; + struct unkStruct_203B0CC_sub *ptr; + + if (a0 == -1) + return FALSE; + + ptr = gUnknown_203B0CC->unk0; + for (i = 0; i < 32; i++, ptr++) { + if (ptr->unk4 == a0) { + if (ptr->unk54 != 0) + return FALSE; + return TRUE; + } + } + + return FALSE; +} \ No newline at end of file diff --git a/src/code_800F958.c b/src/code_800F958.c new file mode 100644 index 000000000..dbd9a1e5c --- /dev/null +++ b/src/code_800F958.c @@ -0,0 +1,23 @@ +#include "global.h" +#include "code_800F958.h" + +extern DungeonPokemonSprites *gDungeonPokemonSprites; + +extern DungeonPokemonSprite* GetDungeonPokemonSprite(s32 id); + +void sub_800F958(s32 dungeonSpriteID, Position *pos, Position *statusOffsets, u32 a3) +{ + DungeonPokemonSprite *dSprite; + + if (gDungeonPokemonSprites == NULL) + return; + + dSprite = GetDungeonPokemonSprite(dungeonSpriteID); + if (dSprite == NULL) + return; + + dSprite->pos = *pos; + dSprite->unk11 = a3; + dSprite->statusOffsets[0] = statusOffsets[0]; + dSprite->statusOffsets[1] = statusOffsets[3]; +} diff --git a/src/code_8010EF0.c b/src/code_8010EF0.c new file mode 100644 index 000000000..700d5778e --- /dev/null +++ b/src/code_8010EF0.c @@ -0,0 +1,15 @@ +#include "global.h" +#include "code_8010EF0.h" + +extern struct UnkBgStruct *gUnknown_203B0E4; + +extern void CloseFile(OpenedFile *); + +void sub_8010EF0(void) +{ + CloseFile(gUnknown_203B0E4->unk0[4]); + CloseFile(gUnknown_203B0E4->unk0[2]); + CloseFile(gUnknown_203B0E4->unk0[3]); + CloseFile(gUnknown_203B0E4->unk0[0]); + CloseFile(gUnknown_203B0E4->unk0[1]); +} diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index c972f9f1e..8326f4596 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -1,5 +1,6 @@ #include "global.h" #include "code_806CD90.h" +#include "code_804267C.h" #include "constants/direction.h" #include "constants/status.h" #include "constants/type.h" @@ -49,7 +50,6 @@ extern u32 gStatusSpriteMasks_MuzzledStatus[]; extern void sub_803ED30(u8, Entity *pokemon, u8, u8); extern void sub_804151C(Entity *pokemon, u32 r1, u8 r2); -extern bool8 sub_8042768(Entity *pokemon); extern u32 sub_806F62C(u32); extern void PlaySoundEffect(u32); extern u8 sub_803F428(Position *pos); @@ -78,7 +78,7 @@ s32 sub_80416E0(Position32 *pos, u32 param_2, bool8 param_3); s32 sub_80416A4(Position *pos_1, u32 param_2, bool8 param_3) { Position32 pos; - + pos.x = pos_1->x * 0x1800 + 0xc00; pos.y = pos_1->y * 0x1800 + 0x1000; return sub_80416E0(&pos, param_2, param_3); @@ -97,7 +97,7 @@ s32 sub_80416E0(Position32 *pos, u32 param_2, bool8 param_3) auStack_10.x = pos->x / 256; auStack_10.y = pos->y / 256; - + auStack_10.unk14 = -1; auStack_10.unk10 = 0; auStack_10.unk12 = 0; @@ -128,7 +128,7 @@ void sub_804178C(u8 param_1) { u32 temp; s32 counter; - + counter = 0; gDungeon->unk18204 = 0; if (sub_800E9FC(param_1) != 0) { @@ -198,7 +198,7 @@ void EntityUpdateStatusSprites(Entity *entity) EntityInfo *entityInfo; u32 spriteStatus; u8 temp; - + if (EntityExists(entity)) { entityInfo = entity->info; spriteStatus = 0; @@ -206,7 +206,7 @@ void EntityUpdateStatusSprites(Entity *entity) if (entityInfo->id == 0xb9) { // NOTE: clean this up sometime - temp = entityInfo->sleep.sleepTurns; + temp = entityInfo->sleep.sleepTurns; flag = 0x7f; temp ^= flag; flag = (temp) != 0; @@ -214,7 +214,7 @@ void EntityUpdateStatusSprites(Entity *entity) if (flag) { spriteStatus = gStatusSpriteMasks_SleepStatus[entityInfo->sleep.sleep]; } - spriteStatus = spriteStatus | + spriteStatus = spriteStatus | gStatusSpriteMasks_NonVolatileStatus[entityInfo->nonVolatile.nonVolatileStatus] | gStatusSpriteMasks_ImmobilizeStatus[entityInfo->immobilize.immobilizeStatus] | gStatusSpriteMasks_VolatileStatus[entityInfo->volatileStatus.volatileStatus] | @@ -247,15 +247,15 @@ void EntityUpdateStatusSprites(Entity *entity) if ((gDungeon->itemHoldersIdentified) && (entityInfo->heldItem.flags & ITEM_FLAG_EXISTS)) { spriteStatus = spriteStatus | STATUS_SPRITE_LOWHP; } - if ( (entityInfo->offensiveMultipliers[0] < DEFAULT_STAT_MULTIPLIER) || + if ( (entityInfo->offensiveMultipliers[0] < DEFAULT_STAT_MULTIPLIER) || (entityInfo->offensiveMultipliers[1] < DEFAULT_STAT_MULTIPLIER) || (entityInfo->defensiveMultipliers[0] < DEFAULT_STAT_MULTIPLIER) || (entityInfo->defensiveMultipliers[1] < DEFAULT_STAT_MULTIPLIER) || (entityInfo->offensiveStages[0] < DEFAULT_STAT_STAGE) || (entityInfo->offensiveStages[1] < DEFAULT_STAT_STAGE) || - (entityInfo->defensiveStages[0] < DEFAULT_STAT_STAGE) || + (entityInfo->defensiveStages[0] < DEFAULT_STAT_STAGE) || (entityInfo->defensiveStages[1] < DEFAULT_STAT_STAGE) || - (entityInfo->hitChanceStages[0]) < DEFAULT_STAT_STAGE || + (entityInfo->hitChanceStages[0]) < DEFAULT_STAT_STAGE || (entityInfo->hitChanceStages[1] < DEFAULT_STAT_STAGE)) { spriteStatus = spriteStatus | STATUS_SPRITE_STAT_DOWN; } diff --git a/src/code_804267C.c b/src/code_804267C.c new file mode 100644 index 000000000..283fbf26d --- /dev/null +++ b/src/code_804267C.c @@ -0,0 +1,320 @@ +#include "global.h" +#include "code_804267C.h" +#include "code_8045A00.h" +#include "code_806CD90.h" +#include "dungeon.h" +#include "dungeon_engine.h" +#include "dungeon_leader.h" +#include "dungeon_music.h" +#include "dungeon_util.h" +#include "structs/str_dungeon.h" + +extern u8 gAvailablePokemonNames[]; // 202DF98 + +extern const u16 gUnknown_80F67DC[4]; +extern const u16 gUnknown_80F67E4[4]; +extern const s32 gUnknown_80F67EC[8]; +extern const u32 gUnknown_80F680C[8]; +extern const u16 gUnknown_80F682C[8]; +extern const u8 *gPtrFeralFoundItemMessage[]; + +extern void sub_803E46C(u32); +extern void sub_803E708(u32 r0, u32 r1); +extern void sub_8040238(void); +extern void sub_804151C(Entity *pokemon, u32 r1, u8 r2); +extern void sub_804178C(u32); +extern void sub_80416A4(Position *r0, u32 r1, bool8 r2); +extern void sub_80421C0(Entity *pokemon, u16 r1); +extern void sub_80429A0(Entity *); +extern void sub_8042B34(u32, u32, u32); +extern bool8 sub_8042CC0(void); +extern void sub_8042D7C(void); +extern u8 sub_8043D10(void); +extern bool8 sub_8045888(Entity *); +extern void sub_8052210(u32); +extern void sub_805239C(Entity *, const u8 *); + +// This func plays the appropriate ascend/descend SFX for stairs depending on the direction +void PlayStairsSound(void) +{ + u32 songIndex; + + songIndex = 997; + + switch (sub_8043D10()) { + case 0: + default: + songIndex = IsStairDirectionUp(gDungeon->dungeonLocation.id) ? 340 : 341; + break; + case 1: + case 2: + break; + } + + PlaySoundEffect(songIndex); +} + +void sub_80426C8(u32 a0, u32 a1) +{ + if (a1 == 3) + DungeonStartNewBGM(0); + + if (a0 != 4) + PlaySoundEffect(gUnknown_80F67DC[a1]); + else + PlaySoundEffect(gUnknown_80F67E4[a1]); + + sub_8042B34(a0, a1, 0x80); + + while (sub_8042CC0()) + sub_803E46C(0x46); + + sub_8042D7C(); + sub_8040238(); + sub_8052210(1); +} + +void sub_8042730(Entity *a0, void *unused) +{ + s32 i; + + sub_806CDD4(a0, 8, 8); + for (i = 0; i < 100; i++) { + sub_803E46C(0x51); + if ((a0->spriteInfo.unk18 & 3) != 0 || a0->unk6B != 8) + break; + } +} + +bool8 sub_8042768(Entity* pokemon) +{ + if (!pokemon->isVisible) + return FALSE; + if (gDungeon->blinded) { + if (gDungeon->cameraTarget == pokemon) + return TRUE; + else + return FALSE; + } + return sub_8045888(pokemon); +} + +void sub_80427AC(void) +{ + Entity *entity; + EntityInfo *enInfo; + s32 i; + + for (i = 0; i < 20; i++) { + entity = gDungeon->allPokemon[i]; + if (EntityExists(entity)) { + enInfo = entity->info; + if (enInfo->fillF3) { + enInfo->fillF3 = 0; + sub_80429A0(entity); + if (!enInfo->isNotTeamMember) { + SetMessageArgument(gAvailablePokemonNames, entity, 0); + sub_805239C(entity, *gPtrFeralFoundItemMessage); + } + } + } + } +} + +void sub_8042818(u8 a0, bool8 a1) +{ + Entity *en; + + en = gDungeon->cameraTarget; + if (en == NULL) + en = GetLeader(); + + if (gUnknown_80F682C[a0] != 997) + sub_80421C0(en, gUnknown_80F682C[a0]); + + if (gUnknown_80F67EC[a0] < 0) + return; + + if (a1 && !IsBossFight()) + sub_804151C(en, gUnknown_80F67EC[a0], 0); + else + sub_804151C(en, gUnknown_80F680C[a0], 0); +} + +void sub_80428A0(Entity *r0) +{ + sub_804151C(r0, 0x29, 1); +} + +void sub_80428B0(Entity *r0) +{ + sub_804151C(r0, 0x1a9, 0); +} + + +void sub_80428C4(Entity *r0) +{ + sub_804151C(r0, 0x1a9, 0); +} + + +void sub_80428D8(Entity *r0) +{ + sub_804151C(r0, 0x1a9, 0); +} + +void sub_80428EC(Entity *r0) +{ + sub_804151C(r0, 0x1a9, 0); +} + +void sub_8042900(Entity *r0) +{ + sub_804151C(r0, 0xD4 << 1, 0); +} + +void ShowVisualFlags(Entity *r0) +{ + sub_804151C(r0, 0x29, 0); +} + +void sub_8042920(Entity *r0) +{ + sub_804151C(r0, 0x48, 0); +} + +void sub_8042930(Entity *r0) +{ + sub_804151C(r0, 0xD3 << 1, 1); +} + +void sub_8042940(Entity *r0) +{ + sub_804151C(r0, 0xC7 << 1, 0); +} + +void sub_8042950(Entity *r0) +{ + sub_804151C(r0, 0xD8 << 1, 1); + sub_803E708(0xA, 0x42); +} + +void sub_8042968(Entity *r0) +{ + sub_804151C(r0, 0xD4 << 1, 0); +} + +void sub_8042978(Entity *r0) +{ + sub_804151C(r0, 0x1a9, 0); +} + +void sub_804298C(Entity *r0) +{ + sub_804151C(r0, 0x1a9, 0); +} + +void sub_80429A0(Entity *r0) +{ + sub_804151C(r0, 0x199, 0); +} + +void sub_80429B4(Entity *r0) +{ + sub_804151C(r0, 0x1ab, 0); +} + +void sub_80429C8(Entity *r0) +{ + sub_804151C(r0, 0x4, 1); +} + +void sub_80429D8(Entity *r0) +{ + sub_804151C(r0, 0x8F << 1, 1); +} + +void sub_80429E8(Entity *r0) +{ + sub_804151C(r0, 0x11d, 1); +} + +void sub_80429FC(Position *r0) +{ + sub_80416A4(r0, 0x19E, TRUE); + sub_80421C0(NULL, 0xD4); +} + +void sub_8042A14(Position *r0) +{ + sub_80416A4(r0, 0x36, TRUE); +} + +void sub_8042A24(Entity *r0) +{ + sub_804151C(r0, 0x15, 1); +} + +void sub_8042A34(Position *r0) +{ + sub_80416A4(r0, 0x13E, FALSE); +} + +void sub_8042A44(Entity *r0) +{ + sub_804151C(r0, 0xDA << 1, 1); +} + +void sub_8042A54(Position *r0) +{ + sub_80416A4(r0, 0x37, TRUE); +} + +void sub_8042A64(Position *r0) +{ + sub_80416A4(r0, 0x29, TRUE); +} + +void sub_8042A74(Entity *r0) +{ + sub_804151C(r0, 0x18, 1); +} + +void sub_8042A84(s16 param_1, Entity *entity, u32 param_3) +{ + s32 iVar2; + s32 iVar3; + s32 r6; + s32 param_1_s16; + + param_1_s16 = param_1; + + r6 = 0x200; + if (sub_8042768(entity)) { + sub_804151C(entity,param_1_s16,0); + sub_803E708(param_3,0x42); + do { + if (0xc7ff < entity->unk1C) break; + sub_803E46C(0x42); + iVar2 = entity->unk1C + r6; + entity->unk1C = iVar2; + r6 += 0x100; + iVar3 = entity->pixelPos.y - iVar2; + if (iVar3 < 0) { + iVar3 += 0xff; + } + } while (-8 <= (iVar3 >> 8) - gDungeon->cameraPixelPos.y); + entity->isVisible = 0; + sub_804178C(0); + } +} + +void sub_8042B0C(Entity *entity) +{ + sub_8042A84(0x13e, entity, 5); +} + +void sub_8042B20(Entity *entity) +{ + sub_8042A84(0x1BC, entity, 0xE); +} diff --git a/src/code_80428A0.c b/src/code_80428A0.c deleted file mode 100644 index 86d85ec50..000000000 --- a/src/code_80428A0.c +++ /dev/null @@ -1,190 +0,0 @@ -#include "global.h" -#include "structs/dungeon_entity.h" -#include "structs/str_dungeon.h" - -extern void sub_804151C(Entity *r0, u32 r1, u8 r2); -extern void sub_803E708(u32 r0, u32 r1); -extern void sub_80416A4(Position *r0, u32 r1, bool8 r2); -extern void sub_80421C0(Entity *r0, u16 r1); -extern bool8 sub_8042768(Entity *pokemon); -extern void sub_804178C(u32); -extern void sub_804151C(Entity *pokemon, u32 r1, u8 r2); -extern void sub_803E46C(u32); - -void sub_80428A0(Entity *r0) -{ - sub_804151C(r0, 0x29, 1); -} - -void sub_80428B0(Entity *r0) -{ - sub_804151C(r0, 0x1a9, 0); -} - - -void sub_80428C4(Entity *r0) -{ - sub_804151C(r0, 0x1a9, 0); -} - - -void sub_80428D8(Entity *r0) -{ - sub_804151C(r0, 0x1a9, 0); -} - -void sub_80428EC(Entity *r0) -{ - sub_804151C(r0, 0x1a9, 0); -} - -void sub_8042900(Entity *r0) -{ - sub_804151C(r0, 0xD4 << 1, 0); -} - -void ShowVisualFlags(Entity *r0) -{ - sub_804151C(r0, 0x29, 0); -} - -void sub_8042920(Entity *r0) -{ - sub_804151C(r0, 0x48, 0); -} - -void sub_8042930(Entity *r0) -{ - sub_804151C(r0, 0xD3 << 1, 1); -} - -void sub_8042940(Entity *r0) -{ - sub_804151C(r0, 0xC7 << 1, 0); -} - -void sub_8042950(Entity *r0) -{ - sub_804151C(r0, 0xD8 << 1, 1); - sub_803E708(0xA, 0x42); -} - -void sub_8042968(Entity *r0) -{ - sub_804151C(r0, 0xD4 << 1, 0); -} - -void sub_8042978(Entity *r0) -{ - sub_804151C(r0, 0x1a9, 0); -} - -void sub_804298C(Entity *r0) -{ - sub_804151C(r0, 0x1a9, 0); -} - -void sub_80429A0(Entity *r0) -{ - sub_804151C(r0, 0x199, 0); -} - -void sub_80429B4(Entity *r0) -{ - sub_804151C(r0, 0x1ab, 0); -} - -void sub_80429C8(Entity *r0) -{ - sub_804151C(r0, 0x4, 1); -} - -void sub_80429D8(Entity *r0) -{ - sub_804151C(r0, 0x8F << 1, 1); -} - -void sub_80429E8(Entity *r0) -{ - sub_804151C(r0, 0x11d, 1); -} - -void sub_80429FC(Position *r0) -{ - sub_80416A4(r0, 0x19E, TRUE); - sub_80421C0(NULL, 0xD4); -} - -void sub_8042A14(Position *r0) -{ - sub_80416A4(r0, 0x36, TRUE); -} - -void sub_8042A24(Entity *r0) -{ - sub_804151C(r0, 0x15, 1); -} - -void sub_8042A34(Position *r0) -{ - sub_80416A4(r0, 0x13E, FALSE); -} - -void sub_8042A44(Entity *r0) -{ - sub_804151C(r0, 0xDA << 1, 1); -} - -void sub_8042A54(Position *r0) -{ - sub_80416A4(r0, 0x37, TRUE); -} - -void sub_8042A64(Position *r0) -{ - sub_80416A4(r0, 0x29, TRUE); -} - -void sub_8042A74(Entity *r0) -{ - sub_804151C(r0, 0x18, 1); -} - -void sub_8042A84(s16 param_1, Entity *entity, u32 param_3) -{ - s32 iVar2; - s32 iVar3; - s32 r6; - s32 param_1_s16; - - param_1_s16 = param_1; - - r6 = 0x200; - if (sub_8042768(entity)) { - sub_804151C(entity,param_1_s16,0); - sub_803E708(param_3,0x42); - do { - if (0xc7ff < entity->unk1C) break; - sub_803E46C(0x42); - iVar2 = entity->unk1C + r6; - entity->unk1C = iVar2; - r6 += 0x100; - iVar3 = entity->pixelPos.y - iVar2; - if (iVar3 < 0) { - iVar3 += 0xff; - } - } while (-8 <= (iVar3 >> 8) - gDungeon->cameraPixelPos.y); - entity->isVisible = 0; - sub_804178C(0); - } -} - -void sub_8042B0C(Entity *entity) -{ - sub_8042A84(0x13e, entity, 5); -} - -void sub_8042B20(Entity *entity) -{ - sub_8042A84(0x1BC, entity, 0xE); -} diff --git a/src/code_8045A00.c b/src/code_8045A00.c index c5108f9a4..24ecd2403 100644 --- a/src/code_8045A00.c +++ b/src/code_8045A00.c @@ -1,11 +1,13 @@ #include "global.h" +#include "code_8045A00.h" #include "constants/item.h" -#include "structs/str_dungeon.h" #include "dungeon_map_access.h" -#include "dungeon_util.h" #include "dungeon_random.h" +#include "dungeon_util.h" #include "items.h" +#include "status_checks_1.h" #include "structs/map.h" +#include "structs/str_dungeon.h" #include "trap.h" extern u8 *gUnknown_80FE6F4[]; @@ -13,7 +15,6 @@ extern struct unkStruct_8090F58 gUnknown_80F699C; extern struct unkStruct_8090F58 gUnknown_80F69A8; extern struct unkStruct_8090F58 gUnknown_80F6990; -extern void SetMessageArgument_2(u8 *, EntityInfo *, u32); extern bool8 IsNotSpecialItem(u8 id); void sub_8045BF8(u8 *, Item *); void sub_8046CE4(void *param_1,u32 param_2); @@ -25,7 +26,7 @@ void sub_8045ACC(void) Entity *entity; s32 index; s32 pokeCount; - + pokeCount = 0; for(index = 0; index < MAX_TEAM_MEMBERS; index++) @@ -64,7 +65,7 @@ s32 GetTeamMemberEntityIndex(Entity *pokemon) return -1; } -void SetMessageArgument(char *buffer, Entity *entity, u32 param_3) +void SetMessageArgument(char buffer[], Entity *entity, u32 param_3) { switch(GetEntityType(entity)) { @@ -102,7 +103,7 @@ void sub_8045C28(Item *Item, u8 itemID, u32 param_3) { bool8 stickyFlag; u32 total; - + xxx_init_itemslot_8090A8C(Item,itemID,0); stickyFlag = FALSE; if (IsNotSpecialItem(itemID)) { @@ -145,7 +146,7 @@ void sub_8045CB0(void) Item item; Position pos; u32 flag; - + x = DungeonRandInt(DUNGEON_MAX_SIZE_X); y = DungeonRandInt(DUNGEON_MAX_SIZE_Y); gDungeon->unk3904 = 0; diff --git a/src/code_8048480.c b/src/code_8048480.c index f18ae9330..88624fc3f 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -1,27 +1,28 @@ #include "global.h" -#include "constants/dungeon.h" +#include "code_8045A00.h" +#include "code_80521D0.h" +#include "code_8077274_1.h" +#include "code_808417C.h" #include "constants/dungeon_action.h" +#include "constants/dungeon.h" #include "constants/iq_skill.h" #include "constants/status.h" #include "constants/type.h" #include "dungeon_action.h" -#include "structs/dungeon_entity.h" +#include "dungeon_capabilities.h" #include "dungeon_items.h" #include "dungeon_music.h" -#include "dungeon_util.h" -#include "structs/str_dungeon.h" -#include "move_effects_target.h" -#include "dungeon_capabilities.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" -#include "number_util.h" +#include "dungeon_util.h" +#include "move_effects_target.h" #include "moves.h" -#include "code_8077274_1.h" -#include "code_80521D0.h" -#include "code_808417C.h" +#include "number_util.h" #include "pokemon.h" -#include "structs/str_position.h" #include "status.h" +#include "structs/dungeon_entity.h" +#include "structs/str_dungeon.h" +#include "structs/str_position.h" extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DE58[]; @@ -108,7 +109,6 @@ extern u8 sub_8072938(Entity *, u16); extern void sub_807D148(Entity *pokemon, Entity *r1, u32 r2, Position *r3); extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32); extern void LevelDownTarget(Entity *pokemon, Entity *r1, u32 r2); -extern void SetMessageArgument(u8 *buffer, Entity *r1, u32); extern void sub_80522F4(Entity *pokemon, Entity *r1, const u8[]); extern void sub_806F370(Entity *pokemon, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); extern void sub_8078A58(Entity *, Entity *, s16, u32); diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index 78dfbb615..1f7a9c701 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -1,24 +1,25 @@ #include "global.h" +#include "code_8045A00.h" #include "code_806CD90.h" #include "code_80869E4.h" #include "constants/bg_music.h" #include "constants/direction.h" #include "constants/friend_area.h" #include "constants/weather.h" -#include "structs/str_dungeon.h" -#include "structs/dungeon_entity.h" #include "dungeon_leader.h" #include "dungeon_map_access.h" #include "dungeon_music.h" #include "dungeon_random.h" -#include "dungeon_util.h" #include "dungeon_util_1.h" +#include "dungeon_util.h" +#include "exclusive_pokemon.h" #include "friend_area.h" #include "items.h" -#include "pokemon.h" #include "pokemon_3.h" +#include "pokemon.h" #include "position_util.h" -#include "exclusive_pokemon.h" +#include "structs/dungeon_entity.h" +#include "structs/str_dungeon.h" extern u32 gUnknown_202EDC8; extern u8 gUnknown_202E038[0x50]; @@ -385,7 +386,6 @@ extern u8 JirachiFriendAreaSearch(void); extern u8 sub_80860A8(u32); extern void sub_8049ED4(); extern void sub_8052D44(s16 *, Entity *, Entity *); -extern void SetMessageArgument(u8 *, Entity *, u32); extern void sub_80421C0(Entity *, u32); extern void sub_8046D20(); extern void sub_808B1CC(u8); diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 663ac6a6b..bc2b918ee 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -1,9 +1,10 @@ #include "global.h" +#include "code_8045A00.h" #include "code_80521D0.h" -#include "dungeon_util.h" #include "dungeon_map_access.h" -#include "dungeon_music.h" #include "dungeon_movement.h" +#include "dungeon_music.h" +#include "dungeon_util.h" #include "items.h" extern u8 gUnknown_202DE58[]; @@ -28,7 +29,6 @@ extern u8 *gUnknown_80F8DE0[]; extern u8 *gUnknown_80F8E04[]; extern u8 *gUnknown_80F8E28[]; -extern void SetMessageArgument(u8 *, Entity *, u32); extern Item *sub_8044D90(Entity *, s32, u32); void sub_8045BF8(u8 *, Item *); u8 sub_80460F8(Position *, Item *, u32); diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index 947ac19b2..abb55c0dd 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -1,19 +1,20 @@ #include "global.h" +#include "code_8045A00.h" #include "constants/ability.h" #include "constants/move_id.h" #include "constants/status.h" #include "constants/type.h" #include "constants/weather.h" -#include "structs/dungeon_entity.h" -#include "structs/str_dungeon.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" +#include "game_options.h" #include "move_effects_target.h" #include "pokemon.h" -#include "weather.h" -#include "game_options.h" +#include "structs/dungeon_entity.h" +#include "structs/str_dungeon.h" #include "text_util.h" +#include "weather.h" struct unkStruct_80F520C { @@ -31,7 +32,6 @@ extern u8 *gUnknown_80FCC7C[]; extern u8 *gUnknown_80FCCAC[]; extern u8 *gUnknown_80FDCC8[]; -extern void SetMessageArgument(char[], Entity*, u32); void sub_80522F4(Entity *r0, Entity *r1, const char r2[]); extern void sub_8042900(Entity *r0); extern void sub_8042968(Entity *r0); diff --git a/src/code_80718D8.c b/src/code_80718D8.c index f233244ef..4d0015904 100644 --- a/src/code_80718D8.c +++ b/src/code_80718D8.c @@ -1,10 +1,11 @@ #include "global.h" +#include "code_8045A00.h" #include "constants/dungeon.h" -#include "structs/str_dungeon.h" #include "dungeon_map_access.h" -#include "dungeon_util.h" #include "dungeon_random.h" +#include "dungeon_util.h" #include "dungeon.h" +#include "structs/str_dungeon.h" struct unkStruct_806B7F8 { @@ -24,7 +25,6 @@ extern s16 gUnknown_80F4DAA; extern s16 gUnknown_80F4DAC; extern u8 *gUnknown_80FED68[]; -extern void SetMessageArgument(char[], struct Entity*, u32); extern Entity* sub_806B7F8(struct unkStruct_806B7F8 *, bool8); extern void sub_805239C(struct Entity *r0, const char r1[]); extern void sub_8042920(struct Entity *r0); @@ -45,7 +45,7 @@ void sub_8071B48(void) s32 level; struct Dungeon *dungeon; // feels like a hack struct unkStruct_806B7F8 local_2c; - + entityPtr = NULL; dungeon = gDungeon; if ((dungeon->unk664 != 0) && @@ -69,10 +69,10 @@ void sub_8071B48(void) entityPtr = entity2; } } - + dungeon->unk662 = 0; dungeon->unk17B34 = NULL; - + counter = 0; for(index = 0; index < DUNGEON_MAX_WILD_POKEMON; index++) { @@ -90,7 +90,7 @@ void sub_8071B48(void) } } else - { + { if (counter >= gUnknown_80F4DA8) { return; } @@ -150,7 +150,7 @@ void sub_8071D4C(Entity *pokemon, Entity *target, s32 exp) s32 newExp; s32 expDiff; EntityInfo *info; - + info = target->info; if (info->level != 100) { if (!JoinLocationCannotUseItems(info)) { diff --git a/src/code_8072B78.c b/src/code_8072B78.c index 955c1aca2..5dfea6bca 100644 --- a/src/code_8072B78.c +++ b/src/code_8072B78.c @@ -9,6 +9,7 @@ #include "code_806CD90.h" #include "moves.h" #include "pokemon_mid.h" +#include "status_checks_1.h" extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DFE8[]; @@ -18,7 +19,7 @@ extern u8 *gUnknown_80FE2EC[]; struct unkStruct_806B7F8 { u16 species; - u8 unk2; + u8 unk2; u32 unk4; u16 level; u8 fillA[0xC - 0xA]; @@ -30,7 +31,6 @@ extern Entity* sub_806B7F8(struct unkStruct_806B7F8 *, bool8); extern void sub_806BFC0(EntityInfo *, u32); void sub_8069E0C(Entity *pokemon); void sub_80522F4(Entity *r0, Entity *r1, const char r2[]); -extern void SetMessageArgument_2(u8 *, EntityInfo *, u32); void sub_8042A44(Entity *r0); void sub_8083D78(void); extern bool8 sub_803D930(u32); @@ -47,7 +47,7 @@ void sub_8072AC8(s16 *param_1, s16 species, s32 param_3) s32 index; species_s32 = species; - + for(index = 0; index < MAX_MON_MOVES; index++) { param_1[index] = MOVE_NOTHING; } @@ -109,7 +109,7 @@ void sub_8072B78(Entity *pokemon, Entity *target, s16 id) EntityInfo *entityInfo; LevelData levelData; struct unkStruct_806B7F8 local_2c; - + id_s32 = id; entityInfo = target->info; SetMessageArgument_2(gAvailablePokemonNames,entityInfo,0); diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index ffb0f8f52..1d661c6e8 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -1,4 +1,5 @@ #include "global.h" +#include "code_8045A00.h" #include "code_80521D0.h" #include "code_805D8C8.h" #include "code_806CD90.h" @@ -8,17 +9,17 @@ #include "constants/item.h" #include "constants/status.h" #include "constants/type.h" -#include "structs/dungeon_entity.h" -#include "structs/str_dungeon.h" #include "dungeon_items.h" #include "dungeon_movement.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" -#include "moves.h" #include "move_effects_target.h" +#include "moves.h" #include "pokemon.h" #include "status_checks_1.h" +#include "structs/dungeon_entity.h" +#include "structs/str_dungeon.h" extern u8 gAvailablePokemonNames[0x58]; extern u8 gUnknown_202DFE8[0x58]; @@ -167,7 +168,6 @@ extern u8 *gUnknown_80FBF84[]; extern void sub_8049ED4(); extern void sub_8040A84(); extern void sub_803E46C(u32); -extern void SetMessageArgument(u8 *buffer, Entity *r1, u32); extern void sub_80522F4(Entity *pokemon, Entity *r1, const char[]); extern void EntityUpdateStatusSprites(Entity *); extern void sub_8042A74(Entity *r0); diff --git a/src/code_807CD9C.c b/src/code_807CD9C.c index 183c97985..aea2f397f 100644 --- a/src/code_807CD9C.c +++ b/src/code_807CD9C.c @@ -1,15 +1,16 @@ #include "global.h" +#include "code_8045A00.h" +#include "code_80521D0.h" #include "constants/ability.h" #include "constants/type.h" -#include "structs/str_dungeon.h" -#include "dungeon_leader.h" -#include "dungeon_util.h" -#include "code_80521D0.h" #include "dungeon_ai.h" +#include "dungeon_leader.h" #include "dungeon_pokemon_attributes.h" -#include "moves.h" +#include "dungeon_util.h" #include "move_util.h" +#include "moves.h" +#include "structs/str_dungeon.h" extern u8 UseAttack(Entity *); extern void sub_805E804(void); @@ -19,7 +20,6 @@ extern void sub_80426C8(u32, u32); extern void sub_8068FE0(Entity *, u32, Entity *r2); extern void nullsub_93(Position *); extern void sub_80522F4(Entity *, Entity *, u8 *); -extern void SetMessageArgument(char[], Entity*, u32); extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); extern void sub_80694C0(Entity *, s32, s32, u32); extern void sub_804535C(Entity *, u32); @@ -74,7 +74,7 @@ void sub_807E254(Entity *pokemon,Entity *target) { Position pokemonPos; Position targetPos; - + if (HasAbility(pokemon, ABILITY_SUCTION_CUPS)) { SetMessageArgument(gAvailablePokemonNames,pokemon,0); @@ -83,7 +83,7 @@ void sub_807E254(Entity *pokemon,Entity *target) else if(HasAbility(target, ABILITY_SUCTION_CUPS)) { SetMessageArgument(gAvailablePokemonNames,target,0); - sub_80522F4(pokemon,target,*gUnknown_80FCAC0); // $m0 is anchored! It won't switch places + sub_80522F4(pokemon,target,*gUnknown_80FCAC0); // $m0 is anchored! It won't switch places } else { @@ -122,7 +122,7 @@ void sub_807E378(void) { u16 uVar2; Entity *leader; - + leader = GetLeader(); if (EntityExists(leader)) { diff --git a/src/dungeon_ai.c b/src/dungeon_ai.c index 97888bd8b..a3aabeb9d 100644 --- a/src/dungeon_ai.c +++ b/src/dungeon_ai.c @@ -1,35 +1,36 @@ #include "global.h" #include "dungeon_ai.h" +#include "code_8045A00.h" +#include "code_80521D0.h" +#include "code_8077274_1.h" +#include "code_808417C.h" #include "constants/ability.h" -#include "constants/dungeon_action.h" #include "constants/direction.h" +#include "constants/dungeon_action.h" #include "constants/iq_skill.h" #include "constants/item.h" #include "constants/status.h" #include "constants/targeting.h" #include "constants/type.h" -#include "code_80521D0.h" -#include "code_8077274_1.h" -#include "code_808417C.h" #include "dungeon_action.h" #include "dungeon_ai_attack.h" #include "dungeon_ai_items.h" #include "dungeon_ai_movement.h" #include "dungeon_ai_targeting.h" #include "dungeon_capabilities.h" -#include "structs/str_dungeon.h" #include "dungeon_items.h" #include "dungeon_leader.h" #include "dungeon_map_access.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" -#include "dungeon_util.h" #include "dungeon_util_1.h" +#include "dungeon_util.h" #include "dungeon_visibility.h" -#include "structs/map.h" #include "pokemon.h" #include "status_checks.h" +#include "structs/map.h" +#include "structs/str_dungeon.h" #include "targeting.h" #include "tile_types.h" @@ -37,7 +38,6 @@ extern char gAvailablePokemonNames[]; extern char *gPtrCouldntBeUsedMessage; extern char *gPtrItsaMonsterHouseMessage; -extern void SetMessageArgument(char[], Entity*, u32); extern u8 sub_8044B28(void); extern void sub_807AB38(Entity *, u32); extern void sub_8041888(u32); diff --git a/src/dungeon_ai_attack.c b/src/dungeon_ai_attack.c index 395e7b243..82e20a9ae 100644 --- a/src/dungeon_ai_attack.c +++ b/src/dungeon_ai_attack.c @@ -1,7 +1,10 @@ #include "global.h" -#include "code_806CD90.h" -#include "code_80521D0.h" #include "dungeon_ai_attack.h" + +#include "charge_move.h" +#include "code_8045A00.h" +#include "code_80521D0.h" +#include "code_806CD90.h" #include "constants/direction.h" #include "constants/dungeon_action.h" #include "constants/iq_skill.h" @@ -10,12 +13,10 @@ #include "constants/tactic.h" #include "constants/targeting.h" #include "constants/type.h" -#include "charge_move.h" #include "dungeon_action.h" -#include "dungeon_ai.h" #include "dungeon_ai_targeting.h" +#include "dungeon_ai.h" #include "dungeon_capabilities.h" -#include "structs/str_dungeon.h" #include "dungeon_engine.h" #include "dungeon_map_access.h" #include "dungeon_pokemon_attributes.h" @@ -23,14 +24,15 @@ #include "dungeon_util.h" #include "dungeon_visibility.h" #include "items.h" +#include "move_checks.h" #include "move_util.h" #include "moves.h" -#include "move_checks.h" #include "position_util.h" -#include "status_checks.h" #include "status_checks_1.h" -#include "targeting.h" +#include "status_checks.h" +#include "structs/str_dungeon.h" #include "targeting_flags.h" +#include "targeting.h" #include "type_effectiveness.h" #define REGULAR_ATTACK_INDEX 4 @@ -59,7 +61,6 @@ extern void sub_806A1B0(Entity *); extern Item *sub_8044D90(Entity *, s32, u32); extern bool8 sub_8044D40(ActionContainer *, u32); extern bool8 sub_8055FA0(struct Entity *, u32, u32, u32, u32, struct Move *); -extern void SetMessageArgument(u8 *buffer, struct Entity *r1, u32); extern void sub_8045BF8(u8 *, struct Item *); extern void sub_8044DF0(struct Entity *, u32, u32); extern void sub_8071DA4(struct Entity *); diff --git a/src/dungeon_ai_leader.c b/src/dungeon_ai_leader.c index 07a372e6c..d1d801589 100644 --- a/src/dungeon_ai_leader.c +++ b/src/dungeon_ai_leader.c @@ -1,26 +1,28 @@ #include "global.h" #include "dungeon_ai_leader.h" +#include "charge_move.h" +#include "code_804267C.h" +#include "code_8045A00.h" +#include "code_80521D0.h" +#include "code_8077274_1.h" +#include "constants/dungeon_action.h" #include "constants/dungeon.h" -#include "constants/item.h" #include "constants/iq_skill.h" +#include "constants/item.h" #include "constants/move_id.h" #include "constants/status.h" #include "constants/targeting.h" -#include "constants/dungeon_action.h" -#include "code_80521D0.h" #include "dungeon_ai_targeting.h" +#include "dungeon_capabilities.h" #include "dungeon_items.h" #include "dungeon_leader.h" -#include "dungeon_visibility.h" -#include "dungeon_util.h" -#include "dungeon_capabilities.h" -#include "dungeon_pokemon_attributes.h" #include "dungeon_movement.h" -#include "charge_move.h" -#include "pokemon.h" +#include "dungeon_pokemon_attributes.h" +#include "dungeon_util.h" +#include "dungeon_visibility.h" #include "pokemon_3.h" -#include "code_8077274_1.h" +#include "pokemon.h" extern u8 gUnknown_202F221; extern u8 gUnknown_202F222; @@ -47,7 +49,6 @@ void sub_8085140(void); void sub_807360C(void); void sub_805EFB4(Entity *, u8); void sub_8074FB0(Entity *, u8, Position *); -extern void SetMessageArgument(u8 *buffer, Entity *r1, u32); void HandlePlaceItemAction(Entity *); void HandlePickUpPlayerAction(Entity *); @@ -58,7 +59,6 @@ void sub_807FD84(Entity *); void sub_8066BD4(Entity*); void HandleTalkFieldAction(Entity *); void HandleUseMovePlayerAction(Entity *); -void sub_804267C(void); void HandleUseOrbAction(Entity *); void sub_8067904(Entity *, u32); void HandleGiveItemAction(Entity *); @@ -175,19 +175,19 @@ bool8 sub_8072CF4(Entity *entity) case ACTION_WALK: if(info->immobilize.immobilizeStatus == STATUS_SHADOW_HOLD) { - goto _282; + goto _282; } else if(info->immobilize.immobilizeStatus == STATUS_CONSTRICTION) { - goto _282; + goto _282; } else if(info->immobilize.immobilizeStatus == STATUS_INGRAIN) { - goto _282; + goto _282; } else if(info->immobilize.immobilizeStatus == STATUS_WRAP) { - goto _282; + goto _282; } else if(info->immobilize.immobilizeStatus == STATUS_WRAPPED) { @@ -232,7 +232,7 @@ bool8 sub_8072CF4(Entity *entity) } else { - sub_804267C(); + PlayStairsSound(); gDungeon->unk2 = 1; gUnknown_202F32C = (info->action).direction; } @@ -297,7 +297,7 @@ bool8 sub_8072CF4(Entity *entity) break; case ACTION_STRUGGLE: sub_8067904(entity, MOVE_STRUGGLE); - break; + break; case ACTION_REGULAR_ATTACK: sub_8067904(entity, MOVE_REGULAR_ATTACK); break; @@ -312,7 +312,7 @@ bool8 sub_8072CF4(Entity *entity) break; case ACTION_THROW_ITEM_AI: HandleThrowItemAIAction(entity); - break; + break; case ACTION_SECOND_THOUGHTS: SetMessageArgument(gAvailablePokemonNames,entity,0); SendMessage(entity,*gUnknown_80FE478); diff --git a/src/dungeon_items.c b/src/dungeon_items.c index d24b4c009..e2ba45dd8 100644 --- a/src/dungeon_items.c +++ b/src/dungeon_items.c @@ -1,12 +1,14 @@ #include "global.h" -#include "code_80869E4.h" #include "dungeon_items.h" + +#include "code_8045A00.h" +#include "code_80869E4.h" #include "dungeon_capabilities.h" -#include "structs/str_dungeon.h" #include "dungeon_leader.h" #include "dungeon_random.h" #include "dungeon_util.h" #include "pokemon.h" +#include "structs/str_dungeon.h" extern u8 gAvailablePokemonNames[]; extern s32 gUnknown_810A3F0[]; @@ -22,7 +24,6 @@ extern void sub_80861A8(void); extern void PrintFieldMessage(u32, u8 *, u32); extern void sub_803E708(u32, u32); extern void sub_80416E0(Position32 *r0, u32, bool8); -extern void SetMessageArgument(u8 *r0, Entity *r1, u32); extern void sub_80421C0(Entity *, u32); extern void sub_80855E4(void *); extern void PlaySoundEffect(u32); diff --git a/src/dungeon_pokemon_attributes.c b/src/dungeon_pokemon_attributes.c index 0bd86d89e..4d1f46910 100644 --- a/src/dungeon_pokemon_attributes.c +++ b/src/dungeon_pokemon_attributes.c @@ -1,6 +1,7 @@ #include "global.h" #include "dungeon_pokemon_attributes.h" +#include "code_8045A00.h" #include "constants/ability.h" #include "constants/dungeon.h" #include "constants/iq_skill.h" @@ -8,13 +9,13 @@ #include "constants/status.h" #include "constants/tactic.h" #include "constants/type.h" -#include "structs/str_dungeon.h" #include "dungeon_items.h" #include "dungeon_util.h" #include "dungeon_visibility.h" #include "moves.h" -#include "pokemon.h" #include "pokemon_3.h" +#include "pokemon.h" +#include "structs/str_dungeon.h" const s16 gItemMasterMinWildLevel[] = {16}; @@ -23,7 +24,6 @@ extern u32 gUnknown_80FC31C; extern u32 gUnknown_80FCEFC; extern u32 gUnknown_80FC2FC; extern bool8 sub_805744C(Entity *, Move *, u32); -extern void SetMessageArgument(char[], Entity*, u32); extern void sub_80522F4(Entity *r1, Entity *r2, u32); bool8 HasSafeguardStatus(Entity * pokemon, Entity * target, bool8 displayMessage) diff --git a/src/move_actions.c b/src/move_actions.c index 000d5009e..547de471e 100644 --- a/src/move_actions.c +++ b/src/move_actions.c @@ -1,13 +1,14 @@ #include "global.h" +#include "charge_move.h" +#include "code_8045A00.h" +#include "code_806CD90.h" +#include "code_8077274_1.h" +#include "code_808417C.h" #include "constants/ability.h" #include "constants/status.h" #include "constants/targeting.h" #include "constants/type.h" #include "constants/weather.h" -#include "charge_move.h" -#include "number_util.h" -#include "structs/str_dungeon.h" -#include "structs/dungeon_entity.h" #include "dungeon_ai_targeting.h" #include "dungeon_items.h" #include "dungeon_map_access.h" @@ -15,16 +16,16 @@ #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_util.h" -#include "code_806CD90.h" -#include "code_8077274_1.h" -#include "code_808417C.h" -#include "structs/map.h" -#include "moves.h" #include "move_effects_target.h" +#include "moves.h" +#include "number_util.h" #include "pokemon.h" -#include "status.h" #include "status_actions.h" #include "status_checks_1.h" +#include "status.h" +#include "structs/dungeon_entity.h" +#include "structs/map.h" +#include "structs/str_dungeon.h" #include "tile_types.h" #include "weather.h" @@ -205,7 +206,6 @@ extern void sub_8045C28(Item *, u8 , u8); extern void sub_805A7D4(Entity *, Entity *, Item *, Position *); extern void MudWaterSportEffect(u32); extern void sub_807D148(Entity *pokemon, Entity *target, u32 r2, Position *r3); -extern void SetMessageArgument_2(u8 *buffer, EntityInfo *r1, u32); extern void sub_806EAF4(Entity *, Entity *, u8, u32, u32, s32 *, u32, u16, u32); extern void sub_806A6E8(Entity *); @@ -225,7 +225,6 @@ bool8 sub_8057308(Entity *pokemon, s32 chance); bool8 sub_80571F0(Entity * pokemon, Move *move); extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); -extern void SetMessageArgument(char[], Entity*, u32); extern u32 sub_8055640(Entity *, Entity *, Move *, u32, u32); u8 sub_8057620(u32 param_1); extern s16 sub_8094828(u16, u8); diff --git a/src/move_effects_target.c b/src/move_effects_target.c index 6cf266fa9..6e220eaad 100644 --- a/src/move_effects_target.c +++ b/src/move_effects_target.c @@ -1,35 +1,38 @@ #include "global.h" +#include "move_effects_target.h" + +#include "code_8045A00.h" +#include "code_80521D0.h" #include "code_806CD90.h" +#include "code_8077274_1.h" +#include "code_808417C.h" #include "constants/ability.h" -#include "constants/dungeon_action.h" #include "constants/direction.h" +#include "constants/dungeon_action.h" #include "constants/iq_skill.h" #include "constants/item.h" #include "constants/status.h" #include "constants/targeting.h" #include "constants/type.h" -#include "code_80521D0.h" -#include "code_8077274_1.h" -#include "code_808417C.h" #include "dungeon_action.h" #include "dungeon_ai_attack.h" #include "dungeon_ai_items.h" #include "dungeon_ai_movement.h" #include "dungeon_ai_targeting.h" #include "dungeon_capabilities.h" -#include "structs/str_dungeon.h" #include "dungeon_items.h" #include "dungeon_leader.h" #include "dungeon_map_access.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" -#include "dungeon_util.h" #include "dungeon_util_1.h" +#include "dungeon_util.h" #include "dungeon_visibility.h" -#include "structs/map.h" -#include "move_effects_target.h" #include "pokemon.h" #include "status_checks.h" +#include "status_checks_1.h" +#include "structs/map.h" +#include "structs/str_dungeon.h" #include "targeting.h" #include "tile_types.h" @@ -139,8 +142,6 @@ extern void sub_8041EE8(Entity *); extern void sub_8041EC8(Entity *); extern void sub_8041ED8(Entity *); extern void EntityUpdateStatusSprites(Entity *); -extern void SetMessageArgument(char[], Entity*, u32); -extern void SetMessageArgument_2(char[], EntityInfo*, u32); extern void sub_8041AF4(Entity *); extern void sub_80522F4(Entity *r1, Entity *r2, u8 *); extern void nullsub_91(Entity *); @@ -228,7 +229,7 @@ void sub_8075C58(Entity * pokemon, Entity * target, s32 turns, u8 displayMessage } bool8 CannotSleep(Entity * pokemon, Entity * target, u8 param_3, bool8 displayMessage) -{ +{ if ((!EntityExists(target)) || ((SetMessageArgument(gAvailablePokemonNames,target,0), param_3 != 0 && (HasSafeguardStatus(pokemon,target,displayMessage))))) { @@ -265,7 +266,7 @@ void NightmareStatusTarget(Entity * pokemon, Entity * target, s32 turns) { bool8 hasNightmare; EntityInfo *entityInfo; - + hasNightmare = FALSE; if (!CannotSleep(pokemon, target, 1, TRUE)) { entityInfo = target->info; @@ -302,7 +303,7 @@ void NappingStatusTarget(Entity * pokemon, Entity * target, s32 turns) { bool8 isSleeping; EntityInfo *entityInfo; - + isSleeping = FALSE; if (!CannotSleep(pokemon, target, 0, TRUE)) { entityInfo = target->info; @@ -338,7 +339,7 @@ void NappingStatusTarget(Entity * pokemon, Entity * target, s32 turns) void YawnedStatusTarget(Entity * pokemon, Entity * target, s32 turns) { EntityInfo *entityInfo; - + if (CannotSleep(pokemon,target,1,TRUE)) { return; } @@ -369,7 +370,7 @@ void SleeplessStatusTarget(Entity * pokemon, Entity * target) { EntityInfo *entityInfo; bool8 isAsleep; - + isAsleep = FALSE; if (!EntityExists(target)) { return; @@ -403,7 +404,7 @@ void SleeplessStatusTarget(Entity * pokemon, Entity * target) void PausedStatusTarget(Entity * pokemon, Entity * target, u8 param_3, s32 turns, bool8 displayMessage) { EntityInfo *entityInfo; - + if (!EntityExists(target)) { return; } @@ -438,7 +439,7 @@ void PausedStatusTarget(Entity * pokemon, Entity * target, u8 param_3, s32 turns void InfatuateStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessage) { EntityInfo *entityInfo; - + if (EntityExists(target)) { entityInfo = target->info; @@ -476,7 +477,7 @@ void BurnedStatusTarget(Entity * pokemon, Entity * target, u8 param_3, bool8 dis struct Tile *tile_2; Entity *entity; s32 index; - + if (!EntityExists(target)) { return; } @@ -563,7 +564,7 @@ void PoisonedStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessag struct Tile *tile; Entity *entity; s32 index; - + if (!EntityExists(target)) { return; } @@ -605,7 +606,7 @@ void PoisonedStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessag sub_806CE94(target, 8); } else - { + { sub_80522F4(pokemon,target,*gUnknown_80FB5D4); } } @@ -652,7 +653,7 @@ void BadlyPoisonedStatusTarget(Entity * pokemon, Entity * target, bool8 displayM struct Tile *tile; Entity *entity; s32 index; - + if (!EntityExists(target)) { return; } @@ -730,7 +731,7 @@ void FrozenStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessage) { EntityInfo *entityInfo; struct Tile *tile; - + if (!EntityExists(target)) { return; } @@ -779,7 +780,7 @@ void SqueezedStatusTarget(Entity * pokemon, Entity * target, s16 param_3, bool32 EntityInfo *entityInfo; s32 param_3_s32 = param_3; bool8 displayMessage_u8 = displayMessage; - + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,displayMessage_u8))) { entityInfo = target->info; if ((u8)(entityInfo->immobilize.immobilizeStatus - 3U) < 2) { @@ -809,7 +810,7 @@ void SqueezedStatusTarget(Entity * pokemon, Entity * target, s16 param_3, bool32 void ImmobilizedStatusTarget(Entity * pokemon, Entity * target) { EntityInfo *entityInfo; - + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,TRUE))) { entityInfo = target->info; if ((u8)(entityInfo->immobilize.immobilizeStatus - 3U) < 2) { @@ -839,7 +840,7 @@ void IngrainedStatusTarget(Entity * pokemon, Entity * target) { EntityInfo *entityInfo; EntityInfo *entityInfo2; - + if (EntityExists(target)) { entityInfo = target->info; entityInfo2 = entityInfo; @@ -867,7 +868,7 @@ void WrapTarget(Entity * pokemon, Entity * target) s32 *piVar3; s32 *iVar5; EntityInfo * pokemonEntityData; - + if (!EntityExists(target)) { return; } @@ -948,7 +949,7 @@ void PetrifiedStatusTarget(Entity * pokemon, Entity * target) EntityInfo * entityInfo; Entity * entity; s32 index; - + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,TRUE))) { sub_8041C08(target); targetEntityInfo = target->info; @@ -994,7 +995,7 @@ void LowerAttackStageTarget(Entity * pokemon, Entity * target, s32 index, s32 de { EntityInfo *entityInfo; s32 attackStage = decrement; - + if (!EntityExists(target)) { return; } @@ -1049,7 +1050,7 @@ void LowerDefenseStageTarget(Entity * pokemon, Entity * target, s32 index, s32 d { EntityInfo *entityInfo; s32 defenseStage = decrement; - + if (!EntityExists(target)) { return; } @@ -1089,7 +1090,7 @@ void RaiseAttackStageTarget(Entity * pokemon, Entity * target, s32 index, s32 in { EntityInfo *entityInfo; s32 attackStage = increment; - + if (!EntityExists(target)) { return; } @@ -1129,7 +1130,7 @@ void RaiseDefenseStageTarget(Entity * pokemon, Entity * target, s32 index, s32 i { EntityInfo *entityInfo; s32 defenseStage = increment; - + if (!EntityExists(target)) { return; } diff --git a/src/status.c b/src/status.c index d282df391..c2e7b4a65 100644 --- a/src/status.c +++ b/src/status.c @@ -1,21 +1,24 @@ #include "global.h" #include "status.h" + +#include "code_8045A00.h" #include "code_806CD90.h" +#include "code_8077274_1.h" +#include "code_808417C.h" #include "constants/ability.h" #include "constants/status.h" #include "constants/type.h" -#include "dungeon_pokemon_attributes.h" -#include "dungeon_ai_targeting.h" #include "dungeon_ai_movement.h" -#include "structs/str_dungeon.h" -#include "dungeon_map_access.h" -#include "dungeon_util.h" +#include "dungeon_ai_targeting.h" #include "dungeon_items.h" -#include "code_808417C.h" -#include "code_8077274_1.h" +#include "dungeon_map_access.h" #include "dungeon_movement.h" -#include "structs/map.h" +#include "dungeon_pokemon_attributes.h" +#include "dungeon_util.h" #include "math.h" +#include "status_checks_1.h" +#include "structs/map.h" +#include "structs/str_dungeon.h" extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DE58[]; @@ -161,8 +164,6 @@ extern void sub_8041FD8(Entity *r0, u32 r1); extern void sub_80522F4(Entity *r1, Entity *r2, u8 *); extern void sub_804201C(Entity *r0, u32 r1); extern void sub_8041FFC(Entity *r0, u32 r1); -extern void SetMessageArgument(char[], Entity*, u32); -extern void SetMessageArgument_2(char[], EntityInfo*, u32); extern void sub_8041C58(Entity *r0); extern void EntityUpdateStatusSprites(Entity *); extern void sub_8042040(Entity *, s32); diff --git a/src/status_actions.c b/src/status_actions.c index 41db599e0..c73a0d8c6 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -1,31 +1,32 @@ #include "global.h" #include "status_actions.h" -#include "code_806CD90.h" + +#include "charge_move.h" +#include "code_8045A00.h" #include "code_80521D0.h" +#include "code_806CD90.h" #include "code_8077274_1.h" #include "code_808417C.h" -#include "charge_move.h" #include "constants/ability.h" #include "constants/move_id.h" #include "constants/status.h" #include "constants/type.h" #include "constants/weather.h" -#include "dungeon_engine.h" #include "dungeon_ai_targeting.h" -#include "structs/str_dungeon.h" +#include "dungeon_engine.h" #include "dungeon_items.h" #include "dungeon_map_access.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" #include "dungeon_visibility.h" -#include "structs/map.h" -#include "moves.h" #include "move_util.h" +#include "moves.h" #include "number_util.h" #include "pokemon.h" -#include "status.h" #include "status_checks_1.h" - +#include "status.h" +#include "structs/map.h" +#include "structs/str_dungeon.h" #include "text_util.h" #include "tile_types.h" #include "trap.h" @@ -52,7 +53,6 @@ extern u32 sub_8055864(Entity *pokemon, Entity *target, Move *param_3, s32 param extern void sub_807D148(Entity *pokemon, Entity *r1, u32 r2, Position *r3); extern void sub_807FE04(Position *, u32); extern void sub_807DB74(Entity *); -extern void SetMessageArgument(char[], Entity*, u32); extern void HandleLuminousOrbAction(Entity *pokemon); extern void sub_807D510(Entity *, Entity *); extern void sub_807DA14(Entity *, Entity *, s32); diff --git a/src/status_checks.c b/src/status_checks.c index c5649c722..76f7128f8 100644 --- a/src/status_checks.c +++ b/src/status_checks.c @@ -1,12 +1,13 @@ #include "global.h" #include "status_checks.h" +#include "charge_move.h" +#include "code_8045A00.h" +#include "code_80521D0.h" +#include "code_8077274_1.h" #include "constants/direction.h" #include "constants/dungeon_action.h" #include "constants/status.h" -#include "code_80521D0.h" -#include "code_8077274_1.h" -#include "charge_move.h" #include "dungeon_action.h" #include "dungeon_ai_attack.h" #include "dungeon_capabilities.h" @@ -24,8 +25,6 @@ extern u8 gAvailablePokemonNames[]; extern u8 *gUnknown_80F95EC[]; extern char *gPtrMoveInterruptedMessage[]; -extern void SetMessageArgument(char[], Entity*, u32); - bool8 HasStatusAffectingActions(Entity *pokemon) { EntityInfo *pokemonInfo = pokemon->info; @@ -116,7 +115,7 @@ bool8 sub_80701A4(Entity *pokemon) s32 index_1; EntityInfo * pokemonInfo; u8 *r7; - + pokemonInfo = pokemon->info; flag = FALSE; SetMessageArgument(gAvailablePokemonNames, pokemon, 0); @@ -177,7 +176,7 @@ bool8 sub_80701A4(Entity *pokemon) index_1 = index; r7 = &pokemonInfo->action.unk4[1].actionUseIndex; if((index > 0) && (move->moveFlags & MOVE_FLAG_SUBSEQUENT_IN_LINK_CHAIN)) - { + { do { move2 = &pokemonInfo->moves[index_1 + 1]; move2--, index_1--; @@ -195,7 +194,7 @@ bool8 sub_80701A4(Entity *pokemon) } } sub_8079764(pokemon); - } + } return FALSE; } } diff --git a/src/status_checks_1.c b/src/status_checks_1.c index 72b6aea3c..83edee2ac 100644 --- a/src/status_checks_1.c +++ b/src/status_checks_1.c @@ -55,7 +55,7 @@ s32 sub_8070828(Entity *pokemon, bool8 displayMessage) } } -void SetMessageArgument_2(u8 *buffer, EntityInfo *param_2, s32 colorNum) +void SetMessageArgument_2(char buffer[], EntityInfo *param_2, s32 colorNum) { if (((gDungeon->blinded || gDungeon->hallucinating) || diff --git a/src/trap.c b/src/trap.c index dd89627ff..6d271f7c9 100644 --- a/src/trap.c +++ b/src/trap.c @@ -1,21 +1,22 @@ #include "global.h" -#include "constants/type.h" -#include "constants/trap.h" -#include "structs/str_dungeon.h" #include "trap.h" -#include "status.h" -#include "code_80521D0.h" -#include "items.h" -#include "moves.h" -#include "code_808417C.h" +#include "code_8045A00.h" +#include "code_80521D0.h" +#include "code_808417C.h" +#include "constants/trap.h" +#include "constants/type.h" #include "dungeon_engine.h" #include "dungeon_items.h" -#include "dungeon_random.h" #include "dungeon_map_access.h" +#include "dungeon_random.h" #include "dungeon_util.h" -#include "structs/map.h" +#include "items.h" #include "move_effects_target.h" +#include "moves.h" +#include "status.h" +#include "structs/map.h" +#include "structs/str_dungeon.h" extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DE58[]; @@ -72,7 +73,6 @@ bool8 sub_8045888(Entity *); void SetTrap(Tile *, u32); void sub_803E708(u32, u32); u8 sub_8043D10(void); -void SetMessageArgument(u8 *, Entity *, u32); void sub_8068FE0(Entity *, u32, Entity *); void sub_805239C(Entity *, u8 *); void sub_8045C28(Item *, u8 , u8); From 1db3e9172efc9eb03ca9ad64f7fa44eb8f043dbf Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Fri, 19 Jul 2024 21:01:14 -0400 Subject: [PATCH 2/2] Renamed EntityInfo.fillF3 to unkF3 --- include/code_800F958.h | 2 +- include/structs/dungeon_entity.h | 16 ++++++++-------- src/code_804267C.c | 4 ++-- src/dungeon_ai_leader.c | 2 +- src/trap_1.c | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/code_800F958.h b/include/code_800F958.h index 8f0880135..b77c1cc56 100644 --- a/include/code_800F958.h +++ b/include/code_800F958.h @@ -34,7 +34,7 @@ typedef struct DungeonPokemonSprite typedef struct DungeonPokemonSprites { /* 0x0 */ u32 frame; - /* 0x4 */ struct DungeonPokemonSprite sprites[22]; + /* 0x4 */ DungeonPokemonSprite sprites[22]; } DungeonPokemonSprites; void sub_800F958(s32 dungeonSpriteID, Position *pos, Position *statusOffsets, u32 a3); diff --git a/include/structs/dungeon_entity.h b/include/structs/dungeon_entity.h index 9d5bfac1a..47ce3918a 100644 --- a/include/structs/dungeon_entity.h +++ b/include/structs/dungeon_entity.h @@ -66,7 +66,7 @@ typedef struct AITarget } AITarget; -typedef struct Sleep +typedef struct Sleep { /* 0x0 */ u8 sleep; /* 0x1 */ u8 sleepTurns; @@ -77,7 +77,7 @@ typedef struct NonVolatile /* 0x0 */ u8 nonVolatileStatus; /* 0x1 */ u8 nonVolatileStatusTurns; /* 0x2 */ u8 nonVolatileStatusDamageCountdown; - /* 0x3 */ u8 unk4; + /* 0x3 */ u8 unk4; } NonVolatile; typedef struct Immobilize @@ -107,7 +107,7 @@ typedef struct Protection /* 0x1 */ u8 protectionStatusTurns; } Protection; -typedef struct Waiting +typedef struct Waiting { /* 0xC8 */ u8 waitingStatus; /* 0xC9 */ bool8 enemyDecoy; // True if the Pokémon is a decoy and a wild Pokémon (i.e., not an allied Pokémon). @@ -116,7 +116,7 @@ typedef struct Waiting /* 0xCC */ u8 curseDamageCountdown; } Waiting; -typedef struct Linked +typedef struct Linked { /* 0xD0 */ u8 linkedStatus; /* 0xD4 */ u32 unkD4; @@ -126,7 +126,7 @@ typedef struct Linked } Linked; -typedef struct MoveStatus +typedef struct MoveStatus { /* 0xDC */ u8 moveStatus; /* 0xDD */ u8 moveStatusTurns; @@ -143,13 +143,13 @@ typedef struct TransformStatus /* 0xE5 */ u8 transformStatusTurns; } TransformStatus; -typedef struct EyesightStatus +typedef struct EyesightStatus { /* 0xE8 */ u8 eyesightStatus; /* 0xE9 */ u8 eyesightStatusTurns; } EyesightStatus; -typedef struct Muzzled +typedef struct Muzzled { /* 0xEC */ bool8 muzzled; /* 0xED */ u8 muzzledTurns; @@ -234,7 +234,7 @@ typedef struct EntityInfo /* 0xF0 */ bool8 powerEars; /* 0xF1 */ bool8 scanning; /* 0xF2 */ bool8 stairSpotter; - u8 fillF3; + /* 0xF3 */ bool8 unkF3; /* 0xF4 */ bool8 grudge; /* 0xF5 */ bool8 exposed; /* 0xF6 */ bool8 isColorChanged; diff --git a/src/code_804267C.c b/src/code_804267C.c index 283fbf26d..366ef5817 100644 --- a/src/code_804267C.c +++ b/src/code_804267C.c @@ -109,8 +109,8 @@ void sub_80427AC(void) entity = gDungeon->allPokemon[i]; if (EntityExists(entity)) { enInfo = entity->info; - if (enInfo->fillF3) { - enInfo->fillF3 = 0; + if (enInfo->unkF3) { + enInfo->unkF3 = FALSE; sub_80429A0(entity); if (!enInfo->isNotTeamMember) { SetMessageArgument(gAvailablePokemonNames, entity, 0); diff --git a/src/dungeon_ai_leader.c b/src/dungeon_ai_leader.c index d1d801589..57d3955ce 100644 --- a/src/dungeon_ai_leader.c +++ b/src/dungeon_ai_leader.c @@ -125,7 +125,7 @@ bool8 sub_8072CF4(Entity *entity) gUnknown_203B434 = 1; info = entity->info; info->useHeldItem = FALSE; - info->fillF3 = 0; + info->unkF3 = FALSE; gDungeon->unkB8 = entity; if (gUnknown_80F58F4[(info->action).action][0] != 0) { if (info->isTeamLeader) { diff --git a/src/trap_1.c b/src/trap_1.c index 9b19966de..2fcf3c0c2 100644 --- a/src/trap_1.c +++ b/src/trap_1.c @@ -257,7 +257,7 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) bool8 *pbStack_58; bool8 *pbStack_54; bool8 *pbStack_50; - u8 *puStack_4c; + bool8 *puStack_4c; bool8 *pbStack_48; bool8 *pbStack_44; bool8 *pbStack_40; @@ -351,7 +351,7 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) pbStack_58 = &info->powerEars; pbStack_54 = &info->scanning; pbStack_50 = &info->stairSpotter; - puStack_4c = &info->fillF3; + puStack_4c = &info->unkF3; pbStack_48 = &info->grudge; puStack_34 = &info->unkFB; pbStack_44 = &info->exposed; @@ -483,7 +483,7 @@ void sub_8081454(unkStruct_8094924 *param_1) for(iVar4 = 0; iVar4 < 8; iVar4++) { SavePosition(param_1,&gDungeon->unkE220[iVar4]); - } + } sub_80830F8(param_1,&gDungeon->unkE240); sub_80830F8(param_1,&gDungeon->unkE250); sub_808312C(param_1,&gDungeon->unkE260);