diff options
author | Akira Akashi <rubenru09@aol.com> | 2021-05-23 21:34:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-23 21:34:14 +0100 |
commit | c3a9cae755efd6c2efde269c0837d2524634d592 (patch) | |
tree | 4ec97468f3963829479447e5772b19b971087b0a | |
parent | b934918219cb4871c726b4e9815f0b801210865b (diff) | |
parent | 8ffb7a0c637d74d2140fefc7e20e10288b43e286 (diff) |
Merge branch 'master' into master
163 files changed, 13317 insertions, 15399 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 74303ad6..af5b3cfd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,7 +19,7 @@ jobs: run: | sudo apt update sudo ACCEPT_EULA=Y apt -y --fix-missing --allow-downgrades upgrade - sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi + sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi p7zip-full sudo dpkg --add-architecture i386 wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport @@ -31,14 +31,14 @@ jobs: run: | mkdir -p ~/download cd ~/download - wget http://private.martmists.com/mwccarm.zip - wget http://private.martmists.com/nitro.tar.gz + wget https://cdn.discordapp.com/attachments/698589325620936736/845499146982129684/mwccarm.zip + wget https://cdn.discordapp.com/attachments/698589325620936736/722822401963851797/NitroSDK-3_2-060901.7z unzip mwccarm.zip mv mwccarm $GITHUB_WORKSPACE/tools - tar xzf nitro.tar.gz - mv tools/bin $GITHUB_WORKSPACE/tools - mv include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/arm7 - mv include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/arm9 + 7z x NitroSDK-3_2-060901.7z + mv NitroSDK-3_2-060901/tools/bin $GITHUB_WORKSPACE/tools + mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM7-TS.lcf.template $GITHUB_WORKSPACE/arm7 + mv NitroSDK-3_2-060901/include/nitro/specfiles/ARM9-TS.lcf.template $GITHUB_WORKSPACE/arm9 working-directory: ~ - name: Build Diamond run: make diamond diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 898904d3..0be7bc5a 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -6,7 +6,7 @@ Static arm9 { Address 0x02000000 Object main.o - Object unk_020010A8.o + Object list_menu.o Object unk_02001B80.o Object string_util.o Object unk_020023C0.o @@ -36,6 +36,10 @@ Static arm9 Object unk_0200E850.o Object unk_0201137C.o Object unk_02011744.o + Object unk_02012004.o + Object gf_rtc.o + Object list_menu_items.o + Object unk_02012944.o Object unk_02012CC8.o Object mail_message.o Object unk_020139D8.o diff --git a/arm9/asm/gf_rtc.s b/arm9/asm/gf_rtc.s new file mode 100644 index 00000000..a73a4801 --- /dev/null +++ b/arm9/asm/gf_rtc.s @@ -0,0 +1,410 @@ + .include "asm/macros.inc" + .include "global.inc" + + .rodata + + .global sMaxTime +sMaxTime: ; 0x020ED498 + ; 23:59:59 + .word 23, 59, 59 + + .global sMaxDate +sMaxDate: ; 0x020ED4A4 + ; 31 December, 2099 + .word 99, 12, 31, 0 + + .global sGF_DaysPerMonth +sGF_DaysPerMonth: ; 0x020ED4B2 + .short 0 + .short 31 + .short 59 + .short 90 + .short 120 + .short 151 + .short 181 + .short 212 + .short 243 + .short 273 + .short 304 + .short 334 + + .global sTimeOfDayByHour +sTimeOfDayByHour: ; 0x020ED4CC + ; 00:00 - 03:59 + .byte 0x04, 0x04, 0x04, 0x04 + ; 04:00 - 09:59 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + ; 10:00 - 16:59 + .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 + ; 17:00 - 19:59 + .byte 0x02, 0x02, 0x02 + ; 20:00 - 23:59 + .byte 0x03, 0x03, 0x03, 0x03 + + .section .bss + + .global sGFRTCWork +sGFRTCWork: ; 0x021C4808 + .space 0x48 + + .text + + thumb_func_start GF_InitRTCWork +GF_InitRTCWork: ; 0x0201259C + push {r3, lr} + bl RTC_Init + ldr r3, _020125CC ; =sGFRTCWork + mov r0, #0x0 + add r2, r3, #0x0 + add r1, r0, #0x0 + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + ldr r1, _020125D0 ; =sGFRTCWork + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + add r0, r3, #0x0 + bl GF_RTC_GetDateTime + pop {r3, pc} + .balign 4 +_020125CC: .word sGFRTCWork +_020125D0: .word sGFRTCWork + + thumb_func_start GF_RTC_UpdateOnFrame +GF_RTC_UpdateOnFrame: ; 0x020125D4 + push {r3, lr} + ldr r0, _020125F4 ; =sGFRTCWork + ldr r1, [r0, #0x4] + cmp r1, #0x0 + bne _020125F2 + ldr r1, [r0, #0x8] + add r1, r1, #0x1 + str r1, [r0, #0x8] + cmp r1, #0xa + ble _020125F2 + mov r1, #0x0 + str r1, [r0, #0x8] + ldr r0, _020125F8 ; =sGFRTCWork + bl GF_RTC_GetDateTime +_020125F2: + pop {r3, pc} + .balign 4 +_020125F4: .word sGFRTCWork +_020125F8: .word sGFRTCWork + + thumb_func_start GF_RTC_GetDateTime_Callback +GF_RTC_GetDateTime_Callback: ; 0x020125FC + push {r4, lr} + add r4, r1, #0x0 + str r0, [r4, #0xc] + cmp r0, #0x0 + beq _0201260A + bl ErrorHandling +_0201260A: + add r3, r4, #0x0 + mov r0, #0x1 + add r2, r4, #0x0 + add r3, #0x2c + str r0, [r4, #0x0] + ldmia r3!, {r0-r1} + add r2, #0x10 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + add r3, r4, #0x0 + add r3, #0x3c + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x20 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + pop {r4, pc} + + thumb_func_start GF_RTC_GetDateTime +GF_RTC_GetDateTime: ; 0x02012634 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x1 + str r0, [r4, #0x4] + add r0, r4, #0x0 + add r1, r4, #0x0 + ldr r2, _02012658 ; =GF_RTC_GetDateTime_Callback + add r0, #0x2c + add r1, #0x3c + add r3, r4, #0x0 + bl RTC_GetDateTimeAsync + str r0, [r4, #0xc] + cmp r0, #0x0 + beq _02012656 + bl ErrorHandling +_02012656: + pop {r4, pc} + .balign 4 +_02012658: .word GF_RTC_GetDateTime_Callback + + thumb_func_start GF_RTC_CopyDateTime +GF_RTC_CopyDateTime: ; 0x0201265C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02012684 ; =sGFRTCWork + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _0201266E + bl ErrorHandling +_0201266E: + ldr r2, _02012688 ; =sGFRTCWork + 16 + ldmia r2!, {r0-r1} + stmia r5!, {r0-r1} + ldmia r2!, {r0-r1} + ldr r2, _0201268C ; =sGFRTCWork + 32 + stmia r5!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 +_02012684: .word sGFRTCWork +_02012688: .word sGFRTCWork + 16 +_0201268C: .word sGFRTCWork + 32 + + thumb_func_start GF_RTC_CopyTime +GF_RTC_CopyTime: ; 0x02012690 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020126AC ; =sGFRTCWork + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _020126A0 + bl ErrorHandling +_020126A0: + ldr r2, _020126B0 ; =sGFRTCWork + 32 + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r4, #0x0] + pop {r4, pc} + .balign 4 +_020126AC: .word sGFRTCWork +_020126B0: .word sGFRTCWork + 32 + + thumb_func_start GF_RTC_CopyDate +GF_RTC_CopyDate: ; 0x020126B4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020126D0 ; =sGFRTCWork + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _020126C4 + bl ErrorHandling +_020126C4: + ldr r2, _020126D4 ; =sGFRTCWork + 16 + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + pop {r4, pc} + .balign 4 +_020126D0: .word sGFRTCWork +_020126D4: .word sGFRTCWork + 16 + + thumb_func_start GF_RTC_TimeToSec +GF_RTC_TimeToSec: ; 0x020126D8 + push {r3-r4} + ldr r4, _020126F8 ; =sGFRTCWork + 32 + mov r0, #0x3c + ldr r1, [r4, #0x4] + ldr r3, [r4, #0x8] + add r2, r1, #0x0 + mul r2, r0 + mov r0, #0xe1 + ldr r1, [r4, #0x0] + lsl r0, r0, #0x4 + mul r0, r1 + add r0, r2, r0 + add r0, r3, r0 + pop {r3-r4} + bx lr + nop +_020126F8: .word sGFRTCWork + 32 + + thumb_func_start GF_RTC_DateTimeToSec +GF_RTC_DateTimeToSec: ; 0x020126FC + ldr r3, _02012704 ; =RTC_ConvertDateTimeToSecond + ldr r0, _02012708 ; =sGFRTCWork + 16 + ldr r1, _0201270C ; =sGFRTCWork + 32 + bx r3 + .balign 4 +_02012704: .word RTC_ConvertDateTimeToSecond +_02012708: .word sGFRTCWork + 16 +_0201270C: .word sGFRTCWork + 32 + + thumb_func_start FUN_02012710 +FUN_02012710: ; 0x02012710 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r2, [r5, #0x4] + ldr r0, _02012778 ; =sGF_DaysPerMonth - 2 + lsl r1, r2, #0x1 + ldrh r0, [r0, r1] + ldr r3, [r5, #0x8] + add r4, r3, r0 + cmp r2, #0x3 + blo _02012752 + ldr r6, [r5, #0x0] + mov r0, #0x1e + lsr r2, r6, #0x1f + lsl r1, r6, #0x1e + sub r1, r1, r2 + ror r1, r0 + add r0, r2, r1 + bne _02012742 + add r0, r6, #0x0 + mov r1, #0x64 + bl _s32_div_f + cmp r1, #0x0 + bne _02012750 +_02012742: + mov r1, #0x19 + add r0, r6, #0x0 + lsl r1, r1, #0x4 + bl _s32_div_f + cmp r1, #0x0 + bne _02012752 +_02012750: + add r4, r4, #0x1 +_02012752: + add r6, r5, #0x0 + add r3, sp, #0x0 + add r2, r3, #0x0 + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r0, r2, #0x0 + bl RTC_ConvertDateToDay + add r0, r5, #0x0 + bl RTC_ConvertDateToDay + add r0, r4, #0x0 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_02012778: .word sGF_DaysPerMonth - 2 + + thumb_func_start IsNighttime +IsNighttime: ; 0x0201277C + push {r3, lr} + bl GF_RTC_GetTimeOfDay + cmp r0, #0x3 + beq _0201278A + cmp r0, #0x4 + bne _0201278E +_0201278A: + mov r0, #0x1 + pop {r3, pc} +_0201278E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start GF_RTC_GetTimeOfDay +GF_RTC_GetTimeOfDay: ; 0x02012794 + push {lr} + sub sp, #0xc + add r0, sp, #0x0 + bl GF_RTC_CopyTime + ldr r0, [sp, #0x0] + bl GF_RTC_GetTimeOfDayByHour + add sp, #0xc + pop {pc} + + thumb_func_start GF_RTC_GetTimeOfDayByHour +GF_RTC_GetTimeOfDayByHour: ; 0x020127A8 + push {r4, lr} + add r4, r0, #0x0 + bmi _020127B2 + cmp r4, #0x18 + blt _020127B6 +_020127B2: + bl ErrorHandling +_020127B6: + ldr r0, _020127BC ; =sTimeOfDayByHour + ldrb r0, [r0, r4] + pop {r4, pc} + .balign 4 +_020127BC: .word sTimeOfDayByHour + + thumb_func_start FUN_020127C0 +FUN_020127C0: ; 0x020127C0 + push {r4-r7, lr} + sub sp, #0x24 + add r6, r3, #0x0 + ldr r3, _0201282C ; =sMaxDate + add r4, r0, #0x0 + add r7, r1, #0x0 + add r5, r2, #0x0 + add r2, sp, #0x14 + ldmia r3!, {r0-r1} + str r2, [sp, #0x0] + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r3, _02012830 ; =sMaxTime + add r2, sp, #0x8 + ldmia r3!, {r0-r1} + str r2, [sp, #0x4] + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + ldr r1, [sp, #0x4] + str r0, [r2, #0x0] + ldr r0, [sp, #0x0] + bl RTC_ConvertDateTimeToSecond + add r2, r1, #0x0 + add r3, r0, #0x0 + mov r1, #0x0 + ldr r0, _02012834 ; =0xBC19137F + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _02012804 + bl ErrorHandling +_02012804: + sub r0, r4, r5 + mov r12, r7 + mov r0, r12 + sbc r0, r6 + bge _02012818 + sub r0, r5, r4 + sbc r6, r7 + add sp, #0x24 + add r1, r6, #0x0 + pop {r4-r7, pc} +_02012818: + ldr r0, _02012834 ; =0xBC19137F + mov r1, #0x0 + sub r0, r0, r4 + sbc r1, r7 + add r0, r5, r0 + adc r6, r1 + add r1, r6, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + nop +_0201282C: .word sMaxDate +_02012830: .word sMaxTime +_02012834: .word 0xBC19137F diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index c1e91c9f..71187dd6 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -3490,7 +3490,7 @@ FUN_0203CBE8: ; 0x0203CBE8 mov r1, #0x1 bl FUN_02039438 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x1 bl FUN_02039438 diff --git a/arm9/asm/unk_020010A8.s b/arm9/asm/unk_020010A8.s deleted file mode 100644 index 440ba8e2..00000000 --- a/arm9/asm/unk_020010A8.s +++ /dev/null @@ -1,1514 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .text - - thumb_func_start FUN_020010A8 -FUN_020010A8: ; 0x020010A8 - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r0, r3, #0x0 - mov r1, #0x38 - add r7, r2, #0x0 - str r3, [sp, #0x0] - bl AllocFromHeap - add r4, r0, #0x0 - add r3, r5, #0x0 - add r2, r4, #0x0 - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldr r0, [sp, #0x0] - bl FUN_02013690 - str r0, [r4, #0x28] - strh r6, [r4, #0x2c] - add r1, r4, #0x0 - strh r7, [r4, #0x2e] - mov r0, #0x0 - add r1, #0x30 - strb r0, [r1, #0x0] - add r1, r4, #0x0 - add r1, #0x31 - strb r0, [r1, #0x0] - add r1, r4, #0x0 - mov r2, #0xff - add r1, #0x32 - strb r2, [r1, #0x0] - add r1, r4, #0x0 - add r1, #0x33 - strb r0, [r1, #0x0] - add r1, r4, #0x0 - ldr r0, [sp, #0x0] - add r1, #0x34 - strb r0, [r1, #0x0] - add r0, r4, #0x0 - ldrb r1, [r4, #0x17] - add r0, #0x20 - ldrb r2, [r0, #0x0] - lsl r1, r1, #0x18 - mov r0, #0xf - lsr r3, r1, #0x1c - mov r1, #0xf - bic r2, r0 - and r3, r1 - orr r3, r2 - add r2, r4, #0x0 - add r2, #0x20 - strb r3, [r2, #0x0] - add r2, r4, #0x0 - add r2, #0x20 - ldrb r2, [r2, #0x0] - mov r3, #0xf0 - bic r2, r3 - ldrb r3, [r4, #0x18] - lsl r3, r3, #0x1c - lsr r3, r3, #0x1c - lsl r3, r3, #0x1c - lsr r3, r3, #0x18 - orr r3, r2 - add r2, r4, #0x0 - add r2, #0x20 - strb r3, [r2, #0x0] - add r2, r4, #0x0 - add r2, #0x21 - ldrb r2, [r2, #0x0] - bic r2, r0 - ldrb r0, [r4, #0x18] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - add r0, r4, #0x0 - add r0, #0x21 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x22 - ldrb r0, [r0, #0x0] - mov r1, #0x3f - bic r0, r1 - ldrh r1, [r4, #0x1a] - lsl r1, r1, #0x1d - lsr r1, r1, #0x1d - lsl r1, r1, #0x18 - lsr r2, r1, #0x18 - mov r1, #0x3f - and r1, r2 - orr r1, r0 - add r0, r4, #0x0 - add r0, #0x22 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x24 - ldrb r0, [r0, #0x0] - mov r1, #0x7f - bic r0, r1 - ldrh r1, [r4, #0x1a] - lsl r1, r1, #0x11 - lsr r1, r1, #0x1a - lsl r1, r1, #0x18 - lsr r2, r1, #0x18 - mov r1, #0x7f - and r1, r2 - orr r1, r0 - add r0, r4, #0x0 - add r0, #0x24 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x24 - ldrb r1, [r0, #0x0] - mov r0, #0x80 - bic r1, r0 - add r0, r4, #0x0 - add r0, #0x24 - strb r1, [r0, #0x0] - ldrh r1, [r4, #0x10] - ldrh r0, [r4, #0x12] - cmp r1, r0 - bhs _020011AC - strh r1, [r4, #0x12] -_020011AC: - ldrb r2, [r4, #0x18] - ldr r0, [r4, #0x28] - lsl r1, r2, #0x1c - lsr r1, r1, #0x1c - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - ldrb r1, [r4, #0x17] - lsl r2, r2, #0x18 - lsr r2, r2, #0x1c - lsl r1, r1, #0x18 - lsr r1, r1, #0x1c - lsl r1, r1, #0x18 - lsl r2, r2, #0x18 - lsr r1, r1, #0x8 - lsr r2, r2, #0x10 - orr r1, r2 - orr r1, r3 - bl FUN_020136E0 - ldrb r1, [r4, #0x18] - ldr r0, [r4, #0xc] - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - bl FUN_02019620 - ldrh r1, [r4, #0x2c] - ldrh r3, [r4, #0x12] - add r0, r4, #0x0 - mov r2, #0x0 - bl FUN_02001714 - add r0, r4, #0x0 - bl FUN_020017AC - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_02001B64 - ldr r0, [r5, #0xc] - bl CopyWindowToVram - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02001204 -FUN_02001204: ; 0x02001204 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - ldr r6, _020012FC ; =gMain - mov r3, #0x0 - add r1, #0x33 - strb r3, [r1, #0x0] - ldr r1, [r6, #0x48] - mov r2, #0x1 - add r5, r1, #0x0 - tst r5, r2 - beq _0200122C - ldrh r1, [r4, #0x2c] - ldrh r0, [r4, #0x2e] - ldr r2, [r4, #0x0] - add r0, r1, r0 - lsl r0, r0, #0x3 - add r0, r2, r0 - ldr r0, [r0, #0x4] - pop {r4-r6, pc} -_0200122C: - mov r5, #0x2 - tst r1, r5 - beq _02001236 - sub r0, r5, #0x4 - pop {r4-r6, pc} -_02001236: - ldr r5, [r6, #0x4c] - mov r1, #0x40 - tst r1, r5 - beq _02001254 - add r1, r2, #0x0 - bl FUN_02001AA4 - cmp r0, #0x0 - bne _0200124E - mov r0, #0x1 - add r4, #0x33 - strb r0, [r4, #0x0] -_0200124E: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_02001254: - mov r1, #0x80 - add r3, r5, #0x0 - tst r3, r1 - beq _02001274 - add r1, r2, #0x0 - add r3, r2, #0x0 - bl FUN_02001AA4 - cmp r0, #0x0 - bne _0200126E - mov r0, #0x2 - add r4, #0x33 - strb r0, [r4, #0x0] -_0200126E: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_02001274: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x17 - lsr r0, r0, #0x1e - beq _02001284 - cmp r0, #0x1 - beq _0200128A - cmp r0, #0x2 - beq _0200129C -_02001284: - mov r0, #0x0 - add r1, r0, #0x0 - b _020012AC -_0200128A: - mov r0, #0x20 - mov r1, #0x10 - and r0, r5 - and r1, r5 - lsl r0, r0, #0x10 - lsl r1, r1, #0x10 - lsr r0, r0, #0x10 - lsr r1, r1, #0x10 - b _020012AC -_0200129C: - lsl r0, r1, #0x2 - add r1, #0x80 - and r0, r5 - and r1, r5 - lsl r0, r0, #0x10 - lsl r1, r1, #0x10 - lsr r0, r0, #0x10 - lsr r1, r1, #0x10 -_020012AC: - cmp r0, #0x0 - beq _020012D0 - ldrh r2, [r4, #0x12] - add r0, r4, #0x0 - mov r1, #0x1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r3, #0x0 - bl FUN_02001AA4 - cmp r0, #0x0 - bne _020012CA - mov r0, #0x3 - add r4, #0x33 - strb r0, [r4, #0x0] -_020012CA: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_020012D0: - cmp r1, #0x0 - beq _020012F4 - ldrh r2, [r4, #0x12] - mov r1, #0x1 - add r0, r4, #0x0 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - add r3, r1, #0x0 - bl FUN_02001AA4 - cmp r0, #0x0 - bne _020012EE - mov r0, #0x4 - add r4, #0x33 - strb r0, [r4, #0x0] -_020012EE: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_020012F4: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} - nop -_020012FC: .word gMain - - thumb_func_start FUN_02001300 -FUN_02001300: ; 0x02001300 - push {r4, lr} - add r4, r0, #0x0 - cmp r1, #0x0 - beq _0200130C - ldrh r0, [r4, #0x2c] - strh r0, [r1, #0x0] -_0200130C: - cmp r2, #0x0 - beq _02001314 - ldrh r0, [r4, #0x2e] - strh r0, [r2, #0x0] -_02001314: - ldr r0, [r4, #0x28] - bl FUN_020136C0 - add r0, r4, #0x0 - add r0, #0x34 - ldrb r0, [r0, #0x0] - add r1, r4, #0x0 - bl FUN_02016A8C - pop {r4, pc} - - thumb_func_start FUN_02001328 -FUN_02001328: ; 0x02001328 - push {r4, lr} - add r4, r0, #0x0 - ldrb r1, [r4, #0x18] - ldr r0, [r4, #0xc] - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - bl FUN_02019620 - ldrh r1, [r4, #0x2c] - ldrh r3, [r4, #0x12] - add r0, r4, #0x0 - mov r2, #0x0 - bl FUN_02001714 - add r0, r4, #0x0 - bl FUN_020017AC - ldr r0, [r4, #0xc] - bl CopyWindowToVram - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02001354 -FUN_02001354: ; 0x02001354 - push {r4-r6, lr} - add r4, r0, #0x0 - add r6, r1, #0x0 - beq _0200136E - add r5, r4, #0x0 - ldmia r6!, {r0-r1} - stmia r5!, {r0-r1} - ldmia r6!, {r0-r1} - stmia r5!, {r0-r1} - ldmia r6!, {r0-r1} - stmia r5!, {r0-r1} - ldmia r6!, {r0-r1} - stmia r5!, {r0-r1} -_0200136E: - strh r2, [r4, #0x2c] - add r0, r4, #0x0 - strh r3, [r4, #0x2e] - mov r3, #0x0 - add r0, #0x30 - strb r3, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x31 - add r1, sp, #0x0 - strb r3, [r0, #0x0] - ldrh r0, [r1, #0x14] - cmp r0, #0x40 - bne _02001398 - ldrh r1, [r1, #0x10] - add r0, r4, #0x0 - mov r2, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl FUN_02001AA4 - b _020013AC -_02001398: - cmp r0, #0x80 - bne _020013AC - ldrh r1, [r1, #0x10] - mov r2, #0x1 - add r0, r4, #0x0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r3, r2, #0x0 - bl FUN_02001AA4 -_020013AC: - ldr r1, [sp, #0x18] - cmp r1, #0x0 - beq _020013B6 - ldrh r0, [r4, #0x2c] - strh r0, [r1, #0x0] -_020013B6: - ldr r1, [sp, #0x1c] - cmp r1, #0x0 - beq _020013C0 - ldrh r0, [r4, #0x2e] - strh r0, [r1, #0x0] -_020013C0: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020013C8 -FUN_020013C8: ; 0x020013C8 - push {r4, lr} - sub sp, #0x10 - mov r4, #0x0 - str r4, [sp, #0x0] - add r4, sp, #0x8 - ldrh r4, [r4, #0x10] - str r4, [sp, #0x4] - ldr r4, [sp, #0x1c] - str r4, [sp, #0x8] - ldr r4, [sp, #0x20] - str r4, [sp, #0xc] - bl FUN_02001354 - add sp, #0x10 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020013E8 -FUN_020013E8: ; 0x020013E8 - push {r3-r6} - add r4, r0, #0x0 - add r4, #0x20 - ldrb r6, [r4, #0x0] - mov r4, #0xf - mov r5, #0xf - bic r6, r4 - and r1, r5 - orr r6, r1 - add r1, r0, #0x0 - add r1, #0x20 - strb r6, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x20 - lsl r2, r2, #0x1c - ldrb r1, [r1, #0x0] - mov r6, #0xf0 - lsr r2, r2, #0x18 - bic r1, r6 - orr r2, r1 - add r1, r0, #0x0 - add r1, #0x20 - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x21 - ldrb r2, [r1, #0x0] - add r1, r3, #0x0 - and r1, r5 - bic r2, r4 - orr r2, r1 - add r1, r0, #0x0 - add r1, #0x21 - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x24 - ldrb r2, [r1, #0x0] - mov r1, #0x80 - add r0, #0x24 - orr r1, r2 - strb r1, [r0, #0x0] - pop {r3-r6} - bx lr - - thumb_func_start FUN_0200143C -FUN_0200143C: ; 0x0200143C - ldrh r2, [r0, #0x2c] - ldrh r0, [r0, #0x2e] - add r0, r2, r0 - strh r0, [r1, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02001448 -FUN_02001448: ; 0x02001448 - cmp r1, #0x0 - beq _02001450 - ldrh r3, [r0, #0x2c] - strh r3, [r1, #0x0] -_02001450: - cmp r2, #0x0 - beq _02001458 - ldrh r0, [r0, #0x2e] - strh r0, [r2, #0x0] -_02001458: - bx lr - .balign 4 - - thumb_func_start FUN_0200145C -FUN_0200145C: ; 0x0200145C - add r0, #0x33 - ldrb r0, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02001464 -FUN_02001464: ; 0x02001464 - ldr r2, [r0, #0x0] - lsl r0, r1, #0x3 - add r0, r2, r0 - ldr r0, [r0, #0x4] - bx lr - .balign 4 - - thumb_func_start FUN_02001470 -FUN_02001470: ; 0x02001470 - push {r4, lr} - add r4, r0, #0x0 - cmp r1, #0x13 - bhi _02001532 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02001484: ; jump table (using 16-bit offset) - .short _020014AC - _02001484 - 2; case 0 - .short _020014B0 - _02001484 - 2; case 1 - .short _020014B4 - _02001484 - 2; case 2 - .short _020014B8 - _02001484 - 2; case 3 - .short _02001532 - _02001484 - 2; case 4 - .short _020014BC - _02001484 - 2; case 5 - .short _020014C0 - _02001484 - 2; case 6 - .short _020014C4 - _02001484 - 2; case 7 - .short _020014C8 - _02001484 - 2; case 8 - .short _020014D0 - _02001484 - 2; case 9 - .short _020014EA - _02001484 - 2; case 10 - .short _020014F2 - _02001484 - 2; case 11 - .short _020014FA - _02001484 - 2; case 12 - .short _02001502 - _02001484 - 2; case 13 - .short _0200150A - _02001484 - 2; case 14 - .short _02001512 - _02001484 - 2; case 15 - .short _0200151A - _02001484 - 2; case 16 - .short _02001522 - _02001484 - 2; case 17 - .short _0200152A - _02001484 - 2; case 18 - .short _0200152E - _02001484 - 2; case 19 -_020014AC: - ldr r0, [r4, #0x4] - pop {r4, pc} -_020014B0: - ldr r0, [r4, #0x8] - pop {r4, pc} -_020014B4: - ldrh r0, [r4, #0x10] - pop {r4, pc} -_020014B8: - ldrh r0, [r4, #0x12] - pop {r4, pc} -_020014BC: - ldrb r0, [r4, #0x14] - pop {r4, pc} -_020014C0: - ldrb r0, [r4, #0x15] - pop {r4, pc} -_020014C4: - ldrb r0, [r4, #0x16] - pop {r4, pc} -_020014C8: - ldrb r0, [r4, #0x17] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - pop {r4, pc} -_020014D0: - ldrh r0, [r4, #0x1a] - mov r1, #0x1 - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02002E4C - ldrh r1, [r4, #0x1a] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1c - add r0, r1, r0 - pop {r4, pc} -_020014EA: - ldrb r0, [r4, #0x17] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - pop {r4, pc} -_020014F2: - ldrb r0, [r4, #0x18] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - pop {r4, pc} -_020014FA: - ldrb r0, [r4, #0x18] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - pop {r4, pc} -_02001502: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1d - pop {r4, pc} -_0200150A: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x19 - lsr r0, r0, #0x1c - pop {r4, pc} -_02001512: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x17 - lsr r0, r0, #0x1e - pop {r4, pc} -_0200151A: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - pop {r4, pc} -_02001522: - ldrh r0, [r4, #0x1a] - lsl r0, r0, #0x10 - lsr r0, r0, #0x1f - pop {r4, pc} -_0200152A: - ldr r0, [r4, #0xc] - pop {r4, pc} -_0200152E: - ldr r0, [r4, #0x1c] - pop {r4, pc} -_02001532: - mov r0, #0x0 - mvn r0, r0 - pop {r4, pc} - - thumb_func_start FUN_02001538 -FUN_02001538: ; 0x02001538 - cmp r1, #0x13 - bls _0200153E - b _02001648 -_0200153E: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0200154A: ; jump table (using 16-bit offset) - .short _02001572 - _0200154A - 2; case 0 - .short _02001576 - _0200154A - 2; case 1 - .short _0200157A - _0200154A - 2; case 2 - .short _0200157E - _0200154A - 2; case 3 - .short _02001648 - _0200154A - 2; case 4 - .short _02001582 - _0200154A - 2; case 5 - .short _02001586 - _0200154A - 2; case 6 - .short _0200158A - _0200154A - 2; case 7 - .short _0200158E - _0200154A - 2; case 8 - .short _02001648 - _0200154A - 2; case 9 - .short _020015A2 - _0200154A - 2; case 10 - .short _020015B6 - _0200154A - 2; case 11 - .short _020015CA - _0200154A - 2; case 12 - .short _020015DE - _0200154A - 2; case 13 - .short _020015F2 - _0200154A - 2; case 14 - .short _02001606 - _0200154A - 2; case 15 - .short _0200161A - _0200154A - 2; case 16 - .short _0200162E - _0200154A - 2; case 17 - .short _02001642 - _0200154A - 2; case 18 - .short _02001646 - _0200154A - 2; case 19 -_02001572: - str r2, [r0, #0x4] - bx lr -_02001576: - str r2, [r0, #0x8] - bx lr -_0200157A: - strh r2, [r0, #0x10] - bx lr -_0200157E: - strh r2, [r0, #0x12] - bx lr -_02001582: - strb r2, [r0, #0x14] - bx lr -_02001586: - strb r2, [r0, #0x15] - bx lr -_0200158A: - strb r2, [r0, #0x16] - bx lr -_0200158E: - ldrb r3, [r0, #0x17] - mov r1, #0xf - bic r3, r1 - lsl r1, r2, #0x18 - lsr r2, r1, #0x18 - mov r1, #0xf - and r1, r2 - orr r1, r3 - strb r1, [r0, #0x17] - bx lr -_020015A2: - ldrb r3, [r0, #0x17] - mov r1, #0xf0 - bic r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1c - lsr r1, r1, #0x18 - orr r1, r3 - strb r1, [r0, #0x17] - bx lr -_020015B6: - ldrb r3, [r0, #0x18] - mov r1, #0xf - bic r3, r1 - lsl r1, r2, #0x18 - lsr r2, r1, #0x18 - mov r1, #0xf - and r1, r2 - orr r1, r3 - strb r1, [r0, #0x18] - bx lr -_020015CA: - ldrb r3, [r0, #0x18] - mov r1, #0xf0 - bic r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1c - lsr r1, r1, #0x18 - orr r1, r3 - strb r1, [r0, #0x18] - bx lr -_020015DE: - ldrh r3, [r0, #0x1a] - mov r1, #0x7 - bic r3, r1 - lsl r1, r2, #0x18 - lsr r2, r1, #0x18 - mov r1, #0x7 - and r1, r2 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_020015F2: - ldrh r3, [r0, #0x1a] - mov r1, #0x78 - bic r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1c - lsr r1, r1, #0x19 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_02001606: - ldrh r3, [r0, #0x1a] - ldr r1, _0200164C ; =0xFFFFFE7F - and r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1e - lsr r1, r1, #0x17 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_0200161A: - ldrh r3, [r0, #0x1a] - ldr r1, _02001650 ; =0xFFFF81FF - and r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1a - lsr r1, r1, #0x11 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_0200162E: - ldrh r3, [r0, #0x1a] - ldr r1, _02001654 ; =0xFFFF7FFF - and r3, r1 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1f - lsr r1, r1, #0x10 - orr r1, r3 - strh r1, [r0, #0x1a] - bx lr -_02001642: - str r2, [r0, #0xc] - bx lr -_02001646: - str r2, [r0, #0x1c] -_02001648: - bx lr - nop -_0200164C: .word 0xFFFFFE7F -_02001650: .word 0xFFFF81FF -_02001654: .word 0xFFFF7FFF - - thumb_func_start FUN_02001658 -FUN_02001658: ; 0x02001658 - str r1, [r0, #0x0] - bx lr - - thumb_func_start FUN_0200165C -FUN_0200165C: ; 0x0200165C - push {r4-r6, lr} - sub sp, #0x18 - add r5, r1, #0x0 - add r6, r0, #0x0 - add r4, r2, #0x0 - cmp r5, #0x0 - beq _02001710 - add r0, #0x24 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - str r3, [sp, #0x0] - beq _020016CC - mov r0, #0xff - str r0, [sp, #0x4] - add r0, r6, #0x0 - add r0, #0x20 - ldrb r2, [r0, #0x0] - add r3, r4, #0x0 - lsl r0, r2, #0x18 - lsr r0, r0, #0x1c - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - lsl r0, r2, #0x1c - add r2, r6, #0x0 - add r2, #0x21 - ldrb r2, [r2, #0x0] - lsr r0, r0, #0x1c - lsl r0, r0, #0x18 - lsl r2, r2, #0x1c - lsr r2, r2, #0x1c - lsl r2, r2, #0x18 - lsr r0, r0, #0x8 - lsr r2, r2, #0x10 - orr r0, r2 - orr r0, r1 - str r0, [sp, #0x8] - add r0, r6, #0x0 - add r0, #0x22 - ldrb r0, [r0, #0x0] - add r2, r5, #0x0 - lsl r0, r0, #0x1a - lsr r0, r0, #0x1a - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - ldr r0, [r6, #0xc] - add r6, #0x24 - ldrb r1, [r6, #0x0] - lsl r1, r1, #0x19 - lsr r1, r1, #0x19 - bl AddTextPrinterParameterized3 - add sp, #0x18 - pop {r4-r6, pc} -_020016CC: - mov r0, #0xff - str r0, [sp, #0x4] - ldrb r1, [r6, #0x18] - add r3, r4, #0x0 - lsl r0, r1, #0x1c - lsr r0, r0, #0x1c - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - ldrb r0, [r6, #0x17] - lsl r1, r1, #0x18 - lsr r1, r1, #0x1c - lsl r0, r0, #0x18 - lsr r0, r0, #0x1c - lsl r0, r0, #0x18 - lsl r1, r1, #0x18 - lsr r0, r0, #0x8 - lsr r1, r1, #0x10 - orr r0, r1 - orr r0, r2 - str r0, [sp, #0x8] - ldrh r0, [r6, #0x1a] - add r2, r5, #0x0 - lsl r0, r0, #0x1d - lsr r0, r0, #0x1d - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - ldrh r1, [r6, #0x1a] - ldr r0, [r6, #0xc] - lsl r1, r1, #0x11 - lsr r1, r1, #0x1a - bl AddTextPrinterParameterized3 -_02001710: - add sp, #0x18 - pop {r4-r6, pc} - - thumb_func_start FUN_02001714 -FUN_02001714: ; 0x02001714 - push {r4-r7, lr} - sub sp, #0x14 - add r5, r0, #0x0 - str r3, [sp, #0x0] - ldrh r0, [r5, #0x1a] - add r4, r1, #0x0 - mov r1, #0x1 - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r6, r2, #0x0 - bl FUN_02002E4C - ldrh r1, [r5, #0x1a] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1c - add r0, r1, r0 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r0, [sp, #0x0] - cmp r0, #0x0 - ble _020017A6 -_02001748: - ldr r1, [r5, #0x0] - lsl r0, r4, #0x3 - str r0, [sp, #0x8] - add r0, r1, r0 - ldr r1, [r0, #0x4] - mov r0, #0x2 - mvn r0, r0 - cmp r1, r0 - beq _02001760 - ldrb r0, [r5, #0x15] - str r0, [sp, #0x4] - b _02001764 -_02001760: - ldrb r0, [r5, #0x14] - str r0, [sp, #0x4] -_02001764: - ldrb r0, [r5, #0x17] - lsl r0, r0, #0x1c - lsr r3, r0, #0x1c - ldr r0, [sp, #0xc] - add r2, r0, #0x0 - mul r2, r6 - add r0, r3, r2 - lsl r0, r0, #0x18 - ldr r3, [r5, #0x8] - lsr r7, r0, #0x18 - cmp r3, #0x0 - beq _02001782 - add r0, r5, #0x0 - add r2, r7, #0x0 - blx r3 -_02001782: - ldr r2, [r5, #0x0] - ldr r1, [sp, #0x8] - add r0, r5, #0x0 - ldr r1, [r2, r1] - ldr r2, [sp, #0x4] - add r3, r7, #0x0 - bl FUN_0200165C - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, [sp, #0x10] - add r6, r6, #0x1 - add r1, r0, #0x1 - ldr r0, [sp, #0x0] - str r1, [sp, #0x10] - cmp r1, r0 - blt _02001748 -_020017A6: - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_020017AC -FUN_020017AC: ; 0x020017AC - push {r3-r5, lr} - add r4, r0, #0x0 - ldrh r0, [r4, #0x1a] - mov r1, #0x1 - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02002E4C - ldrh r1, [r4, #0x1a] - ldrh r5, [r4, #0x2e] - lsl r2, r1, #0x19 - lsr r2, r2, #0x1c - add r0, r2, r0 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - ldrb r0, [r4, #0x17] - mul r3, r5 - ldrb r2, [r4, #0x16] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - add r0, r0, r3 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - lsl r0, r1, #0x10 - lsr r0, r0, #0x1f - cmp r0, #0x3 - bhi _02001802 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020017F2: ; jump table (using 16-bit offset) - .short _020017FA - _020017F2 - 2; case 0 - .short _02001802 - _020017F2 - 2; case 1 - .short _02001802 - _020017F2 - 2; case 2 - .short _02001802 - _020017F2 - 2; case 3 -_020017FA: - ldr r0, [r4, #0x28] - ldr r1, [r4, #0xc] - bl FUN_020136F8 -_02001802: - pop {r3-r5, pc} - - thumb_func_start FUN_02001804 -FUN_02001804: ; 0x02001804 - push {r3-r5, lr} - sub sp, #0x8 - add r4, r0, #0x0 - ldrh r0, [r4, #0x1a] - add r5, r1, #0x0 - lsl r1, r0, #0x10 - lsr r1, r1, #0x1f - cmp r1, #0x3 - bhi _02001868 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02001822: ; jump table (using 16-bit offset) - .short _0200182A - _02001822 - 2; case 0 - .short _02001868 - _02001822 - 2; case 1 - .short _02001868 - _02001822 - 2; case 2 - .short _02001868 - _02001822 - 2; case 3 -_0200182A: - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x1 - bl FUN_02002E4C - ldrh r1, [r4, #0x1a] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1c - add r0, r1, r0 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - mov r0, #0x8 - str r0, [sp, #0x0] - mov r0, #0x10 - str r0, [sp, #0x4] - ldrb r1, [r4, #0x18] - ldr r0, [r4, #0xc] - ldrb r2, [r4, #0x16] - ldrb r4, [r4, #0x17] - lsl r1, r1, #0x1c - mul r3, r5 - lsl r4, r4, #0x1c - lsr r4, r4, #0x1c - add r3, r4, r3 - lsl r3, r3, #0x10 - lsr r1, r1, #0x1c - lsr r3, r3, #0x10 - bl FUN_020196F4 -_02001868: - add sp, #0x8 - pop {r3-r5, pc} - - thumb_func_start FUN_0200186C -FUN_0200186C: ; 0x0200186C - push {r4-r7} - ldrh r4, [r0, #0x2e] - ldrh r3, [r0, #0x2c] - cmp r1, #0x0 - ldrh r2, [r0, #0x12] - bne _020018FE - cmp r2, #0x1 - bne _02001880 - mov r1, #0x0 - b _02001898 -_02001880: - lsr r7, r2, #0x1f - lsl r6, r2, #0x1f - sub r6, r6, r7 - mov r5, #0x1f - ror r6, r5 - lsr r1, r2, #0x1 - add r5, r7, r6 - add r1, r1, r5 - sub r1, r2, r1 - sub r1, r1, #0x1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 -_02001898: - cmp r3, #0x0 - bne _020018CC - cmp r4, #0x0 - beq _020018C6 - ldr r2, [r0, #0x0] - lsl r1, r3, #0x3 - mov r3, #0x2 - add r1, r2, r1 - mvn r3, r3 -_020018AA: - sub r2, r4, #0x1 - lsl r2, r2, #0x10 - lsr r4, r2, #0x10 - lsl r2, r4, #0x3 - add r2, r1, r2 - ldr r2, [r2, #0x4] - cmp r2, r3 - beq _020018C2 - strh r4, [r0, #0x2e] - mov r0, #0x1 - pop {r4-r7} - bx lr -_020018C2: - cmp r4, #0x0 - bne _020018AA -_020018C6: - mov r0, #0x0 - pop {r4-r7} - bx lr -_020018CC: - cmp r4, r1 - bls _020018F6 - ldr r5, [r0, #0x0] - lsl r2, r3, #0x3 - add r2, r5, r2 - mov r5, #0x2 - mvn r5, r5 -_020018DA: - sub r4, r4, #0x1 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - lsl r6, r4, #0x3 - add r6, r2, r6 - ldr r6, [r6, #0x4] - cmp r6, r5 - beq _020018F2 - strh r4, [r0, #0x2e] - mov r0, #0x1 - pop {r4-r7} - bx lr -_020018F2: - cmp r4, r1 - bhi _020018DA -_020018F6: - strh r1, [r0, #0x2e] - sub r1, r3, #0x1 - strh r1, [r0, #0x2c] - b _02001984 -_020018FE: - cmp r2, #0x1 - bne _02001906 - mov r5, #0x0 - b _0200191A -_02001906: - lsr r7, r2, #0x1f - lsl r6, r2, #0x1f - sub r6, r6, r7 - mov r5, #0x1f - ror r6, r5 - lsr r1, r2, #0x1 - add r5, r7, r6 - add r1, r1, r5 - lsl r1, r1, #0x10 - lsr r5, r1, #0x10 -_0200191A: - ldrh r1, [r0, #0x10] - sub r1, r1, r2 - cmp r3, r1 - bne _02001954 - sub r2, r2, #0x1 - cmp r4, r2 - bge _0200194E - ldr r5, [r0, #0x0] - lsl r1, r3, #0x3 - add r1, r5, r1 - mov r5, #0x2 - mvn r5, r5 -_02001932: - add r3, r4, #0x1 - lsl r3, r3, #0x10 - lsr r4, r3, #0x10 - lsl r3, r4, #0x3 - add r3, r1, r3 - ldr r3, [r3, #0x4] - cmp r3, r5 - beq _0200194A - strh r4, [r0, #0x2e] - mov r0, #0x1 - pop {r4-r7} - bx lr -_0200194A: - cmp r4, r2 - blt _02001932 -_0200194E: - mov r0, #0x0 - pop {r4-r7} - bx lr -_02001954: - cmp r4, r5 - bhs _0200197E - ldr r2, [r0, #0x0] - lsl r1, r3, #0x3 - mov r6, #0x2 - add r1, r2, r1 - mvn r6, r6 -_02001962: - add r2, r4, #0x1 - lsl r2, r2, #0x10 - lsr r4, r2, #0x10 - lsl r2, r4, #0x3 - add r2, r1, r2 - ldr r2, [r2, #0x4] - cmp r2, r6 - beq _0200197A - strh r4, [r0, #0x2e] - mov r0, #0x1 - pop {r4-r7} - bx lr -_0200197A: - cmp r4, r5 - blo _02001962 -_0200197E: - strh r5, [r0, #0x2e] - add r1, r3, #0x1 - strh r1, [r0, #0x2c] -_02001984: - mov r0, #0x2 - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_0200198C -FUN_0200198C: ; 0x0200198C - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldrh r0, [r5, #0x12] - add r4, r1, #0x0 - add r7, r2, #0x0 - cmp r4, r0 - blt _020019B8 - ldrb r1, [r5, #0x18] - ldr r0, [r5, #0xc] - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - bl FUN_02019620 - ldrh r1, [r5, #0x2c] - ldrh r3, [r5, #0x12] - add r0, r5, #0x0 - mov r2, #0x0 - bl FUN_02001714 - add sp, #0x8 - pop {r3-r7, pc} -_020019B8: - ldrh r0, [r5, #0x1a] - mov r1, #0x1 - lsl r0, r0, #0x11 - lsr r0, r0, #0x1a - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02002E4C - ldrh r1, [r5, #0x1a] - lsl r1, r1, #0x19 - lsr r1, r1, #0x1c - add r0, r1, r0 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r7, #0x0 - ldrb r0, [r5, #0x18] - bne _02001A46 - lsl r0, r0, #0x1c - lsr r7, r0, #0x1c - add r2, r4, #0x0 - lsl r3, r7, #0x4 - mul r2, r6 - orr r3, r7 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r5, #0xc] - mov r1, #0x1 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl FUN_0201A8C8 - ldrh r1, [r5, #0x2c] - add r0, r5, #0x0 - mov r2, #0x0 - add r3, r4, #0x0 - bl FUN_02001714 - ldrb r0, [r5, #0x17] - lsl r0, r0, #0x1c - lsr r2, r0, #0x1c - ldrh r0, [r5, #0x12] - add r1, r0, #0x0 - mul r1, r6 - add r0, r2, r1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, [r5, #0xc] - bl FUN_0201AB0C - add r6, r0, #0x0 - ldr r0, [r5, #0xc] - bl FUN_0201AB10 - lsl r0, r0, #0x3 - lsl r1, r6, #0x13 - sub r0, r0, r4 - lsr r1, r1, #0x10 - lsl r0, r0, #0x10 - str r1, [sp, #0x0] - lsr r0, r0, #0x10 - str r0, [sp, #0x4] - ldrb r1, [r5, #0x18] - ldr r0, [r5, #0xc] - mov r2, #0x0 - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - add r3, r4, #0x0 - bl FUN_020196F4 - add sp, #0x8 - pop {r3-r7, pc} -_02001A46: - lsl r0, r0, #0x1c - lsr r3, r0, #0x1c - add r2, r4, #0x0 - mul r2, r6 - lsl r6, r3, #0x4 - orr r3, r6 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r5, #0xc] - mov r1, #0x0 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl FUN_0201A8C8 - ldrh r0, [r5, #0x12] - ldrh r1, [r5, #0x2c] - add r3, r4, #0x0 - sub r2, r0, r4 - add r1, r1, r2 - lsl r1, r1, #0x10 - lsl r2, r2, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - lsr r2, r2, #0x10 - bl FUN_02001714 - ldr r0, [r5, #0xc] - bl FUN_0201AB0C - lsl r0, r0, #0x13 - lsr r0, r0, #0x10 - str r0, [sp, #0x0] - ldrb r0, [r5, #0x17] - mov r2, #0x0 - add r3, r2, #0x0 - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - str r0, [sp, #0x4] - ldrb r1, [r5, #0x18] - ldr r0, [r5, #0xc] - lsl r1, r1, #0x1c - lsr r1, r1, #0x1c - bl FUN_020196F4 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02001AA4 -FUN_02001AA4: ; 0x02001AA4 - push {r3-r7, lr} - sub sp, #0x10 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - add r4, r0, #0x0 - str r3, [sp, #0x8] - ldrh r0, [r4, #0x2e] - mov r6, #0x0 - add r5, r6, #0x0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x4] - add r7, r6, #0x0 - cmp r0, #0x0 - bls _02001AF6 -_02001AC0: - ldr r1, [sp, #0x8] - add r0, r4, #0x0 - bl FUN_0200186C - orr r5, r0 - cmp r0, #0x2 - bne _02001AEA - add r0, r6, #0x1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldrh r1, [r4, #0x2c] - ldrh r0, [r4, #0x2e] - ldr r2, [r4, #0x0] - add r0, r1, r0 - lsl r0, r0, #0x3 - add r0, r2, r0 - ldr r1, [r0, #0x4] - mov r0, #0x2 - mvn r0, r0 - cmp r1, r0 - beq _02001AC0 -_02001AEA: - add r0, r7, #0x1 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - ldr r0, [sp, #0x4] - cmp r7, r0 - blo _02001AC0 -_02001AF6: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _02001B5E - cmp r5, #0x3 - bhi _02001B14 - add r0, r5, r5 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02001B0C: ; jump table (using 16-bit offset) - .short _02001B14 - _02001B0C - 2; case 0 - .short _02001B1A - _02001B0C - 2; case 1 - .short _02001B38 - _02001B0C - 2; case 2 - .short _02001B38 - _02001B0C - 2; case 3 -_02001B14: - add sp, #0x10 - mov r0, #0x1 - pop {r3-r7, pc} -_02001B1A: - ldr r1, [sp, #0xc] - add r0, r4, #0x0 - bl FUN_02001804 - add r0, r4, #0x0 - bl FUN_020017AC - add r0, r4, #0x0 - mov r1, #0x0 - bl FUN_02001B64 - ldr r0, [r4, #0xc] - bl CopyWindowToVram - b _02001B5E -_02001B38: - ldr r1, [sp, #0xc] - add r0, r4, #0x0 - bl FUN_02001804 - ldr r2, [sp, #0x8] - add r0, r4, #0x0 - add r1, r6, #0x0 - bl FUN_0200198C - add r0, r4, #0x0 - bl FUN_020017AC - add r0, r4, #0x0 - mov r1, #0x0 - bl FUN_02001B64 - ldr r0, [r4, #0xc] - bl CopyWindowToVram -_02001B5E: - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - - thumb_func_start FUN_02001B64 -FUN_02001B64: ; 0x02001B64 - push {r3-r5, lr} - ldr r3, [r0, #0x4] - add r2, r1, #0x0 - cmp r3, #0x0 - beq _02001B7E - ldrh r5, [r0, #0x2c] - ldrh r4, [r0, #0x2e] - ldr r1, [r0, #0x0] - add r4, r5, r4 - lsl r4, r4, #0x3 - add r1, r1, r4 - ldr r1, [r1, #0x4] - blx r3 -_02001B7E: - pop {r3-r5, pc} diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s index 4962171d..18e10da6 100644 --- a/arm9/asm/unk_02001B80.s +++ b/arm9/asm/unk_02001B80.s @@ -12,14 +12,6 @@ UNK_020ECAC8: ; 0x020ECAC8 .text - thumb_func_start FUN_02001B80 -FUN_02001B80: ; 0x02001B80 - ldr r3, _02001B88 ; =CopyWindowToVram - ldr r0, [r0, #0xc] - bx r3 - nop -_02001B88: .word CopyWindowToVram - thumb_func_start FUN_02001B8C FUN_02001B8C: ; 0x02001B8C push {r3-r7, lr} @@ -41,7 +33,7 @@ FUN_02001B8C: ; 0x02001B8C ldr r0, [r3, #0x0] str r0, [r2, #0x0] ldr r0, [sp, #0x4] - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0xc] ldr r0, [sp, #0x24] str r0, [r4, #0x10] @@ -57,20 +49,20 @@ FUN_02001B8C: ; 0x02001B8C strb r6, [r4, #0x17] strb r7, [r4, #0x18] ldrb r0, [r5, #0x8] - bl FUN_02002E4C + bl GetFontAttribute add r6, r0, #0x0 ldrb r0, [r5, #0x8] mov r1, #0x2 - bl FUN_02002E4C + bl GetFontAttribute add r0, r6, r0 strb r0, [r4, #0x19] ldrb r0, [r5, #0x8] mov r1, #0x1 - bl FUN_02002E4C + bl GetFontAttribute add r6, r0, #0x0 ldrb r0, [r5, #0x8] mov r1, #0x3 - bl FUN_02002E4C + bl GetFontAttribute add r0, r6, r0 strb r0, [r4, #0x1a] add r0, r4, #0x0 @@ -108,7 +100,7 @@ FUN_02001C34: ; 0x02001C34 add r6, r1, #0x0 add r4, r2, #0x0 mov r1, #0x0 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0x0 str r4, [sp, #0x0] mov r0, #0x2 @@ -130,10 +122,10 @@ FUN_02001C5C: ; 0x02001C5C strb r0, [r1, #0x0] _02001C68: ldr r0, [r4, #0xc] - bl FUN_020136C0 + bl DestroyListMenuCursorObj ldrb r0, [r4, #0x1c] add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start FUN_02001C78 @@ -420,7 +412,7 @@ FUN_02001E64: ; 0x02001E64 _02001E7C: ldrb r0, [r5, #0x8] mov r1, #0x6 - bl FUN_02002E4C + bl GetFontAttribute add r1, sp, #0x8 add r7, r0, #0x0 add r0, r5, #0x0 @@ -437,7 +429,7 @@ _02001E7C: ldrb r2, [r3, #0x1] ldrb r3, [r3, #0x0] ldr r0, [r5, #0x4] - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0x0 bl FUN_02002080 add r0, r6, #0x0 @@ -631,10 +623,10 @@ FUN_02001FF4: ; 0x02001FF4 add r5, r0, #0x0 ldrb r0, [r5, #0x8] mov r1, #0x6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0x0 ldr r0, [r5, #0x4] - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r5, #0x19] ldrb r1, [r5, #0x16] ldrb r7, [r5, #0x17] @@ -718,7 +710,7 @@ FUN_02002080: ; 0x02002080 ldrb r3, [r3, #0x0] ldr r0, [r4, #0xc] ldr r1, [r4, #0x4] - bl FUN_020136F8 + bl ListMenuUpdateCursorObj _020020AA: add sp, #0x4 pop {r3-r4, pc} @@ -772,24 +764,24 @@ CreateYesNoMenu: ; 0x020020EC add r4, r0, #0x0 mov r0, #0x2 add r1, r5, #0x0 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r4, #0x0 mov r2, #0x29 mov r3, #0x0 add r6, r0, #0x0 - bl ListMenu_ItemFromMsgData ; YES + bl ListMenuItems_AppendFromMsgData ; YES mov r3, #0x2a add r2, r3, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 sub r3, #0x2c - bl ListMenu_ItemFromMsgData ; NO + bl ListMenuItems_AppendFromMsgData ; NO add r0, r4, #0x0 bl DestroyMsgData add r0, r5, #0x0 mov r1, #0x1 str r6, [sp, #0x14] - bl FUN_02018FF4 + bl AllocWindows add r1, r0, #0x0 str r1, [sp, #0x18] mov r0, #0x0 @@ -894,9 +886,9 @@ FUN_020021EC: ; 0x020021EC bl FUN_02019178 ldr r1, [r5, #0x4] add r0, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r5, #0x0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0x0 mov r1, #0x0 bl FUN_02001C5C @@ -921,7 +913,7 @@ FUN_02002218: ; 0x02002218 mov r2, #0x0 str r3, [sp, #0x14] add r3, r2, #0x0 - bl FUN_02019658 + bl BlitBitmapRectToWindow add sp, #0x18 pop {r4, pc} nop diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s index baa1b890..a4223e53 100644 --- a/arm9/asm/unk_020023C0.s +++ b/arm9/asm/unk_020023C0.s @@ -193,7 +193,7 @@ _020024F2: mov r1, #0x1 strb r0, [r4, #0xc] ldrb r0, [r4, #0x9] - bl FUN_02002E4C + bl GetFontAttribute ldrb r1, [r4, #0xf] ldrb r2, [r4, #0xd] add sp, #0xc @@ -500,7 +500,7 @@ _0200275C: bl FUN_02002A00 ldrb r1, [r4, #0x12] ldr r0, [r4, #0x4] - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r4, #0xa] strb r0, [r4, #0xc] ldrb r0, [r4, #0xb] @@ -520,7 +520,7 @@ _02002786: bl FUN_02002A00 ldrb r0, [r4, #0x9] mov r1, #0x1 - bl FUN_02002E4C + bl GetFontAttribute ldrb r1, [r4, #0xf] add r1, r1, r0 add r0, r4, #0x0 @@ -549,7 +549,7 @@ _020027B6: ldr r0, [r4, #0x4] mov r1, #0x0 lsr r3, r3, #0x18 - bl FUN_0201A8C8 + bl ScrollWindow mov r1, #0x0 b _020027F2 _020027D8: @@ -560,7 +560,7 @@ _020027D8: mov r1, #0x0 mov r2, #0x4 lsr r3, r3, #0x18 - bl FUN_0201A8C8 + bl ScrollWindow add r0, r4, #0x0 add r0, #0x27 ldrb r0, [r0, #0x0] @@ -686,7 +686,7 @@ _020028AC: bl FUN_0201AB18 str r0, [sp, #0x28] ldr r0, [r5, #0x4] - bl FUN_0201AB0C + bl GetWindowWidth ldr r1, _020029F8 ; =gTextFlags ldrh r6, [r1, #0x2] ldr r1, [sp, #0x28] @@ -853,7 +853,7 @@ FUN_02002A00: ; 0x02002A00 bl FUN_0201AB18 add r6, r0, #0x0 ldr r0, [r5, #0x4] - bl FUN_0201AB0C + bl GetWindowWidth ldr r1, _02002A90 ; =gTextFlags add r7, r6, #0x2 ldrh r4, [r1, #0x2] diff --git a/arm9/asm/unk_02002C14.s b/arm9/asm/unk_02002C14.s index c4049d4b..740dca10 100644 --- a/arm9/asm/unk_02002C14.s +++ b/arm9/asm/unk_02002C14.s @@ -327,8 +327,8 @@ _02002E2E: .balign 4 _02002E48: .word UNK_02106FC8 - thumb_func_start FUN_02002E4C -FUN_02002E4C: ; 0x02002E4C + thumb_func_start GetFontAttribute +GetFontAttribute: ; 0x02002E4C mov r2, #0x0 cmp r1, #0x7 bhi _02002EAC diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s index 5528150d..5bd62750 100644 --- a/arm9/asm/unk_02006864.s +++ b/arm9/asm/unk_02006864.s @@ -567,7 +567,7 @@ FUN_02006C88: ; 0x02006C88 thumb_func_start UncompressFromNarc UncompressFromNarc: ; 0x02006C98 - ; BOOL UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL a2, u32 heap_id, BOOL a4) + ; void * UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd) push {r3-r7, lr} add r5, r2, #0x0 add r7, r0, #0x0 diff --git a/arm9/asm/unk_0200BA78.s b/arm9/asm/unk_0200BA78.s deleted file mode 100644 index fccd5c4c..00000000 --- a/arm9/asm/unk_0200BA78.s +++ /dev/null @@ -1,86 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0200BA78 -FUN_0200BA78: ; 0x0200BA78 - push {r3-r6, lr} - sub sp, #0xc - add r4, r2, #0x0 - ldr r2, [sp, #0x2c] - add r6, r3, #0x0 - str r2, [sp, #0x0] - ldr r2, [sp, #0x24] - ldr r3, [sp, #0x28] - add r5, r0, #0x0 - bl FUN_0200B9A8 - ldr r0, [sp, #0x24] - ldr r3, [sp, #0x20] - str r0, [sp, #0x0] - ldr r0, [sp, #0x28] - add r1, r4, #0x0 - add r0, #0x10 - str r0, [sp, #0x4] - ldr r0, [sp, #0x2c] - add r2, r6, #0x0 - str r0, [sp, #0x8] - add r0, r5, #0x0 - bl FUN_0200B9EC - add sp, #0xc - pop {r3-r6, pc} - - thumb_func_start FUN_0200BAAC -FUN_0200BAAC: ; 0x0200BAAC - push {r3-r7, lr} - add r7, r0, #0x0 - add r4, r2, #0x0 - ldr r2, [r7, #0x28] - ldr r6, [sp, #0x18] - lsl r0, r2, #0x4 - orr r0, r2 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - add r0, r7, #0x0 - add r2, r3, #0x0 - add r0, #0x8 - add r3, r4, #0x0 - bl ConvertUIntToDecimalString - ldrh r1, [r7, #0x8] - ldr r0, _0200BB10 ; =0x0000FFFF - cmp r1, r0 - beq _0200BB0C - add r4, r7, #0x0 - mov r5, #0x0 -_0200BAD8: - ldrh r2, [r4, #0x8] - cmp r2, #0xa2 - blo _0200BAF6 - cmp r2, #0xab - bhi _0200BAF6 - ldr r0, [r7, #0x4] - sub r2, #0xa2 - ldr r1, [r0, #0x14] - lsl r0, r2, #0x5 - add r0, r1, r0 - add r1, r6, r5 - mov r2, #0x20 - bl MIi_CpuCopy32 - b _0200BB00 -_0200BAF6: - ldr r1, [sp, #0x0] - add r0, r6, r5 - mov r2, #0x20 - bl MI_CpuFill8 -_0200BB00: - add r4, r4, #0x2 - ldrh r1, [r4, #0x8] - ldr r0, _0200BB10 ; =0x0000FFFF - add r5, #0x20 - cmp r1, r0 - bne _0200BAD8 -_0200BB0C: - pop {r3-r7, pc} - nop -_0200BB10: .word 0x0000FFFF diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s index 6d593845..27b27a76 100644 --- a/arm9/asm/unk_0200CABC.s +++ b/arm9/asm/unk_0200CABC.s @@ -291,10 +291,10 @@ FUN_0200CCA4: ; 0x0200CCA4 bl FUN_0201AB18 str r0, [sp, #0x18] add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x1c] add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight ldr r1, [sp, #0x1c] ldr r2, [sp, #0x14] str r1, [sp, #0x0] @@ -328,10 +328,10 @@ FUN_0200CCF8: ; 0x0200CCF8 bl FUN_0201AB18 add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x14] add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight sub r1, r7, #0x1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 @@ -758,10 +758,10 @@ FUN_0200D06C: ; 0x0200D06C bl FUN_0201AB18 str r0, [sp, #0x18] add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp, #0x0] str r0, [sp, #0x4] lsl r0, r6, #0x18 @@ -813,10 +813,10 @@ FUN_0200D0E0: ; 0x0200D0E0 bl FUN_0201AB18 add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x14] add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight sub r1, r7, #0x1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 @@ -879,7 +879,7 @@ FUN_0200D148: ; 0x0200D148 mov r0, #0x0 str r0, [sp, #0x10] add r0, sp, #0x1c - bl FUN_02018A60 + bl BlitBitmapRect4Bit add sp, #0x24 pop {r4-r5, pc} @@ -1098,7 +1098,7 @@ FUN_0200D300: ; 0x0200D300 bl FUN_02017FB4 ldr r1, [sp, #0x14] add r0, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, sp, #0x20 ldrb r3, [r0, #0x10] cmp r3, #0x1 @@ -1575,10 +1575,10 @@ FUN_0200D6F8: ; 0x0200D6F8 bl FUN_0201AB18 str r0, [sp, #0x1c] add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp, #0x0] str r0, [sp, #0x4] str r6, [sp, #0x8] @@ -1604,10 +1604,10 @@ _0200D756: bl FUN_0201AB18 str r0, [sp, #0x24] add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp, #0x0] str r0, [sp, #0x4] str r6, [sp, #0x8] @@ -1648,10 +1648,10 @@ FUN_0200D7A0: ; 0x0200D7A0 bl FUN_0201AB18 add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight sub r1, r7, #0x1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 @@ -1681,10 +1681,10 @@ _0200D7FE: bl FUN_0201AB18 add r6, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0x0 add r0, r5, #0x0 - bl FUN_0201AB10 + bl GetWindowHeight sub r1, r6, #0x1 lsl r1, r1, #0x18 lsr r1, r1, #0x18 @@ -1863,7 +1863,7 @@ FUN_0200D980: ; 0x0200D980 bl FUN_0201AB18 str r0, [sp, #0x1c] ldr r0, [r5, #0x0] - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x20] cmp r6, #0x2 bne _0200DA8A diff --git a/arm9/asm/unk_02011744.s b/arm9/asm/unk_02011744.s index 0f9f871b..40ddf1ab 100644 --- a/arm9/asm/unk_02011744.s +++ b/arm9/asm/unk_02011744.s @@ -20,81 +20,6 @@ UNK_020ED398: ; 0x020ED398 .byte 0x01, 0x02 .byte 0x01, 0x01 - .global UNK_020ED3B0 -UNK_020ED3B0: ; 0x020ED3B0 - .word 0x00000147 - .word 0x000001EF - - .global UNK_020ED3B8 -UNK_020ED3B8: ; 0x020ED3B8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - - .global UNK_020ED3C8 -UNK_020ED3C8: ; 0x020ED3C8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - - .global UNK_020ED3D8 -UNK_020ED3D8: ; 0x020ED3D8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global UNK_020ED438 -UNK_020ED438: ; 0x020ED438 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global sMaxTime -sMaxTime: ; 0x020ED498 - ; 23:59:59 - .word 23, 59, 59 - - .global sMaxDate -sMaxDate: ; 0x020ED4A4 - ; 31 December, 2099 - .word 99, 12, 31, 0 - - .global sGF_DaysPerMonth -sGF_DaysPerMonth: ; 0x020ED4B2 - .short 0 - .short 31 - .short 59 - .short 90 - .short 120 - .short 151 - .short 181 - .short 212 - .short 243 - .short 273 - .short 304 - .short 334 - - .global sTimeOfDayByHour -sTimeOfDayByHour: ; 0x020ED4CC - ; 00:00 - 03:59 - .byte 0x04, 0x04, 0x04, 0x04 - ; 04:00 - 09:59 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ; 10:00 - 16:59 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - ; 17:00 - 19:59 - .byte 0x02, 0x02, 0x02 - ; 20:00 - 23:59 - .byte 0x03, 0x03, 0x03, 0x03 - - .section .bss - - .global sGFRTCWork -sGFRTCWork: ; 0x021C4808 - .space 0x48 - .text thumb_func_start FUN_02011744 @@ -1296,1738 +1221,3 @@ FUN_02011FF4: ; 0x02011FF4 str r0, [r1, #0xc] bx lr .balign 4 - - thumb_func_start FUN_02012004 -FUN_02012004: ; 0x02012004 - push {r3-r7, lr} - sub sp, #0x8 - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - ldr r6, [sp, #0x20] - str r1, [sp, #0x4] - add r5, r2, #0x0 - add r4, r3, #0x0 - str r0, [sp, #0x24] - mov r7, #0x0 -_02012018: - ldr r1, [r4, #0x0] - ldr r0, [sp, #0x4] - ldr r2, [r5, #0x0] - add r0, r0, r1 - ldr r1, [sp, #0x0] - add r1, r1, r2 - add r2, r6, #0x0 - bl memcpy - ldr r1, [r5, #0x0] - ldr r0, [sp, #0x24] - add r7, r7, #0x1 - add r0, r1, r0 - str r0, [r5, #0x0] - ldr r0, [r4, #0x0] - add r0, r0, r6 - str r0, [r4, #0x0] - cmp r7, #0x8 - blt _02012018 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02012044 -FUN_02012044: ; 0x02012044 - push {r4-r6, lr} - add r5, r3, #0x0 - bl AllocAndReadWholeNarcMemberByIdPair - add r4, r0, #0x0 - bne _02012054 - bl ErrorHandling -_02012054: - add r0, r4, #0x0 - add r1, r5, #0x0 - bl FUN_020B0088 - add r6, r0, #0x0 - cmp r5, #0x0 - bne _02012066 - bl ErrorHandling -_02012066: - cmp r6, #0x0 - bne _0201206E - bl ErrorHandling -_0201206E: - add r0, r4, #0x0 - bl FreeToHeap - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02012078 -FUN_02012078: ; 0x02012078 - push {r4-r7, lr} - sub sp, #0x2c - ldr r4, [sp, #0x40] - str r0, [sp, #0x8] - add r6, r0, r2 - ldrh r0, [r4, #0x2] - str r1, [sp, #0xc] - add r5, r3, #0x0 - cmp r0, r6 - bge _02012090 - bl ErrorHandling -_02012090: - ldr r0, [sp, #0xc] - ldrh r1, [r4, #0x0] - add r0, r0, r5 - str r0, [sp, #0x14] - cmp r1, r0 - bge _020120A0 - bl ErrorHandling -_020120A0: - ldr r0, [r4, #0x14] - str r0, [sp, #0x20] - ldr r0, [sp, #0x44] - str r0, [sp, #0x1c] - ldrh r0, [r4, #0x2] - lsl r7, r0, #0x2 - ldr r0, [sp, #0xc] - add r1, r0, #0x0 - mul r1, r7 - ldr r0, [sp, #0x8] - str r1, [sp, #0x18] - lsl r1, r0, #0x2 - ldr r0, [sp, #0x18] - str r1, [sp, #0x10] - add r0, r1, r0 - str r0, [sp, #0x28] - mov r0, #0x0 - str r0, [sp, #0x24] - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x14] - cmp r1, r0 - bge _0201210A -_020120CC: - ldr r4, [sp, #0x8] - add r0, r4, #0x0 - cmp r0, r6 - bge _020120F8 - ldr r0, [sp, #0x18] - lsl r1, r0, #0x3 - ldr r0, [sp, #0x10] - add r5, r0, r1 -_020120DC: - str r5, [sp, #0x28] - mov r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x1c] - add r2, sp, #0x28 - add r3, sp, #0x24 - str r7, [sp, #0x4] - bl FUN_02012004 - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, r6 - blt _020120DC -_020120F8: - ldr r0, [sp, #0x18] - add r0, r0, r7 - str r0, [sp, #0x18] - ldr r0, [sp, #0xc] - add r1, r0, #0x1 - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - cmp r1, r0 - blt _020120CC -_0201210A: - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02012110 -FUN_02012110: ; 0x02012110 - push {r4-r5} - sub sp, #0x8 - ldr r2, _02012148 ; =UNK_020ED3B0 - add r1, sp, #0x0 - ldr r3, [r2, #0x0] - ldr r2, [r2, #0x4] - str r3, [sp, #0x0] - str r2, [sp, #0x4] - ldr r2, _0201214C ; =0x000001EF - mov r5, #0x0 - add r3, r2, #0x0 -_02012126: - ldr r4, [r1, #0x0] - cmp r4, r3 - beq _02012140 - cmp r4, r0 - bne _02012138 - add sp, #0x8 - mov r0, #0x1 - pop {r4-r5} - bx lr -_02012138: - add r5, r5, #0x1 - add r1, r1, #0x4 - cmp r5, r2 - blt _02012126 -_02012140: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r5} - bx lr - .balign 4 -_02012148: .word UNK_020ED3B0 -_0201214C: .word 0x000001EF - - thumb_func_start FUN_02012150 -FUN_02012150: ; 0x02012150 - push {r3-r4, lr} - sub sp, #0xc - add r4, r3, #0x0 - mov r3, #0x0 - str r3, [sp, #0x8] - add r3, sp, #0x8 - bl FUN_02012044 - ldr r0, [sp, #0x8] - ldr r0, [r0, #0x14] - bl FUN_02008A74 - ldr r0, [sp, #0x34] - bl FUN_02012110 - ldr r1, [sp, #0x30] - cmp r1, #0x2 - bne _02012184 - cmp r0, #0x1 - bne _02012184 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0x28] - ldr r0, [r0, #0x14] - ldr r2, [sp, #0x2c] - bl FUN_02008904 -_02012184: - ldr r0, [sp, #0x8] - ldr r1, [sp, #0x18] - str r0, [sp, #0x0] - ldr r0, [sp, #0x24] - ldr r2, [sp, #0x1c] - str r0, [sp, #0x4] - ldr r3, [sp, #0x20] - add r0, r4, #0x0 - bl FUN_02012078 - add sp, #0xc - pop {r3-r4, pc} - - thumb_func_start FUN_0201219C -FUN_0201219C: ; 0x0201219C - push {r4-r7, lr} - sub sp, #0x24 - add r7, r1, #0x0 - add r5, r2, #0x0 - ldr r2, [sp, #0x3c] - ldr r1, [sp, #0x40] - add r6, r0, #0x0 - mul r1, r2 - add r0, r5, #0x0 - lsl r1, r1, #0x5 - str r3, [sp, #0x20] - bl AllocFromHeap - add r4, r0, #0x0 - ldr r0, [sp, #0x38] - ldr r3, [sp, #0x20] - str r0, [sp, #0x0] - ldr r0, [sp, #0x3c] - add r1, r7, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x40] - add r2, r5, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x44] - str r4, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, [sp, #0x48] - str r0, [sp, #0x14] - ldr r0, [sp, #0x4c] - str r0, [sp, #0x18] - ldr r0, [sp, #0x50] - str r0, [sp, #0x1c] - add r0, r6, #0x0 - bl FUN_02012150 - add r0, r4, #0x0 - add sp, #0x24 - pop {r4-r7, pc} - - thumb_func_start FUN_020121E8 -FUN_020121E8: ; 0x020121E8 - push {r3-r7, lr} - sub sp, #0x30 - str r3, [sp, #0x8] - ldr r3, [sp, #0x48] - str r3, [sp, #0x48] - mov r3, #0x0 - str r3, [sp, #0x2c] - bl AllocAndReadWholeNarcMemberByIdPair - str r0, [sp, #0x20] - cmp r0, #0x0 - bne _02012204 - bl ErrorHandling -_02012204: - ldr r0, [sp, #0x20] - add r1, sp, #0x2c - bl FUN_020B0088 - cmp r0, #0x0 - bne _02012214 - bl ErrorHandling -_02012214: - ldr r1, [sp, #0x4c] - ldr r0, [sp, #0x8] - add r6, r0, r1 - ldr r0, [sp, #0x2c] - ldrh r0, [r0, #0x2] - cmp r0, r6 - bge _02012226 - bl ErrorHandling -_02012226: - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x48] - add r0, r0, r1 - str r0, [sp, #0x10] - ldr r0, [sp, #0x2c] - ldrh r1, [r0, #0x0] - ldr r0, [sp, #0x10] - cmp r1, r0 - bge _0201223C - bl ErrorHandling -_0201223C: - ldr r0, [sp, #0x2c] - ldr r0, [r0, #0x14] - str r0, [sp, #0x1c] - bl FUN_02008A74 - ldr r0, [sp, #0x54] - str r0, [sp, #0x18] - ldr r0, [sp, #0x2c] - ldrh r0, [r0, #0x2] - lsl r7, r0, #0x2 - ldr r0, [sp, #0x48] - add r1, r0, #0x0 - mul r1, r7 - ldr r0, [sp, #0x8] - str r1, [sp, #0x14] - lsl r1, r0, #0x2 - ldr r0, [sp, #0x14] - str r1, [sp, #0xc] - add r0, r1, r0 - str r0, [sp, #0x28] - mov r0, #0x0 - str r0, [sp, #0x24] - ldr r1, [sp, #0x48] - ldr r0, [sp, #0x10] - cmp r1, r0 - bge _020122AE -_02012270: - ldr r4, [sp, #0x8] - add r0, r4, #0x0 - cmp r0, r6 - bge _0201229C - ldr r0, [sp, #0x14] - lsl r1, r0, #0x3 - ldr r0, [sp, #0xc] - add r5, r0, r1 -_02012280: - str r5, [sp, #0x28] - mov r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x18] - add r2, sp, #0x28 - add r3, sp, #0x24 - str r7, [sp, #0x4] - bl FUN_02012004 - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, r6 - blt _02012280 -_0201229C: - ldr r0, [sp, #0x14] - add r0, r0, r7 - str r0, [sp, #0x14] - ldr r0, [sp, #0x48] - add r1, r0, #0x1 - ldr r0, [sp, #0x10] - str r1, [sp, #0x48] - cmp r1, r0 - blt _02012270 -_020122AE: - ldr r0, [sp, #0x20] - bl FreeToHeap - add sp, #0x30 - pop {r3-r7, pc} - - thumb_func_start FUN_020122B8 -FUN_020122B8: ; 0x020122B8 - push {r4-r7, lr} - sub sp, #0x14 - add r7, r1, #0x0 - add r5, r2, #0x0 - ldr r2, [sp, #0x2c] - ldr r1, [sp, #0x30] - add r6, r0, #0x0 - mul r1, r2 - add r0, r5, #0x0 - lsl r1, r1, #0x5 - str r3, [sp, #0x10] - bl AllocFromHeap - add r4, r0, #0x0 - ldr r0, [sp, #0x28] - ldr r3, [sp, #0x10] - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - add r1, r7, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x30] - add r2, r5, #0x0 - str r0, [sp, #0x8] - add r0, r6, #0x0 - str r4, [sp, #0xc] - bl FUN_020121E8 - add r0, r4, #0x0 - add sp, #0x14 - pop {r4-r7, pc} - - thumb_func_start FUN_020122F4 -FUN_020122F4: ; 0x020122F4 - push {r3-r7, lr} - sub sp, #0x20 - str r0, [sp, #0x0] - ldr r0, [sp, #0x44] - ldr r1, [sp, #0x38] - str r0, [sp, #0x18] - ldr r0, [sp, #0x48] - str r2, [sp, #0x4] - str r0, [sp, #0x14] - add r0, r2, #0x0 - add r7, r0, r1 - ldr r1, [sp, #0x3c] - add r0, r3, #0x0 - add r0, r0, r1 - add r1, r3, #0x0 - str r3, [sp, #0x8] - ldr r5, [sp, #0x40] - str r0, [sp, #0x10] - cmp r1, r0 - bge _0201236C - add r0, r3, #0x0 - lsl r0, r0, #0x5 - str r0, [sp, #0xc] - add r0, r2, #0x0 - lsl r0, r0, #0x5 - str r0, [sp, #0x1c] -_02012328: - ldr r6, [sp, #0x4] - add r0, r6, #0x0 - cmp r0, r7 - bge _0201235A - ldr r1, [sp, #0x0] - ldr r0, [sp, #0xc] - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [sp, #0x1c] - add r4, r0, r2 -_0201233C: - ldr r1, [r5, #0x0] - ldr r0, [sp, #0x14] - mov r2, #0x20 - add r0, r0, r1 - ldr r1, [sp, #0x18] - add r1, r1, r4 - bl memcpy - ldr r0, [r5, #0x0] - add r6, r6, #0x1 - add r0, #0x20 - str r0, [r5, #0x0] - add r4, #0x20 - cmp r6, r7 - blt _0201233C -_0201235A: - ldr r0, [sp, #0xc] - add r0, #0x20 - str r0, [sp, #0xc] - ldr r0, [sp, #0x8] - add r1, r0, #0x1 - ldr r0, [sp, #0x10] - str r1, [sp, #0x8] - cmp r1, r0 - blt _02012328 -_0201236C: - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_02012370 -FUN_02012370: ; 0x02012370 - push {r3-r4, lr} - sub sp, #0x14 - add r4, r2, #0x0 - ldr r2, [r4, #0x8] - str r2, [sp, #0x0] - ldr r2, [r4, #0xc] - str r2, [sp, #0x4] - ldr r2, [sp, #0x20] - str r3, [sp, #0x8] - str r2, [sp, #0xc] - ldr r2, [sp, #0x24] - str r2, [sp, #0x10] - ldr r2, [r4, #0x0] - ldr r3, [r4, #0x4] - bl FUN_020122F4 - add sp, #0x14 - pop {r3-r4, pc} - - thumb_func_start FUN_02012394 -FUN_02012394: ; 0x02012394 - push {r4-r7, lr} - sub sp, #0x7c - str r0, [sp, #0xc] - ldr r0, [sp, #0x9c] - mov r12, r3 - add r5, r2, #0x0 - ldr r6, [sp, #0x94] - ldr r7, [sp, #0x98] - ldr r3, _020123FC ; =UNK_020ED3D8 - str r1, [sp, #0x10] - str r0, [sp, #0x9c] - add r2, sp, #0x1c - mov r4, #0xc -_020123AE: - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - sub r4, r4, #0x1 - bne _020123AE - mov r0, #0x0 - str r0, [sp, #0x18] - ldr r0, [sp, #0x90] - ldr r1, [sp, #0x10] - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r0, [sp, #0xc] - add r2, r5, #0x0 - mov r3, r12 - str r7, [sp, #0x8] - bl FUN_020122B8 - str r0, [sp, #0x14] - mov r4, #0x0 - add r5, sp, #0x1c -_020123D4: - ldr r0, [sp, #0x14] - add r1, r7, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x9c] - add r2, r5, #0x0 - str r0, [sp, #0x4] - add r0, r6, #0x0 - add r3, sp, #0x18 - bl FUN_02012370 - add r4, r4, #0x1 - add r5, #0x10 - cmp r4, #0x6 - blt _020123D4 - ldr r0, [sp, #0x14] - bl FreeToHeap - add sp, #0x7c - pop {r4-r7, pc} - nop -_020123FC: .word UNK_020ED3D8 - - thumb_func_start FUN_02012400 -FUN_02012400: ; 0x02012400 - push {r4, lr} - sub sp, #0x10 - ldr r4, [r3, #0x4] - str r4, [sp, #0x0] - ldr r4, [r3, #0x8] - str r4, [sp, #0x4] - ldr r4, [r3, #0xc] - str r4, [sp, #0x8] - ldr r4, [sp, #0x18] - str r4, [sp, #0xc] - ldr r3, [r3, #0x0] - bl FUN_02012394 - add sp, #0x10 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02012420 -FUN_02012420: ; 0x02012420 - push {r4-r7, lr} - sub sp, #0x14 - ldr r4, _02012448 ; =UNK_020ED3B8 - add r5, r3, #0x0 - add r3, sp, #0x4 - add r7, r0, #0x0 - mov r12, r1 - add r6, r3, #0x0 - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - add r0, r7, #0x0 - mov r1, r12 - add r3, r6, #0x0 - str r5, [sp, #0x0] - bl FUN_02012400 - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_02012448: .word UNK_020ED3B8 - - thumb_func_start FUN_0201244C -FUN_0201244C: ; 0x0201244C - push {r3-r7, lr} - add r6, r1, #0x0 - mov r1, #0x32 - add r7, r2, #0x0 - add r5, r0, #0x0 - add r0, r7, #0x0 - lsl r1, r1, #0x6 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - add r3, r4, #0x0 - bl FUN_02012420 - add r0, r4, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02012470 -FUN_02012470: ; 0x02012470 - push {r3-r7, lr} - add r7, r2, #0x0 - add r5, r0, #0x0 - add r6, r1, #0x0 - add r0, r7, #0x0 - mov r1, #0x20 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl AllocAndReadWholeNarcMemberByIdPair - add r1, sp, #0x0 - add r5, r0, #0x0 - bl FUN_020B0138 - cmp r0, #0x1 - beq _0201249C - bl ErrorHandling -_0201249C: - ldr r0, [sp, #0x0] - add r1, r4, #0x0 - ldr r0, [r0, #0xc] - mov r2, #0x20 - bl MIi_CpuCopy16 - add r0, r5, #0x0 - bl FreeToHeap - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020124B4 -FUN_020124B4: ; 0x020124B4 - push {r4-r7, lr} - sub sp, #0x8c - str r0, [sp, #0x1c] - ldr r0, [sp, #0xac] - mov r12, r3 - add r5, r2, #0x0 - ldr r6, [sp, #0xa4] - ldr r7, [sp, #0xa8] - ldr r3, _0201252C ; =UNK_020ED438 - str r1, [sp, #0x20] - str r0, [sp, #0xac] - add r2, sp, #0x2c - mov r4, #0xc -_020124CE: - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - sub r4, r4, #0x1 - bne _020124CE - mov r0, #0x0 - str r0, [sp, #0x28] - ldr r0, [sp, #0xa0] - ldr r1, [sp, #0x20] - str r0, [sp, #0x0] - str r6, [sp, #0x4] - ldr r0, [sp, #0xb0] - str r7, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [sp, #0xb4] - add r2, r5, #0x0 - str r0, [sp, #0x10] - ldr r0, [sp, #0xb8] - mov r3, r12 - str r0, [sp, #0x14] - ldr r0, [sp, #0xbc] - str r0, [sp, #0x18] - ldr r0, [sp, #0x1c] - bl FUN_0201219C - str r0, [sp, #0x24] - mov r4, #0x0 - add r5, sp, #0x2c -_02012504: - ldr r0, [sp, #0x24] - add r1, r7, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0xac] - add r2, r5, #0x0 - str r0, [sp, #0x4] - add r0, r6, #0x0 - add r3, sp, #0x28 - bl FUN_02012370 - add r4, r4, #0x1 - add r5, #0x10 - cmp r4, #0x6 - blt _02012504 - ldr r0, [sp, #0x24] - bl FreeToHeap - add sp, #0x8c - pop {r4-r7, pc} - nop -_0201252C: .word UNK_020ED438 - - thumb_func_start FUN_02012530 -FUN_02012530: ; 0x02012530 - push {r4, lr} - sub sp, #0x20 - ldr r4, [r3, #0x4] - str r4, [sp, #0x0] - ldr r4, [r3, #0x8] - str r4, [sp, #0x4] - ldr r4, [r3, #0xc] - str r4, [sp, #0x8] - ldr r4, [sp, #0x28] - str r4, [sp, #0xc] - ldr r4, [sp, #0x2c] - str r4, [sp, #0x10] - ldr r4, [sp, #0x30] - str r4, [sp, #0x14] - ldr r4, [sp, #0x34] - str r4, [sp, #0x18] - ldr r4, [sp, #0x38] - str r4, [sp, #0x1c] - ldr r3, [r3, #0x0] - bl FUN_020124B4 - add sp, #0x20 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02012560 -FUN_02012560: ; 0x02012560 - push {r4-r7, lr} - sub sp, #0x24 - ldr r4, _02012598 ; =UNK_020ED3C8 - add r5, r3, #0x0 - add r3, sp, #0x14 - add r7, r0, #0x0 - mov r12, r1 - add r6, r3, #0x0 - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - ldr r0, [sp, #0x38] - str r5, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [sp, #0x3c] - mov r1, r12 - str r0, [sp, #0x8] - ldr r0, [sp, #0x40] - add r3, r6, #0x0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x44] - str r0, [sp, #0x10] - add r0, r7, #0x0 - bl FUN_02012530 - add sp, #0x24 - pop {r4-r7, pc} - .balign 4 -_02012598: .word UNK_020ED3C8 - - thumb_func_start GF_InitRTCWork -GF_InitRTCWork: ; 0x0201259C - push {r3, lr} - bl RTC_Init - ldr r3, _020125CC ; =sGFRTCWork - mov r0, #0x0 - add r2, r3, #0x0 - add r1, r0, #0x0 - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - stmia r2!, {r0-r1} - ldr r1, _020125D0 ; =sGFRTCWork - str r0, [r1, #0x0] - str r0, [r1, #0x4] - str r0, [r1, #0x8] - add r0, r3, #0x0 - bl GF_RTC_GetDateTime - pop {r3, pc} - .balign 4 -_020125CC: .word sGFRTCWork -_020125D0: .word sGFRTCWork - - thumb_func_start GF_RTC_UpdateOnFrame -GF_RTC_UpdateOnFrame: ; 0x020125D4 - push {r3, lr} - ldr r0, _020125F4 ; =sGFRTCWork - ldr r1, [r0, #0x4] - cmp r1, #0x0 - bne _020125F2 - ldr r1, [r0, #0x8] - add r1, r1, #0x1 - str r1, [r0, #0x8] - cmp r1, #0xa - ble _020125F2 - mov r1, #0x0 - str r1, [r0, #0x8] - ldr r0, _020125F8 ; =sGFRTCWork - bl GF_RTC_GetDateTime -_020125F2: - pop {r3, pc} - .balign 4 -_020125F4: .word sGFRTCWork -_020125F8: .word sGFRTCWork - - thumb_func_start GF_RTC_GetDateTime_Callback -GF_RTC_GetDateTime_Callback: ; 0x020125FC - push {r4, lr} - add r4, r1, #0x0 - str r0, [r4, #0xc] - cmp r0, #0x0 - beq _0201260A - bl ErrorHandling -_0201260A: - add r3, r4, #0x0 - mov r0, #0x1 - add r2, r4, #0x0 - add r3, #0x2c - str r0, [r4, #0x0] - ldmia r3!, {r0-r1} - add r2, #0x10 - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - add r3, r4, #0x0 - add r3, #0x3c - add r2, r4, #0x0 - ldmia r3!, {r0-r1} - add r2, #0x20 - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - str r0, [r2, #0x0] - mov r0, #0x0 - str r0, [r4, #0x4] - pop {r4, pc} - - thumb_func_start GF_RTC_GetDateTime -GF_RTC_GetDateTime: ; 0x02012634 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x1 - str r0, [r4, #0x4] - add r0, r4, #0x0 - add r1, r4, #0x0 - ldr r2, _02012658 ; =GF_RTC_GetDateTime_Callback - add r0, #0x2c - add r1, #0x3c - add r3, r4, #0x0 - bl RTC_GetDateTimeAsync - str r0, [r4, #0xc] - cmp r0, #0x0 - beq _02012656 - bl ErrorHandling -_02012656: - pop {r4, pc} - .balign 4 -_02012658: .word GF_RTC_GetDateTime_Callback - - thumb_func_start GF_RTC_CopyDateTime -GF_RTC_CopyDateTime: ; 0x0201265C - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, _02012684 ; =sGFRTCWork - add r4, r1, #0x0 - ldr r0, [r0, #0x0] - cmp r0, #0x1 - beq _0201266E - bl ErrorHandling -_0201266E: - ldr r2, _02012688 ; =sGFRTCWork + 16 - ldmia r2!, {r0-r1} - stmia r5!, {r0-r1} - ldmia r2!, {r0-r1} - ldr r2, _0201268C ; =sGFRTCWork + 32 - stmia r5!, {r0-r1} - ldmia r2!, {r0-r1} - stmia r4!, {r0-r1} - ldr r0, [r2, #0x0] - str r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 -_02012684: .word sGFRTCWork -_02012688: .word sGFRTCWork + 16 -_0201268C: .word sGFRTCWork + 32 - - thumb_func_start GF_RTC_CopyTime -GF_RTC_CopyTime: ; 0x02012690 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _020126AC ; =sGFRTCWork - ldr r0, [r0, #0x0] - cmp r0, #0x1 - beq _020126A0 - bl ErrorHandling -_020126A0: - ldr r2, _020126B0 ; =sGFRTCWork + 32 - ldmia r2!, {r0-r1} - stmia r4!, {r0-r1} - ldr r0, [r2, #0x0] - str r0, [r4, #0x0] - pop {r4, pc} - .balign 4 -_020126AC: .word sGFRTCWork -_020126B0: .word sGFRTCWork + 32 - - thumb_func_start GF_RTC_CopyDate -GF_RTC_CopyDate: ; 0x020126B4 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _020126D0 ; =sGFRTCWork - ldr r0, [r0, #0x0] - cmp r0, #0x1 - beq _020126C4 - bl ErrorHandling -_020126C4: - ldr r2, _020126D4 ; =sGFRTCWork + 16 - ldmia r2!, {r0-r1} - stmia r4!, {r0-r1} - ldmia r2!, {r0-r1} - stmia r4!, {r0-r1} - pop {r4, pc} - .balign 4 -_020126D0: .word sGFRTCWork -_020126D4: .word sGFRTCWork + 16 - - thumb_func_start GF_RTC_TimeToSec -GF_RTC_TimeToSec: ; 0x020126D8 - push {r3-r4} - ldr r4, _020126F8 ; =sGFRTCWork + 32 - mov r0, #0x3c - ldr r1, [r4, #0x4] - ldr r3, [r4, #0x8] - add r2, r1, #0x0 - mul r2, r0 - mov r0, #0xe1 - ldr r1, [r4, #0x0] - lsl r0, r0, #0x4 - mul r0, r1 - add r0, r2, r0 - add r0, r3, r0 - pop {r3-r4} - bx lr - nop -_020126F8: .word sGFRTCWork + 32 - - thumb_func_start GF_RTC_DateTimeToSec -GF_RTC_DateTimeToSec: ; 0x020126FC - ldr r3, _02012704 ; =RTC_ConvertDateTimeToSecond - ldr r0, _02012708 ; =sGFRTCWork + 16 - ldr r1, _0201270C ; =sGFRTCWork + 32 - bx r3 - .balign 4 -_02012704: .word RTC_ConvertDateTimeToSecond -_02012708: .word sGFRTCWork + 16 -_0201270C: .word sGFRTCWork + 32 - - thumb_func_start FUN_02012710 -FUN_02012710: ; 0x02012710 - push {r4-r6, lr} - sub sp, #0x10 - add r5, r0, #0x0 - ldr r2, [r5, #0x4] - ldr r0, _02012778 ; =sGF_DaysPerMonth - 2 - lsl r1, r2, #0x1 - ldrh r0, [r0, r1] - ldr r3, [r5, #0x8] - add r4, r3, r0 - cmp r2, #0x3 - blo _02012752 - ldr r6, [r5, #0x0] - mov r0, #0x1e - lsr r2, r6, #0x1f - lsl r1, r6, #0x1e - sub r1, r1, r2 - ror r1, r0 - add r0, r2, r1 - bne _02012742 - add r0, r6, #0x0 - mov r1, #0x64 - bl _s32_div_f - cmp r1, #0x0 - bne _02012750 -_02012742: - mov r1, #0x19 - add r0, r6, #0x0 - lsl r1, r1, #0x4 - bl _s32_div_f - cmp r1, #0x0 - bne _02012752 -_02012750: - add r4, r4, #0x1 -_02012752: - add r6, r5, #0x0 - add r3, sp, #0x0 - add r2, r3, #0x0 - ldmia r6!, {r0-r1} - stmia r3!, {r0-r1} - ldmia r6!, {r0-r1} - stmia r3!, {r0-r1} - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r0, r2, #0x0 - bl RTC_ConvertDateToDay - add r0, r5, #0x0 - bl RTC_ConvertDateToDay - add r0, r4, #0x0 - add sp, #0x10 - pop {r4-r6, pc} - .balign 4 -_02012778: .word sGF_DaysPerMonth - 2 - - thumb_func_start IsNighttime -IsNighttime: ; 0x0201277C - push {r3, lr} - bl GF_RTC_GetTimeOfDay - cmp r0, #0x3 - beq _0201278A - cmp r0, #0x4 - bne _0201278E -_0201278A: - mov r0, #0x1 - pop {r3, pc} -_0201278E: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start GF_RTC_GetTimeOfDay -GF_RTC_GetTimeOfDay: ; 0x02012794 - push {lr} - sub sp, #0xc - add r0, sp, #0x0 - bl GF_RTC_CopyTime - ldr r0, [sp, #0x0] - bl GF_RTC_GetTimeOfDayByHour - add sp, #0xc - pop {pc} - - thumb_func_start GF_RTC_GetTimeOfDayByHour -GF_RTC_GetTimeOfDayByHour: ; 0x020127A8 - push {r4, lr} - add r4, r0, #0x0 - bmi _020127B2 - cmp r4, #0x18 - blt _020127B6 -_020127B2: - bl ErrorHandling -_020127B6: - ldr r0, _020127BC ; =sTimeOfDayByHour - ldrb r0, [r0, r4] - pop {r4, pc} - .balign 4 -_020127BC: .word sTimeOfDayByHour - - thumb_func_start FUN_020127C0 -FUN_020127C0: ; 0x020127C0 - push {r4-r7, lr} - sub sp, #0x24 - add r6, r3, #0x0 - ldr r3, _0201282C ; =sMaxDate - add r4, r0, #0x0 - add r7, r1, #0x0 - add r5, r2, #0x0 - add r2, sp, #0x14 - ldmia r3!, {r0-r1} - str r2, [sp, #0x0] - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldr r3, _02012830 ; =sMaxTime - add r2, sp, #0x8 - ldmia r3!, {r0-r1} - str r2, [sp, #0x4] - stmia r2!, {r0-r1} - ldr r0, [r3, #0x0] - ldr r1, [sp, #0x4] - str r0, [r2, #0x0] - ldr r0, [sp, #0x0] - bl RTC_ConvertDateTimeToSecond - add r2, r1, #0x0 - add r3, r0, #0x0 - mov r1, #0x0 - ldr r0, _02012834 ; =0xBC19137F - eor r1, r2 - eor r0, r3 - orr r0, r1 - beq _02012804 - bl ErrorHandling -_02012804: - sub r0, r4, r5 - mov r12, r7 - mov r0, r12 - sbc r0, r6 - bge _02012818 - sub r0, r5, r4 - sbc r6, r7 - add sp, #0x24 - add r1, r6, #0x0 - pop {r4-r7, pc} -_02012818: - ldr r0, _02012834 ; =0xBC19137F - mov r1, #0x0 - sub r0, r0, r4 - sbc r1, r7 - add r0, r5, r0 - adc r6, r1 - add r1, r6, #0x0 - add sp, #0x24 - pop {r4-r7, pc} - nop -_0201282C: .word sMaxDate -_02012830: .word sMaxTime -_02012834: .word 0xBC19137F - - thumb_func_start ListMenu_ctor -ListMenu_ctor: ; 0x02012838 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x1 - add r0, r4, #0x0 - lsl r1, r1, #0x3 - bl AllocFromHeap - cmp r0, #0x0 - beq _0201286E - mov r2, #0x0 - cmp r5, #0x0 - bls _02012862 - add r3, r0, #0x0 - add r1, r2, #0x0 -_02012856: - str r1, [r3, #0x0] - str r1, [r3, #0x4] - add r2, r2, #0x1 - add r3, #0x8 - cmp r2, r5 - blo _02012856 -_02012862: - mov r1, #0x0 - lsl r2, r2, #0x3 - mvn r1, r1 - str r1, [r0, r2] - add r1, r0, r2 - str r4, [r1, #0x4] -_0201286E: - pop {r3-r5, pc} - - thumb_func_start ListMenu_dtor -ListMenu_dtor: ; 0x02012870 - push {r4, lr} - add r4, r0, #0x0 - bl ListMenu_DestroyMenuStrings - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start ListMenu_ItemFromMsgData -ListMenu_ItemFromMsgData: ; 0x02012880 - push {r3-r7, lr} - add r6, r1, #0x0 - add r1, sp, #0x0 - add r7, r2, #0x0 - add r5, r3, #0x0 - bl ListMenu_NewItem - add r4, r0, #0x0 - beq _0201289E - add r0, r6, #0x0 - add r1, r7, #0x0 - bl NewString_ReadMsgData - str r0, [r4, #0x0] - str r5, [r4, #0x4] -_0201289E: - pop {r3-r7, pc} - - thumb_func_start ListMenu_AddItem -ListMenu_AddItem: ; 0x020128A0 - push {r3-r6, lr} - sub sp, #0x4 - add r6, r1, #0x0 - add r1, sp, #0x0 - add r5, r2, #0x0 - bl ListMenu_NewItem - add r4, r0, #0x0 - beq _020128BE - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - bl StringDup - str r0, [r4, #0x0] - str r5, [r4, #0x4] -_020128BE: - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 - - thumb_func_start ListMenu_CopyItem -ListMenu_CopyItem: ; 0x020128C4 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r1, #0x0 - add r1, sp, #0x0 - bl ListMenu_NewItem - cmp r0, #0x0 - beq _020128DC - ldr r1, [r4, #0x0] - str r1, [r0, #0x0] - ldr r1, [r4, #0x4] - str r1, [r0, #0x4] -_020128DC: - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start ListMenu_NewItem -ListMenu_NewItem: ; 0x020128E0 - push {r4, lr} - ldr r3, [r0, #0x0] - cmp r3, #0x0 - beq _02012900 - mov r2, #0x0 - mvn r2, r2 -_020128EC: - cmp r3, r2 - bne _020128F8 - bl ErrorHandling - mov r0, #0x0 - pop {r4, pc} -_020128F8: - add r0, #0x8 - ldr r3, [r0, #0x0] - cmp r3, #0x0 - bne _020128EC -_02012900: - mov r2, #0x0 - mvn r2, r2 - add r4, r0, #0x0 - cmp r3, r2 - beq _02012912 -_0201290A: - add r0, #0x8 - ldr r3, [r0, #0x0] - cmp r3, r2 - bne _0201290A -_02012912: - ldr r0, [r0, #0x4] - str r0, [r1, #0x0] - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start ListMenu_DestroyMenuStrings -ListMenu_DestroyMenuStrings: ; 0x0201291C - push {r4-r6, lr} - add r5, r0, #0x0 - mov r0, #0x0 - ldr r1, [r5, #0x0] - mvn r0, r0 - cmp r1, r0 - beq _02012942 - mov r4, #0x0 - add r6, r0, #0x0 -_0201292E: - ldr r0, [r5, #0x0] - cmp r0, #0x0 - beq _02012942 - bl String_dtor - str r4, [r5, #0x0] - add r5, #0x8 - ldr r0, [r5, #0x0] - cmp r0, r6 - bne _0201292E -_02012942: - pop {r4-r6, pc} - - thumb_func_start FUN_02012944 -FUN_02012944: ; 0x02012944 - push {r3-r5, lr} - add r5, r1, #0x0 - mov r1, #0xc - add r4, r2, #0x0 - bl AllocFromHeap - mov r1, #0x0 - strb r1, [r0, #0x0] - strb r1, [r0, #0x1] - strb r1, [r0, #0x2] - strb r1, [r0, #0x3] - strb r1, [r0, #0x4] - strb r1, [r0, #0x5] - strb r1, [r0, #0x6] - strb r1, [r0, #0x7] - strb r1, [r0, #0x8] - strb r1, [r0, #0x9] - strb r1, [r0, #0xa] - strb r1, [r0, #0xb] - mov r1, #0x1 - strb r1, [r0, #0x9] - str r5, [r0, #0x0] - str r4, [r0, #0x4] - pop {r3-r5, pc} - - thumb_func_start FUN_02012974 -FUN_02012974: ; 0x02012974 - push {r4, lr} - add r4, r0, #0x0 - bne _0201297E - bl ErrorHandling -_0201297E: - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02012988 -FUN_02012988: ; 0x02012988 - push {r4, lr} - add r4, r0, #0x0 - bne _02012992 - bl ErrorHandling -_02012992: - ldrb r0, [r4, #0x8] - lsl r0, r0, #0x2 - ldr r0, [r4, r0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0201299C -FUN_0201299C: ; 0x0201299C - push {r4, lr} - add r4, r0, #0x0 - bne _020129A6 - bl ErrorHandling -_020129A6: - ldrb r1, [r4, #0x8] - mov r0, #0x1 - eor r0, r1 - lsl r0, r0, #0x2 - ldr r0, [r4, r0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020129B4 -FUN_020129B4: ; 0x020129B4 - cmp r0, #0x0 - beq _020129C6 - ldrb r1, [r0, #0x9] - cmp r1, #0x0 - beq _020129C6 - ldrb r2, [r0, #0x8] - mov r1, #0x1 - eor r1, r2 - strb r1, [r0, #0x8] -_020129C6: - bx lr - - thumb_func_start FUN_020129C8 -FUN_020129C8: ; 0x020129C8 - push {r3, lr} - mov r0, #0x0 - bl MI_StopDma - mov r0, #0x0 - bl MI_WaitDma - pop {r3, pc} - - thumb_func_start FUN_020129D8 -FUN_020129D8: ; 0x020129D8 - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - add r4, r2, #0x0 - cmp r3, #0x1 - bne _020129F2 - mov r0, #0x0 - add r1, r6, #0x0 - add r2, r5, #0x0 - add r3, r4, #0x0 - bl MI_HBlankDmaCopy32 - pop {r4-r6, pc} -_020129F2: - mov r0, #0x0 - add r1, r6, #0x0 - add r2, r5, #0x0 - add r3, r4, #0x0 - bl MI_HBlankDmaCopy16 - pop {r4-r6, pc} - - thumb_func_start FUN_02012A00 -FUN_02012A00: ; 0x02012A00 - push {r3-r5, lr} - ldr r1, _02012A2C ; =0x0000079C - add r5, r0, #0x0 - bl AllocFromHeap - ldr r2, _02012A2C ; =0x0000079C - mov r1, #0x0 - add r4, r0, #0x0 - bl memset - mov r2, #0x3 - lsl r2, r2, #0x8 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r4, r2 - bl FUN_02012944 - mov r1, #0x6 - lsl r1, r1, #0x8 - str r0, [r4, r1] - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 -_02012A2C: .word 0x0000079C - - thumb_func_start FUN_02012A30 -FUN_02012A30: ; 0x02012A30 - push {r3-r7, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - cmp r5, #0x0 - bne _02012A42 - bl ErrorHandling -_02012A42: - ldr r0, _02012AB0 ; =0x00000604 - ldr r0, [r5, r0] - cmp r0, #0x0 - beq _02012A4E - bl ErrorHandling -_02012A4E: - ldr r0, _02012AB4 ; =0x0000078C - mov r2, #0x0 - strb r4, [r5, r0] - add r1, r0, #0x1 - strb r6, [r5, r1] - add r1, r0, #0x0 - add r1, #0xc - strh r2, [r5, r1] - add r2, sp, #0x8 - mov r1, #0x14 - ldrsh r2, [r2, r1] - add r1, r0, #0x0 - add r1, #0xe - strh r2, [r5, r1] - add r1, r0, #0x4 - ldr r2, [sp, #0x20] - add r0, #0x8 - str r2, [r5, r1] - ldr r1, [sp, #0x24] - ldr r3, [sp, #0x18] - str r1, [r5, r0] - ldr r0, _02012AB8 ; =0x0000060C - mov r1, #0xc0 - add r0, r5, r0 - add r2, r7, #0x0 - bl FUN_02012B88 - ldr r0, _02012ABC ; =FUN_02012BE4 - ldr r2, [sp, #0x28] - add r1, r5, #0x0 - bl FUN_0200CA44 - ldr r1, _02012AB0 ; =0x00000604 - mov r2, #0x3 - str r0, [r5, r1] - ldr r0, _02012AC0 ; =0x00000794 - add r1, r5, #0x0 - ldr r0, [r5, r0] - lsl r2, r2, #0x8 - bl MIi_CpuClear32 - ldr r0, _02012AC0 ; =0x00000794 - mov r2, #0x3 - lsl r2, r2, #0x8 - ldr r0, [r5, r0] - add r1, r5, r2 - bl MIi_CpuClear32 - pop {r3-r7, pc} - .balign 4 -_02012AB0: .word 0x00000604 -_02012AB4: .word 0x0000078C -_02012AB8: .word 0x0000060C -_02012ABC: .word FUN_02012BE4 -_02012AC0: .word 0x00000794 - - thumb_func_start FUN_02012AC4 -FUN_02012AC4: ; 0x02012AC4 - push {r4, lr} - add r4, r0, #0x0 - bne _02012ACE - bl ErrorHandling -_02012ACE: - ldr r0, _02012AF8 ; =0x00000604 - ldr r0, [r4, r0] - cmp r0, #0x0 - beq _02012AF4 - bl FUN_0200CAB4 - ldr r0, _02012AF8 ; =0x00000604 - mov r1, #0x0 - str r1, [r4, r0] - sub r0, r0, #0x4 - ldr r0, [r4, r0] - bl FUN_02012988 - ldr r1, _02012AFC ; =0x00000794 - mov r2, #0x3 - ldr r1, [r4, r1] - lsl r2, r2, #0x8 - bl memset -_02012AF4: - pop {r4, pc} - nop -_02012AF8: .word 0x00000604 -_02012AFC: .word 0x00000794 - - thumb_func_start FUN_02012B00 -FUN_02012B00: ; 0x02012B00 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02012AC4 - bl FUN_02012C90 - mov r0, #0x6 - lsl r0, r0, #0x8 - ldr r0, [r4, r0] - bl FUN_02012974 - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02012B20 -FUN_02012B20: ; 0x02012B20 - mov r1, #0x6 - lsl r1, r1, #0x8 - ldr r3, _02012B2C ; =FUN_02012988 - ldr r0, [r0, r1] - bx r3 - nop -_02012B2C: .word FUN_02012988 - - thumb_func_start FUN_02012B30 -FUN_02012B30: ; 0x02012B30 - push {r4, lr} - add r4, r0, #0x0 - beq _02012B5E - ldr r0, _02012B60 ; =0x00000604 - ldr r1, [r4, r0] - cmp r1, #0x0 - beq _02012B5E - sub r0, r0, #0x4 - ldr r0, [r4, r0] - bl FUN_020129B4 - mov r0, #0x6 - lsl r0, r0, #0x8 - ldr r0, [r4, r0] - bl FUN_02012988 - add r1, r0, #0x0 - ldr r0, _02012B64 ; =0x00000794 - mov r2, #0x3 - ldr r0, [r4, r0] - lsl r2, r2, #0x8 - bl MIi_CpuClear32 -_02012B5E: - pop {r4, pc} - .balign 4 -_02012B60: .word 0x00000604 -_02012B64: .word 0x00000794 - - thumb_func_start FUN_02012B68 -FUN_02012B68: ; 0x02012B68 - push {r4, lr} - add r4, r0, #0x0 - beq _02012B80 - ldr r0, _02012B84 ; =0x00000604 - ldr r0, [r4, r0] - cmp r0, #0x0 - beq _02012B80 - bl FUN_02012C90 - add r0, r4, #0x0 - bl FUN_02012C98 -_02012B80: - pop {r4, pc} - nop -_02012B84: .word 0x00000604 - - thumb_func_start FUN_02012B88 -FUN_02012B88: ; 0x02012B88 - push {r4-r7, lr} - sub sp, #0xc - mov r4, #0x0 - add r7, r1, #0x0 - add r5, r0, #0x0 - add r6, r4, #0x0 - str r2, [sp, #0x0] - cmp r7, #0x0 - bls _02012BD6 - asr r0, r3, #0x1f - str r3, [sp, #0x4] - str r0, [sp, #0x8] -_02012BA0: - asr r0, r4, #0x4 - lsl r1, r0, #0x2 - ldr r0, _02012BDC ; =UNK_020FFA38 - ldr r2, [sp, #0x4] - ldrsh r0, [r0, r1] - ldr r3, [sp, #0x8] - asr r1, r0, #0x1f - bl _ll_mul - mov r2, #0x2 - lsl r2, r2, #0xa - add r0, r0, r2 - ldr r2, _02012BE0 ; =0x00000000 - adc r1, r2 - lsl r1, r1, #0x14 - lsr r0, r0, #0xc - orr r0, r1 - asr r0, r0, #0xc - strh r0, [r5, #0x0] - ldr r0, [sp, #0x0] - add r6, r6, #0x1 - add r0, r4, r0 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r5, r5, #0x2 - cmp r6, r7 - blo _02012BA0 -_02012BD6: - add sp, #0xc - pop {r4-r7, pc} - nop -_02012BDC: .word UNK_020FFA38 -_02012BE0: .word 0x00000000 - - thumb_func_start FUN_02012BE4 -FUN_02012BE4: ; 0x02012BE4 - push {r3-r7, lr} - mov r0, #0x6 - add r6, r1, #0x0 - lsl r0, r0, #0x8 - ldr r0, [r6, r0] - bl FUN_02012988 - add r5, r0, #0x0 - ldr r0, _02012C80 ; =0x00000798 - mov r1, #0x64 - ldrsh r0, [r6, r0] - bl _s32_div_f - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - ldr r0, _02012C84 ; =0x0000078C - ldrb r4, [r6, r0] - add r0, r0, #0x1 - ldrb r0, [r6, r0] - cmp r4, r0 - bgt _02012C4C - lsl r0, r4, #0x2 - add r5, r5, r0 -_02012C12: - ldr r2, [r5, #0x0] - lsl r0, r2, #0x10 - asr r7, r0, #0x10 - lsl r0, r3, #0x1 - add r1, r6, r0 - ldr r0, _02012C88 ; =0x0000060C - ldrsh r0, [r1, r0] - add r0, r7, r0 - lsl r0, r0, #0x10 - asr r1, r0, #0x10 - lsr r0, r2, #0x10 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - lsr r1, r1, #0x10 - orr r0, r1 - stmia r5!, {r0} - add r0, r3, #0x1 - mov r1, #0xc0 - bl _s32_div_f - lsl r0, r1, #0x18 - lsr r3, r0, #0x18 - ldr r0, _02012C8C ; =0x0000078D - add r4, r4, #0x1 - ldrb r0, [r6, r0] - cmp r4, r0 - ble _02012C12 -_02012C4C: - ldr r1, _02012C80 ; =0x00000798 - add r0, r1, #0x2 - ldrsh r2, [r6, r1] - ldrsh r0, [r6, r0] - add r4, r6, r1 - add r0, r2, r0 - strh r0, [r4, #0x0] - ldrsh r0, [r6, r1] - mov r1, #0x4b - lsl r1, r1, #0x8 - cmp r0, r1 - blt _02012C70 - mov r0, #0x0 - ldrsh r0, [r4, r0] - bl _s32_div_f - strh r1, [r4, #0x0] - pop {r3-r7, pc} -_02012C70: - cmp r0, #0x0 - bge _02012C7C - mov r0, #0x0 - ldrsh r0, [r4, r0] - add r0, r0, r1 - strh r0, [r4, #0x0] -_02012C7C: - pop {r3-r7, pc} - nop -_02012C80: .word 0x00000798 -_02012C84: .word 0x0000078C -_02012C88: .word 0x0000060C -_02012C8C: .word 0x0000078D - - thumb_func_start FUN_02012C90 -FUN_02012C90: ; 0x02012C90 - ldr r3, _02012C94 ; =FUN_020129C8 - bx r3 - .balign 4 -_02012C94: .word FUN_020129C8 - - thumb_func_start FUN_02012C98 -FUN_02012C98: ; 0x02012C98 - push {r3-r5, lr} - add r4, r0, #0x0 - bne _02012CA2 - bl ErrorHandling -_02012CA2: - mov r0, #0x6 - lsl r0, r0, #0x8 - ldr r0, [r4, r0] - bl FUN_0201299C - mov r1, #0x3 - lsl r1, r1, #0x8 - add r5, r0, #0x0 - bl DC_FlushRange - mov r1, #0x79 - lsl r1, r1, #0x4 - ldr r1, [r4, r1] - add r0, r5, #0x0 - mov r2, #0x4 - mov r3, #0x1 - bl FUN_020129D8 - pop {r3-r5, pc} diff --git a/arm9/asm/unk_02012004.s b/arm9/asm/unk_02012004.s new file mode 100644 index 00000000..042302c6 --- /dev/null +++ b/arm9/asm/unk_02012004.s @@ -0,0 +1,787 @@ + .include "asm/macros.inc" + .include "global.inc" + + .rodata + + .global UNK_020ED3B0 +UNK_020ED3B0: ; 0x020ED3B0 + .word 0x00000147 + .word 0x000001EF + + .global UNK_020ED3B8 +UNK_020ED3B8: ; 0x020ED3B8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + + .global UNK_020ED3C8 +UNK_020ED3C8: ; 0x020ED3C8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + + .global UNK_020ED3D8 +UNK_020ED3D8: ; 0x020ED3D8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global UNK_020ED438 +UNK_020ED438: ; 0x020ED438 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .text + + thumb_func_start FUN_02012004 +FUN_02012004: ; 0x02012004 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + ldr r6, [sp, #0x20] + str r1, [sp, #0x4] + add r5, r2, #0x0 + add r4, r3, #0x0 + str r0, [sp, #0x24] + mov r7, #0x0 +_02012018: + ldr r1, [r4, #0x0] + ldr r0, [sp, #0x4] + ldr r2, [r5, #0x0] + add r0, r0, r1 + ldr r1, [sp, #0x0] + add r1, r1, r2 + add r2, r6, #0x0 + bl memcpy + ldr r1, [r5, #0x0] + ldr r0, [sp, #0x24] + add r7, r7, #0x1 + add r0, r1, r0 + str r0, [r5, #0x0] + ldr r0, [r4, #0x0] + add r0, r0, r6 + str r0, [r4, #0x0] + cmp r7, #0x8 + blt _02012018 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02012044 +FUN_02012044: ; 0x02012044 + push {r4-r6, lr} + add r5, r3, #0x0 + bl AllocAndReadWholeNarcMemberByIdPair + add r4, r0, #0x0 + bne _02012054 + bl ErrorHandling +_02012054: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020B0088 + add r6, r0, #0x0 + cmp r5, #0x0 + bne _02012066 + bl ErrorHandling +_02012066: + cmp r6, #0x0 + bne _0201206E + bl ErrorHandling +_0201206E: + add r0, r4, #0x0 + bl FreeToHeap + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02012078 +FUN_02012078: ; 0x02012078 + push {r4-r7, lr} + sub sp, #0x2c + ldr r4, [sp, #0x40] + str r0, [sp, #0x8] + add r6, r0, r2 + ldrh r0, [r4, #0x2] + str r1, [sp, #0xc] + add r5, r3, #0x0 + cmp r0, r6 + bge _02012090 + bl ErrorHandling +_02012090: + ldr r0, [sp, #0xc] + ldrh r1, [r4, #0x0] + add r0, r0, r5 + str r0, [sp, #0x14] + cmp r1, r0 + bge _020120A0 + bl ErrorHandling +_020120A0: + ldr r0, [r4, #0x14] + str r0, [sp, #0x20] + ldr r0, [sp, #0x44] + str r0, [sp, #0x1c] + ldrh r0, [r4, #0x2] + lsl r7, r0, #0x2 + ldr r0, [sp, #0xc] + add r1, r0, #0x0 + mul r1, r7 + ldr r0, [sp, #0x8] + str r1, [sp, #0x18] + lsl r1, r0, #0x2 + ldr r0, [sp, #0x18] + str r1, [sp, #0x10] + add r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x0 + str r0, [sp, #0x24] + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bge _0201210A +_020120CC: + ldr r4, [sp, #0x8] + add r0, r4, #0x0 + cmp r0, r6 + bge _020120F8 + ldr r0, [sp, #0x18] + lsl r1, r0, #0x3 + ldr r0, [sp, #0x10] + add r5, r0, r1 +_020120DC: + str r5, [sp, #0x28] + mov r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + add r2, sp, #0x28 + add r3, sp, #0x24 + str r7, [sp, #0x4] + bl FUN_02012004 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r6 + blt _020120DC +_020120F8: + ldr r0, [sp, #0x18] + add r0, r0, r7 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r1, r0, #0x1 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + blt _020120CC +_0201210A: + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02012110 +FUN_02012110: ; 0x02012110 + push {r4-r5} + sub sp, #0x8 + ldr r2, _02012148 ; =UNK_020ED3B0 + add r1, sp, #0x0 + ldr r3, [r2, #0x0] + ldr r2, [r2, #0x4] + str r3, [sp, #0x0] + str r2, [sp, #0x4] + ldr r2, _0201214C ; =0x000001EF + mov r5, #0x0 + add r3, r2, #0x0 +_02012126: + ldr r4, [r1, #0x0] + cmp r4, r3 + beq _02012140 + cmp r4, r0 + bne _02012138 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r5} + bx lr +_02012138: + add r5, r5, #0x1 + add r1, r1, #0x4 + cmp r5, r2 + blt _02012126 +_02012140: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r5} + bx lr + .balign 4 +_02012148: .word UNK_020ED3B0 +_0201214C: .word 0x000001EF + + thumb_func_start FUN_02012150 +FUN_02012150: ; 0x02012150 + push {r3-r4, lr} + sub sp, #0xc + add r4, r3, #0x0 + mov r3, #0x0 + str r3, [sp, #0x8] + add r3, sp, #0x8 + bl FUN_02012044 + ldr r0, [sp, #0x8] + ldr r0, [r0, #0x14] + bl FUN_02008A74 + ldr r0, [sp, #0x34] + bl FUN_02012110 + ldr r1, [sp, #0x30] + cmp r1, #0x2 + bne _02012184 + cmp r0, #0x1 + bne _02012184 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x28] + ldr r0, [r0, #0x14] + ldr r2, [sp, #0x2c] + bl FUN_02008904 +_02012184: + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x18] + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x1c] + str r0, [sp, #0x4] + ldr r3, [sp, #0x20] + add r0, r4, #0x0 + bl FUN_02012078 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0201219C +FUN_0201219C: ; 0x0201219C + push {r4-r7, lr} + sub sp, #0x24 + add r7, r1, #0x0 + add r5, r2, #0x0 + ldr r2, [sp, #0x3c] + ldr r1, [sp, #0x40] + add r6, r0, #0x0 + mul r1, r2 + add r0, r5, #0x0 + lsl r1, r1, #0x5 + str r3, [sp, #0x20] + bl AllocFromHeap + add r4, r0, #0x0 + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x20] + str r0, [sp, #0x0] + ldr r0, [sp, #0x3c] + add r1, r7, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x40] + add r2, r5, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x44] + str r4, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x48] + str r0, [sp, #0x14] + ldr r0, [sp, #0x4c] + str r0, [sp, #0x18] + ldr r0, [sp, #0x50] + str r0, [sp, #0x1c] + add r0, r6, #0x0 + bl FUN_02012150 + add r0, r4, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + + thumb_func_start FUN_020121E8 +FUN_020121E8: ; 0x020121E8 + push {r3-r7, lr} + sub sp, #0x30 + str r3, [sp, #0x8] + ldr r3, [sp, #0x48] + str r3, [sp, #0x48] + mov r3, #0x0 + str r3, [sp, #0x2c] + bl AllocAndReadWholeNarcMemberByIdPair + str r0, [sp, #0x20] + cmp r0, #0x0 + bne _02012204 + bl ErrorHandling +_02012204: + ldr r0, [sp, #0x20] + add r1, sp, #0x2c + bl FUN_020B0088 + cmp r0, #0x0 + bne _02012214 + bl ErrorHandling +_02012214: + ldr r1, [sp, #0x4c] + ldr r0, [sp, #0x8] + add r6, r0, r1 + ldr r0, [sp, #0x2c] + ldrh r0, [r0, #0x2] + cmp r0, r6 + bge _02012226 + bl ErrorHandling +_02012226: + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x48] + add r0, r0, r1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x2c] + ldrh r1, [r0, #0x0] + ldr r0, [sp, #0x10] + cmp r1, r0 + bge _0201223C + bl ErrorHandling +_0201223C: + ldr r0, [sp, #0x2c] + ldr r0, [r0, #0x14] + str r0, [sp, #0x1c] + bl FUN_02008A74 + ldr r0, [sp, #0x54] + str r0, [sp, #0x18] + ldr r0, [sp, #0x2c] + ldrh r0, [r0, #0x2] + lsl r7, r0, #0x2 + ldr r0, [sp, #0x48] + add r1, r0, #0x0 + mul r1, r7 + ldr r0, [sp, #0x8] + str r1, [sp, #0x14] + lsl r1, r0, #0x2 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + add r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x0 + str r0, [sp, #0x24] + ldr r1, [sp, #0x48] + ldr r0, [sp, #0x10] + cmp r1, r0 + bge _020122AE +_02012270: + ldr r4, [sp, #0x8] + add r0, r4, #0x0 + cmp r0, r6 + bge _0201229C + ldr r0, [sp, #0x14] + lsl r1, r0, #0x3 + ldr r0, [sp, #0xc] + add r5, r0, r1 +_02012280: + str r5, [sp, #0x28] + mov r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, sp, #0x28 + add r3, sp, #0x24 + str r7, [sp, #0x4] + bl FUN_02012004 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r6 + blt _02012280 +_0201229C: + ldr r0, [sp, #0x14] + add r0, r0, r7 + str r0, [sp, #0x14] + ldr r0, [sp, #0x48] + add r1, r0, #0x1 + ldr r0, [sp, #0x10] + str r1, [sp, #0x48] + cmp r1, r0 + blt _02012270 +_020122AE: + ldr r0, [sp, #0x20] + bl FreeToHeap + add sp, #0x30 + pop {r3-r7, pc} + + thumb_func_start FUN_020122B8 +FUN_020122B8: ; 0x020122B8 + push {r4-r7, lr} + sub sp, #0x14 + add r7, r1, #0x0 + add r5, r2, #0x0 + ldr r2, [sp, #0x2c] + ldr r1, [sp, #0x30] + add r6, r0, #0x0 + mul r1, r2 + add r0, r5, #0x0 + lsl r1, r1, #0x5 + str r3, [sp, #0x10] + bl AllocFromHeap + add r4, r0, #0x0 + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x10] + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + add r1, r7, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x30] + add r2, r5, #0x0 + str r0, [sp, #0x8] + add r0, r6, #0x0 + str r4, [sp, #0xc] + bl FUN_020121E8 + add r0, r4, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_020122F4 +FUN_020122F4: ; 0x020122F4 + push {r3-r7, lr} + sub sp, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x44] + ldr r1, [sp, #0x38] + str r0, [sp, #0x18] + ldr r0, [sp, #0x48] + str r2, [sp, #0x4] + str r0, [sp, #0x14] + add r0, r2, #0x0 + add r7, r0, r1 + ldr r1, [sp, #0x3c] + add r0, r3, #0x0 + add r0, r0, r1 + add r1, r3, #0x0 + str r3, [sp, #0x8] + ldr r5, [sp, #0x40] + str r0, [sp, #0x10] + cmp r1, r0 + bge _0201236C + add r0, r3, #0x0 + lsl r0, r0, #0x5 + str r0, [sp, #0xc] + add r0, r2, #0x0 + lsl r0, r0, #0x5 + str r0, [sp, #0x1c] +_02012328: + ldr r6, [sp, #0x4] + add r0, r6, #0x0 + cmp r0, r7 + bge _0201235A + ldr r1, [sp, #0x0] + ldr r0, [sp, #0xc] + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [sp, #0x1c] + add r4, r0, r2 +_0201233C: + ldr r1, [r5, #0x0] + ldr r0, [sp, #0x14] + mov r2, #0x20 + add r0, r0, r1 + ldr r1, [sp, #0x18] + add r1, r1, r4 + bl memcpy + ldr r0, [r5, #0x0] + add r6, r6, #0x1 + add r0, #0x20 + str r0, [r5, #0x0] + add r4, #0x20 + cmp r6, r7 + blt _0201233C +_0201235A: + ldr r0, [sp, #0xc] + add r0, #0x20 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r1, r0, #0x1 + ldr r0, [sp, #0x10] + str r1, [sp, #0x8] + cmp r1, r0 + blt _02012328 +_0201236C: + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_02012370 +FUN_02012370: ; 0x02012370 + push {r3-r4, lr} + sub sp, #0x14 + add r4, r2, #0x0 + ldr r2, [r4, #0x8] + str r2, [sp, #0x0] + ldr r2, [r4, #0xc] + str r2, [sp, #0x4] + ldr r2, [sp, #0x20] + str r3, [sp, #0x8] + str r2, [sp, #0xc] + ldr r2, [sp, #0x24] + str r2, [sp, #0x10] + ldr r2, [r4, #0x0] + ldr r3, [r4, #0x4] + bl FUN_020122F4 + add sp, #0x14 + pop {r3-r4, pc} + + thumb_func_start FUN_02012394 +FUN_02012394: ; 0x02012394 + push {r4-r7, lr} + sub sp, #0x7c + str r0, [sp, #0xc] + ldr r0, [sp, #0x9c] + mov r12, r3 + add r5, r2, #0x0 + ldr r6, [sp, #0x94] + ldr r7, [sp, #0x98] + ldr r3, _020123FC ; =UNK_020ED3D8 + str r1, [sp, #0x10] + str r0, [sp, #0x9c] + add r2, sp, #0x1c + mov r4, #0xc +_020123AE: + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + sub r4, r4, #0x1 + bne _020123AE + mov r0, #0x0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r0, [sp, #0xc] + add r2, r5, #0x0 + mov r3, r12 + str r7, [sp, #0x8] + bl FUN_020122B8 + str r0, [sp, #0x14] + mov r4, #0x0 + add r5, sp, #0x1c +_020123D4: + ldr r0, [sp, #0x14] + add r1, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x9c] + add r2, r5, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r3, sp, #0x18 + bl FUN_02012370 + add r4, r4, #0x1 + add r5, #0x10 + cmp r4, #0x6 + blt _020123D4 + ldr r0, [sp, #0x14] + bl FreeToHeap + add sp, #0x7c + pop {r4-r7, pc} + nop +_020123FC: .word UNK_020ED3D8 + + thumb_func_start FUN_02012400 +FUN_02012400: ; 0x02012400 + push {r4, lr} + sub sp, #0x10 + ldr r4, [r3, #0x4] + str r4, [sp, #0x0] + ldr r4, [r3, #0x8] + str r4, [sp, #0x4] + ldr r4, [r3, #0xc] + str r4, [sp, #0x8] + ldr r4, [sp, #0x18] + str r4, [sp, #0xc] + ldr r3, [r3, #0x0] + bl FUN_02012394 + add sp, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012420 +FUN_02012420: ; 0x02012420 + push {r4-r7, lr} + sub sp, #0x14 + ldr r4, _02012448 ; =UNK_020ED3B8 + add r5, r3, #0x0 + add r3, sp, #0x4 + add r7, r0, #0x0 + mov r12, r1 + add r6, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r7, #0x0 + mov r1, r12 + add r3, r6, #0x0 + str r5, [sp, #0x0] + bl FUN_02012400 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02012448: .word UNK_020ED3B8 + + thumb_func_start FUN_0201244C +FUN_0201244C: ; 0x0201244C + push {r3-r7, lr} + add r6, r1, #0x0 + mov r1, #0x32 + add r7, r2, #0x0 + add r5, r0, #0x0 + add r0, r7, #0x0 + lsl r1, r1, #0x6 + bl AllocFromHeap + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + add r3, r4, #0x0 + bl FUN_02012420 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02012470 +FUN_02012470: ; 0x02012470 + push {r3-r7, lr} + add r7, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r7, #0x0 + mov r1, #0x20 + bl AllocFromHeap + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl AllocAndReadWholeNarcMemberByIdPair + add r1, sp, #0x0 + add r5, r0, #0x0 + bl FUN_020B0138 + cmp r0, #0x1 + beq _0201249C + bl ErrorHandling +_0201249C: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0xc] + mov r2, #0x20 + bl MIi_CpuCopy16 + add r0, r5, #0x0 + bl FreeToHeap + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020124B4 +FUN_020124B4: ; 0x020124B4 + push {r4-r7, lr} + sub sp, #0x8c + str r0, [sp, #0x1c] + ldr r0, [sp, #0xac] + mov r12, r3 + add r5, r2, #0x0 + ldr r6, [sp, #0xa4] + ldr r7, [sp, #0xa8] + ldr r3, _0201252C ; =UNK_020ED438 + str r1, [sp, #0x20] + str r0, [sp, #0xac] + add r2, sp, #0x2c + mov r4, #0xc +_020124CE: + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + sub r4, r4, #0x1 + bne _020124CE + mov r0, #0x0 + str r0, [sp, #0x28] + ldr r0, [sp, #0xa0] + ldr r1, [sp, #0x20] + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r0, [sp, #0xb0] + str r7, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [sp, #0xb4] + add r2, r5, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0xb8] + mov r3, r12 + str r0, [sp, #0x14] + ldr r0, [sp, #0xbc] + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + bl FUN_0201219C + str r0, [sp, #0x24] + mov r4, #0x0 + add r5, sp, #0x2c +_02012504: + ldr r0, [sp, #0x24] + add r1, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0xac] + add r2, r5, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r3, sp, #0x28 + bl FUN_02012370 + add r4, r4, #0x1 + add r5, #0x10 + cmp r4, #0x6 + blt _02012504 + ldr r0, [sp, #0x24] + bl FreeToHeap + add sp, #0x8c + pop {r4-r7, pc} + nop +_0201252C: .word UNK_020ED438 + + thumb_func_start FUN_02012530 +FUN_02012530: ; 0x02012530 + push {r4, lr} + sub sp, #0x20 + ldr r4, [r3, #0x4] + str r4, [sp, #0x0] + ldr r4, [r3, #0x8] + str r4, [sp, #0x4] + ldr r4, [r3, #0xc] + str r4, [sp, #0x8] + ldr r4, [sp, #0x28] + str r4, [sp, #0xc] + ldr r4, [sp, #0x2c] + str r4, [sp, #0x10] + ldr r4, [sp, #0x30] + str r4, [sp, #0x14] + ldr r4, [sp, #0x34] + str r4, [sp, #0x18] + ldr r4, [sp, #0x38] + str r4, [sp, #0x1c] + ldr r3, [r3, #0x0] + bl FUN_020124B4 + add sp, #0x20 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012560 +FUN_02012560: ; 0x02012560 + push {r4-r7, lr} + sub sp, #0x24 + ldr r4, _02012598 ; =UNK_020ED3C8 + add r5, r3, #0x0 + add r3, sp, #0x14 + add r7, r0, #0x0 + mov r12, r1 + add r6, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [sp, #0x38] + str r5, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + mov r1, r12 + str r0, [sp, #0x8] + ldr r0, [sp, #0x40] + add r3, r6, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x44] + str r0, [sp, #0x10] + add r0, r7, #0x0 + bl FUN_02012530 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_02012598: .word UNK_020ED3C8 diff --git a/arm9/asm/unk_02012944.s b/arm9/asm/unk_02012944.s new file mode 100644 index 00000000..03ccc1ea --- /dev/null +++ b/arm9/asm/unk_02012944.s @@ -0,0 +1,471 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start FUN_02012944 +FUN_02012944: ; 0x02012944 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0xc + add r4, r2, #0x0 + bl AllocFromHeap + mov r1, #0x0 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + strb r1, [r0, #0x2] + strb r1, [r0, #0x3] + strb r1, [r0, #0x4] + strb r1, [r0, #0x5] + strb r1, [r0, #0x6] + strb r1, [r0, #0x7] + strb r1, [r0, #0x8] + strb r1, [r0, #0x9] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + mov r1, #0x1 + strb r1, [r0, #0x9] + str r5, [r0, #0x0] + str r4, [r0, #0x4] + pop {r3-r5, pc} + + thumb_func_start FUN_02012974 +FUN_02012974: ; 0x02012974 + push {r4, lr} + add r4, r0, #0x0 + bne _0201297E + bl ErrorHandling +_0201297E: + add r0, r4, #0x0 + bl FreeToHeap + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012988 +FUN_02012988: ; 0x02012988 + push {r4, lr} + add r4, r0, #0x0 + bne _02012992 + bl ErrorHandling +_02012992: + ldrb r0, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201299C +FUN_0201299C: ; 0x0201299C + push {r4, lr} + add r4, r0, #0x0 + bne _020129A6 + bl ErrorHandling +_020129A6: + ldrb r1, [r4, #0x8] + mov r0, #0x1 + eor r0, r1 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020129B4 +FUN_020129B4: ; 0x020129B4 + cmp r0, #0x0 + beq _020129C6 + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _020129C6 + ldrb r2, [r0, #0x8] + mov r1, #0x1 + eor r1, r2 + strb r1, [r0, #0x8] +_020129C6: + bx lr + + thumb_func_start FUN_020129C8 +FUN_020129C8: ; 0x020129C8 + push {r3, lr} + mov r0, #0x0 + bl MI_StopDma + mov r0, #0x0 + bl MI_WaitDma + pop {r3, pc} + + thumb_func_start FUN_020129D8 +FUN_020129D8: ; 0x020129D8 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + cmp r3, #0x1 + bne _020129F2 + mov r0, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + add r3, r4, #0x0 + bl MI_HBlankDmaCopy32 + pop {r4-r6, pc} +_020129F2: + mov r0, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + add r3, r4, #0x0 + bl MI_HBlankDmaCopy16 + pop {r4-r6, pc} + + thumb_func_start FUN_02012A00 +FUN_02012A00: ; 0x02012A00 + push {r3-r5, lr} + ldr r1, _02012A2C ; =0x0000079C + add r5, r0, #0x0 + bl AllocFromHeap + ldr r2, _02012A2C ; =0x0000079C + mov r1, #0x0 + add r4, r0, #0x0 + bl memset + mov r2, #0x3 + lsl r2, r2, #0x8 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r4, r2 + bl FUN_02012944 + mov r1, #0x6 + lsl r1, r1, #0x8 + str r0, [r4, r1] + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02012A2C: .word 0x0000079C + + thumb_func_start FUN_02012A30 +FUN_02012A30: ; 0x02012A30 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r5, #0x0 + bne _02012A42 + bl ErrorHandling +_02012A42: + ldr r0, _02012AB0 ; =0x00000604 + ldr r0, [r5, r0] + cmp r0, #0x0 + beq _02012A4E + bl ErrorHandling +_02012A4E: + ldr r0, _02012AB4 ; =0x0000078C + mov r2, #0x0 + strb r4, [r5, r0] + add r1, r0, #0x1 + strb r6, [r5, r1] + add r1, r0, #0x0 + add r1, #0xc + strh r2, [r5, r1] + add r2, sp, #0x8 + mov r1, #0x14 + ldrsh r2, [r2, r1] + add r1, r0, #0x0 + add r1, #0xe + strh r2, [r5, r1] + add r1, r0, #0x4 + ldr r2, [sp, #0x20] + add r0, #0x8 + str r2, [r5, r1] + ldr r1, [sp, #0x24] + ldr r3, [sp, #0x18] + str r1, [r5, r0] + ldr r0, _02012AB8 ; =0x0000060C + mov r1, #0xc0 + add r0, r5, r0 + add r2, r7, #0x0 + bl FUN_02012B88 + ldr r0, _02012ABC ; =FUN_02012BE4 + ldr r2, [sp, #0x28] + add r1, r5, #0x0 + bl FUN_0200CA44 + ldr r1, _02012AB0 ; =0x00000604 + mov r2, #0x3 + str r0, [r5, r1] + ldr r0, _02012AC0 ; =0x00000794 + add r1, r5, #0x0 + ldr r0, [r5, r0] + lsl r2, r2, #0x8 + bl MIi_CpuClear32 + ldr r0, _02012AC0 ; =0x00000794 + mov r2, #0x3 + lsl r2, r2, #0x8 + ldr r0, [r5, r0] + add r1, r5, r2 + bl MIi_CpuClear32 + pop {r3-r7, pc} + .balign 4 +_02012AB0: .word 0x00000604 +_02012AB4: .word 0x0000078C +_02012AB8: .word 0x0000060C +_02012ABC: .word FUN_02012BE4 +_02012AC0: .word 0x00000794 + + thumb_func_start FUN_02012AC4 +FUN_02012AC4: ; 0x02012AC4 + push {r4, lr} + add r4, r0, #0x0 + bne _02012ACE + bl ErrorHandling +_02012ACE: + ldr r0, _02012AF8 ; =0x00000604 + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02012AF4 + bl FUN_0200CAB4 + ldr r0, _02012AF8 ; =0x00000604 + mov r1, #0x0 + str r1, [r4, r0] + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02012988 + ldr r1, _02012AFC ; =0x00000794 + mov r2, #0x3 + ldr r1, [r4, r1] + lsl r2, r2, #0x8 + bl memset +_02012AF4: + pop {r4, pc} + nop +_02012AF8: .word 0x00000604 +_02012AFC: .word 0x00000794 + + thumb_func_start FUN_02012B00 +FUN_02012B00: ; 0x02012B00 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02012AC4 + bl FUN_02012C90 + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_02012974 + add r0, r4, #0x0 + bl FreeToHeap + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012B20 +FUN_02012B20: ; 0x02012B20 + mov r1, #0x6 + lsl r1, r1, #0x8 + ldr r3, _02012B2C ; =FUN_02012988 + ldr r0, [r0, r1] + bx r3 + nop +_02012B2C: .word FUN_02012988 + + thumb_func_start FUN_02012B30 +FUN_02012B30: ; 0x02012B30 + push {r4, lr} + add r4, r0, #0x0 + beq _02012B5E + ldr r0, _02012B60 ; =0x00000604 + ldr r1, [r4, r0] + cmp r1, #0x0 + beq _02012B5E + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_020129B4 + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_02012988 + add r1, r0, #0x0 + ldr r0, _02012B64 ; =0x00000794 + mov r2, #0x3 + ldr r0, [r4, r0] + lsl r2, r2, #0x8 + bl MIi_CpuClear32 +_02012B5E: + pop {r4, pc} + .balign 4 +_02012B60: .word 0x00000604 +_02012B64: .word 0x00000794 + + thumb_func_start FUN_02012B68 +FUN_02012B68: ; 0x02012B68 + push {r4, lr} + add r4, r0, #0x0 + beq _02012B80 + ldr r0, _02012B84 ; =0x00000604 + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02012B80 + bl FUN_02012C90 + add r0, r4, #0x0 + bl FUN_02012C98 +_02012B80: + pop {r4, pc} + nop +_02012B84: .word 0x00000604 + + thumb_func_start FUN_02012B88 +FUN_02012B88: ; 0x02012B88 + push {r4-r7, lr} + sub sp, #0xc + mov r4, #0x0 + add r7, r1, #0x0 + add r5, r0, #0x0 + add r6, r4, #0x0 + str r2, [sp, #0x0] + cmp r7, #0x0 + bls _02012BD6 + asr r0, r3, #0x1f + str r3, [sp, #0x4] + str r0, [sp, #0x8] +_02012BA0: + asr r0, r4, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02012BDC ; =UNK_020FFA38 + ldr r2, [sp, #0x4] + ldrsh r0, [r0, r1] + ldr r3, [sp, #0x8] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #0x2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02012BE0 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r0, r0, #0xc + strh r0, [r5, #0x0] + ldr r0, [sp, #0x0] + add r6, r6, #0x1 + add r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r5, r5, #0x2 + cmp r6, r7 + blo _02012BA0 +_02012BD6: + add sp, #0xc + pop {r4-r7, pc} + nop +_02012BDC: .word UNK_020FFA38 +_02012BE0: .word 0x00000000 + + thumb_func_start FUN_02012BE4 +FUN_02012BE4: ; 0x02012BE4 + push {r3-r7, lr} + mov r0, #0x6 + add r6, r1, #0x0 + lsl r0, r0, #0x8 + ldr r0, [r6, r0] + bl FUN_02012988 + add r5, r0, #0x0 + ldr r0, _02012C80 ; =0x00000798 + mov r1, #0x64 + ldrsh r0, [r6, r0] + bl _s32_div_f + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + ldr r0, _02012C84 ; =0x0000078C + ldrb r4, [r6, r0] + add r0, r0, #0x1 + ldrb r0, [r6, r0] + cmp r4, r0 + bgt _02012C4C + lsl r0, r4, #0x2 + add r5, r5, r0 +_02012C12: + ldr r2, [r5, #0x0] + lsl r0, r2, #0x10 + asr r7, r0, #0x10 + lsl r0, r3, #0x1 + add r1, r6, r0 + ldr r0, _02012C88 ; =0x0000060C + ldrsh r0, [r1, r0] + add r0, r7, r0 + lsl r0, r0, #0x10 + asr r1, r0, #0x10 + lsr r0, r2, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r1, #0x10 + orr r0, r1 + stmia r5!, {r0} + add r0, r3, #0x1 + mov r1, #0xc0 + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r3, r0, #0x18 + ldr r0, _02012C8C ; =0x0000078D + add r4, r4, #0x1 + ldrb r0, [r6, r0] + cmp r4, r0 + ble _02012C12 +_02012C4C: + ldr r1, _02012C80 ; =0x00000798 + add r0, r1, #0x2 + ldrsh r2, [r6, r1] + ldrsh r0, [r6, r0] + add r4, r6, r1 + add r0, r2, r0 + strh r0, [r4, #0x0] + ldrsh r0, [r6, r1] + mov r1, #0x4b + lsl r1, r1, #0x8 + cmp r0, r1 + blt _02012C70 + mov r0, #0x0 + ldrsh r0, [r4, r0] + bl _s32_div_f + strh r1, [r4, #0x0] + pop {r3-r7, pc} +_02012C70: + cmp r0, #0x0 + bge _02012C7C + mov r0, #0x0 + ldrsh r0, [r4, r0] + add r0, r0, r1 + strh r0, [r4, #0x0] +_02012C7C: + pop {r3-r7, pc} + nop +_02012C80: .word 0x00000798 +_02012C84: .word 0x0000078C +_02012C88: .word 0x0000060C +_02012C8C: .word 0x0000078D + + thumb_func_start FUN_02012C90 +FUN_02012C90: ; 0x02012C90 + ldr r3, _02012C94 ; =FUN_020129C8 + bx r3 + .balign 4 +_02012C94: .word FUN_020129C8 + + thumb_func_start FUN_02012C98 +FUN_02012C98: ; 0x02012C98 + push {r3-r5, lr} + add r4, r0, #0x0 + bne _02012CA2 + bl ErrorHandling +_02012CA2: + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_0201299C + mov r1, #0x3 + lsl r1, r1, #0x8 + add r5, r0, #0x0 + bl DC_FlushRange + mov r1, #0x79 + lsl r1, r1, #0x4 + ldr r1, [r4, r1] + add r0, r5, #0x0 + mov r2, #0x4 + mov r3, #0x1 + bl FUN_020129D8 + pop {r3-r5, pc} diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s index b77e441c..781d1d6d 100644 --- a/arm9/asm/unk_02012CC8.s +++ b/arm9/asm/unk_02012CC8.s @@ -1488,8 +1488,8 @@ _02013688: strh r0, [r4, #0x0] pop {r4, pc} - thumb_func_start FUN_02013690 -FUN_02013690: ; 0x02013690 + thumb_func_start ListMenuCursorNew +ListMenuCursorNew: ; 0x02013690 push {r3-r5, lr} mov r1, #0x8 add r5, r0, #0x0 @@ -1511,8 +1511,8 @@ _020136B2: _020136B8: .word 0x0001020F _020136BC: .word UNK_020ED548 - thumb_func_start FUN_020136C0 -FUN_020136C0: ; 0x020136C0 + thumb_func_start DestroyListMenuCursorObj +DestroyListMenuCursorObj: ; 0x020136C0 push {r4, lr} add r4, r0, #0x0 bne _020136CA @@ -1530,8 +1530,8 @@ _020136D8: _020136DE: pop {r4, pc} - thumb_func_start FUN_020136E0 -FUN_020136E0: ; 0x020136E0 + thumb_func_start ListMenuCursorSetColor +ListMenuCursorSetColor: ; 0x020136E0 push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 @@ -1546,8 +1546,8 @@ _020136F4: pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_020136F8 -FUN_020136F8: ; 0x020136F8 + thumb_func_start ListMenuUpdateCursorObj +ListMenuUpdateCursorObj: ; 0x020136F8 push {r4-r6, lr} sub sp, #0x10 add r6, r0, #0x0 diff --git a/arm9/asm/unk_02016B94.s b/arm9/asm/unk_02016B94.s deleted file mode 100644 index 3c92650d..00000000 --- a/arm9/asm/unk_02016B94.s +++ /dev/null @@ -1,9653 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020EDB30 -UNK_020EDB30: ; 0x020EDB30 - .byte 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 - - .global UNK_020EDB38 -UNK_020EDB38: ; 0x020EDB38 - .word FUN_020192D4 - .word FUN_02019358 - .word FUN_020192D4 - - .global UNK_020EDB44 -UNK_020EDB44: ; 0x020EDB44 - .word FUN_020195D0 - .word FUN_0201960C - .word FUN_020195D0 - - .global UNK_020EDB50 -UNK_020EDB50: ; 0x020EDB50 - .word FUN_020195A8 - .word FUN_020195E4 - .word FUN_020195A8 - - .global UNK_020EDB5C -UNK_020EDB5C: ; 0x020EDB5C - .word FUN_020194C8 - .word FUN_0201951C - .word FUN_020194C8 - - .global UNK_020EDB68 -UNK_020EDB68: ; 0x020EDB68 - .word FUN_0201949C - .word FUN_020194E0 - .word FUN_0201949C - - .global UNK_020EDB74 -UNK_020EDB74: ; 0x020EDB74 - .word FUN_020193B4 - .word FUN_02019444 - .word FUN_020193B4 - - .text - - thumb_func_start FUN_02016B94 -FUN_02016B94: ; 0x02016B94 - push {r3-r5, lr} - mov r1, #0x5a - lsl r1, r1, #0x2 - add r5, r0, #0x0 - bl AllocFromHeap - mov r2, #0x5a - mov r1, #0x0 - lsl r2, r2, #0x2 - add r4, r0, #0x0 - bl memset - str r5, [r4, #0x0] - mov r0, #0x0 - strh r0, [r4, #0x4] - strh r0, [r4, #0x6] - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02016BB8 -FUN_02016BB8: ; 0x02016BB8 - ldr r0, [r0, #0x0] - bx lr - - thumb_func_start FUN_02016BBC -FUN_02016BBC: ; 0x02016BBC - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - ldr r1, [r4, #0x4] - ldr r2, [r4, #0xc] - bl GX_SetGraphicsMode - ldr r0, [r4, #0x8] - bl GXS_SetGraphicsMode - mov r2, #0x1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0x0] - ldr r0, _02016BF0 ; =0xC7FFFFFF - and r1, r0 - str r1, [r2, #0x0] - ldr r1, [r2, #0x0] - asr r0, r0, #0x3 - and r0, r1 - str r0, [r2, #0x0] - bl GX_DisableEngineALayers - bl GX_DisableEngineBLayers - pop {r4, pc} - nop -_02016BF0: .word 0xC7FFFFFF - - thumb_func_start FUN_02016BF4 -FUN_02016BF4: ; 0x02016BF4 - push {r3, lr} - add r2, r0, #0x0 - cmp r1, #0x0 - bne _02016C0C - ldr r0, [r2, #0x0] - ldr r1, [r2, #0x4] - ldr r2, [r2, #0xc] - bl GX_SetGraphicsMode - bl GX_DisableEngineALayers - pop {r3, pc} -_02016C0C: - ldr r0, [r2, #0x8] - bl GXS_SetGraphicsMode - bl GX_DisableEngineBLayers - pop {r3, pc} - - thumb_func_start FUN_02016C18 -FUN_02016C18: ; 0x02016C18 - push {r3-r7, lr} - sub sp, #0x18 - str r1, [sp, #0x4] - str r3, [sp, #0x8] - add r4, r2, #0x0 - str r0, [sp, #0x0] - ldrb r0, [r4, #0x10] - ldr r1, [sp, #0x8] - bl FUN_020177DC - add r5, r0, #0x0 - ldr r0, [sp, #0x4] - cmp r0, #0x7 - bls _02016C36 - b _0201705A -_02016C36: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02016C42: ; jump table (using 16-bit offset) - .short _02016C52 - _02016C42 - 2; case 0 - .short _02016CAA - _02016C42 - 2; case 1 - .short _02016D02 - _02016C42 - 2; case 2 - .short _02016DA4 - _02016C42 - 2; case 3 - .short _02016E46 - _02016C42 - 2; case 4 - .short _02016E9E - _02016C42 - 2; case 5 - .short _02016EF6 - _02016C42 - 2; case 6 - .short _02016F98 - _02016C42 - 2; case 7 -_02016C52: - mov r0, #0x1 - add r1, r0, #0x0 - bl GX_EngineAToggleLayers - ldrb r3, [r4, #0x14] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x11] - ldrb r2, [r4, #0x13] - lsl r6, r3, #0xd - lsl r0, r0, #0x7 - lsl r3, r2, #0x2 - str r0, [sp, #0xc] - ldr r2, _02016FB4 ; =0x04000008 - lsl r7, r1, #0x8 - ldrh r1, [r2, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r1, r0 - ldr r0, [sp, #0xc] - orr r0, r1 - orr r0, r7 - orr r0, r3 - orr r0, r6 - strh r0, [r2, #0x0] - ldrh r1, [r2, #0x0] - mov r0, #0x3 - bic r1, r0 - ldrb r0, [r4, #0x15] - orr r0, r1 - strh r0, [r2, #0x0] - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _02016CA0 - ldrh r1, [r2, #0x0] - mov r0, #0x40 - orr r0, r1 - strh r0, [r2, #0x0] - b _0201705A -_02016CA0: - ldrh r1, [r2, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r2, #0x0] - b _0201705A -_02016CAA: - mov r0, #0x2 - mov r1, #0x1 - bl GX_EngineAToggleLayers - ldrb r3, [r4, #0x14] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x11] - ldrb r2, [r4, #0x13] - lsl r6, r3, #0xd - lsl r0, r0, #0x7 - lsl r3, r2, #0x2 - str r0, [sp, #0x10] - ldr r2, _02016FB8 ; =0x0400000A - lsl r7, r1, #0x8 - ldrh r1, [r2, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r1, r0 - ldr r0, [sp, #0x10] - orr r0, r1 - orr r0, r7 - orr r0, r3 - orr r0, r6 - strh r0, [r2, #0x0] - ldrh r1, [r2, #0x0] - mov r0, #0x3 - bic r1, r0 - ldrb r0, [r4, #0x15] - orr r0, r1 - strh r0, [r2, #0x0] - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _02016CF8 - ldrh r1, [r2, #0x0] - mov r0, #0x40 - orr r0, r1 - strh r0, [r2, #0x0] - b _0201705A -_02016CF8: - ldrh r1, [r2, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r2, #0x0] - b _0201705A -_02016D02: - mov r0, #0x4 - mov r1, #0x1 - bl GX_EngineAToggleLayers - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02016D18 - cmp r0, #0x1 - beq _02016D3A - cmp r0, #0x2 - beq _02016D5C -_02016D18: - ldrb r1, [r4, #0x12] - ldr r7, _02016FBC ; =0x0400000C - ldrb r2, [r4, #0x13] - lsl r3, r1, #0x8 - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrh r1, [r7, #0x0] - lsl r2, r0, #0x7 - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016D7C -_02016D3A: - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x16] - lsl r3, r2, #0x2 - ldr r7, _02016FBC ; =0x0400000C - lsl r2, r1, #0x8 - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016D7C -_02016D5C: - ldrb r1, [r4, #0x12] - ldr r7, _02016FBC ; =0x0400000C - ldrb r0, [r4, #0x16] - lsl r3, r1, #0x8 - ldrb r2, [r4, #0x13] - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - lsl r2, r2, #0x2 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] -_02016D7C: - ldr r0, _02016FBC ; =0x0400000C - mov r1, #0x3 - ldrh r2, [r0, #0x0] - bic r2, r1 - ldrb r1, [r4, #0x15] - orr r1, r2 - strh r1, [r0, #0x0] - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _02016D9A - ldrh r2, [r0, #0x0] - mov r1, #0x40 - orr r1, r2 - strh r1, [r0, #0x0] - b _0201705A -_02016D9A: - ldrh r2, [r0, #0x0] - mov r1, #0x40 - bic r2, r1 - strh r2, [r0, #0x0] - b _0201705A -_02016DA4: - mov r0, #0x8 - mov r1, #0x1 - bl GX_EngineAToggleLayers - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02016DBA - cmp r0, #0x1 - beq _02016DDC - cmp r0, #0x2 - beq _02016DFE -_02016DBA: - ldrb r1, [r4, #0x12] - ldr r7, _02016FC0 ; =0x0400000E - ldrb r2, [r4, #0x13] - lsl r3, r1, #0x8 - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrh r1, [r7, #0x0] - lsl r2, r0, #0x7 - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016E1E -_02016DDC: - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x16] - lsl r3, r2, #0x2 - ldr r7, _02016FC0 ; =0x0400000E - lsl r2, r1, #0x8 - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016E1E -_02016DFE: - ldrb r1, [r4, #0x12] - ldr r7, _02016FC0 ; =0x0400000E - ldrb r0, [r4, #0x16] - lsl r3, r1, #0x8 - ldrb r2, [r4, #0x13] - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - lsl r2, r2, #0x2 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] -_02016E1E: - ldr r0, _02016FC0 ; =0x0400000E - mov r1, #0x3 - ldrh r2, [r0, #0x0] - bic r2, r1 - ldrb r1, [r4, #0x15] - orr r1, r2 - strh r1, [r0, #0x0] - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _02016E3C - ldrh r2, [r0, #0x0] - mov r1, #0x40 - orr r1, r2 - strh r1, [r0, #0x0] - b _0201705A -_02016E3C: - ldrh r2, [r0, #0x0] - mov r1, #0x40 - bic r2, r1 - strh r2, [r0, #0x0] - b _0201705A -_02016E46: - mov r0, #0x1 - add r1, r0, #0x0 - bl GX_EngineBToggleLayers - ldrb r3, [r4, #0x14] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x11] - ldrb r2, [r4, #0x13] - lsl r6, r3, #0xd - lsl r0, r0, #0x7 - lsl r3, r2, #0x2 - str r0, [sp, #0x14] - ldr r2, _02016FC4 ; =0x04001008 - lsl r7, r1, #0x8 - ldrh r1, [r2, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r1, r0 - ldr r0, [sp, #0x14] - orr r0, r1 - orr r0, r7 - orr r0, r3 - orr r0, r6 - strh r0, [r2, #0x0] - ldrh r1, [r2, #0x0] - mov r0, #0x3 - bic r1, r0 - ldrb r0, [r4, #0x15] - orr r0, r1 - strh r0, [r2, #0x0] - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _02016E94 - ldrh r1, [r2, #0x0] - mov r0, #0x40 - orr r0, r1 - strh r0, [r2, #0x0] - b _0201705A -_02016E94: - ldrh r1, [r2, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r2, #0x0] - b _0201705A -_02016E9E: - mov r0, #0x2 - mov r1, #0x1 - bl GX_EngineBToggleLayers - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrb r3, [r4, #0x14] - lsl r0, r0, #0x7 - mov r12, r0 - ldr r2, _02016FC8 ; =0x0400100A - lsl r7, r1, #0x8 - ldrh r1, [r2, #0x0] - mov r0, #0x43 - lsl r3, r3, #0xd - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - mov r1, r12 - orr r0, r1 - orr r0, r7 - orr r0, r6 - orr r0, r3 - strh r0, [r2, #0x0] - ldrh r1, [r2, #0x0] - mov r0, #0x3 - bic r1, r0 - ldrb r0, [r4, #0x15] - orr r0, r1 - strh r0, [r2, #0x0] - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _02016EEC - ldrh r1, [r2, #0x0] - mov r0, #0x40 - orr r0, r1 - strh r0, [r2, #0x0] - b _0201705A -_02016EEC: - ldrh r1, [r2, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r2, #0x0] - b _0201705A -_02016EF6: - mov r0, #0x4 - mov r1, #0x1 - bl GX_EngineBToggleLayers - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02016F0C - cmp r0, #0x1 - beq _02016F2E - cmp r0, #0x2 - beq _02016F50 -_02016F0C: - ldrb r1, [r4, #0x12] - ldr r7, _02016FCC ; =0x0400100C - ldrb r2, [r4, #0x13] - lsl r3, r1, #0x8 - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrh r1, [r7, #0x0] - lsl r2, r0, #0x7 - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016F70 -_02016F2E: - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x16] - lsl r3, r2, #0x2 - ldr r7, _02016FCC ; =0x0400100C - lsl r2, r1, #0x8 - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02016F70 -_02016F50: - ldrb r1, [r4, #0x12] - ldr r7, _02016FCC ; =0x0400100C - ldrb r0, [r4, #0x16] - lsl r3, r1, #0x8 - ldrb r2, [r4, #0x13] - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - lsl r2, r2, #0x2 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] -_02016F70: - ldr r0, _02016FCC ; =0x0400100C - mov r1, #0x3 - ldrh r2, [r0, #0x0] - bic r2, r1 - ldrb r1, [r4, #0x15] - orr r1, r2 - strh r1, [r0, #0x0] - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _02016F8E - ldrh r2, [r0, #0x0] - mov r1, #0x40 - orr r1, r2 - strh r1, [r0, #0x0] - b _0201705A -_02016F8E: - ldrh r2, [r0, #0x0] - mov r1, #0x40 - bic r2, r1 - strh r2, [r0, #0x0] - b _0201705A -_02016F98: - mov r0, #0x8 - mov r1, #0x1 - bl GX_EngineBToggleLayers - ldr r0, [sp, #0x8] - cmp r0, #0x0 - beq _02016FAE - cmp r0, #0x1 - beq _02016FF2 - cmp r0, #0x2 - beq _02017014 -_02016FAE: - ldrb r1, [r4, #0x12] - ldr r7, _02016FD0 ; =0x0400100E - b _02016FD4 - .balign 4 -_02016FB4: .word 0x04000008 -_02016FB8: .word 0x0400000A -_02016FBC: .word 0x0400000C -_02016FC0: .word 0x0400000E -_02016FC4: .word 0x04001008 -_02016FC8: .word 0x0400100A -_02016FCC: .word 0x0400100C -_02016FD0: .word 0x0400100E -_02016FD4: - ldrb r2, [r4, #0x13] - lsl r3, r1, #0x8 - ldrb r0, [r4, #0x11] - lsl r6, r2, #0x2 - ldrh r1, [r7, #0x0] - lsl r2, r0, #0x7 - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02017034 -_02016FF2: - ldrb r2, [r4, #0x13] - ldrb r1, [r4, #0x12] - ldrb r0, [r4, #0x16] - lsl r3, r2, #0x2 - ldr r7, _020170F0 ; =0x0400100E - lsl r2, r1, #0x8 - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] - b _02017034 -_02017014: - ldrb r1, [r4, #0x12] - ldr r7, _020170F0 ; =0x0400100E - ldrb r0, [r4, #0x16] - lsl r3, r1, #0x8 - ldrb r2, [r4, #0x13] - lsl r6, r0, #0xd - ldrh r1, [r7, #0x0] - mov r0, #0x43 - lsl r2, r2, #0x2 - and r0, r1 - lsl r1, r5, #0xe - orr r0, r1 - orr r0, r2 - orr r0, r3 - orr r0, r6 - strh r0, [r7, #0x0] -_02017034: - ldr r0, _020170F0 ; =0x0400100E - mov r1, #0x3 - ldrh r2, [r0, #0x0] - bic r2, r1 - ldrb r1, [r4, #0x15] - orr r1, r2 - strh r1, [r0, #0x0] - ldr r1, [r4, #0x18] - cmp r1, #0x0 - beq _02017052 - ldrh r2, [r0, #0x0] - mov r1, #0x40 - orr r1, r2 - strh r1, [r0, #0x0] - b _0201705A -_02017052: - ldrh r2, [r0, #0x0] - mov r1, #0x40 - bic r2, r1 - strh r2, [r0, #0x0] -_0201705A: - ldr r0, [sp, #0x4] - mov r1, #0x2c - add r5, r0, #0x0 - ldr r0, [sp, #0x0] - mul r5, r1 - add r2, r0, r5 - mov r3, #0x0 - mov r0, #0x1 - strh r3, [r2, #0x20] - lsl r0, r0, #0xc - str r0, [r2, #0x24] - str r0, [r2, #0x28] - str r3, [r2, #0x2c] - str r3, [r2, #0x30] - ldr r1, [r4, #0x8] - cmp r1, #0x0 - beq _020170A2 - ldr r0, [sp, #0x0] - ldr r6, [sp, #0x0] - ldr r0, [r0, #0x0] - add r6, #0x8 - bl AllocFromHeap - str r0, [r6, r5] - ldr r1, [r6, r5] - ldr r2, [r4, #0x8] - mov r0, #0x0 - bl MIi_CpuClear16 - ldr r0, [sp, #0x0] - ldr r2, [r4, #0x8] - add r1, r0, r5 - str r2, [r1, #0xc] - ldr r0, [r4, #0xc] - str r0, [r1, #0x10] - b _020170A8 -_020170A2: - str r3, [r2, #0x8] - str r3, [r2, #0xc] - str r3, [r2, #0x10] -_020170A8: - ldr r0, [sp, #0x0] - ldrb r1, [r4, #0x10] - add r0, r0, r5 - strb r1, [r0, #0x1d] - ldr r1, [sp, #0x8] - strb r1, [r0, #0x1c] - ldrb r1, [r4, #0x11] - strb r1, [r0, #0x1e] - ldr r1, [sp, #0x8] - cmp r1, #0x0 - bne _020170CA - ldrb r1, [r4, #0x11] - cmp r1, #0x0 - bne _020170CA - mov r1, #0x20 - strb r1, [r0, #0x1f] - b _020170D2 -_020170CA: - ldr r0, [sp, #0x0] - mov r1, #0x40 - add r0, r0, r5 - strb r1, [r0, #0x1f] -_020170D2: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - ldr r3, [r4, #0x0] - mov r2, #0x0 - bl FUN_020179E0 - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - ldr r3, [r4, #0x4] - mov r2, #0x3 - bl FUN_020179E0 - add sp, #0x18 - pop {r3-r7, pc} - nop -_020170F0: .word 0x0400100E - - thumb_func_start FUN_020170F4 -FUN_020170F4: ; 0x020170F4 - push {r3-r7, lr} - sub sp, #0x20 - add r4, r1, #0x0 - add r5, r0, #0x0 - add r1, r2, #0x0 - add r0, r3, #0x0 - cmp r1, #0x0 - bne _0201710C - mov r2, #0x2c - mul r2, r4 - add r2, r5, r2 - strb r0, [r2, #0x1e] -_0201710C: - cmp r4, #0x7 - bls _02017112 - b _020177C4 -_02017112: - add r2, r4, r4 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0201711E: ; jump table (using 16-bit offset) - .short _0201712E - _0201711E - 2; case 0 - .short _0201719A - _0201711E - 2; case 1 - .short _02017206 - _0201711E - 2; case 2 - .short _0201733A - _0201711E - 2; case 3 - .short _0201746E - _0201711E - 2; case 4 - .short _020174F4 - _0201711E - 2; case 5 - .short _02017560 - _0201711E - 2; case 6 - .short _02017694 - _0201711E - 2; case 7 -_0201712E: - ldr r2, _02017480 ; =0x04000008 - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x1e] - bne _0201714A - ldrh r3, [r2, #0x1e] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x1e] - b _0201715C -_0201714A: - cmp r1, #0x2 - bne _0201715C - ldrh r3, [r2, #0x1e] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x1e] -_0201715C: - add r0, sp, #0x0 - ldrh r3, [r0, #0x1e] - add sp, #0x20 - lsl r0, r3, #0x12 - lsr r6, r0, #0x1f - lsl r0, r3, #0x1a - lsr r2, r0, #0x1c - lsl r0, r3, #0x13 - lsr r1, r0, #0x1b - mov r0, #0x2c - mul r0, r4 - add r0, r5, r0 - lsl r3, r3, #0x10 - lsr r5, r3, #0x1e - lsl r3, r2, #0x2 - ldrb r0, [r0, #0x1e] - lsl r2, r1, #0x8 - lsl r4, r6, #0xd - lsl r1, r0, #0x7 - ldr r0, _02017480 ; =0x04000008 - mov r6, #0x43 - ldrh r7, [r0, #0x0] - lsl r5, r5, #0xe - and r6, r7 - orr r5, r6 - orr r1, r5 - orr r1, r2 - orr r1, r3 - orr r1, r4 - strh r1, [r0, #0x0] - pop {r3-r7, pc} -_0201719A: - ldr r2, _02017488 ; =0x0400000A - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x1c] - bne _020171B6 - ldrh r3, [r2, #0x1c] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x1c] - b _020171C8 -_020171B6: - cmp r1, #0x2 - bne _020171C8 - ldrh r3, [r2, #0x1c] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x1c] -_020171C8: - add r0, sp, #0x0 - ldrh r3, [r0, #0x1c] - add sp, #0x20 - lsl r0, r3, #0x12 - lsr r6, r0, #0x1f - lsl r0, r3, #0x1a - lsr r2, r0, #0x1c - lsl r0, r3, #0x13 - lsr r1, r0, #0x1b - mov r0, #0x2c - mul r0, r4 - add r0, r5, r0 - lsl r3, r3, #0x10 - lsr r5, r3, #0x1e - lsl r3, r2, #0x2 - ldrb r0, [r0, #0x1e] - lsl r2, r1, #0x8 - lsl r4, r6, #0xd - lsl r1, r0, #0x7 - ldr r0, _02017488 ; =0x0400000A - mov r6, #0x43 - ldrh r7, [r0, #0x0] - lsl r5, r5, #0xe - and r6, r7 - orr r5, r6 - orr r1, r5 - orr r1, r2 - orr r1, r3 - orr r1, r4 - strh r1, [r0, #0x0] - pop {r3-r7, pc} -_02017206: - mov r2, #0x2c - mul r2, r4 - add r3, r5, r2 - ldrb r3, [r3, #0x1c] - cmp r3, #0x0 - beq _0201721A - cmp r3, #0x1 - beq _0201727A - cmp r3, #0x2 - beq _020172DA -_0201721A: - ldr r3, _0201748C ; =0x0400000C - cmp r1, #0x1 - ldrh r4, [r3, #0x0] - add r3, sp, #0x0 - strh r4, [r3, #0x1a] - bne _02017236 - ldrh r4, [r3, #0x1a] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r4 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r3, #0x1a] - b _02017248 -_02017236: - cmp r1, #0x2 - bne _02017248 - ldrh r4, [r3, #0x1a] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r4, r1 - lsr r0, r0, #0x1a - orr r0, r4 - strh r0, [r3, #0x1a] -_02017248: - add r0, sp, #0x0 - ldrh r3, [r0, #0x1a] - add r2, r5, r2 - ldr r6, _0201748C ; =0x0400000C - lsl r0, r3, #0x1a - ldrb r4, [r2, #0x1e] - lsr r1, r0, #0x1c - lsl r0, r3, #0x13 - lsl r2, r3, #0x10 - lsr r3, r2, #0x1e - ldrh r5, [r6, #0x0] - lsr r0, r0, #0x1b - lsl r2, r1, #0x2 - lsl r1, r0, #0x8 - lsl r0, r4, #0x7 - mov r4, #0x43 - and r4, r5 - lsl r3, r3, #0xe - orr r3, r4 - orr r0, r3 - orr r0, r1 - orr r0, r2 - add sp, #0x20 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0201727A: - ldr r2, _0201748C ; =0x0400000C - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x18] - bne _02017296 - ldrh r3, [r2, #0x18] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x18] - b _020172A8 -_02017296: - cmp r1, #0x2 - bne _020172A8 - ldrh r3, [r2, #0x18] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x18] -_020172A8: - add r0, sp, #0x0 - ldrh r3, [r0, #0x18] - ldr r6, _0201748C ; =0x0400000C - add sp, #0x20 - lsl r1, r3, #0x13 - lsl r0, r3, #0x1a - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsr r0, r0, #0x1c - lsl r1, r0, #0x2 - lsl r0, r4, #0x8 - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_020172DA: - ldr r2, _0201748C ; =0x0400000C - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x16] - bne _020172F6 - ldrh r3, [r2, #0x16] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x16] - b _02017308 -_020172F6: - cmp r1, #0x2 - bne _02017308 - ldrh r3, [r2, #0x16] - mov r1, #0x38 - lsl r0, r0, #0x1d - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x16] -_02017308: - add r0, sp, #0x0 - ldrh r3, [r0, #0x16] - ldr r6, _0201748C ; =0x0400000C - add sp, #0x20 - lsl r1, r3, #0x13 - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r0, r3, #0x1a - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsl r1, r4, #0x8 - lsr r0, r0, #0x1d - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - lsl r0, r0, #0x2 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0201733A: - mov r2, #0x2c - mul r2, r4 - add r3, r5, r2 - ldrb r3, [r3, #0x1c] - cmp r3, #0x0 - beq _0201734E - cmp r3, #0x1 - beq _020173AE - cmp r3, #0x2 - beq _0201740E -_0201734E: - ldr r3, _02017490 ; =0x0400000E - cmp r1, #0x1 - ldrh r4, [r3, #0x0] - add r3, sp, #0x0 - strh r4, [r3, #0x14] - bne _0201736A - ldrh r4, [r3, #0x14] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r4 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r3, #0x14] - b _0201737C -_0201736A: - cmp r1, #0x2 - bne _0201737C - ldrh r4, [r3, #0x14] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r4, r1 - lsr r0, r0, #0x1a - orr r0, r4 - strh r0, [r3, #0x14] -_0201737C: - add r0, sp, #0x0 - ldrh r3, [r0, #0x14] - add r2, r5, r2 - ldr r6, _02017490 ; =0x0400000E - lsl r0, r3, #0x1a - ldrb r4, [r2, #0x1e] - lsr r1, r0, #0x1c - lsl r0, r3, #0x13 - lsl r2, r3, #0x10 - lsr r3, r2, #0x1e - ldrh r5, [r6, #0x0] - lsr r0, r0, #0x1b - lsl r2, r1, #0x2 - lsl r1, r0, #0x8 - lsl r0, r4, #0x7 - mov r4, #0x43 - and r4, r5 - lsl r3, r3, #0xe - orr r3, r4 - orr r0, r3 - orr r0, r1 - orr r0, r2 - add sp, #0x20 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_020173AE: - ldr r2, _02017490 ; =0x0400000E - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x12] - bne _020173CA - ldrh r3, [r2, #0x12] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x12] - b _020173DC -_020173CA: - cmp r1, #0x2 - bne _020173DC - ldrh r3, [r2, #0x12] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x12] -_020173DC: - add r0, sp, #0x0 - ldrh r3, [r0, #0x12] - ldr r6, _02017490 ; =0x0400000E - add sp, #0x20 - lsl r1, r3, #0x13 - lsl r0, r3, #0x1a - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsr r0, r0, #0x1c - lsl r1, r0, #0x2 - lsl r0, r4, #0x8 - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0201740E: - ldr r2, _02017490 ; =0x0400000E - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x10] - bne _0201742A - ldrh r3, [r2, #0x10] - ldr r1, _02017484 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x10] - b _0201743C -_0201742A: - cmp r1, #0x2 - bne _0201743C - ldrh r3, [r2, #0x10] - mov r1, #0x38 - lsl r0, r0, #0x1d - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x10] -_0201743C: - add r0, sp, #0x0 - ldrh r3, [r0, #0x10] - ldr r6, _02017490 ; =0x0400000E - add sp, #0x20 - lsl r1, r3, #0x13 - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r0, r3, #0x1a - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsl r1, r4, #0x8 - lsr r0, r0, #0x1d - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - lsl r0, r0, #0x2 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0201746E: - ldr r2, _02017494 ; =0x04001008 - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0xe] - bne _020174A4 - ldrh r3, [r2, #0xe] - ldr r1, _02017484 ; =0xFFFFE0FF - b _02017498 - .balign 4 -_02017480: .word 0x04000008 -_02017484: .word 0xFFFFE0FF -_02017488: .word 0x0400000A -_0201748C: .word 0x0400000C -_02017490: .word 0x0400000E -_02017494: .word 0x04001008 -_02017498: - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0xe] - b _020174B6 -_020174A4: - cmp r1, #0x2 - bne _020174B6 - ldrh r3, [r2, #0xe] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0xe] -_020174B6: - add r0, sp, #0x0 - ldrh r3, [r0, #0xe] - add sp, #0x20 - lsl r0, r3, #0x12 - lsr r6, r0, #0x1f - lsl r0, r3, #0x1a - lsr r2, r0, #0x1c - lsl r0, r3, #0x13 - lsr r1, r0, #0x1b - mov r0, #0x2c - mul r0, r4 - add r0, r5, r0 - lsl r3, r3, #0x10 - lsr r5, r3, #0x1e - lsl r3, r2, #0x2 - ldrb r0, [r0, #0x1e] - lsl r2, r1, #0x8 - lsl r4, r6, #0xd - lsl r1, r0, #0x7 - ldr r0, _020177C8 ; =0x04001008 - mov r6, #0x43 - ldrh r7, [r0, #0x0] - lsl r5, r5, #0xe - and r6, r7 - orr r5, r6 - orr r1, r5 - orr r1, r2 - orr r1, r3 - orr r1, r4 - strh r1, [r0, #0x0] - pop {r3-r7, pc} -_020174F4: - ldr r2, _020177CC ; =0x0400100A - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0xc] - bne _02017510 - ldrh r3, [r2, #0xc] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0xc] - b _02017522 -_02017510: - cmp r1, #0x2 - bne _02017522 - ldrh r3, [r2, #0xc] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0xc] -_02017522: - add r0, sp, #0x0 - ldrh r3, [r0, #0xc] - add sp, #0x20 - lsl r0, r3, #0x12 - lsr r6, r0, #0x1f - lsl r0, r3, #0x1a - lsr r2, r0, #0x1c - lsl r0, r3, #0x13 - lsr r1, r0, #0x1b - mov r0, #0x2c - mul r0, r4 - add r0, r5, r0 - lsl r3, r3, #0x10 - lsr r5, r3, #0x1e - lsl r3, r2, #0x2 - ldrb r0, [r0, #0x1e] - lsl r2, r1, #0x8 - lsl r4, r6, #0xd - lsl r1, r0, #0x7 - ldr r0, _020177CC ; =0x0400100A - mov r6, #0x43 - ldrh r7, [r0, #0x0] - lsl r5, r5, #0xe - and r6, r7 - orr r5, r6 - orr r1, r5 - orr r1, r2 - orr r1, r3 - orr r1, r4 - strh r1, [r0, #0x0] - pop {r3-r7, pc} -_02017560: - mov r2, #0x2c - mul r2, r4 - add r3, r5, r2 - ldrb r3, [r3, #0x1c] - cmp r3, #0x0 - beq _02017574 - cmp r3, #0x1 - beq _020175D4 - cmp r3, #0x2 - beq _02017634 -_02017574: - ldr r3, _020177D4 ; =0x0400100C - cmp r1, #0x1 - ldrh r4, [r3, #0x0] - add r3, sp, #0x0 - strh r4, [r3, #0xa] - bne _02017590 - ldrh r4, [r3, #0xa] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r4 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r3, #0xa] - b _020175A2 -_02017590: - cmp r1, #0x2 - bne _020175A2 - ldrh r4, [r3, #0xa] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r4, r1 - lsr r0, r0, #0x1a - orr r0, r4 - strh r0, [r3, #0xa] -_020175A2: - add r0, sp, #0x0 - ldrh r3, [r0, #0xa] - add r2, r5, r2 - ldr r6, _020177D4 ; =0x0400100C - lsl r0, r3, #0x1a - ldrb r4, [r2, #0x1e] - lsr r1, r0, #0x1c - lsl r0, r3, #0x13 - lsl r2, r3, #0x10 - lsr r3, r2, #0x1e - ldrh r5, [r6, #0x0] - lsr r0, r0, #0x1b - lsl r2, r1, #0x2 - lsl r1, r0, #0x8 - lsl r0, r4, #0x7 - mov r4, #0x43 - and r4, r5 - lsl r3, r3, #0xe - orr r3, r4 - orr r0, r3 - orr r0, r1 - orr r0, r2 - add sp, #0x20 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_020175D4: - ldr r2, _020177D4 ; =0x0400100C - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x8] - bne _020175F0 - ldrh r3, [r2, #0x8] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x8] - b _02017602 -_020175F0: - cmp r1, #0x2 - bne _02017602 - ldrh r3, [r2, #0x8] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x8] -_02017602: - add r0, sp, #0x0 - ldrh r3, [r0, #0x8] - ldr r6, _020177D4 ; =0x0400100C - add sp, #0x20 - lsl r1, r3, #0x13 - lsl r0, r3, #0x1a - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsr r0, r0, #0x1c - lsl r1, r0, #0x2 - lsl r0, r4, #0x8 - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_02017634: - ldr r2, _020177D4 ; =0x0400100C - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x6] - bne _02017650 - ldrh r3, [r2, #0x6] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x6] - b _02017662 -_02017650: - cmp r1, #0x2 - bne _02017662 - ldrh r3, [r2, #0x6] - mov r1, #0x38 - lsl r0, r0, #0x1d - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x6] -_02017662: - add r0, sp, #0x0 - ldrh r3, [r0, #0x6] - ldr r6, _020177D4 ; =0x0400100C - add sp, #0x20 - lsl r1, r3, #0x13 - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r0, r3, #0x1a - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsl r1, r4, #0x8 - lsr r0, r0, #0x1d - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - lsl r0, r0, #0x2 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_02017694: - mov r2, #0x2c - mul r2, r4 - add r3, r5, r2 - ldrb r3, [r3, #0x1c] - cmp r3, #0x0 - beq _020176A8 - cmp r3, #0x1 - beq _02017708 - cmp r3, #0x2 - beq _02017768 -_020176A8: - ldr r3, _020177D8 ; =0x0400100E - cmp r1, #0x1 - ldrh r4, [r3, #0x0] - add r3, sp, #0x0 - strh r4, [r3, #0x4] - bne _020176C4 - ldrh r4, [r3, #0x4] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r4 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r3, #0x4] - b _020176D6 -_020176C4: - cmp r1, #0x2 - bne _020176D6 - ldrh r4, [r3, #0x4] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r4, r1 - lsr r0, r0, #0x1a - orr r0, r4 - strh r0, [r3, #0x4] -_020176D6: - add r0, sp, #0x0 - ldrh r3, [r0, #0x4] - add r2, r5, r2 - ldr r6, _020177D8 ; =0x0400100E - lsl r0, r3, #0x1a - ldrb r4, [r2, #0x1e] - lsr r1, r0, #0x1c - lsl r0, r3, #0x13 - lsl r2, r3, #0x10 - lsr r3, r2, #0x1e - ldrh r5, [r6, #0x0] - lsr r0, r0, #0x1b - lsl r2, r1, #0x2 - lsl r1, r0, #0x8 - lsl r0, r4, #0x7 - mov r4, #0x43 - and r4, r5 - lsl r3, r3, #0xe - orr r3, r4 - orr r0, r3 - orr r0, r1 - orr r0, r2 - add sp, #0x20 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_02017708: - ldr r2, _020177D8 ; =0x0400100E - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x2] - bne _02017724 - ldrh r3, [r2, #0x2] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x2] - b _02017736 -_02017724: - cmp r1, #0x2 - bne _02017736 - ldrh r3, [r2, #0x2] - mov r1, #0x3c - lsl r0, r0, #0x1c - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x2] -_02017736: - add r0, sp, #0x0 - ldrh r3, [r0, #0x2] - ldr r6, _020177D8 ; =0x0400100E - add sp, #0x20 - lsl r1, r3, #0x13 - lsl r0, r3, #0x1a - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsr r0, r0, #0x1c - lsl r1, r0, #0x2 - lsl r0, r4, #0x8 - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_02017768: - ldr r2, _020177D8 ; =0x0400100E - cmp r1, #0x1 - ldrh r3, [r2, #0x0] - add r2, sp, #0x0 - strh r3, [r2, #0x0] - bne _02017784 - ldrh r3, [r2, #0x0] - ldr r1, _020177D0 ; =0xFFFFE0FF - lsl r0, r0, #0x1b - and r1, r3 - lsr r0, r0, #0x13 - orr r0, r1 - strh r0, [r2, #0x0] - b _02017796 -_02017784: - cmp r1, #0x2 - bne _02017796 - ldrh r3, [r2, #0x0] - mov r1, #0x38 - lsl r0, r0, #0x1d - bic r3, r1 - lsr r0, r0, #0x1a - orr r0, r3 - strh r0, [r2, #0x0] -_02017796: - add r0, sp, #0x0 - ldrh r3, [r0, #0x0] - ldr r6, _020177D8 ; =0x0400100E - lsl r1, r3, #0x13 - lsr r4, r1, #0x1b - lsl r1, r3, #0x12 - lsr r2, r1, #0x1f - lsl r0, r3, #0x1a - lsl r1, r3, #0x10 - lsr r3, r1, #0x1e - lsl r1, r4, #0x8 - lsr r0, r0, #0x1d - ldrh r5, [r6, #0x0] - mov r4, #0x43 - lsl r3, r3, #0xe - and r4, r5 - lsl r0, r0, #0x2 - orr r3, r4 - orr r0, r3 - lsl r2, r2, #0xd - orr r0, r1 - orr r0, r2 - strh r0, [r6, #0x0] -_020177C4: - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 -_020177C8: .word 0x04001008 -_020177CC: .word 0x0400100A -_020177D0: .word 0xFFFFE0FF -_020177D4: .word 0x0400100C -_020177D8: .word 0x0400100E - - thumb_func_start FUN_020177DC -FUN_020177DC: ; 0x020177DC - cmp r1, #0x0 - beq _020177EA - cmp r1, #0x1 - beq _0201780A - cmp r1, #0x2 - beq _0201782A - b _0201784A -_020177EA: - cmp r0, #0x1 - bne _020177F2 - mov r0, #0x0 - bx lr -_020177F2: - cmp r0, #0x2 - bne _020177FA - mov r0, #0x2 - bx lr -_020177FA: - cmp r0, #0x3 - bne _02017802 - mov r0, #0x1 - bx lr -_02017802: - cmp r0, #0x4 - bne _0201784A - mov r0, #0x3 - bx lr -_0201780A: - cmp r0, #0x0 - bne _02017812 - mov r0, #0x0 - bx lr -_02017812: - cmp r0, #0x1 - bne _0201781A - mov r0, #0x1 - bx lr -_0201781A: - cmp r0, #0x4 - bne _02017822 - mov r0, #0x2 - bx lr -_02017822: - cmp r0, #0x5 - bne _0201784A - mov r0, #0x3 - bx lr -_0201782A: - cmp r0, #0x0 - bne _02017832 - mov r0, #0x0 - bx lr -_02017832: - cmp r0, #0x1 - bne _0201783A - mov r0, #0x1 - bx lr -_0201783A: - cmp r0, #0x4 - bne _02017842 - mov r0, #0x2 - bx lr -_02017842: - cmp r0, #0x5 - bne _0201784A - mov r0, #0x3 - bx lr -_0201784A: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start FUN_02017850 -FUN_02017850: ; 0x02017850 - cmp r0, #0x5 - bhi _0201789E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02017860: ; jump table (using 16-bit offset) - .short _0201786C - _02017860 - 2; case 0 - .short _02017874 - _02017860 - 2; case 1 - .short _0201787C - _02017860 - 2; case 2 - .short _02017886 - _02017860 - 2; case 3 - .short _02017890 - _02017860 - 2; case 4 - .short _02017898 - _02017860 - 2; case 5 -_0201786C: - mov r0, #0x10 - strb r0, [r1, #0x0] - strb r0, [r2, #0x0] - bx lr -_02017874: - mov r0, #0x20 - strb r0, [r1, #0x0] - strb r0, [r2, #0x0] - bx lr -_0201787C: - mov r0, #0x20 - strb r0, [r1, #0x0] - mov r0, #0x40 - strb r0, [r2, #0x0] - bx lr -_02017886: - mov r0, #0x40 - strb r0, [r1, #0x0] - mov r0, #0x20 - strb r0, [r2, #0x0] - bx lr -_02017890: - mov r0, #0x40 - strb r0, [r1, #0x0] - strb r0, [r2, #0x0] - bx lr -_02017898: - mov r0, #0x80 - strb r0, [r1, #0x0] - strb r0, [r2, #0x0] -_0201789E: - bx lr - - thumb_func_start FUN_020178A0 -FUN_020178A0: ; 0x020178A0 - push {r3-r5, lr} - add r4, r0, #0x0 - mov r2, #0x2c - add r5, r1, #0x0 - mul r5, r2 - add r4, #0x8 - ldr r0, [r4, r5] - cmp r0, #0x0 - beq _020178BA - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, r5] -_020178BA: - pop {r3-r5, pc} - - thumb_func_start FUN_020178BC -FUN_020178BC: ; 0x020178BC - cmp r0, #0x7 - bhi _0201795A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020178CC: ; jump table (using 16-bit offset) - .short _020178DC - _020178CC - 2; case 0 - .short _020178EC - _020178CC - 2; case 1 - .short _020178FC - _020178CC - 2; case 2 - .short _0201790C - _020178CC - 2; case 3 - .short _0201791C - _020178CC - 2; case 4 - .short _0201792C - _020178CC - 2; case 5 - .short _0201793C - _020178CC - 2; case 6 - .short _0201794C - _020178CC - 2; case 7 -_020178DC: - ldr r2, _0201795C ; =0x04000008 - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_020178EC: - ldr r2, _02017960 ; =0x0400000A - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_020178FC: - ldr r2, _02017964 ; =0x0400000C - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201790C: - ldr r2, _02017968 ; =0x0400000E - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201791C: - ldr r2, _0201796C ; =0x04001008 - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201792C: - ldr r2, _02017970 ; =0x0400100A - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201793C: - ldr r2, _02017974 ; =0x0400100C - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201794C: - ldr r2, _02017978 ; =0x0400100E - mov r0, #0x3 - ldrh r3, [r2, #0x0] - bic r3, r0 - add r0, r3, #0x0 - orr r0, r1 - strh r0, [r2, #0x0] -_0201795A: - bx lr - .balign 4 -_0201795C: .word 0x04000008 -_02017960: .word 0x0400000A -_02017964: .word 0x0400000C -_02017968: .word 0x0400000E -_0201796C: .word 0x04001008 -_02017970: .word 0x0400100A -_02017974: .word 0x0400100C -_02017978: .word 0x0400100E - - thumb_func_start FUN_0201797C -FUN_0201797C: ; 0x0201797C - push {r3, lr} - cmp r0, #0x7 - bhi _020179DC - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0201798E: ; jump table (using 16-bit offset) - .short _0201799E - _0201798E - 2; case 0 - .short _020179A6 - _0201798E - 2; case 1 - .short _020179AE - _0201798E - 2; case 2 - .short _020179B6 - _0201798E - 2; case 3 - .short _020179BE - _0201798E - 2; case 4 - .short _020179C6 - _0201798E - 2; case 5 - .short _020179CE - _0201798E - 2; case 6 - .short _020179D6 - _0201798E - 2; case 7 -_0201799E: - mov r0, #0x1 - bl GX_EngineAToggleLayers - pop {r3, pc} -_020179A6: - mov r0, #0x2 - bl GX_EngineAToggleLayers - pop {r3, pc} -_020179AE: - mov r0, #0x4 - bl GX_EngineAToggleLayers - pop {r3, pc} -_020179B6: - mov r0, #0x8 - bl GX_EngineAToggleLayers - pop {r3, pc} -_020179BE: - mov r0, #0x1 - bl GX_EngineBToggleLayers - pop {r3, pc} -_020179C6: - mov r0, #0x2 - bl GX_EngineBToggleLayers - pop {r3, pc} -_020179CE: - mov r0, #0x4 - bl GX_EngineBToggleLayers - pop {r3, pc} -_020179D6: - mov r0, #0x8 - bl GX_EngineBToggleLayers -_020179DC: - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020179E0 -FUN_020179E0: ; 0x020179E0 - push {r4-r6, lr} - add r5, r1, #0x0 - add r4, r0, #0x0 - mov r0, #0x2c - add r6, r5, #0x0 - mul r6, r0 - add r0, r4, #0x0 - add r0, #0x8 - add r1, r2, #0x0 - add r2, r3, #0x0 - add r0, r0, r6 - bl FUN_02017B8C - add r0, r4, r6 - ldr r1, [r0, #0x14] - ldr r0, [r0, #0x18] - cmp r5, #0x7 - bls _02017A06 - b _02017B1C -_02017A06: - add r2, r5, r5 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02017A12: ; jump table (using 16-bit offset) - .short _02017A22 - _02017A12 - 2; case 0 - .short _02017A38 - _02017A12 - 2; case 1 - .short _02017A4E - _02017A12 - 2; case 2 - .short _02017A78 - _02017A12 - 2; case 3 - .short _02017AA2 - _02017A12 - 2; case 4 - .short _02017AB8 - _02017A12 - 2; case 5 - .short _02017ACE - _02017A12 - 2; case 6 - .short _02017AF6 - _02017A12 - 2; case 7 -_02017A22: - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B24 ; =0x04000010 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017A38: - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B28 ; =0x04000014 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017A4E: - add r2, r4, #0x0 - add r2, #0x74 - ldrb r2, [r2, #0x0] - cmp r2, #0x0 - bne _02017A6E - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B2C ; =0x04000018 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017A6E: - add r0, r4, #0x0 - mov r1, #0x2 - bl FUN_02017C6C - pop {r4-r6, pc} -_02017A78: - add r2, r4, #0x0 - add r2, #0xa0 - ldrb r2, [r2, #0x0] - cmp r2, #0x0 - bne _02017A98 - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B30 ; =0x0400001C - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017A98: - add r0, r4, #0x0 - mov r1, #0x3 - bl FUN_02017C6C - pop {r4-r6, pc} -_02017AA2: - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B34 ; =0x04001010 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017AB8: - ldr r2, _02017B20 ; =0x000001FF - add r3, r1, #0x0 - lsl r1, r0, #0x10 - lsl r0, r2, #0x10 - and r3, r2 - and r0, r1 - add r1, r3, #0x0 - orr r1, r0 - ldr r0, _02017B38 ; =0x04001014 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017ACE: - mov r2, #0x49 - lsl r2, r2, #0x2 - ldrb r3, [r4, r2] - cmp r3, #0x0 - bne _02017AEC - add r2, #0xdb - and r2, r1 - lsl r1, r0, #0x10 - ldr r0, _02017B3C ; =0x01FF0000 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _02017B40 ; =0x04001018 - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017AEC: - add r0, r4, #0x0 - mov r1, #0x6 - bl FUN_02017C6C - pop {r4-r6, pc} -_02017AF6: - mov r2, #0x15 - lsl r2, r2, #0x4 - ldrb r3, [r4, r2] - cmp r3, #0x0 - bne _02017B14 - add r2, #0xaf - and r2, r1 - lsl r1, r0, #0x10 - ldr r0, _02017B3C ; =0x01FF0000 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _02017B44 ; =0x0400101C - str r1, [r0, #0x0] - pop {r4-r6, pc} -_02017B14: - add r0, r4, #0x0 - mov r1, #0x7 - bl FUN_02017C6C -_02017B1C: - pop {r4-r6, pc} - nop -_02017B20: .word 0x000001FF -_02017B24: .word 0x04000010 -_02017B28: .word 0x04000014 -_02017B2C: .word 0x04000018 -_02017B30: .word 0x0400001C -_02017B34: .word 0x04001010 -_02017B38: .word 0x04001014 -_02017B3C: .word 0x01FF0000 -_02017B40: .word 0x04001018 -_02017B44: .word 0x0400101C - - thumb_func_start FUN_02017B48 -FUN_02017B48: ; 0x02017B48 - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldr r0, [r0, #0x14] - bx lr - .balign 4 - - thumb_func_start FUN_02017B54 -FUN_02017B54: ; 0x02017B54 - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldr r0, [r0, #0x18] - bx lr - .balign 4 - - thumb_func_start FUN_02017B60 -FUN_02017B60: ; 0x02017B60 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x0 - mov r0, #0x2c - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0x0 - add r2, r3, #0x0 - bl FUN_02017B8C - ldr r0, [sp, #0x18] - ldr r2, [sp, #0x10] - str r0, [sp, #0x0] - ldr r3, [sp, #0x14] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02017BD0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02017B8C -FUN_02017B8C: ; 0x02017B8C - cmp r1, #0x5 - bhi _02017BCE - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02017B9C: ; jump table (using 16-bit offset) - .short _02017BA8 - _02017B9C - 2; case 0 - .short _02017BAC - _02017B9C - 2; case 1 - .short _02017BB4 - _02017B9C - 2; case 2 - .short _02017BBC - _02017B9C - 2; case 3 - .short _02017BC0 - _02017B9C - 2; case 4 - .short _02017BC8 - _02017B9C - 2; case 5 -_02017BA8: - str r2, [r0, #0xc] - bx lr -_02017BAC: - ldr r1, [r0, #0xc] - add r1, r1, r2 - str r1, [r0, #0xc] - bx lr -_02017BB4: - ldr r1, [r0, #0xc] - sub r1, r1, r2 - str r1, [r0, #0xc] - bx lr -_02017BBC: - str r2, [r0, #0x10] - bx lr -_02017BC0: - ldr r1, [r0, #0x10] - add r1, r1, r2 - str r1, [r0, #0x10] - bx lr -_02017BC8: - ldr r1, [r0, #0x10] - sub r1, r1, r2 - str r1, [r0, #0x10] -_02017BCE: - bx lr - - thumb_func_start FUN_02017BD0 -FUN_02017BD0: ; 0x02017BD0 - push {r3-r5, lr} - sub sp, #0x8 - add r4, r1, #0x0 - add r1, r2, #0x0 - add r2, r3, #0x0 - ldr r3, [sp, #0x18] - cmp r4, #0x7 - bhi _02017C58 - add r5, r4, r4 - add r5, pc - ldrh r5, [r5, #0x6] - lsl r5, r5, #0x10 - asr r5, r5, #0x10 - add pc, r5 -_02017BEC: ; jump table (using 16-bit offset) - .short _02017C58 - _02017BEC - 2; case 0 - .short _02017C58 - _02017BEC - 2; case 1 - .short _02017BFC - _02017BEC - 2; case 2 - .short _02017C14 - _02017BEC - 2; case 3 - .short _02017C58 - _02017BEC - 2; case 4 - .short _02017C58 - _02017BEC - 2; case 5 - .short _02017C2C - _02017BEC - 2; case 6 - .short _02017C44 - _02017BEC - 2; case 7 -_02017BFC: - mov r5, #0x2c - mul r5, r4 - add r4, r0, r5 - ldr r0, [r4, #0x14] - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldr r0, _02017C5C ; =0x04000020 - bl G2x_SetBGyAffine_ - add sp, #0x8 - pop {r3-r5, pc} -_02017C14: - mov r5, #0x2c - mul r5, r4 - add r4, r0, r5 - ldr r0, [r4, #0x14] - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldr r0, _02017C60 ; =0x04000030 - bl G2x_SetBGyAffine_ - add sp, #0x8 - pop {r3-r5, pc} -_02017C2C: - mov r5, #0x2c - mul r5, r4 - add r4, r0, r5 - ldr r0, [r4, #0x14] - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldr r0, _02017C64 ; =0x04001020 - bl G2x_SetBGyAffine_ - add sp, #0x8 - pop {r3-r5, pc} -_02017C44: - mov r5, #0x2c - mul r5, r4 - add r4, r0, r5 - ldr r0, [r4, #0x14] - str r0, [sp, #0x0] - ldr r0, [r4, #0x18] - str r0, [sp, #0x4] - ldr r0, _02017C68 ; =0x04001030 - bl G2x_SetBGyAffine_ -_02017C58: - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_02017C5C: .word 0x04000020 -_02017C60: .word 0x04000030 -_02017C64: .word 0x04001020 -_02017C68: .word 0x04001030 - - thumb_func_start FUN_02017C6C -FUN_02017C6C: ; 0x02017C6C - push {r4-r5, lr} - sub sp, #0x14 - mov r2, #0x1 - lsl r2, r2, #0xc - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r1, #0x0 - add r0, sp, #0x4 - add r3, r2, #0x0 - str r1, [sp, #0x0] - bl MTX22_2DAffine - mov r3, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, sp, #0x4 - str r3, [sp, #0x0] - bl FUN_02017BD0 - add sp, #0x14 - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_02017C98 -FUN_02017C98: ; 0x02017C98 - push {r3-r5, lr} - cmp r2, #0x0 - bne _02017CA4 - bl MI_UncompressLZ8 - pop {r3-r5, pc} -_02017CA4: - mov r4, #0x3 - add r3, r0, #0x0 - tst r3, r4 - bne _02017CCA - add r3, r1, #0x0 - tst r3, r4 - bne _02017CCA - lsl r3, r2, #0x10 - lsr r3, r3, #0x10 - lsr r4, r3, #0x1f - lsl r5, r3, #0x1e - sub r5, r5, r4 - mov r3, #0x1e - ror r5, r3 - add r3, r4, r5 - bne _02017CCA - bl MIi_CpuCopy32 - pop {r3-r5, pc} -_02017CCA: - bl MIi_CpuCopy16 - pop {r3-r5, pc} - - thumb_func_start FUN_02017CD0 -FUN_02017CD0: ; 0x02017CD0 - push {r3, lr} - mov r2, #0x2c - mul r2, r1 - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02017CE8 -FUN_02017CE8: ; 0x02017CE8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - str r3, [sp, #0x0] - cmp r3, #0x0 - bne _02017D56 - mov r0, #0x2c - add r7, r4, #0x0 - mul r7, r0 - add r0, r5, r7 - ldr r0, [r0, #0x8] - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _02017D26 - ldr r1, [sp, #0x4] - add r0, r6, #0x0 - add r2, r3, #0x0 - bl FUN_02017C98 - add r3, r5, r7 - ldr r2, [r3, #0x10] - ldr r1, [sp, #0x4] - ldr r3, [r3, #0xc] - add r0, r4, #0x0 - lsl r2, r2, #0x1 - bl FUN_02017D68 - add sp, #0x8 - pop {r3-r7, pc} -_02017D26: - ldr r0, [r6, #0x0] - lsr r7, r0, #0x8 - ldr r0, [r5, #0x0] - add r1, r7, #0x0 - bl AllocFromHeapAtEnd - add r5, r0, #0x0 - ldr r2, [sp, #0x0] - add r0, r6, #0x0 - add r1, r5, #0x0 - bl FUN_02017C98 - ldr r2, [sp, #0x20] - add r0, r4, #0x0 - add r1, r5, #0x0 - lsl r2, r2, #0x1 - add r3, r7, #0x0 - bl FUN_02017D68 - add r0, r5, #0x0 - bl FreeToHeap - add sp, #0x8 - pop {r3-r7, pc} -_02017D56: - ldr r2, [sp, #0x20] - add r0, r4, #0x0 - add r1, r6, #0x0 - lsl r2, r2, #0x1 - bl FUN_02017D68 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02017D68 -FUN_02017D68: ; 0x02017D68 - push {r3-r7, lr} - add r4, r1, #0x0 - add r6, r3, #0x0 - add r7, r0, #0x0 - add r0, r4, #0x0 - add r1, r6, #0x0 - add r5, r2, #0x0 - bl DC_FlushRange - cmp r7, #0x7 - bhi _02017DF8 - add r0, r7, r7 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02017D8A: ; jump table (using 16-bit offset) - .short _02017D9A - _02017D8A - 2; case 0 - .short _02017DA6 - _02017D8A - 2; case 1 - .short _02017DB2 - _02017D8A - 2; case 2 - .short _02017DBE - _02017D8A - 2; case 3 - .short _02017DCA - _02017D8A - 2; case 4 - .short _02017DD6 - _02017D8A - 2; case 5 - .short _02017DE2 - _02017D8A - 2; case 6 - .short _02017DEE - _02017D8A - 2; case 7 -_02017D9A: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG0Scr - pop {r3-r7, pc} -_02017DA6: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG1Scr - pop {r3-r7, pc} -_02017DB2: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG2Scr - pop {r3-r7, pc} -_02017DBE: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG3Scr - pop {r3-r7, pc} -_02017DCA: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG0Scr - pop {r3-r7, pc} -_02017DD6: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG1Scr - pop {r3-r7, pc} -_02017DE2: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG2Scr - pop {r3-r7, pc} -_02017DEE: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG3Scr -_02017DF8: - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02017DFC -FUN_02017DFC: ; 0x02017DFC - push {r4, lr} - add r4, r0, #0x0 - add r0, r2, #0x0 - mov r2, #0x2c - mul r2, r1 - add r1, r4, r2 - ldr r1, [r1, #0x8] - add r2, r3, #0x0 - bl FUN_02017C98 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02017E14 -FUN_02017E14: ; 0x02017E14 - push {r3-r4, lr} - sub sp, #0x4 - mov r4, #0x2c - mul r4, r1 - add r4, r0, r4 - ldrb r4, [r4, #0x1e] - cmp r4, #0x0 - bne _02017E32 - ldr r4, [sp, #0x10] - lsl r4, r4, #0x5 - str r4, [sp, #0x0] - bl FUN_02017E40 - add sp, #0x4 - pop {r3-r4, pc} -_02017E32: - ldr r4, [sp, #0x10] - lsl r4, r4, #0x6 - str r4, [sp, #0x0] - bl FUN_02017E40 - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_02017E40 -FUN_02017E40: ; 0x02017E40 - push {r3-r7, lr} - add r7, r1, #0x0 - add r5, r2, #0x0 - str r3, [sp, #0x0] - cmp r3, #0x0 - bne _02017E78 - ldr r1, [r5, #0x0] - ldr r0, [r0, #0x0] - lsr r4, r1, #0x8 - add r1, r4, #0x0 - bl AllocFromHeapAtEnd - add r6, r0, #0x0 - ldr r2, [sp, #0x0] - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02017C98 - ldr r2, [sp, #0x18] - add r0, r7, #0x0 - add r1, r6, #0x0 - add r3, r4, #0x0 - bl FUN_02017E84 - add r0, r6, #0x0 - bl FreeToHeap - pop {r3-r7, pc} -_02017E78: - ldr r2, [sp, #0x18] - add r0, r7, #0x0 - add r1, r5, #0x0 - bl FUN_02017E84 - pop {r3-r7, pc} - - thumb_func_start FUN_02017E84 -FUN_02017E84: ; 0x02017E84 - push {r3-r7, lr} - add r4, r1, #0x0 - add r6, r3, #0x0 - add r7, r0, #0x0 - add r0, r4, #0x0 - add r1, r6, #0x0 - add r5, r2, #0x0 - bl DC_FlushRange - cmp r7, #0x7 - bhi _02017F14 - add r0, r7, r7 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02017EA6: ; jump table (using 16-bit offset) - .short _02017EB6 - _02017EA6 - 2; case 0 - .short _02017EC2 - _02017EA6 - 2; case 1 - .short _02017ECE - _02017EA6 - 2; case 2 - .short _02017EDA - _02017EA6 - 2; case 3 - .short _02017EE6 - _02017EA6 - 2; case 4 - .short _02017EF2 - _02017EA6 - 2; case 5 - .short _02017EFE - _02017EA6 - 2; case 6 - .short _02017F0A - _02017EA6 - 2; case 7 -_02017EB6: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG0Char - pop {r3-r7, pc} -_02017EC2: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG1Char - pop {r3-r7, pc} -_02017ECE: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG2Char - pop {r3-r7, pc} -_02017EDA: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GX_LoadBG3Char - pop {r3-r7, pc} -_02017EE6: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG0Char - pop {r3-r7, pc} -_02017EF2: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG1Char - pop {r3-r7, pc} -_02017EFE: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG2Char - pop {r3-r7, pc} -_02017F0A: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl GXS_LoadBG3Char -_02017F14: - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02017F18 -FUN_02017F18: ; 0x02017F18 - push {r3-r7, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - add r0, r3, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x0] - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - mov r1, #0x0 - add r2, r5, #0x0 - bl memset - add r0, r6, #0x0 - add r1, r4, #0x0 - add r2, r7, #0x0 - add r3, r5, #0x0 - bl FUN_02017E84 - ldr r0, [sp, #0x0] - add r1, r4, #0x0 - bl FUN_02016A8C - pop {r3-r7, pc} - - thumb_func_start FUN_02017F48 -FUN_02017F48: ; 0x02017F48 - push {r3-r7, lr} - sub sp, #0x8 - add r7, r1, #0x0 - add r4, r0, #0x0 - mov r1, #0x2c - add r6, r7, #0x0 - add r4, #0x1f - mul r6, r1 - ldrb r1, [r4, r6] - ldr r0, [r0, #0x0] - add r5, r2, #0x0 - mul r1, r3 - str r1, [sp, #0x0] - bl AllocFromHeapAtEnd - str r0, [sp, #0x4] - ldrb r0, [r4, r6] - cmp r0, #0x20 - bne _02017F82 - lsl r2, r5, #0xc - lsl r1, r5, #0x8 - lsl r0, r5, #0x4 - orr r1, r2 - orr r0, r1 - add r1, r5, #0x0 - orr r1, r0 - lsl r0, r1, #0x10 - add r5, r1, #0x0 - b _02017F8C -_02017F82: - lsl r2, r5, #0x18 - lsl r1, r5, #0x10 - lsl r0, r5, #0x8 - orr r1, r2 - orr r0, r1 -_02017F8C: - orr r5, r0 - ldr r1, [sp, #0x4] - ldr r2, [sp, #0x0] - add r0, r5, #0x0 - bl MIi_CpuClearFast - lsl r0, r7, #0x18 - ldrb r2, [r4, r6] - ldr r3, [sp, #0x20] - ldr r1, [sp, #0x4] - mul r2, r3 - ldr r3, [sp, #0x0] - lsr r0, r0, #0x18 - bl FUN_02017E84 - ldr r0, [sp, #0x4] - bl FreeToHeap - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02017FB4 -FUN_02017FB4: ; 0x02017FB4 - push {r3-r7, lr} - add r5, r1, #0x0 - add r4, r2, #0x0 - add r6, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r7, r3, #0x0 - bl DC_FlushRange - cmp r6, #0x4 - bhs _02017FD6 - add r0, r5, #0x0 - add r1, r7, #0x0 - add r2, r4, #0x0 - bl GX_LoadBGPltt - pop {r3-r7, pc} -_02017FD6: - add r0, r5, #0x0 - add r1, r7, #0x0 - add r2, r4, #0x0 - bl GXS_LoadBGPltt - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02017FE4 -FUN_02017FE4: ; 0x02017FE4 - push {r0-r3} - push {r3, lr} - add r1, sp, #0xc - mov r2, #0x2 - mov r3, #0x0 - bl FUN_02017FB4 - pop {r3} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 - - thumb_func_start FUN_02017FFC -FUN_02017FFC: ; 0x02017FFC - cmp r2, #0x5 - bhi _02018066 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0201800C: ; jump table (using 16-bit offset) - .short _02018018 - _0201800C - 2; case 0 - .short _02018022 - _0201800C - 2; case 1 - .short _02018022 - _0201800C - 2; case 2 - .short _0201802C - _0201800C - 2; case 3 - .short _02018042 - _0201800C - 2; case 4 - .short _02018064 - _0201800C - 2; case 5 -_02018018: - lsl r1, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr -_02018022: - lsl r1, r1, #0x5 - add r0, r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr -_0201802C: - mov r2, #0x1f - add r3, r0, #0x0 - and r3, r2 - mov r2, #0x1f - bic r0, r2 - add r0, r1, r0 - lsl r0, r0, #0x5 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr -_02018042: - asr r2, r1, #0x5 - asr r3, r0, #0x5 - lsl r2, r2, #0x1 - add r2, r3, r2 - lsl r2, r2, #0x10 - lsr r2, r2, #0x10 - lsl r2, r2, #0x1a - lsr r3, r2, #0x10 - mov r2, #0x1f - and r2, r0 - lsl r0, r1, #0x1b - lsr r0, r0, #0x16 - add r0, r2, r0 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr -_02018064: - mov r0, #0x0 -_02018066: - bx lr - - thumb_func_start FUN_02018068 -FUN_02018068: ; 0x02018068 - push {r3-r7} - sub sp, #0x4 - str r3, [sp, #0x0] - add r6, r2, #0x0 - ldr r5, [sp, #0x0] - add r4, r6, #0x0 - sub r4, #0x20 - sub r5, #0x20 - mov r2, #0x0 - lsl r4, r4, #0x10 - lsl r5, r5, #0x10 - add r3, r2, #0x0 - asr r4, r4, #0x10 - asr r7, r5, #0x10 - lsr r5, r0, #0x5 - beq _0201808E - add r2, r2, #0x1 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 -_0201808E: - lsr r5, r1, #0x5 - beq _02018098 - add r2, r2, #0x2 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 -_02018098: - cmp r2, #0x3 - bhi _02018140 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_020180A8: ; jump table (using 16-bit offset) - .short _020180B0 - _020180A8 - 2; case 0 - .short _020180CE - _020180A8 - 2; case 1 - .short _020180F4 - _020180A8 - 2; case 2 - .short _02018120 - _020180A8 - 2; case 3 -_020180B0: - cmp r4, #0x0 - blt _020180C0 - lsl r1, r1, #0x5 - add r0, r0, r1 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_020180C0: - add r2, r1, #0x0 - mul r2, r6 - add r0, r0, r2 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_020180CE: - cmp r7, #0x0 - blt _020180D8 - mov r2, #0x1 - lsl r2, r2, #0xa - b _020180DC -_020180D8: - ldr r2, [sp, #0x0] - lsl r2, r2, #0x5 -_020180DC: - add r2, r3, r2 - lsl r2, r2, #0x10 - lsr r3, r2, #0x10 - mov r2, #0x1f - and r2, r0 - add r0, r1, #0x0 - mul r0, r4 - add r0, r2, r0 - add r0, r3, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_020180F4: - lsl r2, r6, #0x5 - add r2, r3, r2 - lsl r2, r2, #0x10 - lsr r2, r2, #0x10 - cmp r4, #0x0 - blt _0201810E - lsl r1, r1, #0x1b - lsr r1, r1, #0x16 - add r0, r0, r1 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_0201810E: - mov r3, #0x1f - and r1, r3 - add r3, r1, #0x0 - mul r3, r6 - add r0, r0, r3 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - b _02018140 -_02018120: - add r2, r6, r7 - lsl r2, r2, #0x5 - add r2, r3, r2 - add r5, r0, #0x0 - mov r3, #0x1f - add r0, r1, #0x0 - and r0, r3 - add r1, r0, #0x0 - lsl r2, r2, #0x10 - and r5, r3 - mul r1, r4 - lsr r2, r2, #0x10 - add r0, r5, r1 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 -_02018140: - add r0, r3, #0x0 - add sp, #0x4 - pop {r3-r7} - bx lr - - thumb_func_start FUN_02018148 -FUN_02018148: ; 0x02018148 - push {r3-r6, lr} - sub sp, #0x1c - add r6, sp, #0x20 - ldrb r5, [r6, #0x14] - str r5, [sp, #0x0] - ldrb r4, [r6, #0x18] - str r4, [sp, #0x4] - str r2, [sp, #0x8] - mov r2, #0x0 - str r2, [sp, #0xc] - str r2, [sp, #0x10] - str r5, [sp, #0x14] - str r4, [sp, #0x18] - add r2, r3, #0x0 - ldrb r3, [r6, #0x10] - bl FUN_02018170 - add sp, #0x1c - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_02018170 -FUN_02018170: ; 0x02018170 - push {r4-r5, lr} - sub sp, #0x1c - add r4, r2, #0x0 - add r2, r3, #0x0 - mov r3, #0x2c - add r5, r1, #0x0 - mul r5, r3 - add r1, r0, r5 - ldrb r1, [r1, #0x1c] - add r3, sp, #0x18 - cmp r1, #0x1 - beq _020181BA - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldr r1, [sp, #0x30] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - add r1, sp, #0x38 - ldrb r1, [r1, #0x0] - str r1, [sp, #0xc] - add r1, sp, #0x3c - ldrb r1, [r1, #0x0] - str r1, [sp, #0x10] - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - str r1, [sp, #0x14] - mov r1, #0x0 - str r1, [sp, #0x18] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_02018268 - add sp, #0x1c - pop {r4-r5, pc} -_020181BA: - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldr r1, [sp, #0x30] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - add r1, sp, #0x38 - ldrb r1, [r1, #0x0] - str r1, [sp, #0xc] - add r1, sp, #0x3c - ldrb r1, [r1, #0x0] - str r1, [sp, #0x10] - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - str r1, [sp, #0x14] - mov r1, #0x0 - str r1, [sp, #0x18] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_020183DC - add sp, #0x1c - pop {r4-r5, pc} - - thumb_func_start FUN_020181EC -FUN_020181EC: ; 0x020181EC - push {r4-r5, lr} - sub sp, #0x1c - add r4, r2, #0x0 - add r2, r3, #0x0 - mov r3, #0x2c - add r5, r1, #0x0 - mul r5, r3 - add r1, r0, r5 - ldrb r1, [r1, #0x1c] - add r3, sp, #0x18 - cmp r1, #0x1 - beq _02018236 - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldr r1, [sp, #0x30] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - add r1, sp, #0x38 - ldrb r1, [r1, #0x0] - str r1, [sp, #0xc] - add r1, sp, #0x3c - ldrb r1, [r1, #0x0] - str r1, [sp, #0x10] - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - str r1, [sp, #0x14] - mov r1, #0x1 - str r1, [sp, #0x18] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_02018268 - add sp, #0x1c - pop {r4-r5, pc} -_02018236: - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldr r1, [sp, #0x30] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - add r1, sp, #0x38 - ldrb r1, [r1, #0x0] - str r1, [sp, #0xc] - add r1, sp, #0x3c - ldrb r1, [r1, #0x0] - str r1, [sp, #0x10] - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - str r1, [sp, #0x14] - mov r1, #0x1 - str r1, [sp, #0x18] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_020183DC - add sp, #0x1c - pop {r4-r5, pc} - - thumb_func_start FUN_02018268 -FUN_02018268: ; 0x02018268 - push {r4-r7, lr} - sub sp, #0x44 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - add r7, r0, #0x0 - ldr r0, [sp, #0x58] - add r6, r3, #0x0 - str r0, [sp, #0x58] - ldr r0, [sp, #0x5c] - ldr r4, [sp, #0x68] - str r0, [sp, #0x5c] - ldr r0, [sp, #0x6c] - str r0, [sp, #0x6c] - ldr r0, [r7, #0x0] - str r0, [sp, #0x2c] - cmp r0, #0x0 - bne _0201828C - b _020183D6 -_0201828C: - ldrb r0, [r7, #0x15] - add r1, sp, #0x40 - add r1, #0x1 - add r2, sp, #0x40 - bl FUN_02017850 - add r0, sp, #0x70 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0201833A - mov r0, #0x0 - str r0, [sp, #0x28] - ldr r0, [sp, #0x58] - cmp r0, #0x0 - bls _020182CA - add r1, sp, #0x48 - ldrb r0, [r1, #0x1c] - str r0, [sp, #0x1c] - ldrb r0, [r1, #0x18] - str r0, [sp, #0x18] - lsl r1, r0, #0x1 - ldr r0, [sp, #0x5c] - add r0, r0, r1 - str r0, [sp, #0x14] -_020182BC: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x28] - add r0, r1, r0 - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - cmp r0, r1 - blt _020182CC -_020182CA: - b _020183D6 -_020182CC: - ldr r2, [sp, #0x1c] - ldr r1, [sp, #0x28] - add r2, r2, r1 - ldr r1, [sp, #0x6c] - cmp r2, r1 - bge _020183D6 - mov r5, #0x0 - cmp r6, #0x0 - bls _02018326 - add r1, r4, #0x0 - mul r1, r2 - lsl r2, r1, #0x1 - ldr r1, [sp, #0x14] - lsl r0, r0, #0x18 - add r1, r1, r2 - lsr r0, r0, #0x18 - str r1, [sp, #0x10] - str r0, [sp, #0x30] -_020182F0: - add r1, sp, #0x40 - ldr r0, [sp, #0x0] - ldrb r1, [r1, #0x1] - add r0, r0, r5 - cmp r0, r1 - bge _02018326 - ldr r1, [sp, #0x18] - add r1, r1, r5 - cmp r1, r4 - bge _02018326 - ldrb r2, [r7, #0x15] - lsl r0, r0, #0x18 - ldr r1, [sp, #0x30] - lsr r0, r0, #0x18 - bl FUN_02017FFC - ldr r1, [sp, #0x10] - lsl r2, r5, #0x1 - ldrh r1, [r1, r2] - lsl r2, r0, #0x1 - ldr r0, [sp, #0x2c] - strh r1, [r0, r2] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r6 - blo _020182F0 -_02018326: - ldr r0, [sp, #0x28] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - str r1, [sp, #0x28] - ldr r0, [sp, #0x58] - cmp r1, r0 - blo _020182BC - add sp, #0x44 - pop {r4-r7, pc} -_0201833A: - mov r0, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x58] - cmp r0, #0x0 - bls _020183D6 - add r1, sp, #0x48 - ldrb r0, [r1, #0x1c] - str r0, [sp, #0x24] - ldrb r0, [r1, #0x18] - str r0, [sp, #0x20] -_0201834E: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - add r1, r1, r0 - add r0, sp, #0x40 - ldrb r0, [r0, #0x0] - cmp r1, r0 - bge _020183D6 - ldr r2, [sp, #0x24] - ldr r0, [sp, #0x8] - add r0, r2, r0 - ldr r2, [sp, #0x6c] - cmp r0, r2 - bge _020183D6 - mov r5, #0x0 - cmp r6, #0x0 - bls _020183C6 - lsl r1, r1, #0x18 - lsl r0, r0, #0x18 - lsr r1, r1, #0x18 - lsr r0, r0, #0x18 - str r1, [sp, #0x34] - str r0, [sp, #0x3c] -_0201837A: - add r1, sp, #0x40 - ldr r0, [sp, #0x0] - ldrb r1, [r1, #0x1] - add r0, r0, r5 - cmp r0, r1 - bge _020183C6 - ldr r1, [sp, #0x20] - add r1, r1, r5 - str r1, [sp, #0xc] - cmp r1, r4 - bge _020183C6 - ldrb r2, [r7, #0x15] - lsl r0, r0, #0x18 - ldr r1, [sp, #0x34] - lsr r0, r0, #0x18 - bl FUN_02017FFC - str r0, [sp, #0x38] - ldr r0, [sp, #0xc] - ldr r1, [sp, #0x3c] - lsl r0, r0, #0x18 - ldr r3, [sp, #0x6c] - lsr r0, r0, #0x18 - add r2, r4, #0x0 - bl FUN_02018068 - lsl r1, r0, #0x1 - ldr r0, [sp, #0x5c] - ldrh r0, [r0, r1] - ldr r1, [sp, #0x38] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x2c] - strh r0, [r1, r2] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r6 - blo _0201837A -_020183C6: - ldr r0, [sp, #0x8] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - str r1, [sp, #0x8] - ldr r0, [sp, #0x58] - cmp r1, r0 - blo _0201834E -_020183D6: - add sp, #0x44 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_020183DC -FUN_020183DC: ; 0x020183DC - push {r4-r7, lr} - sub sp, #0x44 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - add r7, r0, #0x0 - ldr r0, [sp, #0x58] - add r6, r3, #0x0 - str r0, [sp, #0x58] - ldr r0, [sp, #0x5c] - ldr r4, [sp, #0x68] - str r0, [sp, #0x5c] - ldr r0, [sp, #0x6c] - str r0, [sp, #0x6c] - ldr r0, [r7, #0x0] - str r0, [sp, #0x2c] - cmp r0, #0x0 - bne _02018400 - b _0201853C -_02018400: - ldrb r0, [r7, #0x15] - add r1, sp, #0x40 - add r1, #0x1 - add r2, sp, #0x40 - bl FUN_02017850 - add r0, sp, #0x70 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _020184A4 - mov r0, #0x0 - str r0, [sp, #0x28] - ldr r0, [sp, #0x58] - cmp r0, #0x0 - bhi _02018420 - b _0201853C -_02018420: - add r1, sp, #0x48 - ldrb r0, [r1, #0x1c] - str r0, [sp, #0x1c] - ldrb r0, [r1, #0x18] - ldr r1, [sp, #0x5c] - str r0, [sp, #0x18] - add r0, r1, r0 - str r0, [sp, #0x14] -_02018430: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x28] - add r0, r1, r0 - add r1, sp, #0x40 - ldrb r1, [r1, #0x0] - cmp r0, r1 - bge _0201853C - ldr r2, [sp, #0x1c] - ldr r1, [sp, #0x28] - add r2, r2, r1 - ldr r1, [sp, #0x6c] - cmp r2, r1 - bge _0201853C - mov r5, #0x0 - cmp r6, #0x0 - bls _02018490 - ldr r1, [sp, #0x14] - mul r2, r4 - lsl r0, r0, #0x18 - add r1, r1, r2 - lsr r0, r0, #0x18 - str r1, [sp, #0x10] - str r0, [sp, #0x30] -_0201845E: - add r1, sp, #0x40 - ldr r0, [sp, #0x0] - ldrb r1, [r1, #0x1] - add r0, r0, r5 - cmp r0, r1 - bge _02018490 - ldr r1, [sp, #0x18] - add r1, r1, r5 - cmp r1, r4 - bge _02018490 - ldrb r2, [r7, #0x15] - lsl r0, r0, #0x18 - ldr r1, [sp, #0x30] - lsr r0, r0, #0x18 - bl FUN_02017FFC - ldr r1, [sp, #0x10] - ldrb r2, [r1, r5] - ldr r1, [sp, #0x2c] - strb r2, [r1, r0] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r6 - blo _0201845E -_02018490: - ldr r0, [sp, #0x28] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - str r1, [sp, #0x28] - ldr r0, [sp, #0x58] - cmp r1, r0 - blo _02018430 - add sp, #0x44 - pop {r4-r7, pc} -_020184A4: - mov r0, #0x0 - str r0, [sp, #0x8] - ldr r0, [sp, #0x58] - cmp r0, #0x0 - bls _0201853C - add r1, sp, #0x48 - ldrb r0, [r1, #0x1c] - str r0, [sp, #0x24] - ldrb r0, [r1, #0x18] - str r0, [sp, #0x20] -_020184B8: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - add r1, r1, r0 - add r0, sp, #0x40 - ldrb r0, [r0, #0x0] - cmp r1, r0 - bge _0201853C - ldr r2, [sp, #0x24] - ldr r0, [sp, #0x8] - add r0, r2, r0 - ldr r2, [sp, #0x6c] - cmp r0, r2 - bge _0201853C - mov r5, #0x0 - cmp r6, #0x0 - bls _0201852C - lsl r1, r1, #0x18 - lsl r0, r0, #0x18 - lsr r1, r1, #0x18 - lsr r0, r0, #0x18 - str r1, [sp, #0x34] - str r0, [sp, #0x3c] -_020184E4: - add r1, sp, #0x40 - ldr r0, [sp, #0x0] - ldrb r1, [r1, #0x1] - add r0, r0, r5 - cmp r0, r1 - bge _0201852C - ldr r1, [sp, #0x20] - add r1, r1, r5 - str r1, [sp, #0xc] - cmp r1, r4 - bge _0201852C - ldrb r2, [r7, #0x15] - lsl r0, r0, #0x18 - ldr r1, [sp, #0x34] - lsr r0, r0, #0x18 - bl FUN_02017FFC - str r0, [sp, #0x38] - ldr r0, [sp, #0xc] - ldr r1, [sp, #0x3c] - lsl r0, r0, #0x18 - ldr r3, [sp, #0x6c] - lsr r0, r0, #0x18 - add r2, r4, #0x0 - bl FUN_02018068 - ldr r1, [sp, #0x5c] - ldrb r2, [r1, r0] - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x38] - strb r2, [r1, r0] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r6 - blo _020184E4 -_0201852C: - ldr r0, [sp, #0x8] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - str r1, [sp, #0x8] - ldr r0, [sp, #0x58] - cmp r1, r0 - blo _020184B8 -_0201853C: - add sp, #0x44 - pop {r4-r7, pc} - - thumb_func_start FUN_02018540 -FUN_02018540: ; 0x02018540 - push {r4-r5, lr} - sub sp, #0xc - add r4, r2, #0x0 - add r2, r3, #0x0 - mov r3, #0x2c - add r5, r1, #0x0 - mul r5, r3 - add r1, r0, r5 - ldrb r1, [r1, #0x1c] - add r3, sp, #0x8 - cmp r1, #0x1 - beq _02018574 - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldrb r1, [r3, #0x18] - str r1, [sp, #0x4] - ldrb r1, [r3, #0x1c] - str r1, [sp, #0x8] - ldrb r3, [r3, #0x10] - add r1, r4, #0x0 - bl FUN_02018590 - add sp, #0xc - pop {r4-r5, pc} -_02018574: - ldrb r1, [r3, #0x14] - add r0, #0x8 - add r0, r0, r5 - str r1, [sp, #0x0] - ldrb r1, [r3, #0x18] - str r1, [sp, #0x4] - lsl r1, r4, #0x18 - ldrb r3, [r3, #0x10] - lsr r1, r1, #0x18 - bl FUN_02018640 - add sp, #0xc - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_02018590 -FUN_02018590: ; 0x02018590 - push {r4-r7, lr} - sub sp, #0x1c - str r2, [sp, #0x4] - str r3, [sp, #0x8] - ldr r4, [r0, #0x0] - add r7, r1, #0x0 - str r0, [sp, #0x0] - ldr r6, [sp, #0x38] - cmp r4, #0x0 - beq _0201863A - ldrb r0, [r0, #0x15] - add r1, sp, #0x18 - add r1, #0x1 - add r2, sp, #0x18 - bl FUN_02017850 - add r0, sp, #0x20 - ldrb r2, [r0, #0x14] - ldr r1, [sp, #0x8] - add r1, r1, r2 - ldr r2, [sp, #0x8] - str r1, [sp, #0xc] - cmp r2, r1 - bge _0201863A - ldrb r2, [r0, #0x10] - ldr r0, [sp, #0x4] - lsl r1, r6, #0xc - add r0, r0, r2 - add r1, r1, r7 - str r0, [sp, #0x10] - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x14] -_020185D2: - add r0, sp, #0x18 - ldrb r1, [r0, #0x0] - ldr r0, [sp, #0x8] - cmp r0, r1 - bhs _0201863A - ldr r5, [sp, #0x4] - ldr r0, [sp, #0x10] - add r1, r5, #0x0 - cmp r1, r0 - bge _0201862A -_020185E6: - add r0, sp, #0x18 - ldrb r0, [r0, #0x1] - cmp r5, r0 - bhs _0201862A - ldr r2, [sp, #0x0] - ldr r1, [sp, #0x8] - ldrb r2, [r2, #0x15] - add r0, r5, #0x0 - bl FUN_02017FFC - cmp r6, #0x11 - bne _02018604 - lsl r0, r0, #0x1 - strh r7, [r4, r0] - b _0201861E -_02018604: - cmp r6, #0x10 - bne _02018618 - lsl r0, r0, #0x1 - ldrh r2, [r4, r0] - mov r1, #0xf - lsl r1, r1, #0xc - and r1, r2 - add r1, r7, r1 - strh r1, [r4, r0] - b _0201861E -_02018618: - lsl r1, r0, #0x1 - ldr r0, [sp, #0x14] - strh r0, [r4, r1] -_0201861E: - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [sp, #0x10] - cmp r5, r0 - blt _020185E6 -_0201862A: - ldr r0, [sp, #0x8] - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - ldr r0, [sp, #0xc] - str r1, [sp, #0x8] - cmp r1, r0 - blt _020185D2 -_0201863A: - add sp, #0x1c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02018640 -FUN_02018640: ; 0x02018640 - push {r4-r7, lr} - sub sp, #0x14 - str r1, [sp, #0x0] - add r7, r0, #0x0 - str r2, [sp, #0x4] - ldr r0, [r7, #0x0] - add r5, r3, #0x0 - str r0, [sp, #0xc] - cmp r0, #0x0 - beq _020186B0 - ldrb r0, [r7, #0x15] - add r1, sp, #0x10 - add r1, #0x1 - add r2, sp, #0x10 - bl FUN_02017850 - add r1, sp, #0x18 - ldrb r0, [r1, #0x14] - add r0, r5, r0 - str r0, [sp, #0x8] - cmp r5, r0 - bge _020186B0 - ldrb r1, [r1, #0x10] - ldr r0, [sp, #0x4] - add r6, r0, r1 -_02018672: - add r0, sp, #0x10 - ldrb r0, [r0, #0x0] - cmp r5, r0 - bhs _020186B0 - ldr r4, [sp, #0x4] - add r0, r4, #0x0 - cmp r0, r6 - bge _020186A4 -_02018682: - add r0, sp, #0x10 - ldrb r0, [r0, #0x1] - cmp r4, r0 - bhs _020186A4 - ldrb r2, [r7, #0x15] - add r0, r4, #0x0 - add r1, r5, #0x0 - bl FUN_02017FFC - ldr r2, [sp, #0x0] - ldr r1, [sp, #0xc] - strb r2, [r1, r0] - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, r6 - blt _02018682 -_020186A4: - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [sp, #0x8] - cmp r5, r0 - blt _02018672 -_020186B0: - add sp, #0x14 - pop {r4-r7, pc} - - thumb_func_start FUN_020186B4 -FUN_020186B4: ; 0x020186B4 - push {r4-r7, lr} - sub sp, #0x14 - add r5, r0, #0x0 - mov r0, #0x2c - add r7, r1, #0x0 - mul r7, r0 - str r2, [sp, #0x0] - add r0, r5, r7 - ldr r4, [r0, #0x8] - add r6, r3, #0x0 - cmp r4, #0x0 - beq _0201873C - ldrb r0, [r0, #0x1d] - add r1, sp, #0x10 - add r1, #0x1 - add r2, sp, #0x10 - bl FUN_02017850 - add r0, sp, #0x18 - ldrb r1, [r0, #0x14] - add r1, r6, r1 - str r1, [sp, #0x4] - cmp r6, r1 - bge _0201873C - add r1, r5, r7 - str r1, [sp, #0xc] - ldrb r1, [r0, #0x18] - lsl r1, r1, #0xc - str r1, [sp, #0x8] - ldrb r1, [r0, #0x10] - ldr r0, [sp, #0x0] - add r7, r0, r1 -_020186F4: - add r0, sp, #0x10 - ldrb r0, [r0, #0x0] - cmp r6, r0 - bhs _0201873C - ldr r5, [sp, #0x0] - add r0, r5, #0x0 - cmp r0, r7 - bge _02018730 -_02018704: - add r0, sp, #0x10 - ldrb r0, [r0, #0x1] - cmp r5, r0 - bhs _02018730 - ldr r2, [sp, #0xc] - add r0, r5, #0x0 - ldrb r2, [r2, #0x1d] - add r1, r6, #0x0 - bl FUN_02017FFC - lsl r0, r0, #0x1 - ldrh r2, [r4, r0] - ldr r1, _02018740 ; =0x00000FFF - and r2, r1 - ldr r1, [sp, #0x8] - orr r1, r2 - strh r1, [r4, r0] - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, r7 - blt _02018704 -_02018730: - add r0, r6, #0x1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldr r0, [sp, #0x4] - cmp r6, r0 - blt _020186F4 -_0201873C: - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_02018740: .word 0x00000FFF - - thumb_func_start FUN_02018744 -FUN_02018744: ; 0x02018744 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r0, #0x2c - mul r0, r4 - add r2, r5, r0 - ldr r1, [r2, #0x8] - cmp r1, #0x0 - beq _02018766 - ldr r2, [r2, #0xc] - mov r0, #0x0 - bl MIi_CpuClear16 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02017CD0 -_02018766: - pop {r3-r5, pc} - - thumb_func_start FUN_02018768 -FUN_02018768: ; 0x02018768 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r0, #0x2c - mul r0, r4 - add r3, r5, r0 - ldr r1, [r3, #0x8] - cmp r1, #0x0 - beq _0201878A - add r0, r2, #0x0 - ldr r2, [r3, #0xc] - bl MIi_CpuClear16 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02017CD0 -_0201878A: - pop {r3-r5, pc} - - thumb_func_start FUN_0201878C -FUN_0201878C: ; 0x0201878C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r0, #0x2c - mul r0, r4 - add r3, r5, r0 - ldr r1, [r3, #0x8] - cmp r1, #0x0 - beq _020187AE - add r0, r2, #0x0 - ldr r2, [r3, #0xc] - bl MIi_CpuClear16 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_0201AC68 -_020187AE: - pop {r3-r5, pc} - - thumb_func_start FUN_020187B0 -FUN_020187B0: ; 0x020187B0 - push {r3, lr} - cmp r0, #0x7 - bhi _02018802 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020187C2: ; jump table (using 16-bit offset) - .short _020187D2 - _020187C2 - 2; case 0 - .short _020187D8 - _020187C2 - 2; case 1 - .short _020187DE - _020187C2 - 2; case 2 - .short _020187E4 - _020187C2 - 2; case 3 - .short _020187EA - _020187C2 - 2; case 4 - .short _020187F0 - _020187C2 - 2; case 5 - .short _020187F6 - _020187C2 - 2; case 6 - .short _020187FC - _020187C2 - 2; case 7 -_020187D2: - bl G2_GetBG0CharPtr - pop {r3, pc} -_020187D8: - bl G2_GetBG1CharPtr - pop {r3, pc} -_020187DE: - bl G2_GetBG2CharPtr - pop {r3, pc} -_020187E4: - bl G2_GetBG3CharPtr - pop {r3, pc} -_020187EA: - bl G2S_GetBG0CharPtr - pop {r3, pc} -_020187F0: - bl G2S_GetBG1CharPtr - pop {r3, pc} -_020187F6: - bl G2S_GetBG2CharPtr - pop {r3, pc} -_020187FC: - bl G2S_GetBG3CharPtr - pop {r3, pc} -_02018802: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02018808 -FUN_02018808: ; 0x02018808 - push {r4-r7} - lsl r3, r3, #0x1c - lsr r3, r3, #0x18 - mov r4, #0x0 - cmp r1, #0x0 - bls _02018842 - mov r5, #0xf - add r6, r5, #0x0 -_02018818: - ldrb r7, [r0, r4] - and r7, r6 - strb r7, [r2, #0x0] - ldrb r7, [r2, #0x0] - cmp r7, #0x0 - beq _02018828 - add r7, r7, r3 - strb r7, [r2, #0x0] -_02018828: - ldrb r7, [r0, r4] - asr r7, r7, #0x4 - and r7, r5 - strb r7, [r2, #0x1] - ldrb r7, [r2, #0x1] - cmp r7, #0x0 - beq _0201883A - add r7, r7, r3 - strb r7, [r2, #0x1] -_0201883A: - add r4, r4, #0x1 - add r2, r2, #0x2 - cmp r4, r1 - blo _02018818 -_02018842: - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_02018848 -FUN_02018848: ; 0x02018848 - push {r3-r7, lr} - add r5, r1, #0x0 - add r6, r0, #0x0 - add r0, r3, #0x0 - lsl r1, r5, #0x1 - add r7, r2, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - add r3, r7, #0x0 - bl FUN_02018808 - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0201886C -FUN_0201886C: ; 0x0201886C - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldr r0, [r0, #0x8] - bx lr - .balign 4 - - thumb_func_start FUN_02018878 -FUN_02018878: ; 0x02018878 - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrh r0, [r0, #0x20] - bx lr - .balign 4 - - thumb_func_start FUN_02018884 -FUN_02018884: ; 0x02018884 - sub sp, #0x20 - cmp r1, #0x7 - bls _0201888C - b _02018A38 -_0201888C: - add r2, r1, r1 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02018898: ; jump table (using 16-bit offset) - .short _020188A8 - _02018898 - 2; case 0 - .short _020188BC - _02018898 - 2; case 1 - .short _020188D0 - _02018898 - 2; case 2 - .short _02018920 - _02018898 - 2; case 3 - .short _02018970 - _02018898 - 2; case 4 - .short _02018984 - _02018898 - 2; case 5 - .short _02018998 - _02018898 - 2; case 6 - .short _020189E8 - _02018898 - 2; case 7 -_020188A8: - ldr r0, _02018A40 ; =0x04000008 - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x1e] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020188BC: - ldr r0, _02018A44 ; =0x0400000A - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x1c] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020188D0: - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrb r0, [r0, #0x1c] - cmp r0, #0x0 - beq _020188E4 - cmp r0, #0x1 - beq _020188F8 - cmp r0, #0x2 - beq _0201890C -_020188E4: - ldr r0, _02018A48 ; =0x0400000C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x1a] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020188F8: - ldr r0, _02018A48 ; =0x0400000C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x18] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_0201890C: - ldr r0, _02018A48 ; =0x0400000C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x16] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018920: - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrb r0, [r0, #0x1c] - cmp r0, #0x0 - beq _02018934 - cmp r0, #0x1 - beq _02018948 - cmp r0, #0x2 - beq _0201895C -_02018934: - ldr r0, _02018A4C ; =0x0400000E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x14] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018948: - ldr r0, _02018A4C ; =0x0400000E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x12] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_0201895C: - ldr r0, _02018A4C ; =0x0400000E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x10] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018970: - ldr r0, _02018A50 ; =0x04001008 - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0xe] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018984: - ldr r0, _02018A54 ; =0x0400100A - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0xc] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018998: - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrb r0, [r0, #0x1c] - cmp r0, #0x0 - beq _020189AC - cmp r0, #0x1 - beq _020189C0 - cmp r0, #0x2 - beq _020189D4 -_020189AC: - ldr r0, _02018A58 ; =0x0400100C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0xa] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020189C0: - ldr r0, _02018A58 ; =0x0400100C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x8] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020189D4: - ldr r0, _02018A58 ; =0x0400100C - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x6] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_020189E8: - mov r2, #0x2c - mul r2, r1 - add r0, r0, r2 - ldrb r0, [r0, #0x1c] - cmp r0, #0x0 - beq _020189FC - cmp r0, #0x1 - beq _02018A10 - cmp r0, #0x2 - beq _02018A24 -_020189FC: - ldr r0, _02018A5C ; =0x0400100E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x4] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018A10: - ldr r0, _02018A5C ; =0x0400100E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x2] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018A24: - ldr r0, _02018A5C ; =0x0400100E - ldrh r1, [r0, #0x0] - add r0, sp, #0x0 - add sp, #0x20 - strh r1, [r0, #0x0] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1e - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr -_02018A38: - mov r0, #0x0 - add sp, #0x20 - bx lr - nop -_02018A40: .word 0x04000008 -_02018A44: .word 0x0400000A -_02018A48: .word 0x0400000C -_02018A4C: .word 0x0400000E -_02018A50: .word 0x04001008 -_02018A54: .word 0x0400100A -_02018A58: .word 0x0400100C -_02018A5C: .word 0x0400100E - - thumb_func_start FUN_02018A60 -FUN_02018A60: ; 0x02018A60 - push {r3-r7, lr} - sub sp, #0x68 - str r2, [sp, #0x8] - str r3, [sp, #0xc] - add r2, sp, #0x70 - str r0, [sp, #0x0] - ldrh r0, [r2, #0x10] - str r1, [sp, #0x4] - ldrh r2, [r2, #0x18] - str r0, [sp, #0x10] - add r0, r1, #0x0 - ldrh r1, [r0, #0x4] - ldr r0, [sp, #0x10] - sub r3, r1, r0 - cmp r3, r2 - bge _02018A88 - ldr r0, [sp, #0x8] - add r0, r0, r3 - str r0, [sp, #0x50] - b _02018A8E -_02018A88: - ldr r0, [sp, #0x8] - add r0, r2, r0 - str r0, [sp, #0x50] -_02018A8E: - ldr r2, [sp, #0x4] - add r3, sp, #0x70 - ldrh r0, [r3, #0x14] - ldrh r2, [r2, #0x6] - ldrh r3, [r3, #0x1c] - sub r4, r2, r0 - cmp r4, r3 - bge _02018AA6 - ldr r2, [sp, #0xc] - add r2, r2, r4 - str r2, [sp, #0x4c] - b _02018AAC -_02018AA6: - ldr r2, [sp, #0xc] - add r2, r3, r2 - str r2, [sp, #0x4c] -_02018AAC: - ldr r2, [sp, #0x0] - mov r3, #0x7 - ldrh r4, [r2, #0x4] - add r2, r4, #0x0 - and r2, r3 - add r2, r4, r2 - asr r2, r2, #0x3 - str r2, [sp, #0x48] - add r2, r1, #0x0 - and r2, r3 - add r1, r1, r2 - asr r1, r1, #0x3 - str r1, [sp, #0x44] - add r1, sp, #0x70 - ldrh r1, [r1, #0x20] - ldr r2, _02018C98 ; =0x0000FFFF - str r1, [sp, #0x38] - cmp r1, r2 - bne _02018BB4 - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x4c] - cmp r2, r1 - bge _02018ADE - cmp r2, r1 - blt _02018AE0 -_02018ADE: - b _02018C92 -_02018AE0: - add r1, r2, #0x0 - lsl r1, r1, #0x2 - lsl r0, r0, #0x2 - str r1, [sp, #0x28] - str r0, [sp, #0x24] -_02018AEA: - ldr r3, [sp, #0x8] - ldr r0, [sp, #0x50] - add r1, r3, #0x0 - ldr r4, [sp, #0x10] - cmp r1, r0 - bge _02018B96 - cmp r1, r0 - bge _02018B96 - add r0, r3, #0x0 - lsl r5, r0, #0x2 - add r0, r4, #0x0 - lsl r6, r0, #0x2 - ldr r0, _02018C9C ; =0x00003FE0 - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x48] - and r1, r0 - mul r2, r1 - str r2, [sp, #0x20] - ldr r2, [sp, #0x28] - mov r1, #0x1c - and r2, r1 - str r2, [sp, #0x1c] - ldr r2, [sp, #0x24] - and r0, r2 - ldr r2, [sp, #0x44] - mul r2, r0 - ldr r0, [sp, #0x24] - str r2, [sp, #0x18] - and r0, r1 - str r0, [sp, #0x14] -_02018B26: - ldr r0, [sp, #0x4] - asr r2, r4, #0x1 - mov r1, #0x3 - ldr r0, [r0, #0x0] - and r1, r2 - add r1, r0, r1 - ldr r0, _02018C9C ; =0x00003FE0 - and r0, r6 - add r1, r1, r0 - ldr r0, [sp, #0x18] - add r6, r6, #0x4 - add r0, r1, r0 - str r0, [sp, #0x64] - lsl r0, r4, #0x1f - lsr r2, r0, #0x1d - ldr r0, [sp, #0x0] - asr r1, r3, #0x1 - ldr r7, [r0, #0x0] - mov r0, #0x3 - and r0, r1 - ldr r1, _02018C9C ; =0x00003FE0 - add r4, r4, #0x1 - and r1, r5 - str r1, [sp, #0x54] - add r1, r7, r0 - ldr r0, [sp, #0x54] - add r5, r5, #0x4 - add r1, r0, r1 - ldr r0, [sp, #0x20] - add r1, r0, r1 - ldr r0, [sp, #0x1c] - ldrb r1, [r0, r1] - lsl r0, r3, #0x1f - lsr r0, r0, #0x1d - asr r1, r0 - mov r0, #0xf - and r0, r1 - add r7, r0, #0x0 - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x64] - lsl r7, r2 - ldrb r0, [r0, r1] - add r3, r3, #0x1 - str r0, [sp, #0x58] - mov r0, #0xf0 - asr r0, r2 - ldr r1, [sp, #0x58] - add r2, r7, #0x0 - and r0, r1 - orr r2, r0 - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x64] - strb r2, [r0, r1] - ldr r0, [sp, #0x50] - cmp r3, r0 - blt _02018B26 -_02018B96: - ldr r0, [sp, #0x28] - add r0, r0, #0x4 - str r0, [sp, #0x28] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0xc] - add r0, r0, #0x4 - str r0, [sp, #0x24] - ldr r0, [sp, #0x4c] - cmp r1, r0 - blt _02018AEA - add sp, #0x68 - pop {r3-r7, pc} -_02018BB4: - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x4c] - cmp r2, r1 - bge _02018C92 - cmp r2, r1 - bge _02018C92 - add r1, r2, #0x0 - lsl r1, r1, #0x2 - lsl r0, r0, #0x2 - str r1, [sp, #0x40] - str r0, [sp, #0x3c] -_02018BCA: - ldr r3, [sp, #0x8] - ldr r0, [sp, #0x50] - add r1, r3, #0x0 - ldr r4, [sp, #0x10] - cmp r1, r0 - bge _02018C78 - cmp r1, r0 - bge _02018C78 - add r0, r3, #0x0 - lsl r1, r0, #0x2 - add r0, r4, #0x0 - lsl r2, r0, #0x2 - ldr r0, _02018C9C ; =0x00003FE0 - ldr r5, [sp, #0x40] - ldr r6, [sp, #0x48] - and r5, r0 - mul r6, r5 - str r6, [sp, #0x34] - ldr r6, [sp, #0x40] - mov r5, #0x1c - and r6, r5 - str r6, [sp, #0x30] - ldr r6, [sp, #0x3c] - and r0, r6 - ldr r6, [sp, #0x44] - mul r6, r0 - ldr r0, [sp, #0x3c] - str r6, [sp, #0x2c] - and r0, r5 - str r0, [sp, #0x60] -_02018C06: - ldr r0, [sp, #0x4] - asr r6, r4, #0x1 - mov r5, #0x3 - and r5, r6 - ldr r0, [r0, #0x0] - asr r6, r3, #0x1 - add r5, r0, r5 - ldr r0, _02018C9C ; =0x00003FE0 - and r0, r2 - add r5, r5, r0 - ldr r0, [sp, #0x2c] - add r5, r5, r0 - ldr r0, [sp, #0x0] - ldr r7, [r0, #0x0] - mov r0, #0x3 - and r0, r6 - ldr r6, _02018C9C ; =0x00003FE0 - and r6, r1 - str r6, [sp, #0x5c] - add r6, r7, r0 - ldr r0, [sp, #0x5c] - add r6, r0, r6 - ldr r0, [sp, #0x34] - add r6, r0, r6 - ldr r0, [sp, #0x30] - ldrb r6, [r0, r6] - lsl r0, r3, #0x1f - lsr r0, r0, #0x1d - asr r6, r0 - mov r0, #0xf - and r0, r6 - ldr r6, [sp, #0x38] - cmp r0, r6 - beq _02018C6A - lsl r6, r4, #0x1f - lsr r7, r6, #0x1d - lsl r0, r7 - mov lr, r0 - ldr r0, [sp, #0x60] - ldrb r0, [r5, r0] - mov r12, r0 - mov r0, #0xf0 - add r6, r0, #0x0 - asr r6, r7 - mov r0, r12 - and r0, r6 - mov r6, lr - orr r6, r0 - ldr r0, [sp, #0x60] - strb r6, [r5, r0] -_02018C6A: - ldr r0, [sp, #0x50] - add r3, r3, #0x1 - add r1, r1, #0x4 - add r2, r2, #0x4 - add r4, r4, #0x1 - cmp r3, r0 - blt _02018C06 -_02018C78: - ldr r0, [sp, #0x40] - add r0, r0, #0x4 - str r0, [sp, #0x40] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x3c] - ldr r1, [sp, #0xc] - add r0, r0, #0x4 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x4c] - cmp r1, r0 - blt _02018BCA -_02018C92: - add sp, #0x68 - pop {r3-r7, pc} - nop -_02018C98: .word 0x0000FFFF -_02018C9C: .word 0x00003FE0 - - thumb_func_start FUN_02018CA0 -FUN_02018CA0: ; 0x02018CA0 - push {r3-r7, lr} - sub sp, #0x50 - str r2, [sp, #0x8] - str r3, [sp, #0xc] - add r2, sp, #0x58 - str r0, [sp, #0x0] - ldrh r0, [r2, #0x10] - str r1, [sp, #0x4] - ldrh r2, [r2, #0x18] - str r0, [sp, #0x10] - add r0, r1, #0x0 - ldrh r1, [r0, #0x4] - ldr r0, [sp, #0x10] - sub r3, r1, r0 - cmp r3, r2 - bge _02018CC6 - ldr r0, [sp, #0x8] - add r0, r0, r3 - b _02018CCA -_02018CC6: - ldr r0, [sp, #0x8] - add r0, r2, r0 -_02018CCA: - ldr r2, [sp, #0x4] - add r3, sp, #0x58 - mov r12, r0 - ldrh r0, [r3, #0x14] - ldrh r2, [r2, #0x6] - ldrh r3, [r3, #0x1c] - sub r4, r2, r0 - cmp r4, r3 - bge _02018CE2 - ldr r2, [sp, #0xc] - add r2, r2, r4 - b _02018CE6 -_02018CE2: - ldr r2, [sp, #0xc] - add r2, r3, r2 -_02018CE6: - mov lr, r2 - ldr r2, [sp, #0x0] - mov r3, #0x7 - ldrh r4, [r2, #0x4] - add r2, r4, #0x0 - and r2, r3 - add r2, r4, r2 - asr r2, r2, #0x3 - str r2, [sp, #0x4c] - add r2, r1, #0x0 - and r2, r3 - add r1, r1, r2 - asr r1, r1, #0x3 - str r1, [sp, #0x48] - add r1, sp, #0x58 - ldrh r1, [r1, #0x20] - ldr r2, _02018E80 ; =0x0000FFFF - str r1, [sp, #0x3c] - cmp r1, r2 - bne _02018DC6 - ldr r2, [sp, #0xc] - mov r1, lr - cmp r2, r1 - bge _02018D1C - mov r1, lr - cmp r2, r1 - blt _02018D1E -_02018D1C: - b _02018E7C -_02018D1E: - add r1, r2, #0x0 - lsl r1, r1, #0x3 - lsl r0, r0, #0x3 - str r1, [sp, #0x28] - str r0, [sp, #0x24] -_02018D28: - ldr r1, [sp, #0x8] - mov r0, r12 - add r2, r1, #0x0 - ldr r7, [sp, #0x10] - cmp r2, r0 - bge _02018DA8 - mov r0, r12 - cmp r2, r0 - bge _02018DA8 - add r0, r1, #0x0 - lsl r2, r0, #0x3 - add r0, r7, #0x0 - lsl r3, r0, #0x3 - ldr r6, _02018E84 ; =0x00007FC0 - ldr r0, [sp, #0x28] - ldr r4, [sp, #0x4c] - and r0, r6 - mul r4, r0 - str r4, [sp, #0x20] - ldr r0, [sp, #0x28] - mov r5, #0x38 - and r0, r5 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x24] - ldr r4, [sp, #0x48] - and r0, r6 - mul r4, r0 - ldr r0, [sp, #0x24] - str r4, [sp, #0x18] - and r0, r5 - str r0, [sp, #0x14] -_02018D66: - ldr r0, [sp, #0x0] - add r5, r1, #0x0 - mov r4, #0x7 - and r5, r4 - ldr r0, [r0, #0x0] - ldr r4, _02018E84 ; =0x00007FC0 - add r0, r0, r5 - and r4, r2 - add r4, r4, r0 - ldr r0, [sp, #0x20] - add r5, r7, #0x0 - add r4, r0, r4 - ldr r0, [sp, #0x1c] - add r1, r1, #0x1 - ldrb r6, [r0, r4] - ldr r0, [sp, #0x4] - mov r4, #0x7 - and r5, r4 - ldr r0, [r0, #0x0] - ldr r4, _02018E84 ; =0x00007FC0 - add r0, r0, r5 - and r4, r3 - add r4, r4, r0 - ldr r0, [sp, #0x18] - add r2, #0x8 - add r4, r0, r4 - ldr r0, [sp, #0x14] - add r3, #0x8 - strb r6, [r0, r4] - mov r0, r12 - add r7, r7, #0x1 - cmp r1, r0 - blt _02018D66 -_02018DA8: - ldr r0, [sp, #0x28] - add r0, #0x8 - str r0, [sp, #0x28] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0xc] - add r0, #0x8 - str r0, [sp, #0x24] - mov r0, lr - cmp r1, r0 - blt _02018D28 - add sp, #0x50 - pop {r3-r7, pc} -_02018DC6: - ldr r2, [sp, #0xc] - mov r1, lr - cmp r2, r1 - bge _02018E7C - mov r1, lr - cmp r2, r1 - bge _02018E7C - add r1, r2, #0x0 - lsl r1, r1, #0x3 - lsl r0, r0, #0x3 - str r1, [sp, #0x44] - str r0, [sp, #0x40] -_02018DDE: - ldr r2, [sp, #0x8] - mov r0, r12 - add r1, r2, #0x0 - ldr r3, [sp, #0x10] - cmp r1, r0 - bge _02018E62 - mov r0, r12 - cmp r1, r0 - bge _02018E62 - add r0, r2, #0x0 - lsl r6, r0, #0x3 - add r0, r3, #0x0 - lsl r1, r0, #0x3 - ldr r7, _02018E84 ; =0x00007FC0 - ldr r0, [sp, #0x44] - ldr r4, [sp, #0x4c] - and r0, r7 - mul r4, r0 - str r4, [sp, #0x38] - ldr r0, [sp, #0x44] - mov r5, #0x38 - and r0, r5 - str r0, [sp, #0x34] - ldr r0, [sp, #0x40] - ldr r4, [sp, #0x48] - and r0, r7 - mul r4, r0 - ldr r0, [sp, #0x40] - str r4, [sp, #0x30] - and r0, r5 - str r0, [sp, #0x2c] -_02018E1C: - ldr r0, [sp, #0x4] - mov r4, #0x7 - ldr r0, [r0, #0x0] - and r4, r3 - add r0, r0, r4 - ldr r4, _02018E84 ; =0x00007FC0 - add r5, r2, #0x0 - and r4, r1 - add r4, r0, r4 - ldr r0, [sp, #0x30] - add r7, r4, r0 - ldr r0, [sp, #0x0] - mov r4, #0x7 - and r5, r4 - ldr r0, [r0, #0x0] - ldr r4, _02018E84 ; =0x00007FC0 - add r0, r0, r5 - and r4, r6 - add r4, r4, r0 - ldr r0, [sp, #0x38] - add r4, r0, r4 - ldr r0, [sp, #0x34] - ldrb r0, [r0, r4] - ldr r4, [sp, #0x3c] - cmp r0, r4 - beq _02018E54 - ldr r4, [sp, #0x2c] - strb r0, [r7, r4] -_02018E54: - add r2, r2, #0x1 - mov r0, r12 - add r6, #0x8 - add r1, #0x8 - add r3, r3, #0x1 - cmp r2, r0 - blt _02018E1C -_02018E62: - ldr r0, [sp, #0x44] - add r0, #0x8 - str r0, [sp, #0x44] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x40] - ldr r1, [sp, #0xc] - add r0, #0x8 - str r0, [sp, #0x40] - mov r0, lr - cmp r1, r0 - blt _02018DDE -_02018E7C: - add sp, #0x50 - pop {r3-r7, pc} - .balign 4 -_02018E80: .word 0x0000FFFF -_02018E84: .word 0x00007FC0 - - thumb_func_start FUN_02018E88 -FUN_02018E88: ; 0x02018E88 - push {r4-r7, lr} - sub sp, #0x14 - str r1, [sp, #0x4] - str r2, [sp, #0x8] - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - str r0, [sp, #0x2c] - ldr r0, [sp, #0x4] - add r6, r0, r3 - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - cmp r6, r0 - ble _02018EA4 - add r6, r0, #0x0 -_02018EA4: - add r1, sp, #0x18 - ldrh r2, [r1, #0x10] - ldr r1, [sp, #0x8] - add r1, r1, r2 - mov r12, r1 - ldr r1, [sp, #0x0] - ldrh r2, [r1, #0x6] - mov r1, r12 - cmp r1, r2 - ble _02018EBA - mov r12, r2 -_02018EBA: - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - mov lr, r0 - ldr r1, [sp, #0x8] - mov r0, r12 - cmp r1, r0 - bge _02018F44 - add r0, r1, #0x0 - lsl r0, r0, #0x2 - str r0, [sp, #0xc] - ldr r0, [sp, #0x2c] - lsl r0, r0, #0x4 - str r0, [sp, #0x10] -_02018ED8: - ldr r1, [sp, #0x4] - add r0, r1, #0x0 - cmp r0, r6 - bge _02018F32 - lsl r5, r0, #0x2 - ldr r2, _02018F48 ; =0x00003FE0 - ldr r0, [sp, #0xc] - and r0, r2 - add r7, r0, #0x0 - mov r2, lr - mul r7, r2 - ldr r0, [sp, #0xc] - mov r2, #0x1c - and r2, r0 -_02018EF4: - ldr r0, [sp, #0x0] - asr r3, r1, #0x1 - ldr r4, [r0, #0x0] - mov r0, #0x3 - and r0, r3 - ldr r3, _02018F48 ; =0x00003FE0 - add r0, r4, r0 - and r3, r5 - add r0, r0, r3 - add r0, r0, r7 - mov r3, #0x1 - tst r3, r1 - ldrb r4, [r0, r2] - beq _02018F1C - mov r3, #0xf - and r3, r4 - strb r3, [r0, r2] - ldrb r4, [r0, r2] - ldr r3, [sp, #0x10] - b _02018F26 -_02018F1C: - mov r3, #0xf0 - and r3, r4 - strb r3, [r0, r2] - ldrb r4, [r0, r2] - ldr r3, [sp, #0x2c] -_02018F26: - orr r3, r4 - add r1, r1, #0x1 - strb r3, [r0, r2] - add r5, r5, #0x4 - cmp r1, r6 - blt _02018EF4 -_02018F32: - ldr r0, [sp, #0xc] - add r0, r0, #0x4 - str r0, [sp, #0xc] - ldr r0, [sp, #0x8] - add r1, r0, #0x1 - mov r0, r12 - str r1, [sp, #0x8] - cmp r1, r0 - blt _02018ED8 -_02018F44: - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_02018F48: .word 0x00003FE0 - - thumb_func_start FUN_02018F4C -FUN_02018F4C: ; 0x02018F4C - push {r4-r7, lr} - sub sp, #0x14 - str r1, [sp, #0x4] - str r2, [sp, #0x8] - str r0, [sp, #0x0] - ldr r0, [sp, #0x2c] - str r0, [sp, #0x2c] - ldr r0, [sp, #0x4] - add r5, r0, r3 - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - cmp r5, r0 - ble _02018F68 - add r5, r0, #0x0 -_02018F68: - add r1, sp, #0x18 - ldrh r2, [r1, #0x10] - ldr r1, [sp, #0x8] - add r1, r1, r2 - mov lr, r1 - ldr r1, [sp, #0x0] - ldrh r2, [r1, #0x6] - mov r1, lr - cmp r1, r2 - ble _02018F7E - mov lr, r2 -_02018F7E: - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x10] - ldr r1, [sp, #0x8] - mov r0, lr - cmp r1, r0 - bge _02018FEA - add r0, r1, #0x0 - lsl r0, r0, #0x3 - str r0, [sp, #0xc] - ldr r0, [sp, #0x4] - lsl r0, r0, #0x3 - mov r12, r0 -_02018F9C: - ldr r2, [sp, #0x4] - add r0, r2, #0x0 - cmp r0, r5 - bge _02018FD8 - ldr r1, [sp, #0xc] - ldr r0, _02018FF0 ; =0x00007FC0 - mov r3, r12 - and r0, r1 - add r7, r0, #0x0 - ldr r1, [sp, #0x10] - mov r0, #0x38 - mul r7, r1 - ldr r1, [sp, #0xc] - add r6, r1, #0x0 - and r6, r0 -_02018FBA: - ldr r0, [sp, #0x0] - ldr r4, _02018FF0 ; =0x00007FC0 - ldr r1, [r0, #0x0] - mov r0, #0x7 - and r0, r2 - and r4, r3 - add r0, r1, r0 - add r0, r4, r0 - add r1, r7, r0 - ldr r0, [sp, #0x2c] - add r2, r2, #0x1 - strb r0, [r6, r1] - add r3, #0x8 - cmp r2, r5 - blt _02018FBA -_02018FD8: - ldr r0, [sp, #0xc] - add r0, #0x8 - str r0, [sp, #0xc] - ldr r0, [sp, #0x8] - add r1, r0, #0x1 - mov r0, lr - str r1, [sp, #0x8] - cmp r1, r0 - blt _02018F9C -_02018FEA: - add sp, #0x14 - pop {r4-r7, pc} - nop -_02018FF0: .word 0x00007FC0 - - thumb_func_start FUN_02018FF4 -FUN_02018FF4: ; 0x02018FF4 - push {r4-r6, lr} - add r5, r1, #0x0 - lsl r1, r5, #0x4 - bl AllocFromHeap - add r6, r0, #0x0 - mov r4, #0x0 - cmp r5, #0x0 - ble _02019018 -_02019006: - lsl r0, r4, #0x4 - add r0, r6, r0 - bl FUN_0201901C - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, r5 - blt _02019006 -_02019018: - add r0, r6, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0201901C -FUN_0201901C: ; 0x0201901C - mov r3, #0x0 - str r3, [r0, #0x0] - mov r1, #0xff - strb r1, [r0, #0x4] - strb r3, [r0, #0x5] - strb r3, [r0, #0x6] - strb r3, [r0, #0x7] - strb r3, [r0, #0x8] - strb r3, [r0, #0x9] - ldrh r2, [r0, #0xa] - ldr r1, _02019044 ; =0xFFFF8000 - and r2, r1 - strh r2, [r0, #0xa] - str r3, [r0, #0xc] - ldrh r2, [r0, #0xa] - sub r1, r1, #0x1 - and r1, r2 - strh r1, [r0, #0xa] - bx lr - nop -_02019044: .word 0xFFFF8000 - - thumb_func_start FUN_02019048 -FUN_02019048: ; 0x02019048 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _0201905A - ldrb r1, [r0, #0x4] - cmp r1, #0xff - beq _0201905A - ldr r0, [r0, #0xc] - cmp r0, #0x0 - bne _0201905E -_0201905A: - mov r0, #0x0 - bx lr -_0201905E: - mov r0, #0x1 - bx lr - .balign 4 - - thumb_func_start FUN_02019064 -FUN_02019064: ; 0x02019064 - push {r3-r7, lr} - add r6, r2, #0x0 - add r5, r0, #0x0 - mov r0, #0x2c - add r7, r6, #0x0 - mul r7, r0 - add r4, r1, #0x0 - str r3, [sp, #0x0] - add r1, r5, r7 - ldr r0, [r1, #0x8] - cmp r0, #0x0 - beq _020190E0 - add r3, sp, #0x8 - ldrb r2, [r1, #0x1f] - ldrb r1, [r3, #0x14] - ldrb r3, [r3, #0x18] - ldr r0, [r5, #0x0] - mul r3, r1 - add r1, r2, #0x0 - mul r1, r3 - bl AllocFromHeap - add r1, r0, #0x0 - beq _020190E0 - str r5, [r4, #0x0] - strb r6, [r4, #0x4] - ldr r0, [sp, #0x0] - add r3, sp, #0x8 - strb r0, [r4, #0x5] - ldrb r0, [r3, #0x10] - ldr r2, _020190E4 ; =0xFFFF8000 - strb r0, [r4, #0x6] - ldrb r0, [r3, #0x14] - strb r0, [r4, #0x7] - ldrb r0, [r3, #0x18] - strb r0, [r4, #0x8] - ldrb r0, [r3, #0x1c] - strb r0, [r4, #0x9] - ldrh r0, [r4, #0xa] - ldrh r3, [r3, #0x20] - and r0, r2 - lsr r2, r2, #0x11 - and r2, r3 - orr r0, r2 - strh r0, [r4, #0xa] - str r1, [r4, #0xc] - add r0, r5, r7 - ldrb r0, [r0, #0x1e] - cmp r0, #0x0 - bne _020190CC - mov r2, #0x0 - b _020190CE -_020190CC: - mov r2, #0x1 -_020190CE: - ldrh r1, [r4, #0xa] - ldr r0, _020190E8 ; =0xFFFF7FFF - and r1, r0 - lsl r0, r2, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1f - lsr r0, r0, #0x10 - orr r0, r1 - strh r0, [r4, #0xa] -_020190E0: - pop {r3-r7, pc} - nop -_020190E4: .word 0xFFFF8000 -_020190E8: .word 0xFFFF7FFF - - thumb_func_start FUN_020190EC -FUN_020190EC: ; 0x020190EC - push {r3-r7, lr} - sub sp, #0x8 - str r3, [sp, #0x0] - add r5, r0, #0x0 - ldr r0, [sp, #0x24] - add r6, r2, #0x0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x0] - add r4, r1, #0x0 - mul r0, r6 - lsl r0, r0, #0x5 - str r0, [sp, #0x4] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x4] - bl AllocFromHeap - ldr r1, [sp, #0x24] - add r7, r0, #0x0 - lsl r2, r1, #0x4 - orr r1, r2 - lsl r1, r1, #0x18 - ldr r2, [sp, #0x4] - lsr r1, r1, #0x18 - bl memset - cmp r7, #0x0 - beq _02019148 - str r5, [r4, #0x0] - strb r6, [r4, #0x7] - ldr r0, [sp, #0x0] - strb r0, [r4, #0x8] - ldrh r1, [r4, #0xa] - ldr r0, _0201914C ; =0xFFFF8000 - add r3, r1, #0x0 - add r1, sp, #0x10 - ldrh r2, [r1, #0x10] - lsr r1, r0, #0x11 - and r3, r0 - and r1, r2 - orr r1, r3 - strh r1, [r4, #0xa] - str r7, [r4, #0xc] - ldrh r1, [r4, #0xa] - sub r0, r0, #0x1 - and r0, r1 - strh r0, [r4, #0xa] -_02019148: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_0201914C: .word 0xFFFF8000 - - thumb_func_start FUN_02019150 -FUN_02019150: ; 0x02019150 - push {lr} - sub sp, #0x14 - add r3, r2, #0x0 - ldrb r2, [r3, #0x2] - str r2, [sp, #0x0] - ldrb r2, [r3, #0x3] - str r2, [sp, #0x4] - ldrb r2, [r3, #0x4] - str r2, [sp, #0x8] - ldrb r2, [r3, #0x5] - str r2, [sp, #0xc] - ldrh r2, [r3, #0x6] - str r2, [sp, #0x10] - ldrb r2, [r3, #0x0] - ldrb r3, [r3, #0x1] - bl FUN_02019064 - add sp, #0x14 - pop {pc} - .balign 4 - - thumb_func_start FUN_02019178 -FUN_02019178: ; 0x02019178 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0xc] - bl FreeToHeap - mov r2, #0x0 - str r2, [r4, #0x0] - mov r0, #0xff - strb r0, [r4, #0x4] - strb r2, [r4, #0x5] - strb r2, [r4, #0x6] - strb r2, [r4, #0x7] - strb r2, [r4, #0x8] - strb r2, [r4, #0x9] - ldrh r1, [r4, #0xa] - ldr r0, _020191A0 ; =0xFFFF8000 - and r0, r1 - strh r0, [r4, #0xa] - str r2, [r4, #0xc] - pop {r4, pc} - .balign 4 -_020191A0: .word 0xFFFF8000 - - thumb_func_start FUN_020191A4 -FUN_020191A4: ; 0x020191A4 - push {r4-r6, lr} - add r6, r1, #0x0 - add r5, r0, #0x0 - mov r4, #0x0 - cmp r6, #0x0 - ble _020191C8 -_020191B0: - lsl r0, r4, #0x4 - add r0, r5, r0 - ldr r0, [r0, #0xc] - cmp r0, #0x0 - beq _020191BE - bl FreeToHeap -_020191BE: - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, r6 - blt _020191B0 -_020191C8: - add r0, r5, #0x0 - bl FreeToHeap - pop {r4-r6, pc} - - thumb_func_start CopyWindowToVram -CopyWindowToVram: ; 0x020191D0 - push {r4, lr} - add r4, r0, #0x0 - bne _020191DA - bl ErrorHandling -_020191DA: - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _020191E4 - bl ErrorHandling -_020191E4: - ldrb r0, [r4, #0x4] - cmp r0, #0x8 - blo _020191EE - bl ErrorHandling -_020191EE: - ldrb r1, [r4, #0x4] - mov r0, #0x2c - ldr r2, [r4, #0x0] - mul r0, r1 - add r0, r2, r0 - ldrb r0, [r0, #0x1c] - cmp r0, #0x3 - blo _02019202 - bl ErrorHandling -_02019202: - ldrb r2, [r4, #0x4] - mov r1, #0x2c - ldr r3, [r4, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - add r0, r4, #0x0 - lsl r2, r1, #0x2 - ldr r1, _0201921C ; =UNK_020EDB68 - ldr r1, [r1, r2] - blx r1 - pop {r4, pc} - nop -_0201921C: .word UNK_020EDB68 - - thumb_func_start FUN_02019220 -FUN_02019220: ; 0x02019220 - push {r4, lr} - add r4, r0, #0x0 - bne _0201922A - bl ErrorHandling -_0201922A: - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _02019234 - bl ErrorHandling -_02019234: - ldrb r0, [r4, #0x4] - cmp r0, #0x8 - blo _0201923E - bl ErrorHandling -_0201923E: - ldrb r1, [r4, #0x4] - mov r0, #0x2c - ldr r2, [r4, #0x0] - mul r0, r1 - add r0, r2, r0 - ldrb r0, [r0, #0x1c] - cmp r0, #0x3 - blo _02019252 - bl ErrorHandling -_02019252: - ldrb r2, [r4, #0x4] - mov r1, #0x2c - ldr r3, [r4, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - add r0, r4, #0x0 - lsl r2, r1, #0x2 - ldr r1, _0201926C ; =UNK_020EDB5C - ldr r1, [r1, r2] - blx r1 - pop {r4, pc} - nop -_0201926C: .word UNK_020EDB5C - - thumb_func_start FUN_02019270 -FUN_02019270: ; 0x02019270 - push {r3, lr} - ldrb r2, [r0, #0x4] - mov r1, #0x2c - ldr r3, [r0, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _02019288 ; =UNK_020EDB38 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .balign 4 -_02019288: .word UNK_020EDB38 - - thumb_func_start FUN_0201928C -FUN_0201928C: ; 0x0201928C - push {r4-r6, lr} - add r5, r0, #0x0 - ldrb r6, [r5, #0x7] - ldrb r4, [r5, #0x8] - strb r1, [r5, #0x7] - strb r2, [r5, #0x8] - ldrb r3, [r5, #0x4] - mov r2, #0x2c - ldr r1, [r5, #0x0] - mul r2, r3 - add r1, r1, r2 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _020192B4 ; =UNK_020EDB38 - ldr r1, [r1, r2] - blx r1 - strb r6, [r5, #0x7] - strb r4, [r5, #0x8] - pop {r4-r6, pc} - nop -_020192B4: .word UNK_020EDB38 - - thumb_func_start FUN_020192B8 -FUN_020192B8: ; 0x020192B8 - push {r3, lr} - ldrb r2, [r0, #0x4] - mov r1, #0x2c - ldr r3, [r0, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _020192D0 ; =UNK_020EDB74 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .balign 4 -_020192D0: .word UNK_020EDB74 - - thumb_func_start FUN_020192D4 -FUN_020192D4: ; 0x020192D4 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldrb r1, [r5, #0x4] - mov r0, #0x2c - ldr r2, [r5, #0x0] - mul r0, r1 - add r0, r2, r0 - ldr r0, [r0, #0x8] - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _02019354 - ldrh r0, [r5, #0xa] - ldrb r1, [r5, #0x5] - lsl r0, r0, #0x11 - lsr r3, r0, #0x11 - ldrb r0, [r5, #0x7] - add r7, r1, r0 - ldrb r0, [r5, #0x6] - ldrb r1, [r5, #0x8] - mov r12, r0 - add r0, r0, r1 - mov r1, r12 - mov lr, r0 - cmp r1, r0 - bhs _02019354 -_02019308: - ldrb r2, [r5, #0x5] - cmp r2, r7 - bhs _02019348 - mov r0, r12 - lsl r0, r0, #0x1b - lsr r0, r0, #0x16 - lsl r1, r0, #0x1 - ldr r0, [sp, #0x4] - add r0, r0, r1 - mov r1, r12 - str r0, [sp, #0x0] - mov r0, #0x20 - add r6, r1, #0x0 - and r6, r0 -_02019324: - ldrb r0, [r5, #0x9] - mov r4, #0x20 - add r1, r3, #0x0 - lsl r0, r0, #0xc - and r4, r2 - orr r1, r0 - mov r0, #0x1f - add r4, r6, r4 - and r0, r2 - lsl r4, r4, #0x5 - add r0, r0, r4 - lsl r4, r0, #0x1 - ldr r0, [sp, #0x0] - add r2, r2, #0x1 - strh r1, [r0, r4] - add r3, r3, #0x1 - cmp r2, r7 - blo _02019324 -_02019348: - mov r0, r12 - add r1, r0, #0x1 - mov r0, lr - mov r12, r1 - cmp r1, r0 - blo _02019308 -_02019354: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02019358 -FUN_02019358: ; 0x02019358 - push {r4-r7} - ldrb r3, [r0, #0x4] - mov r1, #0x2c - add r2, r3, #0x0 - mul r2, r1 - ldr r1, [r0, #0x0] - add r1, r1, r2 - ldr r3, [r1, #0x8] - cmp r3, #0x0 - beq _020193AC - ldrb r2, [r1, #0x1d] - ldr r1, _020193B0 ; =UNK_020EDB30 - ldrb r6, [r1, r2] - ldrb r1, [r0, #0x6] - add r2, r1, #0x0 - mul r2, r6 - add r2, r3, r2 - ldrb r1, [r0, #0x5] - mov r3, #0x0 - add r4, r2, r1 - ldrh r1, [r0, #0xa] - lsl r1, r1, #0x11 - lsr r5, r1, #0x11 - ldrb r1, [r0, #0x8] - cmp r1, #0x0 - ble _020193AC - add r1, r3, #0x0 -_0201938E: - ldrb r7, [r0, #0x7] - add r2, r1, #0x0 - cmp r7, #0x0 - ble _020193A2 -_02019396: - strb r5, [r4, r2] - ldrb r7, [r0, #0x7] - add r2, r2, #0x1 - add r5, r5, #0x1 - cmp r2, r7 - blt _02019396 -_020193A2: - ldrb r2, [r0, #0x8] - add r3, r3, #0x1 - add r4, r4, r6 - cmp r3, r2 - blt _0201938E -_020193AC: - pop {r4-r7} - bx lr - .balign 4 -_020193B0: .word UNK_020EDB30 - - thumb_func_start FUN_020193B4 -FUN_020193B4: ; 0x020193B4 - push {r4-r7, lr} - sub sp, #0xc - ldrb r2, [r0, #0x4] - str r0, [sp, #0x0] - mov r0, #0x2c - add r1, r2, #0x0 - mul r1, r0 - ldr r0, [sp, #0x0] - ldr r0, [r0, #0x0] - add r1, r0, r1 - ldr r0, [r1, #0x8] - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _0201943C - ldrb r1, [r1, #0x1d] - ldr r0, _02019440 ; =UNK_020EDB30 - ldrb r0, [r0, r1] - str r0, [sp, #0x8] - ldr r0, [sp, #0x0] - ldrb r1, [r0, #0x5] - ldrb r0, [r0, #0x7] - add r2, r1, r0 - ldr r0, [sp, #0x0] - ldrb r0, [r0, #0x6] - mov r12, r0 - ldr r0, [sp, #0x0] - ldrb r1, [r0, #0x8] - mov r0, r12 - add r0, r0, r1 - mov r1, r12 - mov lr, r0 - cmp r1, r0 - bhs _0201943C - mov r6, #0x0 - mov r7, #0x20 -_020193FA: - ldr r0, [sp, #0x0] - ldrb r1, [r0, #0x5] - cmp r1, r2 - bhs _02019430 - mov r3, r12 - mov r0, #0x1f - and r3, r0 - ldr r0, [sp, #0x8] - mul r0, r3 - lsl r3, r0, #0x1 - ldr r0, [sp, #0x4] - add r5, r0, r3 - mov r3, r12 - mov r0, #0x20 - and r3, r0 -_02019418: - add r4, r1, #0x0 - and r4, r7 - mov r0, #0x1f - add r4, r3, r4 - and r0, r1 - lsl r4, r4, #0x5 - add r0, r0, r4 - lsl r0, r0, #0x1 - add r1, r1, #0x1 - strh r6, [r5, r0] - cmp r1, r2 - blo _02019418 -_02019430: - mov r0, r12 - add r1, r0, #0x1 - mov r0, lr - mov r12, r1 - cmp r1, r0 - blo _020193FA -_0201943C: - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02019440: .word UNK_020EDB30 - - thumb_func_start FUN_02019444 -FUN_02019444: ; 0x02019444 - push {r4-r7} - ldrb r3, [r0, #0x4] - mov r1, #0x2c - add r2, r3, #0x0 - mul r2, r1 - ldr r1, [r0, #0x0] - add r1, r1, r2 - ldr r3, [r1, #0x8] - cmp r3, #0x0 - beq _02019492 - ldrb r2, [r1, #0x1d] - ldr r1, _02019498 ; =UNK_020EDB30 - mov r4, #0x0 - ldrb r6, [r1, r2] - ldrb r1, [r0, #0x6] - add r2, r1, #0x0 - mul r2, r6 - ldrb r1, [r0, #0x5] - add r2, r3, r2 - add r5, r2, r1 - ldrb r1, [r0, #0x8] - cmp r1, #0x0 - ble _02019492 - add r1, r4, #0x0 - add r2, r4, #0x0 -_02019476: - ldrb r7, [r0, #0x7] - add r3, r2, #0x0 - cmp r7, #0x0 - ble _02019488 -_0201947E: - strb r1, [r5, r3] - ldrb r7, [r0, #0x7] - add r3, r3, #0x1 - cmp r3, r7 - blt _0201947E -_02019488: - ldrb r3, [r0, #0x8] - add r4, r4, #0x1 - add r5, r5, r6 - cmp r4, r3 - blt _02019476 -_02019492: - pop {r4-r7} - bx lr - nop -_02019498: .word UNK_020EDB30 - - thumb_func_start FUN_0201949C -FUN_0201949C: ; 0x0201949C - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl FUN_020192D4 - add r0, r4, #0x0 - bl FUN_02019548 - ldrb r1, [r4, #0x4] - mov r0, #0x2c - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [r4, #0x0] - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_020194C8 -FUN_020194C8: ; 0x020194C8 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_020192D4 - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl FUN_0201AC68 - add r0, r4, #0x0 - bl FUN_02019548 - pop {r4, pc} - - thumb_func_start FUN_020194E0 -FUN_020194E0: ; 0x020194E0 - push {r3-r5, lr} - add r4, r0, #0x0 - bl FUN_02019358 - ldrb r1, [r4, #0x4] - mov r0, #0x2c - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [r4, #0x0] - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x11 - lsr r0, r0, #0x11 - str r0, [sp, #0x0] - ldrb r5, [r4, #0x7] - ldrb r3, [r4, #0x8] - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - mul r3, r5 - ldr r2, [r4, #0xc] - lsl r3, r3, #0x6 - bl FUN_02017E14 - pop {r3-r5, pc} - - thumb_func_start FUN_0201951C -FUN_0201951C: ; 0x0201951C - push {r3-r5, lr} - add r4, r0, #0x0 - bl FUN_02019358 - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl FUN_0201AC68 - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x11 - lsr r0, r0, #0x11 - str r0, [sp, #0x0] - ldrb r5, [r4, #0x7] - ldrb r3, [r4, #0x8] - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - mul r3, r5 - ldr r2, [r4, #0xc] - lsl r3, r3, #0x6 - bl FUN_02017E14 - pop {r3-r5, pc} - - thumb_func_start FUN_02019548 -FUN_02019548: ; 0x02019548 - push {r3-r5, lr} - add r3, r0, #0x0 - ldrh r2, [r3, #0xa] - ldrb r1, [r3, #0x4] - mov r4, #0x2c - lsl r2, r2, #0x11 - ldr r0, [r3, #0x0] - lsr r2, r2, #0x11 - str r2, [sp, #0x0] - mul r4, r1 - add r4, r0, r4 - ldr r2, [r3, #0xc] - ldrb r5, [r3, #0x7] - ldrb r3, [r3, #0x8] - ldrb r4, [r4, #0x1f] - mul r3, r5 - mul r3, r4 - bl FUN_02017E14 - pop {r3-r5, pc} - - thumb_func_start FUN_02019570 -FUN_02019570: ; 0x02019570 - push {r3, lr} - ldrb r2, [r0, #0x4] - mov r1, #0x2c - ldr r3, [r0, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _02019588 ; =UNK_020EDB50 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .balign 4 -_02019588: .word UNK_020EDB50 - - thumb_func_start FUN_0201958C -FUN_0201958C: ; 0x0201958C - push {r3, lr} - ldrb r2, [r0, #0x4] - mov r1, #0x2c - ldr r3, [r0, #0x0] - mul r1, r2 - add r1, r3, r1 - ldrb r1, [r1, #0x1c] - lsl r2, r1, #0x2 - ldr r1, _020195A4 ; =UNK_020EDB44 - ldr r1, [r1, r2] - blx r1 - pop {r3, pc} - .balign 4 -_020195A4: .word UNK_020EDB44 - - thumb_func_start FUN_020195A8 -FUN_020195A8: ; 0x020195A8 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl FUN_020193B4 - ldrb r1, [r4, #0x4] - mov r0, #0x2c - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [r4, #0x0] - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_020195D0 -FUN_020195D0: ; 0x020195D0 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_020193B4 - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl FUN_0201AC68 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020195E4 -FUN_020195E4: ; 0x020195E4 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl FUN_02019444 - ldrb r1, [r4, #0x4] - mov r0, #0x2c - add r2, r1, #0x0 - mul r2, r0 - ldr r0, [r4, #0x0] - add r3, r0, r2 - ldr r2, [r3, #0x10] - str r2, [sp, #0x0] - ldr r2, [r3, #0x8] - ldr r3, [r3, #0xc] - bl FUN_02017CE8 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_0201960C -FUN_0201960C: ; 0x0201960C - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02019444 - ldrb r1, [r4, #0x4] - ldr r0, [r4, #0x0] - bl FUN_0201AC68 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02019620 -FUN_02019620: ; 0x02019620 - push {r3-r5, lr} - add r4, r0, #0x0 - ldrb r2, [r4, #0x4] - mov r0, #0x2c - ldr r3, [r4, #0x0] - mul r0, r2 - add r0, r3, r0 - ldrb r2, [r0, #0x1f] - cmp r2, #0x20 - bne _0201963C - lsl r0, r1, #0x4 - orr r0, r1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -_0201963C: - lsl r3, r1, #0x18 - lsl r0, r1, #0x10 - orr r0, r3 - lsl r5, r1, #0x8 - orr r0, r5 - orr r0, r1 - ldr r1, [r4, #0xc] - ldrb r3, [r4, #0x8] - ldrb r4, [r4, #0x7] - mul r2, r4 - mul r2, r3 - bl MIi_CpuClearFast - pop {r3-r5, pc} - - thumb_func_start FUN_02019658 -FUN_02019658: ; 0x02019658 - push {r4-r5, lr} - sub sp, #0x1c - add r4, sp, #0x18 - ldrh r5, [r4, #0x10] - str r5, [sp, #0x0] - ldrh r5, [r4, #0x14] - str r5, [sp, #0x4] - ldrh r5, [r4, #0x18] - str r5, [sp, #0x8] - ldrh r5, [r4, #0x1c] - str r5, [sp, #0xc] - ldrh r5, [r4, #0x20] - str r5, [sp, #0x10] - ldrh r4, [r4, #0x24] - str r4, [sp, #0x14] - mov r4, #0x0 - str r4, [sp, #0x18] - bl FUN_02019684 - add sp, #0x1c - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_02019684 -FUN_02019684: ; 0x02019684 - push {r4-r5, lr} - sub sp, #0x24 - str r1, [sp, #0x1c] - add r4, sp, #0x20 - ldrh r5, [r4, #0x10] - add r1, sp, #0x14 - strh r5, [r1, #0xc] - ldrh r5, [r4, #0x14] - strh r5, [r1, #0xe] - ldr r5, [r0, #0xc] - str r5, [sp, #0x14] - ldrb r5, [r0, #0x7] - lsl r5, r5, #0x3 - strh r5, [r1, #0x4] - ldrb r5, [r0, #0x8] - lsl r5, r5, #0x3 - strh r5, [r1, #0x6] - ldrb r5, [r0, #0x4] - ldr r1, [r0, #0x0] - mov r0, #0x2c - mul r0, r5 - add r0, r1, r0 - ldrb r0, [r0, #0x1e] - add r1, sp, #0x14 - cmp r0, #0x0 - ldrh r0, [r4, #0x18] - bne _020196D6 - str r0, [sp, #0x0] - ldrh r0, [r4, #0x1c] - str r0, [sp, #0x4] - ldrh r0, [r4, #0x20] - str r0, [sp, #0x8] - ldrh r0, [r4, #0x24] - str r0, [sp, #0xc] - ldrh r0, [r4, #0x28] - str r0, [sp, #0x10] - add r0, sp, #0x1c - bl FUN_02018A60 - add sp, #0x24 - pop {r4-r5, pc} -_020196D6: - str r0, [sp, #0x0] - ldrh r0, [r4, #0x1c] - str r0, [sp, #0x4] - ldrh r0, [r4, #0x20] - str r0, [sp, #0x8] - ldrh r0, [r4, #0x24] - str r0, [sp, #0xc] - ldrh r0, [r4, #0x28] - str r0, [sp, #0x10] - add r0, sp, #0x1c - bl FUN_02018CA0 - add sp, #0x24 - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_020196F4 -FUN_020196F4: ; 0x020196F4 - push {r3-r5, lr} - sub sp, #0x10 - add r5, r1, #0x0 - ldr r1, [r0, #0xc] - add r4, r2, #0x0 - str r1, [sp, #0x8] - ldrb r1, [r0, #0x7] - add r2, r3, #0x0 - lsl r3, r1, #0x3 - add r1, sp, #0x8 - strh r3, [r1, #0x4] - ldrb r3, [r0, #0x8] - lsl r3, r3, #0x3 - strh r3, [r1, #0x6] - ldrb r3, [r0, #0x4] - ldr r1, [r0, #0x0] - mov r0, #0x2c - mul r0, r3 - add r0, r1, r0 - ldrb r0, [r0, #0x1e] - add r3, sp, #0x10 - cmp r0, #0x0 - bne _02019736 - ldrh r0, [r3, #0x14] - add r1, r4, #0x0 - str r0, [sp, #0x0] - str r5, [sp, #0x4] - ldrh r3, [r3, #0x10] - add r0, sp, #0x8 - bl FUN_02018E88 - add sp, #0x10 - pop {r3-r5, pc} -_02019736: - ldrh r0, [r3, #0x14] - add r1, r4, #0x0 - str r0, [sp, #0x0] - str r5, [sp, #0x4] - ldrh r3, [r3, #0x10] - add r0, sp, #0x8 - bl FUN_02018F4C - add sp, #0x10 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0201974C -FUN_0201974C: ; 0x0201974C - push {r4-r7, lr} - sub sp, #0x1fc - sub sp, #0x118 - add r5, r0, #0x0 - ldr r0, [sp, #0x330] - str r1, [sp, #0x0] - str r0, [sp, #0x330] - add r1, sp, #0x318 - ldrh r1, [r1, #0x10] - ldr r0, [r5, #0xc] - str r1, [sp, #0x5c] - ldrb r1, [r5, #0x7] - str r0, [sp, #0x278] - ldrb r0, [r5, #0x8] - lsl r1, r1, #0x13 - lsr r4, r1, #0x10 - ldr r1, [sp, #0x5c] - lsl r0, r0, #0x13 - sub r1, r4, r1 - lsr r0, r0, #0x10 - str r4, [sp, #0x58] - str r1, [sp, #0x8] - cmp r1, r2 - blt _0201977E - str r2, [sp, #0x8] -_0201977E: - add r1, sp, #0x318 - ldrh r1, [r1, #0x14] - sub r0, r0, r1 - str r1, [sp, #0x48] - str r0, [sp, #0x4] - cmp r0, r3 - blt _0201978E - str r3, [sp, #0x4] -_0201978E: - ldr r0, [sp, #0x8] - mov r4, #0x0 - cmp r0, #0x8 - ble _0201979E - mov r0, #0x1 - orr r0, r4 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_0201979E: - ldr r0, [sp, #0x4] - cmp r0, #0x8 - ble _020197AC - mov r0, #0x2 - orr r0, r4 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_020197AC: - ldrh r0, [r5, #0xa] - lsl r0, r0, #0x10 - lsr r0, r0, #0x1f - beq _020197B8 - bl FUN_0201A12C -_020197B8: - cmp r4, #0x3 - bls _020197C0 - bl FUN_0201A8BC -_020197C0: - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020197CC: ; jump table (using 16-bit offset) - .short _020197D4 - _020197CC - 2; case 0 - .short _020198D6 - _020197CC - 2; case 1 - .short _02019AE6 - _020197CC - 2; case 2 - .short _02019D06 - _020197CC - 2; case 3 -_020197D4: - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x70] - mov r0, #0x0 - str r0, [sp, #0x274] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bgt _020197EA - bl FUN_0201A8BC -_020197EA: - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x6c] -_020197F6: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x70] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x26c] - ldr r0, [sp, #0x274] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x270] - ldr r0, [sp, #0x8] - mov r1, #0x0 - cmp r0, #0x0 - ble _020198AA - ble _020198AA - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x48] - ldr r6, [sp, #0x6c] - lsl r5, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x48] - str r6, [sp, #0x68] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - ldr r5, [sp, #0x6c] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0x64] - str r0, [sp, #0x60] -_02019848: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019B68 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0x68] - str r5, [sp, #0x27c] - add r0, r5, r0 - ldr r5, [sp, #0x26c] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _0201989C - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x280] - ldrb r5, [r0, r7] - str r5, [sp, #0x284] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x284] - and r6, r5 - ldr r5, [sp, #0x280] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x270] - cmp r0, #0x0 - beq _0201989C - ldr r6, [sp, #0x27c] - ldr r0, [sp, #0x64] - add r6, r6, r0 - ldr r0, [sp, #0x60] - strb r5, [r0, r6] -_0201989C: - ldr r0, [sp, #0x8] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019848 -_020198AA: - ldr r0, [sp, #0x270] - cmp r0, #0x0 - beq _020198B8 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _020198BE -_020198B8: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_020198BE: - ldr r0, [sp, #0x0] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x274] - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x274] - cmp r1, r0 - blt _020197F6 - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} -_020198D6: - ldr r0, [sp, #0x0] - str r0, [sp, #0x25c] - ldr r0, [sp, #0x48] - str r0, [sp, #0x264] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x54] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x84] - mov r0, #0x0 - str r0, [sp, #0x268] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _020199D2 - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x80] -_02019902: - ldr r0, [sp, #0x25c] - ldr r1, [sp, #0x84] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x258] - ldr r0, [sp, #0x268] - ldr r6, [sp, #0x80] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x260] - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x264] - mov r1, #0x0 - lsl r5, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x264] - str r6, [sp, #0x7c] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - ldr r5, [sp, #0x80] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0x78] - str r0, [sp, #0x74] -_0201994C: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019B68 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0x7c] - str r5, [sp, #0x288] - add r0, r5, r0 - ldr r5, [sp, #0x258] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _020199A0 - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x28c] - ldrb r5, [r0, r7] - str r5, [sp, #0x290] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x290] - and r6, r5 - ldr r5, [sp, #0x28c] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x260] - cmp r0, #0x0 - beq _020199A0 - ldr r6, [sp, #0x288] - ldr r0, [sp, #0x78] - add r6, r6, r0 - ldr r0, [sp, #0x74] - strb r5, [r0, r6] -_020199A0: - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, #0x8 - blt _0201994C - ldr r0, [sp, #0x260] - cmp r0, #0x0 - beq _020199BA - ldr r0, [sp, #0x264] - add r0, r0, #0x2 - str r0, [sp, #0x264] - b _020199C0 -_020199BA: - ldr r0, [sp, #0x264] - add r0, r0, #0x1 - str r0, [sp, #0x264] -_020199C0: - ldr r0, [sp, #0x25c] - add r0, r0, #0x4 - str r0, [sp, #0x25c] - ldr r0, [sp, #0x268] - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x268] - cmp r1, r0 - blt _02019902 -_020199D2: - ldr r0, [sp, #0x0] - add r0, #0x20 - str r0, [sp, #0x0] - ldr r0, [sp, #0x54] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x98] - mov r0, #0x0 - str r0, [sp, #0x254] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bgt _020199EE - bl FUN_0201A8BC -_020199EE: - ldr r0, [sp, #0x5c] - mov r1, #0x7 - add r0, #0x8 - str r0, [sp, #0x5c] - ldr r0, [sp, #0x58] - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x94] -_02019A00: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x98] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x24c] - ldr r0, [sp, #0x254] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x250] - ldr r0, [sp, #0x8] - mov r1, #0x0 - str r0, [sp, #0x294] - sub r0, #0x8 - str r0, [sp, #0x294] - cmp r0, #0x0 - ble _02019ABA - ble _02019ABA - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x48] - ldr r6, [sp, #0x94] - lsl r5, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x48] - str r6, [sp, #0x90] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - ldr r5, [sp, #0x94] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0x8c] - str r0, [sp, #0x88] -_02019A58: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019B68 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0x90] - str r5, [sp, #0x298] - add r0, r5, r0 - ldr r5, [sp, #0x24c] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019AAC - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x29c] - ldrb r5, [r0, r7] - str r5, [sp, #0x2a0] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2a0] - and r6, r5 - ldr r5, [sp, #0x29c] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x250] - cmp r0, #0x0 - beq _02019AAC - ldr r6, [sp, #0x298] - ldr r0, [sp, #0x8c] - add r6, r6, r0 - ldr r0, [sp, #0x88] - strb r5, [r0, r6] -_02019AAC: - ldr r0, [sp, #0x294] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019A58 -_02019ABA: - ldr r0, [sp, #0x250] - cmp r0, #0x0 - beq _02019AC8 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _02019ACE -_02019AC8: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_02019ACE: - ldr r0, [sp, #0x0] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x254] - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x254] - cmp r1, r0 - blt _02019A00 - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} -_02019AE6: - ldr r0, [sp, #0x0] - mov r1, #0x7 - str r0, [sp, #0x23c] - ldr r0, [sp, #0x48] - str r0, [sp, #0x244] - mov r0, #0x0 - str r0, [sp, #0x248] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xa8] - ldr r0, [sp, #0x58] - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x40] -_02019B06: - ldr r0, [sp, #0x23c] - ldr r1, [sp, #0xa8] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x238] - ldr r0, [sp, #0x248] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x240] - ldr r0, [sp, #0x8] - mov r1, #0x0 - cmp r0, #0x0 - ble _02019BC2 - ble _02019BC2 - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x244] - ldr r6, [sp, #0x40] - lsl r5, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x244] - str r6, [sp, #0xa4] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019B68 ; =0x00003FE0 - ldr r5, [sp, #0x40] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0xa0] - str r0, [sp, #0x9c] -_02019B58: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019B68 ; =0x00003FE0 - b _02019B6C - nop -_02019B68: .word 0x00003FE0 -_02019B6C: - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xa4] - str r5, [sp, #0x2a4] - add r0, r5, r0 - ldr r5, [sp, #0x238] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019BB4 - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2a8] - ldrb r5, [r0, r7] - str r5, [sp, #0x2ac] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2ac] - and r6, r5 - ldr r5, [sp, #0x2a8] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x240] - cmp r0, #0x0 - beq _02019BB4 - ldr r6, [sp, #0x2a4] - ldr r0, [sp, #0xa0] - add r6, r6, r0 - ldr r0, [sp, #0x9c] - strb r5, [r0, r6] -_02019BB4: - ldr r0, [sp, #0x8] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019B58 -_02019BC2: - ldr r0, [sp, #0x240] - cmp r0, #0x0 - beq _02019BD0 - ldr r0, [sp, #0x244] - add r0, r0, #0x2 - str r0, [sp, #0x244] - b _02019BD6 -_02019BD0: - ldr r0, [sp, #0x244] - add r0, r0, #0x1 - str r0, [sp, #0x244] -_02019BD6: - ldr r0, [sp, #0x23c] - add r0, r0, #0x4 - str r0, [sp, #0x23c] - ldr r0, [sp, #0x248] - add r0, r0, #0x1 - str r0, [sp, #0x248] - cmp r0, #0x8 - blt _02019B06 - ldr r0, [sp, #0x0] - mov r2, #0x0 - add r0, #0x40 - str r0, [sp, #0x0] - ldr r0, [sp, #0x48] - mov r1, #0x1 - add r0, #0x8 - str r0, [sp, #0x48] -_02019BF6: - ldr r0, [sp, #0x330] - asr r0, r2 - tst r0, r1 - beq _02019C04 - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_02019C04: - add r2, r2, #0x1 - cmp r2, #0x8 - blt _02019BF6 - ldr r0, [sp, #0x330] - asr r0, r0, #0x8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xb8] - mov r0, #0x0 - str r0, [sp, #0x20] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - bgt _02019C24 - bl FUN_0201A8BC -_02019C24: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0xb8] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x230] - ldr r0, [sp, #0x20] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x234] - ldr r0, [sp, #0x8] - mov r1, #0x0 - cmp r0, #0x0 - ble _02019CD8 - ble _02019CD8 - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x48] - ldr r6, [sp, #0x40] - lsl r5, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x48] - str r6, [sp, #0xb4] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - ldr r5, [sp, #0x40] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0xb0] - str r0, [sp, #0xac] -_02019C76: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019F88 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xb4] - str r5, [sp, #0x2b0] - add r0, r5, r0 - ldr r5, [sp, #0x230] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019CCA - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2b4] - ldrb r5, [r0, r7] - str r5, [sp, #0x2b8] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2b8] - and r6, r5 - ldr r5, [sp, #0x2b4] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x234] - cmp r0, #0x0 - beq _02019CCA - ldr r6, [sp, #0x2b0] - ldr r0, [sp, #0xb0] - add r6, r6, r0 - ldr r0, [sp, #0xac] - strb r5, [r0, r6] -_02019CCA: - ldr r0, [sp, #0x8] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019C76 -_02019CD8: - ldr r0, [sp, #0x234] - cmp r0, #0x0 - beq _02019CE6 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _02019CEC -_02019CE6: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_02019CEC: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x20] - sub r1, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x20] - cmp r0, r1 - blt _02019C24 - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} -_02019D06: - ldr r0, [sp, #0x0] - str r0, [sp, #0x220] - ldr r0, [sp, #0x48] - str r0, [sp, #0x228] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0x0 - str r0, [sp, #0x22c] - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x38] -_02019D2A: - ldr r0, [sp, #0x220] - ldr r1, [sp, #0x3c] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x21c] - ldr r0, [sp, #0x22c] - ldr r6, [sp, #0x38] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x224] - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x228] - mov r1, #0x0 - lsl r5, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x228] - str r6, [sp, #0xc4] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - ldr r5, [sp, #0x38] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - str r3, [sp, #0x34] - add r4, r1, #0x0 - str r5, [sp, #0xc0] - str r0, [sp, #0xbc] -_02019D76: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019F88 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xc4] - str r5, [sp, #0x2bc] - add r0, r5, r0 - ldr r5, [sp, #0x21c] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019DCA - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2c0] - ldrb r5, [r0, r7] - str r5, [sp, #0x2c4] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2c4] - and r6, r5 - ldr r5, [sp, #0x2c0] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x224] - cmp r0, #0x0 - beq _02019DCA - ldr r6, [sp, #0x2bc] - ldr r0, [sp, #0xc0] - add r6, r6, r0 - ldr r0, [sp, #0xbc] - strb r5, [r0, r6] -_02019DCA: - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, #0x8 - blt _02019D76 - ldr r0, [sp, #0x224] - cmp r0, #0x0 - beq _02019DE4 - ldr r0, [sp, #0x228] - add r0, r0, #0x2 - str r0, [sp, #0x228] - b _02019DEA -_02019DE4: - ldr r0, [sp, #0x228] - add r0, r0, #0x1 - str r0, [sp, #0x228] -_02019DEA: - ldr r0, [sp, #0x220] - add r0, r0, #0x4 - str r0, [sp, #0x220] - ldr r0, [sp, #0x22c] - add r0, r0, #0x1 - str r0, [sp, #0x22c] - cmp r0, #0x8 - blt _02019D2A - ldr r0, [sp, #0x0] - str r0, [sp, #0x20c] - add r0, #0x20 - str r0, [sp, #0x20c] - ldr r0, [sp, #0x48] - str r0, [sp, #0x214] - mov r0, #0x0 - str r0, [sp, #0x218] - ldr r0, [sp, #0x5c] - str r0, [sp, #0xd4] - add r0, #0x8 - str r0, [sp, #0xd4] -_02019E12: - ldr r0, [sp, #0x20c] - ldr r1, [sp, #0x3c] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0xd4] - str r0, [sp, #0x208] - ldr r0, [sp, #0x218] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x210] - ldr r0, [sp, #0x8] - mov r1, #0x0 - str r0, [sp, #0x2c8] - sub r0, #0x8 - str r0, [sp, #0x2c8] - cmp r0, #0x0 - ble _02019ECC - ble _02019ECC - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x214] - ldr r6, [sp, #0x38] - lsl r5, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x214] - str r6, [sp, #0xd0] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - ldr r5, [sp, #0x38] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0xcc] - str r0, [sp, #0xc8] -_02019E6A: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019F88 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xd0] - str r5, [sp, #0x2cc] - add r0, r5, r0 - ldr r5, [sp, #0x208] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019EBE - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2d0] - ldrb r5, [r0, r7] - str r5, [sp, #0x2d4] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2d4] - and r6, r5 - ldr r5, [sp, #0x2d0] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x210] - cmp r0, #0x0 - beq _02019EBE - ldr r6, [sp, #0x2cc] - ldr r0, [sp, #0xcc] - add r6, r6, r0 - ldr r0, [sp, #0xc8] - strb r5, [r0, r6] -_02019EBE: - ldr r0, [sp, #0x2c8] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _02019E6A -_02019ECC: - ldr r0, [sp, #0x210] - cmp r0, #0x0 - beq _02019EDA - ldr r0, [sp, #0x214] - add r0, r0, #0x2 - str r0, [sp, #0x214] - b _02019EE0 -_02019EDA: - ldr r0, [sp, #0x214] - add r0, r0, #0x1 - str r0, [sp, #0x214] -_02019EE0: - ldr r0, [sp, #0x20c] - add r0, r0, #0x4 - str r0, [sp, #0x20c] - ldr r0, [sp, #0x218] - add r0, r0, #0x1 - str r0, [sp, #0x218] - cmp r0, #0x8 - blt _02019E12 - ldr r0, [sp, #0x0] - mov r2, #0x0 - str r0, [sp, #0x1fc] - add r0, #0x40 - str r0, [sp, #0x1fc] - ldr r0, [sp, #0x48] - mov r1, #0x1 - add r0, #0x8 - str r0, [sp, #0x48] - str r0, [sp, #0x204] -_02019F04: - ldr r0, [sp, #0x330] - asr r0, r2 - tst r0, r1 - beq _02019F12 - ldr r0, [sp, #0x204] - add r0, r0, #0x1 - str r0, [sp, #0x204] -_02019F12: - add r2, r2, #0x1 - cmp r2, #0x8 - blt _02019F04 - ldr r0, [sp, #0x330] - asr r0, r0, #0x8 - str r0, [sp, #0x50] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xe4] - mov r0, #0x0 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - ble _0201A008 -_02019F30: - ldr r0, [sp, #0x1fc] - ldr r1, [sp, #0xe4] - ldr r0, [r0, #0x0] - ldr r6, [sp, #0x38] - str r0, [sp, #0x1f8] - ldr r0, [sp, #0x1c] - ldr r2, [sp, #0x5c] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x200] - ldr r0, [sp, #0x204] - mov r1, #0x0 - lsl r5, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x204] - str r6, [sp, #0xe0] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _02019F88 ; =0x00003FE0 - ldr r5, [sp, #0x38] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - ldr r3, [sp, #0x34] - add r4, r1, #0x0 - str r5, [sp, #0xdc] - str r0, [sp, #0xd8] -_02019F78: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _02019F88 ; =0x00003FE0 - b _02019F8C - nop -_02019F88: .word 0x00003FE0 -_02019F8C: - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xe0] - str r5, [sp, #0x2d8] - add r0, r5, r0 - ldr r5, [sp, #0x1f8] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _02019FD4 - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2dc] - ldrb r5, [r0, r7] - str r5, [sp, #0x2e0] - mov r5, #0xf0 - asr r5, r6 - ldr r6, [sp, #0x2e0] - and r6, r5 - ldr r5, [sp, #0x2dc] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x200] - cmp r0, #0x0 - beq _02019FD4 - ldr r6, [sp, #0x2d8] - ldr r0, [sp, #0xdc] - add r6, r6, r0 - ldr r0, [sp, #0xd8] - strb r5, [r0, r6] -_02019FD4: - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, #0x8 - blt _02019F78 - ldr r0, [sp, #0x200] - cmp r0, #0x0 - beq _02019FEE - ldr r0, [sp, #0x204] - add r0, r0, #0x2 - str r0, [sp, #0x204] - b _02019FF4 -_02019FEE: - ldr r0, [sp, #0x204] - add r0, r0, #0x1 - str r0, [sp, #0x204] -_02019FF4: - ldr r0, [sp, #0x1fc] - ldr r1, [sp, #0x4] - add r0, r0, #0x4 - str r0, [sp, #0x1fc] - ldr r0, [sp, #0x1c] - sub r1, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x1c] - cmp r0, r1 - blt _02019F30 -_0201A008: - ldr r0, [sp, #0x0] - mov r2, #0x0 - add r0, #0x60 - str r0, [sp, #0x0] - mov r1, #0x1 -_0201A012: - ldr r0, [sp, #0x330] - asr r0, r2 - tst r0, r1 - beq _0201A020 - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A020: - add r2, r2, #0x1 - cmp r2, #0x8 - blt _0201A012 - ldr r0, [sp, #0x50] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xf4] - mov r0, #0x0 - str r0, [sp, #0x18] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - bgt _0201A03E - bl FUN_0201A8BC -_0201A03E: - ldr r0, [sp, #0x5c] - add r0, #0x8 - str r0, [sp, #0x5c] -_0201A044: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0xf4] - ldr r0, [r0, #0x0] - ldr r2, [sp, #0x5c] - str r0, [sp, #0x1f0] - ldr r0, [sp, #0x18] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x1f4] - ldr r0, [sp, #0x8] - mov r1, #0x0 - str r0, [sp, #0x2e4] - sub r0, #0x8 - str r0, [sp, #0x2e4] - cmp r0, #0x0 - ble _0201A0FE - ble _0201A0FE - add r0, r2, #0x0 - lsl r3, r0, #0x2 - ldr r0, [sp, #0x48] - ldr r6, [sp, #0x38] - lsl r5, r0, #0x2 - ldr r0, _0201A3A8 ; =0x00003FE0 - add r7, r5, #0x0 - and r0, r5 - mul r6, r0 - mov r0, #0x1c - and r7, r0 - ldr r0, [sp, #0x48] - str r6, [sp, #0xf0] - add r0, r0, #0x1 - lsl r6, r0, #0x2 - ldr r0, _0201A3A8 ; =0x00003FE0 - ldr r5, [sp, #0x38] - and r0, r6 - mul r5, r0 - mov r0, #0x1c - and r0, r6 - add r4, r1, #0x0 - str r5, [sp, #0xec] - str r0, [sp, #0xe8] -_0201A09C: - asr r5, r2, #0x1 - mov r0, #0x3 - and r5, r0 - ldr r0, [sp, #0x278] - add r0, r0, r5 - ldr r5, _0201A3A8 ; =0x00003FE0 - and r5, r3 - add r5, r0, r5 - ldr r0, [sp, #0xf0] - str r5, [sp, #0x2e8] - add r0, r5, r0 - ldr r5, [sp, #0x1f0] - add r6, r5, #0x0 - lsr r6, r4 - mov r5, #0xf - and r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - beq _0201A0F0 - lsl r6, r2, #0x1f - lsr r6, r6, #0x1d - lsl r5, r6 - str r5, [sp, #0x2ec] - ldrb r5, [r0, r7] - mov r12, r5 - mov r5, #0xf0 - asr r5, r6 - mov r6, r12 - and r6, r5 - ldr r5, [sp, #0x2ec] - orr r5, r6 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - strb r5, [r0, r7] - ldr r0, [sp, #0x1f4] - cmp r0, #0x0 - beq _0201A0F0 - ldr r6, [sp, #0x2e8] - ldr r0, [sp, #0xec] - add r6, r6, r0 - ldr r0, [sp, #0xe8] - strb r5, [r0, r6] -_0201A0F0: - ldr r0, [sp, #0x2e4] - add r1, r1, #0x1 - add r4, r4, #0x4 - add r3, r3, #0x4 - add r2, r2, #0x1 - cmp r1, r0 - blt _0201A09C -_0201A0FE: - ldr r0, [sp, #0x1f4] - cmp r0, #0x0 - beq _0201A10C - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A112 -_0201A10C: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A112: - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0x18] - sub r1, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x18] - cmp r0, r1 - blt _0201A044 - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} - - thumb_func_start FUN_0201A12C -FUN_0201A12C: ; 0x0201A12C - lsl r1, r2, #0x2 - mul r1, r3 - ldr r3, [r5, #0x0] - ldrb r2, [r5, #0x9] - ldr r0, [sp, #0x0] - ldr r3, [r3, #0x0] - lsl r1, r1, #0x3 - bl FUN_02018848 - str r0, [sp, #0x1ec] - cmp r4, #0x3 - bhi _0201A21E - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0201A150: ; jump table (using 16-bit offset) - .short _0201A158 - _0201A150 - 2; case 0 - .short _0201A220 - _0201A150 - 2; case 1 - .short _0201A3CA - _0201A150 - 2; case 2 - .short _0201A56E - _0201A150 - 2; case 3 -_0201A158: - ldr r0, [sp, #0x330] - ldr r7, [sp, #0x1ec] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x10c] - mov r0, #0x0 - str r0, [sp, #0x1e8] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _0201A21E - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x108] -_0201A178: - ldr r1, [sp, #0x10c] - ldr r0, [sp, #0x1e8] - mov r4, #0x0 - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x310] - ldr r0, [sp, #0x8] - ldr r5, [sp, #0x5c] - cmp r0, #0x0 - ble _0201A1FC - ble _0201A1FC - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x108] - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x100] - ldr r0, [sp, #0x48] - str r2, [sp, #0x104] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - ldr r2, [sp, #0x108] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0xfc] - str r0, [sp, #0xf8] -_0201A1C4: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A3AC ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x104] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A1F0 - ldr r0, [sp, #0x100] - strb r1, [r2, r0] - ldr r0, [sp, #0x310] - cmp r0, #0x0 - beq _0201A1F0 - ldr r0, [sp, #0xfc] - add r2, r3, r0 - ldr r0, [sp, #0xf8] - strb r1, [r0, r2] -_0201A1F0: - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r0 - blt _0201A1C4 -_0201A1FC: - ldr r0, [sp, #0x310] - cmp r0, #0x0 - beq _0201A20A - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A210 -_0201A20A: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A210: - ldr r0, [sp, #0x1e8] - add r7, #0x8 - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x1e8] - cmp r1, r0 - blt _0201A178 -_0201A21E: - b _0201A8B6 -_0201A220: - ldr r0, [sp, #0x48] - ldr r7, [sp, #0x1ec] - str r0, [sp, #0x1e0] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x4c] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x124] - mov r0, #0x0 - str r0, [sp, #0x1e4] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _0201A2E6 - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x120] -_0201A24A: - ldr r1, [sp, #0x124] - ldr r0, [sp, #0x1e4] - ldr r5, [sp, #0x5c] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x30c] - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x1e0] - ldr r2, [sp, #0x120] - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x118] - ldr r0, [sp, #0x1e0] - str r2, [sp, #0x11c] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - ldr r2, [sp, #0x120] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - mov r4, #0x0 - str r2, [sp, #0x114] - str r0, [sp, #0x110] -_0201A28E: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A3AC ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x11c] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A2BA - ldr r0, [sp, #0x118] - strb r1, [r2, r0] - ldr r0, [sp, #0x30c] - cmp r0, #0x0 - beq _0201A2BA - ldr r0, [sp, #0x114] - add r2, r3, r0 - ldr r0, [sp, #0x110] - strb r1, [r0, r2] -_0201A2BA: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, #0x8 - blt _0201A28E - ldr r0, [sp, #0x30c] - cmp r0, #0x0 - beq _0201A2D2 - ldr r0, [sp, #0x1e0] - add r0, r0, #0x2 - str r0, [sp, #0x1e0] - b _0201A2D8 -_0201A2D2: - ldr r0, [sp, #0x1e0] - add r0, r0, #0x1 - str r0, [sp, #0x1e0] -_0201A2D8: - ldr r0, [sp, #0x1e4] - add r7, #0x8 - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x1e4] - cmp r1, r0 - blt _0201A24A -_0201A2E6: - ldr r0, [sp, #0x1ec] - str r0, [sp, #0x308] - add r0, #0x40 - str r0, [sp, #0x308] - ldr r0, [sp, #0x4c] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x13c] - mov r0, #0x0 - str r0, [sp, #0x1dc] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - ble _0201A3C8 - ldr r0, [sp, #0x5c] - mov r1, #0x7 - add r0, #0x8 - str r0, [sp, #0x5c] - ldr r0, [sp, #0x58] - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x138] -_0201A312: - ldr r1, [sp, #0x13c] - ldr r0, [sp, #0x1dc] - ldr r7, [sp, #0x8] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - sub r7, #0x8 - mov r4, #0x0 - str r0, [sp, #0x1d8] - ldr r5, [sp, #0x5c] - cmp r7, #0x0 - ble _0201A398 - ble _0201A398 - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x138] - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x130] - ldr r0, [sp, #0x48] - str r2, [sp, #0x134] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A3AC ; =0x00007FC0 - ldr r2, [sp, #0x138] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x12c] - str r0, [sp, #0x128] -_0201A360: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A3AC ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x134] - add r2, r3, r0 - ldr r0, [sp, #0x308] - ldrb r1, [r0, r4] - cmp r1, #0x0 - beq _0201A38E - ldr r0, [sp, #0x130] - strb r1, [r2, r0] - ldr r0, [sp, #0x1d8] - cmp r0, #0x0 - beq _0201A38E - ldr r0, [sp, #0x12c] - add r2, r3, r0 - ldr r0, [sp, #0x128] - strb r1, [r0, r2] -_0201A38E: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r7 - blt _0201A360 -_0201A398: - ldr r0, [sp, #0x1d8] - cmp r0, #0x0 - beq _0201A3B0 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A3B6 - nop -_0201A3A8: .word 0x00003FE0 -_0201A3AC: .word 0x00007FC0 -_0201A3B0: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A3B6: - ldr r0, [sp, #0x308] - add r0, #0x8 - str r0, [sp, #0x308] - ldr r0, [sp, #0x1dc] - add r1, r0, #0x1 - ldr r0, [sp, #0x4] - str r1, [sp, #0x1dc] - cmp r1, r0 - blt _0201A312 -_0201A3C8: - b _0201A8B6 -_0201A3CA: - ldr r0, [sp, #0x48] - mov r1, #0x7 - str r0, [sp, #0x1d0] - mov r0, #0x0 - str r0, [sp, #0x1d4] - ldr r0, [sp, #0x330] - ldr r7, [sp, #0x1ec] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x150] - ldr r0, [sp, #0x58] - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x30] -_0201A3E8: - ldr r1, [sp, #0x150] - ldr r0, [sp, #0x1d4] - mov r4, #0x0 - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x304] - ldr r0, [sp, #0x8] - ldr r5, [sp, #0x5c] - cmp r0, #0x0 - ble _0201A46C - ble _0201A46C - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x1d0] - ldr r2, [sp, #0x30] - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x148] - ldr r0, [sp, #0x1d0] - str r2, [sp, #0x14c] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - ldr r2, [sp, #0x30] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x144] - str r0, [sp, #0x140] -_0201A434: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A748 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x14c] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A460 - ldr r0, [sp, #0x148] - strb r1, [r2, r0] - ldr r0, [sp, #0x304] - cmp r0, #0x0 - beq _0201A460 - ldr r0, [sp, #0x144] - add r2, r3, r0 - ldr r0, [sp, #0x140] - strb r1, [r0, r2] -_0201A460: - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r0 - blt _0201A434 -_0201A46C: - ldr r0, [sp, #0x304] - cmp r0, #0x0 - beq _0201A47A - ldr r0, [sp, #0x1d0] - add r0, r0, #0x2 - str r0, [sp, #0x1d0] - b _0201A480 -_0201A47A: - ldr r0, [sp, #0x1d0] - add r0, r0, #0x1 - str r0, [sp, #0x1d0] -_0201A480: - ldr r0, [sp, #0x1d4] - add r7, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x1d4] - cmp r0, #0x8 - blt _0201A3E8 - ldr r0, [sp, #0x48] - ldr r7, [sp, #0x1ec] - add r0, #0x8 - str r0, [sp, #0x48] - add r7, #0x80 - mov r0, #0x0 - mov r2, #0x1 -_0201A49A: - ldr r1, [sp, #0x330] - asr r1, r0 - tst r1, r2 - beq _0201A4A8 - ldr r1, [sp, #0x48] - add r1, r1, #0x1 - str r1, [sp, #0x48] -_0201A4A8: - add r0, r0, #0x1 - cmp r0, #0x8 - blt _0201A49A - ldr r0, [sp, #0x330] - asr r0, r0, #0x8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x164] - mov r0, #0x0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - ble _0201A56C -_0201A4C4: - ldr r1, [sp, #0x164] - ldr r0, [sp, #0x14] - mov r4, #0x0 - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x300] - ldr r0, [sp, #0x8] - ldr r5, [sp, #0x5c] - cmp r0, #0x0 - ble _0201A548 - ble _0201A548 - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x30] - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x15c] - ldr r0, [sp, #0x48] - str r2, [sp, #0x160] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - ldr r2, [sp, #0x30] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x158] - str r0, [sp, #0x154] -_0201A510: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A748 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x160] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A53C - ldr r0, [sp, #0x15c] - strb r1, [r2, r0] - ldr r0, [sp, #0x300] - cmp r0, #0x0 - beq _0201A53C - ldr r0, [sp, #0x158] - add r2, r3, r0 - ldr r0, [sp, #0x154] - strb r1, [r0, r2] -_0201A53C: - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r0 - blt _0201A510 -_0201A548: - ldr r0, [sp, #0x300] - cmp r0, #0x0 - beq _0201A556 - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A55C -_0201A556: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A55C: - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x4] - add r0, r0, #0x1 - sub r1, #0x8 - add r7, #0x8 - str r0, [sp, #0x14] - cmp r0, r1 - blt _0201A4C4 -_0201A56C: - b _0201A8B6 -_0201A56E: - ldr r0, [sp, #0x48] - ldr r7, [sp, #0x1ec] - str r0, [sp, #0x1c8] - ldr r0, [sp, #0x330] - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0x0 - str r0, [sp, #0x1cc] - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x58] - mov r1, #0x7 - and r1, r0 - add r0, r0, r1 - asr r0, r0, #0x3 - str r0, [sp, #0x28] -_0201A590: - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x1cc] - ldr r5, [sp, #0x5c] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x2fc] - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x1c8] - ldr r2, [sp, #0x28] - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x170] - ldr r0, [sp, #0x1c8] - str r2, [sp, #0x174] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - ldr r2, [sp, #0x28] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - mov r4, #0x0 - str r6, [sp, #0x24] - str r2, [sp, #0x16c] - str r0, [sp, #0x168] -_0201A5D6: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A748 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x174] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A602 - ldr r0, [sp, #0x170] - strb r1, [r2, r0] - ldr r0, [sp, #0x2fc] - cmp r0, #0x0 - beq _0201A602 - ldr r0, [sp, #0x16c] - add r2, r3, r0 - ldr r0, [sp, #0x168] - strb r1, [r0, r2] -_0201A602: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, #0x8 - blt _0201A5D6 - ldr r0, [sp, #0x2fc] - cmp r0, #0x0 - beq _0201A61A - ldr r0, [sp, #0x1c8] - add r0, r0, #0x2 - str r0, [sp, #0x1c8] - b _0201A620 -_0201A61A: - ldr r0, [sp, #0x1c8] - add r0, r0, #0x1 - str r0, [sp, #0x1c8] -_0201A620: - ldr r0, [sp, #0x1cc] - add r7, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x1cc] - cmp r0, #0x8 - blt _0201A590 - ldr r0, [sp, #0x1ec] - str r0, [sp, #0x2f8] - add r0, #0x40 - str r0, [sp, #0x2f8] - ldr r0, [sp, #0x48] - str r0, [sp, #0x1c0] - mov r0, #0x0 - str r0, [sp, #0x1c4] - ldr r0, [sp, #0x5c] - str r0, [sp, #0x188] - add r0, #0x8 - str r0, [sp, #0x188] -_0201A644: - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x1c4] - ldr r7, [sp, #0x8] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - sub r7, #0x8 - mov r4, #0x0 - str r0, [sp, #0x1bc] - ldr r5, [sp, #0x188] - cmp r7, #0x0 - ble _0201A6CA - ble _0201A6CA - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x1c0] - ldr r2, [sp, #0x28] - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x180] - ldr r0, [sp, #0x1c0] - str r2, [sp, #0x184] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - ldr r2, [sp, #0x28] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x17c] - str r0, [sp, #0x178] -_0201A692: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A748 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x184] - add r2, r3, r0 - ldr r0, [sp, #0x2f8] - ldrb r1, [r0, r4] - cmp r1, #0x0 - beq _0201A6C0 - ldr r0, [sp, #0x180] - strb r1, [r2, r0] - ldr r0, [sp, #0x1bc] - cmp r0, #0x0 - beq _0201A6C0 - ldr r0, [sp, #0x17c] - add r2, r3, r0 - ldr r0, [sp, #0x178] - strb r1, [r0, r2] -_0201A6C0: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r7 - blt _0201A692 -_0201A6CA: - ldr r0, [sp, #0x1bc] - cmp r0, #0x0 - beq _0201A6D8 - ldr r0, [sp, #0x1c0] - add r0, r0, #0x2 - str r0, [sp, #0x1c0] - b _0201A6DE -_0201A6D8: - ldr r0, [sp, #0x1c0] - add r0, r0, #0x1 - str r0, [sp, #0x1c0] -_0201A6DE: - ldr r0, [sp, #0x2f8] - add r0, #0x8 - str r0, [sp, #0x2f8] - ldr r0, [sp, #0x1c4] - add r0, r0, #0x1 - str r0, [sp, #0x1c4] - cmp r0, #0x8 - blt _0201A644 - ldr r0, [sp, #0x48] - ldr r7, [sp, #0x1ec] - add r0, #0x8 - add r7, #0x80 - str r0, [sp, #0x48] - str r0, [sp, #0x1b8] - mov r0, #0x0 - mov r2, #0x1 -_0201A6FE: - ldr r1, [sp, #0x330] - asr r1, r0 - tst r1, r2 - beq _0201A70C - ldr r1, [sp, #0x1b8] - add r1, r1, #0x1 - str r1, [sp, #0x1b8] -_0201A70C: - add r0, r0, #0x1 - cmp r0, #0x8 - blt _0201A6FE - ldr r0, [sp, #0x330] - asr r0, r0, #0x8 - str r0, [sp, #0x44] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x19c] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - ble _0201A7CE -_0201A72A: - ldr r1, [sp, #0x19c] - ldr r0, [sp, #0x10] - ldr r2, [sp, #0x28] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x2f4] - ldr r0, [sp, #0x1b8] - mov r3, #0x38 - lsl r1, r0, #0x3 - ldr r0, _0201A748 ; =0x00007FC0 - b _0201A74C - nop -_0201A748: .word 0x00007FC0 -_0201A74C: - ldr r5, [sp, #0x5c] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x194] - ldr r0, [sp, #0x1b8] - str r2, [sp, #0x198] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A8C4 ; =0x00007FC0 - ldr r2, [sp, #0x28] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - ldr r6, [sp, #0x24] - mov r4, #0x0 - str r2, [sp, #0x190] - str r0, [sp, #0x18c] -_0201A774: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A8C4 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x198] - ldrb r1, [r7, r4] - add r2, r3, r0 - cmp r1, #0x0 - beq _0201A7A0 - ldr r0, [sp, #0x194] - strb r1, [r2, r0] - ldr r0, [sp, #0x2f4] - cmp r0, #0x0 - beq _0201A7A0 - ldr r0, [sp, #0x190] - add r2, r3, r0 - ldr r0, [sp, #0x18c] - strb r1, [r0, r2] -_0201A7A0: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, #0x8 - blt _0201A774 - ldr r0, [sp, #0x2f4] - cmp r0, #0x0 - beq _0201A7B8 - ldr r0, [sp, #0x1b8] - add r0, r0, #0x2 - str r0, [sp, #0x1b8] - b _0201A7BE -_0201A7B8: - ldr r0, [sp, #0x1b8] - add r0, r0, #0x1 - str r0, [sp, #0x1b8] -_0201A7BE: - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x4] - add r0, r0, #0x1 - sub r1, #0x8 - add r7, #0x8 - str r0, [sp, #0x10] - cmp r0, r1 - blt _0201A72A -_0201A7CE: - ldr r0, [sp, #0x1ec] - mov r2, #0x0 - str r0, [sp, #0x2f0] - add r0, #0xc0 - str r0, [sp, #0x2f0] - mov r1, #0x1 -_0201A7DA: - ldr r0, [sp, #0x330] - asr r0, r2 - tst r0, r1 - beq _0201A7E8 - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A7E8: - add r2, r2, #0x1 - cmp r2, #0x8 - blt _0201A7DA - ldr r0, [sp, #0x44] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x1b0] - mov r0, #0x0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x4] - sub r0, #0x8 - cmp r0, #0x0 - ble _0201A8B6 - ldr r0, [sp, #0x5c] - add r0, #0x8 - str r0, [sp, #0x5c] -_0201A808: - ldr r1, [sp, #0x1b0] - ldr r0, [sp, #0xc] - ldr r7, [sp, #0x8] - asr r1, r0 - mov r0, #0x1 - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - sub r7, #0x8 - mov r4, #0x0 - str r0, [sp, #0x1b4] - ldr r5, [sp, #0x5c] - cmp r7, #0x0 - ble _0201A88E - ble _0201A88E - add r0, r5, #0x0 - lsl r6, r0, #0x3 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x28] - lsl r1, r0, #0x3 - ldr r0, _0201A8C4 ; =0x00007FC0 - mov r3, #0x38 - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r0, [sp, #0x1a8] - ldr r0, [sp, #0x48] - str r2, [sp, #0x1ac] - add r0, r0, #0x1 - lsl r1, r0, #0x3 - ldr r0, _0201A8C4 ; =0x00007FC0 - ldr r2, [sp, #0x28] - and r0, r1 - mul r2, r0 - add r0, r1, #0x0 - and r0, r3 - str r2, [sp, #0x1a4] - str r0, [sp, #0x1a0] -_0201A856: - mov r0, #0x7 - add r1, r5, #0x0 - and r1, r0 - ldr r0, [sp, #0x278] - add r1, r0, r1 - ldr r0, _0201A8C4 ; =0x00007FC0 - and r0, r6 - add r3, r1, r0 - ldr r0, [sp, #0x1ac] - add r2, r3, r0 - ldr r0, [sp, #0x2f0] - ldrb r1, [r0, r4] - cmp r1, #0x0 - beq _0201A884 - ldr r0, [sp, #0x1a8] - strb r1, [r2, r0] - ldr r0, [sp, #0x1b4] - cmp r0, #0x0 - beq _0201A884 - ldr r0, [sp, #0x1a4] - add r2, r3, r0 - ldr r0, [sp, #0x1a0] - strb r1, [r0, r2] -_0201A884: - add r4, r4, #0x1 - add r6, #0x8 - add r5, r5, #0x1 - cmp r4, r7 - blt _0201A856 -_0201A88E: - ldr r0, [sp, #0x1b4] - cmp r0, #0x0 - beq _0201A89C - ldr r0, [sp, #0x48] - add r0, r0, #0x2 - str r0, [sp, #0x48] - b _0201A8A2 -_0201A89C: - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] -_0201A8A2: - ldr r0, [sp, #0x2f0] - ldr r1, [sp, #0x4] - add r0, #0x8 - str r0, [sp, #0x2f0] - ldr r0, [sp, #0xc] - sub r1, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0xc] - cmp r0, r1 - blt _0201A808 -_0201A8B6: - ldr r0, [sp, #0x1ec] - bl FreeToHeap - - thumb_func_start FUN_0201A8BC -FUN_0201A8BC: ; 0x0201A8BC - add sp, #0x1fc - add sp, #0x118 - pop {r4-r7, pc} - nop -_0201A8C4: .word 0x00007FC0 - - thumb_func_start FUN_0201A8C8 -FUN_0201A8C8: ; 0x0201A8C8 - push {r4-r6, lr} - ldrb r6, [r0, #0x4] - mov r5, #0x2c - ldr r4, [r0, #0x0] - mul r5, r6 - add r4, r4, r5 - ldrb r4, [r4, #0x1e] - cmp r4, #0x0 - bne _0201A8E0 - bl FUN_0201A8E8 - pop {r4-r6, pc} -_0201A8E0: - bl FUN_0201A9D4 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0201A8E8 -FUN_0201A8E8: ; 0x0201A8E8 - push {r3-r7, lr} - sub sp, #0x10 - add r6, r3, #0x0 - add r4, r0, #0x0 - add r0, r1, #0x0 - lsl r3, r6, #0x18 - lsl r1, r6, #0x10 - str r2, [sp, #0x0] - orr r1, r3 - lsl r5, r6, #0x8 - orr r1, r5 - orr r1, r6 - str r1, [sp, #0x4] - ldrb r1, [r4, #0x7] - ldrb r3, [r4, #0x8] - ldr r2, [r4, #0xc] - str r1, [sp, #0x8] - mul r1, r3 - lsl r1, r1, #0x5 - str r1, [sp, #0xc] - cmp r0, #0x3 - bhi _0201A9CE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0201A920: ; jump table (using 16-bit offset) - .short _0201A928 - _0201A920 - 2; case 0 - .short _0201A976 - _0201A920 - 2; case 1 - .short _0201A9CE - _0201A920 - 2; case 2 - .short _0201A9CE - _0201A920 - 2; case 3 -_0201A928: - add r0, r1, #0x0 - mov r7, #0x0 - cmp r0, #0x0 - ble _0201A9CE - mov r0, #0x7 - mov lr, r0 -_0201A934: - ldr r3, [sp, #0x0] - mov r4, #0x0 - add r5, r7, #0x0 -_0201A93A: - mov r0, #0x7 - add r6, r3, #0x0 - and r6, r0 - add r1, r3, #0x0 - mov r0, lr - bic r1, r0 - ldr r0, [sp, #0x8] - mul r1, r0 - add r0, r6, #0x0 - orr r0, r1 - lsl r0, r0, #0x2 - add r1, r7, r0 - ldr r0, [sp, #0xc] - cmp r1, r0 - bge _0201A95C - ldr r0, [r2, r1] - b _0201A95E -_0201A95C: - ldr r0, [sp, #0x4] -_0201A95E: - add r4, r4, #0x1 - str r0, [r2, r5] - add r3, r3, #0x1 - add r5, r5, #0x4 - cmp r4, #0x8 - blt _0201A93A - ldr r0, [sp, #0xc] - add r7, #0x20 - cmp r7, r0 - blt _0201A934 - add sp, #0x10 - pop {r3-r7, pc} -_0201A976: - add r0, r1, #0x0 - sub r0, r0, #0x4 - add r2, r2, r0 - add r0, r1, #0x0 - mov r7, #0x0 - cmp r0, #0x0 - ble _0201A9CE - mov r0, #0x7 - mov r12, r0 -_0201A988: - ldr r4, [sp, #0x0] - mov r5, #0x0 - add r3, r7, #0x0 -_0201A98E: - mov r0, #0x7 - add r6, r4, #0x0 - and r6, r0 - add r1, r4, #0x0 - mov r0, r12 - bic r1, r0 - ldr r0, [sp, #0x8] - mul r1, r0 - add r0, r6, #0x0 - orr r0, r1 - lsl r0, r0, #0x2 - add r1, r7, r0 - ldr r0, [sp, #0xc] - cmp r1, r0 - bge _0201A9B6 - sub r0, r2, r1 - ldr r1, [r0, #0x0] - sub r0, r2, r3 - str r1, [r0, #0x0] - b _0201A9BC -_0201A9B6: - ldr r0, [sp, #0x4] - sub r1, r2, r3 - str r0, [r1, #0x0] -_0201A9BC: - add r5, r5, #0x1 - add r4, r4, #0x1 - add r3, r3, #0x4 - cmp r5, #0x8 - blt _0201A98E - ldr r0, [sp, #0xc] - add r7, #0x20 - cmp r7, r0 - blt _0201A988 -_0201A9CE: - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0201A9D4 -FUN_0201A9D4: ; 0x0201A9D4 - push {r3-r7, lr} - sub sp, #0x20 - add r6, r3, #0x0 - add r4, r0, #0x0 - str r2, [sp, #0x0] - lsl r2, r6, #0x18 - lsl r0, r6, #0x10 - orr r0, r2 - ldrb r2, [r4, #0x7] - ldr r3, [r4, #0xc] - lsl r5, r6, #0x8 - orr r0, r5 - ldrb r4, [r4, #0x8] - str r2, [sp, #0x10] - orr r0, r6 - mul r2, r4 - lsl r2, r2, #0x6 - str r2, [sp, #0x1c] - cmp r1, #0x3 - bls _0201A9FE - b _0201AB04 -_0201A9FE: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0201AA0A: ; jump table (using 16-bit offset) - .short _0201AA12 - _0201AA0A - 2; case 0 - .short _0201AA80 - _0201AA0A - 2; case 1 - .short _0201AB04 - _0201AA0A - 2; case 2 - .short _0201AB04 - _0201AA0A - 2; case 3 -_0201AA12: - mov r1, #0x0 - str r1, [sp, #0xc] - add r1, r2, #0x0 - cmp r1, #0x0 - ble _0201AB04 - add r1, r1, #0x4 - str r1, [sp, #0x14] - mov r1, #0x7 - mov lr, r1 -_0201AA24: - ldr r4, [sp, #0x0] - ldr r5, [sp, #0xc] - mov r7, #0x0 -_0201AA2A: - mov r1, #0x7 - add r6, r4, #0x0 - and r6, r1 - add r2, r4, #0x0 - mov r1, lr - bic r2, r1 - ldr r1, [sp, #0x10] - mul r2, r1 - add r1, r6, #0x0 - orr r1, r2 - lsl r2, r1, #0x3 - ldr r1, [sp, #0xc] - add r1, r1, r2 - ldr r2, [sp, #0x1c] - cmp r1, r2 - bge _0201AA50 - ldr r2, [r3, r1] - str r2, [r3, r5] - b _0201AA52 -_0201AA50: - str r0, [r3, r5] -_0201AA52: - add r2, r1, #0x4 - ldr r1, [sp, #0x14] - cmp r2, r1 - bge _0201AA62 - ldr r2, [r3, r2] - add r1, r5, #0x4 - str r2, [r3, r1] - b _0201AA66 -_0201AA62: - add r1, r5, #0x4 - str r0, [r3, r1] -_0201AA66: - add r7, r7, #0x1 - add r4, r4, #0x1 - add r5, #0x8 - cmp r7, #0x8 - blt _0201AA2A - ldr r2, [sp, #0xc] - ldr r1, [sp, #0x1c] - add r2, #0x40 - str r2, [sp, #0xc] - cmp r2, r1 - blt _0201AA24 - add sp, #0x20 - pop {r3-r7, pc} -_0201AA80: - add r1, r2, #0x0 - sub r1, #0x8 - add r3, r3, r1 - mov r1, #0x0 - str r1, [sp, #0x8] - add r1, r2, #0x0 - cmp r1, #0x0 - ble _0201AB04 -_0201AA90: - mov r1, #0x0 - str r1, [sp, #0x4] - ldr r1, [sp, #0x1c] - ldr r5, [sp, #0x0] - sub r1, r1, #0x4 - str r1, [sp, #0x18] - mov r1, #0x7 - ldr r4, [sp, #0x8] - mov r12, r1 -_0201AAA2: - mov r1, #0x7 - add r6, r5, #0x0 - and r6, r1 - add r2, r5, #0x0 - mov r1, r12 - bic r2, r1 - ldr r1, [sp, #0x10] - mul r2, r1 - add r1, r6, #0x0 - orr r1, r2 - lsl r2, r1, #0x3 - ldr r1, [sp, #0x8] - add r6, r1, r2 - ldr r1, [sp, #0x1c] - cmp r6, r1 - bge _0201AACC - sub r1, r3, r6 - ldr r2, [r1, #0x0] - sub r1, r3, r4 - str r2, [r1, #0x0] - b _0201AAD0 -_0201AACC: - sub r1, r3, r4 - str r0, [r1, #0x0] -_0201AAD0: - ldr r1, [sp, #0x18] - sub r2, r6, #0x4 - cmp r2, r1 - bge _0201AAE4 - sub r1, r3, r2 - sub r2, r4, #0x4 - ldr r1, [r1, #0x0] - sub r2, r3, r2 - str r1, [r2, #0x0] - b _0201AAEA -_0201AAE4: - sub r1, r4, #0x4 - sub r1, r3, r1 - str r0, [r1, #0x0] -_0201AAEA: - ldr r1, [sp, #0x4] - add r5, r5, #0x1 - add r1, r1, #0x1 - add r4, #0x8 - str r1, [sp, #0x4] - cmp r1, #0x8 - blt _0201AAA2 - ldr r2, [sp, #0x8] - ldr r1, [sp, #0x1c] - add r2, #0x40 - str r2, [sp, #0x8] - cmp r2, r1 - blt _0201AA90 -_0201AB04: - add sp, #0x20 - pop {r3-r7, pc} - - thumb_func_start FUN_0201AB08 -FUN_0201AB08: ; 0x0201AB08 - ldrb r0, [r0, #0x4] - bx lr - - thumb_func_start FUN_0201AB0C -FUN_0201AB0C: ; 0x0201AB0C - ldrb r0, [r0, #0x7] - bx lr - - thumb_func_start FUN_0201AB10 -FUN_0201AB10: ; 0x0201AB10 - ldrb r0, [r0, #0x8] - bx lr - - thumb_func_start FUN_0201AB14 -FUN_0201AB14: ; 0x0201AB14 - ldrb r0, [r0, #0x5] - bx lr - - thumb_func_start FUN_0201AB18 -FUN_0201AB18: ; 0x0201AB18 - ldrb r0, [r0, #0x6] - bx lr - - thumb_func_start FUN_0201AB1C -FUN_0201AB1C: ; 0x0201AB1C - strb r1, [r0, #0x5] - bx lr - - thumb_func_start FUN_0201AB20 -FUN_0201AB20: ; 0x0201AB20 - strb r1, [r0, #0x6] - bx lr - - thumb_func_start FUN_0201AB24 -FUN_0201AB24: ; 0x0201AB24 - strb r1, [r0, #0x9] - bx lr - - thumb_func_start FUN_0201AB28 -FUN_0201AB28: ; 0x0201AB28 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - add r0, r1, #0x0 - add r1, r2, #0x0 - bl FUN_020161A4 - add r1, sp, #0x0 - str r0, [r4, #0x0] - bl FUN_020B0030 - ldr r0, [sp, #0x0] - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_0201AB44 -FUN_0201AB44: ; 0x0201AB44 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - add r0, r1, #0x0 - add r1, r2, #0x0 - bl FUN_020161A4 - add r1, sp, #0x0 - str r0, [r4, #0x0] - bl FUN_020B0138 - ldr r0, [sp, #0x0] - add sp, #0x4 - pop {r3-r4, pc} - - thumb_func_start FUN_0201AB60 -FUN_0201AB60: ; 0x0201AB60 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_0201AC78 - add r0, r4, #0x0 - bl FUN_0201AB78 - mov r0, #0x0 - strh r0, [r4, #0x4] - strh r0, [r4, #0x6] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0201AB78 -FUN_0201AB78: ; 0x0201AB78 - push {r4, lr} - add r4, r0, #0x0 - ldrh r1, [r4, #0x6] - mov r0, #0x1 - tst r0, r1 - beq _0201AB92 - ldr r2, [r4, #0x10] - ldr r1, [r4, #0x8] - ldr r3, [r4, #0xc] - mov r0, #0x0 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AB92: - ldrh r1, [r4, #0x6] - mov r0, #0x2 - tst r0, r1 - beq _0201ABA8 - ldr r2, [r4, #0x3c] - ldr r1, [r4, #0x34] - ldr r3, [r4, #0x38] - mov r0, #0x1 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201ABA8: - ldrh r1, [r4, #0x6] - mov r0, #0x4 - tst r0, r1 - beq _0201ABBE - ldr r2, [r4, #0x68] - ldr r1, [r4, #0x60] - ldr r3, [r4, #0x64] - mov r0, #0x2 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201ABBE: - ldrh r1, [r4, #0x6] - mov r0, #0x8 - tst r0, r1 - beq _0201ABE0 - add r2, r4, #0x0 - add r1, r4, #0x0 - add r2, #0x94 - add r3, r4, #0x0 - add r1, #0x8c - ldr r2, [r2, #0x0] - add r3, #0x90 - ldr r1, [r1, #0x0] - ldr r3, [r3, #0x0] - mov r0, #0x3 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201ABE0: - ldrh r1, [r4, #0x6] - mov r0, #0x10 - tst r0, r1 - beq _0201AC02 - add r2, r4, #0x0 - add r1, r4, #0x0 - add r2, #0xc0 - add r3, r4, #0x0 - add r1, #0xb8 - ldr r2, [r2, #0x0] - add r3, #0xbc - ldr r1, [r1, #0x0] - ldr r3, [r3, #0x0] - mov r0, #0x4 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AC02: - ldrh r1, [r4, #0x6] - mov r0, #0x20 - tst r0, r1 - beq _0201AC24 - add r2, r4, #0x0 - add r1, r4, #0x0 - add r2, #0xec - add r3, r4, #0x0 - add r1, #0xe4 - ldr r2, [r2, #0x0] - add r3, #0xe8 - ldr r1, [r1, #0x0] - ldr r3, [r3, #0x0] - mov r0, #0x5 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AC24: - ldrh r0, [r4, #0x6] - mov r3, #0x40 - tst r0, r3 - beq _0201AC44 - add r2, r3, #0x0 - add r1, r3, #0x0 - add r2, #0xd8 - add r1, #0xd0 - ldr r2, [r4, r2] - add r3, #0xd4 - ldr r1, [r4, r1] - ldr r3, [r4, r3] - mov r0, #0x6 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AC44: - ldrh r0, [r4, #0x6] - mov r3, #0x80 - tst r0, r3 - beq _0201AC64 - add r2, r3, #0x0 - add r1, r3, #0x0 - add r2, #0xc4 - add r1, #0xbc - ldr r2, [r4, r2] - add r3, #0xc0 - ldr r1, [r4, r1] - ldr r3, [r4, r3] - mov r0, #0x7 - lsl r2, r2, #0x1 - bl FUN_02017D68 -_0201AC64: - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0201AC68 -FUN_0201AC68: ; 0x0201AC68 - ldrh r3, [r0, #0x6] - mov r2, #0x1 - lsl r2, r1 - add r1, r3, #0x0 - orr r1, r2 - strh r1, [r0, #0x6] - bx lr - .balign 4 - - thumb_func_start FUN_0201AC78 -FUN_0201AC78: ; 0x0201AC78 - push {r4, lr} - sub sp, #0x48 - add r4, r0, #0x0 - ldrh r1, [r4, #0x4] - mov r0, #0x1 - tst r0, r1 - beq _0201AC9E - ldr r1, [r4, #0x14] - ldr r0, _0201AEB0 ; =0x000001FF - add r2, r1, #0x0 - ldr r1, [r4, #0x18] - and r2, r0 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _0201AEB4 ; =0x04000010 - str r1, [r0, #0x0] -_0201AC9E: - ldrh r1, [r4, #0x4] - mov r0, #0x2 - tst r0, r1 - beq _0201ACBE - ldr r1, [r4, #0x40] - ldr r0, _0201AEB0 ; =0x000001FF - add r2, r1, #0x0 - ldr r1, [r4, #0x44] - and r2, r0 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _0201AEB8 ; =0x04000014 - str r1, [r0, #0x0] -_0201ACBE: - ldrh r1, [r4, #0x4] - mov r0, #0x4 - tst r0, r1 - beq _0201AD1E - add r0, r4, #0x0 - add r0, #0x74 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0201ACEA - ldr r1, [r4, #0x6c] - ldr r0, _0201AEB0 ; =0x000001FF - add r2, r1, #0x0 - ldr r1, [r4, #0x70] - and r2, r0 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _0201AEBC ; =0x04000018 - str r1, [r0, #0x0] - b _0201AD1E -_0201ACEA: - mov r0, #0x2 - str r0, [sp, #0x0] - add r1, r4, #0x0 - add r1, #0x78 - add r3, r4, #0x0 - add r3, #0x80 - ldrh r1, [r1, #0x0] - ldr r2, [r4, #0x7c] - ldr r3, [r3, #0x0] - add r0, sp, #0x38 - bl MTX22_2DAffine - ldr r0, [r4, #0x6c] - add r2, r4, #0x0 - str r0, [sp, #0x0] - ldr r0, [r4, #0x70] - add r3, r4, #0x0 - str r0, [sp, #0x4] - add r2, #0x84 - add r3, #0x88 - ldr r0, _0201AEC0 ; =0x04000020 - ldr r2, [r2, #0x0] - ldr r3, [r3, #0x0] - add r1, sp, #0x38 - bl G2x_SetBGyAffine_ -_0201AD1E: - ldrh r1, [r4, #0x4] - mov r0, #0x8 - tst r0, r1 - beq _0201AD8E - add r0, r4, #0x0 - add r0, #0xa0 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0201AD4E - add r0, r4, #0x0 - add r2, r4, #0x0 - add r0, #0x98 - add r2, #0x9c - ldr r2, [r2, #0x0] - ldr r0, [r0, #0x0] - ldr r1, _0201AEB0 ; =0x000001FF - lsl r2, r2, #0x10 - and r0, r1 - lsl r1, r1, #0x10 - and r1, r2 - orr r1, r0 - ldr r0, _0201AEC4 ; =0x0400001C - str r1, [r0, #0x0] - b _0201AD8E -_0201AD4E: - mov r0, #0x2 - add r1, r4, #0x0 - str r0, [sp, #0x0] - add r1, #0xa4 - add r2, r4, #0x0 - add r3, r4, #0x0 - add r2, #0xa8 - add r3, #0xac - ldrh r1, [r1, #0x0] - ldr r2, [r2, #0x0] - ldr r3, [r3, #0x0] - add r0, sp, #0x28 - bl MTX22_2DAffine - add r0, r4, #0x0 - add r0, #0x98 - ldr r0, [r0, #0x0] - add r2, r4, #0x0 - str r0, [sp, #0x0] - add r0, r4, #0x0 - add r0, #0x9c - ldr r0, [r0, #0x0] - add r3, r4, #0x0 - str r0, [sp, #0x4] - add r2, #0xb0 - add r3, #0xb4 - ldr r0, _0201AEC8 ; =0x04000030 - ldr r2, [r2, #0x0] - ldr r3, [r3, #0x0] - add r1, sp, #0x28 - bl G2x_SetBGyAffine_ -_0201AD8E: - ldrh r1, [r4, #0x4] - mov r0, #0x10 - tst r0, r1 - beq _0201ADB2 - add r0, r4, #0x0 - add r2, r4, #0x0 - add r0, #0xc4 - add r2, #0xc8 - ldr r2, [r2, #0x0] - ldr r0, [r0, #0x0] - ldr r1, _0201AEB0 ; =0x000001FF - lsl r2, r2, #0x10 - and r0, r1 - lsl r1, r1, #0x10 - and r1, r2 - orr r1, r0 - ldr r0, _0201AECC ; =0x04001010 - str r1, [r0, #0x0] -_0201ADB2: - ldrh r1, [r4, #0x4] - mov r0, #0x20 - tst r0, r1 - beq _0201ADD6 - add r0, r4, #0x0 - add r2, r4, #0x0 - add r0, #0xf0 - add r2, #0xf4 - ldr r2, [r2, #0x0] - ldr r0, [r0, #0x0] - ldr r1, _0201AEB0 ; =0x000001FF - lsl r2, r2, #0x10 - and r0, r1 - lsl r1, r1, #0x10 - and r1, r2 - orr r1, r0 - ldr r0, _0201AED0 ; =0x04001014 - str r1, [r0, #0x0] -_0201ADD6: - ldrh r0, [r4, #0x4] - mov r3, #0x40 - tst r0, r3 - beq _0201AE3E - add r0, r3, #0x0 - add r0, #0xe4 - ldrb r0, [r4, r0] - cmp r0, #0x0 - bne _0201AE04 - ldr r1, _0201AEB0 ; =0x000001FF - add r3, #0xdc - add r2, r1, #0x0 - sub r2, #0xdf - ldr r0, [r4, r3] - ldr r2, [r4, r2] - and r0, r1 - lsl r2, r2, #0x10 - lsl r1, r1, #0x10 - and r1, r2 - orr r1, r0 - ldr r0, _0201AED4 ; =0x04001018 - str r1, [r0, #0x0] - b _0201AE3E -_0201AE04: - mov r0, #0x2 - add r1, r3, #0x0 - add r2, r3, #0x0 - str r0, [sp, #0x0] - add r1, #0xe8 - add r2, #0xec - add r3, #0xf0 - ldrh r1, [r4, r1] - ldr r2, [r4, r2] - ldr r3, [r4, r3] - add r0, sp, #0x18 - bl MTX22_2DAffine - mov r3, #0x47 - lsl r3, r3, #0x2 - ldr r0, [r4, r3] - add r2, r3, #0x0 - str r0, [sp, #0x0] - add r0, r3, #0x4 - ldr r0, [r4, r0] - add r2, #0x18 - str r0, [sp, #0x4] - add r3, #0x1c - ldr r0, _0201AED8 ; =0x04001020 - ldr r2, [r4, r2] - ldr r3, [r4, r3] - add r1, sp, #0x18 - bl G2x_SetBGyAffine_ -_0201AE3E: - ldrh r0, [r4, #0x4] - mov r3, #0x80 - tst r0, r3 - beq _0201AEAC - add r0, r3, #0x0 - add r0, #0xd0 - ldrb r0, [r4, r0] - cmp r0, #0x0 - bne _0201AE72 - add r3, #0xc8 - ldr r1, [r4, r3] - ldr r0, _0201AEB0 ; =0x000001FF - add r2, r1, #0x0 - add r1, r0, #0x0 - sub r1, #0xb3 - ldr r1, [r4, r1] - and r2, r0 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _0201AEDC ; =0x0400101C - add sp, #0x48 - str r1, [r0, #0x0] - pop {r4, pc} -_0201AE72: - mov r0, #0x2 - add r1, r3, #0x0 - add r2, r3, #0x0 - str r0, [sp, #0x0] - add r1, #0xd4 - add r2, #0xd8 - add r3, #0xdc - ldrh r1, [r4, r1] - ldr r2, [r4, r2] - ldr r3, [r4, r3] - add r0, sp, #0x8 - bl MTX22_2DAffine - mov r3, #0x52 - lsl r3, r3, #0x2 - ldr r0, [r4, r3] - add r2, r3, #0x0 - str r0, [sp, #0x0] - add r0, r3, #0x4 - ldr r0, [r4, r0] - add r2, #0x18 - str r0, [sp, #0x4] - add r3, #0x1c - ldr r0, _0201AEE0 ; =0x04001030 - ldr r2, [r4, r2] - ldr r3, [r4, r3] - add r1, sp, #0x8 - bl G2x_SetBGyAffine_ -_0201AEAC: - add sp, #0x48 - pop {r4, pc} - .balign 4 -_0201AEB0: .word 0x000001FF -_0201AEB4: .word 0x04000010 -_0201AEB8: .word 0x04000014 -_0201AEBC: .word 0x04000018 -_0201AEC0: .word 0x04000020 -_0201AEC4: .word 0x0400001C -_0201AEC8: .word 0x04000030 -_0201AECC: .word 0x04001010 -_0201AED0: .word 0x04001014 -_0201AED4: .word 0x04001018 -_0201AED8: .word 0x04001020 -_0201AEDC: .word 0x0400101C -_0201AEE0: .word 0x04001030 - - thumb_func_start FUN_0201AEE4 -FUN_0201AEE4: ; 0x0201AEE4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x0 - mov r0, #0x2c - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0x0 - add r2, r3, #0x0 - bl FUN_02017B8C - mov r0, #0x1 - ldrh r1, [r5, #0x4] - lsl r0, r4 - orr r0, r1 - strh r0, [r5, #0x4] - pop {r3-r5, pc} - - thumb_func_start FUN_0201AF08 -FUN_0201AF08: ; 0x0201AF08 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x0 - mov r0, #0x2c - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0x0 - add r2, r3, #0x0 - bl FUN_0201AF2C - mov r0, #0x1 - ldrh r1, [r5, #0x4] - lsl r0, r4 - orr r0, r1 - strh r0, [r5, #0x4] - pop {r3-r5, pc} - - thumb_func_start FUN_0201AF2C -FUN_0201AF2C: ; 0x0201AF2C - cmp r1, #0x0 - beq _0201AF3A - cmp r1, #0x1 - beq _0201AF3E - cmp r1, #0x2 - beq _0201AF46 - bx lr -_0201AF3A: - strh r2, [r0, #0x18] - bx lr -_0201AF3E: - ldrh r1, [r0, #0x18] - add r1, r1, r2 - strh r1, [r0, #0x18] - bx lr -_0201AF46: - ldrh r1, [r0, #0x18] - sub r1, r1, r2 - strh r1, [r0, #0x18] - bx lr - .balign 4 - - thumb_func_start FUN_0201AF50 -FUN_0201AF50: ; 0x0201AF50 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r1, r5, #0x0 - mov r0, #0x2c - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0x0 - add r2, r3, #0x0 - bl FUN_0201AF74 - mov r0, #0x1 - ldrh r1, [r5, #0x4] - lsl r0, r4 - orr r0, r1 - strh r0, [r5, #0x4] - pop {r3-r5, pc} - - thumb_func_start FUN_0201AF74 -FUN_0201AF74: ; 0x0201AF74 - sub r1, #0x9 - cmp r1, #0x5 - bhi _0201AFB8 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0201AF86: ; jump table (using 16-bit offset) - .short _0201AF92 - _0201AF86 - 2; case 0 - .short _0201AF96 - _0201AF86 - 2; case 1 - .short _0201AF9E - _0201AF86 - 2; case 2 - .short _0201AFA6 - _0201AF86 - 2; case 3 - .short _0201AFAA - _0201AF86 - 2; case 4 - .short _0201AFB2 - _0201AF86 - 2; case 5 -_0201AF92: - str r2, [r0, #0x24] - bx lr -_0201AF96: - ldr r1, [r0, #0x24] - add r1, r1, r2 - str r1, [r0, #0x24] - bx lr -_0201AF9E: - ldr r1, [r0, #0x24] - sub r1, r1, r2 - str r1, [r0, #0x24] - bx lr -_0201AFA6: - str r2, [r0, #0x28] - bx lr -_0201AFAA: - ldr r1, [r0, #0x28] - add r1, r1, r2 - str r1, [r0, #0x28] - bx lr -_0201AFB2: - ldr r1, [r0, #0x28] - sub r1, r1, r2 - str r1, [r0, #0x28] -_0201AFB8: - bx lr - .balign 4 - - thumb_func_start FUN_0201AFBC -FUN_0201AFBC: ; 0x0201AFBC - push {r4-r7, lr} - sub sp, #0x1c - str r1, [sp, #0x0] - add r7, r0, #0x0 - str r2, [sp, #0x4] - ldr r0, [sp, #0x30] - str r3, [sp, #0x8] - str r0, [sp, #0x30] - ldr r0, [sp, #0x0] - add r4, r7, #0x0 - mov r1, #0x2c - add r5, r0, #0x0 - mul r5, r1 - add r4, #0x8 - ldr r0, [r4, r5] - cmp r0, #0x0 - bne _0201AFE4 - add sp, #0x1c - mov r0, #0x0 - pop {r4-r7, pc} -_0201AFE4: - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x8] - add r2, r7, r5 - lsl r0, r0, #0x15 - lsl r1, r1, #0x15 - ldrb r2, [r2, #0x1d] - lsr r0, r0, #0x18 - lsr r1, r1, #0x18 - bl FUN_02017FFC - add r6, r0, #0x0 - ldr r0, [sp, #0x0] - bl FUN_020187B0 - str r0, [sp, #0x18] - ldr r1, [sp, #0x4] - mov r0, #0x7 - and r1, r0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x14] - ldr r1, [sp, #0x8] - and r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r1, r7, r5 - str r0, [sp, #0x10] - ldrb r0, [r1, #0x1e] - cmp r0, #0x0 - bne _0201B096 - ldr r0, [r4, r5] - mov r1, #0x40 - str r0, [sp, #0xc] - ldr r0, [r7, #0x0] - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - lsl r0, r6, #0x1 - ldr r1, [sp, #0xc] - mov r12, r0 - ldrh r0, [r1, r0] - mov r3, #0x0 - mov r6, #0xf - lsl r0, r0, #0x16 - lsr r1, r0, #0x11 - ldr r0, [sp, #0x18] - add r2, r0, r1 -_0201B042: - ldrb r5, [r2, r3] - lsl r0, r3, #0x1 - add r1, r4, r0 - and r5, r6 - strb r5, [r4, r0] - ldrb r0, [r2, r3] - asr r0, r0, #0x4 - strb r0, [r1, #0x1] - add r0, r3, #0x1 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 - cmp r3, #0x20 - blo _0201B042 - ldr r2, [sp, #0xc] - mov r1, r12 - ldrh r1, [r2, r1] - add r0, r7, #0x0 - asr r2, r1, #0xa - mov r1, #0x3 - and r1, r2 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r2, r4, #0x0 - bl FUN_0201B118 - ldr r0, [sp, #0x10] - lsl r1, r0, #0x3 - ldr r0, [sp, #0x14] - add r0, r0, r1 - ldrb r5, [r4, r0] - add r0, r4, #0x0 - bl FreeToHeap - ldr r0, [sp, #0x30] - ldrh r2, [r0, #0x0] - mov r0, #0x1 - add r1, r0, #0x0 - lsl r1, r5 - tst r1, r2 - beq _0201B10C - add sp, #0x1c - pop {r4-r7, pc} -_0201B096: - ldrb r0, [r1, #0x1c] - cmp r0, #0x1 - beq _0201B0E0 - ldr r0, [r7, #0x0] - ldr r4, [r4, r5] - mov r1, #0x40 - bl AllocFromHeapAtEnd - lsl r6, r6, #0x1 - ldrh r1, [r4, r6] - add r5, r0, #0x0 - lsl r1, r1, #0x16 - lsr r2, r1, #0x10 - ldr r1, [sp, #0x18] - add r1, r1, r2 - mov r2, #0x40 - bl memcpy - ldrh r1, [r4, r6] - add r0, r7, #0x0 - asr r2, r1, #0xa - mov r1, #0x3 - and r1, r2 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r2, r5, #0x0 - bl FUN_0201B118 - ldr r0, [sp, #0x10] - lsl r1, r0, #0x3 - ldr r0, [sp, #0x14] - add r0, r0, r1 - ldrb r4, [r5, r0] - add r0, r5, #0x0 - bl FreeToHeap - b _0201B0F4 -_0201B0E0: - ldr r1, [r4, r5] - ldr r0, [sp, #0x10] - ldrb r1, [r1, r6] - lsl r0, r0, #0x3 - lsl r2, r1, #0x6 - ldr r1, [sp, #0x14] - add r1, r1, r2 - add r1, r0, r1 - ldr r0, [sp, #0x18] - ldrb r4, [r0, r1] -_0201B0F4: - ldr r0, [sp, #0x30] - ldrh r2, [r0, #0x0] - lsl r0, r2, #0x18 - lsr r1, r0, #0x18 - ldr r0, _0201B114 ; =0x0000FFFF -_0201B0FE: - cmp r2, r0 - beq _0201B10C - cmp r4, r1 - bne _0201B0FE - add sp, #0x1c - mov r0, #0x1 - pop {r4-r7, pc} -_0201B10C: - mov r0, #0x0 - add sp, #0x1c - pop {r4-r7, pc} - nop -_0201B114: .word 0x0000FFFF - - thumb_func_start FUN_0201B118 -FUN_0201B118: ; 0x0201B118 - push {r3-r7, lr} - str r1, [sp, #0x0] - ldr r1, [sp, #0x0] - add r7, r2, #0x0 - cmp r1, #0x0 - beq _0201B1A4 - ldr r0, [r0, #0x0] - mov r1, #0x40 - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - ldr r0, [sp, #0x0] - mov r1, #0x1 - tst r0, r1 - beq _0201B166 - mov r0, #0x0 - mov r5, #0x7 -_0201B13A: - lsl r3, r0, #0x3 - add r2, r7, r3 - mov r1, #0x0 - add r3, r4, r3 -_0201B142: - sub r6, r5, r1 - ldrb r6, [r2, r6] - strb r6, [r3, r1] - add r1, r1, #0x1 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - cmp r1, #0x8 - blo _0201B142 - add r0, r0, #0x1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x8 - blo _0201B13A - add r0, r7, #0x0 - add r1, r4, #0x0 - mov r2, #0x40 - bl memcpy -_0201B166: - ldr r0, [sp, #0x0] - mov r1, #0x2 - tst r0, r1 - beq _0201B19E - mov r5, #0x0 - mov r6, #0x7 -_0201B172: - lsl r0, r5, #0x3 - add r3, r4, r0 - sub r0, r6, r5 - lsl r0, r0, #0x3 - add r2, r7, r0 - mov r1, #0x8 -_0201B17E: - ldrb r0, [r2, #0x0] - add r2, r2, #0x1 - strb r0, [r3, #0x0] - add r3, r3, #0x1 - sub r1, r1, #0x1 - bne _0201B17E - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x8 - blo _0201B172 - add r0, r7, #0x0 - add r1, r4, #0x0 - mov r2, #0x40 - bl memcpy -_0201B19E: - add r0, r4, #0x0 - bl FreeToHeap -_0201B1A4: - pop {r3-r7, pc} - .balign 4 diff --git a/arm9/asm/unk_020337E8.s b/arm9/asm/unk_020337E8.s deleted file mode 100644 index 99f778f2..00000000 --- a/arm9/asm/unk_020337E8.s +++ /dev/null @@ -1,74 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_020337E8 -FUN_020337E8: ; 0x020337E8 - push {r3-r5, lr} - mov r1, #0x72 - lsl r1, r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, #0x1f - mov r1, #0x1f - bic r0, r1 - bl DWC_Init - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FreeToHeap - add r0, r5, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203380C -FUN_0203380C: ; 0x0203380C - push {r4, lr} - bl FUN_02028228 - add r4, r0, #0x0 - bl DWC_CheckUserData - cmp r0, #0x0 - bne _0203382A - ldr r1, _0203382C ; =0x4144414A - add r0, r4, #0x0 - bl DWC_CreateUserData - add r0, r4, #0x0 - bl DWC_ClearDirtyFlag -_0203382A: - pop {r4, pc} - .balign 4 -_0203382C: .word 0x4144414A - - thumb_func_start FUN_02033830 -FUN_02033830: ; 0x02033830 - push {r3-r4, lr} - sub sp, #0xc - bl FUN_02028228 - add r4, r0, #0x0 - add r1, sp, #0x0 - bl DWC_CreateExchangeToken - add r0, r4, #0x0 - add r1, sp, #0x0 - bl DWC_GetGsProfileId - add sp, #0xc - pop {r3-r4, pc} - - thumb_func_start FUN_0203384C -FUN_0203384C: ; 0x0203384C - push {r4, lr} - bl FUN_020286EC - bl FUN_02028228 - add r4, r0, #0x0 - bl DWC_CheckHasProfile - cmp r0, #0x0 - beq _0203386E - add r0, r4, #0x0 - bl DWC_CheckValidConsole - cmp r0, #0x0 - beq _0203386E - mov r0, #0x1 - pop {r4, pc} -_0203386E: - mov r0, #0x0 - pop {r4, pc} - .balign 4 diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s index a5439dfe..ed33e084 100644 --- a/arm9/asm/unk_02033F50.s +++ b/arm9/asm/unk_02033F50.s @@ -198,7 +198,7 @@ _02033FA4: add r0, sp, #0x18 mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _0203417C ; =0x000001F7 add r0, sp, #0x18 mov r1, #0x0 diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s index 44144564..08265835 100644 --- a/arm9/asm/unk_02034188.s +++ b/arm9/asm/unk_02034188.s @@ -138,7 +138,7 @@ FUN_02034188: ; 0x02034188 add r0, sp, #0x14 mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _0203438C ; =0x000001F7 add r0, sp, #0x14 mov r1, #0x0 diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index f0cdc150..c9df4ca4 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -639,7 +639,7 @@ FUN_0203549C: ; 0x0203549C str r0, [sp, #0x18] ldr r0, [sp, #0x14] mov r1, #0xb - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r4, #0x24] mov r5, #0x0 ldr r0, [sp, #0x14] @@ -684,7 +684,7 @@ _02035526: ldrb r2, [r2, #0x0] ldr r0, [r4, #0x24] add r1, r7, #0x0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, [sp, #0x20] bl String_dtor add r0, r7, #0x0 @@ -698,7 +698,7 @@ _02035594: ldr r0, [r4, #0x24] ldr r1, [sp, #0x18] ldr r2, [r2, r6] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _020355A2: ldr r0, [sp, #0x1c] add r0, #0x8c @@ -902,7 +902,7 @@ FUN_02035718: ; 0x02035718 mov r1, #0x0 bl FUN_02001C5C ldr r0, [r4, #0x24] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x0 str r0, [r4, #0x20] pop {r4, pc} @@ -966,7 +966,7 @@ _0203576C: add r0, r5, #0x0 add r0, #0x10 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0203589C ; =0x00000143 mov r0, #0x0 mov r1, #0x1a @@ -1731,7 +1731,7 @@ FUN_02035DC8: ; 0x02035DC8 cmp r1, #0x0 beq _02035DF0 mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit _02035DF0: mov r0, #0xc strh r0, [r4, #0x2a] @@ -3193,7 +3193,7 @@ FUN_02036A14: ; 0x02036A14 lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x73 lsl r1, r1, #0x2 add r0, r5, #0x0 @@ -3223,7 +3223,7 @@ FUN_02036A78: ; 0x02036A78 lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x73 lsl r1, r1, #0x2 add r0, r5, #0x0 @@ -3255,7 +3255,7 @@ FUN_02036AB8: ; 0x02036AB8 ldr r1, [r4, r0] mov r0, #0xb ldr r7, [r1, #0x0] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x7e lsl r0, r0, #0x2 ldr r5, [r4, r0] @@ -3264,7 +3264,7 @@ FUN_02036AB8: ; 0x02036AB8 bne _02036B0E mov r0, #0xb add r1, r5, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x7a lsl r1, r1, #0x2 lsl r2, r7, #0x18 @@ -3320,7 +3320,7 @@ _02036B0E: lsl r1, r1, #0x2 ldr r1, [r4, r1] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0x0 bl FUN_0204649C mov r0, #0x72 diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s index 6f303045..7c046e25 100644 --- a/arm9/asm/unk_02048120.s +++ b/arm9/asm/unk_02048120.s @@ -209,7 +209,7 @@ _02048298: add r0, r4, #0x0 add r0, #0xc mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x0] add r0, r0, #0x1 str r0, [r4, #0x0] @@ -263,7 +263,7 @@ FUN_020482F4: ; 0x020482F4 add r0, r5, #0x0 add r0, #0xc mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x1c] ldr r1, [sp, #0x10] add r2, r6, #0x0 diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s index 4750c7ea..929f1efa 100644 --- a/arm9/asm/unk_020484A8.s +++ b/arm9/asm/unk_020484A8.s @@ -343,7 +343,7 @@ FUN_02048764: ; 0x02048764 str r0, [r1, #0x30] add r1, #0x1c add r0, r1, #0x0 - bl FUN_0201901C + bl InitWindow ldr r0, _020487D4 ; =UNK_020F46B0 bl GX_SetBanks ldr r2, _020487D8 ; =0x04000304 diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s index c8a8a153..fbe0aed9 100644 --- a/arm9/asm/unk_02050E48.s +++ b/arm9/asm/unk_02050E48.s @@ -1255,7 +1255,7 @@ _02051836: bl FUN_02019178 add r0, r5, #0x0 add r0, #0x14 - bl FUN_0201901C + bl InitWindow _02051846: add r0, r5, #0x0 add r0, #0x54 @@ -1267,7 +1267,7 @@ _02051846: bl FUN_02019178 add r0, r5, #0x0 add r0, #0x54 - bl FUN_0201901C + bl InitWindow _02051862: add r0, r5, #0x0 add r0, #0x64 @@ -1279,7 +1279,7 @@ _02051862: bl FUN_02019178 add r5, #0x64 add r0, r5, #0x0 - bl FUN_0201901C + bl InitWindow _0205187E: pop {r3-r5, pc} @@ -1325,15 +1325,15 @@ _0205188E: str r0, [r4, #0x10] add r0, r4, #0x0 add r0, #0x14 - bl FUN_0201901C + bl InitWindow add r0, r4, #0x0 add r0, #0x54 - bl FUN_0201901C + bl InitWindow add r0, r4, #0x0 add r0, #0x64 - bl FUN_0201901C + bl InitWindow mov r0, #0xb - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x78] bl FUN_02033534 add r1, r4, #0x0 @@ -1442,7 +1442,7 @@ _020519BA: ldr r0, [r4, #0x10] bl String_dtor ldr r0, [r4, #0x78] - bl FUN_020136C0 + bl DestroyListMenuCursorObj add r0, r4, #0x0 mov r1, #0x1 bl FUN_02051810 @@ -1711,7 +1711,7 @@ FUN_02051B68: ; 0x02051B68 bl FUN_0200CB00 ldr r0, [sp, #0x20] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r7, #0x0 add r6, r7, #0x0 add r4, r7, #0x0 @@ -1769,14 +1769,14 @@ _02051C34: lsr r0, r0, #0x10 str r0, [sp, #0x4] ldr r0, [sp, #0x20] - bl FUN_020196F4 + bl FillWindowPixelRect ldr r3, [sp, #0x14] add r1, r5, #0x0 ldr r0, [r5, #0x78] add r1, #0x54 mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj add r0, r5, #0x0 add r0, #0x54 mov r1, #0x0 @@ -1837,7 +1837,7 @@ FUN_02051C88: ; 0x02051C88 bl FUN_0200CB00 add r0, r7, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r6, #0x0 add r4, r6, #0x0 _02051CE0: @@ -1880,13 +1880,13 @@ _02051D0A: str r0, [sp, #0x4] add r0, r7, #0x0 add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r3, [sp, #0x14] ldr r0, [r5, #0x78] ldr r1, [r5, #0x7c] mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj ldr r0, [r5, #0x7c] mov r1, #0x0 mov r2, #0x1 @@ -1987,14 +1987,14 @@ _02051DE0: lsr r1, r1, #0x10 str r1, [sp, #0x4] mov r1, #0xf - bl FUN_020196F4 + bl FillWindowPixelRect mov r3, #0x81 ldrsb r3, [r4, r3] ldr r0, [r4, #0x78] ldr r1, [r4, #0x7c] mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj ldr r0, [r4, #0x7c] bl FUN_02019548 mov r0, #0x0 diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s index 6ab54142..4724c308 100644 --- a/arm9/asm/unk_02053750.s +++ b/arm9/asm/unk_02053750.s @@ -1291,7 +1291,7 @@ FUN_020540C8: ; 0x020540C8 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _020540E4: @@ -1408,7 +1408,7 @@ FUN_020541A4: ; 0x020541A4 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _020541C0: @@ -1481,7 +1481,7 @@ FUN_02054228: ; 0x02054228 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054244: @@ -1581,7 +1581,7 @@ FUN_020542E8: ; 0x020542E8 bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054304: @@ -1749,7 +1749,7 @@ FUN_0205442C: ; 0x0205442C bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054448: @@ -1900,7 +1900,7 @@ FUN_0205454C: ; 0x0205454C bl FUN_0201FFC8 ldr r1, [r4, #0x0] mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x0 str r0, [r4, #0x0] _02054568: diff --git a/arm9/asm/unk_02057380.s b/arm9/asm/unk_02057380.s index c6a25876..ef4050e3 100644 --- a/arm9/asm/unk_02057380.s +++ b/arm9/asm/unk_02057380.s @@ -33,10 +33,10 @@ FUN_020573AC: ; 0x020573AC bl FUN_020583CC add r1, r0, #0x0 mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0xb add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 @@ -1035,10 +1035,10 @@ _02057C42: blt _02057C1A ldr r1, [r5, #0x10] mov r0, #0xb - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0xb add r1, r5, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r3-r7, pc} thumb_func_start FUN_02057C64 diff --git a/arm9/asm/unk_0205AD98.s b/arm9/asm/unk_0205AD98.s index bc0fa0dd..54448e61 100644 --- a/arm9/asm/unk_0205AD98.s +++ b/arm9/asm/unk_0205AD98.s @@ -212,7 +212,7 @@ _0205AF14: bl FUN_0205AE50 mov r0, #0x4 add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r5, #0x0 bl FUN_0200CAB4 pop {r3-r5, pc} diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s index ac7a6808..d80c26b4 100644 --- a/arm9/asm/unk_0205C598.s +++ b/arm9/asm/unk_0205C598.s @@ -723,7 +723,7 @@ FUN_0205CAE0: ; 0x0205CAE0 bl FUN_0201B6C8 add r1, r0, #0x0 mov r0, #0x4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r4, #0x0 bl FUN_0200CAB4 pop {r4, pc} diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s index 2ec122fa..fc235004 100644 --- a/arm9/asm/unk_020625EC.s +++ b/arm9/asm/unk_020625EC.s @@ -246,7 +246,7 @@ FUN_02062770: ; 0x02062770 add r4, r0, #0x0 add r0, #0xc0 ldr r0, [r0, #0x0] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r1, _020627C8 ; =gMain ldr r3, [r1, #0x48] mov r1, #0x2 @@ -467,7 +467,7 @@ _0206290C: _02062912: add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldrh r0, [r4, #0x1a] @@ -578,7 +578,7 @@ FUN_020629D8: ; 0x020629D8 _020629EE: add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldrh r0, [r4, #0x1a] @@ -1173,7 +1173,7 @@ FUN_02062DB0: ; 0x02062DB0 add r4, #0xe4 add r0, r4, #0x0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3-r4, pc} .balign 4 @@ -1361,7 +1361,7 @@ FUN_02063028: ; 0x02063028 ldr r1, [r5, #0x0] add r7, r0, #0x1 add r0, r7, #0x0 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0x0 add r1, #0xc4 str r0, [r1, #0x0] @@ -1385,7 +1385,7 @@ FUN_02063028: ; 0x02063028 add r0, r5, #0x0 add r0, #0xd4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r5, #0x18] mov r6, #0x0 cmp r0, #0x0 @@ -1397,7 +1397,7 @@ _0206307C: ldr r0, [r0, #0x0] ldr r1, [r4, #0x64] add r2, r6, #0x0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldrb r0, [r5, #0x18] add r6, r6, #0x1 add r4, r4, #0x4 @@ -1409,7 +1409,7 @@ _02063094: ldr r0, [r0, #0x0] ldr r1, [r5, #0x38] ldr r2, _02063160 ; =0x0000FFFF - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r1, r5, #0x0 ldr r0, _02063164 ; =UNK_020F7C2C add r1, #0xa0 @@ -1455,7 +1455,7 @@ _02063094: ldr r2, [sp, #0x18] add r0, #0xa0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0x0 add r1, #0xc0 str r0, [r1, #0x0] @@ -1474,7 +1474,7 @@ _02063094: add r0, r5, #0x0 add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldr r0, _02063174 ; =0x0001020F @@ -1515,11 +1515,11 @@ FUN_02063178: ; 0x02063178 ldr r0, [r0, #0x0] add r1, #0x22 add r2, #0x24 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0x0 add r0, #0xc4 ldr r0, [r0, #0x0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0x0 add r0, #0xd4 bl FUN_02019570 @@ -1546,16 +1546,16 @@ FUN_020631C8: ; 0x020631C8 push {r3-r5, lr} mov r1, #0x13 add r5, r0, #0x0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0x0 add r4, r0, #0x0 add r0, r5, #0x0 add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0x0 mov r1, #0x2 - bl FUN_02001470 + bl ListMenuGetTemplateField add r2, sp, #0x0 ldrh r3, [r2, #0x0] ldrh r2, [r2, #0x2] @@ -1579,7 +1579,7 @@ FUN_02063208: ; 0x02063208 add r4, r0, #0x0 add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldr r0, _02063234 ; =0x0001020F @@ -1626,7 +1626,7 @@ FUN_02063264: ; 0x02063264 add r4, r0, #0x0 add r0, #0xe4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x0 str r3, [sp, #0x0] ldr r0, _020632A0 ; =0x0001020F @@ -1675,7 +1675,7 @@ FUN_020632A4: ; 0x020632A4 add r0, r4, #0x0 add r0, #0xd4 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x1 str r0, [sp, #0x1c] mov r0, #0x0 @@ -1901,7 +1901,7 @@ FUN_02063430: ; 0x02063430 add r0, r4, #0x0 add r0, #0xf4 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0x0 str r1, [sp, #0x0] ldr r0, _020634D8 ; =0x00010200 diff --git a/arm9/asm/unk_020643C0.s b/arm9/asm/unk_020643C0.s index bc843c82..4a7b92d3 100644 --- a/arm9/asm/unk_020643C0.s +++ b/arm9/asm/unk_020643C0.s @@ -292,12 +292,12 @@ _020645F2: thumb_func_start FUN_02064600 FUN_02064600: ; 0x02064600 - ldr r3, _02064608 ; =FUN_02016A8C + ldr r3, _02064608 ; =FreeToHeapExplicit add r1, r0, #0x0 ldr r0, [r1, #0x8] bx r3 .balign 4 -_02064608: .word FUN_02016A8C +_02064608: .word FreeToHeapExplicit thumb_func_start FUN_0206460C FUN_0206460C: ; 0x0206460C @@ -320,13 +320,13 @@ _02064622: thumb_func_start FUN_02064630 FUN_02064630: ; 0x02064630 - ldr r3, _0206463C ; =FUN_02016A8C + ldr r3, _0206463C ; =FreeToHeapExplicit add r1, r0, #0x0 ldr r0, [r1, #0x8] ldr r1, [r1, #0xc] bx r3 nop -_0206463C: .word FUN_02016A8C +_0206463C: .word FreeToHeapExplicit thumb_func_start FUN_02064640 FUN_02064640: ; 0x02064640 diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 3d43d136..df203337 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -146,7 +146,7 @@ FUN_020654D0: ; 0x020654D0 add r5, r1, #0x0 lsl r0, r0, #0x4 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0x0 mov r0, #0x69 lsl r0, r0, #0x2 @@ -256,7 +256,7 @@ FUN_020655B0: ; 0x020655B0 add r4, r1, #0x0 lsl r0, r0, #0x4 ldr r0, [r4, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0x0 ldr r0, _02065638 ; =gMain mov r1, #0x2 @@ -967,16 +967,16 @@ FUN_02065AF4: ; 0x02065AF4 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x65 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r5, #0x1b] ldr r1, [r5, #0x0] add r0, r0, #0x1 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x59 lsl r1, r1, #0x2 add r7, r5, #0x0 @@ -995,7 +995,7 @@ _02065B7E: ldr r1, [r2, #0x8] ldrb r2, [r2, #0x0] ldr r0, [r5, r0] - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r6, #0x1 lsl r0, r0, #0x18 lsr r6, r0, #0x18 @@ -1011,7 +1011,7 @@ _02065B9E: sub r1, #0x4c ldr r1, [r5, r1] ldr r2, _02065CE0 ; =0x0000FFFF - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r6, #0x1 lsl r0, r0, #0x18 mov r1, #0x5 @@ -1110,7 +1110,7 @@ _02065C64: lsl r3, r3, #0x18 ldrh r2, [r5, r2] lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x16 lsl r1, r1, #0x4 str r0, [r5, r1] @@ -1169,7 +1169,7 @@ FUN_02065CFC: ; 0x02065CFC add r4, r1, #0x0 mov r1, #0x13 add r5, r0, #0x0 - bl FUN_02001470 + bl ListMenuGetTemplateField ldr r1, _02065D48 ; =0x0000FFFF cmp r4, r1 bne _02065D1C @@ -1177,7 +1177,7 @@ FUN_02065CFC: ; 0x02065CFC mov r1, #0x1 mov r2, #0xf mov r3, #0x2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} _02065D1C: mov r1, #0xc @@ -1191,14 +1191,14 @@ _02065D1C: mov r1, #0x3 mov r2, #0xf mov r3, #0x4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} _02065D38: add r0, r5, #0x0 mov r1, #0x7 mov r2, #0xf mov r3, #0x8 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3-r5, pc} nop _02065D48: .word 0x0000FFFF @@ -1210,16 +1210,16 @@ FUN_02065D4C: ; 0x02065D4C mov r1, #0x13 add r4, r0, #0x0 add r6, r2, #0x0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0x0 add r5, r0, #0x0 add r0, r4, #0x0 add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r4, #0x0 mov r1, #0x2 - bl FUN_02001470 + bl ListMenuGetTemplateField lsl r0, r0, #0x10 lsr r4, r0, #0x10 cmp r6, #0x0 @@ -1280,7 +1280,7 @@ FUN_02065DD8: ; 0x02065DD8 str r2, [sp, #0x4] ldr r1, [r5, #0x0] mov r0, #0x4 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x59 lsl r1, r1, #0x2 str r0, [r5, r1] @@ -1295,7 +1295,7 @@ FUN_02065DD8: ; 0x02065DD8 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r7, #0x43 ldr r6, _02065ECC ; =UNK_020F7EAC mov r4, #0x0 @@ -1309,7 +1309,7 @@ _02065E14: ldr r1, [r5, r7] ldr r2, [r6, r2] ldr r3, [r3, #0x4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r4, #0x1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -1362,7 +1362,7 @@ _02065E14: ldr r2, [sp, #0x4] add r0, r5, r0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x16 lsl r1, r1, #0x4 str r0, [r5, r1] @@ -1418,11 +1418,11 @@ FUN_02065EF8: ; 0x02065EF8 ldr r0, [r4, r0] add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x59 lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x65 lsl r0, r0, #0x2 add r0, r4, r0 @@ -1495,11 +1495,11 @@ FUN_02065F8C: ; 0x02065F8C ldr r0, [r4, r0] add r1, #0x2 add r2, sp, #0x0 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x59 lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x5d lsl r0, r0, #0x2 add r0, r4, r0 @@ -2006,7 +2006,7 @@ FUN_02066334: ; 0x02066334 lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3-r4, pc} .balign 4 @@ -2066,7 +2066,7 @@ _02066426: add r0, r5, r1 mov r1, #0xff add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x1 bl FUN_02002B60 mov r0, #0x0 diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 879f7f48..3124976e 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -117,7 +117,7 @@ FUN_0206C700: ; 0x0206C700 str r0, [r4, #0x0] add r0, r5, #0x0 mov r1, #0x1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #0x4] ldr r0, [sp, #0x18] str r0, [r4, #0x2c] @@ -147,7 +147,7 @@ FUN_0206C700: ; 0x0206C700 bl FUN_02019064 ldr r0, [r4, #0x4] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x4] mov r1, #0x0 mov r2, #0x1 @@ -2673,7 +2673,7 @@ FUN_0206DD6C: ; 0x0206DD6C bl FreeToHeap ldr r0, [r4, #0x4] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x2c] bl Options_GetTextFrameDelay mov r3, #0x0 diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index b7b79b0e..1a62b92b 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -781,7 +781,7 @@ _0206F914: bl FUN_02001C5C ldr r0, _0206F978 ; =0x000006F8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0x0 mov r1, #0x1d mov r2, #0x1 @@ -1237,7 +1237,7 @@ FUN_0206FCD4: ; 0x0206FCD4 bl FUN_020178A0 mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 @@ -1293,7 +1293,7 @@ FUN_0206FD24: ; 0x0206FD24 bl memcpy mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x1a mov r0, #0x0 lsl r1, r1, #0x4 @@ -3729,7 +3729,7 @@ _02071146: bl FUN_02072844 mov r0, #0xc add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r5, #0x0 bl FUN_0207295C mov r1, #0x0 @@ -5223,7 +5223,7 @@ FUN_02071CB4: ; 0x02071CB4 lsl r1, r1, #0x4 add r0, r0, r1 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r6, #0x0 bl FUN_02072B7C @@ -5645,7 +5645,7 @@ _02072054: bl FUN_0200D0BC add r0, r5, r7 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207322C add r0, r4, #0x0 @@ -5902,7 +5902,7 @@ _02072282: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207322C mov r0, #0xb @@ -6066,7 +6066,7 @@ _020723D6: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207322C ldr r0, _02072410 ; =0x000005A4 diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index 5b3ed0a3..7cbbce8f 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -453,7 +453,7 @@ FUN_02072844: ; 0x02072844 bl FUN_02019064 ldr r0, [sp, #0x14] mov r1, #0xc - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _0207294C ; =0x000006F8 mov r6, #0x0 str r0, [r5, r1] @@ -473,7 +473,7 @@ _02072890: ldr r1, _02072950 ; =0x000006E8 ldr r0, [r5, r0] ldr r1, [r3, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r6, #0x1 lsl r0, r0, #0x10 lsr r6, r0, #0x10 @@ -488,7 +488,7 @@ _020728B4: ldr r1, _02072954 ; =0x000006AC ldr r0, [r5, r0] ldr r1, [r3, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem _020728CC: add r0, r4, #0x1 lsl r0, r0, #0x10 @@ -870,7 +870,7 @@ FUN_02072BBC: ; 0x02072BBC add r0, r5, r4 mov r2, #0x4 add r3, r1, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, r4 bl FUN_02019220 add sp, #0x8 @@ -1000,7 +1000,7 @@ _02072CBE: mov r1, #0xa mov r2, #0x0 mov r3, #0x2 - bl FUN_020196F4 + bl FillWindowPixelRect str r5, [sp, #0x0] mov r0, #0x2 str r0, [sp, #0x4] @@ -1008,7 +1008,7 @@ _02072CBE: mov r1, #0x9 mov r2, #0x0 mov r3, #0x3 - bl FUN_020196F4 + bl FillWindowPixelRect str r5, [sp, #0x0] mov r0, #0x1 str r0, [sp, #0x4] @@ -1016,7 +1016,7 @@ _02072CBE: mov r1, #0xa mov r2, #0x0 mov r3, #0x5 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r4, #0x0 bl FUN_02019220 add sp, #0xc @@ -1042,14 +1042,14 @@ FUN_02072D1C: ; 0x02072D1C str r0, [sp, #0x4] add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x1 lsl r0, r0, #0x4 add r7, r5, #0x4 str r0, [sp, #0x8] add r0, r7, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0x0 str r0, [sp, #0xc] add r0, r4, #0x2 @@ -1058,7 +1058,7 @@ FUN_02072D1C: ; 0x02072D1C str r0, [sp, #0x10] add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0x0 str r0, [sp, #0x14] add r0, r4, #0x3 @@ -1066,7 +1066,7 @@ FUN_02072D1C: ; 0x02072D1C ldr r0, [sp, #0x14] mov r1, #0x0 add r0, r0, r4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r6, #0x0 bl FUN_02072A54 @@ -1179,13 +1179,13 @@ FUN_02072E4C: ; 0x02072E4C lsl r0, r6, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x1 add r1, r5, #0x4 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_02072A54 @@ -1249,13 +1249,13 @@ FUN_02072EE4: ; 0x02072EE4 lsl r0, r6, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x1 add r1, r5, #0x4 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_02072A54 @@ -1319,13 +1319,13 @@ FUN_02072F78: ; 0x02072F78 lsl r0, r6, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x1 add r1, r5, #0x4 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_02072A54 @@ -1367,13 +1367,13 @@ FUN_02072FDC: ; 0x02072FDC lsl r0, r6, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x1 add r1, r5, #0x4 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_02072A54 @@ -1463,12 +1463,12 @@ FUN_02073094: ; 0x02073094 add r4, r1, #0x0 add r0, r5, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7d lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x1 tst r0, r4 beq _020730FE @@ -1563,7 +1563,7 @@ FUN_02073160: ; 0x02073160 _0207317A: add r0, r4, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x0 mvn r0, r0 cmp r6, r0 @@ -1634,7 +1634,7 @@ FUN_020731E8: ; 0x020731E8 _02073202: add r0, r5, r6 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x0 mvn r0, r0 cmp r4, r0 @@ -1763,7 +1763,7 @@ FUN_020732F4: ; 0x020732F4 add r0, r4, r6 mov r1, #0x0 add r7, r2, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r7, #0x0 beq _02073318 cmp r7, #0x1 @@ -1817,7 +1817,7 @@ FUN_02073364: ; 0x02073364 add r0, r4, r7 mov r1, #0x0 add r6, r2, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #0x0 beq _0207338C cmp r6, #0x1 @@ -1880,7 +1880,7 @@ FUN_020733E4: ; 0x020733E4 add r0, r4, r6 mov r1, #0x0 add r7, r2, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r7, #0x0 ldr r0, _02073440 ; =0x0000069C bne _0207340E @@ -1928,7 +1928,7 @@ FUN_02073448: ; 0x02073448 add r0, r4, r7 mov r1, #0x0 add r6, r2, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #0x6 ldr r0, _020734B8 ; =0x0000069C bhs _02073476 @@ -2046,7 +2046,7 @@ FUN_020734C0: ; 0x020734C0 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r4, #0x0 str r4, [sp, #0x14] add r7, r5, #0x0 @@ -2158,7 +2158,7 @@ FUN_0207363C: ; 0x0207363C mov r1, #0xf mov r2, #0x50 mov r3, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _020736E8 ; =0x0000069C mov r1, #0xc0 ldr r0, [r5, r0] diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s index 6635b399..9cac1662 100644 --- a/arm9/asm/unk_02073DA8.s +++ b/arm9/asm/unk_02073DA8.s @@ -46,7 +46,7 @@ FUN_02073DB4: ; 0x02073DB4 bl FUN_02001C5C ldr r0, _02073DF0 ; =0x000006F8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x95 lsl r0, r0, #0x2 add r0, r4, r0 @@ -69,7 +69,7 @@ FUN_02073DF4: ; 0x02073DF4 bl FUN_020731D4 mov r0, #0x3 mov r1, #0xc - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02073EB0 ; =0x000006F8 str r0, [r5, r1] mov r0, #0x3 @@ -79,7 +79,7 @@ FUN_02073DF4: ; 0x02073DF4 ldr r0, [r5, r1] sub r1, #0x40 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x4 bl FUN_02073DA8 ldr r1, _02073EB0 ; =0x000006F8 @@ -87,7 +87,7 @@ FUN_02073DF4: ; 0x02073DF4 ldr r0, [r5, r1] sub r1, #0x3c ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x9 bl FUN_02073DA8 ldr r1, _02073EB0 ; =0x000006F8 @@ -95,7 +95,7 @@ FUN_02073DF4: ; 0x02073DF4 ldr r0, [r5, r1] sub r1, #0x28 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, _02073EB0 ; =0x000006F8 mov r1, #0x0 ldr r0, [r5, r0] @@ -155,7 +155,7 @@ FUN_02073EB8: ; 0x02073EB8 bl FUN_02001C5C ldr r0, _02073EE4 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02073EE8 ; =0x000005A4 mov r1, #0x3 ldr r0, [r5, r0] @@ -186,7 +186,7 @@ FUN_02073EEC: ; 0x02073EEC bl FUN_02001C5C ldr r0, _02074048 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _0207404C ; =0x00000B25 ldrb r1, [r5, r0] mov r0, #0x2c @@ -316,7 +316,7 @@ _02074018: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207322C mov r0, #0xf @@ -381,7 +381,7 @@ FUN_020740AC: ; 0x020740AC bl FUN_020731D4 mov r0, #0x3 mov r1, #0xc - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02074168 ; =0x000006F8 str r0, [r5, r1] mov r0, #0x6 @@ -391,7 +391,7 @@ FUN_020740AC: ; 0x020740AC ldr r0, [r5, r1] sub r1, #0x34 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x7 bl FUN_02073DA8 ldr r1, _02074168 ; =0x000006F8 @@ -399,7 +399,7 @@ FUN_020740AC: ; 0x020740AC ldr r0, [r5, r1] sub r1, #0x30 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x9 bl FUN_02073DA8 ldr r1, _02074168 ; =0x000006F8 @@ -407,7 +407,7 @@ FUN_020740AC: ; 0x020740AC ldr r0, [r5, r1] sub r1, #0x28 ldr r1, [r5, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, _02074168 ; =0x000006F8 mov r1, #0x0 ldr r0, [r5, r0] @@ -467,7 +467,7 @@ FUN_02074170: ; 0x02074170 bl FUN_02001C5C ldr r0, _0207419C ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _020741A0 ; =0x000005A4 mov r1, #0x7 ldr r0, [r5, r0] @@ -497,7 +497,7 @@ FUN_020741A4: ; 0x020741A4 bl FUN_02001C5C ldr r0, _020741F0 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0x0 mov r1, #0x2b mov r2, #0x1 @@ -744,7 +744,7 @@ FUN_020743AC: ; 0x020743AC bl FUN_02001C5C ldr r0, _02074414 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02074418 ; =0x000005A4 mov r1, #0x0 ldr r0, [r5, r0] @@ -1672,7 +1672,7 @@ _02074B6A: add r1, r7, #0x0 str r0, [r3, #0x0] mov r0, #0xc - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0x3 lsl r1, r1, #0x8 ldrb r3, [r4, r1] @@ -2324,7 +2324,7 @@ FUN_02075090: ; 0x02075090 bl FUN_02001C5C ldr r0, _020750C0 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x1b str r0, [r4, #0x0] pop {r3-r5, pc} @@ -2349,7 +2349,7 @@ FUN_020750C4: ; 0x020750C4 bl FUN_02001C5C ldr r0, _020750F4 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x1b str r0, [r4, #0x0] pop {r3-r5, pc} @@ -2482,7 +2482,7 @@ _020751E4: bl FUN_02001C5C ldr r0, _0207523C ; =0x000006F8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x1b str r0, [r6, #0x0] pop {r4-r6, pc} diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index 14488621..9e2ab9b0 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -1403,7 +1403,7 @@ _020760D4: lsl r1, r1, #0x4 add r0, r0, r1 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _02076134 ; =0x00000B25 add r0, r5, #0x0 ldrb r1, [r5, r1] @@ -1672,7 +1672,7 @@ _020762DC: lsl r1, r1, #0x4 add r0, r0, r1 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _020763E0 ; =0x00000B25 add r0, r4, #0x0 ldrb r1, [r4, r1] @@ -3174,7 +3174,7 @@ FUN_02076FB0: ; 0x02076FB0 mov r2, #0x2 ldr r1, [r5, r1] mvn r2, r2 - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x0 pop {r3-r7, pc} _0207701C: @@ -3182,7 +3182,7 @@ _0207701C: sub r1, #0x50 ldr r1, [r5, r1] add r2, r6, #0x0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem mov r0, #0x1 pop {r3-r7, pc} .balign 4 @@ -3209,7 +3209,7 @@ _02077050: _02077058: mov r0, #0x4 mov r1, #0xc - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02077108 ; =0x000006F8 str r0, [r4, r1] add r0, r4, #0x0 @@ -3328,7 +3328,7 @@ _02077130: bl FUN_02001C5C ldr r0, _02077230 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0x0 mov r1, #0x20 mov r2, #0x1 @@ -3353,7 +3353,7 @@ _0207716A: bl FUN_02001C5C ldr r0, _02077230 ; =0x000006F8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02077234 ; =0x000005A4 ldr r6, [r5, r0] add r0, r5, #0x0 diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index a5d7b26d..16a7190f 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -1013,7 +1013,7 @@ _02077594: ldr r0, _020776B0 ; =0x00000448 mov r1, #0xf add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _020776B0 ; =0x00000448 mov r2, #0x1 add r0, r4, r0 @@ -1509,18 +1509,18 @@ _02077982: ldr r1, _02077A70 ; =0x000004AC mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r4, #0x0] cmp r0, #0x1 bne _020779C2 ldr r1, _02077A74 ; =0x000004B4 mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, _02077A78 ; =0x000004BC mov r0, #0x12 ldr r1, [r4, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit _020779C2: mov r0, #0x16 lsl r0, r0, #0x4 @@ -2250,7 +2250,7 @@ _02077FB0: bl FUN_020178A0 mov r0, #0x12 add r1, r6, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4-r6, pc} thumb_func_start FUN_02077FE8 @@ -3359,7 +3359,7 @@ FUN_020788C4: ; 0x020788C4 _020788DE: add r0, r5, #0x0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0x0 str r1, [sp, #0x0] ldr r0, _02078908 ; =0x000E0F01 @@ -3524,7 +3524,7 @@ _020789D8: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x3 str r0, [sp, #0x0] mov r0, #0x7 @@ -3548,7 +3548,7 @@ _020789D8: ldr r0, _02078B74 ; =0x00000438 mov r1, #0x1 add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r5, #0x0] cmp r1, #0x5 bne _02078A90 @@ -3581,7 +3581,7 @@ _02078A90: ldr r0, _02078B78 ; =0x00000448 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0x5e ldr r0, _02078B78 ; =0x00000448 lsl r2, r2, #0x2 @@ -3640,7 +3640,7 @@ _02078B0E: bl FUN_02019064 add r0, r7, r6 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #0x1 cmp r4, #0x3 blt _02078B0E @@ -3661,7 +3661,7 @@ _02078B0E: ldr r0, _02078B84 ; =0x00000428 mov r1, #0x0 add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r4-r7, pc} .balign 4 @@ -4119,7 +4119,7 @@ _02078EB4: mov r2, #0x0 ldr r0, [sp, #0x18] add r3, r2, #0x0 - bl FUN_02019658 + bl BlitBitmapRectToWindow b _02078F56 _02078F00: ldr r0, _02078F78 ; =0x0000D004 @@ -4212,7 +4212,7 @@ FUN_02078FA0: ; 0x02078FA0 mov r1, #0x0 add r5, r2, #0x0 add r4, r3, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x0 ldr r3, _0207906C ; =0x000D0E0F add r0, #0x30 @@ -4266,7 +4266,7 @@ _02079012: strh r1, [r0, #0x2] add r0, r6, r7 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 add r1, sp, #0xc bl CopyU16ArrayToString @@ -4563,7 +4563,7 @@ _0207924A: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xc str r0, [sp, #0x0] mov r2, #0x0 @@ -4599,7 +4599,7 @@ _0207927C: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xc str r0, [sp, #0x0] mov r2, #0x0 @@ -4632,7 +4632,7 @@ _020792CA: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xc str r0, [sp, #0x0] mov r2, #0x0 @@ -4708,7 +4708,7 @@ _0207936A: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x56 lsl r0, r0, #0x2 ldrh r0, [r4, r0] @@ -4835,7 +4835,7 @@ _02079470: lsl r0, r0, #0x2 add r0, r4, r0 mov r1, #0x1 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xc str r0, [sp, #0x0] mov r2, #0x0 @@ -5203,7 +5203,7 @@ FUN_0207974C: ; 0x0207974C add r5, r0, #0x0 str r3, [sp, #0x14] str r2, [sp, #0x30] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _0207982C ; =UNK_020F9D30 ldr r0, [sp, #0x10] mov r7, #0x0 @@ -5219,7 +5219,7 @@ _0207976C: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x10 str r0, [sp, #0x0] mov r0, #0x13 @@ -5229,7 +5229,7 @@ _0207976C: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x26 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x10 str r0, [sp, #0x0] mov r0, #0x13 @@ -5239,7 +5239,7 @@ _0207976C: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x4c - bl FUN_020196F4 + bl FillWindowPixelRect add r7, r7, #0x1 add r6, #0x20 cmp r7, #0x6 @@ -5256,7 +5256,7 @@ _020797BA: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x13 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x10 str r0, [sp, #0x0] mov r0, #0x13 @@ -5266,7 +5266,7 @@ _020797BA: add r1, r4, #0x0 lsr r2, r2, #0x10 mov r3, #0x39 - bl FUN_020196F4 + bl FillWindowPixelRect add r7, r7, #0x1 add r6, #0x20 cmp r7, #0x7 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 722c8144..617a122a 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -533,7 +533,7 @@ FUN_0207A08C: ; 0x0207A08C bl FUN_020178A0 mov r0, #0x13 add r1, r4, #0x0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .balign 4 diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s index 2546b905..5a814a79 100644 --- a/arm9/asm/unk_0207D5BC.s +++ b/arm9/asm/unk_0207D5BC.s @@ -82,7 +82,7 @@ _0207D5C4: bl FUN_02019150 add r0, r4, r6 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x1 lsl r0, r0, #0x10 lsr r5, r0, #0x10 @@ -190,7 +190,7 @@ _0207D692: mov r0, #0x13 lsl r1, r1, #0x18 lsr r1, r1, #0x18 - bl FUN_02018FF4 + bl AllocWindows mov r1, #0x91 lsl r1, r1, #0x2 str r0, [r4, r1] @@ -300,7 +300,7 @@ FUN_0207D768: ; 0x0207D768 lsl r4, r4, #0x2 add r0, r5, r4 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0x0 add r2, r4, #0x0 str r1, [sp, #0x0] @@ -371,7 +371,7 @@ FUN_0207D800: ; 0x0207D800 lsl r6, r6, #0x2 add r0, r5, r6 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0x0 add r0, #0x8c ldr r0, [r5, r0] @@ -444,7 +444,7 @@ FUN_0207D8A0: ; 0x0207D8A0 lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0207D918 ; =0x0000025E ldrh r2, [r5, r0] cmp r2, #0x0 @@ -504,7 +504,7 @@ FUN_0207D924: ; 0x0207D924 add r4, r1, #0x0 add r0, r5, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x0 str r0, [sp, #0x0] ldr r3, _0207D954 ; =0x000F0E00 @@ -581,7 +581,7 @@ _0207D9B4: lsl r0, r0, #0x18 lsr r5, r0, #0x18 add r0, r6, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #0x1b lsr r0, r0, #0x18 sub r0, r0, r5 @@ -598,7 +598,7 @@ _0207D9D8: lsl r0, r0, #0x18 lsr r5, r0, #0x18 add r0, r6, #0x0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #0x1b lsr r0, r0, #0x18 sub r1, r0, r5 @@ -1151,37 +1151,37 @@ FUN_0207DE3C: ; 0x0207DE3C lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0x93 lsl r1, r1, #0x2 ldr r0, [r4, r1] @@ -1522,7 +1522,7 @@ FUN_0207E190: ; 0x0207E190 lsl r0, r0, #0x2 ldr r0, [r5, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl FUN_0207B628 add r6, r0, #0x0 @@ -1601,53 +1601,53 @@ FUN_0207E200: ; 0x0207E200 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x60 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x70 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] - bl FUN_0201AB0C + bl GetWindowWidth mov r1, #0x76 str r1, [sp, #0x0] mov r1, #0x9d @@ -1875,7 +1875,7 @@ _0207E4C6: ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207E584 ; =0x00000674 mov r1, #0xa5 ldr r0, [r4, r2] @@ -1929,7 +1929,7 @@ _0207E4C6: sub r0, #0x8 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207E584 ; =0x00000674 mov r1, #0xa3 ldr r0, [r4, r2] @@ -1991,25 +1991,25 @@ _0207E5BC: lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x0 bl FUN_0207EA44 @@ -2074,25 +2074,25 @@ _0207E678: lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x0 bl FUN_0207EA44 @@ -2144,7 +2144,7 @@ FUN_0207E70C: ; 0x0207E70C lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x0 str r0, [sp, #0x0] ldr r2, _0207E780 ; =0x00000699 @@ -2214,7 +2214,7 @@ _0207E7BC: ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207E830 ; =0x00000674 mov r1, #0xa5 ldr r0, [r4, r2] @@ -2278,7 +2278,7 @@ FUN_0207E840: ; 0x0207E840 ldr r0, [r5, r0] mov r1, #0x0 add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0207E994 ; =0x00000674 mov r1, #0xba ldr r0, [r5, r0] @@ -2436,13 +2436,13 @@ FUN_0207E9A0: ; 0x0207E9A0 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0207EA34 ; =0x0000069A mov r1, #0x3 ldrb r0, [r4, r0] @@ -2659,19 +2659,19 @@ FUN_0207EB64: ; 0x0207EB64 ldr r0, [r5, r0] mov r1, #0x0 add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r5, r0] mov r1, #0x0 add r0, #0x60 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r5, r0] mov r1, #0x0 add r0, #0x70 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x2 bl GetWazaAttr @@ -2819,7 +2819,7 @@ FUN_0207ECDC: ; 0x0207ECDC ldr r0, [r4, r0] mov r1, #0x0 add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0x4 bl FUN_0207EA44 @@ -2862,7 +2862,7 @@ FUN_0207ED30: ; 0x0207ED30 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x91 lsl r0, r0, #0x2 ldr r1, [r4, r0] @@ -2873,7 +2873,7 @@ FUN_0207ED30: ; 0x0207ED30 lsl r0, r0, #0x4 add r0, r1, r0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _0207EDB0 ; =0x0000068D add r0, r4, #0x0 ldrb r1, [r4, r1] @@ -2946,7 +2946,7 @@ _0207EDEE: _0207EDF6: add r0, r4, #0x0 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207EE24 ; =0x00000674 mov r1, #0x9c ldr r0, [r5, r2] @@ -2977,7 +2977,7 @@ FUN_0207EE2C: ; 0x0207EE2C add r4, r1, #0x0 add r0, #0x50 mov r1, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0x0 mov r1, #0xa bl GetWazaAttr @@ -3098,7 +3098,7 @@ _0207EF10: bl FUN_0200D0BC add r0, r6, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _0207EF64 ; =0x00000674 add r1, r5, #0x0 ldr r0, [r4, r2] diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index 7e7745fe..94945259 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -517,7 +517,7 @@ FUN_02086784: ; 0x02086784 add r0, r5, #0x0 add r4, r2, #0x0 add r6, r3, #0x0 - bl FUN_0201901C + bl InitWindow ldr r0, [sp, #0x28] lsl r2, r4, #0x18 lsl r0, r0, #0x18 @@ -552,7 +552,7 @@ FUN_02086784: ; 0x02086784 bl FUN_0200D0BC add r0, r5, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0x0 bl CopyWindowToVram add sp, #0x14 @@ -567,7 +567,7 @@ FUN_020867EC: ; 0x020867EC str r0, [sp, #0xc] str r2, [sp, #0x10] add r6, r3, #0x0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _02086874 ; =0x0000013F mov r0, #0x0 mov r1, #0x1a @@ -627,7 +627,7 @@ FUN_02086878: ; 0x02086878 add r6, r1, #0x0 str r2, [sp, #0x14] add r4, r3, #0x0 - bl FUN_0201901C + bl InitWindow ldr r0, [sp, #0x3c] ldr r3, [sp, #0x38] lsl r0, r0, #0x18 @@ -658,7 +658,7 @@ FUN_02086878: ; 0x02086878 bl FUN_02019064 mov r0, #0x2 mov r1, #0x47 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x44] ldr r2, _0208695C ; =0x0000013F mov r0, #0x0 @@ -675,7 +675,7 @@ _020868DE: ldr r0, [r5, #0x44] add r1, r6, #0x0 add r2, r4, #0x0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r6, #0x0 bl String_dtor add r4, r4, #0x1 @@ -744,7 +744,7 @@ FUN_02086960: ; 0x02086960 mov r1, #0x0 bl FUN_02001C5C ldr r0, [r4, #0x44] - bl ListMenu_dtor + bl ListMenuItems_dtor pop {r4, pc} thumb_func_start FUN_0208698C diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s index b4c7a133..3facd182 100644 --- a/arm9/asm/unk_02089498.s +++ b/arm9/asm/unk_02089498.s @@ -360,7 +360,7 @@ FUN_02089734: ; 0x02089734 add r0, r4, #0x0 mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0x8 pop {r4, pc} nop @@ -539,7 +539,7 @@ _020898B8: mov r1, #0xf add r2, r6, #0x0 add r3, r6, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0x0 ldr r2, _02089958 ; =0x000001E2 add r0, #0x1c diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s index 4502d1f9..9c06a4ab 100644 --- a/arm9/asm/unk_02089960.s +++ b/arm9/asm/unk_02089960.s @@ -299,7 +299,7 @@ FUN_02089B80: ; 0x02089B80 add r0, r4, #0x0 mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0x8 pop {r4, pc} nop @@ -466,7 +466,7 @@ _02089CE8: mov r1, #0xf add r2, r6, #0x0 add r3, r6, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0x0 ldr r2, _02089D88 ; =0x000001E2 add r0, #0x20 diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s index 92b9e987..e7b88272 100644 --- a/arm9/asm/unk_02089D90.s +++ b/arm9/asm/unk_02089D90.s @@ -137,7 +137,7 @@ FUN_02089D90: ; 0x02089D90 add r0, sp, #0xc mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _02089F18 ; =0x000001F7 add r0, sp, #0xc mov r1, #0x0 diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s index b678254c..b5c93a8a 100644 --- a/arm9/asm/unk_02089F24.s +++ b/arm9/asm/unk_02089F24.s @@ -141,7 +141,7 @@ FUN_02089F24: ; 0x02089F24 add r0, sp, #0xc mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _0208A0AC ; =0x000001F7 add r0, sp, #0xc mov r1, #0x0 @@ -310,7 +310,7 @@ _0208A0C8: add r0, sp, #0xc mov r1, #0xf add r3, r2, #0x0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _0208A24C ; =0x000001F7 add r0, sp, #0xc mov r1, #0x0 diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s index 2be81a9f..bafa4c91 100644 --- a/arm9/asm/unk_0208A338.s +++ b/arm9/asm/unk_0208A338.s @@ -36,7 +36,7 @@ FUN_0208A338: ; 0x0208A338 bl NewMsgDataFromNarc str r0, [r4, #0x10] mov r0, #0x20 - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x14] ldr r2, [r4, #0x0] mov r0, #0x2 @@ -48,13 +48,13 @@ FUN_0208A338: ; 0x0208A338 bl FUN_020853DC add r0, r4, #0x0 add r0, #0x18 - bl FUN_0201901C + bl InitWindow add r0, r4, #0x0 add r0, #0x28 - bl FUN_0201901C + bl InitWindow add r0, r4, #0x0 add r0, #0x38 - bl FUN_0201901C + bl InitWindow mov r0, #0x0 str r0, [r4, #0x54] ldr r1, _0208A3C4 ; =FUN_0208A458 @@ -73,7 +73,7 @@ FUN_0208A3C8: ; 0x0208A3C8 ldr r0, [r4, #0x50] bl FUN_020853A8 ldr r0, [r4, #0x14] - bl FUN_020136C0 + bl DestroyListMenuCursorObj ldr r0, [r4, #0x4] bl String_dtor ldr r0, [r4, #0x8] @@ -102,7 +102,7 @@ FUN_0208A400: ; 0x0208A400 bl FUN_02019178 add r0, r4, #0x0 add r0, #0x18 - bl FUN_0201901C + bl InitWindow _0208A41E: add r0, r4, #0x0 add r0, #0x28 @@ -114,7 +114,7 @@ _0208A41E: bl FUN_02019178 add r0, r4, #0x0 add r0, #0x28 - bl FUN_0201901C + bl InitWindow _0208A43A: add r0, r4, #0x0 add r0, #0x38 @@ -126,7 +126,7 @@ _0208A43A: bl FUN_02019178 add r4, #0x38 add r0, r4, #0x0 - bl FUN_0201901C + bl InitWindow _0208A456: pop {r4, pc} @@ -556,7 +556,7 @@ FUN_0208A77C: ; 0x0208A77C bl FUN_02019064 add r0, r7, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r6, #0x0 add r4, r6, #0x0 _0208A7D2: @@ -583,7 +583,7 @@ _0208A7D2: ldr r0, [r5, #0x14] add r1, r7, #0x0 add r3, r2, #0x0 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj _0208A808: str r7, [r5, #0x68] mov r1, #0x0 @@ -644,7 +644,7 @@ FUN_0208A82C: ; 0x0208A82C bl FUN_02019064 add r0, r7, #0x0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r6, #0x0 add r4, r6, #0x0 _0208A882: @@ -671,7 +671,7 @@ _0208A882: ldr r0, [r5, #0x14] add r1, r7, #0x0 add r3, r2, #0x0 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj _0208A8B8: str r7, [r5, #0x68] mov r1, #0x0 @@ -771,13 +771,13 @@ _0208A954: lsr r1, r1, #0x10 str r1, [sp, #0x4] mov r1, #0xf - bl FUN_020196F4 + bl FillWindowPixelRect ldr r3, [r4, #0x5c] ldr r0, [r4, #0x14] ldr r1, [r4, #0x68] mov r2, #0x0 lsl r3, r3, #0x4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj ldr r0, [r4, #0x68] bl FUN_02019548 ldr r0, _0208A994 ; =0x000005DC diff --git a/arm9/global.inc b/arm9/global.inc index 71b29db9..b3f4dcbb 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -188,21 +188,21 @@ .extern FUN_02000EE8 .extern FUN_02000F18 .extern HandleDSLidAction -.extern FUN_020010A8 -.extern FUN_02001204 -.extern FUN_02001300 -.extern FUN_02001328 -.extern FUN_02001354 -.extern FUN_020013C8 -.extern FUN_020013E8 -.extern FUN_0200143C -.extern FUN_02001448 -.extern FUN_0200145C -.extern FUN_02001464 -.extern FUN_02001470 -.extern FUN_02001538 -.extern FUN_02001658 -.extern FUN_02001B80 +.extern ListMenuInit +.extern ListMenu_ProcessInput +.extern DestroyListMenu +.extern RedrawListMenu +.extern ListMenuTestInputInternal +.extern ListMenuTestInput +.extern ListMenuOverrideSetColors +.extern ListMenuGetCurrentItemArrayId +.extern ListMenuGetScrollAndRow +.extern ListMenuGetUnk33 +.extern ListMenuGetValueByArrayId +.extern ListMenuGetTemplateField +.extern ListMenuSetTemplateField +.extern ListMenuGetItemStr +.extern ListMenuCopyToVram .extern FUN_02001B8C .extern FUN_02001C14 .extern FUN_02001C34 @@ -236,7 +236,7 @@ .extern FontFunc .extern FUN_02002DE0 .extern FUN_02002E14 -.extern FUN_02002E4C +.extern GetFontAttribute .extern FUN_02002ED0 .extern FUN_02002EEC .extern FUN_02002F08 @@ -810,12 +810,12 @@ .extern GF_RTC_GetTimeOfDay .extern GF_RTC_GetTimeOfDayByHour .extern FUN_020127C0 -.extern ListMenu_ctor -.extern ListMenu_dtor -.extern ListMenu_ItemFromMsgData -.extern ListMenu_AddItem -.extern ListMenu_CopyItem -.extern ListMenu_DestroyMenuStrings +.extern ListMenuItems_ctor +.extern ListMenuItems_dtor +.extern ListMenuItems_AppendFromMsgData +.extern ListMenuItems_AddItem +.extern ListMenuItems_CopyItem +.extern ListMenuItems_DestroyMenuStrings .extern FUN_02012944 .extern FUN_02012974 .extern FUN_02012988 @@ -882,10 +882,10 @@ .extern FUN_02013628 .extern FUN_0201365C .extern FUN_02013674 -.extern FUN_02013690 -.extern FUN_020136C0 -.extern FUN_020136E0 -.extern FUN_020136F8 +.extern ListMenuCursorNew +.extern DestroyListMenuCursorObj +.extern ListMenuCursorSetColor +.extern ListMenuUpdateCursorObj .extern MailMsg_init .extern MailMsg_init_withBank .extern MailMsg_init_default @@ -1029,7 +1029,7 @@ .extern AllocFromHeap .extern AllocFromHeapAtEnd .extern FreeToHeap -.extern FUN_02016A8C +.extern FreeToHeapExplicit .extern FUN_02016AF8 .extern FUN_02016B20 .extern FUN_02016B44 @@ -1068,10 +1068,10 @@ .extern FUN_0201886C .extern FUN_02018878 .extern FUN_02018884 -.extern FUN_02018A60 +.extern BlitBitmapRect4Bit .extern FUN_02018F4C -.extern FUN_02018FF4 -.extern FUN_0201901C +.extern AllocWindows +.extern InitWindow .extern FUN_02019048 .extern FUN_02019064 .extern FUN_020190EC @@ -1098,15 +1098,15 @@ .extern FUN_020195D0 .extern FUN_020195E4 .extern FUN_0201960C -.extern FUN_02019620 -.extern FUN_02019658 -.extern FUN_02019684 -.extern FUN_020196F4 +.extern FillWindowPixelBuffer +.extern BlitBitmapRectToWindow +.extern BlitBitmapRect +.extern FillWindowPixelRect .extern FUN_0201974C -.extern FUN_0201A8C8 +.extern ScrollWindow .extern FUN_0201AB08 -.extern FUN_0201AB0C -.extern FUN_0201AB10 +.extern GetWindowWidth +.extern GetWindowHeight .extern FUN_0201AB14 .extern FUN_0201AB18 .extern FUN_0201AB1C @@ -7708,6 +7708,7 @@ .extern MTX_TransApply44 .extern NitroMain .extern gBacklightTop +.extern UNK_02016FA4 .extern OS_AllocFromArenaHi .extern OS_AllocFromArenaLo .extern OS_AllocFromHeap diff --git a/arm9/lib/src/RTC_internal.c b/arm9/lib/src/RTC_internal.c index c7a5f2aa..e3a132ab 100644 --- a/arm9/lib/src/RTC_internal.c +++ b/arm9/lib/src/RTC_internal.c @@ -27,5 +27,5 @@ ARM_FUNC BOOL RTCi_WriteRawStatus2Async(void) ARM_FUNC static BOOL RtcSendPxiCommand(u8 command) { s32 data = command << 8 & 0x7f00; - return PXI_SendWordByFifo(PXI_FIFO_TAG_RTC, data, FALSE) >= 0; + return PXI_SendWordByFifo(PXI_FIFO_TAG_RTC, (u32)data, FALSE) >= 0; } diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s index 6b6a6f27..12374ec5 100644 --- a/arm9/modules/04/asm/thumb_04.s +++ b/arm9/modules/04/asm/thumb_04.s @@ -202,13 +202,13 @@ MOD04_021D7660: ; 0x021D7660 ldr r0, [r2, r1] sub r1, #0x50 ldr r1, [r2, r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, _021D76A0 ; =UNK04_0220FBC0 ldr r0, _021D76A8 ; =0x00001F54 ldr r2, [r1] ldr r1, [r1, #4] ldr r0, [r2, r0] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, _021D76A0 ; =UNK04_0220FBC0 mov r1, #0 str r1, [r0, #4] @@ -3065,7 +3065,7 @@ MOD04_021D8C6C: ; 0x021D8C6C lsl r0, r0, #8 ldr r0, [r2, r0] ldr r1, [r1] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r1, #0 ldr r0, _021D8CBC ; =UNK04_0220FBC8 cmp r4, #0 diff --git a/arm9/modules/05/asm/mod05_021DB44C.s b/arm9/modules/05/asm/mod05_021DB44C.s index b606312e..039db6a9 100644 --- a/arm9/modules/05/asm/mod05_021DB44C.s +++ b/arm9/modules/05/asm/mod05_021DB44C.s @@ -67,7 +67,7 @@ _021DB4BA: bl MOD05_021DB7A0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} @@ -419,7 +419,7 @@ _021DB73E: _021DB78A: ldr r1, [sp, #0x14] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #8] add sp, #0x1fc add sp, #0x20 @@ -433,7 +433,7 @@ MOD05_021DB7A0: ; 0x021DB7A0 add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DBA00.s b/arm9/modules/05/asm/mod05_021DBA00.s index 22e64df5..d0d97f37 100644 --- a/arm9/modules/05/asm/mod05_021DBA00.s +++ b/arm9/modules/05/asm/mod05_021DBA00.s @@ -24,7 +24,7 @@ MOD05_021DBA1C: ; 0x021DBA1C add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DBABC.s b/arm9/modules/05/asm/mod05_021DBABC.s index 28a15fb2..0481b9eb 100644 --- a/arm9/modules/05/asm/mod05_021DBABC.s +++ b/arm9/modules/05/asm/mod05_021DBABC.s @@ -24,7 +24,7 @@ MOD05_021DBAD8: ; 0x021DBAD8 add r4, r0, #0 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021DC0B8.s b/arm9/modules/05/asm/mod05_021DC0B8.s index ab06fed1..1714cbec 100644 --- a/arm9/modules/05/asm/mod05_021DC0B8.s +++ b/arm9/modules/05/asm/mod05_021DC0B8.s @@ -692,7 +692,7 @@ _021DC5A2: bl NARC_dtor ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] _021DC5FE: @@ -1362,7 +1362,7 @@ _021DCAD2: bl MOD05_021DC880 ldr r1, [r4, #0x10] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #0x10] ldr r0, [r4, #0x1c] @@ -1390,7 +1390,7 @@ _021DCB14: cmp r1, #0 beq _021DCB2C mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r1, [r4, #0xc] ldr r0, _021DCB64 ; =0x00000F58 mov r2, #0 @@ -1414,7 +1414,7 @@ _021DCB3E: _021DCB4C: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #0xc] _021DCB58: diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s index df43ddb9..a0192db6 100644 --- a/arm9/modules/05/asm/mod05_021E1374.s +++ b/arm9/modules/05/asm/mod05_021E1374.s @@ -533,7 +533,7 @@ _021E1770: bl FUN_0200CAB4 mov r0, #4 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _021E178E: pop {r4, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s index 0b72da2a..c41f4c57 100644 --- a/arm9/modules/05/asm/mod05_021E1AD8.s +++ b/arm9/modules/05/asm/mod05_021E1AD8.s @@ -738,7 +738,7 @@ _021E2032: add r0, r4, r0 mov r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x6d lsl r1, r1, #2 str r0, [r4, r1] @@ -1012,13 +1012,13 @@ MOD05_021E2278: ; 0x021E2278 mov r1, #3 mov r2, #0xf mov r3, #4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _021E228E: mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} .balign 4, 0 @@ -1045,7 +1045,7 @@ _021E22B8: mov r0, #0x6d lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #0x6d mov r1, #0xb5 @@ -1054,7 +1054,7 @@ _021E22B8: ldrh r6, [r5, r1] ldr r0, [r5, r0] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0xb5 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -1134,7 +1134,7 @@ MOD05_021E2368: ; 0x021E2368 mov r1, #0 ldr r0, [r6, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r6, r0] @@ -1189,7 +1189,7 @@ MOD05_021E23D0: ; 0x021E23D0 add r6, r0, #0 ldr r0, [r5, #0x18] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x8c ldr r0, [r0] @@ -1226,7 +1226,7 @@ MOD05_021E2434: ; 0x021E2434 ldr r0, [r4, r1] add r1, r1, #6 add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _021E2460 ; =0x000001BA ldrh r1, [r4, r0] add r0, #0xe2 @@ -1259,7 +1259,7 @@ MOD05_021E2464: ; 0x021E2464 add r5, r0, #0 add r0, r4, #0 add r1, r0, #0 - bl FUN_02002E4C + bl GetFontAttribute lsl r1, r0, #3 mov r0, #7 tst r0, r1 @@ -1318,7 +1318,7 @@ _021E2496: add r0, #8 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r2, #0 add r0, r5, #0 mov r1, #0xf @@ -1718,7 +1718,7 @@ MOD05_021E27E8: ; 0x021E27E8 add r6, r2, #0 mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 str r6, [sp] mov r0, #0xa @@ -1750,7 +1750,7 @@ MOD05_021E27E8: ; 0x021E27E8 bl FUN_0200CCA4 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0x7a mov r0, #0 mov r1, #0x1a @@ -1807,7 +1807,7 @@ MOD05_021E28A0: ; 0x021E28A0 mov r1, #0xf mov r2, #0 str r3, [sp, #4] - bl FUN_020196F4 + bl FillWindowPixelRect mov r2, #0x7a mov r0, #0 mov r1, #0x1a @@ -1878,7 +1878,7 @@ MOD05_021E2950: ; 0x021E2950 add r6, r2, #0 mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 str r6, [sp] mov r0, #0xa @@ -1936,7 +1936,7 @@ MOD05_021E29C8: ; 0x021E29C8 str r1, [sp, #0xc] add r0, r1, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021E2A6C ; =0x00000141 mov r0, #0 mov r1, #0x1a @@ -2007,7 +2007,7 @@ MOD05_021E2A70: ; 0x021E2A70 add r6, r2, #0 mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 str r6, [sp] mov r0, #0xa @@ -2054,7 +2054,7 @@ MOD05_021E2AD4: ; 0x021E2AD4 str r1, [sp, #0xc] add r0, r1, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021E2B7C ; =0x00000141 mov r0, #0 mov r1, #0x1a diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s index 16e19ae0..8a1f9413 100644 --- a/arm9/modules/05/asm/mod05_021E2B80.s +++ b/arm9/modules/05/asm/mod05_021E2B80.s @@ -296,7 +296,7 @@ MOD05_CreateMessageBox: ; 0x021E2D9C _021E2DC8: ldr r0, [r4, #0xc] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer pop {r3, r4, r5, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021E2E88.s b/arm9/modules/05/asm/mod05_021E2E88.s index 0666b52d..75d92e5b 100644 --- a/arm9/modules/05/asm/mod05_021E2E88.s +++ b/arm9/modules/05/asm/mod05_021E2E88.s @@ -146,7 +146,7 @@ _021E2F92: add r0, r5, #0 add r0, #0x20 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #8 str r2, [sp] add r0, r5, #0 @@ -159,7 +159,7 @@ _021E2F92: ldr r1, [r5, #0x34] add r0, #0x20 ldr r1, [r1, #0x14] - bl FUN_02019658 + bl BlitBitmapRectToWindow ldr r0, [sp, #0x18] mov r1, #8 add r0, r0, #1 @@ -178,7 +178,7 @@ _021E2F92: ldr r1, [r1, #0x14] add r0, #0x20 mov r2, #0x18 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #8 str r0, [sp] str r0, [sp, #4] @@ -192,7 +192,7 @@ _021E2F92: ldr r1, [r1, #0x14] add r0, #0x20 mov r2, #0x38 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r1, #8 str r1, [sp] lsl r0, r4, #0x10 @@ -208,7 +208,7 @@ _021E2F92: add r0, #0x20 mov r2, #0x40 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r1, #8 str r1, [sp] str r1, [sp, #4] @@ -223,7 +223,7 @@ _021E2F92: ldr r1, [r1, #0x14] add r0, #0x20 mov r2, #0x20 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r1, #8 str r1, [sp] lsl r0, r4, #0x10 @@ -240,7 +240,7 @@ _021E2F92: add r0, #0x20 mov r2, #0x30 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow ldr r0, [sp, #0x18] mov r7, #0 cmp r0, #0 @@ -266,7 +266,7 @@ _021E3078: ldr r1, [r1, #0x14] mov r2, #0x10 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #8 str r0, [sp] str r0, [sp, #4] @@ -282,7 +282,7 @@ _021E3078: ldr r1, [r1, #0x14] mov r2, #0x48 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #8 str r0, [sp] str r0, [sp, #4] @@ -299,7 +299,7 @@ _021E3078: ldr r1, [r1, #0x14] mov r2, #0x28 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow add r0, r7, #1 lsl r0, r0, #0x18 lsr r7, r0, #0x18 diff --git a/arm9/modules/05/asm/mod05_021E3444.s b/arm9/modules/05/asm/mod05_021E3444.s index 27446591..ea709996 100644 --- a/arm9/modules/05/asm/mod05_021E3444.s +++ b/arm9/modules/05/asm/mod05_021E3444.s @@ -1989,7 +1989,7 @@ _021E4370: ldrb r1, [r1, #0x14] lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect _021E4390: add sp, #8 pop {r3, r4, r5, pc} diff --git a/arm9/modules/05/asm/mod05_021E5FD8.s b/arm9/modules/05/asm/mod05_021E5FD8.s index 8ce2cd0f..ab5f7010 100644 --- a/arm9/modules/05/asm/mod05_021E5FD8.s +++ b/arm9/modules/05/asm/mod05_021E5FD8.s @@ -2409,12 +2409,12 @@ _021E72CC: thumb_func_start MOD05_021E72DC MOD05_021E72DC: ; 0x021E72DC - ldr r3, _021E72E4 ; =FUN_02016A8C + ldr r3, _021E72E4 ; =FreeToHeapExplicit add r1, r0, #0 mov r0, #4 bx r3 .balign 4, 0 -_021E72E4: .word FUN_02016A8C +_021E72E4: .word FreeToHeapExplicit thumb_func_start MOD05_021E72E8 MOD05_021E72E8: ; 0x021E72E8 diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s index 7a66cdcb..5bf27853 100644 --- a/arm9/modules/05/asm/mod05_021E8310.s +++ b/arm9/modules/05/asm/mod05_021E8310.s @@ -139,11 +139,11 @@ MOD05_021E8410: ; 0x021E8410 add r5, r0, #0 mov r0, #0 mov r1, #1 - bl FUN_02002E4C + bl GetFontAttribute add r4, r0, #0 mov r0, #0 mov r1, #3 - bl FUN_02002E4C + bl GetFontAttribute add r0, r4, r0 str r0, [sp, #0x14] mov r4, #0 @@ -204,7 +204,7 @@ _021E846E: add r6, r0, #0 mov r0, #0 mov r1, #2 - bl FUN_02002E4C + bl GetFontAttribute add r2, r0, #0 mov r0, #0 add r1, r6, #0 @@ -276,10 +276,10 @@ MOD05_021E84F4: ; 0x021E84F4 bl FUN_0200CB00 mov r0, #0 mov r1, #6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 ldr r0, [r4, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl MOD05_021E8410 ldr r0, [r4, #0x10] diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index fe346300..13563cc2 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -339,7 +339,7 @@ MOD05_021E88C0: ; 0x021E88C0 bl GX_EngineAToggleLayers ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start MOD05_021E88E8 @@ -513,7 +513,7 @@ _021E8A42: bl MOD05_021E37A4 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021E8A56: @@ -695,7 +695,7 @@ _021E8BC2: bl MOD05_021E37A4 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021E8BD6: @@ -851,7 +851,7 @@ _021E8CE6: _021E8D00: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1008,7 +1008,7 @@ _021E8E1C: _021E8E36: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1256,7 +1256,7 @@ _021E8FFC: _021E9010: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1391,7 +1391,7 @@ _021E910C: _021E9120: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -1794,7 +1794,7 @@ _021E944E: bl MOD05_021E37A4 ldr r1, [r7, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021E948A: @@ -2151,7 +2151,7 @@ _021E974A: bl MOD05_021E3A48 ldr r1, [r6, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021E9786: @@ -2594,7 +2594,7 @@ _021E9AF0: bl MOD05_021E3E44 ldr r1, [r7, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x14] bl FUN_0200621C add sp, #0x58 @@ -2737,7 +2737,7 @@ _021E9C02: bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows mov r1, #0x83 lsl r1, r1, #2 str r0, [r4, r1] @@ -2766,7 +2766,7 @@ _021E9C02: lsl r0, r0, #2 ldr r0, [r4, r0] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x83 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -3183,7 +3183,7 @@ _021E9FA4: ldr r1, [sp, #0x1c] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x18] bl FUN_0200621C add sp, #0x44 @@ -3594,7 +3594,7 @@ _021EA354: bl MOD05_021E3E44 ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EA382: @@ -3709,7 +3709,7 @@ _021EA430: bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows mov r1, #2 lsl r1, r1, #8 str r0, [r4, r1] @@ -3738,7 +3738,7 @@ _021EA430: lsl r0, r0, #8 ldr r0, [r4, r0] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 lsl r0, r0, #8 ldr r0, [r4, r0] @@ -4116,7 +4116,7 @@ _021EA76C: ldr r1, [sp, #0x18] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x14] bl FUN_0200621C _021EA7DE: @@ -4472,7 +4472,7 @@ _021EAA98: bl MOD05_021E3E44 ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EAAC6: @@ -4781,7 +4781,7 @@ _021EAD1A: bl MOD05_021E3E44 ldr r1, [r6, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021EAD4C: @@ -5156,7 +5156,7 @@ _021EB01A: ldr r1, [sp, #0x14] mov r0, #4 ldr r1, [r1, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [sp, #0x10] bl FUN_0200621C _021EB04A: @@ -5380,7 +5380,7 @@ _021EB18E: str r0, [r4, #4] mov r0, #4 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4] mov r3, #0 str r3, [sp] @@ -5404,7 +5404,7 @@ _021EB18E: bl FUN_02017FB4 ldr r0, [r4] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] bl FUN_02019220 ldr r0, [r5] @@ -5586,7 +5586,7 @@ _021EB394: strb r1, [r0] ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C _021EB3F2: @@ -5797,7 +5797,7 @@ _021EB56C: _021EB58A: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -6008,7 +6008,7 @@ _021EB720: _021EB73E: ldr r1, [r4, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r0, r6, #0 bl FUN_0200621C mov r0, #1 @@ -6506,7 +6506,7 @@ _021EBB60: str r0, [r2] ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x30 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} @@ -7514,7 +7514,7 @@ _021EC37A: bl MOD05_021E3E44 ldr r1, [r5, #0xc] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x4c mov r0, #1 pop {r4, r5, r6, r7, pc} @@ -15197,7 +15197,7 @@ MOD05_021EFEDC: ; 0x021EFEDC add r7, r0, #0 add r0, r7, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5] mov r0, #1 str r0, [sp] @@ -15238,7 +15238,7 @@ _021EFF2E: ldr r0, [r5] ldr r1, [r5, #8] add r2, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem _021EFF54: add r4, r4, #1 cmp r4, #0x20 @@ -15248,7 +15248,7 @@ _021EFF54: ldr r0, [r5] ldr r1, [r5, #0x3c] sub r3, #0xd - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r4, _021EFFC0 ; =UNK05_021F8B4C add r3, sp, #0x14 add r2, r3, #0 @@ -15277,7 +15277,7 @@ _021EFF54: add r0, r2, #0 add r2, r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #4] add r0, r5, #0 add r0, #0x20 @@ -15298,7 +15298,7 @@ MOD05_021EFFC8: ; 0x021EFFC8 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r5, #4] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #1 mvn r0, r0 @@ -15366,9 +15366,9 @@ _021F0056: mov r1, #0 ldr r0, [r5, #4] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r5] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 @@ -19600,11 +19600,11 @@ MOD05_021F21AC: ; 0x021F21AC add r1, #0xe4 ldr r1, [r1] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit add r4, #0xf4 ldr r1, [r4] mov r0, #4 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_start MOD05_021F21CC @@ -22552,12 +22552,12 @@ _021F37C2: thumb_func_start MOD05_021F37D0 MOD05_021F37D0: ; 0x021F37D0 - ldr r3, _021F37D8 ; =FUN_02016A8C + ldr r3, _021F37D8 ; =FreeToHeapExplicit add r1, r0, #0 ldr r0, [r1] bx r3 .balign 4, 0 -_021F37D8: .word FUN_02016A8C +_021F37D8: .word FreeToHeapExplicit thumb_func_start MOD05_021F37DC MOD05_021F37DC: ; 0x021F37DC @@ -22588,7 +22588,7 @@ _021F37FC: bne _021F37F0 ldr r0, [r5] ldr r1, [r5, #0xc] - bl FUN_02016A8C + bl FreeToHeapExplicit _021F380E: pop {r3, r4, r5, pc} diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c index c24a7bd3..7284224c 100644 --- a/arm9/modules/05/src/mod05_021E72FC.c +++ b/arm9/modules/05/src/mod05_021E72FC.c @@ -156,5 +156,5 @@ THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0) THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0) { - FUN_02016A8C(4, param0); + FreeToHeapExplicit(4, param0); } diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index d46e003b..62cd7742 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -8427,7 +8427,7 @@ MOD06_0223D63C: ; 0x0223D63C mov r4, #3 add r0, r4, #0 mov r1, #0xb - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0x84 str r0, [r1] @@ -8439,7 +8439,7 @@ MOD06_0223D63C: ; 0x0223D63C ldr r1, [r1] mov r2, #0xf mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r5, #0 add r1, r5, #0 add r0, #0x84 @@ -8448,7 +8448,7 @@ MOD06_0223D63C: ; 0x0223D63C ldr r1, [r1] mov r2, #0x10 mov r3, #0xe - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r5, #0 add r1, r5, #0 add r0, #0x84 @@ -8458,7 +8458,7 @@ MOD06_0223D63C: ; 0x0223D63C ldr r0, [r0] ldr r1, [r1] sub r3, #0x13 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData mov r3, #1 str r3, [sp] mov r1, #0xd @@ -8478,7 +8478,7 @@ _0223D6B8: mov r4, #2 add r0, r4, #0 mov r1, #0xb - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0x84 str r0, [r1] @@ -8490,7 +8490,7 @@ _0223D6B8: ldr r1, [r1] mov r2, #0xf add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r5, #0 add r1, r5, #0 add r0, #0x84 @@ -8500,7 +8500,7 @@ _0223D6B8: ldr r0, [r0] ldr r1, [r1] sub r3, #0x13 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData mov r3, #1 str r3, [sp] mov r1, #0xd @@ -8618,7 +8618,7 @@ MOD06_0223D7B8: ; 0x0223D7B8 add r0, r4, #0 add r0, #0x84 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r4, #8 add r0, r4, #0 bl FUN_02019178 @@ -9146,7 +9146,7 @@ _0223DC34: ldrb r0, [r5, r0] mov r1, #0xb add r0, r0, #1 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x7c] mov r0, #0x8b lsl r0, r0, #2 @@ -9172,7 +9172,7 @@ _0223DC52: ldr r0, [r5, #0x7c] ldrh r2, [r2, r4] add r1, r7, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r7, #0 bl String_dtor mov r0, #0x8b @@ -9190,7 +9190,7 @@ _0223DC8E: ldr r0, [r5, #0x7c] ldr r1, [r1] sub r3, #0xa - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, [sp] bl DestroyMsgData ldr r4, _0223DCEC ; =0x0224F38C @@ -9220,7 +9220,7 @@ _0223DC8E: add r0, r2, #0 add r2, r1, #0 str r5, [sp, #0x20] - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x78] add sp, #0x24 pop {r4, r5, r6, r7, pc} @@ -9236,7 +9236,7 @@ MOD06_0223DCF0: ; 0x0223DCF0 mov r1, #0x13 str r0, [sp, #0x10] add r6, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 cmp r6, #1 beq _0223DD0C @@ -9246,7 +9246,7 @@ _0223DD0C: add r0, r4, #0 add r0, #0x18 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #1 mvn r1, r1 cmp r5, r1 @@ -9328,7 +9328,7 @@ _0223DDBA: ldr r0, [sp, #0x10] add r1, #2 add r2, sp, #0x14 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0x14 ldrh r0, [r0, #2] cmp r0, #0 @@ -9348,7 +9348,7 @@ _0223DDE4: _0223DDF0: ldr r0, [sp, #0x10] mov r1, #2 - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r0, #7 bls _0223DE16 add r1, sp, #0x14 @@ -9383,7 +9383,7 @@ MOD06_0223DE34: ; 0x0223DE34 add r4, r1, #0 mov r1, #0x13 add r7, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r1, #1 mvn r1, r1 add r5, r0, #0 @@ -9456,7 +9456,7 @@ MOD06_0223DED0: ; 0x0223DED0 bne _0223DF1C add r0, #0x28 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x28 mov r1, #1 @@ -9491,7 +9491,7 @@ _0223DF1C: mov r1, #0xf mov r2, #0 str r3, [sp, #4] - bl FUN_020196F4 + bl FillWindowPixelRect _0223DF30: mov r0, #0x10 mov r1, #0xb @@ -9558,14 +9558,14 @@ MOD06_0223DFB4: ; 0x0223DFB4 ldr r0, [r5, #0x78] mov r1, #0 add r2, #2 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, [r5, #0x78] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 ldr r0, [r5, #0x78] mov r1, #0 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r0, #2] @@ -9595,9 +9595,9 @@ _0223E006: mov r1, #0 ldr r0, [r5, #0x78] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r5, #0x7c] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 bl MOD06_0223D9C0 add r0, r5, #0 @@ -9637,7 +9637,7 @@ _0223E034: add r0, r5, #0 add r0, #0x58 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x18 bl FUN_02019570 @@ -9832,7 +9832,7 @@ _0223E214: add r0, r5, #0 add r0, #0x48 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x48 mov r1, #1 @@ -9934,7 +9934,7 @@ _0223E2C4: add r0, r4, #0 add r0, #0x58 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0223E380 ; =0x000005DC bl FUN_020054C8 add r0, r4, #0 @@ -10167,7 +10167,7 @@ MOD06_0223E4E8: ; 0x0223E4E8 add r4, r1, #0 add r0, #0x38 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r4, #0 bne _0223E50A add r0, r5, #0 @@ -10429,7 +10429,7 @@ _0223E704: add r0, r5, #0 add r0, #0x58 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0x23 lsl r2, r2, #4 ldr r1, [r5, r2] @@ -10644,7 +10644,7 @@ _0223E88A: add r0, r5, #0 add r0, #0x58 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0x23 lsl r2, r2, #4 ldr r1, [r5, r2] @@ -11388,7 +11388,7 @@ _0223EEB8: mov r1, #0 add r0, r2, #0 add r2, r1, #0 - bl FUN_020010A8 + bl ListMenuInit ldr r1, _0223EF10 ; =0x02252420 ldr r2, [r1] str r0, [r2, #0x5c] @@ -11454,15 +11454,15 @@ _0223EF28: str r0, [r2, #0x7c] ldr r0, [r1] add r0, #0x20 - bl FUN_0201901C + bl InitWindow ldr r0, _0223EFF4 ; =0x02252420 ldr r0, [r0] add r0, #0x30 - bl FUN_0201901C + bl InitWindow ldr r0, _0223EFF4 ; =0x02252420 ldr r0, [r0] add r0, #0x40 - bl FUN_0201901C + bl InitWindow mov r0, #4 bl ScrStrBufs_new ldr r1, _0223EFF4 ; =0x02252420 @@ -11619,7 +11619,7 @@ MOD06_0223F0C8: ; 0x0223F0C8 mov r1, #3 add r5, r0, #0 mov r4, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r0, #0 bls _0223F0F6 add r6, r4, #0 @@ -11633,7 +11633,7 @@ _0223F0DC: add r0, r5, #0 add r1, r7, #0 add r4, r4, #1 - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r4, r0 blo _0223F0DC _0223F0F6: @@ -11655,7 +11655,7 @@ MOD06_0223F0F8: ; 0x0223F0F8 cmp r0, #0 beq _0223F11A add r1, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow _0223F11A: add r0, sp, #0xc ldrh r1, [r0] @@ -11665,7 +11665,7 @@ _0223F11A: lsl r5, r5, #4 ldr r0, [r0] add r0, #0x20 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, #8 lsl r0, r0, #0x10 @@ -11680,7 +11680,7 @@ _0223F11A: add r0, #0x20 mov r2, #8 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, sp, #0xc ldrh r2, [r0] cmp r2, r4 @@ -11853,7 +11853,7 @@ _0223F2AA: mov r1, #0xf ldr r0, [r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0223F330 ; =0x02252420 ldr r0, [r0] add r0, #0x30 @@ -11977,7 +11977,7 @@ MOD06_0223F3B8: ; 0x0223F3B8 beq _0223F450 mov r0, #0x10 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r4, _0223F454 ; =0x02252420 mov r5, #0 ldr r1, [r4] @@ -12006,7 +12006,7 @@ _0223F3E0: mov r2, #0 ldr r0, [r1, #0x64] ldr r1, [r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r5, r5, #1 cmp r5, #0x10 blt _0223F3E0 @@ -12074,7 +12074,7 @@ _0223F49A: ldr r0, _0223F518 ; =0x02252420 ldr r0, [r0] ldr r0, [r0, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput _0223F4A4: mov r1, #1 mvn r1, r1 @@ -12105,7 +12105,7 @@ _0223F4D8: add r1, r4, #0 ldr r0, [r4, #0x5c] add r1, #0x8e - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r4, #0 add r0, #0x8e ldrh r5, [r0] @@ -12160,7 +12160,7 @@ _0223F53C: mov r2, #8 add r0, #0x20 mov r3, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _0223F580 ; =0x02252420 mov r1, #0 ldr r0, [r0] @@ -12451,7 +12451,7 @@ MOD06_0223F7C4: ; 0x0223F7C4 cmp r0, #0 beq _0223F7E0 add r1, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow _0223F7E0: add r0, sp, #0xc ldrh r1, [r0] @@ -12611,7 +12611,7 @@ _0223F910: mov r1, #0xf ldr r0, [r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0223F950 ; =0x02252420 ldr r0, [r0] add r0, #0x30 @@ -12727,7 +12727,7 @@ _0223FA02: mov r1, #0xf ldr r0, [r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0223FA5C ; =0x02252420 add r1, r4, #0 ldr r2, [r0] @@ -12821,7 +12821,7 @@ MOD06_0223FAB8: ; 0x0223FAB8 beq _0223FB4C mov r0, #5 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r4, _0223FB50 ; =0x02252420 mov r5, #0 ldr r1, [r4] @@ -12834,7 +12834,7 @@ _0223FAE6: ldr r0, [r1, #0x64] ldr r1, [r1, #0x74] add r3, r7, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r5, r5, #1 cmp r5, #5 blt _0223FAE6 @@ -12966,13 +12966,13 @@ _0223FBDA: strb r0, [r2] ldr r0, [r1] ldr r0, [r0, #0x5c] - bl FUN_02001328 + bl RedrawListMenu ldr r0, _0223FCF0 ; =0x02252420 mov r1, #3 ldr r0, [r0] mov r5, #0 ldr r0, [r0, #0x5c] - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r0, #0 bls _0223FC32 ldr r4, _0223FCF0 ; =0x02252420 @@ -12989,13 +12989,13 @@ _0223FC14: add r1, r7, #0 ldr r0, [r0, #0x5c] add r5, r5, #1 - bl FUN_02001470 + bl ListMenuGetTemplateField cmp r5, r0 blo _0223FC14 _0223FC32: ldr r0, [sp, #4] ldr r0, [r0, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 bl FUN_0202DF08 cmp r0, #0xff @@ -13094,7 +13094,7 @@ MOD06_0223FD08: ; 0x0223FD08 add r0, r4, #0 bl MOD06_0223F9D8 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, [r4, #0x60] mov r1, #4 bl FUN_020021AC @@ -13421,7 +13421,7 @@ MOD06_0223FFD4: ; 0x0223FFD4 mov r0, #0 bl FUN_02031A24 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, _02240020 ; =0x02252420 ldr r0, [r0] add r0, #0x94 @@ -13459,7 +13459,7 @@ MOD06_02240030: ; 0x02240030 add r0, r5, #0 bl MOD06_0223F9D8 ldr r0, [r5, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, [r5, #0x60] mov r1, #4 bl FUN_020021AC @@ -13681,7 +13681,7 @@ MOD06_02240204: ; 0x02240204 add r0, r4, #0 bl MOD06_0223F9D8 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, _02240248 ; =0x02252420 ldr r0, [r0] add r0, #0x94 @@ -13719,7 +13719,7 @@ MOD06_02240258: ; 0x02240258 add r0, r5, #0 bl MOD06_0223F9D8 ldr r0, [r5, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, [r5, #0x60] mov r1, #4 bl FUN_020021AC @@ -13778,7 +13778,7 @@ _022402DC: add r0, r4, #0 bl MOD06_0223F9D8 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r0, #0xa bl FUN_020315D8 cmp r0, #0 @@ -13804,7 +13804,7 @@ MOD06_02240310: ; 0x02240310 add r0, r4, #0 bl MOD06_0223F9D8 ldr r0, [r4, #0x5c] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r0, _02240354 ; =0x02252420 ldr r0, [r0] add r0, #0x94 @@ -13843,17 +13843,17 @@ MOD06_02240364: ; 0x02240364 ldr r0, [r0] mov r1, #0xf add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x20 mov r1, #0 bl FUN_0200CCF8 ldr r0, [r4, #0x64] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r1, #0 ldr r0, [r4, #0x5c] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #0x20 bl FUN_02019570 @@ -14473,7 +14473,7 @@ MOD06_02240864: ; 0x02240864 bne _0224089E add r0, r5, #0 add r0, #0x54 - bl FUN_0201901C + bl InitWindow ldr r0, [r5, #0x10] add r1, r5, #0 ldr r0, [r0, #8] @@ -14577,7 +14577,7 @@ _02240940: bne _022409D2 add r0, r6, #2 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #8] mov r3, #1 str r3, [sp] @@ -14605,7 +14605,7 @@ _02240940: ldr r1, [r5, #0x68] mov r2, #0x7b mov r3, #0xc - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData mov r4, #0 cmp r6, #0 ble _022409C4 @@ -14625,7 +14625,7 @@ _02240998: ldr r0, [r5, #8] ldr r1, [r5, #0x20] add r2, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r4, r4, #1 cmp r4, r6 blt _02240998 @@ -14635,7 +14635,7 @@ _022409C4: ldr r0, [r5, #8] ldr r1, [r5, #0x68] sub r3, #0x74 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _022409D2: ldr r4, _02240A24 ; =0x0224F704 add r3, sp, #0x14 @@ -14666,7 +14666,7 @@ _022409D2: add r2, #0x78 ldrh r2, [r2] mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5] add r5, #0x34 add r0, r5, #0 @@ -14686,7 +14686,7 @@ MOD06_02240A28: ; 0x02240A28 beq _02240A62 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #0x34 mov r1, #1 @@ -14700,7 +14700,7 @@ MOD06_02240A28: ; 0x02240A28 add r0, #0x34 bl FUN_02019178 ldr r0, [r4, #8] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r4] _02240A62: @@ -14711,20 +14711,20 @@ MOD06_02240A64: ; 0x02240A64 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r2, r5, #0 ldr r0, [r5] mov r1, #0 add r2, #0x78 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 add r0, #0x80 ldrh r6, [r0] add r1, r5, #0 ldr r0, [r5] add r1, #0x80 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r5, #0 add r0, #0x80 ldrh r0, [r0] @@ -14792,7 +14792,7 @@ MOD06_02240B04: ; 0x02240B04 mov r0, #3 mov r1, #4 ldr r4, _02240BA8 ; =MOD6_022522E4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0xc] mov r0, #0xa str r0, [sp] @@ -14823,7 +14823,7 @@ _02240B4A: ldr r1, [r5, #0x68] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #3 @@ -14855,7 +14855,7 @@ _02240B4A: add r2, #0x7a ldrh r2, [r2] mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #4] add r5, #0x44 add r0, r5, #0 @@ -14873,20 +14873,20 @@ MOD06_02240BB8: ; 0x02240BB8 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #4] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r2, r5, #0 ldr r0, [r5, #4] mov r1, #0 add r2, #0x7a - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 add r0, #0x82 ldrh r6, [r0] add r1, r5, #0 ldr r0, [r5, #4] add r1, #0x82 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, r5, #0 add r0, #0x82 ldrh r0, [r0] @@ -14921,7 +14921,7 @@ _02240C1A: beq _02240C50 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 add r0, #0x44 mov r1, #1 @@ -14935,7 +14935,7 @@ _02240C1A: add r0, #0x44 bl FUN_02019178 ldr r0, [r5, #0xc] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r5, #4] _02240C50: @@ -14992,7 +14992,7 @@ MOD06_02240C58: ; 0x02240C58 bl FUN_0200CCA4 ldr r0, [sp, #0x24] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x14] add r1, r0, #0 add r1, #0x78 @@ -19028,7 +19028,7 @@ MOD06_02242CDC: ; 0x02242CDC mov r1, #0 add r2, r5, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit add r4, #0x88 str r0, [r4] add sp, #0x14 @@ -19219,13 +19219,13 @@ MOD06_02242E9C: ; 0x02242E9C mov r1, #3 mov r2, #0xf mov r3, #4 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _02242EB2: mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} .align 2, 0 @@ -19287,7 +19287,7 @@ MOD06_02242F1C: ; 0x02242F1C add r4, r0, #0 add r0, #0x88 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #1 mvn r1, r1 cmp r0, r1 @@ -19331,7 +19331,7 @@ _02242F6E: add r0, r4, #0 add r0, #0x88 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #1 mvn r1, r1 cmp r0, r1 @@ -19439,7 +19439,7 @@ MOD06_02243024: ; 0x02243024 mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r6, #0x74] mov r1, #0 bl FUN_0200CCF8 @@ -19480,7 +19480,7 @@ MOD06_02243080: ; 0x02243080 add r0, r5, #0 add r0, #0x14 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x54] ldr r1, [sp, #0xc] add r2, r4, #0 @@ -40892,7 +40892,7 @@ MOD06_0224D46C: ; 0x0224D46C bl FUN_0200CCA4 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x64 mov r1, #0xb bl String_ctor @@ -41794,7 +41794,7 @@ MOD06_0224DC5C: ; 0x0224DC5C str r3, [r5, #8] add r0, r2, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #4] mov r0, #0x13 str r0, [sp] @@ -41813,7 +41813,7 @@ MOD06_0224DC5C: ; 0x0224DC5C bl FUN_02019064 ldr r0, [r5, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #4] mov r1, #0 mov r2, #1 @@ -41859,7 +41859,7 @@ MOD06_0224DCD8: ; 0x0224DCD8 _0224DCEC: ldr r0, [r5, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r1, r6, #0 bl StringDup @@ -42039,7 +42039,7 @@ MOD06_0224DE60: ; 0x0224DE60 beq _0224DED2 add r0, r3, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r6, #4] mov r0, #0xb str r0, [sp] @@ -42077,7 +42077,7 @@ _0224DEA8: str r0, [r6, #0xc] ldr r0, [r6, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [r6] _0224DED2: @@ -42148,7 +42148,7 @@ MOD06_0224DF1C: ; 0x0224DF1C bl BufferIntegerAsString ldr r0, [r5, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r7, #0 add r6, r5, #0 add r4, r7, #0 @@ -42214,7 +42214,7 @@ _0224DFC0: add r2, #0x14 str r0, [r5, r2] ldr r0, [sp, #0x14] - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #4] mov r0, #1 str r0, [sp] @@ -42332,7 +42332,7 @@ _0224E084: mov r1, #0 ldr r0, _0224E16C ; =MOD6_022523A0 add r2, r1, #0 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #8] ldr r0, [r5, #4] mov r1, #0 @@ -42445,7 +42445,7 @@ _0224E1C0: mov r1, #0 ldr r0, [r6, #8] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r6, #4] bl FUN_02019570 ldr r0, [r6, #4] @@ -42463,7 +42463,7 @@ MOD06_0224E1E4: ; 0x0224E1E4 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #8] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0 add r4, r0, #0 mvn r1, r1 @@ -42471,7 +42471,7 @@ MOD06_0224E1E4: ; 0x0224E1E4 bne _0224E22A ldr r0, [r5, #8] add r1, sp, #0 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r2, #0x4b add r0, sp, #0 lsl r2, r2, #2 @@ -42685,7 +42685,7 @@ MOD06_0224E39C: ; 0x0224E39C ldr r0, [r4, #8] add r1, sp, #0 mov r2, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r0, [r0] cmp r0, #0 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 3cef2d24..1110fa5c 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -4858,7 +4858,7 @@ _0221459E: mov r1, #0xa mov r2, #0 mov r3, #2 - bl FUN_020196F4 + bl FillWindowPixelRect lsl r0, r5, #0x10 lsr r0, r0, #0x10 str r0, [sp] @@ -4868,7 +4868,7 @@ _0221459E: mov r1, #9 mov r2, #0 mov r3, #3 - bl FUN_020196F4 + bl FillWindowPixelRect lsl r0, r5, #0x10 lsr r0, r0, #0x10 str r0, [sp] @@ -4878,7 +4878,7 @@ _0221459E: mov r1, #0xa mov r2, #0 mov r3, #5 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0xc pop {r4, r5, r6, r7, pc} nop @@ -4900,19 +4900,19 @@ MOD07_02214600: ; 0x02214600 mov r1, #0 str r2, [sp, #0xc] str r3, [sp, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 add r0, #0x20 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 add r0, #0x30 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x28] ldr r1, [sp, #8] str r0, [sp] diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 55a90a71..63e3d1e0 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -3922,7 +3922,7 @@ _02213D74: ldr r0, [r4] ldrb r1, [r4, r1] ldr r0, [r0, #0xc] - bl FUN_02018FF4 + bl AllocWindows ldr r1, _02213DDC ; =0x00002070 mov r5, #0 str r0, [r4, r1] @@ -4150,7 +4150,7 @@ _02213F22: bl NewString_ReadMsgData add r6, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x28] mov r0, #0 add r1, r6, #0 @@ -4196,7 +4196,7 @@ _02213FA6: bl NewString_ReadMsgData add r6, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth str r0, [sp, #0x2c] mov r0, #0 add r1, r6, #0 @@ -4419,7 +4419,7 @@ _0221415E: add r0, r0, r5 lsr r1, r1, #0x18 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [sp, #0x14] add r3, r6, #2 str r0, [sp] @@ -4432,7 +4432,7 @@ _0221415E: add r0, r0, r5 add r1, r7, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [sp, #0x14] ldr r1, [sp, #0x10] str r0, [sp] @@ -4447,7 +4447,7 @@ _0221415E: add r0, r0, r5 lsr r1, r1, #0x18 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _022141D4 ; =0x00002070 ldr r0, [r4, r0] add r0, r0, r5 @@ -4623,7 +4623,7 @@ MOD09_022142FC: ; 0x022142FC cmp r0, #2 bne _02214360 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth add r5, r0, #0 add r0, sp, #0x20 ldrh r0, [r0, #0x10] @@ -4718,7 +4718,7 @@ MOD09_022143F8: ; 0x022143F8 ldr r0, _02214450 ; =0x00002050 mov r1, #0xf add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02214454 ; =0x00001FA8 add r1, r5, #0 ldr r0, [r4, r0] @@ -4766,7 +4766,7 @@ MOD09_0221445C: ; 0x0221445C bl FUN_02002E14 add r6, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth add r3, r0, #0 mov r0, #6 str r0, [sp] @@ -4944,7 +4944,7 @@ _022145F4: ldr r0, [r5, r0] lsl r4, r6, #4 add r0, r0, r4 - bl FUN_0201AB0C + bl GetWindowWidth add r6, r0, #0 mov r0, #0 ldr r1, [sp, #0x10] @@ -5070,7 +5070,7 @@ MOD09_02214694: ; 0x02214694 ldr r0, _02214780 ; =0x00002070 ldr r0, [r5, r0] add r0, r0, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5179,7 +5179,7 @@ MOD09_02214790: ; 0x02214790 ldr r0, _0221487C ; =0x00002070 ldr r0, [r5, r0] add r0, r0, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5289,7 +5289,7 @@ MOD09_0221488C: ; 0x0221488C ldr r0, _0221497C ; =0x00002070 ldr r0, [r5, r0] add r0, r0, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5401,7 +5401,7 @@ MOD09_0221498C: ; 0x0221498C ldr r0, [r4, r0] lsl r5, r5, #4 add r0, r0, r5 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5513,7 +5513,7 @@ MOD09_02214A8C: ; 0x02214A8C ldr r0, [r4, r0] lsl r5, r5, #4 add r0, r0, r5 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsl r0, r0, #0x18 @@ -5602,7 +5602,7 @@ MOD09_02214B8C: ; 0x02214B8C ldr r0, _02214D14 ; =0x00002070 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_0201AB0C + bl GetWindowWidth lsl r1, r0, #3 ldr r0, [sp, #0x14] ldr r2, [sp, #0x10] @@ -5843,7 +5843,7 @@ MOD09_02214DE8: ; 0x02214DE8 lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r5 lsl r0, r0, #0x10 @@ -5893,7 +5893,7 @@ _02214E42: lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r5 lsl r0, r0, #0x10 @@ -5979,7 +5979,7 @@ MOD09_02214F18: ; 0x02214F18 lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r5 lsl r0, r0, #0x10 @@ -6029,7 +6029,7 @@ _02214F72: lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r5 lsl r0, r0, #0x10 @@ -6166,7 +6166,7 @@ MOD09_022150C8: ; 0x022150C8 lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r1, r0, r6 lsr r0, r1, #0x1f @@ -6275,7 +6275,7 @@ MOD09_022151A8: ; 0x022151A8 bl FUN_02002E14 str r0, [sp, #0x1c] add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r1, r0, #3 ldr r0, [sp, #0x1c] ldr r2, [sp, #0x18] @@ -6461,7 +6461,7 @@ _02215362: _02215368: add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _022153A8 ; =0x00001FA8 mov r1, #0x3c ldr r0, [r4, r0] @@ -6673,7 +6673,7 @@ MOD09_022154FC: ; 0x022154FC mov r1, #0 lsr r2, r2, #0x10 mov r3, #0x18 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _022155C4 ; =0x00001FA8 mov r1, #0x2c ldr r0, [r5, r0] @@ -6748,7 +6748,7 @@ _022155EE: ldr r0, [sp, #8] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldrh r0, [r6, #8] cmp r0, #0 beq _0221563E @@ -6828,7 +6828,7 @@ MOD09_0221567C: ; 0x0221567C add r0, r0, r4 mov r2, #0x38 mov r3, #0x20 - bl FUN_020196F4 + bl FillWindowPixelRect mov r2, #0x40 str r2, [sp] mov r0, #8 @@ -6838,7 +6838,7 @@ MOD09_0221567C: ; 0x0221567C ldr r0, [r5, r0] mov r3, #0x18 add r0, r0, r4 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x20 str r0, [sp] add r0, r5, #0 @@ -6884,22 +6884,22 @@ MOD09_022156FC: ; 0x022156FC ldr r0, _02215780 ; =0x00002070 mov r1, #0 ldr r0, [r4, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215780 ; =0x00002070 mov r1, #0 ldr r0, [r4, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215780 ; =0x00002070 mov r1, #0 ldr r0, [r4, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215780 ; =0x00002070 mov r1, #0 ldr r0, [r4, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4] add r0, r4, #0 ldrb r1, [r1, #0x11] @@ -7030,7 +7030,7 @@ _02215830: mov r4, #8 _02215840: ldr r0, [sp, #0x18] - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r6 sub r0, r0, r7 @@ -7122,7 +7122,7 @@ MOD09_022158EC: ; 0x022158EC lsl r0, r6, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #1 lsl r0, r0, #4 str r0, [sp, #0x18] @@ -7131,7 +7131,7 @@ MOD09_022158EC: ; 0x022158EC ldr r0, [sp, #0x18] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #2 lsl r0, r0, #4 str r0, [sp, #0x14] @@ -7140,7 +7140,7 @@ MOD09_022158EC: ; 0x022158EC ldr r0, [sp, #0x14] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #3 lsl r0, r0, #4 str r0, [sp, #0x10] @@ -7149,7 +7149,7 @@ MOD09_022158EC: ; 0x022158EC ldr r0, [sp, #0x10] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #4 lsl r0, r0, #4 str r0, [sp, #0xc] @@ -7158,12 +7158,12 @@ MOD09_022158EC: ; 0x022158EC ldr r0, [sp, #0xc] add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215A20 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 str r2, [sp] str r2, [sp, #4] @@ -7269,63 +7269,63 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #5 lsl r0, r0, #6 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xe0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xf0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #1 lsl r0, r0, #8 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #0x11 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #0x12 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xd0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] mov r0, #0x15 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] lsl r0, r4, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7333,7 +7333,7 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7341,7 +7341,7 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7349,28 +7349,28 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #5 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #6 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #7 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7378,7 +7378,7 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #0 @@ -7386,35 +7386,35 @@ MOD09_02215A2C: ; 0x02215A2C lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #4 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #1 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #2 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215C40 ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #3 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 str r2, [sp] str r2, [sp, #4] @@ -7502,68 +7502,68 @@ MOD09_02215C44: ; 0x02215C44 mul r4, r1 add r0, #0x60 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x70 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x80 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x90 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xa0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #1 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] lsl r0, r4, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #2 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #3 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #5 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215D9C ; =0x00002070 ldr r1, [r5, r0] add r0, r4, #4 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5] add r2, r5, #0 ldrb r3, [r0, #0x11] @@ -7652,32 +7652,32 @@ MOD09_02215DA8: ; 0x02215DA8 ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02215EC4 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -7785,62 +7785,62 @@ MOD09_02215ED0: ; 0x02215ED0 ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x60 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x70 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x90 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xa0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x80 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216090 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0xb0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -7983,27 +7983,27 @@ MOD09_0221609C: ; 0x0221609C ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216184 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -8112,37 +8112,37 @@ MOD09_022161B0: ; 0x022161B0 ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x40 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x50 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02216304 ; =0x00002070 mov r1, #0 ldr r0, [r5, r0] add r0, #0x60 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -8275,7 +8275,7 @@ MOD09_02216314: ; 0x02216314 ldr r0, _02216338 ; =0x00002060 mov r1, #0xf add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl MOD09_0221633C pop {r4, pc} @@ -11816,7 +11816,7 @@ _0221803C: lsl r1, r1, #4 add r0, r0, r1 add r1, r7, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldr r1, _022180B0 ; =0x00002070 ldr r0, [r5, r1] add r1, r1, #5 @@ -11839,7 +11839,7 @@ _02218072: add r0, r1, r0 ldr r2, [sp] add r1, r7, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldr r0, _022180B0 ; =0x00002070 ldr r1, [r5, r0] ldrb r0, [r6, r4] @@ -14355,7 +14355,7 @@ _022194C6: add r1, #0x30 ldrb r1, [r1] ldr r0, [r0, #0xc] - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #0x2c] add r0, r5, #0 add r0, #0x30 @@ -14450,7 +14450,7 @@ MOD09_02219560: ; 0x02219560 bl FUN_02002E14 add r7, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsr r3, r0, #1 @@ -14486,7 +14486,7 @@ _022195C4: ldr r0, [r5, #0x2c] add r1, r7, #0 add r0, r0, r4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, #0x10 cmp r6, #5 @@ -14588,7 +14588,7 @@ MOD09_02219694: ; 0x02219694 add r0, r4, r6 mov r1, #0 str r2, [sp, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02219730 ; =0x0000114D lsl r7, r7, #2 ldrb r1, [r5, r0] @@ -14626,7 +14626,7 @@ MOD09_02219694: ; 0x02219694 bl FUN_02002E14 add r7, r0, #0 add r0, r4, r6 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsr r3, r0, #1 @@ -14664,7 +14664,7 @@ MOD09_02219738: ; 0x02219738 add r0, r4, r7 mov r1, #0 str r2, [sp, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _022197C4 ; =0x0000114D lsl r6, r6, #2 ldrb r1, [r5, r0] @@ -14827,7 +14827,7 @@ MOD09_02219884: ; 0x02219884 lsl r0, r0, #4 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x10] mov r1, #0x1c ldr r4, [r5, #0x2c] @@ -14841,7 +14841,7 @@ MOD09_02219884: ; 0x02219884 mov r0, #0x19 lsl r0, r0, #4 add r0, r4, r0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r0, r0, r7 lsr r6, r0, #1 @@ -14962,7 +14962,7 @@ MOD09_022199B4: ; 0x022199B4 lsl r0, r0, #6 add r0, r1, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02219A6C ; =0x0000114D ldrb r0, [r4, r0] cmp r0, #3 @@ -15089,7 +15089,7 @@ MOD09_02219A8C: ; 0x02219A8C bl StringExpandPlaceholders add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -15170,7 +15170,7 @@ _02219B6C: ldr r0, [r5, #0x2c] add r1, r7, #0 add r0, r0, r4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, #0x10 cmp r6, #4 @@ -15230,7 +15230,7 @@ MOD09_02219BE0: ; 0x02219BE0 add r0, r4, #0 add r0, #0x1c mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl MOD09_02219C08 pop {r4, pc} @@ -16913,7 +16913,7 @@ _0221A93C: ldr r1, [sp] add r2, r7, #0 mov r3, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldrb r0, [r4, r5] ldr r1, [r6, #0x2c] lsl r0, r0, #4 diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s index 32981b60..1bc8e471 100644 --- a/arm9/modules/11/asm/module_11_thumb1.s +++ b/arm9/modules/11/asm/module_11_thumb1.s @@ -633,7 +633,7 @@ _0222D99A: bl FUN_02019064 ldr r0, [r5, #8] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] mov r1, #0 mov r2, #1 @@ -746,7 +746,7 @@ MOD11_0222DB50: ; 0x0222DB50 str r0, [r4, #4] mov r0, #5 mov r1, #3 - bl FUN_02018FF4 + bl AllocWindows mov r7, #0x73 str r0, [r4, #8] mov r6, #0 @@ -795,7 +795,7 @@ _0222DC42: bl FUN_02019064 ldr r0, [r4, #8] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #8] mov r1, #0 mov r2, #1 diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 62996375..3a852eef 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -45,7 +45,7 @@ MOD11_0222F29C: ; 0x0222F29C str r0, [r5, #4] mov r0, #5 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #8] add r0, r5, #0 bl FUN_0206BFF0 @@ -186,7 +186,7 @@ _0222F30E: bl FUN_02019064 ldr r0, [r5, #8] mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] mov r1, #0 mov r2, #1 @@ -4854,7 +4854,7 @@ _022316CC: add r4, r0, #0 add r0, r6, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x28] str r3, [sp] @@ -4892,7 +4892,7 @@ _02231708: add r4, r0, #0 add r0, r6, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x28] str r3, [sp] @@ -4917,7 +4917,7 @@ _0223174C: bl GetTrainerMessageByIdPair add r0, r6, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x28] str r3, [sp] @@ -4962,7 +4962,7 @@ MOD11_0223178C: ; 0x0223178C bl MOD11_022321EC add r0, r7, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] ldr r0, _022317DC ; =MOD11_0223220C @@ -5000,7 +5000,7 @@ MOD11_022317E0: ; 0x022317E0 beq _02231814 add r0, r4, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer _02231814: ldr r1, [sp, #0x28] mov r0, #2 @@ -23862,7 +23862,7 @@ _0223AC50: bl FUN_02019064 add r0, r5, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 mov r1, #0 mov r2, #1 @@ -23987,7 +23987,7 @@ _0223ADBA: mov r2, #0x50 mov r3, #0 add r7, r0, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 str r1, [sp, #0x4c] add r5, sp, #0xb0 @@ -28099,7 +28099,7 @@ _0223CF5C: add r0, r6, #0 bl String_dtor add r0, sp, #0x68 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -62294,7 +62294,7 @@ MOD11_0224D518: ; 0x0224D518 bl MOD11_0222FF6C add r6, r0, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 bl FUN_02019548 mov r1, #0x65 @@ -71657,7 +71657,7 @@ _022520D2: bl MOD11_0222FF6C add r6, r0, #0 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 bl FUN_02019548 ldr r0, [r4] @@ -88280,7 +88280,7 @@ _0225A49C: cmp r4, #0 bne _0225A4DA add r0, sp, #0x3c - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -88914,7 +88914,7 @@ MOD11_0225A968: ; 0x0225A968 bl FUN_02019178 _0225A994: add r0, r4, #0 - bl FUN_0201901C + bl InitWindow ldr r0, [r5] bl MOD11_0222FF68 mov r1, #0 diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index f717789a..01de211a 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -7568,7 +7568,7 @@ MOD12_02231380: ; 0x02231380 add r6, r6, #1 _022313B0: add r0, sp, #0x34 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -9540,7 +9540,7 @@ _022322FE: cmp r4, #0 bne _0223233C add r0, sp, #0x3c - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -10928,7 +10928,7 @@ MOD12_02232D7C: ; 0x02232D7C bl FUN_02019178 _02232DA8: add r0, r4, #0 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -15225,7 +15225,7 @@ MOD12_02234EFC: ; 0x02234EFC add r4, r0, #0 add r0, #0x34 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0x34 add r0, r4, #0 bl CopyWindowToVram @@ -15275,7 +15275,7 @@ _02234F42: add r0, r5, #0 add r0, #0x34 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -25518,7 +25518,7 @@ _02239AF4: add r0, r5, #0 add r0, #0x34 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -29905,7 +29905,7 @@ _0223BCF0: add r6, r6, #1 _0223BD1C: add r0, sp, #0x38 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -34767,7 +34767,7 @@ _0223E210: add r0, r5, #0 add r0, #0x78 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -35104,7 +35104,7 @@ _0223E49A: add r0, r5, #0 add r0, #0x88 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -43554,7 +43554,7 @@ _02242618: add r0, r5, #0 add r0, #0x34 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r4, [sp, #4] @@ -43894,13 +43894,13 @@ _022428E6: str r0, [sp, #0x14] add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #5 lsl r0, r0, #4 str r0, [sp, #0x18] add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 str r0, [sp] mov r0, #0 @@ -47014,7 +47014,7 @@ _022440EE: ldr r0, [r4] mov r1, #0xff add r0, #0x34 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] add r0, #0x34 bl CopyWindowToVram diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 37a18d6d..3a321743 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -13820,7 +13820,7 @@ MOD14_021DE1D0: ; 0x021DE1D0 beq _021DE262 mov r0, #0xa mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 beq _021DE250 ldr r0, _021DE270 ; =0x00005984 @@ -19634,7 +19634,7 @@ MOD14_021E0F40: ; 0x021E0F40 beq _021E0FA0 mov r0, #0xa mov r1, #4 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #4] cmp r0, #0 beq _021E0F94 @@ -19965,7 +19965,7 @@ _021E11CE: add r0, #0x30 mov r2, #4 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldr r0, [r5, #4] add r0, #0x30 bl FUN_02019548 @@ -20058,7 +20058,7 @@ MOD14_021E1284: ; 0x021E1284 ldr r4, [r0, #4] add r4, #0x30 add r0, r4, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldrh r2, [r5, #2] ldr r1, [r5, #8] add r0, r4, #0 @@ -20233,19 +20233,19 @@ MOD14_021E13F0: ; 0x021E13F0 beq _021E144E ldr r0, [r4, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x10] bl MOD14_021DC408 cmp r0, #0 @@ -20276,19 +20276,19 @@ MOD14_021E1450: ; 0x021E1450 beq _021E14CC ldr r0, [r4, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x24] cmp r0, #0 beq _021E148E @@ -20334,19 +20334,19 @@ MOD14_021E14D0: ; 0x021E14D0 beq _021E153A ldr r0, [r4, #4] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x10 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0xf add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] mov r1, #0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x24] cmp r0, #0 beq _021E150E @@ -20615,7 +20615,7 @@ MOD14_021E1704: ; 0x021E1704 ldr r0, [r5, #4] mov r1, #0 add r0, #0x30 - bl FUN_02019620 + bl FillWindowPixelBuffer ldrb r0, [r4, #0xf] cmp r0, #0 bne _021E1742 @@ -20751,7 +20751,7 @@ MOD14_021E1818: ; 0x021E1818 add r6, r0, #0 mov r0, #0xa mov r1, #2 - bl FUN_02018FF4 + bl AllocWindows str r0, [r6, #0x18] cmp r0, #0 beq _021E1848 @@ -20828,7 +20828,7 @@ MOD14_021E189C: ; 0x021E189C bl MOD14_021E1908 ldr r0, [r5, #0x18] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x10] ldr r2, [r5, #0x30] add r1, r4, #0 @@ -20976,7 +20976,7 @@ _021E19E8: str r0, [sp, #0x14] add r0, #0x10 str r0, [sp, #0x14] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x10] mov r6, #0 add r0, #0x21 @@ -21087,7 +21087,7 @@ _021E1AA0: ldr r1, [r1, #0x14] lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_02019684 + bl BlitBitmapRect add sp, #0x1c pop {r4, r5, pc} .align 2, 0 @@ -21221,7 +21221,7 @@ MOD14_021E1B9C: ; 0x021E1B9C mov r1, #0xf mov r2, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect add r6, #0x20 ldrb r2, [r6] add r0, r4, #0 @@ -21631,7 +21631,7 @@ MOD14_021E1EEC: ; 0x021E1EEC add r7, r0, #0 mov r0, #0xa mov r1, #3 - bl FUN_02018FF4 + bl AllocWindows str r0, [r7, #0x10] cmp r0, #0 beq _021E1F1A @@ -22259,7 +22259,7 @@ MOD14_021E2394: ; 0x021E2394 add r6, r0, #0 add r0, r4, #0 mov r1, #7 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -22288,7 +22288,7 @@ MOD14_021E23F8: ; 0x021E23F8 ldr r4, [r0, #0x10] mov r1, #7 add r0, r4, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl FUN_02019548 pop {r4, pc} @@ -22303,7 +22303,7 @@ MOD14_021E240C: ; 0x021E240C str r0, [sp, #0xc] add r0, #0x10 str r0, [sp, #0xc] - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0 bl MOD14_021E2188 mov r6, #0 @@ -22345,7 +22345,7 @@ MOD14_021E2464: ; 0x021E2464 mov r1, #4 add r4, #0x10 add r0, r4, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl FUN_02019548 pop {r4, pc} @@ -22698,7 +22698,7 @@ MOD14_021E26E4: ; 0x021E26E4 ldr r0, [r5, #0x10] mov r1, #4 add r0, #0x20 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021E279C ; =0x00004BF8 add r1, r6, #0 ldr r0, [r5, r2] @@ -24684,7 +24684,7 @@ MOD14_021E355C: ; 0x021E355C add r0, r4, #0 add r0, #0x88 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x88 bl CopyWindowToVram @@ -27058,7 +27058,7 @@ _021E47AE: ldrh r3, [r5, #2] add r0, r7, #0 mov r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #2 ldrsh r0, [r5, r0] mov r1, #0 @@ -28653,11 +28653,11 @@ _021E541E: add r0, r7, #0 add r0, #0x78 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0 add r0, #0x88 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r7, #0 mov r5, #0 add r4, #0x78 @@ -28797,7 +28797,7 @@ _021E554C: bl FUN_02019270 add r0, r5, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r7, #8 cmp r6, #2 @@ -28983,7 +28983,7 @@ _021E56B4: bl FUN_02019270 add r0, r5, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r7, #8 cmp r6, #2 @@ -29032,7 +29032,7 @@ MOD14_021E5718: ; 0x021E5718 add r7, #0x98 add r0, r7, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] bl MOD14_021DC560 cmp r0, #0 @@ -29116,7 +29116,7 @@ MOD14_021E57CC: ; 0x021E57CC add r4, #0x98 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl FUN_02019548 pop {r4, pc} @@ -29156,7 +29156,7 @@ _021E581A: str r0, [sp, #0x14] add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x18] cmp r0, #1 bne _021E5836 @@ -29299,7 +29299,7 @@ _021E593E: str r0, [sp, #0x18] add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x1c] cmp r0, #1 bne _021E595A @@ -29753,7 +29753,7 @@ MOD14_021E5CFC: ; 0x021E5CFC add r4, r1, r0 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] bl MOD14_021DC3F0 cmp r0, #0 diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index 560be120..cd1cb9eb 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -4345,7 +4345,7 @@ MOD15_021D95E8: ; 0x021D95E8 bl NewMsgDataFromNarc str r0, [r4, #0x48] mov r0, #0x23 - bl FUN_02013690 + bl ListMenuCursorNew str r0, [r4, #0x50] add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} @@ -4359,7 +4359,7 @@ MOD15_021D9634: ; 0x021D9634 ldr r0, [r4, #0x50] cmp r0, #0 beq _021D9642 - bl FUN_020136C0 + bl DestroyListMenuCursorObj _021D9642: ldr r0, [r4, #0x3c] cmp r0, #0 @@ -4749,7 +4749,7 @@ MOD15_021D9964: ; 0x021D9964 add r0, r4, #0 add r0, #0xc mov r1, #0xd - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #4] bl MOD15_021D86E4 cmp r0, #0 @@ -5135,7 +5135,7 @@ MOD15_021D9C30: ; 0x021D9C30 ldrh r3, [r3, #2] add r0, r4, #0 mov r1, #0xe - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0xc pop {r3, r4, pc} @@ -5194,7 +5194,7 @@ MOD15_021D9CB4: ; 0x021D9CB4 add r5, r1, #0 add r0, #0x1c mov r1, #9 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r5, #3 bhi _021D9DB0 add r0, r5, r5 @@ -5462,7 +5462,7 @@ MOD15_021D9ECC: ; 0x021D9ECC add r4, r1, #0 add r0, #0x2c mov r1, #9 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x48] ldr r2, [r5, #0x4c] mov r1, #9 @@ -5509,7 +5509,7 @@ MOD15_021D9ECC: ; 0x021D9ECC add r1, #0x2c mov r2, #0 lsl r3, r4, #4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj add r5, #0x2c add r0, r5, #0 bl CopyWindowToVram @@ -5533,13 +5533,13 @@ MOD15_021D9F58: ; 0x021D9F58 add r0, #0x2c mov r1, #9 add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [r5, #0x50] add r5, #0x2c add r1, r5, #0 mov r2, #0 lsl r3, r4, #4 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj add sp, #8 pop {r3, r4, r5, pc} @@ -5650,7 +5650,7 @@ MOD15_021DA044: ; 0x021DA044 bl FUN_02019270 add r0, sp, #0x10 mov r1, #0xe - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _021DA0B0 ; =0x00000183 mov r0, #0x1a add r2, r4, #0 @@ -6021,7 +6021,7 @@ _021DA31A: bl FUN_02019064 add r0, sp, #0x28 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 add r1, r5, #0 add r2, r0, #0 @@ -6102,7 +6102,7 @@ _021DA3CC: add r4, r0, #0 add r0, sp, #0x20 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer bl MOD15_021DB770 add r7, r0, #0 ldr r5, _021DA474 ; =0x00000000 @@ -6215,7 +6215,7 @@ _021DA4C2: bl FUN_02019064 add r0, r6, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] mov r0, #0xff @@ -6769,7 +6769,7 @@ MOD15_021DA8E8: ; 0x021DA8E8 add r0, r5, #0 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x10 bl FUN_02019270 @@ -6853,7 +6853,7 @@ MOD15_021DA9D4: ; 0x021DA9D4 add r6, r0, #0 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 bl MOD15_021DAD78 ldr r0, [r6, #4] @@ -7291,7 +7291,7 @@ _021DAD1A: add r0, r5, #0 add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #8 pop {r3, r4, r5, pc} _021DAD3E: @@ -7308,7 +7308,7 @@ _021DAD3E: add r0, #0x10 add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xd0 str r0, [sp] @@ -7319,7 +7319,7 @@ _021DAD3E: add r0, r5, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #8 pop {r3, r4, r5, pc} @@ -7378,7 +7378,7 @@ _021DADD4: add r0, r5, #0 add r0, #0x20 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -7416,7 +7416,7 @@ _021DADD4: ldr r1, [r5, #0x2c] add r0, #0x10 add r3, r2, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r1, #0x60 lsl r2, r7, #0x10 lsl r3, r6, #0x10 @@ -7436,7 +7436,7 @@ _021DADD4: ldr r1, [r5, #0x2c] add r0, #0x10 lsr r3, r3, #0x10 - bl FUN_02019658 + bl BlitBitmapRectToWindow add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop @@ -7680,7 +7680,7 @@ MOD15_021DAFF8: ; 0x021DAFF8 cmp r0, #0 beq _021DB0D4 add r0, sp, #0x10 - bl FUN_0201901C + bl InitWindow ldr r0, [r5, #0xc] add r1, sp, #0xc str r0, [sp, #0x10] diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index 26ae4fbf..adc8e5c2 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -3518,7 +3518,7 @@ MOD16_021D8F60: ; 0x021D8F60 bl FUN_02019064 add r0, r4, #4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #4 bl CopyWindowToVram add sp, #0x14 @@ -8433,9 +8433,9 @@ MOD16_021DB388: ; 0x021DB388 add r4, r1, #0 mov r1, #1 add r6, r2, #0 - bl FUN_02018FF4 + bl AllocWindows add r7, r0, #0 - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -9139,7 +9139,7 @@ MOD16_021DB7F4: ; 0x021DB7F4 str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r0, [sp, #0x18] - bl FUN_02019658 + bl BlitBitmapRectToWindow _021DB848: add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} @@ -13350,7 +13350,7 @@ _021DD77E: ldr r0, [r5] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5] mov r1, #1 ldr r0, [r0] @@ -13505,7 +13505,7 @@ _021DD8A8: ldr r0, [r5] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5] mov r1, #1 ldr r0, [r0] @@ -16653,7 +16653,7 @@ MOD16_021DEFF8: ; 0x021DEFF8 ldr r0, [r5] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5] mov r1, #7 add r0, r0, #4 @@ -16737,7 +16737,7 @@ MOD16_021DF0BC: ; 0x021DF0BC ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] mov r1, #0 add r0, r0, #4 @@ -17058,7 +17058,7 @@ MOD16_021DF350: ; 0x021DF350 mov r1, #0 mov r2, #0x18 mov r3, #8 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r6, #3 bhi _021DF394 add r0, r6, r6 @@ -17135,7 +17135,7 @@ MOD16_021DF3E4: ; 0x021DF3E4 mov r1, #0 mov r2, #0x18 mov r3, #8 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #0x5d add r1, r5, #0 bl MOD16_021D8270 @@ -17387,7 +17387,7 @@ MOD16_021DF5D0: ; 0x021DF5D0 mov r1, #0 mov r2, #0x58 mov r3, #0x34 - bl FUN_020196F4 + bl FillWindowPixelRect add r5, #0x51 add r0, r5, #0 add r1, r6, #0 @@ -17433,7 +17433,7 @@ MOD16_021DF630: ; 0x021DF630 mov r1, #0 mov r2, #0x58 mov r3, #0x4d - bl FUN_020196F4 + bl FillWindowPixelRect cmp r6, #9 bhi _021DF698 add r0, r6, r6 @@ -17529,7 +17529,7 @@ MOD16_021DF6D8: ; 0x021DF6D8 mov r1, #0 mov r2, #0x58 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r6, #0x11 bhi _021DF774 add r0, r6, r6 @@ -17852,7 +17852,7 @@ _021DF92E: ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] add r0, r0, #4 bl FUN_02019220 @@ -17883,7 +17883,7 @@ MOD16_021DF970: ; 0x021DF970 add r4, r1, #0 add r0, r5, #4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x5e add r1, r4, #0 bl MOD16_021D8270 @@ -17928,7 +17928,7 @@ MOD16_021DF9C0: ; 0x021DF9C0 ldr r0, [r5] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4] add r0, r5, #0 add r2, r6, #0 @@ -26946,7 +26946,7 @@ MOD16_021E3B70: ; 0x021E3B70 add r6, r2, #0 add r0, r0, #4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer str r6, [sp] ldr r3, _021E3BBC ; =0x000007F8 ldr r0, [r4] @@ -26985,7 +26985,7 @@ MOD16_021E3BC8: ; 0x021E3BC8 ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] mov r1, #1 ldr r0, [r0] @@ -27335,7 +27335,7 @@ MOD16_021E3E6C: ; 0x021E3E6C ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 lsl r0, r0, #0xa ldr r3, [r5, r0] @@ -29593,7 +29593,7 @@ MOD16_021E4EE4: ; 0x021E4EE4 ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r1, r4, #0 bl MOD16_021E5224 @@ -34307,7 +34307,7 @@ MOD16_021E71A8: ; 0x021E71A8 ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r1, r4, #0 bl MOD16_021E753C @@ -41593,7 +41593,7 @@ MOD16_021EA858: ; 0x021EA858 add r2, r1, #0 add r0, r0, #4 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [r4] mov r1, #1 ldr r0, [r0] @@ -41901,7 +41901,7 @@ MOD16_021EAAA4: ; 0x021EAAA4 mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r1, [sp, #0x38] ldr r0, [sp, #0xc] mov r6, #0 @@ -42016,7 +42016,7 @@ _021EABA2: mov r1, #6 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect str r5, [r4] add sp, #0xc pop {r4, r5, r6, r7, pc} @@ -42049,7 +42049,7 @@ MOD16_021EABC4: ; 0x021EABC4 mov r1, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r5, r6 bge _021EAC18 _021EABFE: @@ -45513,7 +45513,7 @@ MOD16_021EC574: ; 0x021EC574 ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] mov r1, #1 ldr r0, [r0] @@ -48265,7 +48265,7 @@ MOD16_021EDA3C: ; 0x021EDA3C ldr r0, [r4] mov r1, #0 add r0, r0, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4] mov r1, #1 ldr r0, [r0] @@ -51457,7 +51457,7 @@ MOD16_021EF318: ; 0x021EF318 add r5, r0, #0 add r0, r1, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 mov r3, #0 str r3, [sp] @@ -51473,7 +51473,7 @@ MOD16_021EF318: ; 0x021EF318 bl FUN_02019064 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl CopyWindowToVram add r0, r4, #0 diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 82398e6b..b96d5a98 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -2123,7 +2123,7 @@ MOD17_021D83E4: ; 0x021D83E4 str r0, [r5, r1] mov r0, #0xd mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows ldr r2, _021D84EC ; =0x000006A8 mov r1, #0 str r0, [r5, r2] @@ -2663,7 +2663,7 @@ _021D88F8: str r0, [r4, r1] mov r0, #0xd mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows ldr r1, _021D8994 ; =0x000006A8 mov r2, #0 str r0, [r4, r1] @@ -4691,7 +4691,7 @@ MOD17_021D9918: ; 0x021D9918 ldr r0, _021D99D4 ; =0x000006A8 mov r1, #0xf ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer lsl r0, r6, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -4753,7 +4753,7 @@ MOD17_021D99E0: ; 0x021D99E0 add r4, r1, #0 ldr r0, [r5, r0] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021D9A5C ; =0x00000151 mov r0, #0 mov r1, #0x1a @@ -4818,7 +4818,7 @@ _021D9A7E: ldr r0, _021D9B08 ; =0x000006A8 mov r1, #0xf ldr r0, [r5, r0] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021D9B0C ; =0x00000151 mov r0, #0 mov r1, #0x1a @@ -11265,9 +11265,9 @@ _021DC898: add r7, r0, #0 mov r0, #0xe mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r4, r0, #0 - bl FUN_0201901C + bl InitWindow mov r0, #0 ldr r2, [sp, #0x28] ldr r3, [sp, #0x2c] @@ -11436,7 +11436,7 @@ _021DC9CC: lsl r0, r0, #2 ldr r0, [r5, r0] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -11789,9 +11789,9 @@ MOD17_021DCC68: ; 0x021DCC68 mov r0, #0xe mov r1, #1 add r4, r2, #0 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5] - bl FUN_0201901C + bl InitWindow lsl r0, r6, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -11817,7 +11817,7 @@ MOD17_021DCC68: ; 0x021DCC68 bl FUN_02019064 ldr r0, [r5] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x34] cmp r0, #0 beq _021DCCCC @@ -11860,7 +11860,7 @@ MOD17_021DCCEC: ; 0x021DCCEC add r5, r0, #0 add r6, r2, #0 add r7, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x28] add r1, r4, #0 str r0, [sp] @@ -11896,7 +11896,7 @@ MOD17_021DCD34: ; 0x021DCD34 add r5, r0, #0 add r6, r2, #0 add r7, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x28] add r1, r4, #0 str r0, [sp] @@ -12396,7 +12396,7 @@ _021DD0D0: bl MOD17_021DCC68 ldr r0, [r7, #0x18] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] mov r3, #4 @@ -14242,7 +14242,7 @@ MOD17_021DDF1C: ; 0x021DDF1C add r4, r0, #0 mov r0, #0xe mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows mov r1, #0x19 lsl r1, r1, #4 str r0, [r4, r1] @@ -14313,7 +14313,7 @@ MOD17_021DDFAC: ; 0x021DDFAC lsl r0, r0, #4 ldr r0, [r4, r0] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0xc] cmp r0, #0 bne _021DDFCA diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index d0f6db33..dccb0b7d 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -22033,18 +22033,18 @@ MOD18_02244028: ; 0x02244028 ldr r1, [sp, #0x30] strb r1, [r0, #0x1e] ldr r0, [sp, #8] - bl FUN_02013690 + bl ListMenuCursorNew ldr r1, [sp, #0xc] str r0, [r1, #0x10] ldr r1, _022440C0 ; =0x0008090F - bl FUN_020136E0 + bl ListMenuCursorSetColor ldr r1, [sp, #8] ldr r0, [sp, #0xc] strb r1, [r0, #0x1d] ldr r1, [sp, #0xc] ldrh r0, [r5, #0x10] ldrb r1, [r1, #0x1d] - bl ListMenu_ctor + bl ListMenuItems_ctor add r7, r0, #0 ldrh r0, [r5, #0x10] mov r6, #0 @@ -22055,7 +22055,7 @@ _02244084: ldr r1, [r5] add r0, r7, #0 add r1, r1, r4 - bl ListMenu_CopyItem + bl ListMenuItems_CopyItem ldrh r0, [r5, #0x10] add r6, r6, #1 add r4, #8 @@ -22075,7 +22075,7 @@ _0224409E: ldr r2, [sp, #4] ldr r3, [sp, #8] add r0, r5, #0 - bl FUN_020010A8 + bl ListMenuInit ldr r1, [sp, #0xc] str r0, [r1, #0xc] add r0, r1, #0 @@ -22099,7 +22099,7 @@ MOD18_022440C4: ; 0x022440C4 lsr r6, r0, #0x10 ldr r0, [r4, #0xc] mov r1, #3 - bl FUN_02001470 + bl ListMenuGetTemplateField lsl r0, r0, #0x10 lsr r1, r0, #0x10 ldrh r0, [r4, #0x18] @@ -22118,29 +22118,29 @@ _022440F0: bhi _0224413A ldr r0, [r4, #0xc] mov r1, #7 - bl FUN_02001470 + bl ListMenuGetTemplateField str r0, [sp] ldr r0, [r4, #0xc] mov r1, #9 - bl FUN_02001470 + bl ListMenuGetTemplateField lsl r0, r0, #0x18 lsr r7, r0, #0x18 ldr r0, [r4, #0xc] mov r1, #8 - bl FUN_02001470 + bl ListMenuGetTemplateField str r0, [sp, #4] sub r0, r6, r5 add r5, r7, #0 mul r5, r0 ldr r0, [r4, #0xc] mov r1, #0x12 - bl FUN_02001470 + bl ListMenuGetTemplateField ldr r3, [sp, #4] add r1, r0, #0 ldr r0, [r4, #0x10] ldr r2, [sp] add r3, r5, r3 - bl FUN_020136F8 + bl ListMenuUpdateCursorObj _0224413A: add sp, #8 pop {r3, r4, r5, r6, r7, pc} @@ -22159,13 +22159,13 @@ MOD18_02244140: ; 0x02244140 beq _0224418A ldr r0, [sp, #4] mov r1, #2 - bl FUN_02001470 + bl ListMenuGetTemplateField add r7, r0, #0 add r1, sp, #0xc ldr r0, [sp, #4] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldrb r0, [r5, #0x1c] cmp r0, #0 bne _0224416E @@ -22216,7 +22216,7 @@ _022441BA: blx r3 ldrb r1, [r5, #0x1d] add r0, r7, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r4, #0 add r6, r4, #0 str r0, [sp] @@ -22234,7 +22234,7 @@ _022441DE: lsl r1, r4, #3 ldr r0, [sp] add r1, r2, r1 - bl ListMenu_CopyItem + bl ListMenuItems_CopyItem _022441EA: add r0, sp, #0xc ldrh r1, [r0, #2] @@ -22250,7 +22250,7 @@ _022441EA: add r1, r2, r1 lsl r1, r1, #3 add r1, r3, r1 - bl ListMenu_CopyItem + bl ListMenuItems_CopyItem _0224420A: add r6, r6, #1 cmp r6, r7 @@ -22312,11 +22312,11 @@ _02244268: ldr r1, [sp] str r0, [r5, #8] ldr r0, [sp, #4] - bl FUN_02001658 + bl ListMenuGetItemStr mov r0, #0 strb r0, [r5, #0x1c] ldr r0, [sp, #4] - bl FUN_02001328 + bl RedrawListMenu mov r0, #0 add sp, #0x10 mvn r0, r0 @@ -22355,13 +22355,13 @@ _022442B2: pop {r3, r4, r5, r6, r7, pc} _022442CA: ldr r0, [sp, #4] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r1, r5, #0 ldr r0, [sp, #4] add r1, #0x20 ldrh r6, [r5, #0x20] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x20] cmp r6, r0 beq _022442EA @@ -22397,12 +22397,12 @@ MOD18_02244318: ; 0x02244318 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0xc] - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r4] cmp r0, #0 beq _02244334 ldr r0, [r4, #0x10] - bl FUN_020136C0 + bl DestroyListMenuCursorObj ldr r0, [r4, #8] bl FreeToHeap _02244334: @@ -23187,7 +23187,7 @@ MOD18_0224486C: ; 0x0224486C bl FUN_020545B8 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x80 str r3, [sp] mov r2, #4 @@ -23388,7 +23388,7 @@ _02244AF8: ldr r0, [sp, #0xc] mov r2, #2 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow ldr r0, [sp, #0xc] bl CopyWindowToVram ldr r0, [r5] @@ -25548,21 +25548,21 @@ MOD18_02245B1C: ; 0x02245B1C add r5, r0, #0 ldr r1, [sp, #0x30] mov r0, #2 - bl ListMenu_ctor + bl ListMenuItems_ctor add r4, r0, #0 add r1, r5, #0 mov r2, #0x26 mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r4, #0 add r1, r5, #0 mov r2, #0x27 mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, [sp, #0x30] mov r1, #1 str r4, [sp, #0x10] - bl FUN_02018FF4 + bl AllocWindows add r1, r0, #0 str r1, [sp, #0x14] mov r0, #0 @@ -29532,7 +29532,7 @@ MOD18_02247AA8: ; 0x02247AA8 add r5, r0, #0 mov r0, #4 add r1, r0, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x1c] mov r3, #1 str r3, [sp] @@ -29569,7 +29569,7 @@ _02247AFA: ldr r2, [r4] ldr r3, [r4, #4] add r1, r7, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #4 @@ -29593,7 +29593,7 @@ _02247AFA: strh r1, [r5, #0x3a] add r0, sp, #0x14 add r2, r1, #0 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x20] add r5, #0xc add r0, r5, #0 @@ -29658,7 +29658,7 @@ MOD18_02247BB8: ; 0x02247BB8 add r5, r0, #0 mov r0, #4 add r1, r0, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x1c] mov r3, #1 str r3, [sp] @@ -29714,7 +29714,7 @@ _02247C2C: ldr r0, [r5, #0x1c] add r1, r6, #0 add r3, r2, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _02247C40 _02247C3E: sub r4, r4, #1 @@ -29745,7 +29745,7 @@ _02247C40: strh r1, [r5, #0x3a] add r2, r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x20] add r5, #0xc add r0, r5, #0 @@ -29766,7 +29766,7 @@ MOD18_02247C98: ; 0x02247C98 add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x20] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD18_02248FEC @@ -29831,7 +29831,7 @@ MOD18_02247D1C: ; 0x02247D1C add r5, r0, #0 mov r0, #4 add r1, r0, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x1c] mov r3, #1 str r3, [sp] @@ -29871,7 +29871,7 @@ _02247D6C: lsl r2, r2, #2 add r2, r4, r2 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, #4 blt _02247D6C @@ -29898,7 +29898,7 @@ _02247D6C: strh r1, [r5, #0x3a] add r2, r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x20] add r5, #0xc add r0, r5, #0 @@ -29919,7 +29919,7 @@ MOD18_02247DD8: ; 0x02247DD8 add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x20] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD18_02248FEC @@ -30102,7 +30102,7 @@ MOD18_02247F5C: ; 0x02247F5C add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x20] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD18_02248FEC @@ -30159,7 +30159,7 @@ MOD18_02247FC0: ; 0x02247FC0 mov r1, #0 ldr r0, [r4, #0x20] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #0xc bl FUN_02019570 @@ -30167,7 +30167,7 @@ MOD18_02247FC0: ; 0x02247FC0 add r0, #0xc bl FUN_02019178 ldr r0, [r4, #0x1c] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r4, #0x1c] _02247FF8: @@ -31135,7 +31135,7 @@ MOD18_02248784: ; 0x02248784 mov r1, #0 ldr r0, [r4, #0x1c] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #8 bl FUN_02019570 @@ -31143,7 +31143,7 @@ MOD18_02248784: ; 0x02248784 add r0, #8 bl FUN_02019178 ldr r0, [r4, #0x18] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r4, #0x18] _022487BC: @@ -31202,7 +31202,7 @@ MOD18_02248820: ; 0x02248820 add r5, r0, #0 mov r0, #5 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x18] mov r3, #1 add r1, r5, #0 @@ -31242,7 +31242,7 @@ _02248870: lsl r2, r2, #2 add r2, r4, r2 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, #4 blt _02248870 @@ -31250,7 +31250,7 @@ _02248870: add r1, r6, #0 mov r2, #0x30 mov r3, #0x33 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #0 bl DestroyMsgData ldr r4, _022488EC ; =0x02250528 @@ -31278,7 +31278,7 @@ _02248870: strh r1, [r5, #0x36] add r2, r1, #0 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x1c] add r5, #8 add r0, r5, #0 @@ -31298,13 +31298,13 @@ MOD18_022488F0: ; 0x022488F0 add r5, r1, #0 add r7, r0, #0 ldr r0, [r5, #0x1c] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r1, r5, #0 ldr r0, [r5, #0x1c] add r1, #0x36 ldrh r6, [r5, #0x36] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x36] cmp r6, r0 beq _02248916 @@ -32213,7 +32213,7 @@ MOD18_02248FEC: ; 0x02248FEC ldr r0, [r5, #0x20] add r1, #0x3a ldrh r4, [r5, #0x3a] - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldrh r0, [r5, #0x3a] cmp r4, r0 beq _02249008 @@ -32943,7 +32943,7 @@ MOD18_02249564: ; 0x02249564 bl MOD18_02249544 mov r0, #7 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r0, #1 str r0, [sp] @@ -32985,7 +32985,7 @@ _022495BA: ldr r0, [r5, #0x40] ldr r2, [r4, #4] add r1, r7, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r7, #0 bl String_dtor b _022495EE @@ -32994,7 +32994,7 @@ _022495E2: ldr r1, [sp, #0x14] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _022495EE: add r6, r6, #1 add r4, #8 @@ -33377,7 +33377,7 @@ _02249902: beq _02249916 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0 str r0, [r4, #0x48] b _02249936 @@ -33413,7 +33413,7 @@ _02249936: add r0, #0x10 bl FUN_02019178 ldr r0, [r4, #0x40] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 bl MOD18_0224CBAC _02249968: @@ -33456,7 +33456,7 @@ _02249998: _022499A2: add r0, r6, #0 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x44] lsl r0, r7, #0x18 lsr r0, r0, #0x18 @@ -33498,7 +33498,7 @@ _022499FA: ldr r1, [sp, #0x14] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r7, r7, #1 add r4, #8 cmp r7, r6 @@ -33530,7 +33530,7 @@ _02249A0E: add r2, r1, #0 mov r3, #4 str r5, [sp, #0x3c] - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x50] add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} @@ -33552,14 +33552,14 @@ MOD18_02249A64: ; 0x02249A64 beq _02249A8C mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r1, r4, #0 add r1, #0x24 ldrb r1, [r1] ldr r0, [r4, #0x20] bl FUN_0201AC68 ldr r0, [r4, #0x44] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 str r0, [r4, #0x50] _02249A8C: @@ -33623,7 +33623,7 @@ MOD18_02249AF4: ; 0x02249AF4 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r2, #0x81 add r1, r0, #0 lsl r2, r2, #2 @@ -33730,7 +33730,7 @@ MOD18_02249BA8: ; 0x02249BA8 bl MOD18_0224DB80 add r0, r6, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -33767,7 +33767,7 @@ _02249C18: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, r6 blt _02249C18 @@ -33777,7 +33777,7 @@ _02249C30: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] sub r3, #0x24 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r3, _02249CBC ; =0x02250598 add r2, sp, #0x1c ldmia r3!, {r0, r1} @@ -33853,7 +33853,7 @@ MOD18_02249CC8: ; 0x02249CC8 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -33862,7 +33862,7 @@ MOD18_02249CC8: ; 0x02249CC8 ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -33957,14 +33957,14 @@ MOD18_02249DB8: ; 0x02249DB8 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #0x50] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0x93 add r4, r0, #0 lsl r1, r1, #2 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -34077,7 +34077,7 @@ MOD18_02249EBC: ; 0x02249EBC push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r2, #0x81 add r1, r0, #0 lsl r2, r2, #2 @@ -34197,7 +34197,7 @@ MOD18_02249F8C: ; 0x02249F8C bl MOD18_0224DB80 add r0, r6, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -34259,7 +34259,7 @@ _0224A002: ldr r0, [r5, #0x40] ldr r1, [r5, #0x68] add r2, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r4, r4, #1 cmp r4, r6 blt _0224A002 @@ -34269,7 +34269,7 @@ _0224A058: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] sub r3, #0x3e - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r3, _0224A0E0 ; =0x02250598 add r2, sp, #0x20 ldmia r3!, {r0, r1} @@ -34343,7 +34343,7 @@ MOD18_0224A0EC: ; 0x0224A0EC ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -34352,7 +34352,7 @@ MOD18_0224A0EC: ; 0x0224A0EC ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -34434,14 +34434,14 @@ MOD18_0224A1C0: ; 0x0224A1C0 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #0x50] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0x93 add r4, r0, #0 lsl r1, r1, #2 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -34542,7 +34542,7 @@ MOD18_0224A2B4: ; 0x0224A2B4 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r2, #0x81 add r1, r0, #0 lsl r2, r2, #2 @@ -34646,7 +34646,7 @@ MOD18_0224A360: ; 0x0224A360 bl MOD18_0224DB80 add r0, r6, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -34683,7 +34683,7 @@ _0224A3D0: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, r6 blt _0224A3D0 @@ -34693,7 +34693,7 @@ _0224A3E8: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] sub r3, #0x3e - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r3, _0224A470 ; =0x02250598 add r2, sp, #0x1c ldmia r3!, {r0, r1} @@ -34767,7 +34767,7 @@ MOD18_0224A47C: ; 0x0224A47C ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -34776,7 +34776,7 @@ MOD18_0224A47C: ; 0x0224A47C ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -34858,14 +34858,14 @@ MOD18_0224A550: ; 0x0224A550 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #0x50] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0x93 add r4, r0, #0 lsl r1, r1, #2 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -35399,7 +35399,7 @@ MOD18_0224A9B4: ; 0x0224A9B4 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r2, #0x81 add r1, r0, #0 lsl r2, r2, #2 @@ -35431,7 +35431,7 @@ MOD18_0224A9EC: ; 0x0224A9EC add r4, r1, #0 mov r1, #0x13 add r5, r0, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField ldr r0, [r0, #0xc] bl ScriptEnvironment_GetSav2Ptr bl FUN_02026CC4 @@ -35443,14 +35443,14 @@ MOD18_0224A9EC: ; 0x0224A9EC mov r1, #1 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, r4, r5, pc} _0224AA1A: mov r1, #2 add r0, r5, #0 mov r2, #0xf add r3, r1, #0 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, r4, r5, pc} thumb_func_end MOD18_0224A9EC @@ -35584,7 +35584,7 @@ MOD18_0224AB08: ; 0x0224AB08 bl MOD18_0224DB80 add r0, r6, #1 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -35621,7 +35621,7 @@ _0224AB78: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, r6 blt _0224AB78 @@ -35630,7 +35630,7 @@ _0224AB90: ldr r0, [r5, #0x40] ldr r1, [sp, #0x18] sub r3, r2, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r3, _0224AC18 ; =0x02250598 add r2, sp, #0x1c ldmia r3!, {r0, r1} @@ -35706,7 +35706,7 @@ MOD18_0224AC24: ; 0x0224AC24 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -35715,7 +35715,7 @@ MOD18_0224AC24: ; 0x0224AC24 ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -35800,14 +35800,14 @@ MOD18_0224AD04: ; 0x0224AD04 push {r4, r5, r6, lr} add r5, r1, #0 ldr r0, [r5, #0x50] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0x93 add r4, r0, #0 lsl r1, r1, #2 ldrh r6, [r5, r1] ldr r0, [r5, #0x50] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId mov r0, #0x93 lsl r0, r0, #2 ldrh r0, [r5, r0] @@ -36444,7 +36444,7 @@ MOD18_0224B204: ; 0x0224B204 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r0, #1 mvn r0, r0 cmp r4, r0 @@ -36464,7 +36464,7 @@ MOD18_0224B228: ; 0x0224B228 push {r4, lr} add r4, r1, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField mov r0, #1 mvn r0, r0 cmp r4, r0 @@ -36486,13 +36486,13 @@ MOD18_0224B250: ; 0x0224B250 push {r3, r4, r5, lr} add r4, r1, #0 ldr r0, [r4, #0x48] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0 add r1, sp, #0 ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -36627,7 +36627,7 @@ _0224B374: bl MOD18_022498EC ldr r0, [sp, #0x18] mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 str r2, [sp] @@ -36675,13 +36675,13 @@ _0224B3D4: add r1, r7, #0 add r2, r6, #5 mvn r3, r3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _0224B3F4 _0224B3EA: add r1, r7, #0 add r2, r6, r4 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _0224B3F4: ldr r0, [sp, #0x18] add r4, r4, #1 @@ -36727,7 +36727,7 @@ _0224B42C: lsr r1, r1, #0x10 lsr r2, r2, #0x10 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x48] add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} @@ -36750,7 +36750,7 @@ MOD18_0224B464: ; 0x0224B464 bl MOD18_022498EC ldr r0, [sp, #0x1c] mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -36796,13 +36796,13 @@ _0224B4D0: add r1, r7, #0 add r2, r6, r4 mvn r3, r3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _0224B4F0 _0224B4E6: add r1, r7, #0 add r2, r6, r4 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _0224B4F0: ldr r0, [sp, #0x1c] add r4, r4, #1 @@ -36848,7 +36848,7 @@ _0224B528: lsr r1, r1, #0x10 lsr r2, r2, #0x10 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x48] add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} @@ -36862,13 +36862,13 @@ MOD18_0224B560: ; 0x0224B560 push {r3, r4, r5, lr} add r5, r1, #0 ldr r0, [r5, #0x48] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r1, sp, #0 ldr r0, [r5, #0x48] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -36964,7 +36964,7 @@ MOD18_0224B614: ; 0x0224B614 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -36973,7 +36973,7 @@ MOD18_0224B614: ; 0x0224B614 ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -37057,7 +37057,7 @@ MOD18_0224B6E0: ; 0x0224B6E0 ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -37066,7 +37066,7 @@ MOD18_0224B6E0: ; 0x0224B6E0 ldr r0, [r5, #0x4c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r1, sp, #0 add r2, r0, #0 ldrh r1, [r1, #2] @@ -38067,7 +38067,7 @@ MOD18_0224BF84: ; 0x0224BF84 ldr r0, [r5, #0x48] ldrh r4, [r5, r1] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224BFA4 ; =0x0000024A ldrh r0, [r5, r0] cmp r4, r0 @@ -38462,7 +38462,7 @@ _0224C288: bl MOD18_022498EC add r0, r4, #0 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -38502,14 +38502,14 @@ _0224C288: ldr r0, [r5, #0x40] mov r2, #0xd mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 add r1, r0, #0 ldr r0, [r5, #0x40] mov r2, #0xe mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 mov r2, #0xf @@ -38517,7 +38517,7 @@ _0224C288: add r3, r2, #0 ldr r0, [r5, #0x40] sub r3, #0x11 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _0224C396 _0224C31E: cmp r0, #0 @@ -38532,14 +38532,14 @@ _0224C31E: ldr r0, [r5, #0x40] mov r2, #0x10 mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 add r1, r0, #0 ldr r0, [r5, #0x40] mov r2, #0x11 mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 mov r2, #0x12 @@ -38547,7 +38547,7 @@ _0224C31E: add r3, r2, #0 ldr r0, [r5, #0x40] sub r3, #0x14 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _0224C396 _0224C36C: bl MOD18_0223D658 @@ -38556,7 +38556,7 @@ _0224C36C: ldr r0, [r5, #0x40] mov r2, #0x1c mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData bl MOD18_0223D658 bl MOD18_0224DBB4 mov r2, #0x16 @@ -38564,7 +38564,7 @@ _0224C36C: add r3, r2, #0 ldr r0, [r5, #0x40] sub r3, #0x18 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _0224C396: bl MOD18_0224DAD8 add r1, sp, #0x14 @@ -38606,7 +38606,7 @@ _0224C396: lsr r1, r1, #0x10 lsr r2, r2, #0x10 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x48] mov r0, #0x8b lsl r0, r0, #2 @@ -38632,17 +38632,17 @@ MOD18_0224C418: ; 0x0224C418 mov r1, #0x13 add r7, r0, #0 add r6, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 cmp r6, #0 beq _0224C434 add r0, r7, #0 - bl FUN_02001B80 + bl ListMenuCopyToVram _0224C434: add r0, r4, #0 add r0, #0x20 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer bl MOD18_0223D658 bl MOD18_0224DBB4 ldr r1, _0224C504 ; =0x00000247 @@ -38746,7 +38746,7 @@ MOD18_0224C510: ; 0x0224C510 mov r1, #0x13 str r0, [sp, #0xc] str r2, [sp, #0x10] - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 ldr r0, [r4, #0xc] bl ScriptEnvironment_GetSav2Ptr @@ -38756,12 +38756,12 @@ MOD18_0224C510: ; 0x0224C510 add r0, #0x20 mov r1, #0xf mov r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x10] cmp r0, #0 beq _0224C546 ldr r0, [sp, #0xc] - bl FUN_02001B80 + bl ListMenuCopyToVram _0224C546: mov r0, #1 mvn r0, r0 @@ -39086,7 +39086,7 @@ MOD18_0224C7D4: ; 0x0224C7D4 bl MOD18_022498EC mov r0, #6 mov r1, #4 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x40] mov r2, #3 add r1, r5, #0 @@ -39160,7 +39160,7 @@ _0224C87C: ldr r0, [r5, #0x40] add r1, r6, #0 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, #5 blt _0224C87C @@ -39168,7 +39168,7 @@ _0224C87C: ldr r0, [r5, #0x40] add r1, r6, #0 sub r3, r2, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #0 bl DestroyMsgData bl MOD18_0224DAD8 @@ -39228,7 +39228,7 @@ _0224C87C: lsr r1, r1, #0x10 lsr r2, r2, #0x10 mov r3, #4 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x48] add r5, #0x10 add r0, r5, #0 @@ -39490,7 +39490,7 @@ _0224CB1A: add r0, r4, #0 add r0, #0x20 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0x20 add r0, r4, #0 bl CopyWindowToVram @@ -39531,7 +39531,7 @@ MOD18_0224CB34: ; 0x0224CB34 add r0, r5, #0 add r0, #0x30 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x30 bl CopyWindowToVram @@ -39680,13 +39680,13 @@ _0224CC7E: pop {r4, r5, r6, pc} _0224CC8E: ldr r0, [r4, #0x48] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0 add r1, sp, #4 ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #4 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -39696,7 +39696,7 @@ _0224CC8E: ldr r0, [r4, #0x48] ldrh r6, [r4, r1] add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224CF54 ; =0x0000024A ldrh r0, [r4, r0] cmp r6, r0 @@ -39771,13 +39771,13 @@ _0224CD32: pop {r4, r5, r6, pc} _0224CD48: ldr r0, [r4, #0x48] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0 add r1, sp, #4 ldr r0, [r4, #0x48] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x92 lsl r0, r0, #2 ldrb r0, [r4, r0] @@ -39792,7 +39792,7 @@ _0224CD48: ldr r0, [r4, #0x48] ldrh r6, [r4, r1] add r1, r4, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _0224CF54 ; =0x0000024A ldrh r0, [r4, r0] cmp r6, r0 @@ -39916,7 +39916,7 @@ _0224CE68: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #4 ldrh r1, [r2] ldrh r2, [r2, #2] @@ -40138,7 +40138,7 @@ _0224D046: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x92 lsl r0, r0, #2 ldrb r0, [r4, r0] @@ -40827,7 +40827,7 @@ MOD18_0224D5CC: ; 0x0224D5CC add r0, r4, #0 add r0, #8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x30] cmp r0, #0 beq _0224D644 @@ -41332,7 +41332,7 @@ MOD18_0224DA00: ; 0x0224DA00 add r0, r5, #0 add r0, #8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 ldr r3, _0224DAA0 ; =0x022513FC str r6, [sp] @@ -41435,7 +41435,7 @@ _0224DB08: add r0, r4, #0 str r7, [r4, #0x18] add r0, #8 - bl FUN_0201901C + bl InitWindow ldr r1, [r4, #0x40] mov r0, #1 bic r1, r0 @@ -41590,7 +41590,7 @@ _0224DC4C: add r0, r5, #0 add r0, #8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 ldr r2, _0224DCB0 ; =0x000001E2 add r0, #8 @@ -42286,7 +42286,7 @@ MOD18_0224E0CC: ; 0x0224E0CC add r5, r0, #0 mov r0, #4 add r1, r0, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x24] mov r2, #3 str r2, [sp] @@ -42345,7 +42345,7 @@ MOD18_0224E0CC: ; 0x0224E0CC add r0, r5, #0 add r0, #0x14 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r7, #0 mov r1, #0 bl NewString_ReadMsgData @@ -42369,7 +42369,7 @@ _0224E186: ldr r2, [r4] add r1, r7, #0 add r3, r6, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, r4, #4 cmp r6, #4 @@ -42402,7 +42402,7 @@ _0224E186: ldr r2, [r5, #0x34] ldrh r1, [r1] ldrh r2, [r2] - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x28] add r0, r5, #4 bl CopyWindowToVram @@ -42429,7 +42429,7 @@ MOD18_0224E210: ; 0x0224E210 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x28] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD18_0224E73C @@ -42483,7 +42483,7 @@ MOD18_0224E26C: ; 0x0224E26C ldr r0, [r4, #0x28] ldr r1, [r4, #0x30] ldr r2, [r4, #0x34] - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #4 mov r1, #1 bl FUN_0200CCF8 @@ -42496,7 +42496,7 @@ MOD18_0224E26C: ; 0x0224E26C add r0, #0x14 bl FUN_02019178 ldr r0, [r4, #0x24] - bl ListMenu_dtor + bl ListMenuItems_dtor pop {r4, pc} .align 2, 0 thumb_func_end MOD18_0224E26C @@ -42512,13 +42512,13 @@ MOD18_0224E2B4: ; 0x0224E2B4 add r1, r2, #0 mov r2, #0xf mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} _0224E2CC: mov r1, #2 mov r2, #0xf add r3, r1, #0 - bl FUN_020013E8 + bl ListMenuOverrideSetColors pop {r3, pc} thumb_func_end MOD18_0224E2B4 @@ -42639,16 +42639,16 @@ _0224E384: ldr r0, [r0, #0xc] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, [r5, #0x2c] mov r1, #2 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r7, r0, #0 ldr r0, [r5, #0x2c] mov r1, #3 ldr r0, [r0, #0xc] - bl FUN_02001470 + bl ListMenuGetTemplateField add r3, r0, #0 add r1, sp, #0 lsl r2, r7, #0x10 @@ -42692,11 +42692,11 @@ MOD18_0224E3F0: ; 0x0224E3F0 add r4, r1, #0 add r5, r0, #0 mov r1, #0x13 - bl FUN_02001470 + bl ListMenuGetTemplateField add r6, r0, #0 add r0, r5, #0 mov r1, #2 - bl FUN_02001470 + bl ListMenuGetTemplateField lsr r1, r4, #1 sub r0, r0, #1 cmp r1, r0 @@ -42741,7 +42741,7 @@ _0224E454: ldr r0, [sp, #0x20] mov r1, #4 add r0, r0, #1 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5, #0x28] mov r2, #3 str r2, [sp] @@ -42804,7 +42804,7 @@ _0224E454: add r0, r5, #0 add r0, #0x18 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x24] mov r1, #9 bl NewString_ReadMsgData @@ -42899,7 +42899,7 @@ _0224E5B4: ldr r1, [sp, #0x18] ldr r2, [sp, #0x14] add r3, r6, r3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, [sp, #0x20] add r4, r4, #1 add r6, r6, #2 @@ -42911,7 +42911,7 @@ _0224E5CE: ldr r1, [sp, #0x18] ldr r2, _0224E694 ; =0x00000115 add r3, r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, [sp, #0x18] bl DestroyMsgData bl MOD18_0223D678 @@ -43025,7 +43025,7 @@ MOD18_0224E6A8: ; 0x0224E6A8 add r0, #0x18 bl FUN_02019178 ldr r0, [r4, #0x28] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, [r4, #4] bl FUN_0205EBEC pop {r4, pc} @@ -43078,7 +43078,7 @@ MOD18_0224E73C: ; 0x0224E73C add r1, r5, #0 ldr r0, [r5, #0x28] add r1, #0x40 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r5, #0x40 ldrh r0, [r5] cmp r4, r0 diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s index 67f4c29a..ee93d317 100644 --- a/arm9/modules/20/asm/module_20.s +++ b/arm9/modules/20/asm/module_20.s @@ -3279,23 +3279,23 @@ _02253C0E: cmp r1, #0 beq _02253C22 add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C22: ldr r1, [r4, #0xc] cmp r1, #0 beq _02253C2E add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C2E: ldr r1, [r4, #4] cmp r1, #0 beq _02253C3A add r0, r5, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C3A: add r0, r5, #0 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit _02253C42: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} @@ -3848,7 +3848,7 @@ MOD20_02254014: ; 0x02254014 cmp r1, #0 beq _02254028 ldr r0, [r4, #0x10] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4] _02254028: @@ -3856,7 +3856,7 @@ _02254028: cmp r1, #0 beq _02254038 ldr r0, [r4, #0x10] - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0 str r0, [r4, #4] _02254038: @@ -4072,7 +4072,7 @@ _02254176: _02254188: add r0, r5, #0 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit mov r4, #0 _02254192: add r0, r4, #0 @@ -4089,10 +4089,10 @@ MOD20_02254198: ; 0x02254198 _022541A2: ldr r0, [r4, #8] ldr r1, [r4, #0x14] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, [r4, #8] add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} thumb_func_end MOD20_02254198 diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index a9a7599d..1c91afde 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -29,7 +29,7 @@ THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); if (alloced != NULL) { - if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1)) + if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, struct TextPrinter *))MOD21_02254930, (struct TextPrinter *)alloced, 1)) { *param0 = alloced; return TRUE; diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s index 2888f12d..07a7285c 100644 --- a/arm9/modules/24/asm/module_24.s +++ b/arm9/modules/24/asm/module_24.s @@ -662,7 +662,7 @@ MOD24_02254D00: ; 0x02254D00 add r4, r0, #0 mov r0, #8 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #0x70] add r1, r0, #0 beq _02254D3C @@ -681,7 +681,7 @@ MOD24_02254D00: ; 0x02254D00 bne _02254D38 ldr r0, [r4, #0x70] mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer _02254D38: mov r0, #1 pop {r4, pc} @@ -987,7 +987,7 @@ _02254F80: mov r1, #4 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect asr r1, r5, #3 mov r2, #0x14 asr r0, r6, #3 @@ -1048,7 +1048,7 @@ _02254FF2: mov r1, #1 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [r7, #0x70] mov r2, #0x20 ldr r1, [r0, #0xc] diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s index 9fa91fb4..7d7fa32a 100644 --- a/arm9/modules/27/asm/module_27.s +++ b/arm9/modules/27/asm/module_27.s @@ -389,7 +389,7 @@ MOD27_02254AF0: ; 0x02254AF0 add r7, r6, #0 _02254B36: add r0, r4, #0 - bl FUN_0201901C + bl InitWindow add r0, r5, #0 add r0, #0x9c str r7, [r0] @@ -608,7 +608,7 @@ MOD27_02254CC8: ; 0x02254CC8 add r4, #0x3c _02254CE8: add r0, r4, #0 - bl FUN_0201901C + bl InitWindow ldrh r0, [r5, #2] add r1, r4, #0 mov r2, #6 @@ -834,7 +834,7 @@ MOD27_02254EAC: ; 0x02254EAC mov r1, #4 add r3, r2, #0 add r5, r0, #0 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r4, #0 beq _02254EE0 lsl r0, r4, #0x10 @@ -846,7 +846,7 @@ MOD27_02254EAC: ; 0x02254EAC add r0, r5, #0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect _02254EE0: add r0, r5, #0 bl FUN_02019548 diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s index fcd3cbc9..6a1e0245 100644 --- a/arm9/modules/36/asm/module_36.s +++ b/arm9/modules/36/asm/module_36.s @@ -1108,7 +1108,7 @@ MOD36_0225503C: ; 0x0225503C add r0, r4, #0 add r0, #0x48 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer _02255082: add r0, r4, #0 add r0, #0x48 @@ -1205,7 +1205,7 @@ MOD36_0225510C: ; 0x0225510C mov r1, #1 lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r1, [r4, #0x54] lsl r0, r5, #5 add r0, r1, r0 @@ -1298,7 +1298,7 @@ MOD36_022551E0: ; 0x022551E0 add r0, r4, #0 add r0, #0x48 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0x48 add r0, r4, #0 bl FUN_02019548 diff --git a/arm9/modules/38/asm/module_38.s b/arm9/modules/38/asm/module_38.s index e1d888d4..89e7ff79 100644 --- a/arm9/modules/38/asm/module_38.s +++ b/arm9/modules/38/asm/module_38.s @@ -1046,7 +1046,7 @@ MOD38_0225500C: ; 0x0225500C add r0, r4, #0 mov r1, #4 add r6, r2, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #0x12 bne _02255036 add r0, r5, #0 @@ -1106,7 +1106,7 @@ MOD38_02255084: ; 0x02255084 add r0, r4, #0 mov r1, #4 add r6, r2, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r2, r5, #0 add r0, #0xb8 diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s index 89b23259..fd20dc17 100644 --- a/arm9/modules/43/asm/module_43.s +++ b/arm9/modules/43/asm/module_43.s @@ -654,7 +654,7 @@ MOD43_02254CD0: ; 0x02254CD0 bl FUN_02019064 add r0, sp, #0x14 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff diff --git a/arm9/modules/47/asm/module_47.s b/arm9/modules/47/asm/module_47.s index abb1ea34..3ec4768c 100644 --- a/arm9/modules/47/asm/module_47.s +++ b/arm9/modules/47/asm/module_47.s @@ -1162,7 +1162,7 @@ MOD47_022550FC: ; 0x022550FC add r4, r0, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x58] ldr r2, [r4, #0x5c] mov r1, #0 @@ -1225,7 +1225,7 @@ MOD47_02255184: ; 0x02255184 add r4, r0, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x58] ldr r2, [r4, #0x5c] mov r1, #1 @@ -1265,7 +1265,7 @@ MOD47_022551D8: ; 0x022551D8 add r4, r0, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x58] ldr r2, [r4, #0x5c] mov r1, #2 @@ -1322,7 +1322,7 @@ MOD47_02255250: ; 0x02255250 add r4, r0, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x58] ldr r2, [r4, #0x5c] mov r1, #2 @@ -1386,7 +1386,7 @@ MOD47_022552D8: ; 0x022552D8 add r7, r1, #0 add r0, #0x20 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x58] ldr r2, [r5, #0x5c] mov r1, #5 diff --git a/arm9/modules/49/asm/module_49.s b/arm9/modules/49/asm/module_49.s index bce289da..1de7ea96 100644 --- a/arm9/modules/49/asm/module_49.s +++ b/arm9/modules/49/asm/module_49.s @@ -421,7 +421,7 @@ MOD49_02254AD4: ; 0x02254AD4 bl FUN_02019064 add r0, sp, #0x1c mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, sp, #0x1c bl FUN_02019270 ldr r1, _02254BD4 ; =0x00000197 diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s index 60bdd016..aa0549bd 100644 --- a/arm9/modules/51/asm/module_51.s +++ b/arm9/modules/51/asm/module_51.s @@ -165,7 +165,7 @@ _02254960: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram ldr r0, [sp, #0x18] @@ -193,7 +193,7 @@ _02254960: add r0, r5, #0 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x10 bl CopyWindowToVram @@ -221,7 +221,7 @@ _02254960: add r0, r5, #0 add r0, #0x20 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x20 bl CopyWindowToVram @@ -792,20 +792,20 @@ MOD51_02254E48: ; 0x02254E48 add r7, r5, r0 add r0, r7, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x76 lsl r0, r0, #2 add r0, r5, r0 str r0, [sp, #0x1c] add r0, r0, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7a lsl r0, r0, #2 add r5, r5, r0 add r0, r5, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 str r0, [sp] mov r0, #0xff diff --git a/arm9/modules/52/include/module_52.h b/arm9/modules/52/include/module_52.h index 0adedc62..d997f1a6 100644 --- a/arm9/modules/52/include/module_52.h +++ b/arm9/modules/52/include/module_52.h @@ -17,20 +17,20 @@ extern const struct Unk21DBE18 MOD52_021D76E8; extern const struct Unk21DBE18 MOD52_021D76D8; extern const struct Unk21DBE18 MOD52_021D76C8; -THUMB_FUNC BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC BOOL MOD52_021D74F8(struct UnkStruct_02006234 *param0, u32 *unused); -THUMB_FUNC BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D74F8(struct UnkStruct_02006234 *param0, u32 *unused); +BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC BOOL MOD52_021D7540(struct UnkStruct_02006234 *param0, u32 *unused); -THUMB_FUNC BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D7540(struct UnkStruct_02006234 *param0, u32 *unused); +BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC BOOL MOD52_021D7594(struct UnkStruct_02006234 *param0, u32 *unused); -THUMB_FUNC BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2); +BOOL MOD52_021D7594(struct UnkStruct_02006234 *param0, u32 *unused); +BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2); -THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid); -THUMB_FUNC void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2); -THUMB_FUNC void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2); +void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid); +void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2); +void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2); #endif // POKEDIAMOND_MODULE_52_H
\ No newline at end of file diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index b4fd4d80..f49ce02c 100644 --- a/arm9/modules/53/asm/module_53.s +++ b/arm9/modules/53/asm/module_53.s @@ -1325,7 +1325,7 @@ MOD53_021D7FDC: ; 0x021D7FDC lsl r0, r0, #2 add r0, r7, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 str r0, [sp] mov r0, #0x1e @@ -1346,7 +1346,7 @@ MOD53_021D7FDC: ; 0x021D7FDC lsl r0, r0, #2 add r0, r7, r0 mov r1, #2 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x15 str r0, [sp] mov r0, #6 @@ -1368,7 +1368,7 @@ MOD53_021D7FDC: ; 0x021D7FDC lsl r0, r0, #2 add r0, r7, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r7, #0x28] mov r0, #1 mov r2, #0 @@ -1415,7 +1415,7 @@ _021D80A8: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x14] add r6, #0x14 add r0, r0, #1 @@ -2915,7 +2915,7 @@ _021D8C9C: mov r1, ip lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_02019658 + bl BlitBitmapRectToWindow add sp, #0x1c pop {r4, r5, r6, r7, pc} thumb_func_end MOD53_021D8C58 @@ -3429,7 +3429,7 @@ _021D906C: add r0, r4, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r6, r6, #1 add r4, #0x10 cmp r6, #5 @@ -3633,7 +3633,7 @@ MOD53_021D91C8: ; 0x021D91C8 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xb6 lsl r0, r0, #2 add r0, r5, r0 diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 904d1c7f..1131a268 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -1081,7 +1081,7 @@ MOD54_021D7DB4: ; 0x021D7DB4 lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -1103,7 +1103,7 @@ MOD54_021D7DB4: ; 0x021D7DB4 lsl r0, r0, #2 add r0, r4, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] mov r0, #0x1a @@ -1148,7 +1148,7 @@ MOD54_021D7DB4: ; 0x021D7DB4 lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xa6 lsl r0, r0, #2 ldr r2, _021D7E94 ; =0x00010300 @@ -1176,7 +1176,7 @@ MOD54_021D7E98: ; 0x021D7E98 add r6, r0, #0 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #1 str r1, [sp] mov r0, #0x41 @@ -2787,7 +2787,7 @@ MOD54_021D8AF8: ; 0x021D8AF8 _021D8B18: add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r7, [sp, #0x14] mov r0, #0 str r0, [sp, #0x20] @@ -3013,7 +3013,7 @@ MOD54_021D8C90: ; 0x021D8C90 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xba lsl r0, r0, #2 add r0, r5, r0 diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index 0d96ce13..c221c2d0 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -1238,7 +1238,7 @@ _021D7F02: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r5, #0 add r2, #0xc0 ldr r0, [r5, #0x10] @@ -1305,7 +1305,7 @@ _021D7F86: bl FUN_02019064 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #2 bne _021D7FF4 ldr r0, [r5, #8] @@ -2618,7 +2618,7 @@ _021D89AE: add r7, r0, #0 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] mov r0, #0xff @@ -2775,7 +2775,7 @@ _021D8AEE: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r5, #0 add r2, #0xc0 ldr r0, [r5, #0x10] @@ -2834,7 +2834,7 @@ _021D8B6C: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r5, #0 add r2, #0xd0 ldr r0, [r5, #0x10] @@ -2917,7 +2917,7 @@ _021D8C02: bl FUN_02019064 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl FUN_02019220 add r6, r6, #1 @@ -3213,7 +3213,7 @@ MOD55_021D8E6C: ; 0x021D8E6C stmia r2!, {r0, r1} add r0, r7, #0 mov r1, #0x34 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r4, _021D8FD0 ; =0x021DA3D8 str r0, [r5, #0x14] mov r6, #0 @@ -3222,7 +3222,7 @@ _021D8EB6: ldr r1, [r5, #0x10] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #4 @@ -3241,7 +3241,7 @@ _021D8ECC: stmia r2!, {r0, r1} add r0, r7, #0 mov r1, #0x34 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r4, _021D8FD8 ; =0x021DA438 str r0, [r5, #0x14] mov r6, #0 @@ -3250,7 +3250,7 @@ _021D8EEE: ldr r1, [r5, #0x10] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #4 @@ -3306,7 +3306,7 @@ _021D8F1A: add r0, sp, #0x1c add r2, r1, #0 mov r3, #0x34 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0xea lsl r1, r1, #2 str r0, [r5, r1] @@ -3374,7 +3374,7 @@ _021D9002: mov r0, #0xea lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput ldr r1, _021D90D0 ; =0x00000418 add r4, r0, #0 add r0, r1, #0 @@ -3382,7 +3382,7 @@ _021D9002: ldrh r7, [r5, r1] ldr r0, [r5, r0] add r1, r5, r1 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId ldr r0, _021D90D0 ; =0x00000418 ldrh r0, [r5, r0] cmp r7, r0 @@ -3458,9 +3458,9 @@ _021D9098: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r5, #0x14] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r6, #0 add sp, #0xc pop {r4, r5, r6, r7, pc} @@ -3605,7 +3605,7 @@ _021D91D6: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #8] bl Sav2_PlayerData_GetProfileAddr add r2, r0, #0 @@ -3677,7 +3677,7 @@ _021D9278: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 mov r0, #0 eor r1, r4 @@ -3781,7 +3781,7 @@ _021D9338: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r1, r5, #0 add r1, #0xbc mov r0, #0 @@ -4164,7 +4164,7 @@ _021D969A: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x34 bl PlayerProfile_new str r0, [sp, #0x20] @@ -4243,7 +4243,7 @@ _021D974E: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0xc] ldr r2, [sp, #0x20] mov r1, #0 @@ -4382,7 +4382,7 @@ _021D987C: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r4, #0 add r2, #0xc4 ldr r0, [r4, #0x10] @@ -5397,7 +5397,7 @@ _021DA0D0: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xce lsl r0, r0, #2 ldr r2, _021DA158 ; =0x000001E2 @@ -5478,7 +5478,7 @@ _021DA17C: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xce lsl r0, r0, #2 ldr r2, _021DA210 ; =0x000001E2 diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index d1046c7b..8626dac2 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -1342,7 +1342,7 @@ _022128CE: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r2, #0x16 add r0, #0xcc @@ -1450,14 +1450,14 @@ _022129D8: beq _022129EA mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu _022129EA: add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] cmp r0, #0 beq _02212A00 - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 mov r1, #0 add r0, #0xb0 @@ -2479,7 +2479,7 @@ MOD56_02213194: ; 0x02213194 mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r6, #0 mov r1, #0 add r0, #0xb4 @@ -2487,7 +2487,7 @@ MOD56_02213194: ; 0x02213194 add r0, r6, #0 add r0, #0xb0 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r6, #0 mov r1, #0 add r0, #0xb0 @@ -2786,7 +2786,7 @@ _0221344C: lsl r0, r0, #2 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -3021,7 +3021,7 @@ MOD56_02213624: ; 0x02213624 add r5, r1, #0 mov r1, #0x13 add r7, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 ldr r6, _02213750 ; =0x00010200 cmp r5, #0x20 @@ -3462,7 +3462,7 @@ _02213944: ldr r0, [r0] ldr r1, [r5, r7] sub r2, r2, #1 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r6, r6, #1 _0221395C: add r4, r4, #1 @@ -3476,7 +3476,7 @@ _0221395C: ldr r1, [r1] mov r2, #0x1b mov r3, #0x20 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r5, #0 add r0, #0xb0 add r5, #0xcc @@ -3485,7 +3485,7 @@ _0221395C: ldr r0, [r0] ldr r1, [r5] sub r3, #0x30 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -3498,7 +3498,7 @@ MOD56_02213990: ; 0x02213990 add r5, r0, #0 mov r0, #0x22 mov r1, #0x36 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xb0 str r0, [r1] @@ -3567,7 +3567,7 @@ _022139D0: add r2, r1, #0 mov r3, #0x36 str r5, [sp, #0x30] - bl FUN_020010A8 + bl ListMenuInit add r5, #0xb4 str r0, [r5] add sp, #0x34 @@ -3675,7 +3675,7 @@ _02213AF0: mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 mov r1, #0 add r0, #0xb4 @@ -3683,7 +3683,7 @@ _02213AF0: add r0, r5, #0 add r0, #0xb0 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 mov r1, #0 add r0, #0xb0 @@ -3712,7 +3712,7 @@ _02213B2C: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 mov r2, #0x16 add r0, #0xcc @@ -3808,13 +3808,13 @@ _02213C24: add r0, r5, #0 add r0, #0xb0 ldr r0, [r0] - bl ListMenu_DestroyMenuStrings + bl ListMenuItems_DestroyMenuStrings add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] mov r1, #2 add r2, r4, #2 - bl FUN_02001538 + bl ListMenuSetTemplateField cmp r4, #3 ble _02213C50 add r0, r5, #0 @@ -3822,7 +3822,7 @@ _02213C24: ldr r0, [r0] mov r1, #3 mov r2, #5 - bl FUN_02001538 + bl ListMenuSetTemplateField b _02213C5E _02213C50: add r0, r5, #0 @@ -3830,7 +3830,7 @@ _02213C50: ldr r0, [r0] mov r1, #3 add r2, r4, #2 - bl FUN_02001538 + bl ListMenuSetTemplateField _02213C5E: add r0, r5, #0 bl MOD56_02213938 @@ -3840,7 +3840,7 @@ _02213C5E: ldr r0, [r0] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow cmp r4, #3 blt _02213C84 add r0, sp, #0xc @@ -3860,11 +3860,11 @@ _02213C84: ldrh r2, [r3, #2] ldrh r3, [r3] ldr r0, [r0] - bl FUN_020013C8 + bl ListMenuTestInput add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] - bl FUN_02001328 + bl RedrawListMenu str r4, [r5, #8] _02213CA8: add r0, r5, #0 @@ -3873,7 +3873,7 @@ _02213CA8: ldr r0, [r0] add r1, #2 add r2, sp, #0xc - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0xc ldr r1, [r5, #8] ldrh r3, [r0] @@ -3913,11 +3913,11 @@ _02213CF0: str r1, [sp, #8] add r0, #0xb4 ldr r0, [r0] - bl FUN_020013C8 + bl ListMenuTestInput add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] - bl FUN_02001328 + bl RedrawListMenu _02213D0C: add r1, sp, #0xc ldrh r1, [r1, #2] @@ -4099,7 +4099,7 @@ _02213E5C: mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 mov r1, #0 add r0, #0xb4 @@ -4107,7 +4107,7 @@ _02213E5C: add r0, r5, #0 add r0, #0xb0 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 mov r1, #0 add r0, #0xb0 @@ -4139,7 +4139,7 @@ _02213ECE: add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 _02213EE8: mov r0, #1 @@ -5059,7 +5059,7 @@ MOD56_022145D4: ; 0x022145D4 stmia r2!, {r0, r1} mov r0, #4 mov r1, #0x36 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xb8 ldr r4, _022146C4 ; =0x02216480 @@ -5074,7 +5074,7 @@ _02214602: ldr r1, [r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, #4 @@ -5134,7 +5134,7 @@ _02214642: add r0, sp, #0x14 mov r1, #0 mov r3, #0x36 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0 add r1, #0xbc str r0, [r1] @@ -5180,7 +5180,7 @@ _022146EE: add r0, r5, #0 add r0, #0xbc ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD56_02213BF4 @@ -5257,11 +5257,11 @@ _0221476E: ldr r0, [r0] mov r1, #0 add r2, r5, r2 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 add r0, #0xb8 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 add r1, r4, #0 bl MOD56_02214808 @@ -5298,10 +5298,10 @@ _022147CE: ldr r0, [r0] mov r1, #0 add r2, r5, r2 - bl FUN_02001300 + bl DestroyListMenu add r5, #0xb8 ldr r0, [r5] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r6, #0 pop {r3, r4, r5, r6, r7, pc} nop @@ -5338,7 +5338,7 @@ _02214820: stmia r2!, {r0, r1} add r0, r7, #0 mov r1, #0x36 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xb8 mov r6, #0 @@ -5354,7 +5354,7 @@ _0221484C: ldr r1, [r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, r7 @@ -5425,7 +5425,7 @@ _0221488C: ldrh r2, [r2, r3] mov r1, #0 mov r3, #0x36 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0 add r1, #0xbc str r0, [r1] @@ -5463,7 +5463,7 @@ _0221493C: add r0, r5, #0 add r0, #0xbc ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 add r0, r5, #0 bl MOD56_02213BF4 @@ -5521,10 +5521,10 @@ _02214994: lsl r3, r3, #1 mov r1, #0 add r2, r2, r3 - bl FUN_02001300 + bl DestroyListMenu add r5, #0xb8 ldr r0, [r5] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r6, #0 pop {r4, r5, r6, pc} nop @@ -5554,7 +5554,7 @@ MOD56_022149D8: ; 0x022149D8 add r0, #0xb4 ldr r0, [r0] add r1, sp, #0x28 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0x28 ldrh r0, [r0] add r0, r5, r0 @@ -5585,7 +5585,7 @@ MOD56_022149D8: ; 0x022149D8 lsr r0, r0, #0x10 str r0, [sp, #0x1c] mov r0, #3 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xb8 str r0, [r1] @@ -5630,7 +5630,7 @@ _02214A7E: ldr r1, [r1] ldr r3, [r4, #4] mov r2, #0x1a - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _02214ADC _02214A9E: ldrh r0, [r7, #0x16] @@ -5652,7 +5652,7 @@ _02214AB2: ldr r1, [r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _02214ADC _02214AC8: add r0, r5, #0 @@ -5663,7 +5663,7 @@ _02214AC8: ldr r1, [r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _02214ADC: ldr r0, [sp, #0x24] add r4, #8 @@ -5717,7 +5717,7 @@ _02214ADC: add r0, sp, #0x2c add r2, r1, #0 mov r3, #0x36 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0 add r1, #0xbc str r0, [r1] @@ -5837,7 +5837,7 @@ _02214C1E: add r0, r4, #0 add r0, #0xbc ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r5, r0, #0 add r0, r4, #0 bl MOD56_02213BF4 @@ -5878,7 +5878,7 @@ _02214C66: add r0, #0xb4 ldr r0, [r0] add r1, sp, #0xc - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0xc ldrh r0, [r0] add r0, r4, r0 @@ -6074,10 +6074,10 @@ _02214DEC: mov r1, #0 ldr r0, [r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu add r4, #0xb8 ldr r0, [r4] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, [sp] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} @@ -7019,12 +7019,12 @@ _02215532: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0xb4 ldr r0, [r0] add r1, sp, #0x14 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0x14 ldrh r0, [r0] add r0, r5, r0 @@ -7569,7 +7569,7 @@ MOD56_022159B0: ; 0x022159B0 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 mov r2, #0x16 add r0, #0xcc @@ -8272,7 +8272,7 @@ _02215F82: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xcf lsl r0, r0, #2 ldr r2, _02215FF0 ; =0x000001E2 @@ -8388,7 +8388,7 @@ _02216048: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xdb lsl r0, r0, #2 ldr r2, _022160E0 ; =0x000001D9 diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s index 39e977cc..463396ab 100644 --- a/arm9/modules/57/asm/module_57.s +++ b/arm9/modules/57/asm/module_57.s @@ -2689,7 +2689,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r2, r1, #0 add r3, r1, #0 add r7, r0, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0x88 str r0, [sp] @@ -2699,7 +2699,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x10 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0x88 str r0, [sp] @@ -2709,7 +2709,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x20 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0x88 str r0, [sp] @@ -2719,7 +2719,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x30 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0x88 str r0, [sp] @@ -2729,7 +2729,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x40 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -2739,7 +2739,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x50 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -2749,7 +2749,7 @@ MOD57_021D89F0: ; 0x021D89F0 add r0, #0x60 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _021D8CEC ; =0x0000022D mov r0, #0 mov r1, #0x1a @@ -3042,7 +3042,7 @@ MOD57_021D8CF8: ; 0x021D8CF8 add r0, #0x70 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -3052,7 +3052,7 @@ MOD57_021D8CF8: ; 0x021D8CF8 add r0, #0x80 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -3062,7 +3062,7 @@ MOD57_021D8CF8: ; 0x021D8CF8 add r0, #0x90 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #0xe0 str r0, [sp] @@ -3072,7 +3072,7 @@ MOD57_021D8CF8: ; 0x021D8CF8 add r0, #0xa0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _021D8FAC ; =0x0000022D mov r0, #0 mov r1, #0x1a @@ -3455,7 +3455,7 @@ _021D906E: add r0, #0x50 mov r2, #0xb8 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r2, _021D913C ; =0x0000022D mov r0, #0 mov r1, #0x1a @@ -3558,7 +3558,7 @@ _021D9164: mov r1, #0 mov r2, #0xcd add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r4, #0 bl CopyWindowToVram add sp, #0x10 diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s index 93c1c39d..7f3bd998 100644 --- a/arm9/modules/58/asm/module_58.s +++ b/arm9/modules/58/asm/module_58.s @@ -1077,7 +1077,7 @@ MOD58_021DA30C: ; 0x021DA30C lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #9 str r0, [sp] mov r0, #0x18 @@ -1097,7 +1097,7 @@ MOD58_021DA30C: ; 0x021DA30C lsl r0, r0, #2 add r0, r5, r0 mov r1, #2 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x15 str r0, [sp] mov r0, #8 @@ -1118,7 +1118,7 @@ MOD58_021DA30C: ; 0x021DA30C lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _021DA4BC ; =0x000E0702 mov r2, #1 str r0, [sp] @@ -1189,7 +1189,7 @@ _021DA3C2: lsl r0, r0, #2 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r3, #0xe0 @@ -1234,7 +1234,7 @@ _021DA46A: bl FUN_02019064 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x14] add r7, #0x14 add r0, r0, #1 @@ -1646,7 +1646,7 @@ _021DA7A4: lsl r0, r0, #2 add r0, r5, r0 mov r1, #2 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xb1 lsl r0, r0, #2 add r0, r5, r0 @@ -1780,7 +1780,7 @@ _021DA888: mov r1, ip lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_02019658 + bl BlitBitmapRectToWindow add sp, #0x1c pop {r4, r5, r6, r7, pc} thumb_func_end MOD58_021DA844 @@ -2217,7 +2217,7 @@ MOD58_021DAB94: ; 0x021DAB94 lsl r0, r0, #2 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xb5 lsl r0, r0, #2 add r0, r5, r0 diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index c86d2c94..a928881a 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -883,7 +883,7 @@ _021D7C5E: add r0, #0x1c mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0 ldr r2, _021D7D60 ; =0x000003E2 add r0, #0x1c @@ -1051,7 +1051,7 @@ _021D7DC4: bl FUN_02019150 ldr r1, [r5] add r0, r6, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r7, #0 str r0, [r5, #0x44] cmp r6, #0 @@ -1061,7 +1061,7 @@ _021D7DDE: ldr r1, [r5, #0x4c] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r7, r7, #1 add r4, #8 cmp r7, r6 @@ -1096,7 +1096,7 @@ _021D7DF2: lsl r3, r3, #0x18 add r2, r1, #0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit str r0, [r5, #0x40] ldr r0, [sp, #0x10] ldr r2, _021D7EC4 ; =0x000003D9 @@ -1111,7 +1111,7 @@ _021D7DF2: b _021D7E96 _021D7E4C: ldr r0, [r5, #0x40] - bl FUN_02001204 + bl ListMenu_ProcessInput mov r1, #0 mvn r1, r1 str r0, [r5, #0x48] @@ -1133,9 +1133,9 @@ _021D7E66: mov r1, #0 ldr r0, [r5, #0x40] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, [r5, #0x44] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _021D7EC8 ; =0x000005DC bl FUN_020054C8 mov r0, #0 @@ -1234,7 +1234,7 @@ _021D7EFA: add r0, #0x1c add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r1, r5, #0 str r1, [sp] ldr r0, _021D8048 ; =0x00010200 @@ -1273,7 +1273,7 @@ _021D7F7C: add r0, #0x1c add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r1, r5, #0 str r1, [sp] ldr r0, _021D804C ; =0x000F0200 diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s index 6d2d6e6b..370d58b1 100644 --- a/arm9/modules/59/asm/mod59_021D9868.s +++ b/arm9/modules/59/asm/mod59_021D9868.s @@ -536,7 +536,7 @@ _021D9C9A: add r0, #0x10 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r5, #0 add r1, r6, #0 add r2, r0, #0 diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s index 418fa446..fa7752a8 100644 --- a/arm9/modules/60/asm/module_60.s +++ b/arm9/modules/60/asm/module_60.s @@ -922,15 +922,15 @@ MOD60_021D7BA4: ; 0x021D7BA4 add r0, r4, #0 add r0, #0x2c mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x3c mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x4c mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x4c bl FUN_020192B8 @@ -980,7 +980,7 @@ _021D7CF0: bl FUN_02019570 add r0, r5, r4 add r1, r7, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 bl FUN_020192B8 add r0, r5, r4 @@ -1209,7 +1209,7 @@ MOD60_021D7EA4: ; 0x021D7EA4 mov r1, #0xff lsr r2, r2, #0x10 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [sp, #0x14] cmp r0, #5 bne _021D7F26 diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index 3afc1e03..54af7ce1 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -305,7 +305,7 @@ _021D7702: add r0, r5, #0 add r0, #0x94 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r5] mov r0, #0x4c bl String_ctor @@ -432,7 +432,7 @@ _021D77F2: add r0, r5, #0 add r0, #0x94 mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r5] mov r0, #0x4c bl String_ctor @@ -1484,7 +1484,7 @@ MOD61_021D7FF4: ; 0x021D7FF4 _021D80BE: add r0, r5, #0 add r1, r6, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r4, #5 bge _021D80D0 add r0, r5, #0 diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index d65fb117..f1eb2a70 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -1152,7 +1152,7 @@ MOD62_0222DE00: ; 0x0222DE00 bl NewString_ReadMsgData str r0, [sp, #0x18] add r0, sp, #0x1c - bl FUN_0201901C + bl InitWindow mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1936,7 +1936,7 @@ _0222E442: add r0, r4, r0 asr r7, r0, #1 ldr r0, [sp, #0x18] - bl FUN_0201901C + bl InitWindow lsl r0, r5, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -1957,7 +1957,7 @@ _0222E442: bl FUN_02019064 add r0, r7, #0 mov r1, #0x35 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r2, #0x67 ldr r1, [sp, #0x1c] lsl r2, r2, #2 @@ -1990,7 +1990,7 @@ _0222E49A: ldr r0, [r1, r0] ldr r2, [r2, #4] add r1, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r4, #0 bl String_dtor add r6, r6, #1 @@ -3251,7 +3251,7 @@ MOD62_0222EE78: ; 0x0222EE78 cmp r5, r1 bne _0222EE96 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl CopyWindowToVram add sp, #0xc @@ -3268,7 +3268,7 @@ _0222EE96: add r5, r0, #0 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -3298,7 +3298,7 @@ MOD62_0222EEE0: ; 0x0222EEE0 add r0, r5, #0 add r4, r2, #0 add r6, r3, #0 - bl FUN_0201901C + bl InitWindow ldr r0, [sp, #0x28] lsl r2, r4, #0x18 lsl r0, r0, #0x18 @@ -3331,7 +3331,7 @@ MOD62_0222EEE0: ; 0x0222EEE0 bl FUN_0200D0BC add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram add sp, #0x14 @@ -3347,7 +3347,7 @@ MOD62_0222EF44: ; 0x0222EF44 add r0, r5, #0 add r4, r2, #0 add r6, r3, #0 - bl FUN_0201901C + bl InitWindow ldr r0, [sp, #0x28] lsl r2, r4, #0x18 lsl r0, r0, #0x18 @@ -3377,7 +3377,7 @@ MOD62_0222EF44: ; 0x0222EF44 bl FUN_02019064 add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram add sp, #0x14 @@ -3552,14 +3552,14 @@ _0222F0E2: bne _0222F0FE add r0, r5, #0 mov r1, #0xee - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram b _0222F152 _0222F0FE: add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x64 mov r1, #0x35 bl String_ctor @@ -3621,7 +3621,7 @@ MOD62_0222F168: ; 0x0222F168 bne _0222F194 add r0, r5, r4 mov r1, #0xee - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 bl CopyWindowToVram add sp, #0x14 @@ -3629,7 +3629,7 @@ MOD62_0222F168: ; 0x0222F168 _0222F194: add r0, r5, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x64 mov r1, #0x35 bl String_ctor @@ -3693,7 +3693,7 @@ MOD62_0222F208: ; 0x0222F208 cmp r5, r1 bne _0222F226 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl CopyWindowToVram add sp, #0xc @@ -3710,7 +3710,7 @@ _0222F226: add r5, r0, #0 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -4612,7 +4612,7 @@ MOD62_0222F904: ; 0x0222F904 mov r0, #0x67 lsl r0, r0, #2 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r4, #0xfc add r0, r4, #0 bl FUN_02019178 diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s index a323b642..11daacd0 100644 --- a/arm9/modules/63/asm/mod63_021D74E0.s +++ b/arm9/modules/63/asm/mod63_021D74E0.s @@ -2064,7 +2064,7 @@ _021D844C: add r0, #0xac add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add r0, r7, #0 mov r1, #0 add r2, r4, #0 diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index 0ade6b6c..ce90e965 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -653,14 +653,14 @@ MOD64_021D7A54: ; 0x021D7A54 add r5, r0, #0 add r0, r4, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r1, r5, #0 add r1, #0x98 str r0, [r1] add r0, r5, #0 add r0, #0x98 ldr r0, [r0] - bl FUN_0201901C + bl InitWindow mov r0, #0x13 str r0, [sp] mov r0, #0x17 @@ -683,7 +683,7 @@ MOD64_021D7A54: ; 0x021D7A54 add r0, #0x98 ldr r0, [r0] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _021D7AE8 ; =0x000006A8 mov r1, #1 ldr r0, [r5, r0] @@ -2318,7 +2318,7 @@ _021D86F8: add r6, r0, #0 add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x2c] str r3, [sp] @@ -2375,7 +2375,7 @@ _021D8770: str r0, [r4] add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 ldr r0, [sp, #0x2c] str r3, [sp] @@ -3393,14 +3393,14 @@ MOD64_021D8EF4: ; 0x021D8EF4 _021D8F16: ldr r0, [sp, #0x18] mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows add r1, r5, #0 add r1, #0x9c str r0, [r1] add r0, r5, #0 add r0, #0x9c ldr r0, [r0] - bl FUN_0201901C + bl InitWindow cmp r4, #0 beq _021D8F3C cmp r4, #1 @@ -3511,7 +3511,7 @@ _021D8FEC: lsl r1, r1, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index 229a9214..b3f219dc 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -335,7 +335,7 @@ _021D7762: add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 b _021D7796 _021D7784: @@ -425,7 +425,7 @@ MOD65_021D7818: ; 0x021D7818 add r5, r0, #0 add r0, #0xc8 ldr r0, [r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 ldr r0, _021D78A4 ; =gMain ldr r1, [r0, #0x48] @@ -998,7 +998,7 @@ _021D7C68: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r4, #8 add r5, #0x10 @@ -1404,7 +1404,7 @@ _021D7FCA: add r0, r5, r0 mov r1, #0xff add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #1 bl FUN_02002B60 mov r0, #0 @@ -1542,7 +1542,7 @@ MOD65_021D80C8: ; 0x021D80C8 strb r0, [r5, #0x1c] ldrb r0, [r5, #0x1c] ldr r1, [r5] - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xcc str r0, [r1] @@ -1585,7 +1585,7 @@ _021D80EE: ldrb r2, [r6, #5] ldr r0, [r0] ldr r1, [r5, #0x34] - bl ListMenu_AddItem + bl ListMenuItems_AddItem cmp r4, #0xff bne _021D80EE _021D8142: @@ -1594,7 +1594,7 @@ _021D8142: ldr r0, [r0] ldr r1, [r5, #0x38] mov r2, #0xff - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r1, r5, #0 ldr r0, _021D8210 ; =0x021DA2E0 add r1, #0x84 @@ -1684,7 +1684,7 @@ _021D81C0: ldrh r2, [r2] add r0, #0x84 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit add r1, r5, #0 add r1, #0xc4 str r0, [r1] @@ -1711,7 +1711,7 @@ MOD65_021D8214: ; 0x021D8214 add r0, #0xe8 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r4, #0 beq _021D823E add r0, r5, #0 @@ -1725,11 +1725,11 @@ _021D823E: ldr r0, [r0] add r1, #0x80 add r2, #0x82 - bl FUN_02001300 + bl DestroyListMenu add r0, r5, #0 add r0, #0xcc ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 add r0, #0x80 ldrh r1, [r0] @@ -1792,7 +1792,7 @@ _021D82A2: mov r1, #1 mov r2, #2 mov r3, #0 - bl FUN_0201A8C8 + bl ScrollWindow b _021D8392 _021D82D2: mov r0, #0x1e @@ -1812,7 +1812,7 @@ _021D82D2: mov r1, #0 mov r2, #4 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow mov r0, #1 strh r0, [r4, #0x14] b _021D8392 @@ -1834,7 +1834,7 @@ _021D8302: mov r1, #1 mov r2, #2 mov r3, #0 - bl FUN_0201A8C8 + bl ScrollWindow mov r0, #0 strh r0, [r4, #0x14] b _021D8392 @@ -1856,7 +1856,7 @@ _021D8330: mov r1, #0 mov r2, #2 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow mov r0, #1 strh r0, [r4, #0x14] b _021D8392 @@ -1881,7 +1881,7 @@ _021D835E: mov r1, #0 mov r2, #2 add r3, r1, #0 - bl FUN_0201A8C8 + bl ScrollWindow mov r0, #0 strh r0, [r4, #0x14] _021D8392: @@ -1953,7 +1953,7 @@ _021D83D2: mov r1, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldrb r1, [r4, #0x1b] cmp r1, #5 bne _021D8434 @@ -2057,11 +2057,11 @@ _021D84E0: .word 0x00000001 thumb_func_start MOD65_021D84E4 MOD65_021D84E4: ; 0x021D84E4 - ldr r3, _021D84EC ; =FUN_02001470 + ldr r3, _021D84EC ; =ListMenuGetTemplateField mov r1, #0x13 bx r3 nop -_021D84EC: .word FUN_02001470 +_021D84EC: .word ListMenuGetTemplateField thumb_func_end MOD65_021D84E4 thumb_func_start MOD65_021D84F0 @@ -2072,7 +2072,7 @@ MOD65_021D84F0: ; 0x021D84F0 mov r1, #0x13 add r7, r0, #0 add r6, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 cmp r6, #0 bne _021D850C @@ -2083,7 +2083,7 @@ _021D850C: add r0, r7, #0 add r1, #2 add r2, sp, #0x10 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r2, sp, #0x10 ldrh r2, [r2] mov r0, #7 @@ -2140,7 +2140,7 @@ _021D8578: add r0, #0xf8 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect cmp r5, #0xff bne _021D85B4 add r0, r4, #0 @@ -2223,7 +2223,7 @@ MOD65_021D8634: ; 0x021D8634 add r5, r0, #0 ldr r1, [r5] mov r0, #3 - bl ListMenu_ctor + bl ListMenuItems_ctor add r1, r5, #0 add r1, #0xd0 str r0, [r1] @@ -2235,7 +2235,7 @@ _021D8648: ldr r1, [r5, #0x2c] add r2, r4, #1 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r4, #1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -2276,7 +2276,7 @@ _021D8648: add r0, #0xa4 add r2, r1, #0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit add r5, #0xc8 str r0, [r5] pop {r3, r4, r5, pc} @@ -2304,11 +2304,11 @@ MOD65_021D86BC: ; 0x021D86BC ldr r0, [r0] add r1, sp, #0 add r2, #2 - bl FUN_02001300 + bl DestroyListMenu add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 mov r1, #0 add r0, #0xc8 @@ -3269,7 +3269,7 @@ MOD65_021D8E68: ; 0x021D8E68 add r0, r4, #0 add r0, #0x6c mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x10] mov r1, #1 ldrb r0, [r0, #0xb] @@ -3842,7 +3842,7 @@ MOD65_021D92C4: ; 0x021D92C4 add r0, r4, #0 add r0, #0x6c mov r1, #0xff - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x20] bl StringSetEmpty mov r0, #1 diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s index e0b21bf2..0dda816f 100644 --- a/arm9/modules/66/asm/module_66.s +++ b/arm9/modules/66/asm/module_66.s @@ -1350,7 +1350,7 @@ _021D7F44: bl FUN_0200D6F8 add r0, r7, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] mov r0, #0xff @@ -1720,7 +1720,7 @@ MOD66_021D820C: ; 0x021D820C bl StringSetEmpty add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, #0xa0 ldr r0, [r6] cmp r0, #0 @@ -1801,7 +1801,7 @@ MOD66_021D82B8: ; 0x021D82B8 bne _021D82DC add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 bl CopyWindowToVram add r0, r6, #0 @@ -1811,7 +1811,7 @@ MOD66_021D82B8: ; 0x021D82B8 _021D82DC: add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldrh r1, [r4, #8] ldr r0, _021D8378 ; =0x0000FFFF cmp r1, r0 @@ -2044,7 +2044,7 @@ MOD66_021D8494: ; 0x021D8494 cmp r5, #0 beq _021D84C6 add r0, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl FUN_02019570 ldrb r1, [r4, #0x15] @@ -2104,7 +2104,7 @@ MOD66_021D84C8: ; 0x021D84C8 sub r4, r1, r0 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -2212,23 +2212,23 @@ MOD66_021D8554: ; 0x021D8554 add r0, r4, #0 add r0, #0x28 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x38 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x48 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x58 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x68 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x28 bl CopyWindowToVram diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index 4982fa30..f67a1817 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -327,7 +327,7 @@ MOD67_021D777C: ; 0x021D777C bl FUN_020178A0 mov r0, #0x2a add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD67_021D777C @@ -1122,10 +1122,10 @@ _021D7DAC: _021D7DB4: add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r1, r6, #0 add r2, r4, #0 diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s index 5c2c1740..ebb66d25 100644 --- a/arm9/modules/68/asm/module_68.s +++ b/arm9/modules/68/asm/module_68.s @@ -320,7 +320,7 @@ MOD68_021D7774: ; 0x021D7774 bl FUN_020178A0 mov r0, #0x24 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD68_021D7774 @@ -527,7 +527,7 @@ MOD68_021D7904: ; 0x021D7904 bl FUN_02002E14 add r7, r0, #0 add r0, r5, r4 - bl FUN_0201AB0C + bl GetWindowWidth add r3, r0, #0 mov r1, #0 lsl r3, r3, #3 @@ -555,7 +555,7 @@ MOD68_021D7958: ; 0x021D7958 add r4, r0, #0 add r0, r4, #4 mov r1, #4 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 ldr r3, _021D7974 ; =0x00010204 add r0, r4, #0 @@ -572,7 +572,7 @@ MOD68_021D7978: ; 0x021D7978 add r4, r0, #0 add r0, #0x24 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D7994 ; =0x000F0200 add r0, r4, #0 mov r1, #2 @@ -589,7 +589,7 @@ MOD68_021D7998: ; 0x021D7998 add r4, r0, #0 add r0, #0x34 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D79B4 ; =0x000F0200 add r0, r4, #0 mov r1, #3 @@ -606,7 +606,7 @@ MOD68_021D79B8: ; 0x021D79B8 add r4, r0, #0 add r0, #0x44 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D79D4 ; =0x000F0200 add r0, r4, #0 mov r1, #4 @@ -623,7 +623,7 @@ MOD68_021D79D8: ; 0x021D79D8 add r4, r0, #0 add r0, #0x54 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D79F4 ; =0x000F0200 add r0, r4, #0 mov r1, #5 @@ -640,7 +640,7 @@ MOD68_021D79F8: ; 0x021D79F8 add r4, r0, #0 add r0, #0x64 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r3, _021D7A14 ; =0x000F0200 add r0, r4, #0 mov r1, #6 @@ -660,7 +660,7 @@ MOD68_021D7A18: ; 0x021D7A18 add r4, #0x14 add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #5 str r0, [sp] add r0, r5, #0 @@ -752,7 +752,7 @@ MOD68_021D7AE4: ; 0x021D7AE4 add r5, #0xb4 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7e lsl r0, r0, #2 ldr r0, [r4, r0] @@ -790,7 +790,7 @@ MOD68_021D7B34: ; 0x021D7B34 add r5, #0x94 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0xc4 ldr r0, [r4] mov r1, #0xa @@ -826,7 +826,7 @@ MOD68_021D7B80: ; 0x021D7B80 add r5, #0xa4 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7f lsl r0, r0, #2 ldr r0, [r4, r0] @@ -871,7 +871,7 @@ MOD68_021D7BDC: ; 0x021D7BDC add r5, #0x74 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, #0xc4 ldr r0, [r4] mov r1, #8 @@ -907,7 +907,7 @@ MOD68_021D7C28: ; 0x021D7C28 add r6, #0x84 add r0, r6, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x7f lsl r0, r0, #2 ldr r0, [r5, r0] diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index 33fafb4f..d88f4eb8 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -793,7 +793,7 @@ MOD69_0222DBAC: ; 0x0222DBAC add r0, r4, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x14 bl FUN_02019548 @@ -2608,7 +2608,7 @@ _0222EAEA: _0222EB16: ldr r0, [r4, #0x10] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x10] bl FUN_02019548 ldr r0, [r4, #0x28] diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s index a0966fec..eb5ef973 100644 --- a/arm9/modules/70/asm/module_70.s +++ b/arm9/modules/70/asm/module_70.s @@ -1022,11 +1022,11 @@ MOD70_021D7CC0: ; 0x021D7CC0 add r4, r0, #0 add r0, #0x14 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x24 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x14 bl FUN_02019548 @@ -1102,7 +1102,7 @@ MOD70_021D7CE8: ; 0x021D7CE8 bl StringExpandPlaceholders add r0, r6, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r2, #0xff @@ -1136,7 +1136,7 @@ MOD70_021D7D98: ; 0x021D7D98 add r0, #0x24 mov r1, #0xf str r0, [sp, #0xc] - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x1c] cmp r0, #0 beq _021D7DC8 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index ac2559a6..d5c1ec6f 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -1750,7 +1750,7 @@ MOD71_0222E438: ; 0x0222E438 lsl r1, r1, #2 ldr r1, [r4, r1] mov r0, #0x1a - bl FUN_02016A8C + bl FreeToHeapExplicit mov r0, #0x61 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -2700,7 +2700,7 @@ MOD71_0222EC5C: ; 0x0222EC5C bl GetMonData add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x20] ldr r2, [sp, #8] str r0, [sp] @@ -2910,7 +2910,7 @@ _0222EE14: str r0, [sp, #0x30] add r0, r6, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x61 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -2985,7 +2985,7 @@ _0222EEA6: lsr r7, r0, #0x10 add r0, r6, r4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x14 mov r1, #0x1a bl String_ctor @@ -4313,7 +4313,7 @@ MOD71_0222F954: ; 0x0222F954 mov r0, #0xda lsl r0, r0, #6 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #1 mvn r0, r0 @@ -4383,10 +4383,10 @@ _0222F9E4: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _0222FA34 ; =0x0000367C ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 @@ -4412,7 +4412,7 @@ MOD71_0222FA38: ; 0x0222FA38 str r0, [sp] add r0, r0, #1 mov r1, #0x1a - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _0222FAD0 ; =0x0000367C str r0, [r5, r1] mov r0, #0x64 @@ -4438,7 +4438,7 @@ _0222FA60: add r1, r6, #0 ldr r0, [r5, r0] add r2, r4, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem _0222FA8A: add r4, r4, #1 cmp r4, #0x20 @@ -4450,7 +4450,7 @@ _0222FA8A: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0xd - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #0 bl String_dtor ldr r2, _0222FAD0 ; =0x0000367C @@ -4909,7 +4909,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 bl MOD71_02230F40 mov r0, #3 mov r1, #0x1a - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _0222FED8 ; =0x0000065C mov r2, #0x11 str r0, [r4, r1] @@ -4918,7 +4918,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 lsl r1, r1, #2 ldr r1, [r4, r1] mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222FED8 ; =0x0000065C mov r1, #0x61 lsl r1, r1, #2 @@ -4926,7 +4926,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 ldr r1, [r4, r1] mov r2, #0x12 mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222FED8 ; =0x0000065C mov r1, #0x61 lsl r1, r1, #2 @@ -4934,7 +4934,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 ldr r1, [r4, r1] mov r2, #0x13 mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222FED8 ; =0x0000065C ldr r1, [r4, r0] str r1, [sp, #0x10] @@ -5024,7 +5024,7 @@ _0222FF10: bl FUN_02001C5C ldr r0, _0223000C ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r1, _02230010 ; =MOD71_0222F538 ldr r0, _02230014 ; =0x00002214 add sp, #0x10 @@ -5063,7 +5063,7 @@ _0222FF64: bl FUN_02001C5C ldr r0, _0223000C ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r1, _0223001C ; =MOD71_02230020 ldr r0, _02230014 ; =0x00002214 str r1, [r4, r0] @@ -5100,7 +5100,7 @@ _0222FFB4: bl FUN_02001C5C ldr r0, _0223000C ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r1, _02230010 ; =MOD71_0222F538 ldr r0, _02230014 ; =0x00002214 str r1, [r4, r0] @@ -6155,7 +6155,7 @@ MOD71_02230810: ; 0x02230810 bl MOD71_02230F40 mov r0, #2 mov r1, #0x1a - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02230900 ; =0x0000065C mov r2, #0x11 str r0, [r4, r1] @@ -6164,7 +6164,7 @@ MOD71_02230810: ; 0x02230810 lsl r1, r1, #2 ldr r1, [r4, r1] mov r3, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02230900 ; =0x0000065C mov r1, #0x61 lsl r1, r1, #2 @@ -6172,7 +6172,7 @@ MOD71_02230810: ; 0x02230810 ldr r1, [r4, r1] mov r2, #0x13 mov r3, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02230900 ; =0x0000065C ldr r1, [r4, r0] sub r0, #0x94 @@ -6259,7 +6259,7 @@ _0223092E: bl FUN_02001C5C ldr r0, _022309E4 ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add sp, #0x10 mov r0, #3 pop {r4, pc} @@ -6295,7 +6295,7 @@ _02230982: bl FUN_02001C5C ldr r0, _022309E4 ; =0x0000065C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r1, _022309DC ; =MOD71_0222F538 ldr r0, _022309E0 ; =0x00002214 str r1, [r4, r0] @@ -6627,7 +6627,7 @@ MOD71_02230C48: ; 0x02230C48 bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #1 add r1, r5, #0 str r2, [sp] @@ -6646,7 +6646,7 @@ MOD71_02230C48: ; 0x02230C48 add r0, r5, #0 add r0, #0x10 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x15 str r0, [sp] mov r0, #5 @@ -6666,7 +6666,7 @@ MOD71_02230C48: ; 0x02230C48 add r0, r5, #0 add r0, #0x60 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 bl Options_GetFrame lsl r0, r0, #0x18 @@ -6706,7 +6706,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0xe @@ -6728,7 +6728,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -6750,7 +6750,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x11 str r0, [sp] mov r0, #0xb @@ -6771,7 +6771,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #6 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0xb @@ -6792,7 +6792,7 @@ MOD71_02230C48: ; 0x02230C48 lsl r0, r0, #4 add r0, r5, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r4, _02230E80 ; =0x022313F4 mov r7, #0 mov r6, #0x33 @@ -6824,7 +6824,7 @@ _02230DE2: ldr r0, [sp, #0x18] mov r1, #0 add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r6, #0x10 add r4, r4, #4 @@ -6861,7 +6861,7 @@ _02230E2C: bl FUN_02019064 add r0, r5, r7 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, #0xa cmp r6, #8 @@ -6995,7 +6995,7 @@ _02230F6A: _02230F76: add r0, r5, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] ldr r0, _02230FAC ; =0x0001020F @@ -7127,7 +7127,7 @@ MOD71_02231018: ; 0x02231018 mov r3, #0x1a str r5, [sp, #0x14] str r4, [sp, #0x20] - bl FUN_020010A8 + bl ListMenuInit add sp, #0x34 pop {r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index d5105d7e..4a086c51 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -4805,7 +4805,7 @@ MOD73_021D9AC8: ; 0x021D9AC8 add r4, r0, #0 ldr r0, [r4, #8] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4, #0x18] mov r2, #0 ldr r0, [r4, #8] @@ -4947,11 +4947,11 @@ MOD73_021D9BE0: ; 0x021D9BE0 add r5, r0, #0 add r0, r4, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #8] add r0, r4, #0 mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r5, #0xc] mov r0, #0x13 str r0, [sp] @@ -4984,10 +4984,10 @@ MOD73_021D9BE0: ; 0x021D9BE0 bl FUN_02019064 ldr r0, [r5, #8] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0xc] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r5, #0x10] mov r1, #4 lsl r0, r0, #0x18 @@ -5924,7 +5924,7 @@ MOD73_021DA2AC: ; 0x021DA2AC _021DA2FA: ldr r0, [sp, #0x14] mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #8] ldrh r0, [r5, #2] mov r2, #2 @@ -5953,7 +5953,7 @@ _021DA2FA: bl FUN_02019064 ldr r0, [r4, #8] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, r4, #4 add r5, #0xc @@ -6099,7 +6099,7 @@ _021DA446: mov r1, #0 str r1, [r5, #0x30] ldr r0, [r5, #8] - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] ldr r0, _021DA498 ; =0x0001020F @@ -6173,7 +6173,7 @@ MOD73_021DA4D4: ; 0x021DA4D4 bl FUN_02018744 ldr r0, [r4, #0xc] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] ldr r0, _021DA54C ; =0x0001020F @@ -6192,7 +6192,7 @@ MOD73_021DA4D4: ; 0x021DA4D4 bl FUN_0200CCA4 ldr r0, [r4, #0x10] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] ldr r0, _021DA54C ; =0x0001020F @@ -6494,7 +6494,7 @@ MOD73_021DA770: ; 0x021DA770 ldr r0, [r4, #0x14] add r6, r1, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r6, #6 bhi _021DA7EC add r0, r6, r6 diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s index 1fce128e..0189a34d 100644 --- a/arm9/modules/74/asm/module_74.s +++ b/arm9/modules/74/asm/module_74.s @@ -771,7 +771,7 @@ _021D7A9A: bl FUN_02019150 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r4, #8 add r5, #0x10 @@ -790,7 +790,7 @@ _021D7AC0: bl FUN_02019150 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r4, #8 add r5, #0x10 @@ -1343,7 +1343,7 @@ MOD74_021D7F44: ; 0x021D7F44 mov r1, #0 add r5, r2, #0 add r4, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r4, #8 blo _021D7F8C mov r0, #2 @@ -1637,7 +1637,7 @@ MOD74_021D818C: ; 0x021D818C add r0, r4, #0 add r0, #0x8c mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #4 str r0, [sp] mov r1, #0 @@ -1664,7 +1664,7 @@ MOD74_021D81E0: ; 0x021D81E0 add r4, r0, #0 add r0, #0x8c mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x8c bl FUN_02019570 diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index 1a9861c9..82294cbf 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -759,7 +759,7 @@ MOD75_021E71BC: ; 0x021E71BC bl FUN_020178A0 mov r0, #6 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD75_021E71BC @@ -1233,7 +1233,7 @@ MOD75_021E7580: ; 0x021E7580 ldrb r0, [r0, r1] mov r1, #6 add r0, r0, #3 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x16 lsl r1, r1, #4 str r0, [r5, r1] @@ -1243,7 +1243,7 @@ MOD75_021E7580: ; 0x021E7580 add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x23 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldrb r3, [r4, #8] cmp r3, #3 bne _021E764A @@ -1280,7 +1280,7 @@ _021E75CE: ldr r0, [r5, r0] ldr r1, [r7, r1] add r2, r6, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, [sp] ldrb r1, [r4, #8] add r0, r0, #4 @@ -1300,7 +1300,7 @@ _021E761A: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x22 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData mov r1, #0x16 lsl r1, r1, #4 ldr r0, [r5, r1] @@ -1309,7 +1309,7 @@ _021E761A: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x23 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #3 add sp, #8 strb r0, [r4, #9] @@ -1348,7 +1348,7 @@ _021E7658: ldr r0, [r5, r0] ldr r1, [r7, r1] add r2, r6, #0 - bl ListMenu_AddItem + bl ListMenuItems_AddItem ldr r0, [sp, #4] ldrb r3, [r4, #8] add r0, r0, #4 @@ -1377,7 +1377,7 @@ _021E76A4: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x22 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _021E76E0 _021E76CC: mov r1, #0x16 @@ -1388,7 +1388,7 @@ _021E76CC: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x2b - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _021E76E0: mov r1, #0x16 lsl r1, r1, #4 @@ -1398,7 +1398,7 @@ _021E76E0: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x23 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #3 add sp, #8 strb r0, [r4, #9] @@ -1412,7 +1412,7 @@ _021E76FC: add r3, r2, #0 ldr r1, [r5, r1] sub r3, #0x23 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #2 strb r0, [r4, #9] add sp, #8 @@ -1606,7 +1606,7 @@ _021E784E: add r1, r3, #0 add r0, sp, #0 mov r3, #6 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x57 lsl r1, r1, #2 str r0, [r4, r1] @@ -1624,7 +1624,7 @@ MOD75_021E7870: ; 0x021E7870 add r7, r1, #0 mov r1, #0x13 add r4, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r5, r0, #0 cmp r4, #1 beq _021E78F8 @@ -1693,7 +1693,7 @@ _021E78F8: add r0, r5, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #1 mvn r1, r1 cmp r7, r1 @@ -1751,7 +1751,7 @@ MOD75_021E797C: ; 0x021E797C mov r1, #0x13 str r0, [sp] add r7, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 add r0, #0xc4 ldr r0, [r0] @@ -1773,14 +1773,14 @@ MOD75_021E797C: ; 0x021E797C mov r1, #8 mov r2, #0 mov r3, #9 - bl FUN_020013E8 + bl ListMenuOverrideSetColors b _021E79C6 _021E79BA: ldr r0, [sp] mov r1, #1 mov r2, #0 mov r3, #2 - bl FUN_020013E8 + bl ListMenuOverrideSetColors _021E79C6: ldrb r0, [r6, #8] cmp r0, #7 @@ -1911,11 +1911,11 @@ MOD75_021E7AA4: ; 0x021E7AA4 add r3, #8 add r1, r1, r2 add r2, r3, r2 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #0x57 mov r1, #0 lsl r0, r0, #2 @@ -1959,7 +1959,7 @@ _021E7B12: add r0, r4, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x14 bl FUN_02019570 @@ -2019,7 +2019,7 @@ MOD75_021E7B7C: ; 0x021E7B7C ldr r0, [r5, r0] add r1, r4, #6 add r2, r4, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r0, _021E7CD8 ; =gMain ldr r1, [r0, #0x48] mov r0, #4 @@ -2038,7 +2038,7 @@ _021E7BC0: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 mov r0, #0x57 lsl r0, r0, #2 @@ -2046,7 +2046,7 @@ _021E7BC0: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r4, #4] @@ -2085,7 +2085,7 @@ _021E7BFC: lsl r1, r1, #0x10 ldr r0, [r5, r0] lsr r1, r1, #0x10 - bl FUN_02001464 + bl ListMenuGetValueByArrayId add r6, r0, #0 mov r0, #0x49 mov r1, #1 @@ -2102,7 +2102,7 @@ _021E7C38: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0200145C + bl ListMenuGetUnk33 cmp r0, #1 bne _021E7C5E add r0, r5, #0 @@ -2396,11 +2396,11 @@ MOD75_021E7E60: ; 0x021E7E60 bl MOD75_021E7AA4 add r0, r4, #4 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #4 bl FUN_02019220 add r0, r4, #0 @@ -2830,11 +2830,11 @@ _021E81D2: add r3, #8 add r1, r1, r2 add r2, r3, r2 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor _021E8206: add r0, r5, #0 add r0, #0xc4 @@ -3643,7 +3643,7 @@ MOD75_021E8808: ; 0x021E8808 add r1, r2, r1 lsl r1, r1, #0x10 lsr r1, r1, #0x10 - bl FUN_02001464 + bl ListMenuGetValueByArrayId mov r1, #1 mvn r1, r1 cmp r0, r1 @@ -3701,7 +3701,7 @@ MOD75_021E8864: ; 0x021E8864 lsl r0, r0, #2 ldrb r1, [r4, r1] ldr r0, [r4, r0] - bl FUN_02001464 + bl ListMenuGetValueByArrayId ldr r1, _021E88B8 ; =0x0000047C str r0, [r4, r1] add r0, r4, #0 @@ -3709,7 +3709,7 @@ MOD75_021E8864: ; 0x021E8864 mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02001328 + bl RedrawListMenu add r0, r4, #0 bl MOD75_021E8AAC pop {r4, pc} @@ -3744,7 +3744,7 @@ _021E88D0: ldr r0, [r5, r0] add r1, r4, #6 add r2, r4, #4 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, r5, #0 bl MOD75_021E87B8 cmp r0, #1 @@ -3776,7 +3776,7 @@ _021E892E: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 mov r0, #0x57 lsl r0, r0, #2 @@ -3784,7 +3784,7 @@ _021E892E: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow add r0, sp, #0 ldrh r2, [r0] ldrh r0, [r4, #4] @@ -3816,7 +3816,7 @@ _021E896A: mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0200145C + bl ListMenuGetUnk33 cmp r0, #1 bne _021E899A add r0, r5, #0 @@ -3900,7 +3900,7 @@ MOD75_021E89F0: ; 0x021E89F0 mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 bl MOD75_021E7580 _021E8A3C: @@ -3928,7 +3928,7 @@ MOD75_021E8A48: ; 0x021E8A48 ldr r0, [r5, r0] add r1, r4, #6 add r2, r4, #4 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x57 mov r1, #0 lsl r0, r0, #2 @@ -4455,7 +4455,7 @@ MOD75_021E8E1C: ; 0x021E8E1C add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021E8EA8 ; =0x000003D9 add r0, #0x64 @@ -4567,7 +4567,7 @@ _021E8F3A: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021E8FB8 ; =0x000003D9 add r0, #0x64 @@ -4686,7 +4686,7 @@ _021E9046: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021E91A8 ; =0x000003D9 add r0, #0x64 @@ -4726,7 +4726,7 @@ _021E908E: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x46 mov r1, #0xfe lsl r0, r0, #2 @@ -5022,11 +5022,11 @@ MOD75_021E92BC: ; 0x021E92BC add r3, #8 add r1, r1, r2 add r2, r3, r2 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x16 lsl r0, r0, #4 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r4, #0 bl MOD75_021E7580 add r0, r4, #0 @@ -5102,7 +5102,7 @@ MOD75_021E9394: ; 0x021E9394 _021E93AA: add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021E942C ; =0x000003D9 add r0, #0x64 @@ -5473,7 +5473,7 @@ _021E967A: add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl MOD75_021EB660 ldr r1, _021E9718 ; =0x00000426 @@ -5608,7 +5608,7 @@ MOD75_021E97A8: ; 0x021E97A8 mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02001328 + bl RedrawListMenu add r0, r4, #0 bl MOD75_021EB344 add r0, r4, #0 @@ -5633,7 +5633,7 @@ MOD75_021E97E4: ; 0x021E97E4 mov r0, #0x57 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02001328 + bl RedrawListMenu add r0, r4, #0 bl MOD75_021EB344 add r0, r4, #0 @@ -5711,7 +5711,7 @@ _021E9872: add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 ldr r2, _021E9928 ; =0x000003D9 add r0, #0x64 @@ -5864,7 +5864,7 @@ _021E99C6: add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 ldr r2, _021E9B3C ; =0x000003D9 add r0, #0x64 @@ -6100,7 +6100,7 @@ _021E9BAC: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -6195,7 +6195,7 @@ _021E9C80: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -6405,7 +6405,7 @@ _021E9E2A: add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl MOD75_021EB660 ldr r1, _021E9EDC ; =0x00000426 @@ -6654,7 +6654,7 @@ _021EA016: add r0, r4, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 ldr r2, _021EA0C4 ; =0x000003D9 add r0, #0x64 @@ -7055,7 +7055,7 @@ MOD75_021EA328: ; 0x021EA328 ldrh r3, [r3] ldr r0, [r4, r0] mov r1, #0 - bl FUN_02001354 + bl ListMenuTestInputInternal add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] @@ -7207,7 +7207,7 @@ MOD75_021EA444: ; 0x021EA444 ldrh r3, [r3] ldr r0, [r4, r0] mov r1, #0 - bl FUN_02001354 + bl ListMenuTestInputInternal add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] @@ -7755,7 +7755,7 @@ MOD75_021EA8BC: ; 0x021EA8BC add r4, r0, #0 add r0, #0x24 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r2, r4, #0 add r2, #0xc4 ldr r6, [r2] @@ -7898,13 +7898,13 @@ _021EA9A8: ldr r1, [r1, #0x14] add r0, #0x54 mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow add r5, #0x54 add r0, r5, #0 bl FUN_02019220 mov r0, #6 add r1, r7, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -7922,7 +7922,7 @@ MOD75_021EA9F8: ; 0x021EA9F8 add r0, r5, #0 add r0, #0x54 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _021EAAA0 ; =0x00000424 mov r4, #0 ldrb r0, [r5, r0] @@ -7979,7 +7979,7 @@ _021EAA4C: add r0, r6, #0 ldr r1, [r1, #0x14] mov r3, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow add r0, r4, #1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 @@ -7993,7 +7993,7 @@ _021EAA8C: bl FUN_02019220 ldr r1, [sp, #0x18] mov r0, #6 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -8617,10 +8617,10 @@ MOD75_021EAF70: ; 0x021EAF70 add r0, r5, #4 ldr r1, [r1, #0x14] mov r2, #0x28 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #6 add r1, r6, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r3, r4, r5, r6, pc} thumb_func_end MOD75_021EAF70 @@ -8646,7 +8646,7 @@ MOD75_021EAFB0: ; 0x021EAFB0 add r0, r5, #4 add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 str r4, [sp] mov r0, #0xff @@ -8692,10 +8692,10 @@ MOD75_021EB004: ; 0x021EB004 add r0, r5, #4 ldr r1, [r1, #0x14] add r3, r2, #0 - bl FUN_02019658 + bl BlitBitmapRectToWindow mov r0, #6 add r1, r6, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit add sp, #0x1c pop {r3, r4, r5, r6, pc} .align 2, 0 @@ -8881,7 +8881,7 @@ _021EB180: _021EB1B0: add r0, r7, #0 mov r1, #6 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x55 lsl r1, r1, #2 mov r4, #0 @@ -8901,7 +8901,7 @@ _021EB1C4: lsl r1, r1, #2 ldr r0, [r5, r0] ldr r1, [r3, r1] - bl ListMenu_AddItem + bl ListMenuItems_AddItem add r0, r4, #1 lsl r0, r0, #0x10 lsr r4, r0, #0x10 @@ -8971,7 +8971,7 @@ _021EB22E: add r0, r5, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r1, r5, #0 add r1, #0xc4 ldr r1, [r1] @@ -9001,7 +9001,7 @@ _021EB298: bl FUN_0200D0BC add r0, r4, r6 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9112,14 +9112,14 @@ _021EB37A: mov r0, #0x55 lsl r0, r0, #2 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor add r0, r5, #0 add r0, #0xb4 bl FUN_02019178 add r0, r5, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r1, r5, #0 add r1, #0xc4 ldr r1, [r1] @@ -9144,7 +9144,7 @@ MOD75_021EB3D8: ; 0x021EB3D8 add r5, r0, #0 add r0, #0x14 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9214,7 +9214,7 @@ MOD75_021EB454: ; 0x021EB454 add r0, r5, #0 add r0, #0x34 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9280,7 +9280,7 @@ MOD75_021EB504: ; 0x021EB504 add r4, #0x94 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9365,7 +9365,7 @@ MOD75_021EB5B0: ; 0x021EB5B0 add r0, r5, #0 add r0, #0x64 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9543,7 +9543,7 @@ MOD75_021EB708: ; 0x021EB708 _021EB722: add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r5, r0] @@ -9654,7 +9654,7 @@ MOD75_021EB808: ; 0x021EB808 bne _021EB854 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021EB8E4 ; =0x000003F7 add r0, r4, #0 mov r1, #1 @@ -9686,7 +9686,7 @@ _021EB854: mov r1, #0xf mov r2, #0 str r3, [sp, #4] - bl FUN_020196F4 + bl FillWindowPixelRect _021EB866: mov r0, #0x45 lsl r0, r0, #2 @@ -9755,7 +9755,7 @@ MOD75_021EB8E8: ; 0x021EB8E8 add r4, #0xa4 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r2, _021EB9B0 ; =0x000003F7 add r0, r4, #0 mov r1, #1 diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index 13ddf00c..baa825fc 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -382,7 +382,7 @@ MOD76_021D77E4: ; 0x021D77E4 bl FUN_020178A0 mov r0, #0x43 add r1, r4, #0 - bl FUN_02016A8C + bl FreeToHeapExplicit pop {r4, pc} .align 2, 0 thumb_func_end MOD76_021D77E4 @@ -467,7 +467,7 @@ _021D78A8: bl FUN_02019150 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r6, r6, #1 add r4, #8 add r5, #0x10 @@ -478,7 +478,7 @@ _021D78A8: add r0, r7, #0 add r0, #0xc8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, #0xc8 add r0, r7, #0 mov r1, #0 @@ -596,11 +596,11 @@ _021D799C: ldr r0, [r5, r0] add r1, #2 add r2, sp, #0 - bl FUN_02001448 + bl ListMenuGetScrollAndRow mov r0, #0x41 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 ldr r2, [r5] mov r0, #0x41 @@ -609,7 +609,7 @@ _021D799C: ldr r0, [r5, r0] add r1, #0x12 add r2, #0x10 - bl FUN_02001448 + bl ListMenuGetScrollAndRow ldr r2, [r5] add r1, sp, #0 ldrh r1, [r1, #2] @@ -1021,7 +1021,7 @@ _021D7CE8: add r1, #8 lsl r0, r4, #4 add r0, r1, r0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #0x1b lsr r0, r0, #0x18 sub r0, r0, r6 @@ -1041,7 +1041,7 @@ _021D7D12: add r1, #8 lsl r0, r4, #4 add r0, r1, r0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #0x1b lsr r0, r0, #0x18 sub r1, r0, r6 @@ -1257,7 +1257,7 @@ MOD76_021D7ECC: ; 0x021D7ECC strb r1, [r5, r0] ldrb r0, [r5, r0] mov r1, #0x43 - bl ListMenu_ctor + bl ListMenuItems_ctor mov r1, #0x42 lsl r1, r1, #2 str r0, [r5, r1] @@ -1287,7 +1287,7 @@ _021D7F0E: ldr r0, [r5, r0] add r1, r7, #0 add r3, r2, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _021D7F42 _021D7F2A: mov r0, #0x42 @@ -1299,7 +1299,7 @@ _021D7F2A: ldr r0, [r5, r0] ldr r1, [r1] sub r3, #0x22 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _021D7F50 _021D7F42: mov r0, #0x61 @@ -1340,7 +1340,7 @@ _021D7F50: ldrh r1, [r3, #0x12] ldrh r2, [r3, #0x10] mov r3, #0x43 - bl FUN_020010A8 + bl ListMenuInit mov r1, #0x41 lsl r1, r1, #2 str r0, [r5, r1] @@ -1365,11 +1365,11 @@ MOD76_021D7FAC: ; 0x021D7FAC ldr r0, [r4, r0] add r1, #0x12 add r2, #0x10 - bl FUN_02001300 + bl DestroyListMenu mov r0, #0x42 lsl r0, r0, #2 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor pop {r4, pc} .align 2, 0 thumb_func_end MOD76_021D7FAC @@ -1380,7 +1380,7 @@ MOD76_021D7FD0: ; 0x021D7FD0 add r5, r1, #0 mov r1, #0x13 add r6, r2, #0 - bl FUN_02001470 + bl ListMenuGetTemplateField add r4, r0, #0 cmp r6, #1 beq _021D7FE8 @@ -1418,19 +1418,19 @@ MOD76_021D800C: ; 0x021D800C add r4, r1, #0 add r0, #0xa8 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x78 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x88 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 add r0, #0x98 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x4b lsl r0, r0, #2 ldr r0, [r5, r0] @@ -1601,7 +1601,7 @@ MOD76_021D81AC: ; 0x021D81AC add r4, r1, #0 add r0, #0xb8 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #1 mvn r1, r1 cmp r4, r1 @@ -2043,7 +2043,7 @@ MOD76_021D853C: ; 0x021D853C add r5, r1, #0 add r0, #0xc8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 add r1, r5, #0 bl MOD76_021D8354 @@ -2169,7 +2169,7 @@ MOD76_021D862C: ; 0x021D862C add r4, r0, #0 add r0, #0xc8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r1, #0 bl MOD76_021D8354 @@ -2217,7 +2217,7 @@ MOD76_021D8688: ; 0x021D8688 add r4, r0, #0 add r0, #0xc8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r1, #0 bl MOD76_021D8354 diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s index a5eaa94b..4dce464f 100644 --- a/arm9/modules/77/asm/module_77.s +++ b/arm9/modules/77/asm/module_77.s @@ -242,7 +242,7 @@ _021D76D6: _021D76FA: ldr r0, _021D7988 ; =0x0000C054 ldr r0, [r4, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 sub r0, r7, #1 cmp r6, r0 @@ -358,7 +358,7 @@ _021D77A2: _021D77DE: ldr r0, _021D7988 ; =0x0000C054 ldr r0, [r4, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 sub r0, r7, #1 cmp r6, r0 @@ -438,7 +438,7 @@ _021D7838: _021D7886: ldr r0, _021D7988 ; =0x0000C054 ldr r0, [r4, r0] - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 sub r0, r7, #1 cmp r6, r0 @@ -601,7 +601,7 @@ _021D79D0: add r0, r4, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D7B7C ; =0x0000C034 ldr r2, _021D7B80 ; =0x000001D9 add r0, r4, r0 @@ -656,7 +656,7 @@ _021D7A4E: add r0, r4, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D7B84 ; =0x0000C314 ldr r1, [r4, r0] cmp r1, #0 @@ -1432,7 +1432,7 @@ MOD77_021D7FAC: ; 0x021D7FAC add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D8224 ; =0x0000C014 ldr r2, _021D8214 ; =0x000001E2 add r0, r5, r0 @@ -1565,7 +1565,7 @@ MOD77_021D7FAC: ; 0x021D7FAC add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D8244 ; =0x0000C060 mov r1, #0xc ldr r0, [r5, r0] @@ -1671,7 +1671,7 @@ _021D82B0: mov r1, #0xf add r2, r4, #0 add r3, r4, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r0, #1 ldr r1, [r5] lsl r0, r0, #0xa @@ -1767,7 +1767,7 @@ MOD77_021D8370: ; 0x021D8370 bl FUN_02019150 ldrh r0, [r6, #0x10] ldr r1, [r5] - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _021D8404 ; =0x0000C058 mov r7, #0 str r0, [r5, r1] @@ -1782,7 +1782,7 @@ _021D8398: ldr r1, [r5, r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldrh r0, [r6, #0x10] add r7, r7, #1 add r4, #8 @@ -1812,7 +1812,7 @@ _021D83B2: lsl r3, r3, #0x18 add r2, r1, #0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit ldr r1, _021D8410 ; =0x0000C054 ldr r2, _021D8414 ; =0x000001D9 str r0, [r5, r1] @@ -1853,7 +1853,7 @@ MOD77_021D8418: ; 0x021D8418 str r0, [sp, #8] ldr r1, [r5] add r0, r6, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _021D84C8 ; =0x0000C058 mov r4, #0 str r0, [r5, r1] @@ -1865,7 +1865,7 @@ _021D844E: ldr r0, [r5, r0] ldr r1, [sp, #8] add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, r6 blo _021D844E @@ -1902,7 +1902,7 @@ _021D8462: lsl r3, r3, #0x18 add r2, r1, #0 lsr r3, r3, #0x18 - bl FUN_020010A8 + bl ListMenuInit ldr r1, _021D84D0 ; =0x0000C054 ldr r2, _021D84D4 ; =0x000001D9 str r0, [r5, r1] @@ -1937,10 +1937,10 @@ MOD77_021D84D8: ; 0x021D84D8 mov r1, #0 ldr r0, [r4, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _021D850C ; =0x0000C058 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor pop {r4, pc} .align 2, 0 _021D8504: .word 0x0000C024 @@ -1978,7 +1978,7 @@ MOD77_021D8510: ; 0x021D8510 add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D85CC ; =0x0000C044 ldr r2, _021D85D0 ; =0x000001D9 add r0, r5, r0 @@ -2067,7 +2067,7 @@ MOD77_021D85E0: ; 0x021D85E0 add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D8690 ; =0x0000C044 ldr r2, _021D8694 ; =0x000001D9 add r0, r5, r0 @@ -2159,7 +2159,7 @@ MOD77_021D86B4: ; 0x021D86B4 add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, _021D8810 ; =0x0000C060 mov r1, #0xe ldr r0, [r5, r0] @@ -2245,7 +2245,7 @@ _021D8748: add r0, r5, r0 mov r1, #0xf add r3, r2, #0 - bl FUN_020196F4 + bl FillWindowPixelRect ldr r0, [r5] add r2, r7, #0 str r0, [sp] diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index f0b34ee0..ea6a3c13 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -2951,7 +2951,7 @@ MOD80_0222EC98: ; 0x0222EC98 ldr r0, _0222ED88 ; =0x00000EB8 mov r1, #0 add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #2 str r0, [sp] mov r3, #0 @@ -2992,7 +2992,7 @@ _0222ECF2: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [sp, #0x14] add r6, #0x1e add r0, r0, #1 @@ -3019,7 +3019,7 @@ _0222ECF2: ldr r0, _0222ED94 ; =0x00000E98 mov r1, #0xf add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -3039,7 +3039,7 @@ _0222ECF2: ldr r0, _0222ED98 ; =0x00000FB8 mov r1, #0xf add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -3678,7 +3678,7 @@ MOD80_0222F250: ; 0x0222F250 ldr r0, _0222F2A0 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0222F2A0 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -3720,7 +3720,7 @@ MOD80_0222F2A8: ; 0x0222F2A8 ldr r0, _0222F2F8 ; =0x00000FB8 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0222F2F8 ; =0x00000FB8 mov r1, #0 add r0, r5, r0 @@ -3761,7 +3761,7 @@ MOD80_0222F300: ; 0x0222F300 add r6, r0, #0 add r0, r5, #0 lsr r1, r1, #0x18 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -4250,7 +4250,7 @@ MOD80_0222F6EC: ; 0x0222F6EC ldr r0, [sp, #0x14] add r0, r0, r1 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xf str r0, [sp] mov r0, #0xa @@ -4303,7 +4303,7 @@ _0222F754: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4, #8] ldr r0, [r4, #0xc] add r7, r7, #1 @@ -4573,7 +4573,7 @@ MOD80_0222F96C: ; 0x0222F96C bic r3, r1 mov r1, #0x3e strb r3, [r2, #0xb] - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _0222F9FC ; =0x00000FC8 mov r2, #0x36 str r0, [r4, r1] @@ -4581,14 +4581,14 @@ MOD80_0222F96C: ; 0x0222F96C ldr r1, _0222FA00 ; =0x00000B34 mov r3, #1 ldr r1, [r4, r1] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222F9FC ; =0x00000FC8 ldr r1, _0222FA00 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x37 mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _0222F9FC ; =0x00000FC8 mov r2, #0x1f ldr r1, [r4, r0] @@ -4647,7 +4647,7 @@ _0222FA26: bl FUN_02001C5C ldr r0, _0222FADC ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _0222FAE0 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -4702,7 +4702,7 @@ _0222FAA4: bl FUN_02001C5C ldr r0, _0222FADC ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _0222FAE0 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -4805,7 +4805,7 @@ MOD80_0222FB3C: ; 0x0222FB3C ldr r0, _0222FBB8 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _0222FBB8 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -4912,7 +4912,7 @@ MOD80_0222FBC0: ; 0x0222FBC0 _0222FC64: add r0, r5, #0 add r1, r7, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #1 add r5, #0x10 cmp r4, #5 @@ -5506,7 +5506,7 @@ MOD80_02230128: ; 0x02230128 ldr r0, [sp, #0x14] add r0, r0, r1 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xf str r0, [sp] mov r0, #0xa @@ -5559,7 +5559,7 @@ _02230190: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, [r4, #8] ldr r0, [r4, #0xc] add r7, r7, #1 @@ -5983,7 +5983,7 @@ MOD80_022304F8: ; 0x022304F8 ldr r0, _02230548 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02230548 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -6061,7 +6061,7 @@ MOD80_022305A8: ; 0x022305A8 add r5, r0, #0 add r7, r2, #0 add r4, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 str r0, [sp] ldr r0, _02230610 ; =0x000F0200 @@ -6113,7 +6113,7 @@ MOD80_02230614: ; 0x02230614 mov r1, #0 add r6, r0, #0 add r4, r2, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer cmp r5, #0 beq _0223063A mov r2, #0 @@ -6516,7 +6516,7 @@ MOD80_02230944: ; 0x02230944 ldr r0, [sp, #0x14] add r0, r0, r1 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 mov r3, #0xb5 ldr r0, _02230A70 ; =0x000F0D00 @@ -6551,7 +6551,7 @@ MOD80_02230944: ; 0x02230944 ldr r0, [sp, #0x14] add r0, r0, r1 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r1, _02230A78 ; =0x00000F08 ldr r0, [sp, #0x14] ldr r4, _02230A7C ; =0x0223719C @@ -6582,7 +6582,7 @@ _022309D2: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r7, r7, #1 add r6, #0x16 add r4, r4, #4 @@ -6624,7 +6624,7 @@ _02230A20: ldr r0, [sp, #0x18] mov r1, #0 add r0, r0, r7 - bl FUN_02019620 + bl FillWindowPixelBuffer add r5, r5, #1 add r6, #0x10 add r4, r4, #4 @@ -7524,7 +7524,7 @@ MOD80_0223113C: ; 0x0223113C ldr r0, _022311BC ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #5 str r0, [sp] mov r0, #0xa @@ -7543,7 +7543,7 @@ MOD80_0223113C: ; 0x0223113C ldr r0, _022311C4 ; =0x00000EE8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -7626,10 +7626,10 @@ _02231240: add r1, r2, #6 ldr r0, [r4, r0] add r2, r2, #4 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _022312B8 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _022312BC ; =0x000005DC bl FUN_020054C8 mov r0, #6 @@ -7643,10 +7643,10 @@ _02231266: add r1, r2, #6 ldr r0, [r4, r0] add r2, r2, #4 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _022312B8 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _022312C0 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 @@ -7747,10 +7747,10 @@ _02231342: ldr r0, [r4, r0] add r1, #0xa add r2, #8 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231468 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _0223146C ; =0x00000EE8 mov r1, #0 add r0, r4, r0 @@ -7780,10 +7780,10 @@ _0223138C: ldr r0, [r4, r0] add r1, #0xa add r2, #8 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231468 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02231474 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 @@ -7807,7 +7807,7 @@ _0223138C: ldr r0, _0223147C ; =0x00000F18 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] ldr r0, _02231480 ; =0x00010200 @@ -7847,7 +7847,7 @@ _0223138C: ldr r0, _02231488 ; =0x00000F38 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] mov r0, #2 @@ -7913,7 +7913,7 @@ MOD80_02231490: ; 0x02231490 ldr r0, _022314E8 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -7980,10 +7980,10 @@ _0223154A: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _022315F4 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _022315F8 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -8005,10 +8005,10 @@ _0223158E: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _022315F4 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _022315F8 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -8025,7 +8025,7 @@ _0223158E: mov r1, #0 add r0, r5, r0 str r1, [r5, #0x2c] - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] mov r0, #2 @@ -8089,7 +8089,7 @@ MOD80_02231614: ; 0x02231614 ldr r0, _0223166C ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -8153,10 +8153,10 @@ _022316D0: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231770 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02231774 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -8178,10 +8178,10 @@ _0223170C: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231770 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02231774 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -8199,7 +8199,7 @@ _0223170C: mov r1, #0 add r0, r5, r0 str r1, [r5, #0x2c] - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp] ldr r0, _02231788 ; =0x00010200 @@ -8377,7 +8377,7 @@ MOD80_0223187C: ; 0x0223187C ldr r0, _022318CC ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _022318CC ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -9121,7 +9121,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FDC ; =0x00000EB8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 mov r1, #0xb5 ldr r0, _02231FE0 ; =0x000F0E00 @@ -9150,7 +9150,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FE4 ; =0x00000EC8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02231FE4 ; =0x00000EC8 add r0, r4, r0 bl CopyWindowToVram @@ -9172,7 +9172,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FE8 ; =0x00000E98 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -9192,7 +9192,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FF0 ; =0x00000FB8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x15 str r0, [sp] mov r0, #6 @@ -9212,7 +9212,7 @@ MOD80_02231EA8: ; 0x02231EA8 ldr r0, _02231FF8 ; =0x00000EE8 mov r1, #6 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #1 ldr r0, _02231FFC ; =0x00010306 str r3, [sp] @@ -9823,7 +9823,7 @@ MOD80_02232470: ; 0x02232470 bic r3, r1 mov r1, #0x3e strb r3, [r2, #0xb] - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02232510 ; =0x00000FC8 mov r2, #0x5e str r0, [r4, r1] @@ -9831,21 +9831,21 @@ MOD80_02232470: ; 0x02232470 ldr r1, _02232514 ; =0x00000B34 mov r3, #1 ldr r1, [r4, r1] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232510 ; =0x00000FC8 ldr r1, _02232514 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x5f mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232510 ; =0x00000FC8 ldr r1, _02232514 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x60 mov r3, #3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232510 ; =0x00000FC8 mov r2, #0x1f ldr r1, [r4, r0] @@ -9912,7 +9912,7 @@ _02232546: bl FUN_02001C5C ldr r0, _02232660 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -9932,7 +9932,7 @@ _02232574: bl FUN_02001C5C ldr r0, _02232660 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10016,7 +10016,7 @@ _0223262E: bl FUN_02001C5C ldr r0, _02232660 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232664 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10063,7 +10063,7 @@ MOD80_02232670: ; 0x02232670 bic r3, r1 mov r1, #0x3e strb r3, [r2, #0xb] - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02232710 ; =0x00000FC8 mov r2, #0x54 str r0, [r4, r1] @@ -10071,21 +10071,21 @@ MOD80_02232670: ; 0x02232670 ldr r1, _02232714 ; =0x00000B34 mov r3, #1 ldr r1, [r4, r1] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232710 ; =0x00000FC8 ldr r1, _02232714 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x55 mov r3, #2 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232710 ; =0x00000FC8 ldr r1, _02232714 ; =0x00000B34 ldr r0, [r4, r0] ldr r1, [r4, r1] mov r2, #0x56 mov r3, #3 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData ldr r0, _02232710 ; =0x00000FC8 mov r2, #0x1f ldr r1, [r4, r0] @@ -10152,7 +10152,7 @@ _02232746: bl FUN_02001C5C ldr r0, _0223283C ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10172,7 +10172,7 @@ _02232774: bl FUN_02001C5C ldr r0, _0223283C ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10239,7 +10239,7 @@ _0223280A: bl FUN_02001C5C ldr r0, _0223283C ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02232840 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -10679,7 +10679,7 @@ _02232B62: add r4, r5, r0 add r0, r4, #0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r4, #0 mov r1, #0 mov r2, #1 @@ -11146,7 +11146,7 @@ _02232F22: ldr r0, _02232F9C ; =0x00000EC8 mov r1, #0 add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] ldr r0, _02232FA0 ; =0x00010200 @@ -11657,7 +11657,7 @@ MOD80_022332EC: ; 0x022332EC ldr r0, _02233350 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02233350 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -11908,7 +11908,7 @@ MOD80_02233500: ; 0x02233500 ldr r0, _022335CC ; =0x00000EB8 mov r1, #0 add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #0 mov r1, #0xb5 ldr r0, _022335D0 ; =0x000F0E00 @@ -11938,7 +11938,7 @@ MOD80_02233500: ; 0x02233500 ldr r0, _022335D4 ; =0x00000E98 mov r1, #0 add r0, r7, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0 str r0, [sp, #0x14] ldr r0, _022335D8 ; =0x00000F08 @@ -11968,7 +11968,7 @@ _0223357E: bl FUN_02019064 add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 bl CopyWindowToVram ldr r0, [sp, #0x14] @@ -12158,7 +12158,7 @@ _02233714: ldr r0, _02233778 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #5 str r0, [sp] mov r0, #0xa @@ -12177,7 +12177,7 @@ _02233714: ldr r0, _02233780 ; =0x00000EE8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 str r0, [r4, #0x2c] add sp, #0x14 @@ -12260,10 +12260,10 @@ _022337FA: add r1, r2, #6 ldr r0, [r4, r0] add r2, r2, #4 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _0223387C ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r0, #5 str r0, [r4, #0x2c] ldr r0, _02233880 ; =0x000005DC @@ -12277,10 +12277,10 @@ _02233820: add r1, r2, #6 ldr r0, [r4, r0] add r2, r2, #4 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _0223387C ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233884 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 @@ -12415,10 +12415,10 @@ _02233932: ldr r0, [r4, r0] add r1, #0xa add r2, #8 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233A50 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233A54 ; =0x00000EE8 mov r1, #0 add r0, r4, r0 @@ -12454,10 +12454,10 @@ _0223398C: ldr r0, [r4, r0] add r1, #0xa add r2, #8 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233A50 ; =0x00000FC8 ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233A58 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 @@ -12577,7 +12577,7 @@ MOD80_02233A6C: ; 0x02233A6C ldr r0, _02233AC4 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -12644,10 +12644,10 @@ _02233B26: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233BD0 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233BD4 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -12669,10 +12669,10 @@ _02233B6A: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233BD0 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233BD4 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -12752,7 +12752,7 @@ MOD80_02233BE8: ; 0x02233BE8 ldr r0, _02233C40 ; =0x00000ED8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #3 add sp, #0x14 pop {r3, r4, pc} @@ -12816,10 +12816,10 @@ _02233CA4: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233D70 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233D74 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -12856,10 +12856,10 @@ _02233CFA: mov r1, #0 ldr r0, [r5, r0] add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02233D70 ; =0x00000FC8 ldr r0, [r5, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor ldr r0, _02233D74 ; =0x00000ED8 mov r1, #0 add r0, r5, r0 @@ -13235,7 +13235,7 @@ MOD80_02233FB4: ; 0x02233FB4 _02233FE0: add r0, r5, #0 add r1, r7, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #1 add r5, #0x10 cmp r4, #3 @@ -13307,7 +13307,7 @@ MOD80_02234048: ; 0x02234048 _02234074: add r0, r5, #0 add r1, r7, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #1 add r5, #0x10 cmp r4, #3 @@ -13416,7 +13416,7 @@ _0223415A: _0223415E: add r0, r5, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r4, r4, #1 add r5, #0x10 cmp r4, #3 @@ -13680,7 +13680,7 @@ MOD80_02234370: ; 0x02234370 mov r1, #0x3e str r2, [sp] add r6, r3, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r5] mov r4, #0 _02234388: @@ -13689,7 +13689,7 @@ _02234388: add r1, r6, #0 add r2, #0x68 add r3, r4, #1 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 cmp r4, #9 blt _02234388 @@ -13718,7 +13718,7 @@ _02234388: ldrh r1, [r2, #6] ldrh r2, [r2, #4] mov r3, #0x3e - bl FUN_020010A8 + bl ListMenuInit add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -13791,7 +13791,7 @@ _0223444A: _02234456: add r0, r6, #1 mov r1, #0x3e - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, [sp] str r0, [r1] mov r0, #0 @@ -13816,7 +13816,7 @@ _02234472: ldr r1, [sp, #4] ldr r0, [r0] add r3, r2, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData b _022344B6 _02234494: ldrh r1, [r5] @@ -13833,7 +13833,7 @@ _02234494: ldr r1, [sp, #4] ldr r0, [r0] add r3, r2, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData _022344B6: ldr r0, [sp, #0x10] add r5, r5, #2 @@ -13848,7 +13848,7 @@ _022344C2: ldr r0, [r0] ldr r1, [sp, #8] sub r3, #0x77 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r0, r6, #1 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} @@ -13867,7 +13867,7 @@ MOD80_022344DC: ; 0x022344DC mov r1, #0xf str r2, [sp, #0x10] str r3, [sp, #0x14] - bl FUN_02019620 + bl FillWindowPixelBuffer ldrh r1, [r5, #6] ldrh r0, [r5, #4] ldr r2, [sp, #0x14] @@ -13912,7 +13912,7 @@ MOD80_022344DC: ; 0x022344DC ldrh r2, [r3, r2] add r0, sp, #0x18 mov r3, #0x3e - bl FUN_020010A8 + bl ListMenuInit add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} nop @@ -13929,7 +13929,7 @@ MOD80_02234560: ; 0x02234560 mov r0, #4 mov r1, #0x3e add r7, r2, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r5, _022345C8 ; =0x02237B64 str r0, [r6] mov r4, #0 @@ -13938,7 +13938,7 @@ _02234578: ldr r2, [r5] ldr r3, [r5, #4] add r1, r7, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 add r5, #8 cmp r4, #4 @@ -13968,7 +13968,7 @@ _02234578: add r0, sp, #4 add r2, r1, #0 mov r3, #0x3e - bl FUN_020010A8 + bl ListMenuInit add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -13985,7 +13985,7 @@ MOD80_022345D0: ; 0x022345D0 mov r0, #0xd mov r1, #0x3e add r7, r2, #0 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r5, _02234638 ; =0x02237494 str r0, [r6] mov r4, #0 @@ -13994,7 +13994,7 @@ _022345E8: ldr r2, [r5] add r1, r7, #0 add r3, r4, #0 - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r4, r4, #1 add r5, #8 cmp r4, #0xd @@ -14024,7 +14024,7 @@ _022345E8: add r0, sp, #4 add r2, r1, #0 mov r3, #0x3e - bl FUN_020010A8 + bl ListMenuInit add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -14089,11 +14089,11 @@ MOD80_02234698: ; 0x02234698 sub sp, #4 add r5, r0, #0 add r4, r1, #0 - bl FUN_02001204 + bl ListMenu_ProcessInput add r6, r0, #0 add r0, r5, #0 add r1, sp, #0 - bl FUN_0200143C + bl ListMenuGetCurrentItemArrayId add r0, sp, #0 ldrh r1, [r4] ldrh r0, [r0] @@ -14449,7 +14449,7 @@ MOD80_02234958: ; 0x02234958 ldr r0, _02234990 ; =0x00000E98 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3, r4, pc} nop @@ -18128,7 +18128,7 @@ MOD80_02236580: ; 0x02236580 ldr r0, _02236628 ; =0x00000EC8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] mov r0, #0x18 @@ -18149,7 +18149,7 @@ MOD80_02236580: ; 0x02236580 ldr r0, _0223662C ; =0x00000EB8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #1 mov r1, #0xb5 ldr r0, _02236630 ; =0x000F0E00 @@ -18180,7 +18180,7 @@ MOD80_02236580: ; 0x02236580 ldr r0, _02236634 ; =0x00000E98 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3, r4, pc} nop @@ -19051,7 +19051,7 @@ MOD80_02236C70: ; 0x02236C70 ldr r0, _02236CD8 ; =0x00000E98 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02236CD8 ; =0x00000E98 mov r1, #0 add r0, r5, r0 @@ -19206,7 +19206,7 @@ MOD80_02236D8C: ; 0x02236D8C ldr r0, _02236DFC ; =0x00000EC8 mov r1, #0xf add r0, r5, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02236DFC ; =0x00000EC8 mov r1, #1 add r0, r5, r0 diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index 94767f70..63312258 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -2229,7 +2229,7 @@ MOD81_02238E44: ; 0x02238E44 add r0, r4, #0 add r0, #0x44 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x20 str r3, [sp] mov r0, #0x3a @@ -2527,7 +2527,7 @@ _0223918A: add r0, r4, #0 add r0, #0x44 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] mov r0, #0xff @@ -9281,7 +9281,7 @@ MOD81_0223C658: ; 0x0223C658 add r0, r4, #0 add r0, #0x48 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0x20 str r3, [sp] mov r0, #0x3a @@ -9640,7 +9640,7 @@ _0223C9D0: add r0, r4, #0 add r0, #0x48 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #0 str r3, [sp] mov r0, #0xff diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index b9d0df31..6af5c444 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -1744,7 +1744,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #6 add r0, r4, r0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xe str r0, [sp] mov r0, #4 @@ -1766,7 +1766,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #4 add r0, r4, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0xe str r0, [sp] mov r0, #4 @@ -1788,7 +1788,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #4 add r0, r4, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r2, #1 mov r1, #0xdb lsl r1, r1, #4 @@ -1810,7 +1810,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #4 add r0, r4, r0 mov r1, #6 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #1 ldr r0, _0222E46C ; =0x00010406 str r3, [sp] @@ -1842,7 +1842,7 @@ MOD82_0222E35C: ; 0x0222E35C lsl r0, r0, #6 add r0, r4, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer add sp, #0x14 pop {r3, r4, pc} nop @@ -4037,7 +4037,7 @@ MOD82_0222F4D8: ; 0x0222F4D8 lsl r0, r0, #6 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x36 lsl r0, r0, #6 add r0, r5, r0 @@ -4132,7 +4132,7 @@ MOD82_0222F59C: ; 0x0222F59C lsl r0, r0, #6 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x36 lsl r0, r0, #6 add r0, r5, r0 @@ -4258,7 +4258,7 @@ MOD82_0222F694: ; 0x0222F694 add r5, r0, #0 add r6, r2, #0 add r7, r3, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #1 str r0, [sp] add r0, r4, #0 @@ -4375,7 +4375,7 @@ MOD82_0222F740: ; 0x0222F740 lsl r0, r0, #6 add r0, r5, r0 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer mov r0, #0x37 lsl r0, r0, #6 add r0, r5, r0 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 7e36aa68..233b529a 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -434,10 +434,10 @@ _0222D8B2: bl FUN_0201AB18 add r7, r0, #0 ldr r0, [sp, #0x1c] - bl FUN_0201AB0C + bl GetWindowWidth add r5, r0, #0 ldr r0, [sp, #0x1c] - bl FUN_0201AB10 + bl GetWindowHeight str r5, [sp] str r0, [sp, #4] mov r0, #0 @@ -901,14 +901,14 @@ MOD83_0222DCA0: ; 0x0222DCA0 add r5, r0, #0 mov r0, #0 mov r1, #2 - bl FUN_02002E4C + bl GetFontAttribute add r2, r0, #0 mov r0, #0 add r1, r5, #0 bl FUN_02002E14 add r4, r0, #0 add r0, r6, #0 - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 add r4, #0x20 sub r3, r0, r4 @@ -1601,10 +1601,10 @@ _0222E206: bl FUN_0201AB18 str r0, [sp, #0x14] add r0, r5, #0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0 add r0, r5, #0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp] str r0, [sp, #4] mov r0, #0 @@ -1628,10 +1628,10 @@ _0222E256: bl FUN_0201AB18 str r0, [sp, #0x1c] add r0, r5, #0 - bl FUN_0201AB0C + bl GetWindowWidth add r7, r0, #0 add r0, r5, #0 - bl FUN_0201AB10 + bl GetWindowHeight str r7, [sp] str r0, [sp, #4] mov r0, #1 @@ -1707,7 +1707,7 @@ MOD83_0222E2E4: ; 0x0222E2E4 add r1, #0x5c lsl r0, r0, #4 add r0, r1, r0 - bl FUN_0201AB10 + bl GetWindowHeight add r0, r0, #2 lsl r3, r0, #3 mov r0, #0x42 @@ -1769,7 +1769,7 @@ _0222E362: sub r0, r0, #1 lsl r4, r0, #3 add r0, r5, #0 - bl FUN_0201AB10 + bl GetWindowHeight cmp r7, r4 ble _0222E384 mov r0, #1 @@ -2926,7 +2926,7 @@ MOD83_0222EC78: ; 0x0222EC78 add r1, #0xf8 str r0, [r1] mov r1, #1 - bl FUN_02002E4C + bl GetFontAttribute add r2, r0, #0 add r0, r5, #0 add r0, #0xf0 @@ -4538,7 +4538,7 @@ MOD83_0222F9DC: ; 0x0222F9DC ldr r1, _0222F9F4 ; =MOD83_0223B884 mov r0, #0xf ldr r1, [r1] - bl FUN_02016A8C + bl FreeToHeapExplicit ldr r0, _0222F9F4 ; =MOD83_0223B884 mov r1, #0 str r1, [r0] @@ -4609,14 +4609,14 @@ MOD83_0222FA4C: ; 0x0222FA4C ldr r0, [r7, #0x7c] cmp r0, #0 beq _0222FA62 - bl ListMenu_dtor + bl ListMenuItems_dtor _0222FA62: ldr r0, [r7, #0x78] cmp r0, #0 beq _0222FA70 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu _0222FA70: add r0, r7, #0 add r0, #0x18 @@ -5812,11 +5812,11 @@ MOD83_022303B0: ; 0x022303B0 ldr r0, [r4, #0x7c] cmp r0, #0 beq _022303CC - bl ListMenu_dtor + bl ListMenuItems_dtor _022303CC: add r0, r7, #0 mov r1, #0x56 - bl ListMenu_ctor + bl ListMenuItems_ctor str r0, [r4, #0x7c] ldr r2, _0223045C ; =0x00000172 mov r0, #0 @@ -5832,7 +5832,7 @@ _022303EA: ldr r1, [r4, #0x10] ldr r2, [r5] ldr r3, [r5, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r5, #8 cmp r6, r7 @@ -5863,13 +5863,13 @@ _022303FE: beq _02230436 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu _02230436: mov r1, #0 add r0, sp, #8 add r2, r1, #0 mov r3, #0x56 - bl FUN_020010A8 + bl ListMenuInit str r0, [r4, #0x78] mov r0, #0 ldr r2, [sp, #0x40] @@ -5990,10 +5990,10 @@ MOD83_0223050C: ; 0x0223050C str r0, [r4, #0xc] mov r0, #1 mov r1, #6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 add r0, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r6, [r4, #0x14] cmp r6, #0 bne _02230554 @@ -6056,10 +6056,10 @@ MOD83_022305A4: ; 0x022305A4 bl CopyU16ArrayToStringN mov r0, #0 mov r1, #6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 add r0, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -6092,7 +6092,7 @@ MOD83_02230604: ; 0x02230604 add r6, r2, #0 bl OverlayManager_GetData ldr r0, [r0, #0x78] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #1 mvn r0, r0 @@ -8142,7 +8142,7 @@ MOD83_022316F0: ; 0x022316F0 str r3, [sp] cmp r0, #0 beq _02231708 - bl ListMenu_dtor + bl ListMenuItems_dtor _02231708: ldr r0, _02231798 ; =0x00002B68 ldr r0, [r5, r0] @@ -8150,11 +8150,11 @@ _02231708: beq _02231718 mov r1, #0 add r2, r1, #0 - bl FUN_02001300 + bl DestroyListMenu _02231718: add r0, r7, #0 mov r1, #0x57 - bl ListMenu_ctor + bl ListMenuItems_ctor ldr r1, _02231794 ; =0x00002B6C ldr r2, _0223179C ; =0x00000172 str r0, [r5, r1] @@ -8174,7 +8174,7 @@ _0223173A: ldr r1, [r5, r1] ldr r2, [r4] ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData + bl ListMenuItems_AppendFromMsgData add r6, r6, #1 add r4, #8 cmp r6, r7 @@ -8205,7 +8205,7 @@ _02231752: str r0, [sp, #0x10] add r0, r2, #0 add r2, r1, #0 - bl FUN_020010A8 + bl ListMenuInit ldr r1, _02231798 ; =0x00002B68 str r0, [r5, r1] add sp, #0x24 @@ -8235,10 +8235,10 @@ MOD83_022317A8: ; 0x022317A8 add r6, r0, #0 mov r0, #1 mov r1, #6 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 add r0, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r6, #0 add r1, r4, #0 add r2, r7, #0 @@ -8503,14 +8503,14 @@ MOD83_02231A00: ; 0x02231A00 add r4, r0, #0 ldr r0, _02231A40 ; =0x00002B6C ldr r0, [r4, r0] - bl ListMenu_dtor + bl ListMenuItems_dtor mov r1, #0 ldr r0, _02231A40 ; =0x00002B6C add r2, r1, #0 str r1, [r4, r0] sub r0, r0, #4 ldr r0, [r4, r0] - bl FUN_02001300 + bl DestroyListMenu ldr r0, _02231A44 ; =0x00002B68 mov r1, #0 str r1, [r4, r0] @@ -9122,10 +9122,10 @@ _02231EBE: lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 - bl FUN_02002E4C + bl GetFontAttribute add r1, r0, #0 add r0, r6, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x18] ldr r3, [r4, #0x24] str r0, [sp, #0x28] @@ -9249,7 +9249,7 @@ _02231FD2: add r0, r6, #0 lsl r1, r1, #0x18 lsr r1, r1, #0x18 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x20] cmp r0, #0 beq _02231FFE @@ -9529,7 +9529,7 @@ MOD83_02232208: ; 0x02232208 bl OverlayManager_GetData ldr r1, _02232270 ; =0x00002B68 ldr r0, [r0, r1] - bl FUN_02001204 + bl ListMenu_ProcessInput add r4, r0, #0 mov r0, #1 mvn r0, r0 @@ -10694,7 +10694,7 @@ _02232B94: ldr r0, _02232D1C ; =0x00002AA8 mov r1, #0 add r0, r4, r0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _02232D1C ; =0x00002AA8 add r0, r4, r0 bl CopyWindowToVram @@ -11088,7 +11088,7 @@ _02232E7E: mov r5, #0 ldr r0, [sp, #0x10] add r1, r5, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, #0 str r0, [sp, #0x14] cmp r6, #0 @@ -11230,7 +11230,7 @@ MOD83_02232FE4: ; 0x02232FE4 str r0, [r5, r1] add r0, r4, #0 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r3, #1 str r3, [sp] ldr r0, _0223307C ; =0x000029A0 @@ -15511,7 +15511,7 @@ _02234F7A: ldr r0, [r5] lsl r1, r1, #0x18 lsr r1, r1, #0x18 - bl FUN_02019620 + bl FillWindowPixelBuffer _02234F8C: mov r0, #0 ldr r1, [r5, #0x34] @@ -18576,7 +18576,7 @@ MOD83_02236804: ; 0x02236804 bl CTRDG_IsPulledOut cmp r0, #1 beq _02236822 - ldr r0, _02236B3C ; =gBacklightTop + 4 + ldr r0, _02236B3C ; =UNK_02016FA4 ldr r0, [r0] cmp r0, #0 beq _02236828 @@ -18966,7 +18966,7 @@ _02236B2E: str r0, [r5] b _02236D90 .align 2, 0 -_02236B3C: .word gBacklightTop + 4 +_02236B3C: .word UNK_02016FA4 _02236B40: .word 0x000004A8 _02236B44: .word 0x000004AC _02236B48: .word 0x0000E880 @@ -23084,7 +23084,7 @@ MOD83_0223894C: ; 0x0223894C add r1, #0x48 ldrb r1, [r1] ldr r0, [r5, #0x10] - bl FUN_02019620 + bl FillWindowPixelBuffer _02238976: mov r0, #0 ldr r1, [r5, #0x4c] @@ -23133,14 +23133,14 @@ _022389D0: mov r1, #2 lsl r0, r0, #0x18 lsr r0, r0, #0x18 - bl FUN_02002E4C + bl GetFontAttribute add r2, r0, #0 ldr r0, [r5, #0x40] add r1, r4, #0 bl FUN_02002E14 add r7, r0, #0 ldr r0, [r5, #0x10] - bl FUN_0201AB0C + bl GetWindowWidth lsl r0, r0, #3 sub r3, r0, r7 ldr r0, [r5, #0x24] diff --git a/arm9/modules/84/asm/module_84_thumb2.s b/arm9/modules/84/asm/module_84_thumb2.s index 66e7a196..82d292c6 100644 --- a/arm9/modules/84/asm/module_84_thumb2.s +++ b/arm9/modules/84/asm/module_84_thumb2.s @@ -559,7 +559,7 @@ MOD84_021D84F8: ; 0x021D84F8 str r0, [r4, #0x30] mov r0, #0x4b mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #0x24] mov r3, #0 lsl r2, r5, #0x18 @@ -577,14 +577,14 @@ MOD84_021D84F8: ; 0x021D84F8 bl FUN_02019064 ldr r0, [r4, #0x24] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, [r4, #0x24] bl FUN_02019270 ldr r0, [r4, #0x24] bl CopyWindowToVram mov r0, #0x4b mov r1, #1 - bl FUN_02018FF4 + bl AllocWindows str r0, [r4, #0x28] mov r3, #0 lsl r2, r5, #0x18 @@ -712,7 +712,7 @@ _021D864C: ble _021D86D0 ldr r0, [r5, #0x28] mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer mov r1, #0 str r1, [sp] mov r0, #0xff @@ -750,7 +750,7 @@ _021D864C: ldr r0, [r5, #0x24] ldr r1, [r1, #0xc] lsr r3, r3, #0x10 - bl FUN_02019658 + bl BlitBitmapRectToWindow _021D86D0: mov r1, #1 str r1, [r5, #0x18] @@ -786,7 +786,7 @@ _021D86E0: ldr r0, [r5, #0x24] add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect b _021D8754 _021D8718: add r1, r3, #0 @@ -803,7 +803,7 @@ _021D8718: ldr r0, [r5, #0x24] add r2, r1, #0 lsr r3, r3, #0x10 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #0 mov r0, #1 lsl r0, r0, #8 @@ -816,7 +816,7 @@ _021D8718: ldr r0, [r5, #0x24] add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect _021D8754: mov r0, #1 str r0, [r5, #0x18] @@ -880,7 +880,7 @@ MOD84_021D87B0: ; 0x021D87B0 beq _021D87CE ldr r0, [r5, #0x24] mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r4, _021D8814 ; =0x0001020F b _021D87D0 _021D87CE: diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s index adb49508..a7798340 100644 --- a/arm9/modules/85/asm/module_85.s +++ b/arm9/modules/85/asm/module_85.s @@ -847,7 +847,7 @@ MOD85_021D7BEC: ; 0x021D7BEC add r0, r4, #0 add r0, #8 mov r1, #0xf - bl FUN_02019620 + bl FillWindowPixelBuffer ldr r0, _021D7C40 ; =0x00000408 ldr r2, [r4, #0x18] ldr r0, [r5, r0] @@ -884,7 +884,7 @@ MOD85_021D7C44: ; 0x021D7C44 add r0, r5, r4 add r0, #8 mov r1, #0 - bl FUN_02019620 + bl FillWindowPixelBuffer add r0, r5, r4 add r0, #8 bl FUN_02019220 diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s index 08651acb..db86339d 100644 --- a/arm9/modules/86/asm/module_86.s +++ b/arm9/modules/86/asm/module_86.s @@ -504,7 +504,7 @@ MOD86_021D78D4: ; 0x021D78D4 add r0, #0x14 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect mov r1, #4 add r0, sp, #8 strb r1, [r0] @@ -523,7 +523,7 @@ MOD86_021D78D4: ; 0x021D78D4 add r0, r4, #0 add r2, r1, #0 add r3, r1, #0 - bl FUN_020196F4 + bl FillWindowPixelRect add sp, #0x10 pop {r4, pc} .align 2, 0 diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c index ce188876..f0ac9472 100644 --- a/arm9/src/GX_layers.c +++ b/arm9/src/GX_layers.c @@ -1,4 +1,7 @@ #include "GX_layers.h" +#include "GX_vramcnt.h" +#include "gx.h" +#include "main.h" struct GX_LayerData layer_data; diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index f70fec0f..28627d6b 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -2,36 +2,28 @@ #include "GX_layers.h" #include "unk_02031734.h" #include "unk_0202F150.h" +#include "unk_02016B94.h" -const u32 UNK_020FF49C[2] = { 0x1a030300, 0x00230112 }; +const struct UnkStruct_02016B94_4 UNK_020FF49C = { 0, 3, 3, 0x1a, 0x12, 1, 0x23 }; const u32 UNK_020FF4A4[2] = { 0x00020000, 0x00000000 }; const struct GraphicsModes UNK_020FF4AC = { mode1 : 1 }; -const u32 UNK_020FF4BC[7] = { 0x00, 0x00, 0x0800, 0x00, 0x06000001, 0x0100, 0x00 }; +const struct UnkStruct_02016B94_1 UNK_020FF4BC = { 0, 0, 0x800, 0, 1, 0, 0, 6, 0, 1, 0, 0, 0 }; const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 }; u32 sErrorMessagePrinterLock; extern void FUN_0200E3A0(PMLCDTarget, int); -extern u32 *FUN_02016B94(u32 param0); -extern void FUN_02016BBC(const struct GraphicsModes *modes); -extern void FUN_02016C18(u32 *param0, u32 param1, void *param2, u32 param3); -extern void FUN_02018744(u32 *param0, u32 param1); -extern void FUN_0200CB00(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); +extern void FUN_0200CB00(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); -extern void FUN_02017F18(u32 param0, u32 param1, u32 param2, u32 param3); -extern void FUN_02017FE4(u32 param0, u32 param1); -extern void FUN_02019150(u32 *param0, u32 *param1, const u32 *param2); -extern void FUN_020196F4(u32 *, u8, u16, u16, u16, u16); -extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); +extern void FUN_0200CCA4(struct Window *param0, u32 param1, u32 param2, u32 param3); extern void FUN_0200E394(u32 param0); extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); -extern void FUN_02019178(u32 *param0); THUMB_FUNC void VBlankHandler() { @@ -43,8 +35,8 @@ THUMB_FUNC void VBlankHandler() THUMB_FUNC void PrintErrorMessageAndReset() { - u32 *ptr; - u32 buf[4]; + struct UnkStruct_02016B94_2 *ptr; + struct Window buf; if (sErrorMessagePrinterLock != 1) { @@ -83,7 +75,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() ptr = FUN_02016B94(0); FUN_02016BBC(&UNK_020FF4AC); - FUN_02016C18(ptr, 0, UNK_020FF4BC, 0); + FUN_02016C18(ptr, 0, &UNK_020FF4BC, 0); FUN_02018744(ptr, 0); FUN_0200CB00(ptr, 0, 503, 2, 0, 0); @@ -97,13 +89,13 @@ THUMB_FUNC void PrintErrorMessageAndReset() struct String *str = String_ctor(6 << 6, 0); FUN_0201BD5C(); - FUN_02019150(ptr, buf, UNK_020FF49C); - FUN_020196F4(buf, 15, 0, 0, 0xd0, 0x90); - FUN_0200CCA4(buf, 0, 0x1f7, 2); + FUN_02019150(ptr, &buf, &UNK_020FF49C); + FillWindowPixelRect(&buf, 15, 0, 0, 0xd0, 0x90); + FUN_0200CCA4(&buf, 0, 0x1f7, 2); ReadMsgDataIntoString(msg_data, 3, str); - AddTextPrinterParameterized((u32)buf, 0, (const u16 *)str, 0, 0, 0, NULL); // wtf + AddTextPrinterParameterized(&buf, 0, str, 0, 0, 0, NULL); String_dtor(str); GX_BothDispOn(); @@ -133,7 +125,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF); - FUN_02019178(buf); + FUN_02019178(&buf); DestroyMsgData(msg_data); FreeToHeap(ptr); diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c index a7508fab..12d18629 100644 --- a/arm9/src/game_init.c +++ b/arm9/src/game_init.c @@ -141,7 +141,7 @@ void FUN_02015FC8(void) { csum++; } - FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, (int)csum); + FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, csum); } void InitSystemForTheGame(void) @@ -203,7 +203,7 @@ void * FUN_020161A4(u32 heap_id, const char * path) { if (size != FS_ReadFile(&file, ret, (s32)size)) { - FUN_02016A8C(heap_id, ret); + FreeToHeapExplicit(heap_id, ret); ret = NULL; } } @@ -344,8 +344,8 @@ void FUN_020163BC(void) gMain.unk3C = 0; gMain.unk40 = 0; gMain.unk44 = 0; - gMain.unk48 = 0; - gMain.unk4C = 0; + gMain.newKeys = 0; + gMain.newAndRepeatedKeys = 0; gMain.unk50 = 0; gMain.unk54 = 8; gMain.unk58 = 15; @@ -387,9 +387,9 @@ void FUN_02016464(void) TPData raw, calib; if (PAD_DetectFold()) { - gMain.unk48 = 0; + gMain.newKeys = 0; gMain.unk44 = 0; - gMain.unk4C = 0; + gMain.newAndRepeatedKeys = 0; gMain.unk60 = 0; gMain.unk62 = 0; return; @@ -409,9 +409,9 @@ void FUN_02016464(void) gMain.unk50 = gMain.unk58; } gMain.unk38 = r0; - gMain.unk48 = gMain.unk3C; + gMain.newKeys = gMain.unk3C; gMain.unk44 = r0; - gMain.unk4C = gMain.unk40; + gMain.newAndRepeatedKeys = gMain.unk40; FUN_02016568(); if (gMain.unk64 == 0) { @@ -453,26 +453,26 @@ void FUN_02016568(void) case 0: // Normal break; case 1: // Start = X - if (gMain.unk48 & PAD_BUTTON_START) - gMain.unk48 |= PAD_BUTTON_X; + if (gMain.newKeys & PAD_BUTTON_START) + gMain.newKeys |= PAD_BUTTON_X; if (gMain.unk44 & PAD_BUTTON_START) gMain.unk44 |= PAD_BUTTON_X; - if (gMain.unk4C & PAD_BUTTON_START) - gMain.unk4C |= PAD_BUTTON_X; + if (gMain.newAndRepeatedKeys & PAD_BUTTON_START) + gMain.newAndRepeatedKeys |= PAD_BUTTON_X; break; case 2: // Swap X and Y; unused in the retail game { u32 r1 = 0; - if (gMain.unk48 & PAD_BUTTON_X) + if (gMain.newKeys & PAD_BUTTON_X) { r1 |= PAD_BUTTON_Y; } - if (gMain.unk48 & PAD_BUTTON_Y) + if (gMain.newKeys & PAD_BUTTON_Y) { r1 |= PAD_BUTTON_X; } - gMain.unk48 &= 0xF3FF; - gMain.unk48 |= r1; + gMain.newKeys &= 0xF3FF; + gMain.newKeys |= r1; } { u32 r1 = 0; @@ -489,28 +489,28 @@ void FUN_02016568(void) } { u32 r1 = 0; - if (gMain.unk4C & PAD_BUTTON_X) + if (gMain.newAndRepeatedKeys & PAD_BUTTON_X) { r1 |= PAD_BUTTON_Y; } - if (gMain.unk4C & PAD_BUTTON_Y) + if (gMain.newAndRepeatedKeys & PAD_BUTTON_Y) { r1 |= PAD_BUTTON_X; } - gMain.unk4C &= 0xF3FF; - gMain.unk4C |= r1; + gMain.newAndRepeatedKeys &= 0xF3FF; + gMain.newAndRepeatedKeys |= r1; } break; case 3: // L = A - if (gMain.unk48 & PAD_BUTTON_L) - gMain.unk48 |= PAD_BUTTON_A; + if (gMain.newKeys & PAD_BUTTON_L) + gMain.newKeys |= PAD_BUTTON_A; if (gMain.unk44 & PAD_BUTTON_L) gMain.unk44 |= PAD_BUTTON_A; - if (gMain.unk4C & PAD_BUTTON_L) - gMain.unk4C |= PAD_BUTTON_A; - gMain.unk48 &= 0xFCFF; + if (gMain.newAndRepeatedKeys & PAD_BUTTON_L) + gMain.newAndRepeatedKeys |= PAD_BUTTON_A; + gMain.newKeys &= 0xFCFF; gMain.unk44 &= 0xFCFF; - gMain.unk4C &= 0xFCFF; + gMain.newAndRepeatedKeys &= 0xFCFF; } } diff --git a/arm9/src/heap.c b/arm9/src/heap.c index 895ce808..f28b4f88 100644 --- a/arm9/src/heap.c +++ b/arm9/src/heap.c @@ -309,7 +309,7 @@ void FreeToHeap(void *ptr) ErrorHandling(); } -void FUN_02016A8C(u32 param0, void *param1) +void FreeToHeapExplicit(u32 param0, void *param1) { GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ); diff --git a/arm9/src/itemtool.c b/arm9/src/itemtool.c index 6b892d6d..9982ff40 100644 --- a/arm9/src/itemtool.c +++ b/arm9/src/itemtool.c @@ -778,7 +778,7 @@ u32 GetItemAttr(u16 item, u32 attr, u32 heap_id) u32 ret; struct ItemData * itemData = (struct ItemData *)LoadItemDataOrGfx(item, 0, heap_id); ret = GetItemAttr_PreloadedItemData(itemData, attr); - FUN_02016A8C(heap_id, itemData); + FreeToHeapExplicit(heap_id, itemData); return ret; } diff --git a/arm9/src/list_menu.c b/arm9/src/list_menu.c new file mode 100644 index 00000000..033d06f9 --- /dev/null +++ b/arm9/src/list_menu.c @@ -0,0 +1,572 @@ +#include "global.h" +#include "heap.h" +#include "main.h" +#include "list_menu.h" +#include "text.h" + +void ListMenuPrintEntries(struct ListMenu * list, u16 startIndex, u16 yOffset, u16 count); +void ListMenuDrawCursor(struct ListMenu * list); +BOOL ListMenuChangeSelection(struct ListMenu * list, u8 updateCursorAndCallCallback, u8 count, u8 movingDown); +void ListMenuCallSelectionChangedCallback(struct ListMenu * list, u8 onInit); + +static inline u32 MakeFontColor(u32 fgPal, u32 shdwPal, u32 bgPal) +{ + return (u32)( + ((u32)(fgPal << 24) >> 8) + | ((u32)(shdwPal << 24) >> 16) + | ((u32)(bgPal << 24) >> 24) + ); +} + +THUMB_FUNC struct ListMenu * ListMenuInit(const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u32 heap_id) +{ + struct ListMenu * list = AllocFromHeap(heap_id, sizeof(struct ListMenu)); + list->template = *template; + list->cursor = ListMenuCursorNew(heap_id); + list->cursorPos = cursorPos; + list->itemsAbove = itemsAbove; + list->unk_30 = 0; + list->unk_31 = 0; + list->taskId = 0xFF; + list->unk_33 = 0; + list->heap_id = (u8)heap_id; + list->cursorPal = list->template.cursorPal; + list->fillValue = list->template.fillValue; + list->cursorShadowPal = list->template.cursorShadowPal; + list->lettersSpacing = list->template.lettersSpacing; + list->fontId = list->template.fontId; + list->overrideEnabled = FALSE; + if (list->template.totalItems < list->template.maxShowed) + list->template.maxShowed = list->template.totalItems; + ListMenuCursorSetColor( + list->cursor, +// MakeFontColor(list->template.cursorPal, list->template.cursorShadowPal, list->fillValue) + (u32)( + ((u32)(list->template.cursorPal << 24) >> 8) + | ((u32)(list->template.cursorShadowPal << 24) >> 16) + | ((u32)(list->template.fillValue << 24) >> 24) + ) + ); + FillWindowPixelBuffer(list->template.window, list->template.fillValue); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); + ListMenuDrawCursor(list); + ListMenuCallSelectionChangedCallback(list, TRUE); + CopyWindowToVram(template->window); + return list; +} + +THUMB_FUNC s32 ListMenu_ProcessInput(struct ListMenu * list) +{ + list->unk_33 = 0; + + if (gMain.newKeys & REG_PAD_KEYINPUT_A_MASK) { + return list->template.items[list->cursorPos + list->itemsAbove].value; + } + else if (gMain.newKeys & REG_PAD_KEYINPUT_B_MASK) { + return LIST_CANCEL; + } + else if (gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_UP_MASK) { + if (!ListMenuChangeSelection(list, TRUE, 1, FALSE)) + list->unk_33 = 1; + return LIST_NOTHING_CHOSEN; + } + else if (gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_DOWN_MASK) { + if (!ListMenuChangeSelection(list, TRUE, 1, TRUE)) + list->unk_33 = 2; + return LIST_NOTHING_CHOSEN; + } + else + { + u16 rightButton, leftButton; + switch (list->template.scrollMultiple) + { + case LIST_NO_MULTIPLE_SCROLL: + default: + leftButton = FALSE; + rightButton = FALSE; + break; + case LIST_MULTIPLE_SCROLL_DPAD: + leftButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_LEFT_MASK); + rightButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_RIGHT_MASK); + break; + case LIST_MULTIPLE_SCROLL_L_R: + leftButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_L_MASK); + rightButton = (u16)(gMain.newAndRepeatedKeys & REG_PAD_KEYINPUT_R_MASK); + break; + } + if (leftButton) + { + if (!ListMenuChangeSelection(list, TRUE, (u8)list->template.maxShowed, FALSE)) + list->unk_33 = 3; + return LIST_NOTHING_CHOSEN; + } + else if (rightButton) + { + if (!ListMenuChangeSelection(list, TRUE, (u8)list->template.maxShowed, TRUE)) + list->unk_33 = 4; + return LIST_NOTHING_CHOSEN; + } + else + { + return LIST_NOTHING_CHOSEN; + } + } +} + +THUMB_FUNC void DestroyListMenu(struct ListMenu * list, u16 * cursorPos, u16 * itemsAbove) +{ + if (cursorPos != NULL) + *cursorPos = list->cursorPos; + if (itemsAbove != NULL) + *itemsAbove = list->itemsAbove; + DestroyListMenuCursorObj(list->cursor); + FreeToHeapExplicit(list->heap_id, list); +} + +THUMB_FUNC void RedrawListMenu(struct ListMenu * list) +{ + FillWindowPixelBuffer(list->template.window, list->template.fillValue); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); + ListMenuDrawCursor(list); + CopyWindowToVram(list->template.window); +} + +THUMB_FUNC s32 ListMenuTestInputInternal(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 *newCursorPos, u16 *newItemsAbove) +{ + if (template != NULL) + list->template = *template; + list->cursorPos = cursorPos; + list->itemsAbove = itemsAbove; + list->unk_30 = 0; + list->unk_31 = 0; + + if (input == REG_PAD_KEYINPUT_UP_MASK) + { + ListMenuChangeSelection(list, (u8)updateFlag, 1, FALSE); + } + else if (input == REG_PAD_KEYINPUT_DOWN_MASK) + { + ListMenuChangeSelection(list, (u8)updateFlag, 1, TRUE); + } + if (newCursorPos != NULL) + { + *newCursorPos = list->cursorPos; + } + if (newItemsAbove != NULL) + { + *newItemsAbove = list->itemsAbove; + } + return -1; +} + +THUMB_FUNC s32 ListMenuTestInput(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 input, u16 *newCursorPos, u16 *newItemsAbove) +{ + return ListMenuTestInputInternal(list, template, cursorPos, itemsAbove, FALSE, input, newCursorPos, newItemsAbove); +} + +THUMB_FUNC void ListMenuOverrideSetColors(struct ListMenu * list, u8 cursorPal, u8 fillValue, u8 cursorShadowPal) +{ + list->cursorPal = cursorPal; + list->fillValue = fillValue; + list->cursorShadowPal = cursorShadowPal; + list->overrideEnabled = TRUE; +} + +THUMB_FUNC void ListMenuGetCurrentItemArrayId(struct ListMenu * list, u16 * index_p) +{ + *index_p = (u16)(list->cursorPos + list->itemsAbove); +} + +THUMB_FUNC void ListMenuGetScrollAndRow(struct ListMenu * list, u16 * cursorPos_p, u16 * itemsAbove_p) +{ + if (cursorPos_p != NULL) + *cursorPos_p = list->cursorPos; + if (itemsAbove_p != NULL) + *itemsAbove_p = list->itemsAbove; +} + +THUMB_FUNC u8 ListMenuGetUnk33(struct ListMenu * list) +{ + return list->unk_33; +} + +THUMB_FUNC s32 ListMenuGetValueByArrayId(struct ListMenu * list, s32 index) +{ + return list->template.items[index].value; +} + +THUMB_FUNC s32 ListMenuGetTemplateField(struct ListMenu * list, u32 attr) +{ + switch (attr) + { + case 0: + return (s32)list->template.moveCursorFunc; + case 1: + return (s32)list->template.itemPrintFunc; + case 2: + return (s32)list->template.totalItems; + case 3: + return (s32)list->template.maxShowed; + case 4: + break; + case 5: + return (s32)list->template.header_X; + case 6: + return (s32)list->template.item_X; + case 7: + return (s32)list->template.cursor_X; + case 8: + return (s32)list->template.upText_Y; + case 9: + return GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding; + case 10: + return (s32)list->template.cursorPal; + case 11: + return (s32)list->template.fillValue; + case 12: + return (s32)list->template.cursorShadowPal; + case 13: + return (s32)list->template.lettersSpacing; + case 14: + return (s32)list->template.itemVerticalPadding; + case 15: + return (s32)list->template.scrollMultiple; + case 16: + return (s32)list->template.fontId; + case 17: + return (s32)list->template.cursorKind; + case 18: + return (s32)list->template.window; + case 19: + return (s32)list->template.unk_1C; + } + + return -1; +} + +THUMB_FUNC void ListMenuSetTemplateField(struct ListMenu * list, u32 attr, s32 value) +{ + switch (attr) + { + case 0: + list->template.moveCursorFunc = (LM_MoveCursorFunc_t)value; + break; + case 1: + list->template.itemPrintFunc = (LM_ItemPrintFunc_t)value; + break; + case 2: + list->template.totalItems = (u16)value; + break; + case 3: + list->template.maxShowed = (u16)value; + break; + case 4: + break; + case 5: + list->template.header_X = (u8)value; + break; + case 6: + list->template.item_X = (u8)value; + break; + case 7: + list->template.cursor_X = (u8)value; + break; + case 8: + list->template.upText_Y = (u8)value; + break; + case 9: + break; + case 10: + list->template.cursorPal = (u8)value; + break; + case 11: + list->template.fillValue = (u8)value; + break; + case 12: + list->template.cursorShadowPal = (u8)value; + break; + case 13: + list->template.lettersSpacing = (u8)value; + break; + case 14: + list->template.itemVerticalPadding = (u8)value; + break; + case 15: + list->template.scrollMultiple = (u8)value; + break; + case 16: + list->template.fontId = (u8)value; + break; + case 17: + list->template.cursorKind = (u8)value; + break; + case 18: + list->template.window = (struct Window *)value; + break; + case 19: + list->template.unk_1C = (u32)value; + break; + } +} + +THUMB_FUNC void ListMenuGetItemStr(struct ListMenu * list, struct ListMenuItem * items) +{ + list->template.items = items; +} + +THUMB_FUNC void ListMenuPrint(struct ListMenu * list, struct String * str, u8 x, u8 y) +{ + if (str != NULL) + { + if (list->overrideEnabled) + { + AddTextPrinterParameterized3(list->template.window, list->fontId, str, x, y, 0xFF, MakeFontColor(list->cursorPal, list->cursorShadowPal, list->fillValue), list->lettersSpacing, 0, NULL); + } + else + { + AddTextPrinterParameterized3(list->template.window, list->template.fontId, str, x, y, 0xFF, MakeFontColor(list->template.cursorPal, list->template.cursorShadowPal, list->template.fillValue), list->template.lettersSpacing, 0, NULL); + } + } +} + +THUMB_FUNC void ListMenuPrintEntries(struct ListMenu * list, u16 startIndex, u16 yOffset, u16 count) +{ + s32 i; + u8 x, y; + u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding); + + for (i = 0; i < count; i++) + { + if (list->template.items[startIndex].value != LIST_HEADER) + x = list->template.item_X; + else + x = list->template.header_X; + y = (u8)((yOffset + i) * yMultiplier + list->template.upText_Y); + if (list->template.itemPrintFunc != NULL) + list->template.itemPrintFunc(list, list->template.items[startIndex].value, y); + ListMenuPrint(list, list->template.items[startIndex].text, x, y); + startIndex++; + } +} + +THUMB_FUNC void ListMenuDrawCursor(struct ListMenu * list) +{ + u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding); + u8 x = list->template.cursor_X; + u8 y = (u8)(list->itemsAbove * yMultiplier + list->template.upText_Y); + switch (list->template.cursorKind) + { + case 0: + ListMenuUpdateCursorObj(list->cursor, list->template.window, x, y); + break; + case 1: + case 2: // leftover + case 3: // leftover + break; + } +} + +THUMB_FUNC void ListMenuErasePrintedCursor(struct ListMenu * list, u16 itemsAbove) +{ + switch (list->template.cursorKind) + { + case 0: + u8 yMultiplier = (u8)(GetFontAttribute(list->template.fontId, 1) + list->template.itemVerticalPadding); + u8 width = 8; + u8 height = 16; + FillWindowPixelRect(list->template.window, + list->template.fillValue, + list->template.cursor_X, + (u16)(itemsAbove * yMultiplier + list->template.upText_Y), + width, + height); + break; + case 1: + case 2: // leftover + case 3: // leftover + break; + } +} + +THUMB_FUNC u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, u8 movingDown) +{ + u32 cursorPos; + u16 itemsAbove; + u16 newRow; + + itemsAbove = list->itemsAbove; + cursorPos = list->cursorPos; + + if (!movingDown) + { + if (list->template.maxShowed == 1) + newRow = 0; + else + newRow = (u16)(list->template.maxShowed - ((list->template.maxShowed / 2) + (list->template.maxShowed % 2)) - 1); + + if (cursorPos == 0) + { + while (itemsAbove != 0) + { + itemsAbove--; + if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER) + { + list->itemsAbove = itemsAbove; + return 1; + } + } + return 0; + } + else + { + while (itemsAbove > newRow) + { + itemsAbove--; + if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER) + { + list->itemsAbove = itemsAbove; + return 1; + } + } + list->itemsAbove = newRow; + list->cursorPos = (u16)(cursorPos - 1); + } + } + else + { + if (list->template.maxShowed == 1) + newRow = 0; + else + newRow = (u16)((list->template.maxShowed / 2) + (list->template.maxShowed % 2)); + + if (cursorPos == list->template.totalItems - list->template.maxShowed) + { + while (itemsAbove < list->template.maxShowed - 1) + { + itemsAbove++; + if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER) + { + list->itemsAbove = itemsAbove; + return 1; + } + } + return 0; + } + else + { + while (itemsAbove < newRow) + { + itemsAbove++; + if (list->template.items[cursorPos + itemsAbove].value != LIST_HEADER) + { + list->itemsAbove = itemsAbove; + return 1; + } + } + list->itemsAbove = newRow; + list->cursorPos = (u16)(cursorPos + 1); + } + } + return 2; +} + +THUMB_FUNC void ListMenuScroll(struct ListMenu * list, u8 count, u8 movingDown) +{ + if (count >= list->template.maxShowed) + { + FillWindowPixelBuffer(list->template.window, list->template.fillValue); + ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed); + } + else + { + u8 yMultiplier = (u8)(GetFontAttribute((u8)list->template.fontId, 1) + list->template.itemVerticalPadding); + + if (!movingDown) + { + u16 y, width, height; + + ScrollWindow(list->template.window, 1, (u8)(count * yMultiplier), (u8)((list->template.fillValue << 4) | list->template.fillValue)); + ListMenuPrintEntries(list, list->cursorPos, 0, count); + + y = (u16)((list->template.maxShowed * yMultiplier) + list->template.upText_Y); + width = GetWindowWidth(list->template.window); + height = GetWindowHeight(list->template.window); + FillWindowPixelRect(list->template.window, + list->template.fillValue, + 0, y, (u16)(width * 8), (u16)(height * 8 - y)); + } + else + { + u32 width; + + ScrollWindow(list->template.window, 0, (u8)(count * yMultiplier), (u8)((list->template.fillValue << 4) | list->template.fillValue)); + ListMenuPrintEntries(list, (u16)(list->cursorPos + (list->template.maxShowed - count)), (u16)(list->template.maxShowed - count), count); + + width = GetWindowWidth(list->template.window); + FillWindowPixelRect(list->template.window, + list->template.fillValue, + 0, 0, (u16)(width * 8), list->template.upText_Y); + } + } +} + +THUMB_FUNC BOOL ListMenuChangeSelection(struct ListMenu * list, u8 updateCursorAndCallCallback, u8 count, u8 movingDown) +{ + u16 oldSelectedRow; + u8 selectionChange, i, cursorCount; + + oldSelectedRow = list->itemsAbove; + cursorCount = 0; + selectionChange = 0; + for (i = 0; i < count; i++) + { + do + { + u8 ret = ListMenuUpdateSelectedRowIndexAndScrollOffset(list, movingDown); + + selectionChange |= ret; + if (ret != 2) + break; + cursorCount++; + } + while (list->template.items[list->cursorPos + list->itemsAbove].value == LIST_HEADER); + } + + if (updateCursorAndCallCallback) + { + switch (selectionChange) + { + case 0: + default: + return TRUE; + case 1: + ListMenuErasePrintedCursor(list, oldSelectedRow); + ListMenuDrawCursor(list); + ListMenuCallSelectionChangedCallback(list, FALSE); + CopyWindowToVram(list->template.window); + break; + case 2: + case 3: + ListMenuErasePrintedCursor(list, oldSelectedRow); + ListMenuScroll(list, cursorCount, movingDown); + ListMenuDrawCursor(list); + ListMenuCallSelectionChangedCallback(list, FALSE); + CopyWindowToVram(list->template.window); + break; + } + } + return FALSE; +} + +THUMB_FUNC void ListMenuCallSelectionChangedCallback(struct ListMenu * list, u8 onInit) +{ + if (list->template.moveCursorFunc != NULL) + { + list->template.moveCursorFunc(list, list->template.items[list->cursorPos + list->itemsAbove].value, onInit); + } +} + +THUMB_FUNC void ListMenuCopyToVram(struct ListMenu * list) +{ + CopyWindowToVram(list->template.window); +} diff --git a/arm9/src/list_menu_items.c b/arm9/src/list_menu_items.c new file mode 100644 index 00000000..3aa5b0a0 --- /dev/null +++ b/arm9/src/list_menu_items.c @@ -0,0 +1,92 @@ +#include "global.h" +#include "list_menu_items.h" +#include "msgdata.h" +#include "heap.h" + +void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items); + +THUMB_FUNC struct ListMenuItem * ListMenuItems_ctor(u32 count, u32 heap_id) +{ + s32 i; + struct ListMenuItem * ret = AllocFromHeap(heap_id, (count + 1) * sizeof(struct ListMenuItem)); + if (ret != NULL) + { + for (i = 0; i < count; i++) + { + ret[i].text = NULL; + ret[i].value = 0; + } + ret[i].text = (struct String *)-1u; + ret[i].value = (s32)heap_id; + } + return ret; +} + +THUMB_FUNC void ListMenuItems_dtor(struct ListMenuItem * items) +{ + ListMenuItems_DestroyMenuStrings(items); + FreeToHeap(items); +} + +THUMB_FUNC void ListMenuItems_AppendFromMsgData(struct ListMenuItem * items, struct MsgData * msgData, u32 msgNo, s32 value) +{ + u32 heap_id; + struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id); + if (newItem != NULL) + { + newItem->text = NewString_ReadMsgData(msgData, msgNo); + newItem->value = value; + } +} + +THUMB_FUNC void ListMenuItems_AddItem(struct ListMenuItem * items, struct String * str, s32 value) +{ + u32 heap_id; + struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id); + if (newItem != NULL) + { + newItem->text = StringDup(str, heap_id); + newItem->value = value; + } +} + +THUMB_FUNC void ListMenuItems_CopyItem(struct ListMenuItem * items, struct ListMenuItem * src) +{ + u32 heap_id; + struct ListMenuItem * newItem = ListMenuItems_SeekEnd(items, &heap_id); + if (newItem != NULL) + { + newItem->text = src->text; + newItem->value = src->value; + } +} + +THUMB_FUNC struct ListMenuItem * ListMenuItems_SeekEnd(struct ListMenuItem * items, u32 * heap_id_p) +{ + struct ListMenuItem * ret; + for (; items->text != NULL; items++) + { + if (items->text == (struct String *)-1u) + { + GF_ASSERT(0); + return NULL; + } + } + ret = items; + for (; items->text != (struct String *)-1u; items++) + ; + *heap_id_p = (u32)items->value; + return ret; +} + +THUMB_FUNC void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items) +{ + s32 i; + for (i = 0; items[i].text != (struct String *)-1u; i++) + { + if (items[i].text == NULL) + break; + String_dtor(items[i].text); + items[i].text = NULL; + } +} diff --git a/arm9/src/main.c b/arm9/src/main.c index 117535b2..c05fa1f3 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -22,7 +22,9 @@ FS_EXTERN_OVERLAY(MODULE_63); #define SOFT_RESET_KEY (PAD_BUTTON_L | PAD_BUTTON_R | PAD_BUTTON_START | PAD_BUTTON_SELECT) -struct Unk2106FA0 gBacklightTop; +s32 UNK_02016FA4; +PMBackLightSwitch gBacklightTop; +struct UnkStruct_02016FA8 UNK_02016FA8; extern void InitSystemForTheGame(void); extern void InitGraphicMemory(void); @@ -52,6 +54,7 @@ extern u8 SDK_STATIC_BSS_START[]; const int gGameLanguage = GAME_LANGUAGE; const int gGameVersion = GAME_VERSION; +__declspec(noreturn) THUMB_FUNC void NitroMain(void) { InitSystemForTheGame(); @@ -68,13 +71,13 @@ THUMB_FUNC void NitroMain(void) FUN_02002C50(0, 3); FUN_02002C50(1, 3); FUN_02002C50(3, 3); - gBacklightTop.unk18 = -1; - gBacklightTop.unk20 = SaveBlock2_new(); - InitSoundData(FUN_02029EF8(gBacklightTop.unk20), Sav2_PlayerData_GetOptionsAddr(gBacklightTop.unk20)); + UNK_02016FA8.unk10 = -1; + UNK_02016FA8.unk18 = SaveBlock2_new(); + InitSoundData(FUN_02029EF8(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18)); Init_Timer3(); if (FUN_020337E8(3) == 3) FUN_02034188(3, 0); - if (FUN_020227FC(gBacklightTop.unk20) == 0) + if (FUN_020227FC(UNK_02016FA8.unk18) == 0) { FUN_02089D90(0); } @@ -84,12 +87,12 @@ THUMB_FUNC void NitroMain(void) { case 0: // Title Demo - gBacklightTop.unk1C = 0; + UNK_02016FA8.unk14 = 0; RegisterMainOverlay(FS_OVERLAY_ID(MODULE_63), &MOD63_021DBE18); break; case 1: // Reset transition? - gBacklightTop.unk1C = 1; + UNK_02016FA8.unk14 = 1; RegisterMainOverlay(FS_OVERLAY_ID(MODULE_52), &MOD52_021D76C8); break; default: @@ -102,7 +105,7 @@ THUMB_FUNC void NitroMain(void) InitializeMainRNG(); FUN_0200A2AC(); FUN_02015E30(); - gBacklightTop.unk4 = 0; + UNK_02016FA4 = 0; for (;;) { FUN_02000EE8(); @@ -141,40 +144,40 @@ THUMB_FUNC void NitroMain(void) THUMB_FUNC void FUN_02000DF4(void) { - gBacklightTop.unk8 = (FSOverlayID)-1; - gBacklightTop.unkC = 0; - gBacklightTop.unk10 = (FSOverlayID)-1; // overlay invalid - gBacklightTop.unk14 = NULL; + UNK_02016FA8.unk0 = SDK_OVERLAY_INVALID_ID; + UNK_02016FA8.unk4 = NULL; + UNK_02016FA8.unk8 = SDK_OVERLAY_INVALID_ID; // overlay invalid + UNK_02016FA8.unkC = NULL; } THUMB_FUNC void Main_RunOverlayManager(void) { - if (!gBacklightTop.unkC) + if (UNK_02016FA8.unk4 == NULL) { - if (gBacklightTop.unk14 == NULL) + if (UNK_02016FA8.unkC == NULL) return; - if (gBacklightTop.unk10 != SDK_OVERLAY_INVALID_ID) - HandleLoadOverlay(gBacklightTop.unk10, 0); - gBacklightTop.unk8 = gBacklightTop.unk10; - gBacklightTop.unkC = OverlayManager_new(gBacklightTop.unk14, &gBacklightTop.unk18, 0); - gBacklightTop.unk10 = SDK_OVERLAY_INVALID_ID; - gBacklightTop.unk14 = NULL; + if (UNK_02016FA8.unk8 != SDK_OVERLAY_INVALID_ID) + HandleLoadOverlay(UNK_02016FA8.unk8, 0); + UNK_02016FA8.unk0 = UNK_02016FA8.unk8; + UNK_02016FA8.unk4 = OverlayManager_new(UNK_02016FA8.unkC, &UNK_02016FA8.unk10, 0); + UNK_02016FA8.unk8 = SDK_OVERLAY_INVALID_ID; + UNK_02016FA8.unkC = NULL; } - if (OverlayManager_Run(gBacklightTop.unkC)) + if (OverlayManager_Run(UNK_02016FA8.unk4)) { - OverlayManager_delete(gBacklightTop.unkC); - gBacklightTop.unkC = 0; - if (gBacklightTop.unk8 != SDK_OVERLAY_INVALID_ID) - UnloadOverlayByID(gBacklightTop.unk8); + OverlayManager_delete(UNK_02016FA8.unk4); + UNK_02016FA8.unk4 = NULL; + if (UNK_02016FA8.unk0 != SDK_OVERLAY_INVALID_ID) + UnloadOverlayByID(UNK_02016FA8.unk0); } } THUMB_FUNC void RegisterMainOverlay(FSOverlayID id, const struct Unk21DBE18 * arg1) { - if (gBacklightTop.unk14 != NULL) + if (UNK_02016FA8.unkC != NULL) ErrorHandling(); - gBacklightTop.unk10 = id; - gBacklightTop.unk14 = arg1; + UNK_02016FA8.unk8 = id; + UNK_02016FA8.unkC = arg1; } THUMB_FUNC void FUN_02000E9C(void) @@ -215,7 +218,7 @@ THUMB_FUNC void FUN_02000EE8(void) extern void FUN_0200E3A0(PMLCDTarget, int); -// No Return +__declspec(noreturn) THUMB_FUNC void DoSoftReset(u32 parameter) { FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); @@ -252,7 +255,7 @@ THUMB_FUNC void FUN_02000F4C(u32 arg0, u32 arg1) { HandleDSLidAction(); FUN_02016464(); - if (gMain.unk48 & 1) + if (gMain.newKeys & 1) break; FUN_02000E9C(); } @@ -289,10 +292,10 @@ THUMB_FUNC void HandleDSLidAction(void) FUN_0201CE04(); if (CTRDG_IsPulledOut() == TRUE) { - gBacklightTop.unk4 = 1; + UNK_02016FA4 = 1; } { - int r1 = gBacklightTop.unk4; + int r1 = UNK_02016FA4; while (1) { PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD; @@ -306,7 +309,7 @@ THUMB_FUNC void HandleDSLidAction(void) } else if (PAD_DetectFold()) { - r1 = gBacklightTop.unk4 = 1; + r1 = UNK_02016FA4 = 1; } else break; @@ -326,6 +329,6 @@ THUMB_FUNC void HandleDSLidAction(void) { PM_GetBackLight(&top, &bottom); if (top == PM_BACKLIGHT_OFF) - PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0); + PM_SetBackLight(PM_LCD_ALL, gBacklightTop); } } diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index fb88da54..75ddbc8e 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -4,6 +4,7 @@ #include "options.h" #include "player_data.h" #include "text.h" +#include "unk_02016B94.h" extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id); extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id); @@ -27,16 +28,14 @@ extern void FUN_02055304(u32 param0, u32 param1); extern void FUN_02039460(struct UnkSavStruct80 *arg); extern void FUN_020545B8(u32 param0, u8 *param1, u32 param2); extern void FUN_02054608(u8 *param0, struct Options *options); -extern void FUN_0200D0E0(u32 *param0, u32 param1); -extern void FUN_02019178(u32 *param0); -extern void FUN_020179E0(u32 param0, u32 param1, u32 param2, u16 val); +extern void FUN_0200D0E0(struct Window *param0, u32 param1); extern u32 FUN_02058510(u32 param0, u32 param1); extern void MOD05_021E8128(u32 param0, u8 type, u16 map); extern void MOD05_021E8130(u32 param0, u32 param1); extern void MOD05_021E8158(struct UnkSavStruct80 *unk80); -extern u32 MOD05_021E8140(u32 param0); +extern struct Window * MOD05_021E8140(u32 param0); extern BOOL MOD05_021E8148(u32 param0); -extern u8 FUN_02054658(u32 param0, struct String *str, struct Options *opt, u32 param3); +extern u8 FUN_02054658(struct Window * param0, struct String *str, struct Options *opt, u32 param3); extern void MOD05_021E8144(u32 param0); extern void FUN_0200CB00(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); extern u32 Std_CreateYesNoMenu(u32 param0, u8 **param1, u32 param2, u32 param3, u32 param4); @@ -676,7 +675,7 @@ THUMB_FUNC BOOL ScrCmd_WaitButtonAB(struct ScriptContext *ctx) THUMB_FUNC static BOOL FUN_0203A46C(struct ScriptContext *ctx) { #pragma unused(ctx) - if (gMain.unk48 & 0x3) // Mask (A | B) ? + if (gMain.newKeys & 0x3) // Mask (A | B) ? { return TRUE; } @@ -692,7 +691,7 @@ THUMB_FUNC BOOL ScrCmd_WaitButtonABTime(struct ScriptContext *ctx) THUMB_FUNC static BOOL FUN_0203A4AC(struct ScriptContext *ctx) { - if (gMain.unk48 & 0x3) // Mask (A | B) ? + if (gMain.newKeys & 0x3) // Mask (A | B) ? { return TRUE; } @@ -713,27 +712,27 @@ THUMB_FUNC BOOL ScrCmd_WaitButton(struct ScriptContext *ctx) THUMB_FUNC static BOOL FUN_0203A4E0(struct ScriptContext *ctx) { - if (gMain.unk48 & 3) + if (gMain.newKeys & 3) { return TRUE; } - else if (gMain.unk48 & 0x40) + else if (gMain.newKeys & 0x40) { FUN_02055304(ctx->unk80->unk38, 0); } - else if (gMain.unk48 & 0x80) + else if (gMain.newKeys & 0x80) { FUN_02055304(ctx->unk80->unk38, 1); } - else if (gMain.unk48 & 0x20) + else if (gMain.newKeys & 0x20) { FUN_02055304(ctx->unk80->unk38, 2); } - else if (gMain.unk48 & 0x10) + else if (gMain.newKeys & 0x10) { FUN_02055304(ctx->unk80->unk38, 3); } - else if (gMain.unk48 & 0x400) + else if (gMain.newKeys & 0x400) { FUN_02039460(ctx->unk80); } @@ -753,11 +752,11 @@ THUMB_FUNC BOOL ScrCmd_Unk0032(struct ScriptContext *ctx) THUMB_FUNC static BOOL FUN_0203A570(struct ScriptContext *ctx) { #pragma unused(ctx) - if (gMain.unk48 & 0x3) + if (gMain.newKeys & 0x3) { return TRUE; } - else if (gMain.unk48 & 0xf0) + else if (gMain.newKeys & 0xf0) { return TRUE; } @@ -777,7 +776,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0033(struct ScriptContext *ctx) THUMB_FUNC BOOL ScrCmd_Unk0034(struct ScriptContext* ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; - u32 *unk = FUN_02039438(unk80, 0x1); //windowID? + struct Window *unk = FUN_02039438(unk80, 0x1); u8 *unk2 = FUN_02039438(unk80, 0x6); FUN_0200D0E0(unk, 0); //clear window? FUN_02019178(unk); @@ -788,7 +787,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0034(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_Unk0035(struct ScriptContext* ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; - u32 *unk = FUN_02039438(unk80, 0x1); //windowID? + struct Window *unk = FUN_02039438(unk80, 0x1); u8 *unk2 = FUN_02039438(unk80, 0x6); FUN_02019178(unk); *unk2 = 0; @@ -893,7 +892,7 @@ THUMB_FUNC BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx) MOD05_021E8158(unk80); ReadMsgDataIntoString(ctx->msgData, msg, *unk1); StringExpandPlaceholders(*unk3, *unk2, *unk1); - AddTextPrinterParameterized(MOD05_021E8140(unk80->unk60), 1, (u16 *)*unk2, 0, 0, 0, NULL); + AddTextPrinterParameterized(MOD05_021E8140(unk80->unk60), 1, *unk2, 0, 0, 0, NULL); return TRUE; } @@ -973,19 +972,19 @@ THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext *ctx) return TRUE; } - if (gMain.unk48 & 0x40) + if (gMain.newKeys & 0x40) { tmp = 0; } - else if (gMain.unk48 & 0x80) + else if (gMain.newKeys & 0x80) { tmp = 1; } - else if (gMain.unk48 & 0x20) + else if (gMain.newKeys & 0x20) { tmp = 2; } - else if (gMain.unk48 & 0x10) + else if (gMain.newKeys & 0x10) { tmp = 3; } @@ -999,7 +998,7 @@ THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext *ctx) } else { - if (gMain.unk48 & 0x400) + if (gMain.newKeys & 0x400) { FUN_0201BD7C(*unk1); *varPtr = 1; @@ -1022,24 +1021,24 @@ THUMB_FUNC static BOOL FUN_0203AA0C(struct ScriptContext *ctx) u16 *unk = GetVarPointer(ctx->unk80, (u16)ctx->data[0]); u32 tmp = 0xFFFF; - if (gMain.unk48 & 0x3) + if (gMain.newKeys & 0x3) { *unk = 0; return TRUE; } - else if (gMain.unk48 & 0x40) + else if (gMain.newKeys & 0x40) { tmp = 0; } - else if (gMain.unk48 & 0x80) + else if (gMain.newKeys & 0x80) { tmp = 1; } - else if (gMain.unk48 & 0x20) + else if (gMain.newKeys & 0x20) { tmp = 2; } - else if (gMain.unk48 & 0x10) + else if (gMain.newKeys & 0x10) { tmp = 3; } @@ -1052,7 +1051,7 @@ THUMB_FUNC static BOOL FUN_0203AA0C(struct ScriptContext *ctx) } else { - if (gMain.unk48 & 0x400) + if (gMain.newKeys & 0x400) { *unk = 1; return TRUE; diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c index e9a55051..596056b1 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -12,6 +12,7 @@ #include "trainer_data.h" #include "script_buffers.h" #include "unk_02024E64.h" +#include "text.h" #pragma thumb on @@ -20,9 +21,7 @@ extern void GetECWordIntoStringByIndex(u32 a0, struct String * a1); extern void StringCat_HandleTrainerName(struct String * dest, const struct String * src); extern void StrAddChar(struct String * str, u16 val); extern void * FUN_02006BB0(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32); -extern BOOL UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL a2, u32 heap_id, BOOL a4); -extern void FUN_02019658(int, u8 *, u16, u16, u16, u16, u16, u16, u16, u16); -extern void FUN_020196F4(int, u8, u16, u16, u16, u16); +extern void * UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL isCompressed, u32 heap_id, BOOL allocAtEnd); const u16 UNK_020ECE6C[][2] = { { 0x0140, 0x0008 }, @@ -803,24 +802,24 @@ void MessagePrinter_delete(struct UnkStruct_0200B870 * a0) } } -void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, int a2, int a3, int a4) +void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, struct Window *a2, int a3, int a4) { - FUN_02019658(a2, a0->unk_4->unk_14 + UNK_020ECE6C[a1][0], 0, 0, UNK_020ECE6C[a1][1], 8, (u16)a3, (u16)a4, UNK_020ECE6C[a1][1], 8); + BlitBitmapRectToWindow(a2, a0->unk_4->unk_14 + UNK_020ECE6C[a1][0], 0, 0, UNK_020ECE6C[a1][1], 8, (u16)a3, (u16)a4, UNK_020ECE6C[a1][1], 8); } -void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, int sp30, int r5, int r7) +void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, struct Window *window, int x, int y) { ConvertUIntToDecimalString(string->data, value, mode, n); for (int i = 0; string->data[i] != EOS; i++) { - if (string->data[i] >= 0x00A2 && string->data[i] <= 0x00AB) + if (string->data[i] >= CHAR_0 && string->data[i] <= CHAR_9) { - FUN_02019658(sp30, string->unk_4->unk_14 + (string->data[i] - 0x00A2) * 32, 0, 0, 8, 8, (u16)r5, (u16)r7, 8, 8); + BlitBitmapRectToWindow(window, string->unk_4->unk_14 + (string->data[i] - CHAR_0) * 32, 0, 0, 8, 8, (u16)x, (u16)y, 8, 8); } else { - FUN_020196F4(sp30, (u8)string->unk_28, (u16)r5, (u16)r7, 8, 8); + FillWindowPixelRect(window, (u8)string->unk_28, (u16)x, (u16)y, 8, 8); } - r5 += 8; + x += 8; } } diff --git a/arm9/src/text.c b/arm9/src/text.c index 3034baab..5078f229 100644 --- a/arm9/src/text.c +++ b/arm9/src/text.c @@ -2,30 +2,26 @@ #include "heap.h" #include "string16.h" #include "MI_memory.h" +#include "filesystem.h" +#include "script_buffers.h" +#include "unk_0200CA44.h" const struct FontInfo *gFonts = NULL; u16 UNK_021C5734[0x100]; -u32 UNK_021C5714[8]; +BOOL UNK_021C5714[8]; u16 UNK_021C570E; u16 UNK_021C5710; u16 UNK_021C5712; u8 UNK_021C570C; -extern u32 FUN_0200CA7C(void (*func)(u32, struct TextPrinter *), struct TextPrinter *printer, u32 param2); - extern struct TextPrinter *FUN_0201B6C8(void); -extern void FUN_0200CAB4(u32 param0); extern void FUN_0201C1A8(struct TextPrinter *printer); -extern void CopyWindowToVram(u32 windowId); extern u32 FontFunc(u8 fontId, struct TextPrinter *printer); -extern void *FUN_02006BB0(u32 param0, u32 param1, u32 param2, struct TextPrinter **param3, u32 param4); - -extern u32 FUN_0201AB0C(u32 windowId); -extern void FUN_02019658(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8, u32 param9); +extern void * FUN_02006BB0(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32); THUMB_FUNC void SetFontsPointer(const struct FontInfo *fonts) @@ -99,12 +95,12 @@ THUMB_FUNC void FUN_0201BD7C(u32 param0) FUN_0201BCFC(param0); } -THUMB_FUNC u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)) +THUMB_FUNC u16 AddTextPrinterParameterized(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)) { struct TextPrinterTemplate printerTemplate; - printerTemplate.windowId = windowId; - printerTemplate.currentChar = str; + printerTemplate.window = window; + printerTemplate.currentChar.wrapped = str; printerTemplate.fontId = fontId; printerTemplate.x = (u8)x; printerTemplate.y = (u8)y; @@ -122,12 +118,12 @@ THUMB_FUNC u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *s return AddTextPrinter(&printerTemplate, speed, callback); } -THUMB_FUNC u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16)) +THUMB_FUNC u16 AddTextPrinterParameterized2(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16)) { struct TextPrinterTemplate printerTemplate; - printerTemplate.windowId = windowId; - printerTemplate.currentChar = str; + printerTemplate.window = window; + printerTemplate.currentChar.wrapped = str; printerTemplate.fontId = fontId; printerTemplate.x = (u8)x; printerTemplate.y = (u8)y; @@ -145,13 +141,13 @@ THUMB_FUNC u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 * return AddTextPrinter(&printerTemplate, speed, callback); } -THUMB_FUNC u16 AddTextPrinterParameterized3(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16)) +THUMB_FUNC u16 AddTextPrinterParameterized3(struct Window * window, u32 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16)) { struct TextPrinterTemplate printerTemplate; - printerTemplate.windowId = windowId; - printerTemplate.currentChar = str; - printerTemplate.fontId = fontId; + printerTemplate.window = window; + printerTemplate.currentChar.wrapped = str; + printerTemplate.fontId = (u8)fontId; printerTemplate.x = (u8)x; printerTemplate.y = (u8)y; printerTemplate.currentX = (u8)x; @@ -188,13 +184,13 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s } printer->printerTemplate = *printerTemplate; - printer->printerTemplate.currentChar = String_c_str((struct String *)printer->printerTemplate.currentChar); //TODO clean up + printer->printerTemplate.currentChar.raw = String_c_str(printer->printerTemplate.currentChar.wrapped); printer->callback = callback; UNK_021C570C = 0; FUN_0201C1A8(printer); if (speed != 0xff && speed != 0) { - printer->textSpeedBottom += 0xff; + printer->textSpeedBottom--; printer->textSpeedTop = 1; printer->minLetterSpacing = FUN_0201BCC8(RunTextPrinter, printer, 1); return printer->minLetterSpacing; @@ -214,7 +210,7 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s } if (speed != 0xff) { - CopyWindowToVram(printer->printerTemplate.windowId); // CopyWindowToVram? + CopyWindowToVram(printer->printerTemplate.window); } FUN_0201C238(printer); FreeToHeap((void *)printer); @@ -235,7 +231,7 @@ THUMB_FUNC void RunTextPrinter(u32 param0, struct TextPrinter *printer) switch (temp) { case 0: - CopyWindowToVram(printer->printerTemplate.windowId); + CopyWindowToVram(printer->printerTemplate.window); //fallthrough case 3: if (printer->callback == NULL) @@ -330,12 +326,12 @@ THUMB_FUNC void FUN_0201C1A8(struct TextPrinter *printer) printer->Unk2C = NULL; } -THUMB_FUNC void *FUN_0201C1B0(void) +THUMB_FUNC u16 *FUN_0201C1B0(void) { - void *res = AllocFromHeap(0, sizeof(struct TextPrinter) * 32); - struct TextPrinter *var; - void *tmp = FUN_02006BB0(14, 5, 0, &var, 0); - MIi_CpuCopy32((void *)var->printerTemplate.Unk20, res, sizeof(struct TextPrinter) * 32); //todo Unk20 can't be right here + void *res = AllocFromHeap(0, 32 * 24 * sizeof(u16)); + struct UnkStruct_0200B870_sub * var; + void *tmp = FUN_02006BB0(NARC_GRAPHIC_FONT, 5, 0, &var, 0); + MIi_CpuCopy32(var->unk_14, res, 32 * 24 * sizeof(u16)); FreeToHeap(tmp); return res; } @@ -343,14 +339,14 @@ THUMB_FUNC void *FUN_0201C1B0(void) THUMB_FUNC void FUN_0201C1EC(struct TextPrinter *printer, u32 param1, u32 param2, u32 param3) { #pragma unused (param1, param2) - u32 windowId = printer->printerTemplate.windowId; + struct Window * window = printer->printerTemplate.window; if (printer->Unk2C == NULL) { printer->Unk2C = FUN_0201C1B0(); } - u32 r6 = (u32)printer->Unk2C + param3 * (sizeof(struct TextPrinter) * 8); - u32 r2 = ((FUN_0201AB0C(windowId) - 3) << 0x13) >> 0x10; - FUN_02019658(windowId, r6, 0, 0, 24, 32, r2, 0, 24, 32); + u16 * r6 = printer->Unk2C + param3 * 24 * 8; + u16 r2 = (u16)((GetWindowWidth(window) - 3) * 8); + BlitBitmapRectToWindow(window, r6, 0, 0, 24, 32, r2, 0, 24, 32); } THUMB_FUNC void FUN_0201C238(struct TextPrinter *printer) diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c index 470a2fe3..dcbad024 100644 --- a/arm9/src/text_02054590.c +++ b/arm9/src/text_02054590.c @@ -1,25 +1,27 @@ #include "text_02054590.h" #include "text.h" +#include "unk_02016B94.h" extern void FUN_0201BD5C(void); extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); extern void FUN_02002EEC(u32 param0, u32 param1, u32 param2); -extern void FUN_02019064(u32 param0, u32 param1, u32 param2, u8 param3, u32 param4, u8 param5, u32 param6, u32 param7, u32 param8); - -extern void FUN_0200CD68(u32 param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); -extern u32 FUN_0201AB08(u32 *param0); -extern void FUN_0200D0BC(u32 *param0, u32 param1, u32 param2, u32 param3); - -extern void FUN_02019620(u32 *param0, u32 param1); +extern void FUN_0200CD68( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); +extern void FUN_0200D0BC(struct Window *param0, u32 param1, u32 param2, u32 param3); extern void FUN_02002B60(u8 param0); extern void FUN_02002B7C(u32 param0); extern void FUN_02002BB8(u32 param0); -extern void FUN_0200D300(u32 param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5, u32 param6); -extern void FUN_0200D6F8(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4); - +extern void FUN_0200D300(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u32 param2, + u32 param3, + u8 param4, + u32 param5, + u32 param6); +extern void FUN_0200D6F8(struct Window *param0, u32 param1, u32 param2, u32 param3, u8 param4); THUMB_FUNC void FUN_02054590(u32 param0, u32 param1) { @@ -31,7 +33,7 @@ THUMB_FUNC void FUN_02054590(u32 param0, u32 param1) FUN_02002EEC(param0, 384, 4); } -THUMB_FUNC void FUN_020545B8(u32 param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_020545B8(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2) { if (param2 == 3) { @@ -43,40 +45,41 @@ THUMB_FUNC void FUN_020545B8(u32 param0, u32 param1, u32 param2) } } -THUMB_FUNC void FUN_02054608(u32 *param0, struct Options *options) +THUMB_FUNC void FUN_02054608(struct Window *param0, struct Options *options) { - FUN_0200CD68(*param0, FUN_0201AB08(param0), 994, 10, (u8)Options_GetFrame(options), 4); + FUN_0200CD68(param0->unk00, FUN_0201AB08(param0), 994, 10, (u8)Options_GetFrame(options), 4); FUN_0205464C(param0); FUN_0200D0BC(param0, 0, 994, 10); } -THUMB_FUNC void FUN_0205464C(u32 *param0) +THUMB_FUNC void FUN_0205464C(struct Window *param0) { - FUN_02019620(param0, 15); + FillWindowPixelBuffer(param0, 15); } -THUMB_FUNC u16 FUN_02054658(u8 windowId, const u16 *str, struct Options *options, u8 param3) +THUMB_FUNC u16 FUN_02054658(struct Window * window, struct String *str, struct Options *options, u8 param3) { FUN_02002B60(param3); FUN_02002B7C(0); FUN_02002BB8(0); - return AddTextPrinterParameterized(windowId, 1, str, 0, 0, (u32)Options_GetTextFrameDelay(options), NULL); + return AddTextPrinterParameterized(window, 1, str, 0, 0, (u32)Options_GetTextFrameDelay(options), NULL); } -THUMB_FUNC u16 DrawFieldMessage(u8 windowId, const u16 *str, u8 fontId, u32 speed, u8 a4, u32 a5) +THUMB_FUNC u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, u32 a5) { FUN_02002B60(a4); FUN_02002B7C(a5); FUN_02002BB8(0); - return AddTextPrinterParameterized(windowId, fontId, str, 0, 0, speed, NULL); + return AddTextPrinterParameterized(window, fontId, str, 0, 0, speed, NULL); } -THUMB_FUNC u8 FUN_020546C8(u32 param0) //bool8? +THUMB_FUNC u8 FUN_020546C8(u32 param0) // bool8? { return !FUN_0201BD70(param0); } -THUMB_FUNC void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3) +THUMB_FUNC void FUN_020546E0( + struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2, u32 param3) { u32 r4 = 0; u32 r5 = 0; @@ -100,9 +103,9 @@ THUMB_FUNC void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3) } } -THUMB_FUNC void FUN_02054744(u32 *param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_02054744(struct Window *param0, u32 param1, u32 param2) { - FUN_0200D300(*param0, FUN_0201AB08(param0), 0x399, 9, (u8)param1, param2, 4); - FUN_02019620(param0, 15); + FUN_0200D300(param0->unk00, FUN_0201AB08(param0), 0x399, 9, (u8)param1, param2, 4); + FillWindowPixelBuffer(param0, 15); FUN_0200D6F8(param0, 0, 0x399, 9, (u8)param1); } diff --git a/arm9/src/unk_0200BA78.c b/arm9/src/unk_0200BA78.c new file mode 100644 index 00000000..d98b5374 --- /dev/null +++ b/arm9/src/unk_0200BA78.c @@ -0,0 +1,36 @@ +#include "global.h" +#include "unk_0200BA78.h" +#include "script_buffers.h" + +THUMB_FUNC void FUN_0200BA78(struct UnkStruct_0200B870 *param0, + int param1, + u32 value, + u32 n, + enum PrintingMode mode, + struct Window *window, + int x, + int y) +{ + FUN_0200B9A8(param0, param1, window, x, y); + FUN_0200B9EC(param0, value, n, mode, window, x + 16, y); +} + +THUMB_FUNC void FUN_0200BAAC( + struct UnkStruct_0200B870 *param0, u32 value, u32 n, enum PrintingMode mode, void *dest) +{ + u8 st0 = (u8)((param0->unk_28 << 4) | param0->unk_28); + ConvertUIntToDecimalString(param0->data, value, mode, n); + + for (int i = 0; param0->data[i] != 0xffff; i++) + { + if (param0->data[i] >= 0xa2 && param0->data[i] <= 0xab) + { + MIi_CpuCopy32( + ¶m0->unk_4->unk_14[(param0->data[i] - 0xa2) << 5], dest + i * 0x20, 0x20); + } + else + { + MI_CpuFill8(dest + i * 0x20, st0, 0x20); + } + } +} diff --git a/arm9/src/unk_0200CA44.c b/arm9/src/unk_0200CA44.c index fd703cd3..6ffed8be 100644 --- a/arm9/src/unk_0200CA44.c +++ b/arm9/src/unk_0200CA44.c @@ -2,25 +2,25 @@ #include "main.h" #include "unk_0200CA44.h" -extern BOOL FUN_0201B60C(void *, void (*)(u32, void *), void *, void *); +extern BOOL FUN_0201B60C(void *, void (*)(u32, struct TextPrinter *), struct TextPrinter *, u32); extern void FUN_0201B6A0(s32); -THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2) { return FUN_0201B60C(gMain.unk18, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2) { return FUN_0201B60C(gMain.unk1C, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2) { return FUN_0201B60C(gMain.unk24, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2) { return FUN_0201B60C(gMain.unk20, r0, r1, r2); } diff --git a/arm9/src/unk_02016B94.c b/arm9/src/unk_02016B94.c new file mode 100644 index 00000000..4183087b --- /dev/null +++ b/arm9/src/unk_02016B94.c @@ -0,0 +1,8109 @@ +#include "global.h" +#include "unk_02016B94.h" +#include "GX_layers.h" +#include "game_init.h" +#include "gx.h" +#include "heap.h" + +extern void FUN_020B0030(void *param0, u32 *param1); +extern void FUN_020B0138(void *param0, u32 *param1); + +const u8 UNK_020EDB30[8] = { + 0x10, + 0x20, + 0x20, + 0x20, + 0x20, + 0x20, + 0x00, + 0x00, +}; + +void (*const UNK_020EDB5C[])(struct Window *) = { + FUN_020194C8, + FUN_0201951C, + FUN_020194C8, +}; + +void (*const UNK_020EDB50[])(struct Window *) = { + FUN_020195A8, + FUN_020195E4, + FUN_020195A8, +}; + +void (*const UNK_020EDB44[])(struct Window *) = { + FUN_020195D0, + FUN_0201960C, + FUN_020195D0, +}; + +void (*const UNK_020EDB38[])(struct Window *) = { + FUN_020192D4, + FUN_02019358, + FUN_020192D4, +}; + +void (*const UNK_020EDB68[])(struct Window *) = { + FUN_0201949C, + FUN_020194E0, + FUN_0201949C, +}; + +void (*const UNK_020EDB74[])(struct Window *) = { + FUN_020193B4, + FUN_02019444, + FUN_020193B4, +}; + +THUMB_FUNC struct UnkStruct_02016B94_2 *FUN_02016B94(u32 heap_id) +{ + struct UnkStruct_02016B94_2 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02016B94_2)); + memset(ptr, 0, sizeof(struct UnkStruct_02016B94_2)); + ptr->unk00 = heap_id; + ptr->unk04 = 0; + ptr->unk06 = 0; + + return ptr; +} + +THUMB_FUNC u32 FUN_02016BB8(u32 *param0) +{ + return *param0; +} + +THUMB_FUNC void FUN_02016BBC(const struct GraphicsModes *modes) +{ + GX_SetGraphicsMode(modes->mode1, modes->mode2, modes->mode4); + GXS_SetGraphicsMode(modes->mode3); + reg_GX_DISPCNT &= 0xC7FFFFFF; + reg_GX_DISPCNT &= 0xF8FFFFFF; + + GX_DisableEngineALayers(); + GX_DisableEngineBLayers(); +} + +THUMB_FUNC void FUN_02016BF4(u32 *param0, u32 param1) +{ + if (param1 == 0) + { + GX_SetGraphicsMode(param0[0], param0[1], param0[3]); + GX_DisableEngineALayers(); + } + else + { + GXS_SetGraphicsMode(param0[2]); + GX_DisableEngineBLayers(); + } +} + +#ifdef NONMATCHING +THUMB_FUNC void FUN_02016C18( + struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3) +{ + u8 res = FUN_020177DC(param2->unk10, param3); + switch (param1) + { + case 0: + GX_EngineAToggleLayers(1, GX_LAYER_TOGGLE_ON); + + reg_G2_BG0CNT = (reg_G2_BG0CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2); + reg_G2_BG0CNT = (reg_G2_BG0CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2_BG0CNT |= 0x40; + } + else + { + reg_G2_BG0CNT &= ~0x40; + } + + break; + + case 1: + GX_EngineAToggleLayers(2, GX_LAYER_TOGGLE_ON); + reg_G2_BG1CNT = (reg_G2_BG1CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2); + reg_G2_BG1CNT = (reg_G2_BG1CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2_BG1CNT |= 0x40; + } + else + { + reg_G2_BG1CNT &= ~0x40; + } + + break; + + case 2: + GX_EngineAToggleLayers(4, GX_LAYER_TOGGLE_ON); + switch (param3) + { + default: + case 0: + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk13 << 2); + break; + case 1: + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + case 2: + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + } + + reg_G2_BG2CNT = (reg_G2_BG2CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2_BG2CNT |= 0x40; + } + else + { + reg_G2_BG2CNT &= ~0x40; + } + + break; + + case 3: + GX_EngineAToggleLayers(8, GX_LAYER_TOGGLE_ON); + + switch (param3) + { + default: + case 0: + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk13 << 2); + break; + case 1: + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + case 2: + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + } + + reg_G2_BG3CNT = (reg_G2_BG3CNT & ~3) | (param2->unk15); + if (param2->unk18 != 0) + { + reg_G2_BG3CNT |= 0x40; + } + else + { + reg_G2_BG3CNT &= ~0x40; + } + break; + + case 4: + GX_EngineBToggleLayers(1, GX_LAYER_TOGGLE_ON); + + reg_G2S_DB_BG0CNT = (reg_G2S_DB_BG0CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2); + + reg_G2S_DB_BG0CNT = (reg_G2S_DB_BG0CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2S_DB_BG0CNT |= 0x40; + } + else + { + reg_G2S_DB_BG0CNT &= ~0x40; + } + + break; + + case 5: + GX_EngineBToggleLayers(2, GX_LAYER_TOGGLE_ON); + + reg_G2S_DB_BG1CNT = (reg_G2S_DB_BG1CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk14 << 13) | (param2->unk13 << 2); + + reg_G2S_DB_BG1CNT = (reg_G2S_DB_BG1CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2S_DB_BG1CNT |= 0x40; + } + else + { + reg_G2S_DB_BG1CNT &= ~0x40; + } + + break; + + case 6: + GX_EngineBToggleLayers(4, GX_LAYER_TOGGLE_ON); + + switch (param3) + { + default: + case 0: + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk13 << 2); + break; + case 1: + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + case 2: + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + } + + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & ~3) | (param2->unk15); + + if (param2->unk18 != 0) + { + reg_G2S_DB_BG2CNT |= 0x40; + } + else + { + reg_G2S_DB_BG2CNT &= ~0x40; + } + + break; + case 7: + GX_EngineBToggleLayers(8, GX_LAYER_TOGGLE_ON); + switch (param3) + { + default: + case 0: + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk11 << 7) | (param2->unk13 << 2); + break; + case 1: + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + case 2: + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | (res << 14) | (param2->unk12 << 8) | + (param2->unk16 << 13) | (param2->unk13 << 2); + break; + } + + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & ~3) | (param2->unk15); + if (param2->unk18 != 0) + { + reg_G2S_DB_BG3CNT |= 0x40; + } + else + { + reg_G2S_DB_BG3CNT &= ~0x40; + } + break; + } + + param0->unk08[param1].unk20 = 0; + param0->unk08[param1].unk24 = 0x1000; + param0->unk08[param1].unk28 = 0x1000; + param0->unk08[param1].unk2c = 0; + param0->unk08[param1].unk30 = 0; + + if (param2->unk08 != 0) + { + param0->unk08[param1].unk08 = AllocFromHeap(param0->unk00, param2->unk08); + + MIi_CpuClear16(0, param0->unk08[param1].unk08, param2->unk08); + + param0->unk08[param1].unk0c = param2->unk08; + param0->unk08[param1].unk10 = param2->unk0c; + } + else + { + param0->unk08[param1].unk08 = 0; + param0->unk08[param1].unk0c = 0; + param0->unk08[param1].unk10 = 0; + } + + param0->unk08[param1].unk1d = param2->unk10; + param0->unk08[param1].unk1c = param3; + param0->unk08[param1].unk1e = param2->unk11; + + if (param3 == 0 && param2->unk11 == 0) + { + param0->unk08[param1].unk1f = 0x20; + } + else + { + param0->unk08[param1].unk1f = 0x40; + } + + FUN_020179E0(param0, param1, 0, param2->unk00); + FUN_020179E0(param0, param1, 3, param2->unk04); +} +#else +THUMB_FUNC asm void FUN_02016C18( + struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3) +{ + // clang-format off + push {r3-r7, lr} + sub sp, #0x18 + str r1, [sp, #0x4] + str r3, [sp, #0x8] + add r4, r2, #0x0 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x10] + ldr r1, [sp, #0x8] + bl FUN_020177DC + add r5, r0, #0x0 + ldr r0, [sp, #0x4] + cmp r0, #0x7 + bls _02016C36 + b _0201705A +_02016C36: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02016C42: + // jump table (using 16-bit offset) + // .short _02016C52 - _02016C42 - 2; case 0 + // .short _02016CAA - _02016C42 - 2; case 1 + // .short _02016D02 - _02016C42 - 2; case 2 + // .short _02016DA4 - _02016C42 - 2; case 3 + // .short _02016E46 - _02016C42 - 2; case 4 + // .short _02016E9E - _02016C42 - 2; case 5 + // .short _02016EF6 - _02016C42 - 2; case 6 + // .short _02016F98 - _02016C42 - 2; case 7 + + lsl r6, r1, #0 + lsl r6, r4, #1 + lsl r6, r7, #2 + lsl r0, r4, #5 + lsl r2, r0, #8 + lsl r2, r3, #9 + lsl r2, r6, #10 + lsl r4, r2, #13 +_02016C52: + mov r0, #0x1 + add r1, r0, #0x0 + bl GX_EngineAToggleLayers + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0xc] + ldr r2, =0x04000008 + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0xc] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016CA0 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016CA0: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016CAA: + mov r0, #0x2 + mov r1, #0x1 + bl GX_EngineAToggleLayers + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0x10] + ldr r2, =0x0400000A + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0x10] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016CF8 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016CF8: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016D02: + mov r0, #0x4 + mov r1, #0x1 + bl GX_EngineAToggleLayers + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016D18 + cmp r0, #0x1 + beq _02016D3A + cmp r0, #0x2 + beq _02016D5C +_02016D18: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400000C + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016D7C +_02016D3A: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, =0x0400000C + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016D7C +_02016D5C: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400000C + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016D7C: + ldr r0, =0x0400000C + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016D9A + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016D9A: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016DA4: + mov r0, #0x8 + mov r1, #0x1 + bl GX_EngineAToggleLayers + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016DBA + cmp r0, #0x1 + beq _02016DDC + cmp r0, #0x2 + beq _02016DFE +_02016DBA: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400000E + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016E1E +_02016DDC: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, =0x0400000E + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016E1E +_02016DFE: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400000E + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016E1E: + ldr r0, =0x0400000E + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016E3C + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016E3C: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016E46: + mov r0, #0x1 + add r1, r0, #0x0 + bl GX_EngineBToggleLayers + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0x14] + ldr r2, =0x04001008 + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0x14] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016E94 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016E94: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016E9E: + mov r0, #0x2 + mov r1, #0x1 + bl GX_EngineBToggleLayers + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrb r3, [r4, #0x14] + lsl r0, r0, #0x7 + mov r12, r0 + ldr r2, =0x0400100A + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + lsl r3, r3, #0xd + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + mov r1, r12 + orr r0, r1 + orr r0, r7 + orr r0, r6 + orr r0, r3 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016EEC + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016EEC: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016EF6: + mov r0, #0x4 + mov r1, #0x1 + bl GX_EngineBToggleLayers + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016F0C + cmp r0, #0x1 + beq _02016F2E + cmp r0, #0x2 + beq _02016F50 +_02016F0C: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400100C + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016F70 +_02016F2E: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, =0x0400100C + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016F70 +_02016F50: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400100C + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016F70: + ldr r0, =0x0400100C + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016F8E + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016F8E: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016F98: + mov r0, #0x8 + mov r1, #0x1 + bl GX_EngineBToggleLayers + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016FAE + cmp r0, #0x1 + beq _02016FF2 + cmp r0, #0x2 + beq _02017014 +_02016FAE: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400100E + b _02016FD4 +_02016FD4: + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02017034 +_02016FF2: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, =0x0400100E + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02017034 +_02017014: + ldrb r1, [r4, #0x12] + ldr r7, =0x0400100E + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02017034: + ldr r0, =0x0400100E + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02017052 + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02017052: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] +_0201705A: + ldr r0, [sp, #0x4] + mov r1, #0x2c + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mul r5, r1 + add r2, r0, r5 + mov r3, #0x0 + mov r0, #0x1 + strh r3, [r2, #0x20] + lsl r0, r0, #0xc + str r0, [r2, #0x24] + str r0, [r2, #0x28] + str r3, [r2, #0x2c] + str r3, [r2, #0x30] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020170A2 + ldr r0, [sp, #0x0] + ldr r6, [sp, #0x0] + ldr r0, [r0, #0x0] + add r6, #0x8 + bl AllocFromHeap + str r0, [r6, r5] + ldr r1, [r6, r5] + ldr r2, [r4, #0x8] + mov r0, #0x0 + bl MIi_CpuClear16 + ldr r0, [sp, #0x0] + ldr r2, [r4, #0x8] + add r1, r0, r5 + str r2, [r1, #0xc] + ldr r0, [r4, #0xc] + str r0, [r1, #0x10] + b _020170A8 +_020170A2: + str r3, [r2, #0x8] + str r3, [r2, #0xc] + str r3, [r2, #0x10] +_020170A8: + ldr r0, [sp, #0x0] + ldrb r1, [r4, #0x10] + add r0, r0, r5 + strb r1, [r0, #0x1d] + ldr r1, [sp, #0x8] + strb r1, [r0, #0x1c] + ldrb r1, [r4, #0x11] + strb r1, [r0, #0x1e] + ldr r1, [sp, #0x8] + cmp r1, #0x0 + bne _020170CA + ldrb r1, [r4, #0x11] + cmp r1, #0x0 + bne _020170CA + mov r1, #0x20 + strb r1, [r0, #0x1f] + b _020170D2 +_020170CA: + ldr r0, [sp, #0x0] + mov r1, #0x40 + add r0, r0, r5 + strb r1, [r0, #0x1f] +_020170D2: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r3, [r4, #0x0] + mov r2, #0x0 + bl FUN_020179E0 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r3, [r4, #0x4] + mov r2, #0x3 + bl FUN_020179E0 + add sp, #0x18 + pop {r3-r7, pc} + // clang-format on +} +#endif + +#ifdef NONMATCHING +THUMB_FUNC void FUN_020170F4(struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3) +{ + if (param2 == 0) + { + param0->unk08[param1].unk1e = param3; + } + + switch (param1) + { + case 0: + u16 bg0cnt = reg_G2_BG0CNT; + if (param2 == 1) + { + bg0cnt = bg0cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg0cnt = bg0cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG0CNT = (reg_G2_BG0CNT & 0x43) | ((u32)(bg0cnt << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(bg0cnt << 0x13) >> 0x1b) << 8 | + ((u32)(bg0cnt << 0x1a) >> 0x1c) << 2 | + ((u32)(bg0cnt << 0x12) >> 0x1f) << 0xd; + + break; + case 1: + u16 bg1cnt = reg_G2_BG1CNT; + if (param2 == 1) + { + bg1cnt = bg1cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg1cnt = bg1cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG1CNT = (reg_G2_BG1CNT & 0x43) | (((u32)bg1cnt << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(bg1cnt << 0x13) >> 0x1b) << 8 | + ((u32)(bg1cnt << 0x1a) >> 0x1c) << 2 | + ((u32)(bg1cnt << 0x12) >> 0x1f) << 0xd; + + break; + case 2: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + u16 bg2cnt_0 = reg_G2_BG2CNT; + if (param2 == 1) + { + bg2cnt_0 = bg2cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg2cnt_0 = bg2cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_0 << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | + ((u32)(bg2cnt_0 << 0x13) >> 0x1b) << 8 | + ((u32)(bg2cnt_0 << 0x1a) >> 0x1c) << 2; + + break; + case 1: + u16 bg2cnt_1 = reg_G2_BG2CNT; + if (param2 == 1) + { + bg2cnt_1 = bg2cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg2cnt_1 = bg2cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_1 << 0x10) >> 0x1e) << 0xe | + ((u32)(bg2cnt_1 << 0x13) >> 0x1b) << 8 | + ((u32)(bg2cnt_1 << 0x1a) >> 0x1c) << 2 | + ((u32)(bg2cnt_1 << 0x12) >> 0x1f) << 0xd; + break; + case 2: + u16 bg2cnt_2 = reg_G2_BG2CNT; + if (param2 == 1) + { + bg2cnt_2 = bg2cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg2cnt_2 = bg2cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a); + } + + reg_G2_BG2CNT = (reg_G2_BG2CNT & 0x43) | ((u32)(bg2cnt_2 << 0x10) >> 0x1e) << 0xe | + ((u32)(bg2cnt_2 << 0x13) >> 0x1b) << 8 | + ((u32)(bg2cnt_2 << 0x1a) >> 0x1d) << 2 | + ((u32)(bg2cnt_2 << 0x12) >> 0x1f) << 0xd; + break; + } + break; + case 3: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + u16 bg3cnt_0 = reg_G2_BG3CNT; + if (param2 == 1) + { + bg3cnt_0 = bg3cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg3cnt_0 = bg3cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_0 << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | + ((u32)(bg3cnt_0 << 0x13) >> 0x1b) << 8 | + ((u32)(bg3cnt_0 << 0x1a) >> 0x1c) << 2; + + break; + case 1: + u16 bg3cnt_1 = reg_G2_BG3CNT; + if (param2 == 1) + { + bg3cnt_1 = bg3cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg3cnt_1 = bg3cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_1 << 0x10) >> 0x1e) << 0xe | + ((u32)(bg3cnt_1 << 0x13) >> 0x1b) << 8 | + ((u32)(bg3cnt_1 << 0x1a) >> 0x1c) << 2 | + ((u32)(bg3cnt_1 << 0x12) >> 0x1f) << 0xd; + break; + case 2: + u16 bg3cnt_2 = reg_G2_BG3CNT; + if (param2 == 1) + { + bg3cnt_2 = bg3cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + bg3cnt_2 = bg3cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a); + } + + reg_G2_BG3CNT = (reg_G2_BG3CNT & 0x43) | ((u32)(bg3cnt_2 << 0x10) >> 0x1e) << 0xe | + ((u32)(bg3cnt_2 << 0x13) >> 0x1b) << 8 | + ((u32)(bg3cnt_2 << 0x1a) >> 0x1d) << 2 | + ((u32)(bg3cnt_2 << 0x12) >> 0x1f) << 0xd; + break; + } + break; + case 4: + u16 db_bg0cnt = reg_G2S_DB_BG0CNT; + if (param2 == 1) + { + db_bg0cnt = db_bg0cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg0cnt = db_bg0cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG0CNT = + (reg_G2S_DB_BG0CNT & 0x43) | ((u32)(db_bg0cnt << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(db_bg0cnt << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg0cnt << 0x1a) >> 0x1c) << 2 | ((u32)(db_bg0cnt << 0x12) >> 0x1f) << 0xd; + + break; + case 5: + u16 db_bg1cnt = reg_G2S_DB_BG1CNT; + if (param2 == 1) + { + db_bg1cnt = db_bg1cnt & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg1cnt = db_bg1cnt & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG1CNT = + (reg_G2S_DB_BG1CNT & 0x43) | ((u32)(db_bg1cnt << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(db_bg1cnt << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg1cnt << 0x1a) >> 0x1c) << 2 | ((u32)(db_bg1cnt << 0x12) >> 0x1f) << 0xd; + + break; + case 6: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + u16 db_bg2cnt_0 = reg_G2S_DB_BG2CNT; + if (param2 == 1) + { + db_bg2cnt_0 = db_bg2cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg2cnt_0 = db_bg2cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG2CNT = + (reg_G2S_DB_BG2CNT & 0x43) | ((u32)(db_bg2cnt_0 << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(db_bg2cnt_0 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg2cnt_0 << 0x1a) >> 0x1c) << 2; + + break; + case 1: + u16 db_bg2cnt_1 = reg_G2S_DB_BG2CNT; + if (param2 == 1) + { + db_bg2cnt_1 = db_bg2cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg2cnt_1 = db_bg2cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | + ((u32)(db_bg2cnt_1 << 0x10) >> 0x1e) << 0xe | + ((u32)(db_bg2cnt_1 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg2cnt_1 << 0x1a) >> 0x1c) << 2 | + ((u32)(db_bg2cnt_1 << 0x12) >> 0x1f) << 0xd; + break; + case 2: + u16 db_bg2cnt_2 = reg_G2S_DB_BG2CNT; + if (param2 == 1) + { + db_bg2cnt_2 = db_bg2cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg2cnt_2 = db_bg2cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a); + } + + reg_G2S_DB_BG2CNT = (reg_G2S_DB_BG2CNT & 0x43) | + ((u32)(db_bg2cnt_2 << 0x10) >> 0x1e) << 0xe | + ((u32)(db_bg2cnt_2 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg2cnt_2 << 0x1a) >> 0x1d) << 2 | + ((u32)(db_bg2cnt_2 << 0x12) >> 0x1f) << 0xd; + break; + } + break; + case 7: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + u16 db_bg3cnt_0 = reg_G2S_DB_BG3CNT; + if (param2 == 1) + { + db_bg3cnt_0 = db_bg3cnt_0 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg3cnt_0 = db_bg3cnt_0 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG3CNT = + (reg_G2S_DB_BG3CNT & 0x43) | ((u32)(db_bg3cnt_0 << 0x10) >> 0x1e) << 0xe | + param0->unk08[param1].unk1e << 7 | ((u32)(db_bg3cnt_0 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg3cnt_0 << 0x1a) >> 0x1c) << 2; + + break; + case 1: + u16 db_bg3cnt_1 = reg_G2S_DB_BG3CNT; + if (param2 == 1) + { + db_bg3cnt_1 = db_bg3cnt_1 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg3cnt_1 = db_bg3cnt_1 & ~0x3c | ((u32)(param3 << 0x1c) >> 0x1a); + } + + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | + ((u32)(db_bg3cnt_1 << 0x10) >> 0x1e) << 0xe | + ((u32)(db_bg3cnt_1 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg3cnt_1 << 0x1a) >> 0x1c) << 2 | + ((u32)(db_bg3cnt_1 << 0x12) >> 0x1f) << 0xd; + break; + case 2: + u16 db_bg3cnt_2 = reg_G2S_DB_BG3CNT; + if (param2 == 1) + { + db_bg3cnt_2 = db_bg3cnt_2 & 0xFFFFE0FF | ((u32)(param3 << 0x1b) >> 0x13); + } + else if (param2 == 2) + { + db_bg3cnt_2 = db_bg3cnt_2 & ~0x38 | ((u32)(param3 << 0x1d) >> 0x1a); + } + + reg_G2S_DB_BG3CNT = (reg_G2S_DB_BG3CNT & 0x43) | + ((u32)(db_bg3cnt_2 << 0x10) >> 0x1e) << 0xe | + ((u32)(db_bg3cnt_2 << 0x13) >> 0x1b) << 8 | + ((u32)(db_bg3cnt_2 << 0x1a) >> 0x1d) << 2 | + ((u32)(db_bg3cnt_2 << 0x12) >> 0x1f) << 0xd; + break; + } + break; + } +} +#else +THUMB_FUNC asm void FUN_020170F4( + struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3) +{ + // clang-format off + push {r3-r7, lr} + sub sp, #0x20 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r1, r2, #0x0 + add r0, r3, #0x0 + cmp r1, #0x0 + bne _0201710C + mov r2, #0x2c + mul r2, r4 + add r2, r5, r2 + strb r0, [r2, #0x1e] +_0201710C: + cmp r4, #0x7 + bls _02017112 + b _020177C4 +_02017112: + add r2, r4, r4 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0201711E: //; jump table (using 16-bit offset) + // .short _0201712E - _0201711E - 2; case 0 + // .short _0201719A - _0201711E - 2; case 1 + // .short _02017206 - _0201711E - 2; case 2 + // .short _0201733A - _0201711E - 2; case 3 + // .short _0201746E - _0201711E - 2; case 4 + // .short _020174F4 - _0201711E - 2; case 5 + // .short _02017560 - _0201711E - 2; case 6 + // .short _02017694 - _0201711E - 2; case 7 + + lsl r6, r1, #0 + lsl r2, r7, #1 + lsl r6, r4, #3 + lsl r2, r3, #8 + lsl r6, r1, #13 + lsl r4, r2, #15 + lsl r0, r0, #17 + lsl r4, r6, #21 +_0201712E: + ldr r2, =0x04000008 + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x1e] + bne _0201714A + ldrh r3, [r2, #0x1e] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x1e] + b _0201715C +_0201714A: + cmp r1, #0x2 + bne _0201715C + ldrh r3, [r2, #0x1e] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x1e] +_0201715C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1e] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, =0x04000008 + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_0201719A: + ldr r2, =0x0400000A + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x1c] + bne _020171B6 + ldrh r3, [r2, #0x1c] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x1c] + b _020171C8 +_020171B6: + cmp r1, #0x2 + bne _020171C8 + ldrh r3, [r2, #0x1c] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x1c] +_020171C8: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1c] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, =0x0400000A + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_02017206: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _0201721A + cmp r3, #0x1 + beq _0201727A + cmp r3, #0x2 + beq _020172DA +_0201721A: + ldr r3, =0x0400000C + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x1a] + bne _02017236 + ldrh r4, [r3, #0x1a] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x1a] + b _02017248 +_02017236: + cmp r1, #0x2 + bne _02017248 + ldrh r4, [r3, #0x1a] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x1a] +_02017248: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1a] + add r2, r5, r2 + ldr r6, =0x0400000C + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201727A: + ldr r2, =0x0400000C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x18] + bne _02017296 + ldrh r3, [r2, #0x18] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x18] + b _020172A8 +_02017296: + cmp r1, #0x2 + bne _020172A8 + ldrh r3, [r2, #0x18] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x18] +_020172A8: + add r0, sp, #0x0 + ldrh r3, [r0, #0x18] + ldr r6, =0x0400000C + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020172DA: + ldr r2, =0x0400000C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x16] + bne _020172F6 + ldrh r3, [r2, #0x16] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x16] + b _02017308 +_020172F6: + cmp r1, #0x2 + bne _02017308 + ldrh r3, [r2, #0x16] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x16] +_02017308: + add r0, sp, #0x0 + ldrh r3, [r0, #0x16] + ldr r6, =0x0400000C + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201733A: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _0201734E + cmp r3, #0x1 + beq _020173AE + cmp r3, #0x2 + beq _0201740E +_0201734E: + ldr r3, =0x0400000E + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x14] + bne _0201736A + ldrh r4, [r3, #0x14] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x14] + b _0201737C +_0201736A: + cmp r1, #0x2 + bne _0201737C + ldrh r4, [r3, #0x14] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x14] +_0201737C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x14] + add r2, r5, r2 + ldr r6, =0x0400000E + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020173AE: + ldr r2, =0x0400000E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x12] + bne _020173CA + ldrh r3, [r2, #0x12] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x12] + b _020173DC +_020173CA: + cmp r1, #0x2 + bne _020173DC + ldrh r3, [r2, #0x12] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x12] +_020173DC: + add r0, sp, #0x0 + ldrh r3, [r0, #0x12] + ldr r6, =0x0400000E + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201740E: + ldr r2, =0x0400000E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x10] + bne _0201742A + ldrh r3, [r2, #0x10] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x10] + b _0201743C +_0201742A: + cmp r1, #0x2 + bne _0201743C + ldrh r3, [r2, #0x10] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x10] +_0201743C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x10] + ldr r6, =0x0400000E + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201746E: + ldr r2, =0x04001008 + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0xe] + bne _020174A4 + ldrh r3, [r2, #0xe] + ldr r1, =0xFFFFE0FF + b _02017498 +_02017498: + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0xe] + b _020174B6 +_020174A4: + cmp r1, #0x2 + bne _020174B6 + ldrh r3, [r2, #0xe] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0xe] +_020174B6: + add r0, sp, #0x0 + ldrh r3, [r0, #0xe] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, =0x04001008 + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_020174F4: + ldr r2, =0x0400100A + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0xc] + bne _02017510 + ldrh r3, [r2, #0xc] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0xc] + b _02017522 +_02017510: + cmp r1, #0x2 + bne _02017522 + ldrh r3, [r2, #0xc] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0xc] +_02017522: + add r0, sp, #0x0 + ldrh r3, [r0, #0xc] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, =0x0400100A + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_02017560: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _02017574 + cmp r3, #0x1 + beq _020175D4 + cmp r3, #0x2 + beq _02017634 +_02017574: + ldr r3, =0x0400100C + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0xa] + bne _02017590 + ldrh r4, [r3, #0xa] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0xa] + b _020175A2 +_02017590: + cmp r1, #0x2 + bne _020175A2 + ldrh r4, [r3, #0xa] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0xa] +_020175A2: + add r0, sp, #0x0 + ldrh r3, [r0, #0xa] + add r2, r5, r2 + ldr r6, =0x0400100C + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020175D4: + ldr r2, =0x0400100C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x8] + bne _020175F0 + ldrh r3, [r2, #0x8] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x8] + b _02017602 +_020175F0: + cmp r1, #0x2 + bne _02017602 + ldrh r3, [r2, #0x8] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x8] +_02017602: + add r0, sp, #0x0 + ldrh r3, [r0, #0x8] + ldr r6, =0x0400100C + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017634: + ldr r2, =0x0400100C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x6] + bne _02017650 + ldrh r3, [r2, #0x6] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x6] + b _02017662 +_02017650: + cmp r1, #0x2 + bne _02017662 + ldrh r3, [r2, #0x6] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x6] +_02017662: + add r0, sp, #0x0 + ldrh r3, [r0, #0x6] + ldr r6, =0x0400100C + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017694: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _020176A8 + cmp r3, #0x1 + beq _02017708 + cmp r3, #0x2 + beq _02017768 +_020176A8: + ldr r3, =0x0400100E + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x4] + bne _020176C4 + ldrh r4, [r3, #0x4] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x4] + b _020176D6 +_020176C4: + cmp r1, #0x2 + bne _020176D6 + ldrh r4, [r3, #0x4] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x4] +_020176D6: + add r0, sp, #0x0 + ldrh r3, [r0, #0x4] + add r2, r5, r2 + ldr r6, =0x0400100E + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017708: + ldr r2, =0x0400100E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x2] + bne _02017724 + ldrh r3, [r2, #0x2] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x2] + b _02017736 +_02017724: + cmp r1, #0x2 + bne _02017736 + ldrh r3, [r2, #0x2] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x2] +_02017736: + add r0, sp, #0x0 + ldrh r3, [r0, #0x2] + ldr r6, =0x0400100E + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017768: + ldr r2, =0x0400100E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x0] + bne _02017784 + ldrh r3, [r2, #0x0] + ldr r1, =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x0] + b _02017796 +_02017784: + cmp r1, #0x2 + bne _02017796 + ldrh r3, [r2, #0x0] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x0] +_02017796: + add r0, sp, #0x0 + ldrh r3, [r0, #0x0] + ldr r6, =0x0400100E + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] +_020177C4: + add sp, #0x20 + pop {r3-r7, pc} + // clang-format on +} +#endif + +THUMB_FUNC u8 FUN_020177DC(u8 param0, u32 param1) +{ + switch (param1) + { + case 0: + + if (param0 == 1) + { + return 0; + } + else if (param0 == 2) + { + return 2; + } + else if (param0 == 3) + { + return 1; + } + else if (param0 == 4) + { + return 3; + } + break; + + case 1: + + if (param0 == 0) + { + return 0; + } + else if (param0 == 1) + { + return 1; + } + else if (param0 == 4) + { + return 2; + } + else if (param0 == 5) + { + return 3; + } + break; + + case 2: + + if (param0 == 0) + { + return 0; + } + else if (param0 == 1) + { + return 1; + } + else if (param0 == 4) + { + return 2; + } + else if (param0 == 5) + { + return 3; + } + break; + } + + return 0; +} + +THUMB_FUNC void FUN_02017850(u32 param0, u8 *param1, u8 *param2) +{ + switch (param0) + { + case 0: + *param1 = 0x10; + *param2 = 0x10; + break; + case 1: + *param1 = 0x20; + *param2 = 0x20; + break; + case 2: + *param1 = 0x20; + *param2 = 0x40; + break; + case 3: + *param1 = 0x40; + *param2 = 0x20; + break; + case 4: + *param1 = 0x40; + *param2 = 0x40; + break; + case 5: + *param1 = 0x80; + *param2 = 0x80; + break; + } +} + +THUMB_FUNC void FUN_020178A0(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + if (param0->unk08[param1].unk08 != NULL) + { + FreeToHeap(param0->unk08[param1].unk08); + param0->unk08[param1].unk08 = NULL; + } +} + +THUMB_FUNC void FUN_020178BC(u32 param0, u16 param1) +{ + switch (param0) + { + case 0: + reg_G2_BG0CNT = (u16)(reg_G2_BG0CNT & ~3 | param1); + break; + case 1: + reg_G2_BG1CNT = (u16)(reg_G2_BG1CNT & ~3 | param1); + break; + case 2: + reg_G2_BG2CNT = (u16)(reg_G2_BG2CNT & ~3 | param1); + break; + case 3: + reg_G2_BG3CNT = (u16)(reg_G2_BG3CNT & ~3 | param1); + break; + case 4: + reg_G2S_DB_BG0CNT = (u16)(reg_G2S_DB_BG0CNT & ~3 | param1); + break; + case 5: + reg_G2S_DB_BG1CNT = (u16)(reg_G2S_DB_BG1CNT & ~3 | param1); + break; + case 6: + reg_G2S_DB_BG2CNT = (u16)(reg_G2S_DB_BG2CNT & ~3 | param1); + break; + case 7: + reg_G2S_DB_BG3CNT = (u16)(reg_G2S_DB_BG3CNT & ~3 | param1); + break; + } +} + +THUMB_FUNC void FUN_0201797C(u32 param0, GX_LayerToggle toggle) +{ + switch (param0) + { + case 0: + GX_EngineAToggleLayers(1, toggle); + break; + case 1: + GX_EngineAToggleLayers(2, toggle); + break; + case 2: + GX_EngineAToggleLayers(4, toggle); + break; + case 3: + GX_EngineAToggleLayers(8, toggle); + break; + case 4: + GX_EngineBToggleLayers(1, toggle); + break; + case 5: + GX_EngineBToggleLayers(2, toggle); + break; + case 6: + GX_EngineBToggleLayers(4, toggle); + break; + case 7: + GX_EngineBToggleLayers(8, toggle); + break; + } +} + +THUMB_FUNC void FUN_020179E0(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 val) +{ + FUN_02017B8C(¶m0->unk08[param1], param2, val); + + u32 r1 = (u32)param0->unk08[param1].unk14; + u32 r0 = (u32)param0->unk08[param1].unk18; + switch (param1) + { + case 0: + + reg_G2_BG0OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + break; + case 1: + + reg_G2_BG1OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + break; + + case 2: + if (param0->unk08[2].unk1c == 0) + { + reg_G2_BG2OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + } + else + { + FUN_02017C6C(param0, 2); + } + + break; + + case 3: + if (param0->unk08[3].unk1c == 0) + { + reg_G2_BG3OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + } + else + { + FUN_02017C6C(param0, 3); + } + + break; + + case 4: + + reg_G2S_DB_BG0OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + break; + case 5: + + reg_G2S_DB_BG1OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + break; + + case 6: + if (param0->unk08[6].unk1c == 0) + { + reg_G2S_DB_BG2OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + } + else + { + FUN_02017C6C(param0, 6); + } + + break; + + case 7: + if (param0->unk08[7].unk1c == 0) + { + reg_G2S_DB_BG3OFS = (r1 & 0x1FF) | ((r0 << 16) & 0x1FF0000); + } + else + { + FUN_02017C6C(param0, 7); + } + + break; + } +} + +THUMB_FUNC fx32 FUN_02017B48(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + return param0->unk08[param1].unk14; +} + +THUMB_FUNC fx32 FUN_02017B54(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + return param0->unk08[param1].unk18; +} + +THUMB_FUNC void FUN_02017B60(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u32 param2, + fx32 param3, + struct Mtx22 *param4, + fx32 param5, + fx32 param6) +{ + FUN_02017B8C(¶m0->unk08[param1], param2, param3); + FUN_02017BD0(param0, param1, param4, param5, param6); +} + +THUMB_FUNC void FUN_02017B8C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val) +{ + switch (param1) + { + case 0: + param0->unk14 = val; + break; + case 1: + param0->unk14 += val; + break; + case 2: + param0->unk14 -= val; + break; + case 3: + param0->unk18 = val; + break; + case 4: + param0->unk18 += val; + break; + case 5: + param0->unk18 -= val; + break; + } +} + +THUMB_FUNC void FUN_02017BD0( + struct UnkStruct_02016B94_2 *param0, u32 param1, struct Mtx22 *param2, fx32 param3, fx32 param4) +{ + switch (param1) + { + case 2: + G2x_SetBGyAffine_(reg_G2_BG2P, + param2, + param3, + param4, + param0->unk08[param1].unk14, + param0->unk08[param1].unk18); + break; + case 3: + G2x_SetBGyAffine_(reg_G2_BG3P, + param2, + param3, + param4, + param0->unk08[param1].unk14, + param0->unk08[param1].unk18); + break; + case 6: + G2x_SetBGyAffine_(reg_G2S_DB_BG2P, + param2, + param3, + param4, + param0->unk08[param1].unk14, + param0->unk08[param1].unk18); + break; + case 7: + G2x_SetBGyAffine_(reg_G2S_DB_BG3P, + param2, + param3, + param4, + param0->unk08[param1].unk14, + param0->unk08[param1].unk18); + break; + } +} + +THUMB_FUNC void FUN_02017C6C(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + struct Mtx22 mtx; + MTX22_2DAffine(&mtx, 0, 0x1000, 0x1000, 0); + FUN_02017BD0(param0, param1, &mtx, 0, 0); +} + +THUMB_FUNC void FUN_02017C98(const void *param0, void *param1, u32 param2) +{ + if (param2 == 0) + { + MI_UncompressLZ8(param0, param1); + return; + } + + if (((u32)param0 % 4) == 0 && ((u32)param1 % 4) == 0 && ((u16)param2 % 4) == 0) + { + MIi_CpuCopy32(param0, param1, param2); + return; + } + + MIi_CpuCopy16(param0, param1, param2); +} + +THUMB_FUNC void FUN_02017CD0(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + FUN_02017CE8(param0, + param1, + param0->unk08[param1].unk08, + param0->unk08[param1].unk0c, + param0->unk08[param1].unk10); +} + +THUMB_FUNC void FUN_02017CE8( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4) +{ + u32 st0 = param3; + if (param3 == 0) + { + void *st4 = param0->unk08[param1].unk08; + if (st4 != 0) + { + FUN_02017C98(param2, st4, param3); + FUN_02017D68(param1, st4, param0->unk08[param1].unk10 * 2, param0->unk08[param1].unk0c); + return; + } + + u32 r7 = param2[0] >> 8; + void *ptr = AllocFromHeapAtEnd(param0->unk00, r7); + FUN_02017C98(param2, ptr, st0); + FUN_02017D68(param1, ptr, param4 * 2, r7); + FreeToHeap(ptr); + return; + } + + FUN_02017D68(param1, param2, param4 * 2, param3); +} + +THUMB_FUNC void FUN_02017D68(u32 param0, void *param1, u32 offset, u32 size) +{ + DC_FlushRange(param1, size); + + switch (param0) + { + case 0: + GX_LoadBG0Scr(param1, offset, size); + break; + case 1: + GX_LoadBG1Scr(param1, offset, size); + break; + case 2: + GX_LoadBG2Scr(param1, offset, size); + break; + case 3: + GX_LoadBG3Scr(param1, offset, size); + break; + case 4: + GXS_LoadBG0Scr(param1, offset, size); + break; + case 5: + GXS_LoadBG1Scr(param1, offset, size); + break; + case 6: + GXS_LoadBG2Scr(param1, offset, size); + break; + case 7: + GXS_LoadBG3Scr(param1, offset, size); + break; + } +} + +THUMB_FUNC void FUN_02017DFC( + struct UnkStruct_02016B94_2 *param0, u32 param1, void *param2, u32 param3) +{ + FUN_02017C98(param2, param0->unk08[param1].unk08, param3); +} + +THUMB_FUNC void FUN_02017E14( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4) +{ + if (param0->unk08[param1].unk1e == 0) + { + FUN_02017E40(param0, param1, param2, param3, param4 << 5); + return; + } + FUN_02017E40(param0, param1, param2, param3, param4 << 6); +} + +THUMB_FUNC void FUN_02017E40( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4) +{ + u32 st0 = param3; + if (param3 == 0) + { + + u32 r4 = param2[0] >> 8; + void *ptr = AllocFromHeapAtEnd(param0->unk00, r4); + FUN_02017C98(param2, ptr, st0); + FUN_02017E84(param1, ptr, param4, r4); + FreeToHeap(ptr); + return; + } + + FUN_02017E84(param1, param2, param4, param3); +} + +THUMB_FUNC void FUN_02017E84(u32 param0, void *param1, u32 offset, u32 size) +{ + DC_FlushRange(param1, size); + + switch (param0) + { + case 0: + GX_LoadBG0Char(param1, offset, size); + break; + case 1: + GX_LoadBG1Char(param1, offset, size); + break; + case 2: + GX_LoadBG2Char(param1, offset, size); + break; + case 3: + GX_LoadBG3Char(param1, offset, size); + break; + case 4: + GXS_LoadBG0Char(param1, offset, size); + break; + case 5: + GXS_LoadBG1Char(param1, offset, size); + break; + case 6: + GXS_LoadBG2Char(param1, offset, size); + break; + case 7: + GXS_LoadBG3Char(param1, offset, size); + break; + } +} + +THUMB_FUNC void FUN_02017F18(u32 param0, u32 size, u32 offset, u32 heap_id) +{ + void *ptr = AllocFromHeapAtEnd(heap_id, size); + memset(ptr, 0, size); + + FUN_02017E84(param0, ptr, offset, size); + FreeToHeapExplicit(heap_id, ptr); +} + +THUMB_FUNC void FUN_02017F48( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + void *st4; + u32 st0 = param3 * param0->unk08[param1].unk1f; + u32 r5 = param2; + st4 = AllocFromHeapAtEnd(param0->unk00, st0); + + if (param0->unk08[param1].unk1f == 0x20) + { + r5 = (r5 << 0xc | r5 << 0x8 | r5 << 0x4 | r5); + r5 |= r5 << 0x10; + } + else + { + r5 = r5 << 0x18 | r5 << 0x10 | r5 << 8 | r5; + } + + MIi_CpuClearFast(r5, st4, st0); + + FUN_02017E84((u8)param1, st4, param0->unk08[param1].unk1f * param4, st0); + FreeToHeap(st4); +} + +THUMB_FUNC void FUN_02017FB4(u32 param0, void *param1, u32 offset, u32 size) +{ + DC_FlushRange(param1, offset); + if (param0 < 4) + { + GX_LoadBGPltt(param1, size, offset); + return; + } + + GXS_LoadBGPltt(param1, size, offset); +} + +THUMB_FUNC void FUN_02017FE4(u32 param0, u32 param1) +{ + FUN_02017FB4(param0, ¶m1, 2, 0); +} + +THUMB_FUNC u16 FUN_02017FFC(u8 param0, u8 param1, u8 param2) +{ + switch (param2) + { + case 0: + return (u16)(param0 + (param1 << 4)); + case 1: + case 2: + return (u16)(param0 + (param1 << 5)); + case 3: + return (u16)((param0 & 0x1f) + ((param1 + (param0 & ~0x1f)) << 5)); + case 4: + u16 res = (u16)(((u16)((param0 >> 5) + (param1 >> 5) * 2)) << 10); + res += (param0 & 0x1f) + ((param1 & 0x1f) << 5); + return res; + case 5: + return 0; + } + + return param0; +} + +THUMB_FUNC u16 FUN_02018068(u8 param0, u8 param1, u8 param2, u8 param3) +{ + u8 r2 = 0; + u16 r3 = 0; + s16 r4 = (s16)(param2 - 32); + s16 r5 = (s16)(param3 - 32); + + if (((u32)param0 >> 5) != 0) + { + r2++; + } + + if (((u32)param1 >> 5) != 0) + { + r2 += 2; + } + + switch (r2) + { + case 0: + if (r4 >= 0) + { + r3 += param0 + (param1 << 5); + } + else + { + r3 += param0 + param1 * param2; + } + break; + case 1: + if (r5 >= 0) + { + r3 += 0x400; + } + else + { + r3 += (param3 << 5); + } + + r3 += (param0 & 0x1f) + param1 * r4; + break; + case 2: + r3 += param2 << 5; + if (r4 >= 0) + { + r3 += param0 + ((param1 & 0x1f) << 5); + } + else + { + r3 += param0 + (param1 & 0x1f) * param2; + } + break; + case 3: + r3 += (param2 + r5) << 5; + r3 += (param0 & 0x1f) + (param1 & 0x1f) * r4; + break; + } + + return r3; +} + +THUMB_FUNC void FUN_02018148(struct UnkStruct_02016B94_2 *param0, + u32 param1, + void *param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6) +{ + FUN_02018170(param0, param1, param3, param4, param5, param6, param2, 0, 0, param5, param6); +} + +THUMB_FUNC void FUN_02018170(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + void *param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10) +{ + if (param0->unk08[param1].unk1c != 1) + { + FUN_02018268(¶m0->unk08[param1], + param2, + param3, + param4, + param5, + (u16 *)param6, + param7, + param8, + param9, + param10, + 0); + } + else + { + FUN_020183DC(¶m0->unk08[param1], + param2, + param3, + param4, + param5, + (u8 *)param6, + param7, + param8, + param9, + param10, + 0); + } +} + +THUMB_FUNC void FUN_020181EC(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + void *param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10) +{ + if (param0->unk08[param1].unk1c != 1) + { + FUN_02018268(¶m0->unk08[param1], + param2, + param3, + param4, + param5, + (u16 *)param6, + param7, + param8, + param9, + param10, + 1); + } + else + { + FUN_020183DC(¶m0->unk08[param1], + param2, + param3, + param4, + param5, + (u8 *)param6, + param7, + param8, + param9, + param10, + 1); + } +} + +THUMB_FUNC void FUN_02018268(struct UnkStruct_02016B94_2_sub *param0, + u8 param1, + u8 param2, + u8 param3, + u8 param4, + u16 *param5, + u8 param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10) +{ + void *st2c = param0->unk08; + + if (st2c == 0) + { + return; + } + + u8 st41; + u8 st40; + FUN_02017850(param0->unk1d, &st41, &st40); + + u8 i; + u8 j; + if (param10 == 0) + { + for (i = 0; i < param4; i++) + { + + if (param2 + i >= st40) + { + break; + } + + if (param7 + i >= param9) + { + break; + } + + for (j = 0; j < param3; j++) + { + + if (param1 + j >= st41) + { + break; + } + + if (param6 + j >= param8) + { + break; + } + + ((u16 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] = + param5[param6 + param8 * (param7 + i) + j]; + } + } + } + else + { + for (i = 0; i < param4; i++) + { + + if (param2 + i >= st40) + { + break; + } + + if (param7 + i >= param9) + { + break; + } + + for (j = 0; j < param3; j++) + { + + if (param1 + j >= st41) + { + break; + } + + if (param6 + j >= param8) + { + break; + } + + ((u16 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] = + param5[FUN_02018068((u8)(param6 + j), (u8)(param7 + i), param8, param9)]; + } + } + } +} + +THUMB_FUNC void FUN_020183DC(struct UnkStruct_02016B94_2_sub *param0, + u8 param1, + u8 param2, + u8 param3, + u8 param4, + u8 *param5, + u8 param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10) +{ + void *st2c = param0->unk08; + + if (st2c == 0) + { + return; + } + + u8 st41; + u8 st40; + FUN_02017850(param0->unk1d, &st41, &st40); + + u8 i; + u8 j; + if (param10 == 0) + { + for (i = 0; i < param4; i++) + { + + if (param2 + i >= st40) + { + break; + } + + if (param7 + i >= param9) + { + break; + } + + for (j = 0; j < param3; j++) + { + + if (param1 + j >= st41) + { + break; + } + + if (param6 + j >= param8) + { + break; + } + + ((u8 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] = + param5[param6 + param8 * (param7 + i) + j]; + } + } + } + else + { + for (i = 0; i < param4; i++) + { + + if (param2 + i >= st40) + { + break; + } + + if (param7 + i >= param9) + { + break; + } + + for (j = 0; j < param3; j++) + { + + if (param1 + j >= st41) + { + break; + } + + if (param6 + j >= param8) + { + break; + } + + ((u8 *)st2c)[FUN_02017FFC((u8)(param1 + j), (u8)(param2 + i), param0->unk1d)] = + param5[FUN_02018068((u8)(param6 + j), (u8)(param7 + i), param8, param9)]; + } + } + } +} + +THUMB_FUNC void FUN_02018540(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u16 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7) +{ + if (param0->unk08[param1].unk1c != 1) + { + + FUN_02018590(¶m0->unk08[param1], param2, param3, param4, param5, param6, param7); + } + else + { + FUN_02018640(¶m0->unk08[param1], (u8)param2, param3, param4, param5, param6); + } +} + +THUMB_FUNC void FUN_02018590(struct UnkStruct_02016B94_2_sub *param0, + u16 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6) +{ + void *r4 = param0->unk08; + + if (r4 != 0) + { + + u8 st19; + u8 st18; + FUN_02017850(param0->unk1d, &st19, &st18); + + u8 i; + u8 j; + for (i = param3; i < param3 + param5; i++) + { + if (i >= st18) + { + break; + } + + for (j = param2; j < param2 + param4; j++) + { + if (j >= st19) + { + break; + } + + u16 idx = FUN_02017FFC(j, i, param0->unk1d); + + if (param6 == 0x11) + { + ((u16 *)r4)[idx] = param1; + } + else if (param6 == 0x10) + { + ((u16 *)r4)[idx] = (u16)((((u16 *)r4)[idx] & 0xF000) + param1); + } + else + { + ((u16 *)r4)[idx] = (u16)((param6 << 0xc) + param1); + } + } + } + } +} + +THUMB_FUNC void FUN_02018640( + struct UnkStruct_02016B94_2_sub *param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5) +{ + void *r4 = param0->unk08; + + if (r4 != 0) + { + + u8 st19; + u8 st18; + FUN_02017850(param0->unk1d, &st19, &st18); + + u8 i; + u8 j; + for (i = param3; i < param3 + param5; i++) + { + if (i >= st18) + { + break; + } + + for (j = param2; j < param2 + param4; j++) + { + if (j >= st19) + { + break; + } + + ((u8 *)r4)[FUN_02017FFC(j, i, param0->unk1d)] = param1; + } + } + } +} + +THUMB_FUNC void FUN_020186B4(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6) +{ + void *r4 = param0->unk08[param1].unk08; + + if (r4 != NULL) + { + u8 st11; + u8 st10; + FUN_02017850(param0->unk08[param1].unk1d, &st11, &st10); + + u8 i; + u8 j; + for (i = param3; i < param3 + param5; i++) + { + if (i >= st10) + { + break; + } + + for (j = param2; j < param2 + param4; j++) + { + if (j >= st11) + { + break; + } + + u16 idx = FUN_02017FFC(j, i, param0->unk08[param1].unk1d); + ((u16 *)r4)[idx] = (u16)((((u16 *)r4)[idx] & 0xfff) | (param6 << 0xc)); + } + } + } +} + +THUMB_FUNC void FUN_02018744(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + if (param0->unk08[param1].unk08 != NULL) + { + MIi_CpuClear16(0, param0->unk08[param1].unk08, param0->unk08[param1].unk0c); + FUN_02017CD0(param0, param1); + } +} + +THUMB_FUNC void FUN_02018768(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2) +{ + if (param0->unk08[param1].unk08 != NULL) + { + MIi_CpuClear16(param2, param0->unk08[param1].unk08, param0->unk08[param1].unk0c); + FUN_02017CD0(param0, param1); + } +} + +THUMB_FUNC void FUN_0201878C(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2) +{ + if (param0->unk08[param1].unk08 != NULL) + { + MIi_CpuClear16(param2, param0->unk08[param1].unk08, param0->unk08[param1].unk0c); + FUN_0201AC68(param0, param1); + } +} + +THUMB_FUNC void *FUN_020187B0(u32 param0) +{ + switch (param0) + { + case 0: + return G2_GetBG0CharPtr(); + case 1: + return G2_GetBG1CharPtr(); + case 2: + return G2_GetBG2CharPtr(); + case 3: + return G2_GetBG3CharPtr(); + case 4: + return G2S_GetBG0CharPtr(); + case 5: + return G2S_GetBG1CharPtr(); + case 6: + return G2S_GetBG2CharPtr(); + case 7: + return G2S_GetBG3CharPtr(); + } + + return NULL; +} + +THUMB_FUNC void FUN_02018808(u8 *param0, u32 param1, u8 (*param2)[2], u8 param3) +{ + param3 <<= 4; + for (int i = 0; i < param1; i++) + { + param2[i][0] = (u8)(param0[i] & 0xf); + if (param2[i][0] != 0) + { + param2[i][0] += param3; + } + + param2[i][1] = (u8)((param0[i] >> 4) & 0xf); + if (param2[i][1] != 0) + { + param2[i][1] += param3; + } + } +} + +THUMB_FUNC u8 (*FUN_02018848(u8 *param0, u32 param1, u8 param2, u32 heap_id))[2] +{ + u8(*ptr)[2] = (u8(*)[2])AllocFromHeap(heap_id, param1 * 2); + + FUN_02018808(param0, param1, ptr, param2); + + return ptr; +} + +THUMB_FUNC void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + return param0->unk08[param1].unk08; +} + +THUMB_FUNC u16 FUN_02018878(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + return param0->unk08[param1].unk20; +} + +#ifdef NONMATCHING +THUMB_FUNC u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + + // the compiler keeps optimizing the stack away :( + u16 st0[16]; + switch (param1) + { + case 0: + st0[15] = reg_G2_BG0CNT; + return (u32)(st0[15] << 0x1e) >> 0x1e; + case 1: + st0[14] = reg_G2_BG1CNT; + return (u32)(st0[14] << 0x1e) >> 0x1e; + + case 2: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + st0[13] = reg_G2_BG2CNT; + return (u32)(st0[13] << 0x1e) >> 0x1e; + case 1: + st0[12] = reg_G2_BG2CNT; + return (u32)(st0[12] << 0x1e) >> 0x1e; + case 2: + st0[11] = reg_G2_BG2CNT; + return (u32)(st0[11] << 0x1e) >> 0x1e; + } + break; + case 3: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + st0[10] = reg_G2_BG3CNT; + return (u32)(st0[10] << 0x1e) >> 0x1e; + case 1: + st0[9] = reg_G2_BG3CNT; + return (u32)(st0[9] << 0x1e) >> 0x1e; + case 2: + st0[8] = reg_G2_BG3CNT; + return (u32)(st0[8] << 0x1e) >> 0x1e; + } + break; + + case 4: + st0[7] = reg_G2S_DB_BG0CNT; + return (u32)(st0[7] << 0x1e) >> 0x1e; + case 5: + st0[6] = reg_G2S_DB_BG1CNT; + return (u32)(st0[6] << 0x1e) >> 0x1e; + + case 6: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + st0[5] = reg_G2S_DB_BG2CNT; + return (u32)(st0[5] << 0x1e) >> 0x1e; + case 1: + st0[4] = reg_G2S_DB_BG2CNT; + return (u32)(st0[4] << 0x1e) >> 0x1e; + case 2: + st0[3] = reg_G2S_DB_BG2CNT; + return (u32)(st0[3] << 0x1e) >> 0x1e; + } + break; + case 7: + switch (param0->unk08[param1].unk1c) + { + default: + case 0: + st0[2] = reg_G2S_DB_BG3CNT; + return (u32)(st0[2] << 0x1e) >> 0x1e; + case 1: + st0[1] = reg_G2S_DB_BG3CNT; + return (u32)(st0[1] << 0x1e) >> 0x1e; + case 2: + st0[0] = reg_G2S_DB_BG3CNT; + return (u32)(st0[0] << 0x1e) >> 0x1e; + } + break; + } + + return 0; +} +#else +THUMB_FUNC asm u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + // clang-format off + sub sp, #0x20 + cmp r1, #0x7 + bls _0201888C + b _02018A38 +_0201888C: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02018898: + // jump table (using 16-bit offset) + // .short _020188A8 - _02018898 - 2; case 0 + // .short _020188BC - _02018898 - 2; case 1 + // .short _020188D0 - _02018898 - 2; case 2 + // .short _02018920 - _02018898 - 2; case 3 + // .short _02018970 - _02018898 - 2; case 4 + // .short _02018984 - _02018898 - 2; case 5 + // .short _02018998 - _02018898 - 2; case 6 + // .short _020189E8 - _02018898 - 2; case 7 + + lsl r6, r1, #0 + lsl r2, r4, #0 + lsl r6, r6, #0 + lsl r6, r0, #2 + lsl r6, r2, #3 + lsl r2, r5, #3 + lsl r6, r7, #3 + lsl r6, r1, #5 +_020188A8: + ldr r0, =0x04000008 + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1e] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188BC: + ldr r0, =0x0400000A + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1c] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188D0: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020188E4 + cmp r0, #0x1 + beq _020188F8 + cmp r0, #0x2 + beq _0201890C +_020188E4: + ldr r0, =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1a] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188F8: + ldr r0, =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x18] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_0201890C: + ldr r0, =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x16] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018920: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _02018934 + cmp r0, #0x1 + beq _02018948 + cmp r0, #0x2 + beq _0201895C +_02018934: + ldr r0, =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x14] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018948: + ldr r0, =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x12] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_0201895C: + ldr r0, =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x10] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018970: + ldr r0, =0x04001008 + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xe] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018984: + ldr r0, =0x0400100A + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xc] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018998: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020189AC + cmp r0, #0x1 + beq _020189C0 + cmp r0, #0x2 + beq _020189D4 +_020189AC: + ldr r0, =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xa] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189C0: + ldr r0, =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x8] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189D4: + ldr r0, =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x6] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189E8: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020189FC + cmp r0, #0x1 + beq _02018A10 + cmp r0, #0x2 + beq _02018A24 +_020189FC: + ldr r0, =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x4] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A10: + ldr r0, =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x2] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A24: + ldr r0, =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x0] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A38: + mov r0, #0x0 + add sp, #0x20 + bx lr + // clang-format on +} +#endif + +#ifdef NONMATCHING +THUMB_FUNC void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8) +{ + + u8 *unk1; + u8 *unk2; + + int st50; + if (param1->unk04 - param4 < param6) + { + st50 = param2 + param1->unk04 - param4; + } + else + { + st50 = param2 + param6; + } + + int st4c; + if (param1->unk06 - param5 < param7) + { + st4c = param3 + param1->unk06 - param5; + } + else + { + st4c = param3 + param7; + } + + int st48 = (param0->unk04 + (param0->unk04 & 7)) >> 3; + + int st44 = (param1->unk04 + (param1->unk04 & 7)) >> 3; + + u32 i, i1; + u32 j, j1; + if (param8 == 0xFFFF) + { + i1 = param5; + for (i = param3; i < st4c; i++) + { + j1 = param4; + for (j = param2; j < st50; j++) + { + + unk1 = + (u32)(param1->unk00) + (j1 >> 1) & + 0x3 + ((j1 << 2) & 0x3fe0) + st44 * ((i1 << 2) & 0x3fe0) + ((i1 << 2) & 0x1c); + unk2 = (u32)(param0->unk00) + (j >> 1) & + 0x3 + ((j << 2) & 0x3fe0) + st48 * ((i << 2) & 0x3FE0) + ((i << 2) & 0x1c); + + u8 r1 = *unk2; + + u32 r2 = (j1 << 0x1f) >> 0x1d; + u32 r7 = ((r1 >> ((j << 0x1f) >> 0x1d)) & 0xf) << r2; + + *unk1 = r7 | (*unk1 & (0xf0 >> r2)); + + j1++; + } + i1++; + } + } + else + { + + i1 = param5; + for (i = param3; i < st4c; i++) + { + j1 = param4; + for (j = param2; j < st50; j++) + { + + unk1 = (u32)param1->unk00 + ((j1 >> 1) & 3) + ((j1 << 2) & 0x3fe0) + + st44 * ((i1 << 2) & 0x3fe0) + (i1 << 2) & + 0x1c; + unk2 = (u32)param0->unk00 + ((j >> 1) & 3) + ((j << 2) & 0x3fe0) + + st48 * ((i << 2) & 0x3fe0) + ((i << 2) & 0x1c); + u8 r0 = ((*unk2) >> ((j << 0x1f) >> 0x1d)) & 0xf; + + if (r0 != param8) + { + u32 r7 = ((j1 << 0x1f) >> 0x1d); + *unk1 = (r0 << r7) | (*unk1 & (0xf0 >> r7)); + } + + j1++; + } + i1++; + } + } +} +#else +THUMB_FUNC asm void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8) +{ + // clang-format off + push {r3-r7, lr} + sub sp, #0x68 + str r2, [sp, #0x8] + str r3, [sp, #0xc] + add r2, sp, #0x70 + str r0, [sp, #0x0] + ldrh r0, [r2, #0x10] + str r1, [sp, #0x4] + ldrh r2, [r2, #0x18] + str r0, [sp, #0x10] + add r0, r1, #0x0 + ldrh r1, [r0, #0x4] + ldr r0, [sp, #0x10] + sub r3, r1, r0 + cmp r3, r2 + bge _02018A88 + ldr r0, [sp, #0x8] + add r0, r0, r3 + str r0, [sp, #0x50] + b _02018A8E +_02018A88: + ldr r0, [sp, #0x8] + add r0, r2, r0 + str r0, [sp, #0x50] +_02018A8E: + ldr r2, [sp, #0x4] + add r3, sp, #0x70 + ldrh r0, [r3, #0x14] + ldrh r2, [r2, #0x6] + ldrh r3, [r3, #0x1c] + sub r4, r2, r0 + cmp r4, r3 + bge _02018AA6 + ldr r2, [sp, #0xc] + add r2, r2, r4 + str r2, [sp, #0x4c] + b _02018AAC +_02018AA6: + ldr r2, [sp, #0xc] + add r2, r3, r2 + str r2, [sp, #0x4c] +_02018AAC: + ldr r2, [sp, #0x0] + mov r3, #0x7 + ldrh r4, [r2, #0x4] + add r2, r4, #0x0 + and r2, r3 + add r2, r4, r2 + asr r2, r2, #0x3 + str r2, [sp, #0x48] + add r2, r1, #0x0 + and r2, r3 + add r1, r1, r2 + asr r1, r1, #0x3 + str r1, [sp, #0x44] + add r1, sp, #0x70 + ldrh r1, [r1, #0x20] + ldr r2, =0x0000FFFF + str r1, [sp, #0x38] + cmp r1, r2 + bne _02018BB4 + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x4c] + cmp r2, r1 + bge _02018ADE + cmp r2, r1 + blt _02018AE0 +_02018ADE: + b _02018C92 +_02018AE0: + add r1, r2, #0x0 + lsl r1, r1, #0x2 + lsl r0, r0, #0x2 + str r1, [sp, #0x28] + str r0, [sp, #0x24] +_02018AEA: + ldr r3, [sp, #0x8] + ldr r0, [sp, #0x50] + add r1, r3, #0x0 + ldr r4, [sp, #0x10] + cmp r1, r0 + bge _02018B96 + cmp r1, r0 + bge _02018B96 + add r0, r3, #0x0 + lsl r5, r0, #0x2 + add r0, r4, #0x0 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x48] + and r1, r0 + mul r2, r1 + str r2, [sp, #0x20] + ldr r2, [sp, #0x28] + mov r1, #0x1c + and r2, r1 + str r2, [sp, #0x1c] + ldr r2, [sp, #0x24] + and r0, r2 + ldr r2, [sp, #0x44] + mul r2, r0 + ldr r0, [sp, #0x24] + str r2, [sp, #0x18] + and r0, r1 + str r0, [sp, #0x14] +_02018B26: + ldr r0, [sp, #0x4] + asr r2, r4, #0x1 + mov r1, #0x3 + ldr r0, [r0, #0x0] + and r1, r2 + add r1, r0, r1 + ldr r0, =0x00003FE0 + and r0, r6 + add r1, r1, r0 + ldr r0, [sp, #0x18] + add r6, r6, #0x4 + add r0, r1, r0 + str r0, [sp, #0x64] + lsl r0, r4, #0x1f + lsr r2, r0, #0x1d + ldr r0, [sp, #0x0] + asr r1, r3, #0x1 + ldr r7, [r0, #0x0] + mov r0, #0x3 + and r0, r1 + ldr r1, =0x00003FE0 + add r4, r4, #0x1 + and r1, r5 + str r1, [sp, #0x54] + add r1, r7, r0 + ldr r0, [sp, #0x54] + add r5, r5, #0x4 + add r1, r0, r1 + ldr r0, [sp, #0x20] + add r1, r0, r1 + ldr r0, [sp, #0x1c] + ldrb r1, [r0, r1] + lsl r0, r3, #0x1f + lsr r0, r0, #0x1d + asr r1, r0 + mov r0, #0xf + and r0, r1 + add r7, r0, #0x0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x64] + lsl r7, r2 + ldrb r0, [r0, r1] + add r3, r3, #0x1 + str r0, [sp, #0x58] + mov r0, #0xf0 + asr r0, r2 + ldr r1, [sp, #0x58] + add r2, r7, #0x0 + and r0, r1 + orr r2, r0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x64] + strb r2, [r0, r1] + ldr r0, [sp, #0x50] + cmp r3, r0 + blt _02018B26 +_02018B96: + ldr r0, [sp, #0x28] + add r0, r0, #0x4 + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0xc] + add r0, r0, #0x4 + str r0, [sp, #0x24] + ldr r0, [sp, #0x4c] + cmp r1, r0 + blt _02018AEA + add sp, #0x68 + pop {r3-r7, pc} +_02018BB4: + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x4c] + cmp r2, r1 + bge _02018C92 + cmp r2, r1 + bge _02018C92 + add r1, r2, #0x0 + lsl r1, r1, #0x2 + lsl r0, r0, #0x2 + str r1, [sp, #0x40] + str r0, [sp, #0x3c] +_02018BCA: + ldr r3, [sp, #0x8] + ldr r0, [sp, #0x50] + add r1, r3, #0x0 + ldr r4, [sp, #0x10] + cmp r1, r0 + bge _02018C78 + cmp r1, r0 + bge _02018C78 + add r0, r3, #0x0 + lsl r1, r0, #0x2 + add r0, r4, #0x0 + lsl r2, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x40] + ldr r6, [sp, #0x48] + and r5, r0 + mul r6, r5 + str r6, [sp, #0x34] + ldr r6, [sp, #0x40] + mov r5, #0x1c + and r6, r5 + str r6, [sp, #0x30] + ldr r6, [sp, #0x3c] + and r0, r6 + ldr r6, [sp, #0x44] + mul r6, r0 + ldr r0, [sp, #0x3c] + str r6, [sp, #0x2c] + and r0, r5 + str r0, [sp, #0x60] +_02018C06: + ldr r0, [sp, #0x4] + asr r6, r4, #0x1 + mov r5, #0x3 + and r5, r6 + ldr r0, [r0, #0x0] + asr r6, r3, #0x1 + add r5, r0, r5 + ldr r0, =0x00003FE0 + and r0, r2 + add r5, r5, r0 + ldr r0, [sp, #0x2c] + add r5, r5, r0 + ldr r0, [sp, #0x0] + ldr r7, [r0, #0x0] + mov r0, #0x3 + and r0, r6 + ldr r6, =0x00003FE0 + and r6, r1 + str r6, [sp, #0x5c] + add r6, r7, r0 + ldr r0, [sp, #0x5c] + add r6, r0, r6 + ldr r0, [sp, #0x34] + add r6, r0, r6 + ldr r0, [sp, #0x30] + ldrb r6, [r0, r6] + lsl r0, r3, #0x1f + lsr r0, r0, #0x1d + asr r6, r0 + mov r0, #0xf + and r0, r6 + ldr r6, [sp, #0x38] + cmp r0, r6 + beq _02018C6A + lsl r6, r4, #0x1f + lsr r7, r6, #0x1d + lsl r0, r7 + mov lr, r0 + ldr r0, [sp, #0x60] + ldrb r0, [r5, r0] + mov r12, r0 + mov r0, #0xf0 + add r6, r0, #0x0 + asr r6, r7 + mov r0, r12 + and r0, r6 + mov r6, lr + orr r6, r0 + ldr r0, [sp, #0x60] + strb r6, [r5, r0] +_02018C6A: + ldr r0, [sp, #0x50] + add r3, r3, #0x1 + add r1, r1, #0x4 + add r2, r2, #0x4 + add r4, r4, #0x1 + cmp r3, r0 + blt _02018C06 +_02018C78: + ldr r0, [sp, #0x40] + add r0, r0, #0x4 + str r0, [sp, #0x40] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + add r0, r0, #0x4 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x4c] + cmp r1, r0 + blt _02018BCA +_02018C92: + add sp, #0x68 + pop {r3-r7, pc} + // clang-format on +} +#endif + +#ifdef NONMATCHING +THUMB_FUNC void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8) +{ + // horrible for loops like the one above +} +#else +THUMB_FUNC asm void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8) +{ + // clang-format off + push {r3-r7, lr} + sub sp, #0x50 + str r2, [sp, #0x8] + str r3, [sp, #0xc] + add r2, sp, #0x58 + str r0, [sp, #0x0] + ldrh r0, [r2, #0x10] + str r1, [sp, #0x4] + ldrh r2, [r2, #0x18] + str r0, [sp, #0x10] + add r0, r1, #0x0 + ldrh r1, [r0, #0x4] + ldr r0, [sp, #0x10] + sub r3, r1, r0 + cmp r3, r2 + bge _02018CC6 + ldr r0, [sp, #0x8] + add r0, r0, r3 + b _02018CCA +_02018CC6: + ldr r0, [sp, #0x8] + add r0, r2, r0 +_02018CCA: + ldr r2, [sp, #0x4] + add r3, sp, #0x58 + mov r12, r0 + ldrh r0, [r3, #0x14] + ldrh r2, [r2, #0x6] + ldrh r3, [r3, #0x1c] + sub r4, r2, r0 + cmp r4, r3 + bge _02018CE2 + ldr r2, [sp, #0xc] + add r2, r2, r4 + b _02018CE6 +_02018CE2: + ldr r2, [sp, #0xc] + add r2, r3, r2 +_02018CE6: + mov lr, r2 + ldr r2, [sp, #0x0] + mov r3, #0x7 + ldrh r4, [r2, #0x4] + add r2, r4, #0x0 + and r2, r3 + add r2, r4, r2 + asr r2, r2, #0x3 + str r2, [sp, #0x4c] + add r2, r1, #0x0 + and r2, r3 + add r1, r1, r2 + asr r1, r1, #0x3 + str r1, [sp, #0x48] + add r1, sp, #0x58 + ldrh r1, [r1, #0x20] + ldr r2, =0x0000FFFF + str r1, [sp, #0x3c] + cmp r1, r2 + bne _02018DC6 + ldr r2, [sp, #0xc] + mov r1, lr + cmp r2, r1 + bge _02018D1C + mov r1, lr + cmp r2, r1 + blt _02018D1E +_02018D1C: + b _02018E7C +_02018D1E: + add r1, r2, #0x0 + lsl r1, r1, #0x3 + lsl r0, r0, #0x3 + str r1, [sp, #0x28] + str r0, [sp, #0x24] +_02018D28: + ldr r1, [sp, #0x8] + mov r0, r12 + add r2, r1, #0x0 + ldr r7, [sp, #0x10] + cmp r2, r0 + bge _02018DA8 + mov r0, r12 + cmp r2, r0 + bge _02018DA8 + add r0, r1, #0x0 + lsl r2, r0, #0x3 + add r0, r7, #0x0 + lsl r3, r0, #0x3 + ldr r6, =0x00007FC0 + ldr r0, [sp, #0x28] + ldr r4, [sp, #0x4c] + and r0, r6 + mul r4, r0 + str r4, [sp, #0x20] + ldr r0, [sp, #0x28] + mov r5, #0x38 + and r0, r5 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + ldr r4, [sp, #0x48] + and r0, r6 + mul r4, r0 + ldr r0, [sp, #0x24] + str r4, [sp, #0x18] + and r0, r5 + str r0, [sp, #0x14] +_02018D66: + ldr r0, [sp, #0x0] + add r5, r1, #0x0 + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, =0x00007FC0 + add r0, r0, r5 + and r4, r2 + add r4, r4, r0 + ldr r0, [sp, #0x20] + add r5, r7, #0x0 + add r4, r0, r4 + ldr r0, [sp, #0x1c] + add r1, r1, #0x1 + ldrb r6, [r0, r4] + ldr r0, [sp, #0x4] + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, =0x00007FC0 + add r0, r0, r5 + and r4, r3 + add r4, r4, r0 + ldr r0, [sp, #0x18] + add r2, #0x8 + add r4, r0, r4 + ldr r0, [sp, #0x14] + add r3, #0x8 + strb r6, [r0, r4] + mov r0, r12 + add r7, r7, #0x1 + cmp r1, r0 + blt _02018D66 +_02018DA8: + ldr r0, [sp, #0x28] + add r0, #0x8 + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0xc] + add r0, #0x8 + str r0, [sp, #0x24] + mov r0, lr + cmp r1, r0 + blt _02018D28 + add sp, #0x50 + pop {r3-r7, pc} +_02018DC6: + ldr r2, [sp, #0xc] + mov r1, lr + cmp r2, r1 + bge _02018E7C + mov r1, lr + cmp r2, r1 + bge _02018E7C + add r1, r2, #0x0 + lsl r1, r1, #0x3 + lsl r0, r0, #0x3 + str r1, [sp, #0x44] + str r0, [sp, #0x40] +_02018DDE: + ldr r2, [sp, #0x8] + mov r0, r12 + add r1, r2, #0x0 + ldr r3, [sp, #0x10] + cmp r1, r0 + bge _02018E62 + mov r0, r12 + cmp r1, r0 + bge _02018E62 + add r0, r2, #0x0 + lsl r6, r0, #0x3 + add r0, r3, #0x0 + lsl r1, r0, #0x3 + ldr r7, =0x00007FC0 + ldr r0, [sp, #0x44] + ldr r4, [sp, #0x4c] + and r0, r7 + mul r4, r0 + str r4, [sp, #0x38] + ldr r0, [sp, #0x44] + mov r5, #0x38 + and r0, r5 + str r0, [sp, #0x34] + ldr r0, [sp, #0x40] + ldr r4, [sp, #0x48] + and r0, r7 + mul r4, r0 + ldr r0, [sp, #0x40] + str r4, [sp, #0x30] + and r0, r5 + str r0, [sp, #0x2c] +_02018E1C: + ldr r0, [sp, #0x4] + mov r4, #0x7 + ldr r0, [r0, #0x0] + and r4, r3 + add r0, r0, r4 + ldr r4, =0x00007FC0 + add r5, r2, #0x0 + and r4, r1 + add r4, r0, r4 + ldr r0, [sp, #0x30] + add r7, r4, r0 + ldr r0, [sp, #0x0] + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, =0x00007FC0 + add r0, r0, r5 + and r4, r6 + add r4, r4, r0 + ldr r0, [sp, #0x38] + add r4, r0, r4 + ldr r0, [sp, #0x34] + ldrb r0, [r0, r4] + ldr r4, [sp, #0x3c] + cmp r0, r4 + beq _02018E54 + ldr r4, [sp, #0x2c] + strb r0, [r7, r4] +_02018E54: + add r2, r2, #0x1 + mov r0, r12 + add r6, #0x8 + add r1, #0x8 + add r3, r3, #0x1 + cmp r2, r0 + blt _02018E1C +_02018E62: + ldr r0, [sp, #0x44] + add r0, #0x8 + str r0, [sp, #0x44] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x40] + ldr r1, [sp, #0xc] + add r0, #0x8 + str r0, [sp, #0x40] + mov r0, lr + cmp r1, r0 + blt _02018DDE +_02018E7C: + add sp, #0x50 + pop {r3-r7, pc} + // clang-format on +} +#endif + +THUMB_FUNC void FUN_02018E88( + struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5) +{ + + int r6 = param1 + param3; + if (r6 > param0->unk04) + { + r6 = param0->unk04; + } + + int r12 = param2 + param4; + if (r12 > param0->unk06) + { + r12 = param0->unk06; + } + + int lr = (((param0->unk04) + (param0->unk04 & 7)) >> 3); + + for (int i = param2; i < r12; i++) + { + + for (int j = param1; j < r6; j++) + { + + u8 *unk = (u8 *)((u8 *)param0->unk00 + ((j >> 1) & 3) + ((j << 2) & 0x3fe0) + + (((i << 2) & 0x3fe0) * lr) + ((i << 2) & 0x1c)); + + if ((j & 1) != 0) + { + *unk &= 0xf; + *unk |= (param5 << 4); + } + else + { + *unk &= 0xf0; + *unk |= param5; + } + } + } +} + +THUMB_FUNC void FUN_02018F4C( + struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5) +{ + + int r6 = param1 + param3; + if (r6 > param0->unk04) + { + r6 = param0->unk04; + } + + int r12 = param2 + param4; + if (r12 > param0->unk06) + { + r12 = param0->unk06; + } + + int lr = (((param0->unk04) + (param0->unk04 & 7)) >> 3); + + for (int i = param2; i < r12; i++) + { + + for (int j = param1; j < r6; j++) + { + + u8 *unk = (u8 *)((u8 *)param0->unk00 + (j & 7) + ((j << 3) & 0x7fc0) + + (((i << 3) & 0x7fc0) * lr) + ((i << 3) & 0x38)); + + *unk = param5; + } + } +} + +THUMB_FUNC void *AllocWindows(u32 heap_id, s32 size) +{ + struct Window *ptr = AllocFromHeap(heap_id, (u32)(size << 4)); + + for (u16 i = 0; i < size; i++) + { + InitWindow(&ptr[i]); + } + + return ptr; +} + +THUMB_FUNC void InitWindow(struct Window *param0) +{ + param0->unk00 = 0; + param0->unk04 = 0xff; + param0->unk05 = 0; + param0->unk06 = 0; + param0->width = 0; + param0->height = 0; + param0->unk09 = 0; + + param0->unk0a_0 = 0; + param0->unk0c = 0; + + param0->unk0b_15 = 0; +} + +THUMB_FUNC BOOL FUN_02019048(struct Window *param0) +{ + if (param0->unk00 == 0 || param0->unk04 == 0xff || param0->unk0c == 0) + { + return FALSE; + } + + return TRUE; +} + +enum UnkEnum1 +{ + UnkEnum1_0 = 0, + UnkEnum1_1 = 1 +}; + +THUMB_FUNC void FUN_02019064(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7, + u16 param8) +{ + if (param0->unk08[param2].unk08 == NULL) + { + return; + } + + void *ptr = AllocFromHeap(param0->unk00, (u32)(param5 * param6 * param0->unk08[param2].unk1f)); + + if (ptr == NULL) + { + return; + } + param1->unk00 = param0; + param1->unk04 = param2; + param1->unk05 = param3; + param1->unk06 = param4; + param1->width = param5; + param1->height = param6; + param1->unk09 = param7; + + param1->unk0a_0 = param8; + param1->unk0c = ptr; + + enum UnkEnum1 r2; + if (param0->unk08[param2].unk1e == 0) + { + r2 = UnkEnum1_0; + } + else + { + r2 = UnkEnum1_1; + } + + param1->unk0b_15 = r2; +} + +THUMB_FUNC void FUN_020190EC(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + u8 param2, + u8 param3, + u16 param4, + u8 param5) +{ + u32 size = (u32)(param2 * param3 * 32); + + void *ptr = AllocFromHeap(param0->unk00, size); + + param5 |= (param5 * 16); + memset(ptr, param5, size); + + if (ptr != NULL) + { + param1->unk00 = param0; + param1->width = param2; + param1->height = param3; + param1->unk0a_0 = param4; + param1->unk0c = ptr; + param1->unk0b_15 = 0; + } +} + +THUMB_FUNC void FUN_02019150( + struct UnkStruct_02016B94_2 *param0, struct Window *param1, struct UnkStruct_02016B94_4 *param2) +{ + + FUN_02019064(param0, + param1, + param2->unk0, + param2->unk1, + param2->unk2, + param2->unk3, + param2->unk4, + param2->unk5, + param2->unk6); +} + +THUMB_FUNC void FUN_02019178(struct Window *param0) +{ + FreeToHeap(param0->unk0c); + + param0->unk00 = 0; + param0->unk04 = 0xff; + param0->unk05 = 0; + param0->unk06 = 0; + param0->width = 0; + param0->height = 0; + param0->unk09 = 0; + param0->unk0a_0 = 0; + param0->unk0c = 0; +} + +THUMB_FUNC void FUN_020191A4(struct Window *param0, int param1) +{ + for (u16 i = 0; i < param1; i++) + { + if (param0[i].unk0c != NULL) + { + FreeToHeap(param0[i].unk0c); + } + } + + FreeToHeap(param0); +} + +THUMB_FUNC void CopyWindowToVram(struct Window *param0) +{ + + GF_ASSERT(param0); + GF_ASSERT(param0->unk00); + GF_ASSERT(param0->unk04 < 8); + GF_ASSERT(param0->unk00->unk08[param0->unk04].unk1c < 3); + + UNK_020EDB68[param0->unk00->unk08[param0->unk04].unk1c](param0); +} + +THUMB_FUNC void FUN_02019220(struct Window *param0) +{ + + GF_ASSERT(param0); + GF_ASSERT(param0->unk00); + GF_ASSERT(param0->unk04 < 8); + GF_ASSERT(param0->unk00->unk08[param0->unk04].unk1c < 3); + + UNK_020EDB5C[param0->unk00->unk08[param0->unk04].unk1c](param0); +} + +THUMB_FUNC void FUN_02019270(struct Window *param0) +{ + UNK_020EDB38[param0->unk00->unk08[param0->unk04].unk1c](param0); +} + +THUMB_FUNC void FUN_0201928C(struct Window *param0, u8 param1, u8 param2) +{ + u8 unk07 = param0->width; + u8 unk08 = param0->height; + + param0->width = param1; + param0->height = param2; + UNK_020EDB38[param0->unk00->unk08[param0->unk04].unk1c](param0); + + param0->width = unk07; + param0->height = unk08; +} + +THUMB_FUNC void FUN_020192B8(struct Window *param0) +{ + UNK_020EDB74[param0->unk00->unk08[param0->unk04].unk1c](param0); +} + +THUMB_FUNC void FUN_020192D4(struct Window *param0) +{ + u32 i, j; + u32 r3; + u32 iCount, jCount; + u16 *st4 = param0->unk00->unk08[param0->unk04].unk08; + + if (st4 == NULL) + { + return; + } + + r3 = param0->unk0a_0; + jCount = (u32)(param0->unk05 + param0->width); + iCount = (u32)(param0->unk06 + param0->height); + + for (i = param0->unk06; i < iCount; i++) + { + for (j = param0->unk05; j < jCount; j++) + { + st4[((i & 0x20) * 32) + ((j & 0x20) * 32) + ((i & 0x1f) << 5) + (j & 0x1f)] = + (u16)(r3 | (param0->unk09 << 12)); + + r3++; + } + } +} + +THUMB_FUNC void FUN_02019358(struct Window *param0) +{ + int j, i; + u8 *r4; + + int r5; + int r6; + + if (param0->unk00->unk08[param0->unk04].unk08 == NULL) + { + return; + } + + r6 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d]; + + r4 = param0->unk00->unk08[param0->unk04].unk08 + param0->unk06 * r6 + param0->unk05; + r5 = param0->unk0a_0; + + for (i = 0; i < param0->height; i++) + { + for (j = 0; j < param0->width; j++) + { + r4[j] = (u8)r5; + r5++; + } + r4 += r6; + } +} + +THUMB_FUNC void FUN_020193B4(struct Window *param0) +{ + + u32 i, j; + + u32 iCount, jCount; + u32 st8; + + u16 *st4; + + if (param0->unk00->unk08[param0->unk04].unk08 == NULL) + { + return; + } + st4 = param0->unk00->unk08[param0->unk04].unk08; + + st8 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d]; + jCount = (u32)(param0->unk05 + param0->width); + iCount = (u32)(param0->unk06 + param0->height); + + for (i = param0->unk06; i < iCount; i++) + { + for (j = param0->unk05; j < jCount; j++) + { + st4[((i & 0x20) * 32) + ((j & 0x20) * 32) + ((i & 0x1f) * st8) + (j & 0x1f)] = 0; + } + } +} + +THUMB_FUNC void FUN_02019444(struct Window *param0) +{ + + int j, i; + u8 *r5; + + int r6; + + if (param0->unk00->unk08[param0->unk04].unk08 == NULL) + { + return; + } + + r6 = UNK_020EDB30[param0->unk00->unk08[param0->unk04].unk1d]; + r5 = param0->unk00->unk08[param0->unk04].unk08 + param0->unk06 * r6 + param0->unk05; + + for (i = 0; i < param0->height; i++) + { + for (j = 0; j < param0->width; j++) + { + r5[j] = 0; + } + r5 += r6; + } +} + +THUMB_FUNC void FUN_0201949C(struct Window *window) +{ + FUN_020192D4(window); + FUN_02019548(window); + FUN_02017CE8(window->unk00, + window->unk04, + window->unk00->unk08[window->unk04].unk08, + window->unk00->unk08[window->unk04].unk0c, + window->unk00->unk08[window->unk04].unk10); +} + +THUMB_FUNC void FUN_020194C8(struct Window *window) +{ + FUN_020192D4(window); + FUN_0201AC68(window->unk00, window->unk04); + FUN_02019548(window); +} + +THUMB_FUNC void FUN_020194E0(struct Window *window) +{ + FUN_02019358(window); + FUN_02017CE8(window->unk00, + window->unk04, + window->unk00->unk08[window->unk04].unk08, + window->unk00->unk08[window->unk04].unk0c, + window->unk00->unk08[window->unk04].unk10); + + FUN_02017E14(window->unk00, + window->unk04, + window->unk0c, + (u32)(window->width * window->height * 64), + window->unk0a_0); +} + +THUMB_FUNC void FUN_0201951C(struct Window *window) +{ + FUN_02019358(window); + FUN_0201AC68(window->unk00, window->unk04); + FUN_02017E14(window->unk00, + window->unk04, + window->unk0c, + (u32)(window->width * window->height * 64), + window->unk0a_0); +} + +THUMB_FUNC void FUN_02019548(struct Window *window) +{ + FUN_02017E14(window->unk00, + window->unk04, + window->unk0c, + (u32)(window->width * window->height * window->unk00->unk08[window->unk04].unk1f), + window->unk0a_0); +} + +THUMB_FUNC void FUN_02019570(struct Window *window) +{ + UNK_020EDB50[window->unk00->unk08[window->unk04].unk1c](window); +} + +THUMB_FUNC void FUN_0201958C(struct Window *window) +{ + UNK_020EDB44[window->unk00->unk08[window->unk04].unk1c](window); +} + +THUMB_FUNC void FUN_020195A8(struct Window *window) +{ + FUN_020193B4(window); + FUN_02017CE8(window->unk00, + window->unk04, + window->unk00->unk08[window->unk04].unk08, + window->unk00->unk08[window->unk04].unk0c, + window->unk00->unk08[window->unk04].unk10); +} + +THUMB_FUNC void FUN_020195D0(struct Window *window) +{ + FUN_020193B4(window); + FUN_0201AC68(window->unk00, window->unk04); +} + +THUMB_FUNC void FUN_020195E4(struct Window *window) +{ + FUN_02019444(window); + FUN_02017CE8(window->unk00, + window->unk04, + window->unk00->unk08[window->unk04].unk08, + window->unk00->unk08[window->unk04].unk0c, + window->unk00->unk08[window->unk04].unk10); +} + +THUMB_FUNC void FUN_0201960C(struct Window *window) +{ + FUN_02019444(window); + FUN_0201AC68(window->unk00, window->unk04); +} + +THUMB_FUNC void FillWindowPixelBuffer(struct Window *window, u8 param1) +{ + if (window->unk00->unk08[window->unk04].unk1f == 0x20) + { + param1 |= param1 << 4; + } + + MIi_CpuClearFast((u32)((param1 << 0x18) | (param1 << 0x10) | (param1 << 0x8) | param1), + window->unk0c, + (u32)(window->unk00->unk08[window->unk04].unk1f * window->width * window->height)); +} + +THUMB_FUNC void BlitBitmapRectToWindow(struct Window *window, + const void *src, + u16 srcX, + u16 srcY, + u16 srcWidth, + u16 srcHeight, + u16 dstX, + u16 dstY, + u16 dstWidth, + u16 dstHeight) +{ + BlitBitmapRect( + window, src, srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight, 0); +} + +THUMB_FUNC void BlitBitmapRect(struct Window *window, + void *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8, + u16 param9, + u16 param10) +{ + struct UnkStruct_02016B94_3 st1c = { param1, param4, param5 }; + struct UnkStruct_02016B94_3 st14 = { + window->unk0c, (u16)(window->width << 3), (u16)(window->height << 3) + }; + + if (window->unk00->unk08[window->unk04].unk1e == 0) + { + BlitBitmapRect4Bit(&st1c, &st14, param2, param3, param6, param7, param8, param9, param10); + } + else + { + BlitBitmapRect8Bit(&st1c, &st14, param2, param3, param6, param7, param8, param9, param10); + } +} + +THUMB_FUNC void FillWindowPixelRect( + struct Window *window, u8 fillValue, u16 x, u16 y, u16 width, u16 height) +{ + struct UnkStruct_02016B94_3 st8 = { + window->unk0c, (u16)(window->width << 3), (u16)(window->height << 3) + }; + + if (window->unk00->unk08[window->unk04].unk1e == 0) + { + FUN_02018E88(&st8, x, y, width, height, fillValue); + } + else + { + FUN_02018F4C(&st8, x, y, width, height, fillValue); + } +} + +#ifdef NONMATCHING +THUMB_FUNC void FUN_0201974C( + struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6) +{ + u32 str330 = param6; + u32 *st0 = param1; + u16 st5c = param4; + + void *st278 = window->unk0c; + u16 st58 = window->width << 3; + + int st8 = st58 - st5c; + + if (st8 >= param2) + { + st8 = param2; + } + + int st4 = (u16)(window->height << 3) - param5; + u16 st48 = param5; + + if (st4 >= param3) + { + st4 = param3; + } + + u8 r4 = 0; + if (st8 > 8) + { + r4 |= 1; + } + + if (st4 > 8) + { + r4 |= 2; + } + + if (window->unk0b_15 == 0) + { + switch (r4) + { + case 0: + u8 st70 = param6; + for (u32 st274 = 0; st274 < st4; st274++) + { + u32 st6c = (st58 + (st58 & 7)) >> 3; + + u32 st26c = st0[0]; + u8 st270 = (u8)((st70 >> st274) & 1); + u32 r2 = st5c; + + for (u32 r1 = 0; r1 < st8; r1++) + { + u32 r3 = st5c << 2; + u32 st68 = ((st48 << 2) & 0x3fe0) * st6c; + u32 r7 = (st48 << 2) & 0x1c; + u32 st64 = (((st48 + 1) << 2) & 0x3fe0) * st6c; + u32 st60 = ((st48 + 1) << 2) & 0x1c; + u32 r4 = r1; + + void *st27c = st278 + ((r2 >> 1) & 3) + (r3 & 0x3fe0); + u8 *r0 = st27c + st68; + + u8 r5 = (u8)((st26c >> r4) & 0xf); + if (r5 != 0) + { + u32 st280 = (r5 << ((r2 & 1) << 2)); + u32 st284 = r0[r7]; + + u8 r5 = ((0xf0 >> ((r2 & 1) << 2)) & st284) | st280; + r0[r7] = r5; + + if (st270 != 0) + { + *(u8 *)(st27c + st64 + st60) = r5; + } + } + + r4 += 4; + r3 += 4; + r2 += 1; + } + + if (st270 != 0) + { + st48 += 2; + } + else + { + st48++; + } + + st0++; + } + + break; + + case 1: + u32 *st25c = st0; + u32 st264 = st48; + u8 st54 = param6; + u8 st84 = param6; + + for (u32 st268 = 0; st268 < st4; st268++) + { + u32 st80 = (st58 + (st58 & 7)) >> 3; + + u32 st258 = *st25c; + u32 r2 = st5c; + u8 st260 = (st84 >> st268) & 1; + u32 r3 = st5c << 2; + u32 st7c = ((st264 << 2) & 0x3fe0) * st80; + u32 r7 = (st264 << 2) & 0x1c; + u32 st78 = (((st264 + 1) << 2) & 0x3fe0) * st80; + u32 st74 = ((st264 + 1) << 2) & 0x1c; + u32 r4 = 0; + + for (u32 r1 = 0; r1 < 8; r1++) + { + void *st288 = st278 + ((r2 >> 1) & 3) + (r3 & 0x3fe0); + u8 *r0 = st288 + st7c; + u8 r5 = (st258 >> r4) & 0xf; + if (r5 != 0) + { + u32 st28c = r5 << ((r2 & 1) << 2); + u32 st290 = r0[r7]; + u8 r5 = ((0xf0 >> ((r2 & 1) << 2)) & st290) | st28c; + r0[r7] = r5; + + if (st260 != 0) + { + *(u8 *)(st288 + st78 + st74) = r5; + } + } + + r4 += 4; + r3 += 4; + r2++; + } + + if (st260 != 0) + { + st264 += 2; + } + else + { + st264++; + } + + st25c++; + } + + st0 += 0x20; + u8 st98 = st54; + + for (u32 st254 = 0; st254 < st4; st254++) + { + st5c += 8; + u32 st94 = (st58 + (st58 & 7)) >> 3; + + //_02019A00 + } + + break; + + case 2: + // TODO + break; + case 3: + // TODO + break; + } + } + else + { + // TODO: FUN_0201A12C + } +} +#else +asm void FUN_0201974C( + struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6) +{ + // clang-format off + push {r4-r7, lr} + sub sp, #0x1fc + sub sp, #0x118 + add r5, r0, #0x0 + ldr r0, [sp, #0x330] + str r1, [sp, #0x0] + str r0, [sp, #0x330] + add r1, sp, #0x318 + ldrh r1, [r1, #0x10] + ldr r0, [r5, #0xc] + str r1, [sp, #0x5c] + ldrb r1, [r5, #0x7] + str r0, [sp, #0x278] + ldrb r0, [r5, #0x8] + lsl r1, r1, #0x13 + lsr r4, r1, #0x10 + ldr r1, [sp, #0x5c] + lsl r0, r0, #0x13 + sub r1, r4, r1 + lsr r0, r0, #0x10 + str r4, [sp, #0x58] + str r1, [sp, #0x8] + cmp r1, r2 + blt _0201977E + str r2, [sp, #0x8] +_0201977E: + add r1, sp, #0x318 + ldrh r1, [r1, #0x14] + sub r0, r0, r1 + str r1, [sp, #0x48] + str r0, [sp, #0x4] + cmp r0, r3 + blt _0201978E + str r3, [sp, #0x4] +_0201978E: + ldr r0, [sp, #0x8] + mov r4, #0x0 + cmp r0, #0x8 + ble _0201979E + mov r0, #0x1 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0201979E: + ldr r0, [sp, #0x4] + cmp r0, #0x8 + ble _020197AC + mov r0, #0x2 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_020197AC: + ldrh r0, [r5, #0xa] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1f + beq _020197B8 + bl FUN_0201A12C +_020197B8: + cmp r4, #0x3 + bls _020197C0 + bl FUN_0201A8BC +_020197C0: + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020197CC: + lsl r6, r0, #0 + lsl r0, r1, #4 + lsl r0, r3, #12 + lsl r0, r7, #20 + // jump table (using 16-bit offset) + // .short _020197D4 - _020197CC - 2; case 0 + // .short _020198D6 - _020197CC - 2; case 1 + // .short _02019AE6 - _020197CC - 2; case 2 + // .short _02019D06 - _020197CC - 2; case 3 +_020197D4: + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x70] + mov r0, #0x0 + str r0, [sp, #0x274] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bgt _020197EA + bl FUN_0201A8BC +_020197EA: + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x6c] +_020197F6: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x70] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x26c] + ldr r0, [sp, #0x274] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x270] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _020198AA + ble _020198AA + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x6c] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0x68] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x6c] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x64] + str r0, [sp, #0x60] +_02019848: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x68] + str r5, [sp, #0x27c] + add r0, r5, r0 + ldr r5, [sp, #0x26c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _0201989C + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x280] + ldrb r5, [r0, r7] + str r5, [sp, #0x284] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x284] + and r6, r5 + ldr r5, [sp, #0x280] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x270] + cmp r0, #0x0 + beq _0201989C + ldr r6, [sp, #0x27c] + ldr r0, [sp, #0x64] + add r6, r6, r0 + ldr r0, [sp, #0x60] + strb r5, [r0, r6] +_0201989C: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019848 +_020198AA: + ldr r0, [sp, #0x270] + cmp r0, #0x0 + beq _020198B8 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _020198BE +_020198B8: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_020198BE: + ldr r0, [sp, #0x0] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x274] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x274] + cmp r1, r0 + blt _020197F6 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_020198D6: + ldr r0, [sp, #0x0] + str r0, [sp, #0x25c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x264] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x54] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x84] + mov r0, #0x0 + str r0, [sp, #0x268] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _020199D2 + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x80] +_02019902: + ldr r0, [sp, #0x25c] + ldr r1, [sp, #0x84] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x258] + ldr r0, [sp, #0x268] + ldr r6, [sp, #0x80] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x260] + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x264] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x264] + str r6, [sp, #0x7c] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x80] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x78] + str r0, [sp, #0x74] +_0201994C: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x7c] + str r5, [sp, #0x288] + add r0, r5, r0 + ldr r5, [sp, #0x258] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _020199A0 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x28c] + ldrb r5, [r0, r7] + str r5, [sp, #0x290] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x290] + and r6, r5 + ldr r5, [sp, #0x28c] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x260] + cmp r0, #0x0 + beq _020199A0 + ldr r6, [sp, #0x288] + ldr r0, [sp, #0x78] + add r6, r6, r0 + ldr r0, [sp, #0x74] + strb r5, [r0, r6] +_020199A0: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _0201994C + ldr r0, [sp, #0x260] + cmp r0, #0x0 + beq _020199BA + ldr r0, [sp, #0x264] + add r0, r0, #0x2 + str r0, [sp, #0x264] + b _020199C0 +_020199BA: + ldr r0, [sp, #0x264] + add r0, r0, #0x1 + str r0, [sp, #0x264] +_020199C0: + ldr r0, [sp, #0x25c] + add r0, r0, #0x4 + str r0, [sp, #0x25c] + ldr r0, [sp, #0x268] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x268] + cmp r1, r0 + blt _02019902 +_020199D2: + ldr r0, [sp, #0x0] + add r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x54] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x98] + mov r0, #0x0 + str r0, [sp, #0x254] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bgt _020199EE + bl FUN_0201A8BC +_020199EE: + ldr r0, [sp, #0x5c] + mov r1, #0x7 + add r0, #0x8 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x94] +_02019A00: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x98] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x24c] + ldr r0, [sp, #0x254] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x250] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x294] + sub r0, #0x8 + str r0, [sp, #0x294] + cmp r0, #0x0 + ble _02019ABA + ble _02019ABA + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x94] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0x90] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x94] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x8c] + str r0, [sp, #0x88] +_02019A58: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x90] + str r5, [sp, #0x298] + add r0, r5, r0 + ldr r5, [sp, #0x24c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019AAC + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x29c] + ldrb r5, [r0, r7] + str r5, [sp, #0x2a0] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2a0] + and r6, r5 + ldr r5, [sp, #0x29c] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x250] + cmp r0, #0x0 + beq _02019AAC + ldr r6, [sp, #0x298] + ldr r0, [sp, #0x8c] + add r6, r6, r0 + ldr r0, [sp, #0x88] + strb r5, [r0, r6] +_02019AAC: + ldr r0, [sp, #0x294] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019A58 +_02019ABA: + ldr r0, [sp, #0x250] + cmp r0, #0x0 + beq _02019AC8 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _02019ACE +_02019AC8: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019ACE: + ldr r0, [sp, #0x0] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x254] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x254] + cmp r1, r0 + blt _02019A00 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_02019AE6: + ldr r0, [sp, #0x0] + mov r1, #0x7 + str r0, [sp, #0x23c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x244] + mov r0, #0x0 + str r0, [sp, #0x248] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xa8] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x40] +_02019B06: + ldr r0, [sp, #0x23c] + ldr r1, [sp, #0xa8] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x238] + ldr r0, [sp, #0x248] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x240] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _02019BC2 + ble _02019BC2 + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x244] + ldr r6, [sp, #0x40] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x244] + str r6, [sp, #0xa4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x40] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xa0] + str r0, [sp, #0x9c] +_02019B58: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 +// b _02019B6C +// nop +// _02019B68: .word 0x00003FE0 +// _02019B6C: + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xa4] + str r5, [sp, #0x2a4] + add r0, r5, r0 + ldr r5, [sp, #0x238] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019BB4 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2a8] + ldrb r5, [r0, r7] + str r5, [sp, #0x2ac] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2ac] + and r6, r5 + ldr r5, [sp, #0x2a8] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x240] + cmp r0, #0x0 + beq _02019BB4 + ldr r6, [sp, #0x2a4] + ldr r0, [sp, #0xa0] + add r6, r6, r0 + ldr r0, [sp, #0x9c] + strb r5, [r0, r6] +_02019BB4: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019B58 +_02019BC2: + ldr r0, [sp, #0x240] + cmp r0, #0x0 + beq _02019BD0 + ldr r0, [sp, #0x244] + add r0, r0, #0x2 + str r0, [sp, #0x244] + b _02019BD6 +_02019BD0: + ldr r0, [sp, #0x244] + add r0, r0, #0x1 + str r0, [sp, #0x244] +_02019BD6: + ldr r0, [sp, #0x23c] + add r0, r0, #0x4 + str r0, [sp, #0x23c] + ldr r0, [sp, #0x248] + add r0, r0, #0x1 + str r0, [sp, #0x248] + cmp r0, #0x8 + blt _02019B06 + ldr r0, [sp, #0x0] + mov r2, #0x0 + add r0, #0x40 + str r0, [sp, #0x0] + ldr r0, [sp, #0x48] + mov r1, #0x1 + add r0, #0x8 + str r0, [sp, #0x48] +_02019BF6: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _02019C04 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019C04: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _02019BF6 + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xb8] + mov r0, #0x0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + bgt _02019C24 + bl FUN_0201A8BC +_02019C24: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0xb8] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x230] + ldr r0, [sp, #0x20] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x234] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _02019CD8 + ble _02019CD8 + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x40] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0xb4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x40] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xb0] + str r0, [sp, #0xac] +_02019C76: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xb4] + str r5, [sp, #0x2b0] + add r0, r5, r0 + ldr r5, [sp, #0x230] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019CCA + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2b4] + ldrb r5, [r0, r7] + str r5, [sp, #0x2b8] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2b8] + and r6, r5 + ldr r5, [sp, #0x2b4] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x234] + cmp r0, #0x0 + beq _02019CCA + ldr r6, [sp, #0x2b0] + ldr r0, [sp, #0xb0] + add r6, r6, r0 + ldr r0, [sp, #0xac] + strb r5, [r0, r6] +_02019CCA: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019C76 +_02019CD8: + ldr r0, [sp, #0x234] + cmp r0, #0x0 + beq _02019CE6 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _02019CEC +_02019CE6: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019CEC: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x20] + cmp r0, r1 + blt _02019C24 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_02019D06: + ldr r0, [sp, #0x0] + str r0, [sp, #0x220] + ldr r0, [sp, #0x48] + str r0, [sp, #0x228] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x0 + str r0, [sp, #0x22c] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x38] +_02019D2A: + ldr r0, [sp, #0x220] + ldr r1, [sp, #0x3c] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x21c] + ldr r0, [sp, #0x22c] + ldr r6, [sp, #0x38] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x224] + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x228] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x228] + str r6, [sp, #0xc4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + str r3, [sp, #0x34] + add r4, r1, #0x0 + str r5, [sp, #0xc0] + str r0, [sp, #0xbc] +_02019D76: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xc4] + str r5, [sp, #0x2bc] + add r0, r5, r0 + ldr r5, [sp, #0x21c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019DCA + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2c0] + ldrb r5, [r0, r7] + str r5, [sp, #0x2c4] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2c4] + and r6, r5 + ldr r5, [sp, #0x2c0] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x224] + cmp r0, #0x0 + beq _02019DCA + ldr r6, [sp, #0x2bc] + ldr r0, [sp, #0xc0] + add r6, r6, r0 + ldr r0, [sp, #0xbc] + strb r5, [r0, r6] +_02019DCA: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _02019D76 + ldr r0, [sp, #0x224] + cmp r0, #0x0 + beq _02019DE4 + ldr r0, [sp, #0x228] + add r0, r0, #0x2 + str r0, [sp, #0x228] + b _02019DEA +_02019DE4: + ldr r0, [sp, #0x228] + add r0, r0, #0x1 + str r0, [sp, #0x228] +_02019DEA: + ldr r0, [sp, #0x220] + add r0, r0, #0x4 + str r0, [sp, #0x220] + ldr r0, [sp, #0x22c] + add r0, r0, #0x1 + str r0, [sp, #0x22c] + cmp r0, #0x8 + blt _02019D2A + ldr r0, [sp, #0x0] + str r0, [sp, #0x20c] + add r0, #0x20 + str r0, [sp, #0x20c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x214] + mov r0, #0x0 + str r0, [sp, #0x218] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xd4] + add r0, #0x8 + str r0, [sp, #0xd4] +_02019E12: + ldr r0, [sp, #0x20c] + ldr r1, [sp, #0x3c] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0xd4] + str r0, [sp, #0x208] + ldr r0, [sp, #0x218] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x210] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x2c8] + sub r0, #0x8 + str r0, [sp, #0x2c8] + cmp r0, #0x0 + ble _02019ECC + ble _02019ECC + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x214] + ldr r6, [sp, #0x38] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x214] + str r6, [sp, #0xd0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xcc] + str r0, [sp, #0xc8] +_02019E6A: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xd0] + str r5, [sp, #0x2cc] + add r0, r5, r0 + ldr r5, [sp, #0x208] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019EBE + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2d0] + ldrb r5, [r0, r7] + str r5, [sp, #0x2d4] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2d4] + and r6, r5 + ldr r5, [sp, #0x2d0] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x210] + cmp r0, #0x0 + beq _02019EBE + ldr r6, [sp, #0x2cc] + ldr r0, [sp, #0xcc] + add r6, r6, r0 + ldr r0, [sp, #0xc8] + strb r5, [r0, r6] +_02019EBE: + ldr r0, [sp, #0x2c8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019E6A +_02019ECC: + ldr r0, [sp, #0x210] + cmp r0, #0x0 + beq _02019EDA + ldr r0, [sp, #0x214] + add r0, r0, #0x2 + str r0, [sp, #0x214] + b _02019EE0 +_02019EDA: + ldr r0, [sp, #0x214] + add r0, r0, #0x1 + str r0, [sp, #0x214] +_02019EE0: + ldr r0, [sp, #0x20c] + add r0, r0, #0x4 + str r0, [sp, #0x20c] + ldr r0, [sp, #0x218] + add r0, r0, #0x1 + str r0, [sp, #0x218] + cmp r0, #0x8 + blt _02019E12 + ldr r0, [sp, #0x0] + mov r2, #0x0 + str r0, [sp, #0x1fc] + add r0, #0x40 + str r0, [sp, #0x1fc] + ldr r0, [sp, #0x48] + mov r1, #0x1 + add r0, #0x8 + str r0, [sp, #0x48] + str r0, [sp, #0x204] +_02019F04: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _02019F12 + ldr r0, [sp, #0x204] + add r0, r0, #0x1 + str r0, [sp, #0x204] +_02019F12: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _02019F04 + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + str r0, [sp, #0x50] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xe4] + mov r0, #0x0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A008 +_02019F30: + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0xe4] + ldr r0, [r0, #0x0] + ldr r6, [sp, #0x38] + str r0, [sp, #0x1f8] + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x200] + ldr r0, [sp, #0x204] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x204] + str r6, [sp, #0xe0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + ldr r3, [sp, #0x34] + add r4, r1, #0x0 + str r5, [sp, #0xdc] + str r0, [sp, #0xd8] +_02019F78: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 +// b _02019F8C +// nop +// _02019F88: .word 0x00003FE0 +// _02019F8C: + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xe0] + str r5, [sp, #0x2d8] + add r0, r5, r0 + ldr r5, [sp, #0x1f8] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019FD4 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2dc] + ldrb r5, [r0, r7] + str r5, [sp, #0x2e0] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2e0] + and r6, r5 + ldr r5, [sp, #0x2dc] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x200] + cmp r0, #0x0 + beq _02019FD4 + ldr r6, [sp, #0x2d8] + ldr r0, [sp, #0xdc] + add r6, r6, r0 + ldr r0, [sp, #0xd8] + strb r5, [r0, r6] +_02019FD4: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _02019F78 + ldr r0, [sp, #0x200] + cmp r0, #0x0 + beq _02019FEE + ldr r0, [sp, #0x204] + add r0, r0, #0x2 + str r0, [sp, #0x204] + b _02019FF4 +_02019FEE: + ldr r0, [sp, #0x204] + add r0, r0, #0x1 + str r0, [sp, #0x204] +_02019FF4: + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x1fc] + ldr r0, [sp, #0x1c] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1c] + cmp r0, r1 + blt _02019F30 +_0201A008: + ldr r0, [sp, #0x0] + mov r2, #0x0 + add r0, #0x60 + str r0, [sp, #0x0] + mov r1, #0x1 +_0201A012: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _0201A020 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A020: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _0201A012 + ldr r0, [sp, #0x50] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xf4] + mov r0, #0x0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + bgt _0201A03E + bl FUN_0201A8BC +_0201A03E: + ldr r0, [sp, #0x5c] + add r0, #0x8 + str r0, [sp, #0x5c] +_0201A044: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0xf4] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x1f0] + ldr r0, [sp, #0x18] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1f4] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x2e4] + sub r0, #0x8 + str r0, [sp, #0x2e4] + cmp r0, #0x0 + ble _0201A0FE + ble _0201A0FE + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x38] + lsl r5, r0, #0x2 + ldr r0, =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0xf0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xec] + str r0, [sp, #0xe8] +_0201A09C: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xf0] + str r5, [sp, #0x2e8] + add r0, r5, r0 + ldr r5, [sp, #0x1f0] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _0201A0F0 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2ec] + ldrb r5, [r0, r7] + mov r12, r5 + mov r5, #0xf0 + asr r5, r6 + mov r6, r12 + and r6, r5 + ldr r5, [sp, #0x2ec] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x1f4] + cmp r0, #0x0 + beq _0201A0F0 + ldr r6, [sp, #0x2e8] + ldr r0, [sp, #0xec] + add r6, r6, r0 + ldr r0, [sp, #0xe8] + strb r5, [r0, r6] +_0201A0F0: + ldr r0, [sp, #0x2e4] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _0201A09C +_0201A0FE: + ldr r0, [sp, #0x1f4] + cmp r0, #0x0 + beq _0201A10C + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A112 +_0201A10C: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A112: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x18] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x18] + cmp r0, r1 + blt _0201A044 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} + +FUN_0201A12C: // 0x0201A12C + lsl r1, r2, #0x2 + mul r1, r3 + ldr r3, [r5, #0x0] + ldrb r2, [r5, #0x9] + ldr r0, [sp, #0x0] + ldr r3, [r3, #0x0] + lsl r1, r1, #0x3 + bl FUN_02018848 + str r0, [sp, #0x1ec] + cmp r4, #0x3 + bhi _0201A21E + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0201A150: + + lsl r6, r0, #0 + lsl r6, r1, #3 + lsl r0, r7, #9 + lsl r4, r3, #16 + // jump table (using 16-bit offset) + // .short _0201A158 - _0201A150 - 2; case 0 + // .short _0201A220 - _0201A150 - 2; case 1 + // .short _0201A3CA - _0201A150 - 2; case 2 + // .short _0201A56E - _0201A150 - 2; case 3 +_0201A158: + ldr r0, [sp, #0x330] + ldr r7, [sp, #0x1ec] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10c] + mov r0, #0x0 + str r0, [sp, #0x1e8] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A21E + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x108] +_0201A178: + ldr r1, [sp, #0x10c] + ldr r0, [sp, #0x1e8] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x310] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A1FC + ble _0201A1FC + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x108] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x100] + ldr r0, [sp, #0x48] + str r2, [sp, #0x104] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x108] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0xfc] + str r0, [sp, #0xf8] +_0201A1C4: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x104] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A1F0 + ldr r0, [sp, #0x100] + strb r1, [r2, r0] + ldr r0, [sp, #0x310] + cmp r0, #0x0 + beq _0201A1F0 + ldr r0, [sp, #0xfc] + add r2, r3, r0 + ldr r0, [sp, #0xf8] + strb r1, [r0, r2] +_0201A1F0: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A1C4 +_0201A1FC: + ldr r0, [sp, #0x310] + cmp r0, #0x0 + beq _0201A20A + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A210 +_0201A20A: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A210: + ldr r0, [sp, #0x1e8] + add r7, #0x8 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1e8] + cmp r1, r0 + blt _0201A178 +_0201A21E: + b _0201A8B6 +_0201A220: + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + str r0, [sp, #0x1e0] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x124] + mov r0, #0x0 + str r0, [sp, #0x1e4] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A2E6 + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x120] +_0201A24A: + ldr r1, [sp, #0x124] + ldr r0, [sp, #0x1e4] + ldr r5, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x30c] + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1e0] + ldr r2, [sp, #0x120] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x118] + ldr r0, [sp, #0x1e0] + str r2, [sp, #0x11c] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x120] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + mov r4, #0x0 + str r2, [sp, #0x114] + str r0, [sp, #0x110] +_0201A28E: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x11c] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A2BA + ldr r0, [sp, #0x118] + strb r1, [r2, r0] + ldr r0, [sp, #0x30c] + cmp r0, #0x0 + beq _0201A2BA + ldr r0, [sp, #0x114] + add r2, r3, r0 + ldr r0, [sp, #0x110] + strb r1, [r0, r2] +_0201A2BA: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A28E + ldr r0, [sp, #0x30c] + cmp r0, #0x0 + beq _0201A2D2 + ldr r0, [sp, #0x1e0] + add r0, r0, #0x2 + str r0, [sp, #0x1e0] + b _0201A2D8 +_0201A2D2: + ldr r0, [sp, #0x1e0] + add r0, r0, #0x1 + str r0, [sp, #0x1e0] +_0201A2D8: + ldr r0, [sp, #0x1e4] + add r7, #0x8 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1e4] + cmp r1, r0 + blt _0201A24A +_0201A2E6: + ldr r0, [sp, #0x1ec] + str r0, [sp, #0x308] + add r0, #0x40 + str r0, [sp, #0x308] + ldr r0, [sp, #0x4c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x13c] + mov r0, #0x0 + str r0, [sp, #0x1dc] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A3C8 + ldr r0, [sp, #0x5c] + mov r1, #0x7 + add r0, #0x8 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x138] +_0201A312: + ldr r1, [sp, #0x13c] + ldr r0, [sp, #0x1dc] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1d8] + ldr r5, [sp, #0x5c] + cmp r7, #0x0 + ble _0201A398 + ble _0201A398 + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x138] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x130] + ldr r0, [sp, #0x48] + str r2, [sp, #0x134] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x138] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x12c] + str r0, [sp, #0x128] +_0201A360: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x134] + add r2, r3, r0 + ldr r0, [sp, #0x308] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A38E + ldr r0, [sp, #0x130] + strb r1, [r2, r0] + ldr r0, [sp, #0x1d8] + cmp r0, #0x0 + beq _0201A38E + ldr r0, [sp, #0x12c] + add r2, r3, r0 + ldr r0, [sp, #0x128] + strb r1, [r0, r2] +_0201A38E: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A360 +_0201A398: + ldr r0, [sp, #0x1d8] + cmp r0, #0x0 + beq _0201A3B0 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A3B6 +// nop +// _0201A3A8: .word 0x00003FE0 +// _0201A3AC: .word 0x00007FC0 +_0201A3B0: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A3B6: + ldr r0, [sp, #0x308] + add r0, #0x8 + str r0, [sp, #0x308] + ldr r0, [sp, #0x1dc] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1dc] + cmp r1, r0 + blt _0201A312 +_0201A3C8: + b _0201A8B6 +_0201A3CA: + ldr r0, [sp, #0x48] + mov r1, #0x7 + str r0, [sp, #0x1d0] + mov r0, #0x0 + str r0, [sp, #0x1d4] + ldr r0, [sp, #0x330] + ldr r7, [sp, #0x1ec] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x150] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x30] +_0201A3E8: + ldr r1, [sp, #0x150] + ldr r0, [sp, #0x1d4] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x304] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A46C + ble _0201A46C + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1d0] + ldr r2, [sp, #0x30] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x148] + ldr r0, [sp, #0x1d0] + str r2, [sp, #0x14c] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x30] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x144] + str r0, [sp, #0x140] +_0201A434: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x14c] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A460 + ldr r0, [sp, #0x148] + strb r1, [r2, r0] + ldr r0, [sp, #0x304] + cmp r0, #0x0 + beq _0201A460 + ldr r0, [sp, #0x144] + add r2, r3, r0 + ldr r0, [sp, #0x140] + strb r1, [r0, r2] +_0201A460: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A434 +_0201A46C: + ldr r0, [sp, #0x304] + cmp r0, #0x0 + beq _0201A47A + ldr r0, [sp, #0x1d0] + add r0, r0, #0x2 + str r0, [sp, #0x1d0] + b _0201A480 +_0201A47A: + ldr r0, [sp, #0x1d0] + add r0, r0, #0x1 + str r0, [sp, #0x1d0] +_0201A480: + ldr r0, [sp, #0x1d4] + add r7, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1d4] + cmp r0, #0x8 + blt _0201A3E8 + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + add r0, #0x8 + str r0, [sp, #0x48] + add r7, #0x80 + mov r0, #0x0 + mov r2, #0x1 +_0201A49A: + ldr r1, [sp, #0x330] + asr r1, r0 + tst r1, r2 + beq _0201A4A8 + ldr r1, [sp, #0x48] + add r1, r1, #0x1 + str r1, [sp, #0x48] +_0201A4A8: + add r0, r0, #0x1 + cmp r0, #0x8 + blt _0201A49A + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x164] + mov r0, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A56C +_0201A4C4: + ldr r1, [sp, #0x164] + ldr r0, [sp, #0x14] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x300] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A548 + ble _0201A548 + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x30] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x15c] + ldr r0, [sp, #0x48] + str r2, [sp, #0x160] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x30] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x158] + str r0, [sp, #0x154] +_0201A510: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x160] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A53C + ldr r0, [sp, #0x15c] + strb r1, [r2, r0] + ldr r0, [sp, #0x300] + cmp r0, #0x0 + beq _0201A53C + ldr r0, [sp, #0x158] + add r2, r3, r0 + ldr r0, [sp, #0x154] + strb r1, [r0, r2] +_0201A53C: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A510 +_0201A548: + ldr r0, [sp, #0x300] + cmp r0, #0x0 + beq _0201A556 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A55C +_0201A556: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A55C: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r0, r0, #0x1 + sub r1, #0x8 + add r7, #0x8 + str r0, [sp, #0x14] + cmp r0, r1 + blt _0201A4C4 +_0201A56C: + b _0201A8B6 +_0201A56E: + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + str r0, [sp, #0x1c8] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x0 + str r0, [sp, #0x1cc] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x28] +_0201A590: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1cc] + ldr r5, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2fc] + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1c8] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x170] + ldr r0, [sp, #0x1c8] + str r2, [sp, #0x174] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + mov r4, #0x0 + str r6, [sp, #0x24] + str r2, [sp, #0x16c] + str r0, [sp, #0x168] +_0201A5D6: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x174] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A602 + ldr r0, [sp, #0x170] + strb r1, [r2, r0] + ldr r0, [sp, #0x2fc] + cmp r0, #0x0 + beq _0201A602 + ldr r0, [sp, #0x16c] + add r2, r3, r0 + ldr r0, [sp, #0x168] + strb r1, [r0, r2] +_0201A602: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A5D6 + ldr r0, [sp, #0x2fc] + cmp r0, #0x0 + beq _0201A61A + ldr r0, [sp, #0x1c8] + add r0, r0, #0x2 + str r0, [sp, #0x1c8] + b _0201A620 +_0201A61A: + ldr r0, [sp, #0x1c8] + add r0, r0, #0x1 + str r0, [sp, #0x1c8] +_0201A620: + ldr r0, [sp, #0x1cc] + add r7, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1cc] + cmp r0, #0x8 + blt _0201A590 + ldr r0, [sp, #0x1ec] + str r0, [sp, #0x2f8] + add r0, #0x40 + str r0, [sp, #0x2f8] + ldr r0, [sp, #0x48] + str r0, [sp, #0x1c0] + mov r0, #0x0 + str r0, [sp, #0x1c4] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x188] + add r0, #0x8 + str r0, [sp, #0x188] +_0201A644: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1c4] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1bc] + ldr r5, [sp, #0x188] + cmp r7, #0x0 + ble _0201A6CA + ble _0201A6CA + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1c0] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x180] + ldr r0, [sp, #0x1c0] + str r2, [sp, #0x184] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x17c] + str r0, [sp, #0x178] +_0201A692: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x184] + add r2, r3, r0 + ldr r0, [sp, #0x2f8] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A6C0 + ldr r0, [sp, #0x180] + strb r1, [r2, r0] + ldr r0, [sp, #0x1bc] + cmp r0, #0x0 + beq _0201A6C0 + ldr r0, [sp, #0x17c] + add r2, r3, r0 + ldr r0, [sp, #0x178] + strb r1, [r0, r2] +_0201A6C0: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A692 +_0201A6CA: + ldr r0, [sp, #0x1bc] + cmp r0, #0x0 + beq _0201A6D8 + ldr r0, [sp, #0x1c0] + add r0, r0, #0x2 + str r0, [sp, #0x1c0] + b _0201A6DE +_0201A6D8: + ldr r0, [sp, #0x1c0] + add r0, r0, #0x1 + str r0, [sp, #0x1c0] +_0201A6DE: + ldr r0, [sp, #0x2f8] + add r0, #0x8 + str r0, [sp, #0x2f8] + ldr r0, [sp, #0x1c4] + add r0, r0, #0x1 + str r0, [sp, #0x1c4] + cmp r0, #0x8 + blt _0201A644 + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + add r0, #0x8 + add r7, #0x80 + str r0, [sp, #0x48] + str r0, [sp, #0x1b8] + mov r0, #0x0 + mov r2, #0x1 +_0201A6FE: + ldr r1, [sp, #0x330] + asr r1, r0 + tst r1, r2 + beq _0201A70C + ldr r1, [sp, #0x1b8] + add r1, r1, #0x1 + str r1, [sp, #0x1b8] +_0201A70C: + add r0, r0, #0x1 + cmp r0, #0x8 + blt _0201A6FE + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + str r0, [sp, #0x44] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x19c] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A7CE +_0201A72A: + ldr r1, [sp, #0x19c] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x28] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2f4] + ldr r0, [sp, #0x1b8] + mov r3, #0x38 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 +// b _0201A74C +// nop +// _0201A748: .word 0x00007FC0 +// _0201A74C: + ldr r5, [sp, #0x5c] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x194] + ldr r0, [sp, #0x1b8] + str r2, [sp, #0x198] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + ldr r6, [sp, #0x24] + mov r4, #0x0 + str r2, [sp, #0x190] + str r0, [sp, #0x18c] +_0201A774: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x198] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A7A0 + ldr r0, [sp, #0x194] + strb r1, [r2, r0] + ldr r0, [sp, #0x2f4] + cmp r0, #0x0 + beq _0201A7A0 + ldr r0, [sp, #0x190] + add r2, r3, r0 + ldr r0, [sp, #0x18c] + strb r1, [r0, r2] +_0201A7A0: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A774 + ldr r0, [sp, #0x2f4] + cmp r0, #0x0 + beq _0201A7B8 + ldr r0, [sp, #0x1b8] + add r0, r0, #0x2 + str r0, [sp, #0x1b8] + b _0201A7BE +_0201A7B8: + ldr r0, [sp, #0x1b8] + add r0, r0, #0x1 + str r0, [sp, #0x1b8] +_0201A7BE: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x4] + add r0, r0, #0x1 + sub r1, #0x8 + add r7, #0x8 + str r0, [sp, #0x10] + cmp r0, r1 + blt _0201A72A +_0201A7CE: + ldr r0, [sp, #0x1ec] + mov r2, #0x0 + str r0, [sp, #0x2f0] + add r0, #0xc0 + str r0, [sp, #0x2f0] + mov r1, #0x1 +_0201A7DA: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _0201A7E8 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A7E8: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _0201A7DA + ldr r0, [sp, #0x44] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1b0] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A8B6 + ldr r0, [sp, #0x5c] + add r0, #0x8 + str r0, [sp, #0x5c] +_0201A808: + ldr r1, [sp, #0x1b0] + ldr r0, [sp, #0xc] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1b4] + ldr r5, [sp, #0x5c] + cmp r7, #0x0 + ble _0201A88E + ble _0201A88E + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x1a8] + ldr r0, [sp, #0x48] + str r2, [sp, #0x1ac] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x1a4] + str r0, [sp, #0x1a0] +_0201A856: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x1ac] + add r2, r3, r0 + ldr r0, [sp, #0x2f0] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A884 + ldr r0, [sp, #0x1a8] + strb r1, [r2, r0] + ldr r0, [sp, #0x1b4] + cmp r0, #0x0 + beq _0201A884 + ldr r0, [sp, #0x1a4] + add r2, r3, r0 + ldr r0, [sp, #0x1a0] + strb r1, [r0, r2] +_0201A884: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A856 +_0201A88E: + ldr r0, [sp, #0x1b4] + cmp r0, #0x0 + beq _0201A89C + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A8A2 +_0201A89C: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A8A2: + ldr r0, [sp, #0x2f0] + ldr r1, [sp, #0x4] + add r0, #0x8 + str r0, [sp, #0x2f0] + ldr r0, [sp, #0xc] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0xc] + cmp r0, r1 + blt _0201A808 +_0201A8B6: + ldr r0, [sp, #0x1ec] + bl FreeToHeap + +FUN_0201A8BC: // 0x0201A8BC + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} + // clang-format on +} +#endif + +THUMB_FUNC void ScrollWindow(struct Window *window, u32 param1, u8 param2, u8 param3) +{ + if (window->unk00->unk08[window->unk04].unk1e == 0) + { + FUN_0201A8E8(window, param1, param2, param3); + } + else + { + FUN_0201A9D4(window, param1, param2, param3); + } +} + +THUMB_FUNC void FUN_0201A8E8(struct Window *window, u32 param1, u8 param2, u8 param3) +{ + void *r2; + int r5, r1, r3; + int st4, stc; + u32 st8; + int i, j; + + r2 = window->unk0c; + st4 = (param3 << 0x18) | (param3 << 0x10) | (param3 << 0x8) | param3; + stc = window->height * window->width * 32; + st8 = window->width; + + switch (param1) + { + case 0: + for (i = 0; i < stc; i += 32) + { + r3 = param2; + for (j = 0; j < 8; j++) + { + r5 = i + (j << 2); + r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 2); + + if (r1 < stc) + { + *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1); + } + else + { + *(u32 *)(r2 + r5) = (u32)st4; + } + + r3++; + } + } + + break; + case 1: + r2 += stc - 4; + for (i = 0; i < stc; i += 32) + { + r3 = param2; + for (j = 0; j < 8; j++) + { + r5 = i + (j << 2); + r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 2); + + if (r1 < stc) + { + *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1); + } + else + { + *(u32 *)(r2 - r5) = (u32)st4; + } + + r3++; + } + } + + break; + case 2: + case 3: + break; + } +} + +THUMB_FUNC void FUN_0201A9D4(struct Window *window, u32 param1, u8 param2, u8 param3) +{ + + void *r2; + int r5, r1, r3; + int st4, stc; + u32 st8; + int i, j; + + r2 = (u8 *)window->unk0c; + st4 = (param3 << 0x18) | (param3 << 0x10) | (param3 << 0x8) | param3; + stc = window->height * window->width * 64; + st8 = window->width; + + switch (param1) + { + case 0: + for (i = 0; i < stc; i += 64) + { + r3 = param2; + for (j = 0; j < 8; j++) + { + r5 = i + (j << 3); + r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 3); + + if (r1 < stc) + { + *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1); + } + else + { + *(u32 *)(r2 + r5) = (u32)st4; + } + + r5 += 4; + r1 += 4; + if (r1 < stc + 4) + { + *(u32 *)(r2 + r5) = *(u32 *)(r2 + r1); + } + else + { + *(u32 *)(r2 + r5) = (u32)st4; + } + + r3++; + } + } + + break; + case 1: + r2 += stc - 8; + for (i = 0; i < stc; i += 64) + { + r3 = param2; + for (j = 0; j < 8; j++) + { + r5 = i + (j << 3); + r1 = i + (int)(((st8 * (r3 & ~7)) | (r3 & 7)) << 3); + + if (r1 < stc) + { + *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1); + } + else + { + *(u32 *)(r2 - r5) = (u32)st4; + } + + r5 -= 4; + r1 -= 4; + if (r1 < stc - 4) + { + *(u32 *)(r2 - r5) = *(u32 *)(r2 - r1); + } + else + { + *(u32 *)(r2 - r5) = (u32)st4; + } + + r3++; + } + } + + break; + case 2: + case 3: + break; + } +} + +THUMB_FUNC u8 FUN_0201AB08(struct Window *window) +{ + return window->unk04; +} + +THUMB_FUNC u8 GetWindowWidth(struct Window *window) +{ + return window->width; +} +THUMB_FUNC u8 GetWindowHeight(struct Window *window) +{ + return window->height; +} +THUMB_FUNC u8 FUN_0201AB14(struct Window *window) +{ + return window->unk05; +} +THUMB_FUNC u8 FUN_0201AB18(struct Window *window) +{ + return window->unk06; +} +THUMB_FUNC void FUN_0201AB1C(struct Window *window, u8 param1) +{ + window->unk05 = param1; +} +THUMB_FUNC void FUN_0201AB20(struct Window *window, u8 param1) +{ + window->unk06 = param1; +} +THUMB_FUNC void FUN_0201AB24(struct Window *window, u8 param1) +{ + window->unk09 = param1; +} + +THUMB_FUNC u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path) +{ + void *ptr = FUN_020161A4(heap_id, path); + window->unk00 = ptr; + u32 st0; + FUN_020B0030(ptr, &st0); + + return st0; +} + +THUMB_FUNC u32 FUN_0201AB44(struct Window *window, u32 heap_id, const char *path) +{ + void *ptr = FUN_020161A4(heap_id, path); + window->unk00 = ptr; + u32 st0; + FUN_020B0138(ptr, &st0); + + return st0; +} + +THUMB_FUNC void FUN_0201AB60(struct UnkStruct_02016B94_2 *param0) +{ + FUN_0201AC78(param0); + FUN_0201AB78(param0); + + param0->unk04 = 0; + param0->unk06 = 0; +} + +THUMB_FUNC void FUN_0201AB78(struct UnkStruct_02016B94_2 *param0) +{ + if ((param0->unk06 & 1) != 0) + { + FUN_02017D68(0, param0->unk08[0].unk08, param0->unk08[0].unk10 * 2, param0->unk08[0].unk0c); + } + + if ((param0->unk06 & 2) != 0) + { + FUN_02017D68(1, param0->unk08[1].unk08, param0->unk08[1].unk10 * 2, param0->unk08[1].unk0c); + } + + if ((param0->unk06 & 4) != 0) + { + FUN_02017D68(2, param0->unk08[2].unk08, param0->unk08[2].unk10 * 2, param0->unk08[2].unk0c); + } + + if ((param0->unk06 & 8) != 0) + { + FUN_02017D68(3, param0->unk08[3].unk08, param0->unk08[3].unk10 * 2, param0->unk08[3].unk0c); + } + + if ((param0->unk06 & 0x10) != 0) + { + FUN_02017D68(4, param0->unk08[4].unk08, param0->unk08[4].unk10 * 2, param0->unk08[4].unk0c); + } + + if ((param0->unk06 & 0x20) != 0) + { + FUN_02017D68(5, param0->unk08[5].unk08, param0->unk08[5].unk10 * 2, param0->unk08[5].unk0c); + } + + if ((param0->unk06 & 0x40) != 0) + { + FUN_02017D68(6, param0->unk08[6].unk08, param0->unk08[6].unk10 * 2, param0->unk08[6].unk0c); + } + + if ((param0->unk06 & 0x80) != 0) + { + FUN_02017D68(7, param0->unk08[7].unk08, param0->unk08[7].unk10 * 2, param0->unk08[7].unk0c); + } +} + +THUMB_FUNC void FUN_0201AC68(struct UnkStruct_02016B94_2 *param0, u32 param1) +{ + param0->unk06 |= 1 << param1; +} + +THUMB_FUNC void FUN_0201AC78(struct UnkStruct_02016B94_2 *param0) +{ + if ((param0->unk04 & 1) != 0) + { + reg_G2_BG0OFS = (u32)( + (param0->unk08[0].unk14 & 0x1ff) | ((param0->unk08[0].unk18 << 0x10) & 0x1ff0000)); + } + + if ((param0->unk04 & 2) != 0) + { + reg_G2_BG1OFS = (u32)( + (param0->unk08[1].unk14 & 0x1ff) | ((param0->unk08[1].unk18 << 0x10) & 0x1ff0000)); + } + + if ((param0->unk04 & 4) != 0) + { + if (param0->unk08[2].unk1c == 0) + { + reg_G2_BG2OFS = (u32)( + (param0->unk08[2].unk14 & 0x1ff) | ((param0->unk08[2].unk18 << 0x10) & 0x1ff0000)); + } + else + { + struct Mtx22 st38; + MTX22_2DAffine( + &st38, param0->unk08[2].unk20, param0->unk08[2].unk24, param0->unk08[2].unk28, 2); + G2x_SetBGyAffine_(reg_G2_BG2P, + &st38, + param0->unk08[2].unk2c, + param0->unk08[2].unk30, + param0->unk08[2].unk14, + param0->unk08[2].unk18); + } + } + + if ((param0->unk04 & 8) != 0) + { + if (param0->unk08[3].unk1c == 0) + { + reg_G2_BG3OFS = (u32)( + (param0->unk08[3].unk14 & 0x1ff) | ((param0->unk08[3].unk18 << 0x10) & 0x1ff0000)); + } + else + { + struct Mtx22 st28; + MTX22_2DAffine( + &st28, param0->unk08[3].unk20, param0->unk08[3].unk24, param0->unk08[3].unk28, 2); + G2x_SetBGyAffine_(reg_G2_BG3P, + &st28, + param0->unk08[3].unk2c, + param0->unk08[3].unk30, + param0->unk08[3].unk14, + param0->unk08[3].unk18); + } + } + + if ((param0->unk04 & 0x10) != 0) + { + reg_G2S_DB_BG0OFS = (u32)( + (param0->unk08[4].unk14 & 0x1ff) | ((param0->unk08[4].unk18 << 0x10) & 0x1ff0000)); + } + + if ((param0->unk04 & 0x20) != 0) + { + reg_G2S_DB_BG1OFS = (u32)( + (param0->unk08[5].unk14 & 0x1ff) | ((param0->unk08[5].unk18 << 0x10) & 0x1ff0000)); + } + + if ((param0->unk04 & 0x40) != 0) + { + if (param0->unk08[6].unk1c == 0) + { + reg_G2S_DB_BG2OFS = (u32)( + (param0->unk08[6].unk14 & 0x1ff) | ((param0->unk08[6].unk18 << 0x10) & 0x1ff0000)); + } + else + { + struct Mtx22 st18; + MTX22_2DAffine( + &st18, param0->unk08[6].unk20, param0->unk08[6].unk24, param0->unk08[6].unk28, 2); + G2x_SetBGyAffine_(reg_G2S_DB_BG2P, + &st18, + param0->unk08[6].unk2c, + param0->unk08[6].unk30, + param0->unk08[6].unk14, + param0->unk08[6].unk18); + } + } + + if ((param0->unk04 & 0x80) != 0) + { + if (param0->unk08[7].unk1c == 0) + { + reg_G2S_DB_BG3OFS = (u32)( + (param0->unk08[7].unk14 & 0x1ff) | ((param0->unk08[7].unk18 << 0x10) & 0x1ff0000)); + } + else + { + struct Mtx22 st08; + MTX22_2DAffine( + &st08, param0->unk08[7].unk20, param0->unk08[7].unk24, param0->unk08[7].unk28, 2); + G2x_SetBGyAffine_(reg_G2S_DB_BG3P, + &st08, + param0->unk08[7].unk2c, + param0->unk08[7].unk30, + param0->unk08[7].unk14, + param0->unk08[7].unk18); + } + } +} + +THUMB_FUNC void FUN_0201AEE4( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3) +{ + FUN_02017B8C(¶m0->unk08[param1], param2, param3); + param0->unk04 |= 1 << param1; +} + +THUMB_FUNC void FUN_0201AF08( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u16 param3) +{ + FUN_0201AF2C(¶m0->unk08[param1], param2, param3); + param0->unk04 |= 1 << param1; +} + +THUMB_FUNC void FUN_0201AF2C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, u16 val) +{ + switch (param1) + { + case 0: + param0->unk20 = val; + break; + case 1: + param0->unk20 += val; + break; + case 2: + param0->unk20 -= val; + break; + } +} + +THUMB_FUNC void FUN_0201AF50( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3) +{ + FUN_0201AF74(¶m0->unk08[param1], param2, param3); + param0->unk04 |= 1 << param1; +} + +THUMB_FUNC void FUN_0201AF74(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val) +{ + switch (param1 - 9) + { + case 0: + param0->unk2c = val; + break; + case 1: + param0->unk2c += val; + break; + case 2: + param0->unk2c -= val; + break; + case 3: + param0->unk30 = val; + break; + case 4: + param0->unk30 += val; + break; + case 5: + param0->unk30 -= val; + break; + } +} + +THUMB_FUNC u32 FUN_0201AFBC( + struct UnkStruct_02016B94_2 *param0, u8 param1, u8 param2, u8 param3, u16 *param4) +{ + void *st18; + u16 r6; + u8 st14; + u8 st10; + u8 r5; + u8 i; + + if (param0->unk08[param1].unk08 == NULL) + { + return 0; + } + + r6 = FUN_02017FFC((u8)(param2 >> 3), (u8)(param3 >> 3), param0->unk08[param1].unk1d); + st18 = FUN_020187B0(param1); + + st14 = (u8)(param2 & 7); + st10 = (u8)(param3 & 7); + + if (param0->unk08[param1].unk1e == 0) + { + u16 *stc = param0->unk08[param1].unk08; + u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40); + + st18 += ((stc[r6] & 0x3ff) << 5); + for (i = 0; i < 0x20; i++) + { + ptr[(i << 1)] = (u8)(((u8 *)st18)[i] & 0xf); + ptr[(i << 1) + 1] = (u8)(((u8 *)st18)[i] >> 4); + } + + FUN_0201B118(param0, (u8)((stc[r6] >> 0xa) & 3), ptr); + + r5 = ptr[st14 + (st10 << 3)]; + FreeToHeap(ptr); + + if ((param4[0] & (1 << r5)) != 0) + { + return 1; + } + } + else + { + if (param0->unk08[param1].unk1c != 1) + { + u16 *r4 = param0->unk08[param1].unk08; + u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40); + + memcpy(ptr, st18 + ((r4[r6] & 0x3ff) << 6), 0x40); + + FUN_0201B118(param0, (u8)((r4[r6] >> 0xa) & 3), ptr); + + r5 = ptr[st14 + (st10 << 3)]; + FreeToHeap(ptr); + } + else + { + r5 = ((u8 *)st18)[(((u8 *)param0->unk08[param1].unk08)[r6] << 6) + st14 + (st10 << 3)]; + } + + while (TRUE) + { + if (param4[0] == 0xffff) + { + break; + } + if (r5 == (u8)(param4[0])) + { + return 1; + } + } + } + return 0; +} + +THUMB_FUNC void FUN_0201B118(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 *param2) +{ + u8 i, j; + if (param1 != 0) + { + u8 *ptr = AllocFromHeapAtEnd(param0->unk00, 0x40); + + if ((param1 & 1) != 0) + { + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + { + ptr[i * 8 + j] = param2[i * 8 + (7 - j)]; + } + } + + memcpy(param2, ptr, 0x40); + } + + if ((param1 & 2) != 0) + { + for (i = 0; i < 8; i++) + { + u8 *r3 = &ptr[i * 8]; + u8 *r2 = ¶m2[(7 - i) * 8]; + for (u32 j = 8; j > 0; j--) + { + *r3++ = *r2++; + } + } + + memcpy(param2, ptr, 0x40); + } + + FreeToHeap(ptr); + } +} diff --git a/arm9/src/unk_02022504.c b/arm9/src/unk_02022504.c index 0267a87c..7f50815b 100644 --- a/arm9/src/unk_02022504.c +++ b/arm9/src/unk_02022504.c @@ -26,7 +26,7 @@ THUMB_FUNC u8 *LoadHallOfFame(struct SaveBlock2 *sav2, u32 heap_id, int *ret_p) return ReadSaveFileFromFlash(sav2, heap_id, 0, ret_p); } -THUMB_FUNC s32 *SaveHallOfFame(struct SaveBlock2 *sav2, u8 *data) +THUMB_FUNC s32 SaveHallOfFame(struct SaveBlock2 *sav2, u8 *data) { return WriteSaveFileToFlash(sav2, 0, data); } diff --git a/arm9/src/unk_02025484.c b/arm9/src/unk_02025484.c index 733ac23a..96da04c9 100644 --- a/arm9/src/unk_02025484.c +++ b/arm9/src/unk_02025484.c @@ -3,14 +3,14 @@ #include "error_handling.h" #include "unk_02025484.h" -THUMB_FUNC void FUN_02025484(struct unk_2025484 *r0, u32 r1) +THUMB_FUNC void FUN_02025484(struct unk_2025484 *r0) { MI_CpuFill8(r0, 0, sizeof(struct unk_2025484)); } THUMB_FUNC u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1) { - FUN_02025484(r0, r1); + FUN_02025484(r0); r0->unk0 = r1; return &r0->unk4; } diff --git a/arm9/src/unk_0202E29C.c b/arm9/src/unk_0202E29C.c index 5f99ca8f..938107f2 100644 --- a/arm9/src/unk_0202E29C.c +++ b/arm9/src/unk_0202E29C.c @@ -17,13 +17,9 @@ struct UnkStruct_0202E29C_const const struct UnkStruct_0202E29C_const UNK_020EEC40 = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } }; -struct -{ - u16 unk0; - u32 unk4; - struct UnkStruct_0202E29C *unk8; - -} UNK_021C59E8; +u16 UNK_021C59E8; +struct UnkStruct_0202E29C *UNK_021C59F0; +u32 UNK_021C59EC; extern u32 FUN_0202CEEC(); extern u32 FUN_02023AC4(); @@ -59,28 +55,28 @@ extern BOOL FUN_0202D2D0(); THUMB_FUNC void FUN_0202E29C(struct PlayerData *player_data) { - if (UNK_021C59E8.unk8 == NULL) + if (UNK_021C59F0 == NULL) { - UNK_021C59E8.unk8 = AllocFromHeap(0xf, sizeof(struct UnkStruct_0202E29C)); - MI_CpuFill8(UNK_021C59E8.unk8, 0, sizeof(struct UnkStruct_0202E29C)); + UNK_021C59F0 = AllocFromHeap(0xf, sizeof(struct UnkStruct_0202E29C)); + MI_CpuFill8(UNK_021C59F0, 0, sizeof(struct UnkStruct_0202E29C)); - UNK_021C59E8.unk8->unkCA4 = AllocFromHeap(0xf, FUN_0202CEEC()); - MI_CpuFill8(UNK_021C59E8.unk8->unkCA4, 0, FUN_0202CEEC()); + UNK_021C59F0->unkCA4 = AllocFromHeap(0xf, FUN_0202CEEC()); + MI_CpuFill8(UNK_021C59F0->unkCA4, 0, FUN_0202CEEC()); - UNK_021C59E8.unk8->unkCBC = AllocFromHeap(0xf, FUN_02023AC4()); - MI_CpuFill8(UNK_021C59E8.unk8->unkCBC, 0, FUN_02023AC4()); + UNK_021C59F0->unkCBC = AllocFromHeap(0xf, FUN_02023AC4()); + MI_CpuFill8(UNK_021C59F0->unkCBC, 0, FUN_02023AC4()); - UNK_021C59E8.unk8->unkCC0 = 0x333; - UNK_021C59E8.unk8->unkCB8 = player_data; + UNK_021C59F0->unkCC0 = 0x333; + UNK_021C59F0->unkCB8 = player_data; - MailMsg_init(&UNK_021C59E8.unk8->unkCA8); + MailMsg_init(&UNK_021C59F0->unkCA8); FUN_0202E500(); } } THUMB_FUNC BOOL FUN_0202E344() { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { return TRUE; } @@ -142,26 +138,26 @@ THUMB_FUNC void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1) for (int i = 0; i < 0x10; i++) { - if (UNK_021C59E8.unk8->unkC84[i] == 0) + if (UNK_021C59F0->unkC84[i] == 0) { continue; } - if (!FUN_0202E358(UNK_021C59E8.unk8->unk054[i].unk04, param0->unk04, 6)) + if (!FUN_0202E358(UNK_021C59F0->unk054[i].unk04, param0->unk04, 6)) { continue; } - UNK_021C59E8.unk8->unkC84[i] = 0x96; + UNK_021C59F0->unkC84[i] = 0x96; - MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct_0202E29C_sub)); + MI_CpuCopy8(param0, &UNK_021C59F0->unk054[i], sizeof(struct UnkStruct_0202E29C_sub)); return; } int i; for (i = 0; i < 0x10; i++) { - if (UNK_021C59E8.unk8->unkC84[i] == 0) + if (UNK_021C59F0->unkC84[i] == 0) { break; } @@ -169,9 +165,9 @@ THUMB_FUNC void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1) if (i < 0x10) { - UNK_021C59E8.unk8->unkC84[i] = 0x96; - MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct_0202E29C_sub)); - UNK_021C59E8.unk8->unkCB4 = 1; + UNK_021C59F0->unkC84[i] = 0x96; + MI_CpuCopy8(param0, &UNK_021C59F0->unk054[i], sizeof(struct UnkStruct_0202E29C_sub)); + UNK_021C59F0->unkCB4 = 1; } } @@ -183,19 +179,19 @@ THUMB_FUNC void FUN_0202E470(u32 param0, u32 param1) OS_Terminate(); } - UNK_021C59E8.unk4 = 2; + UNK_021C59EC = 2; } THUMB_FUNC void FUN_0202E488() { - UNK_021C59E8.unk4 = 0; + UNK_021C59EC = 0; FUN_02016454(4); } THUMB_FUNC void FUN_0202E49C() { FUN_02016444(4); - UNK_021C59E8.unk4 = 1; + UNK_021C59EC = 1; if (FUN_02090DB8(8, FUN_0202E470, 0) != 1) { OS_Terminate(); @@ -204,7 +200,7 @@ THUMB_FUNC void FUN_0202E49C() THUMB_FUNC BOOL FUN_0202E4C8() { - if (UNK_021C59E8.unk4 == 2) + if (UNK_021C59EC == 2) { return TRUE; } @@ -214,7 +210,7 @@ THUMB_FUNC BOOL FUN_0202E4C8() THUMB_FUNC BOOL FUN_0202E4DC() { - if (UNK_021C59E8.unk4 != 0) + if (UNK_021C59EC != 0) { return TRUE; } @@ -229,42 +225,42 @@ THUMB_FUNC void FUN_0202E4F0() THUMB_FUNC void FUN_0202E500() { - UNK_021C59E8.unk8->unkCB0 = 0; - FUN_0202CE64(UNK_021C59E8.unk8->unkCA4 + (32 - (u32)(UNK_021C59E8.unk8->unkCA4) % 32)); + UNK_021C59F0->unkCB0 = 0; + FUN_0202CE64(UNK_021C59F0->unkCA4 + (32 - (u32)(UNK_021C59F0->unkCA4) % 32)); - FUN_0202CB70(UNK_021C59E8.unk8->unkCC0); + FUN_0202CB70(UNK_021C59F0->unkCC0); } THUMB_FUNC void FUN_0202E538() { for (int i = 0; i < 0x10; i++) { - UNK_021C59E8.unk8->unkC84[i] = 0; + UNK_021C59F0->unkC84[i] = 0; } - MI_CpuFill8(UNK_021C59E8.unk8->unk054, 0, 0xC00); + MI_CpuFill8(UNK_021C59F0->unk054, 0, 0xC00); } THUMB_FUNC void FUN_0202E56C(u32 param0) { - UNK_021C59E8.unk8->unkDAD_3 = (u8)param0; + UNK_021C59F0->unkDAD_3 = (u8)param0; } THUMB_FUNC void FUN_0202E594() { - UNK_021C59E8.unk8->unkCB4 = 0; + UNK_021C59F0->unkCB4 = 0; - UNK_021C59E8.unk8->unkDAD_0 = 0; + UNK_021C59F0->unkDAD_0 = 0; - UNK_021C59E8.unk8->unkDAD_2 = 0; + UNK_021C59F0->unkDAD_2 = 0; - UNK_021C59E8.unk8->unkDAA = 0; + UNK_021C59F0->unkDAA = 0; - UNK_021C59E8.unk8->unkDAD_4 = 0; + UNK_021C59F0->unkDAD_4 = 0; - UNK_021C59E8.unk8->unkDAC = 0; + UNK_021C59F0->unkDAC = 0; - UNK_021C59E8.unk8->unkDAB = 0; + UNK_021C59F0->unkDAB = 0; } THUMB_FUNC BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2) @@ -274,13 +270,13 @@ THUMB_FUNC BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2) FUN_0202E56C(param1); FUN_0202D2F4(); - if (UNK_021C59E8.unk8->unkDAB == 0) + if (UNK_021C59F0->unkDAB == 0) { FUN_0202D0A0(FUN_020303BC, 0xe); - UNK_021C59E8.unk8->unkDAB = 1; + UNK_021C59F0->unkDAB = 1; } - UNK_021C59E8.unk8->unkDAD_5 = (u8)param2; + UNK_021C59F0->unkDAD_5 = (u8)param2; if (FUN_0202CBD4() == 1 && FUN_0202CBFC() != 0) { return TRUE; @@ -298,10 +294,10 @@ THUMB_FUNC u32 FUN_0202E66C(u32 param0, u32 param1) FUN_0202E538(); } - if (UNK_021C59E8.unk8->unkDAB == 0) + if (UNK_021C59F0->unkDAB == 0) { FUN_0202D0A0(FUN_02030238, 0xe); - UNK_021C59E8.unk8->unkDAB = 1; + UNK_021C59F0->unkDAB = 1; } if (FUN_0202CBD4() == 1) @@ -319,23 +315,23 @@ THUMB_FUNC u32 FUN_0202E66C(u32 param0, u32 param1) THUMB_FUNC u32 FUN_0202E6F0() { - if (UNK_021C59E8.unk8 == NULL) + if (UNK_021C59F0 == NULL) { return 1; } - switch (UNK_021C59E8.unk8->unkDAC) + switch (UNK_021C59F0->unkDAC) { case 0: if (FUN_0202D21C() != 0) { FUN_0202C770(); - UNK_021C59E8.unk8->unkDAC = 1; + UNK_021C59F0->unkDAC = 1; } else if (FUN_0202D1E4() == 0) { FUN_0202D100(); - UNK_021C59E8.unk8->unkDAC = 2; + UNK_021C59F0->unkDAC = 2; } break; @@ -343,7 +339,7 @@ THUMB_FUNC u32 FUN_0202E6F0() if (FUN_0202D1E4() == 0) { FUN_0202D100(); - UNK_021C59E8.unk8->unkDAC = 2; + UNK_021C59F0->unkDAC = 2; } break; case 2: @@ -354,7 +350,7 @@ THUMB_FUNC u32 FUN_0202E6F0() if (FUN_0202D200() != 0) { - UNK_021C59E8.unk8->unkDAC = 1; + UNK_021C59F0->unkDAC = 1; } break; } @@ -364,9 +360,9 @@ THUMB_FUNC u32 FUN_0202E6F0() THUMB_FUNC BOOL FUN_0202E784() { - if (UNK_021C59E8.unk8 != NULL && UNK_021C59E8.unk8->unkDAA == 0) + if (UNK_021C59F0 != NULL && UNK_021C59F0->unkDAA == 0) { - UNK_021C59E8.unk8->unkDAA = 1; + UNK_021C59F0->unkDAA = 1; FUN_0202D100(); return TRUE; } @@ -376,26 +372,26 @@ THUMB_FUNC BOOL FUN_0202E784() THUMB_FUNC void FUN_0202E7B0(u32 param0) { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { if (param0 != 0) { - UNK_021C59E8.unk8->unkDAA = 2; + UNK_021C59F0->unkDAA = 2; return; } - UNK_021C59E8.unk8->unkDAA = 0; + UNK_021C59F0->unkDAA = 0; FUN_0202E500(); } } THUMB_FUNC void FUN_0202E7D8() { - FreeToHeap(UNK_021C59E8.unk8->unkCBC); - FreeToHeap(UNK_021C59E8.unk8->unkCA4); - FreeToHeap(UNK_021C59E8.unk8); + FreeToHeap(UNK_021C59F0->unkCBC); + FreeToHeap(UNK_021C59F0->unkCA4); + FreeToHeap(UNK_021C59F0); - UNK_021C59E8.unk8 = NULL; + UNK_021C59F0 = NULL; } THUMB_FUNC u32 FUN_0202E810() @@ -408,7 +404,7 @@ THUMB_FUNC u32 FUN_0202E810() u32 count = 0; for (int i = 0; i < 0x10; i++) { - if (UNK_021C59E8.unk8->unkC84[i] != 0) + if (UNK_021C59F0->unkC84[i] != 0) { count++; } @@ -423,7 +419,7 @@ THUMB_FUNC s32 FUN_0202E844(u32 param0) u32 count = 0; for (i = 0; i < 0x10; i++) { - if (UNK_021C59E8.unk8->unkC84[i] == 0) + if (UNK_021C59F0->unkC84[i] == 0) { continue; } @@ -442,25 +438,25 @@ THUMB_FUNC s32 FUN_0202E844(u32 param0) THUMB_FUNC u8 FUN_0202E878() { - return UNK_021C59E8.unk8->unkCB4; + return UNK_021C59F0->unkCB4; } THUMB_FUNC void FUN_0202E88C() { - UNK_021C59E8.unk8->unkCB4 = 0; + UNK_021C59F0->unkCB4 = 0; } THUMB_FUNC s32 FUN_0202E8A0(s32 param0) { - if (UNK_021C59E8.unk8->unkC84[param0] != 0) + if (UNK_021C59F0->unkC84[param0] != 0) { - if (UNK_021C59E8.unk8->unk054[param0].unk50.unk06 == 0) + if (UNK_021C59F0->unk054[param0].unk50.unk06 == 0) { return 1; } else { - return UNK_021C59E8.unk8->unk054[param0].unk50.unk06; + return UNK_021C59F0->unk054[param0].unk50.unk06; } } @@ -490,7 +486,7 @@ THUMB_FUNC s32 FUN_0202E8F4() for (int i = 0xf; i >= 0; i--) { - if (UNK_021C59E8.unk8->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59E8.unk8->unk054[i].unk04)) + if (UNK_021C59F0->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59F0->unk054[i].unk04)) { s32 ret2 = FUN_0202E8A0(i); if (ret2 > 1 && ret2 < 8) @@ -512,7 +508,7 @@ THUMB_FUNC s32 FUN_0202E950() for (int i = 0xf; i >= 0; i--) { - if (UNK_021C59E8.unk8->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59E8.unk8->unk054[i].unk04)) + if (UNK_021C59F0->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59F0->unk054[i].unk04)) { return i; @@ -534,7 +530,7 @@ THUMB_FUNC void FUN_0202E9AC(u32 param0, struct PlayerData *player_data) u32 count = 0; for (i = 0; i < 0x10; i++) { - if (UNK_021C59E8.unk8->unkC84[i] == 0) + if (UNK_021C59F0->unkC84[i] == 0) { continue; } @@ -561,14 +557,14 @@ THUMB_FUNC u32 FUN_0202E9E8(u32 param0) if (FUN_0202CBD4() == 1) { s32 ret = FUN_02033534(); - UNK_021C59E8.unk8->unkDA8 = (u8)UNK_021C59E8.unk8->unk054[param0].unk36; + UNK_021C59F0->unkDA8 = (u8)UNK_021C59F0->unk054[param0].unk36; if (FUN_0202D8B0(ret) != 0) { - FUN_0202C4D8(1, UNK_021C59E8.unk8->unk054[param0].unk04, 0); + FUN_0202C4D8(1, UNK_021C59F0->unk054[param0].unk04, 0); } else { - FUN_0202D034(1, &UNK_021C59E8.unk8->unk054[param0]); + FUN_0202D034(1, &UNK_021C59F0->unk054[param0]); } return 1; @@ -581,20 +577,20 @@ THUMB_FUNC void FUN_0202EA54() { for (int i = 0; i < 0x10; i++) { - if (UNK_021C59E8.unk8->unkC84[i] == 0) + if (UNK_021C59F0->unkC84[i] == 0) { continue; } - if (UNK_021C59E8.unk8->unkC84[i] == 0) + if (UNK_021C59F0->unkC84[i] == 0) { continue; } - UNK_021C59E8.unk8->unkC84[i]--; + UNK_021C59F0->unkC84[i]--; - if (UNK_021C59E8.unk8->unkC84[i] == 0) + if (UNK_021C59F0->unkC84[i] == 0) { - UNK_021C59E8.unk8->unkCB4 = 1; + UNK_021C59F0->unkCB4 = 1; } } } @@ -606,48 +602,48 @@ THUMB_FUNC void FUN_0202EA9C() if (res != 0xf) { - struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59E8.unk8->unkCC4; + struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59F0->unkCC4; GF_ASSERT((s32)FUN_02023AC4() <= 0x20); GF_ASSERT(PlayerProfile_sizeof() == 0x20); MI_CpuCopy8(player_data, &res->unk08.unk08, PlayerProfile_sizeof()); - MI_CpuCopy8(UNK_021C59E8.unk8->unkCBC, res->unk08.unk28, FUN_02023AC4()); + MI_CpuCopy8(UNK_021C59F0->unkCBC, res->unk08.unk28, FUN_02023AC4()); res->unk00 = PlayerProfile_GetTrainerID(player_data); res->unk04 = (u8)FUN_02033534(); res->unk05 = FUN_0203354C(); - MI_CpuCopy8(&UNK_021C59E8.unk8->unkCA8, &res->unk08.unk00, sizeof(struct MailMessage)); + MI_CpuCopy8(&UNK_021C59F0->unkCA8, &res->unk08.unk00, sizeof(struct MailMessage)); res->unk08.unk4C = (u8)FUN_0202D358(); } else { - struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59E8.unk8->unkCC4; + struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59F0->unkCC4; res->unk00 = PlayerProfile_GetTrainerID(player_data); res->unk04 = (u8)FUN_02033534(); res->unk05 = FUN_0203354C(); - MI_CpuCopy8(&UNK_021C59E8.unk8->unk000, &res->unk08, sizeof(struct UnkStruct_0202E29C_sub3)); + MI_CpuCopy8(&UNK_021C59F0->unk000, &res->unk08, sizeof(struct UnkStruct_0202E29C_sub3)); } - DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); - FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + DC_FlushRange(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + FUN_0202CB7C(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); } THUMB_FUNC void FUN_0202EB7C() { - struct UnkStruct_0202E29C_sub2 *r4 = &UNK_021C59E8.unk8->unkCC4; + struct UnkStruct_0202E29C_sub2 *r4 = &UNK_021C59F0->unkCC4; if (r4->unk06 != FUN_0202EDB8()) { r4->unk06 = (u8)FUN_0202EDB8(); - DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); - FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + DC_FlushRange(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + FUN_0202CB7C(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); - FUN_0202D240(&UNK_021C59E8.unk8->unkCC4, + FUN_0202D240(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2), - UNK_021C59E8.unk8->unkCC0, - UNK_021C59E8.unk0); + UNK_021C59F0->unkCC0, + UNK_021C59E8); } } @@ -657,20 +653,20 @@ THUMB_FUNC void FUN_0202EBD0(u16 param0) FUN_0202DF54(); FUN_0202EB7C(); - if (FUN_0202D19C() == 0 && FUN_0202EE24() == 0 && UNK_021C59E8.unk8->unkDAD_2) + if (FUN_0202D19C() == 0 && FUN_0202EE24() == 0 && UNK_021C59F0->unkDAD_2) { - UNK_021C59E8.unk8->unkDAD_0 = 1; + UNK_021C59F0->unkDAD_0 = 1; } - if (UNK_021C59E8.unk8->unkDA6 == 0xFFFF) + if (UNK_021C59F0->unkDA6 == 0xFFFF) { - UNK_021C59E8.unk8->unkDA6 = param0; + UNK_021C59F0->unkDA6 = param0; } - if (UNK_021C59E8.unk8->unkDAD_1 && - UNK_021C59E8.unk8->unkDA6 > param0) + if (UNK_021C59F0->unkDAD_1 && + UNK_021C59F0->unkDA6 > param0) { - UNK_021C59E8.unk8->unkDAD_0 = 1; + UNK_021C59F0->unkDAD_0 = 1; } if (FUN_0202CBE8() == 25) @@ -681,24 +677,24 @@ THUMB_FUNC void FUN_0202EBD0(u16 param0) switch (r5) { case 0: - if (UNK_021C59E8.unk8->unkDAA == 1) + if (UNK_021C59F0->unkDAA == 1) { FUN_0202E7D8(); return; } - else if (UNK_021C59E8.unk8->unkDAA == 2) + else if (UNK_021C59F0->unkDAA == 2) { - UNK_021C59E8.unk8->unkDAA = 3; + UNK_021C59F0->unkDAA = 3; } break; case 1: - if (UNK_021C59E8.unk8->unkDAA == 1 && FUN_0202D178() != 0) + if (UNK_021C59F0->unkDAA == 1 && FUN_0202D178() != 0) { return; } - if (UNK_021C59E8.unk8->unkDAA == 2 && FUN_0202D178() != 0) + if (UNK_021C59F0->unkDAA == 2 && FUN_0202D178() != 0) { return; } @@ -708,41 +704,41 @@ THUMB_FUNC void FUN_0202EBD0(u16 param0) case 8: case 9: - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { - UNK_021C59E8.unk8->unkDAD_0 = 1; + UNK_021C59F0->unkDAD_0 = 1; return; } break; case 7: u16 r0 = FUN_0202CDA4(); - if (UNK_021C59E8.unk8->unkDA9 == 0) + if (UNK_021C59F0->unkDA9 == 0) { - UNK_021C59E8.unk8->unkDA4 = r0; - UNK_021C59E8.unk8->unkDA9 = 5; + UNK_021C59F0->unkDA4 = r0; + UNK_021C59F0->unkDA9 = 5; } else { - UNK_021C59E8.unk8->unkDA9--; + UNK_021C59F0->unkDA9--; } - u16 r5 = UNK_021C59E8.unk8->unkDA4; - if (UNK_021C59E8.unk8->unkDAD_3) + u16 r5 = UNK_021C59F0->unkDA4; + if (UNK_021C59F0->unkDAD_3) { - UNK_021C59E8.unk0++; + UNK_021C59E8++; } FUN_0202EA9C(); FUN_0202CF84(0, - UNK_021C59E8.unk0, + UNK_021C59E8, r5, FUN_0202D858((u16)FUN_02033534()), FUN_0202EEE8((u16)FUN_02033534()), - UNK_021C59E8.unk8->unkDAD_5); + UNK_021C59F0->unkDAD_5); - UNK_021C59E8.unk8->unkDA8 = (u8)r5; + UNK_021C59F0->unkDA8 = (u8)r5; break; } @@ -750,7 +746,7 @@ THUMB_FUNC void FUN_0202EBD0(u16 param0) THUMB_FUNC void FUN_0202ED70(u16 param0) { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { FUN_0202EBD0(param0); } @@ -758,7 +754,7 @@ THUMB_FUNC void FUN_0202ED70(u16 param0) THUMB_FUNC u32 FUN_0202ED84(u16 param0) { - if (UNK_021C59E8.unk8 == NULL) + if (UNK_021C59F0 == NULL) { return 0; } @@ -792,9 +788,9 @@ THUMB_FUNC u32 FUN_0202EDB8() THUMB_FUNC BOOL FUN_0202EDD8() { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { - if (UNK_021C59E8.unk8->unkDAA == 3) + if (UNK_021C59F0->unkDAA == 3) { return TRUE; } @@ -805,7 +801,7 @@ THUMB_FUNC BOOL FUN_0202EDD8() THUMB_FUNC BOOL FUN_0202EDF8() { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { return TRUE; } @@ -815,7 +811,7 @@ THUMB_FUNC BOOL FUN_0202EDF8() THUMB_FUNC u32 FUN_0202EE0C() { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { return FUN_0202D1C8(); } @@ -825,7 +821,7 @@ THUMB_FUNC u32 FUN_0202EE0C() THUMB_FUNC u32 FUN_0202EE24() { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { return FUN_0202CB8C() & 0xFFFE; } @@ -845,7 +841,7 @@ THUMB_FUNC BOOL FUN_0202EE44() THUMB_FUNC BOOL FUN_0202EE60() { - if (UNK_021C59E8.unk8 != NULL && UNK_021C59E8.unk8->unkDAD_0) + if (UNK_021C59F0 != NULL && UNK_021C59F0->unkDAD_0) { return TRUE; } @@ -855,19 +851,19 @@ THUMB_FUNC BOOL FUN_0202EE60() THUMB_FUNC void FUN_0202EE84(u32 param0) { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { - UNK_021C59E8.unk8->unkDAD_2 = (u8)param0; + UNK_021C59F0->unkDAD_2 = (u8)param0; } } THUMB_FUNC void FUN_0202EEB0(u32 param0) { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { - UNK_021C59E8.unk8->unkDAD_1 = (u8)param0; + UNK_021C59F0->unkDAD_1 = (u8)param0; - UNK_021C59E8.unk8->unkDA6 = 0xFFFF; + UNK_021C59F0->unkDA6 = 0xFFFF; } } @@ -891,11 +887,11 @@ THUMB_FUNC u32 FUN_0202EEE8(u16 param0) THUMB_FUNC struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0) { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { - if (UNK_021C59E8.unk8->unkC84[param0] != 0) + if (UNK_021C59F0->unkC84[param0] != 0) { - return &UNK_021C59E8.unk8->unk054[param0]; + return &UNK_021C59F0->unk054[param0]; } } @@ -904,11 +900,11 @@ THUMB_FUNC struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0) THUMB_FUNC struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0) { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { - if (UNK_021C59E8.unk8->unkC84[param0] != 0) + if (UNK_021C59F0->unkC84[param0] != 0) { - return &UNK_021C59E8.unk8->unk054[param0].unk50; + return &UNK_021C59F0->unk054[param0].unk50; } } @@ -917,63 +913,49 @@ THUMB_FUNC struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0) THUMB_FUNC struct PlayerData *FUN_0202EF70() { - return UNK_021C59E8.unk8->unkCB8; + return UNK_021C59F0->unkCB8; } THUMB_FUNC struct PlayerData *FUN_0202EF84(int param0) { - if (UNK_021C59E8.unk8->unkC84[param0] == 0) + if (UNK_021C59F0->unkC84[param0] == 0) { return NULL; } - struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50; + struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59F0->unk054[param0].unk50; return &r0->unk10; } THUMB_FUNC void FUN_0202EFAC(u8 *param0, s32 param1) { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { GF_ASSERT(param1 < 8); - MI_CpuCopy8(param0, UNK_021C59E8.unk8->unkC54[param1], 6); + MI_CpuCopy8(param0, UNK_021C59F0->unkC54[param1], 6); } } #ifdef NONMATCHING THUMB_FUNC BOOL FUN_0202EFE4(u8 *param0) { - + u8 (*ptr)[6] = UNK_021C59F0->unkC54; for (int i = 0; i < 8; i++) { - if (UNK_021C59E8.unk8->unkC54[i][0] != param0[0]) - { + if (ptr[i][0] != param0[0]) continue; - } - - if (UNK_021C59E8.unk8->unkC54[i][1] != param0[1]) - { + if (ptr[i][1] != param0[1]) continue; - } - if (UNK_021C59E8.unk8->unkC54[i][2] != param0[2]) - { + if (ptr[i][2] != param0[2]) continue; - } - if (UNK_021C59E8.unk8->unkC54[i][3] != param0[3]) - { + if (ptr[i][3] != param0[3]) continue; - } - if (UNK_021C59E8.unk8->unkC54[i][4] != param0[4]) - { + if (ptr[i][4] != param0[4]) continue; - } - if (UNK_021C59E8.unk8->unkC54[i][5] != param0[5]) - { + if (ptr[i][5] != param0[5]) continue; - } - return TRUE; } @@ -1031,9 +1013,9 @@ _0202F026: THUMB_FUNC u32 FUN_0202F03C() { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { - return UNK_021C59E8.unk8->unkDAD_4; + return UNK_021C59F0->unkDAD_4; } return 0; @@ -1041,29 +1023,29 @@ THUMB_FUNC u32 FUN_0202F03C() THUMB_FUNC void FUN_0202F05C() { - if (UNK_021C59E8.unk8 != NULL) + if (UNK_021C59F0 != NULL) { - UNK_021C59E8.unk8->unkDAD_4 = 1; + UNK_021C59F0->unkDAD_4 = 1; } } THUMB_FUNC void FUN_0202F078(struct MailMessage *mail_message) { - MI_CpuCopy8(mail_message, &UNK_021C59E8.unk8->unkCA8, sizeof(struct MailMessage)); + MI_CpuCopy8(mail_message, &UNK_021C59F0->unkCA8, sizeof(struct MailMessage)); } THUMB_FUNC void FUN_0202F094(void *param0) { - MI_CpuCopy8(param0, UNK_021C59E8.unk8->unkCBC, FUN_02023AC4()); + MI_CpuCopy8(param0, UNK_021C59F0->unkCBC, FUN_02023AC4()); } THUMB_FUNC void FUN_0202F0B8() { FUN_0202EA9C(); - FUN_0202D240(&UNK_021C59E8.unk8->unkCC4, + FUN_0202D240(&UNK_021C59F0->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2), - UNK_021C59E8.unk8->unkCC0, - UNK_021C59E8.unk0); + UNK_021C59F0->unkCC0, + UNK_021C59E8); } THUMB_FUNC u32 FUN_0202F0DC(u8 param0) @@ -1089,15 +1071,15 @@ THUMB_FUNC BOOL FUN_0202F104() THUMB_FUNC void FUN_0202F10C(struct UnkStruct_0202E29C_sub3 *param0) { - MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk000, sizeof(struct UnkStruct_0202E29C_sub3)); + MI_CpuCopy8(param0, &UNK_021C59F0->unk000, sizeof(struct UnkStruct_0202E29C_sub3)); FUN_0202F0B8(); } THUMB_FUNC u8 *FUN_0202F124(u32 param0) { - if (UNK_021C59E8.unk8 != NULL && UNK_021C59E8.unk8->unkC84[param0] != 0) + if (UNK_021C59F0 != NULL && UNK_021C59F0->unkC84[param0] != 0) { - struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50; + struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59F0->unk054[param0].unk50; return r0->unk08; } diff --git a/arm9/src/unk_020337E8.c b/arm9/src/unk_020337E8.c new file mode 100644 index 00000000..856ba3b8 --- /dev/null +++ b/arm9/src/unk_020337E8.c @@ -0,0 +1,50 @@ +#include "unk_020337E8.h" +#include "heap.h" + +extern struct DWC_Struct *FUN_020286EC(struct SaveBlock2 *sav2); +extern struct DWC_Struct *FUN_02028228(struct DWC_Struct *); + +// DWC_init +extern s32 DWC_Init(s32); + +// DWC_account +extern void DWC_CreateExchangeToken(struct DWC_Struct *, struct DWC_token *); +extern void DWC_CreateUserData(struct DWC_Struct *, s32); +extern void DWC_ClearDirtyFlag(struct DWC_Struct *); +extern BOOL DWC_CheckHasProfile(struct DWC_Struct *); +extern BOOL DWC_CheckValidConsole(struct DWC_Struct *); +extern BOOL DWC_CheckUserData(struct DWC_Struct *); +extern s32 DWC_GetGsProfileId(struct DWC_Struct *, struct DWC_token *); + +THUMB_FUNC s32 FUN_020337E8(u32 heap_id) +{ + s32 ret = (s32)AllocFromHeap(heap_id, 0x720); + s32 ret1 = DWC_Init((ret + 0x1F) & ~0x1F); + FreeToHeap((void*)ret); + return ret1; +} + +THUMB_FUNC void FUN_0203380C(struct DWC_Struct *dwc) +{ + struct DWC_Struct * dwc1 = FUN_02028228(dwc); + if(!DWC_CheckUserData(dwc1)) + { + DWC_CreateUserData(dwc1, 0x4144414A); + DWC_ClearDirtyFlag(dwc1); + } +} + +THUMB_FUNC s32 FUN_02033830(struct DWC_Struct *dwc) +{ + struct DWC_token token; + + struct DWC_Struct * dwc1 = FUN_02028228(dwc); + DWC_CreateExchangeToken(dwc1, &token); + return DWC_GetGsProfileId(dwc1, &token); +} + +THUMB_FUNC BOOL FUN_0203384C(struct SaveBlock2 *sav2) +{ + struct DWC_Struct * dwc = FUN_02028228(FUN_020286EC(sav2)); + return (DWC_CheckHasProfile(dwc) && DWC_CheckValidConsole(dwc)); +} diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 9aa4460f..cabd756e 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -1,11 +1,11 @@ #include "unk_0205FA2C.h" +#include "unk_020337E8.h" extern void *UNK_020F96DC; extern void *UNK_020FA6E8; extern u32 FUN_02079C70(struct SaveBlock2 *sav2); extern void FUN_0207B000(struct UnkPlayerStruct2_0205FA2C *ptr, const u8 param1[12]); extern void FUN_0207C2A4(struct UnkPlayerStruct2_0205FA2C *ptr, struct PlayerData *player_data); -extern u32 FUN_0203384C(struct SaveBlock2 *sav2); extern u32 *FUN_02038790(struct UnkSavStruct80 *param0, u16 param1, u16 param2); extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16); extern u16 MOD06_02244660(struct UnkSavStruct80 *param0, u8 *param1); diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c index 3d295156..a217f52c 100644 --- a/arm9/src/unk_0206015C.c +++ b/arm9/src/unk_0206015C.c @@ -111,7 +111,7 @@ THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C *unkStruct0) case 5: unkStruct1->unkE += 1; - if (unkStruct1->unkE < 0x3c && !(gMain.unk48 & 1)) + if (unkStruct1->unkE < 0x3c && !(gMain.newKeys & 1)) break; MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4); diff --git a/include/GX_layers.h b/include/GX_layers.h index e94fb4ec..3943d582 100644 --- a/include/GX_layers.h +++ b/include/GX_layers.h @@ -3,9 +3,6 @@ #include "global.h" -#include "GX_vramcnt.h" -#include "error_message_reset.h" -#include "gx.h" struct GX_LayerData { @@ -20,14 +17,38 @@ typedef enum { } GX_LayerToggle; -THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks); -THUMB_FUNC void GX_DisableEngineALayers(); -THUMB_FUNC void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); -THUMB_FUNC void GX_SetEngineALayers(u32 layer_mask); -THUMB_FUNC void GX_DisableEngineBLayers(); -THUMB_FUNC void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); -THUMB_FUNC void GX_BothDispOn(); -THUMB_FUNC void GX_SwapDisplay(); -THUMB_FUNC u32 GX_GetEngineALayers(); +struct GraphicsBanks +{ + s32 bg; + s32 bgextpltt; + s32 subbg; + s32 subbgextpltt; + s32 obj; + s32 objextpltt; + s32 subobj; + s32 subobjextpltt; + s32 tex; + s32 texpltt; +}; + + +struct GraphicsModes { + u32 mode1; + u32 mode2; + u32 mode3; + u32 mode4; +}; + + + +void GX_SetBanks(const struct GraphicsBanks *banks); +void GX_DisableEngineALayers(); +void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); +void GX_SetEngineALayers(u32 layer_mask); +void GX_DisableEngineBLayers(); +void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); +void GX_BothDispOn(); +void GX_SwapDisplay(); +u32 GX_GetEngineALayers(); #endif //POKEDIAMOND_GX_LAYERS_H diff --git a/include/error_message_reset.h b/include/error_message_reset.h index d12cbf33..01286ca9 100644 --- a/include/error_message_reset.h +++ b/include/error_message_reset.h @@ -9,31 +9,7 @@ #include "text.h" - -struct GraphicsBanks -{ - s32 bg; - s32 bgextpltt; - s32 subbg; - s32 subbgextpltt; - s32 obj; - s32 objextpltt; - s32 subobj; - s32 subobjextpltt; - s32 tex; - s32 texpltt; -}; - - -struct GraphicsModes { - u32 mode1; - u32 mode2; - u32 mode3; - u32 mode4; -}; - - -THUMB_FUNC void VBlankHandler(); -THUMB_FUNC void PrintErrorMessageAndReset(); +void VBlankHandler(); +void PrintErrorMessageAndReset(); #endif //POKEDIAMOND_ERROR_MESSAGE_RESET_H diff --git a/include/font.h b/include/font.h new file mode 100644 index 00000000..e5e64e88 --- /dev/null +++ b/include/font.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_FONT_H +#define POKEDIAMOND_FONT_H + +extern s32 GetFontAttribute(u8 fontId, s32 attr); + +#endif // POKEDIAMOND_FONT_H diff --git a/include/heap.h b/include/heap.h index 69aedd9e..de1f5f18 100644 --- a/include/heap.h +++ b/include/heap.h @@ -17,21 +17,21 @@ struct UnkStruct_020166C8 }; -THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size); -THUMB_FUNC s32 FUN_020167F4(); -THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2); -THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2); -THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); -THUMB_FUNC void FUN_020168D0(u32 heap_id); -THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3); -THUMB_FUNC void FUN_02016988(); +void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size); +s32 FUN_020167F4(); +u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2); +u32 FUN_02016828(u32 param0, u32 param1, u32 param2); +u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); +void FUN_020168D0(u32 heap_id); +u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3); +void FUN_02016988(); void *AllocFromHeap(u32 heap_id, u32 size); void *AllocFromHeapAtEnd(u32 heap_id, u32 size); void FreeToHeap(void *ptr); -void FUN_02016A8C(u32 heap_id, void * ptr); -THUMB_FUNC u32 FUN_02016AF8(u32 param0); -THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2); -THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1); -THUMB_FUNC u32 FUN_02016B90(u32 param0); +void FreeToHeapExplicit(u32 heap_id, void * ptr); +u32 FUN_02016AF8(u32 param0); +void FUN_02016B20(u32 param0, u32 param1, u32 param2); +void FUN_02016B44(void *ptr, u32 param1); +u32 FUN_02016B90(u32 param0); #endif //POKEDIAMOND_HEAP_H diff --git a/include/list_menu.h b/include/list_menu.h new file mode 100644 index 00000000..a02e1273 --- /dev/null +++ b/include/list_menu.h @@ -0,0 +1,88 @@ +#ifndef POKEDIAMOND_LIST_MENU_H +#define POKEDIAMOND_LIST_MENU_H + +#include "list_menu_cursor.h" +#include "list_menu_items.h" + +#define LIST_HEADER -3 +#define LIST_CANCEL -2 +#define LIST_NOTHING_CHOSEN -1 + +#define LIST_NO_MULTIPLE_SCROLL 0 +#define LIST_MULTIPLE_SCROLL_DPAD 1 +#define LIST_MULTIPLE_SCROLL_L_R 2 + +struct ListMenu; + +// TODO: Document remaining fields. +// A lot of these are named based on similar fields in gen 3. + +typedef void (*LM_MoveCursorFunc_t)(struct ListMenu *list, s32 index, u8 onInit); +typedef void (*LM_ItemPrintFunc_t)(struct ListMenu *list, s32 index, u8 y); + +struct ListMenuTemplate +{ + /*0x00*/ struct ListMenuItem * items; + /*0x04*/ LM_MoveCursorFunc_t moveCursorFunc; + /*0x08*/ LM_ItemPrintFunc_t itemPrintFunc; + /*0x0C*/ struct Window * window; + /*0x10*/ u16 totalItems; + /*0x12*/ u16 maxShowed; + /*0x14*/ u8 header_X; + /*0x15*/ u8 item_X; + /*0x16*/ u8 cursor_X; + /*0x17*/ u8 upText_Y:4; + u8 cursorPal:4; + /*0x18*/ u8 fillValue:4; + u8 cursorShadowPal:4; + /*0x1A*/ u16 lettersSpacing:3; + u16 itemVerticalPadding:4; + u16 scrollMultiple:2; + u16 fontId:6; + u16 cursorKind:1; + /*0x1C*/ u32 unk_1C; +}; + +struct ListMenu +{ + /*0x00*/ struct ListMenuTemplate template; + // ListMenuOverride from gen 3 + /*0x20*/ u8 cursorPal:4; + u8 fillValue:4; + /*0x21*/ u8 cursorShadowPal:4; + u8 unk_21_4:4; + /*0x22*/ u8 lettersSpacing:6; + /*0x23*/ u8 unk_23; + /*0x24*/ u8 fontId:7; + u8 overrideEnabled:1; + /*0x28*/ struct ListMenuCursor *cursor; + /*0x2c*/ u16 cursorPos; + /*0x2e*/ u16 itemsAbove; + /*0x30*/ u8 unk_30; + /*0x31*/ u8 unk_31; + /*0x32*/ u8 taskId; + /*0x33*/ u8 unk_33; + /*0x34*/ u8 heap_id; +}; + +struct ListMenu * ListMenuInit(const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u32 heap_id); +s32 ListMenu_ProcessInput(struct ListMenu * list); +void DestroyListMenu(struct ListMenu * list, u16 * cursorPos, u16 * itemsAbove); +void RedrawListMenu(struct ListMenu * list); +s32 ListMenuTestInputInternal(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 updateFlag, u16 input, u16 *newCursorPos, u16 *newItemsAbove); +s32 ListMenuTestInput(struct ListMenu * list, const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u16 input, u16 *newCursorPos, u16 *newItemsAbove); +void ListMenuOverrideSetColors(struct ListMenu * list, u8 cursorPal, u8 fillValue, u8 cursorShadowPal); +void ListMenuGetCurrentItemArrayId(struct ListMenu * list, u16 * index_p); +void ListMenuGetScrollAndRow(struct ListMenu * list, u16 * cursorPos_p, u16 * itemsAbove_p); +u8 ListMenuGetUnk33(struct ListMenu * list); +s32 ListMenuGetValueByArrayId(struct ListMenu * list, s32 index); +s32 ListMenuGetTemplateField(struct ListMenu * list, u32 attr); +void ListMenuSetTemplateField(struct ListMenu * list, u32 attr, s32 value); +void ListMenuGetItemStr(struct ListMenu * list, struct ListMenuItem * items); +void ListMenuPrint(struct ListMenu * list, struct String * str, u8 x, u8 y); +void ListMenuErasePrintedCursor(struct ListMenu * list, u16 itemsAbove); +u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, u8 movingDown); +void ListMenuScroll(struct ListMenu * list, u8 count, u8 movingDown); +void ListMenuCopyToVram(struct ListMenu * list); + +#endif // POKEDIAMOND_LIST_MENU_H diff --git a/include/list_menu_cursor.h b/include/list_menu_cursor.h new file mode 100644 index 00000000..e4a4b6b9 --- /dev/null +++ b/include/list_menu_cursor.h @@ -0,0 +1,17 @@ +#ifndef POKEDIAMOND_LIST_MENU_CURSOR_H +#define POKEDIAMOND_LIST_MENU_CURSOR_H + +#include "unk_02016B94.h" + +// TODO: Move to its own header, and fill it out +struct ListMenuCursor +{ + // ??? +}; + +extern struct ListMenuCursor * ListMenuCursorNew(u32 heap_id); +extern void ListMenuUpdateCursorObj(struct ListMenuCursor *, struct Window *, u8 x, u8 y); +extern void ListMenuCursorSetColor(struct ListMenuCursor *, u32); +extern void DestroyListMenuCursorObj(struct ListMenuCursor *); + +#endif // POKEDIAMOND_LIST_MENU_CURSOR_H diff --git a/include/list_menu_items.h b/include/list_menu_items.h new file mode 100644 index 00000000..ec96d480 --- /dev/null +++ b/include/list_menu_items.h @@ -0,0 +1,21 @@ +#ifndef POKEDIAMOND_LIST_MENU_ITEMS_H +#define POKEDIAMOND_LIST_MENU_ITEMS_H + +#include "string16.h" +#include "msgdata.h" + +struct ListMenuItem +{ + struct String * text; + s32 value; +}; + +struct ListMenuItem * ListMenuItems_ctor(u32 count, u32 heap_id); +void ListMenuItems_dtor(struct ListMenuItem * items); +void ListMenuItems_AppendFromMsgData(struct ListMenuItem * items, struct MsgData * msgData, u32 msgNo, s32 value); +void ListMenuItems_AddItem(struct ListMenuItem * items, struct String * str, s32 value); +void ListMenuItems_CopyItem(struct ListMenuItem * items, struct ListMenuItem * src); +struct ListMenuItem * ListMenuItems_SeekEnd(struct ListMenuItem * items, u32 * heap_id_p); +void ListMenuItems_DestroyMenuStrings(struct ListMenuItem * items); + +#endif // POKEDIAMOND_LIST_MENU_ITEMS_H diff --git a/include/main.h b/include/main.h index 2e424e09..9227d9a8 100644 --- a/include/main.h +++ b/include/main.h @@ -84,8 +84,8 @@ struct Main u32 unk3C; u32 unk40; u32 unk44; - u32 unk48; - u32 unk4C; + u32 newKeys; + u32 newAndRepeatedKeys; s32 unk50; s32 unk54; s32 unk58; @@ -104,8 +104,22 @@ struct Main //extern struct UnkStruct_021C4918 gMain + 0x60; -extern struct Unk2106FA0 gBacklightTop; -extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool... +extern PMBackLightSwitch gBacklightTop; +extern s32 UNK_02016FA4; + +struct UnkStruct_02016FA8 +{ + FSOverlayID unk0; + struct UnkStruct_02006234 *unk4; + FSOverlayID unk8; + const struct Unk21DBE18 * unkC; + s32 unk10; + s32 unk14; + struct SaveBlock2 * unk18; + +}; + +extern struct UnkStruct_02016FA8 UNK_02016FA8; void NitroMain(void); diff --git a/include/scrcmd.h b/include/scrcmd.h index 226bbb8c..a1906e2d 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -161,6 +161,7 @@ BOOL ScrCmd_Unk0054(struct ScriptContext *ctx); BOOL FUN_02041464(struct ScriptContext *ctx); BOOL ScrCmd_Unk0055(struct ScriptContext* ctx); BOOL ScrCmd_Unk0056(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0057(struct ScriptContext* ctx); BOOL ScrCmd_Unk0058(struct ScriptContext* ctx); BOOL ScrCmd_Unk0049(struct ScriptContext* ctx); BOOL ScrCmd_Unk004A(struct ScriptContext* ctx); diff --git a/include/script.h b/include/script.h index cb41889d..01bba305 100644 --- a/include/script.h +++ b/include/script.h @@ -4,6 +4,8 @@ #include "global.h"
#include "msgdata.h"
#include "save_block_2.h"
+#include "unk_02016B94.h"
+
struct ScriptContext;
@@ -26,7 +28,7 @@ struct UnkStruct_02046444 struct UnkSavStruct80
{
u8 padding[0x8];
- u32 unk08;
+ struct UnkStruct_02016B94_2 *unk08;
struct SaveBlock2 *saveBlock2; //0xC
struct UnkStruct_0204639C *unk10;
u8 padding2[0x8];
diff --git a/include/script_buffers.h b/include/script_buffers.h index d0fff528..9a742545 100644 --- a/include/script_buffers.h +++ b/include/script_buffers.h @@ -4,6 +4,7 @@ #include "pokemon.h" #include "pokemon_storage_system.h" #include "trainer_data.h" +#include "unk_02016B94.h" struct UnkStruct_0200AA80_sub_sub { @@ -105,7 +106,7 @@ void StringExpandPlaceholders(struct ScrStrBufs * mgr, struct String * dest, str void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr); struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4); void MessagePrinter_delete(struct UnkStruct_0200B870 * a0); -void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, int a2, int a3, int a4); -void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, int sp30, int r5, int r7); +void FUN_0200B9A8(struct UnkStruct_0200B870 * a0, int a1, struct Window * a2, int a3, int a4); +void FUN_0200B9EC(struct UnkStruct_0200B870 * string, u32 value, u32 n, enum PrintingMode mode, struct Window *window, int x, int y); #endif //POKEDIAMOND_SCRIPT_BUFFERS_H diff --git a/include/text.h b/include/text.h index 40f4d03a..c9984d75 100644 --- a/include/text.h +++ b/include/text.h @@ -2,52 +2,66 @@ #define POKEDIAMOND_TEXT_H #include "global.h" +#include "font.h" +#include "unk_02016B94.h" + + +#define CHAR_0 0x00A2 +#define CHAR_1 0x00A3 +#define CHAR_2 0x00A4 +#define CHAR_3 0x00A5 +#define CHAR_4 0x00A6 +#define CHAR_5 0x00A7 +#define CHAR_6 0x00A8 +#define CHAR_7 0x00A9 +#define CHAR_8 0x00AA +#define CHAR_9 0x00AB + +union StrbufForPrint +{ + struct String * wrapped; + const u16 * raw; +}; struct TextPrinterTemplate { - const u16* currentChar; - u32 windowId; - u8 padding[1]; - u8 fontId; - u8 x; - u8 y; - u8 currentX; - u8 currentY; - u8 letterSpacing; - u8 lineSpacing; - u8 unk; - u8 fgColor; - u8 bgColor; - u8 shadowColor; - union - { - struct - { - u16 unk2; - u8 unk3; - u8 unk4; - }; - u32 Unk20; //todo this can't be right - }; + union StrbufForPrint currentChar; // 0 + struct Window * window; // 4 + u8 padding[1]; // 8 + u8 fontId; // 9 + u8 x; // a + u8 y; // b + u8 currentX; // c + u8 currentY; // d + u8 letterSpacing; // e + u8 lineSpacing; // f + u8 unk; // 10 + u8 fgColor; // 11 + u8 bgColor; // 12 + u8 shadowColor; // 13 + u16 unk2; // 14 + u8 unk3; // 16 + u8 unk4; // 17 }; struct TextPrinter { struct TextPrinterTemplate printerTemplate; - u8 (*callback)(struct TextPrinterTemplate *, u16); // 0x10 + u8 (*callback)(struct TextPrinterTemplate *, u16); // 0x18 u8 subStructFields[7]; // always cast to struct TextPrinterSubStruct... so why bother - u8 active; - u8 state; // 0x1C - u8 textSpeedBottom:7; + // 1c + u8 active; // 23 + u8 state; // 0x24 + u8 textSpeedBottom:7; // 25 u8 textSpeedTop:1; - u8 delayCounter; - u8 scrollDistance; - u8 minLetterSpacing; // 0x20 + u8 delayCounter; // 26 + u8 scrollDistance; // 27 + u8 minLetterSpacing; // 0x28 u8 Unk29; // used to be japanese, not sure about that anymore u16 Unk2A; - void *Unk2C; + u16 *Unk2C; }; struct FontInfo @@ -69,16 +83,16 @@ BOOL FUN_0201BD44(u32 param0); void FUN_0201BD5C(void); u8 FUN_0201BD70(u32 param0); void FUN_0201BD7C(u32 param0); -u16 AddTextPrinterParameterized(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)); -u16 AddTextPrinterParameterized2(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16)); -u16 AddTextPrinterParameterized3(u32 windowId, u8 fontId, const u16 *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16)); +u16 AddTextPrinterParameterized(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)); +u16 AddTextPrinterParameterized2(struct Window * window, u8 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u8 (*callback)(struct TextPrinterTemplate *, u16)); +u16 AddTextPrinterParameterized3(struct Window * window, u32 fontId, struct String *str, u32 x, u32 y, u32 speed, u32 colors, u32 letterSpacing, u32 lineSpacing, u8 (*callback)(struct TextPrinterTemplate *, u16)); u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 speed, u8 (*callback)(struct TextPrinterTemplate *, u16)); void RunTextPrinter(u32 param0, struct TextPrinter *printer); u32 RenderFont(struct TextPrinter *printer); void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor); void DecompressGlyphTile(const u16 *src, u16 *dst); void FUN_0201C1A8(struct TextPrinter *printer); -void *FUN_0201C1B0(void); +u16 *FUN_0201C1B0(void); void FUN_0201C1EC(struct TextPrinter *printer, u32 param1, u32 param2, u32 param3); void FUN_0201C238(struct TextPrinter *printer); diff --git a/include/text_02054590.h b/include/text_02054590.h index 725bd9b4..77170e70 100644 --- a/include/text_02054590.h +++ b/include/text_02054590.h @@ -3,15 +3,18 @@ #include "global.h" #include "options.h" +#include "unk_02016B94.h" +#include "string16.h" + void FUN_02054590(u32 param0, u32 param1); -void FUN_020545B8(u32 param0, u32 param1, u32 param2); -void FUN_02054608(u32 *param0, struct Options *options); -void FUN_0205464C(u32 *param0); -u16 FUN_02054658(u8 windowId, const u16 *str, struct Options *options, u8 param3); -u16 DrawFieldMessage(u8 windowId, const u16 *str, u8 fontId, u32 speed, u8 a4, u32 a5); +void FUN_020545B8(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2); +void FUN_02054608(struct Window *param0, struct Options *options); +void FUN_0205464C(struct Window *param0); +u16 FUN_02054658(struct Window * window, struct String *str, struct Options *options, u8 param3); +u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, u32 a5); u8 FUN_020546C8(u32 param0); -void FUN_020546E0(u32 param0, u32 param1, u32 param2, u32 param3); -void FUN_02054744(u32 *param0, u32 param1, u32 param2); +void FUN_020546E0(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2, u32 param3); +void FUN_02054744(struct Window *param0, u32 param1, u32 param2); -#endif //POKEDIAMOND_UNK_02054590_H +#endif // POKEDIAMOND_UNK_02054590_H diff --git a/include/timer3.h b/include/timer3.h index be6e1da8..3220c7a3 100644 --- a/include/timer3.h +++ b/include/timer3.h @@ -10,12 +10,12 @@ struct Timer3Data vu64 Timer3Counter; }; -THUMB_FUNC void Init_Timer3(); -THUMB_FUNC void CountUpTimer3(); -THUMB_FUNC u64 internal_GetTimer3Count(); -THUMB_FUNC u64 GetTimer3Count(); -THUMB_FUNC u64 Timer3CountToMilliSeconds(u64 count); -THUMB_FUNC u64 Timer3CountToSeconds(u64 count); +void Init_Timer3(); +void CountUpTimer3(); +u64 internal_GetTimer3Count(); +u64 GetTimer3Count(); +u64 Timer3CountToMilliSeconds(u64 count); +u64 Timer3CountToSeconds(u64 count); #endif //POKEDIAMOND_TIMER3_H diff --git a/include/unk_0200BA78.h b/include/unk_0200BA78.h new file mode 100644 index 00000000..2efe233e --- /dev/null +++ b/include/unk_0200BA78.h @@ -0,0 +1,19 @@ +#ifndef POKEDIAMOND_UNK_0200BA78_H +#define POKEDIAMOND_UNK_0200BA78_H + +#include "global.h" +#include "script_buffers.h" + +void FUN_0200BA78(struct UnkStruct_0200B870 *param0, + int param1, + u32 value, + u32 n, + enum PrintingMode mode, + struct Window *window, + int x, + int y); + +void FUN_0200BAAC( + struct UnkStruct_0200B870 *param0, u32 value, u32 n, enum PrintingMode mode, void *dest); + +#endif // POKEDIAMOND_UNK_0200BA78_H diff --git a/include/unk_0200CA44.h b/include/unk_0200CA44.h index 2e479ab8..6dd208c3 100644 --- a/include/unk_0200CA44.h +++ b/include/unk_0200CA44.h @@ -1,10 +1,12 @@ #ifndef POKEDIAMOND_UNK_0200CA44_H #define POKEDIAMOND_UNK_0200CA44_H -BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2); -BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2); -BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2); -BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2); +#include "text.h" + +BOOL FUN_0200CA44(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2); +BOOL FUN_0200CA60(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2); +BOOL FUN_0200CA7C(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2); +BOOL FUN_0200CA98(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2); void FUN_0200CAB4(s32 unk1); #endif //POKEDIAMOND_UNK_0200CA44_H diff --git a/include/unk_02015E30.h b/include/unk_02015E30.h index 6a4d6c15..67a7aaaf 100644 --- a/include/unk_02015E30.h +++ b/include/unk_02015E30.h @@ -15,8 +15,8 @@ struct UnkStruct_02015E30 u64 unk18; }; -THUMB_FUNC void FUN_02015E30(); -THUMB_FUNC void FUN_02015E3C(struct IGT *igt); -THUMB_FUNC void FUN_02015E60(); +void FUN_02015E30(); +void FUN_02015E3C(struct IGT *igt); +void FUN_02015E60(); #endif //POKEDIAMOND_UNK_02015E30_H diff --git a/include/unk_02016B94.h b/include/unk_02016B94.h new file mode 100644 index 00000000..a13f1634 --- /dev/null +++ b/include/unk_02016B94.h @@ -0,0 +1,340 @@ +#ifndef POKEDIAMOND_UNK_02016B94_H +#define POKEDIAMOND_UNK_02016B94_H + +#include "global.h" +#include "GX_layers.h" +#include "MI_uncompress.h" +#include "OS_cache.h" +#include "gx.h" +#include "heap.h" +#include "math_util.h" + +#define reg_G2_BG2P (u32 *)0x4000020 +#define reg_G2_BG3P (u32 *)0x4000030 +#define reg_G2S_DB_BG2P (u32 *)0x4001020 +#define reg_G2S_DB_BG3P (u32 *)0x4001030 +struct UnkStruct_02016B94_1 +{ + u32 unk00; + u32 unk04; + u32 unk08; + u32 unk0c; + + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; + u8 unk14; + u8 unk15; + u8 unk16; + u8 unk17; // probably paddding + u32 unk18; +}; + +struct UnkStruct_02016B94_2 +{ + u32 unk00; + u16 unk04; + u16 unk06; + + struct UnkStruct_02016B94_2_sub + { + void *unk08; + u32 unk0c; + u32 unk10; + + fx32 unk14; + fx32 unk18; + + u8 unk1c; + u8 unk1d; + u8 unk1e; + u8 unk1f; + u16 unk20; + u16 unk22; // probably padding + fx32 unk24; + fx32 unk28; + fx32 unk2c; + fx32 unk30; + } unk08[8]; +}; + +struct UnkStruct_02016B94_3 +{ + void *unk00; + u16 unk04; + u16 unk06; +}; + +struct UnkStruct_02016B94_4 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u16 unk6; +}; + +struct Window +{ + struct UnkStruct_02016B94_2 *unk00; + u8 unk04; + u8 unk05; + u8 unk06; + u8 width; + u8 height; + u8 unk09; + u16 unk0a_0 : 15; + u16 unk0b_15 : 1; + void *unk0c; +}; + +struct UnkStruct_02016B94_2 *FUN_02016B94(u32 heap_id); +u32 FUN_02016BB8(u32 *param0); +void FUN_02016BBC(const struct GraphicsModes *modes); +void FUN_02016BF4(u32 *param0, u32 param1); +void FUN_02016C18( + struct UnkStruct_02016B94_2 *param0, u8 param1, struct UnkStruct_02016B94_1 *param2, u8 param3); +void FUN_020170F4(struct UnkStruct_02016B94_2 *param0, u8 param1, u32 param2, u8 param3); +u8 FUN_020177DC(u8 param0, u32 param1); +void FUN_02017850(u32 param0, u8 *param1, u8 *param2); +void FUN_020178A0(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_020178BC(u32 param0, u16 param1); +void FUN_0201797C(u32 param0, GX_LayerToggle toggle); +void FUN_020179E0(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 val); +fx32 FUN_02017B48(struct UnkStruct_02016B94_2 *param0, u32 param1); +fx32 FUN_02017B54(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_02017B60(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u32 param2, + fx32 param3, + struct Mtx22 *param4, + fx32 param5, + fx32 param6); +void FUN_02017B8C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val); +void FUN_02017BD0(struct UnkStruct_02016B94_2 *param0, + u32 param1, + struct Mtx22 *param2, + fx32 param3, + fx32 param4); +void FUN_02017C6C(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_02017C98(const void *param0, void *param1, u32 param2); +void FUN_02017CD0(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_02017CE8( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4); +void FUN_02017D68(u32 param0, void *param1, u32 offset, u32 size); +void FUN_02017DFC(struct UnkStruct_02016B94_2 *param0, u32 param1, void *param2, u32 param3); +void FUN_02017E14( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4); +void FUN_02017E40( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 *param2, u32 param3, u32 param4); +void FUN_02017E84(u32 param0, void *param1, u32 offset, u32 size); +void FUN_02017F18(u32 param0, u32 size, u32 offset, u32 heap_id); +void FUN_02017F48( + struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02017FB4(u32 param0, void *param1, u32 offset, u32 size); +void FUN_02017FE4(u32 param0, u32 param1); +u16 FUN_02017FFC(u8 param0, u8 param1, u8 param2); +u16 FUN_02018068(u8 param0, u8 param1, u8 param2, u8 param3); +void FUN_02018148(struct UnkStruct_02016B94_2 *param0, + u32 param1, + void *param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6); +void FUN_02018170(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + void *param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10); +void FUN_020181EC(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + void *param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10); +void FUN_02018268(struct UnkStruct_02016B94_2_sub *param0, + u8 param1, + u8 param2, + u8 param3, + u8 param4, + u16 *param5, + u8 param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10); +void FUN_020183DC(struct UnkStruct_02016B94_2_sub *param0, + u8 param1, + u8 param2, + u8 param3, + u8 param4, + u8 *param5, + u8 param6, + u8 param7, + u8 param8, + u8 param9, + u8 param10); +void FUN_02018540(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u16 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7); +void FUN_02018590(struct UnkStruct_02016B94_2_sub *param0, + u16 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6); +void FUN_02018640( + struct UnkStruct_02016B94_2_sub *param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5); +void FUN_020186B4(struct UnkStruct_02016B94_2 *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6); +void FUN_02018744(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_02018768(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2); +void FUN_0201878C(struct UnkStruct_02016B94_2 *param0, u32 param1, u16 param2); +void *FUN_020187B0(u32 param0); +void FUN_02018808(u8 *param0, u32 param1, u8 (*param2)[2], u8 param3); +u8 (*FUN_02018848(u8 *param0, u32 param1, u8 param2, u32 heap_id))[2]; +void *FUN_0201886C(struct UnkStruct_02016B94_2 *param0, u32 param1); +u16 FUN_02018878(struct UnkStruct_02016B94_2 *param0, u32 param1); +u8 FUN_02018884(struct UnkStruct_02016B94_2 *param0, u32 param1); +void BlitBitmapRect4Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8); +void BlitBitmapRect8Bit(struct UnkStruct_02016B94_3 *param0, + struct UnkStruct_02016B94_3 *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8); +void FUN_02018E88( + struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5); +void FUN_02018F4C( + struct UnkStruct_02016B94_3 *param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5); +void *AllocWindows(u32 heap_id, s32 size); +void InitWindow(struct Window *param0); +BOOL FUN_02019048(struct Window *param0); +void FUN_02019064(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7, + u16 param8); +void FUN_020190EC(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + u8 param2, + u8 param3, + u16 param4, + u8 param5); +void FUN_02019150(struct UnkStruct_02016B94_2 *param0, + struct Window *param1, + struct UnkStruct_02016B94_4 *param2); +void FUN_02019178(struct Window *param0); +void FUN_020191A4(struct Window *param0, int param1); +void CopyWindowToVram(struct Window *param0); +void FUN_02019220(struct Window *param0); +void FUN_02019270(struct Window *param0); +void FUN_0201928C(struct Window *param0, u8 param1, u8 param2); +void FUN_020192B8(struct Window *param0); +void FUN_020192D4(struct Window *param0); +void FUN_02019358(struct Window *param0); +void FUN_020193B4(struct Window *param0); +void FUN_02019444(struct Window *param0); +void FUN_0201949C(struct Window *window); +void FUN_020194C8(struct Window *window); +void FUN_020194E0(struct Window *window); +void FUN_0201951C(struct Window *window); +void FUN_02019548(struct Window *window); +void FUN_02019570(struct Window *window); +void FUN_0201958C(struct Window *window); +void FUN_020195A8(struct Window *window); +void FUN_020195D0(struct Window *window); +void FUN_020195E4(struct Window *window); +void FUN_0201960C(struct Window *window); +void FillWindowPixelBuffer(struct Window *window, u8 param1); +void BlitBitmapRectToWindow(struct Window *window, + const void *src, + u16 srcX, + u16 srcY, + u16 srcWidth, + u16 srcHeight, + u16 dstX, + u16 dstY, + u16 dstWidth, + u16 dstHeight); +void BlitBitmapRect(struct Window *window, + void *param1, + u16 param2, + u16 param3, + u16 param4, + u16 param5, + u16 param6, + u16 param7, + u16 param8, + u16 param9, + u16 param10); +void FillWindowPixelRect(struct Window *window, u8 fillValue, u16 x, u16 y, u16 width, u16 height); +void FUN_0201974C( + struct Window *window, u32 *param1, u32 param2, u32 param3, u16 param4, u16 param5, u32 param6); +void ScrollWindow(struct Window *window, u32 param1, u8 param2, u8 param3); +void FUN_0201A8E8(struct Window *window, u32 param1, u8 param2, u8 param3); +void FUN_0201A9D4(struct Window *window, u32 param1, u8 param2, u8 param3); +u8 FUN_0201AB08(struct Window *window); +u8 GetWindowWidth(struct Window *window); +u8 GetWindowHeight(struct Window *window); +u8 FUN_0201AB14(struct Window *window); +u8 FUN_0201AB18(struct Window *window); +void FUN_0201AB1C(struct Window *window, u8 param1); +void FUN_0201AB20(struct Window *window, u8 param1); +void FUN_0201AB24(struct Window *window, u8 param1); +u32 FUN_0201AB28(struct Window *window, u32 heap_id, const char *path); +u32 FUN_0201AB44(struct Window *window, u32 heap_id, const char *path); +void FUN_0201AB60(struct UnkStruct_02016B94_2 *param0); +void FUN_0201AB78(struct UnkStruct_02016B94_2 *param0); +void FUN_0201AC68(struct UnkStruct_02016B94_2 *param0, u32 param1); +void FUN_0201AC78(struct UnkStruct_02016B94_2 *param0); +void FUN_0201AEE4(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3); +void FUN_0201AF08(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u16 param3); +void FUN_0201AF2C(struct UnkStruct_02016B94_2_sub *param0, u32 param1, u16 val); +void FUN_0201AF50(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, fx32 param3); +void FUN_0201AF74(struct UnkStruct_02016B94_2_sub *param0, u32 param1, fx32 val); +u32 FUN_0201AFBC(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 param2, u8 param3, u16 *param4); +void FUN_0201B118(struct UnkStruct_02016B94_2 *param0, u8 param1, u8 *param2); + +#endif // POKEDIAMOND_UNK_02016B94_H diff --git a/include/unk_02022504.h b/include/unk_02022504.h index aa541f85..62e4def1 100644 --- a/include/unk_02022504.h +++ b/include/unk_02022504.h @@ -9,6 +9,6 @@ struct PCStorage *GetStoragePCPointer(struct SaveBlock2 *sav2); void *FUN_0202251C(struct SaveBlock2 *sav2); void *FUN_02022528(struct SaveBlock2 *sav2); u8 *LoadHallOfFame(struct SaveBlock2 *sav2, u32 heap_id, int *ret_p); -s32 *SaveHallOfFame(struct SaveBlock2 *sav2, u8 *data); +s32 SaveHallOfFame(struct SaveBlock2 *sav2, u8 *data); #endif //POKEDIAMOND_UNK_02022504_H diff --git a/include/unk_02024E64.h b/include/unk_02024E64.h index ed1bd447..68e7103c 100644 --- a/include/unk_02024E64.h +++ b/include/unk_02024E64.h @@ -14,15 +14,15 @@ struct UnkStruct_02024E64 { u8 unk74A[2]; // might be padding }; -THUMB_FUNC u32 FUN_02024E64(); -THUMB_FUNC void FUN_02024E6C(struct UnkStruct_02024E64 *param0); -THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2); -THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2); -THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024ECC(struct SaveBlock2 *sav2); -THUMB_FUNC void *FUN_02024ED8(struct SaveBlock2 *sav2); -THUMB_FUNC u16 *GetRivalNamePtr(struct UnkStruct_02024E64 *unk); -THUMB_FUNC void RivalsNameToU16Array(struct UnkStruct_02024E64 *unk, struct String *str); -THUMB_FUNC u16 *FUN_02024F0C(struct UnkStruct_02024E64 *unk); -THUMB_FUNC void FUN_02024F18(struct UnkStruct_02024E64 *unk, struct String *str); +u32 FUN_02024E64(); +void FUN_02024E6C(struct UnkStruct_02024E64 *param0); +struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2); +void *FUN_02024EC0(struct SaveBlock2 *sav2); +struct UnkStruct_02024E64 *FUN_02024ECC(struct SaveBlock2 *sav2); +void *FUN_02024ED8(struct SaveBlock2 *sav2); +u16 *GetRivalNamePtr(struct UnkStruct_02024E64 *unk); +void RivalsNameToU16Array(struct UnkStruct_02024E64 *unk, struct String *str); +u16 *FUN_02024F0C(struct UnkStruct_02024E64 *unk); +void FUN_02024F18(struct UnkStruct_02024E64 *unk, struct String *str); #endif diff --git a/include/unk_02025484.h b/include/unk_02025484.h index 0412dda1..d2feccb3 100644 --- a/include/unk_02025484.h +++ b/include/unk_02025484.h @@ -9,7 +9,7 @@ struct unk_2025484 u8 padding[0x1C]; }; -void FUN_02025484(struct unk_2025484 *r0, u32 r1); +void FUN_02025484(struct unk_2025484 *r0); u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1); u32 *FUN_020254A0(struct unk_2025484 *r0, u32 r1); u32 FUN_020254B4(struct unk_2025484 *r0); diff --git a/include/unk_0202D858.h b/include/unk_0202D858.h index 210821d0..b5845998 100644 --- a/include/unk_0202D858.h +++ b/include/unk_0202D858.h @@ -3,8 +3,8 @@ #include "global.h" -THUMB_FUNC u8 FUN_0202D858(u16 param0); -THUMB_FUNC u8 FUN_0202D884(u16 param0); -THUMB_FUNC u32 FUN_0202D8B0(int param0); +u8 FUN_0202D858(u16 param0); +u8 FUN_0202D884(u16 param0); +u32 FUN_0202D8B0(int param0); #endif // POKEDIAMOND_UNK_0202D858_H diff --git a/include/unk_0202F150.h b/include/unk_0202F150.h index 8f5cdd3e..b87bbf0c 100644 --- a/include/unk_0202F150.h +++ b/include/unk_0202F150.h @@ -87,100 +87,100 @@ struct UnkStruct0202F150 u8 unk68B; }; -THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1); -THUMB_FUNC void FUN_0202F2F0(); -THUMB_FUNC void FUN_0202F5A4(); -THUMB_FUNC void FUN_0202F820(int param0); -THUMB_FUNC void FUN_0202F8D4(); -THUMB_FUNC void FUN_0202F910(int param0); -THUMB_FUNC BOOL FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3); -THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2); -THUMB_FUNC void FUN_0202F984(); -THUMB_FUNC void FUN_0202F9E0(u32 param0); -THUMB_FUNC void FUN_0202FA10(); -THUMB_FUNC void FUN_0202FA1C(); -THUMB_FUNC u8 FUN_0202FA28(); -THUMB_FUNC u32 FUN_0202FA48(); -THUMB_FUNC void FUN_0202FA5C(); -THUMB_FUNC u32 FUN_0202FB18(u32 param0); -THUMB_FUNC void FUN_0202FB20(); -THUMB_FUNC void FUN_0202FB58(); -THUMB_FUNC BOOL FUN_0202FB80(); -THUMB_FUNC void FUN_0202FC60(); -THUMB_FUNC void FUN_0202FC80(); -THUMB_FUNC void FUN_0202FCA8(); -THUMB_FUNC void FUN_0202FCCC(); -THUMB_FUNC u32 FUN_0202FE2C(int param0); -THUMB_FUNC void FUN_0202FEEC(); -THUMB_FUNC void FUN_02030074(); -THUMB_FUNC void FUN_02030238(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_020304D4(u32 param0); -THUMB_FUNC void FUN_020304F0(u32 param0); -THUMB_FUNC void FUN_0203050C(); -THUMB_FUNC void FUN_02030674(); -THUMB_FUNC void FUN_020307A8(); -THUMB_FUNC void FUN_020307BC(); -THUMB_FUNC void FUN_020307D0(); -THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1); -THUMB_FUNC void FUN_0203086C(); -THUMB_FUNC u32 FUN_02030870(u8 *param0); -THUMB_FUNC u32 FUN_02030930(u8 *param0); -THUMB_FUNC void FUN_02030A00(u8 *param0); -THUMB_FUNC u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1); -THUMB_FUNC int FUN_02030C58(); -THUMB_FUNC void FUN_02030C70( +u32 FUN_0202F150(u32 param0, u32 param1); +void FUN_0202F2F0(); +void FUN_0202F5A4(); +void FUN_0202F820(int param0); +void FUN_0202F8D4(); +void FUN_0202F910(int param0); +BOOL FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3); +u32 FUN_0202F950(u32 param0, u32 param1, u32 param2); +void FUN_0202F984(); +void FUN_0202F9E0(u32 param0); +void FUN_0202FA10(); +void FUN_0202FA1C(); +u8 FUN_0202FA28(); +u32 FUN_0202FA48(); +void FUN_0202FA5C(); +u32 FUN_0202FB18(u32 param0); +void FUN_0202FB20(); +void FUN_0202FB58(); +BOOL FUN_0202FB80(); +void FUN_0202FC60(); +void FUN_0202FC80(); +void FUN_0202FCA8(); +void FUN_0202FCCC(); +u32 FUN_0202FE2C(int param0); +void FUN_0202FEEC(); +void FUN_02030074(); +void FUN_02030238(u32 param0, u8 *param1, u32 param2); +void FUN_0203026C(u32 param0, u8 *param1, u32 param2); +void FUN_020303BC(u32 param0, u8 *param1, u32 param2); +void FUN_020303F4(u32 param0, u8 *param1, u32 param2); +void FUN_020304D4(u32 param0); +void FUN_020304F0(u32 param0); +void FUN_0203050C(); +void FUN_02030674(); +void FUN_020307A8(); +void FUN_020307BC(); +void FUN_020307D0(); +u32 FUN_020307E4(u8 *param0, u32 param1); +void FUN_0203086C(); +u32 FUN_02030870(u8 *param0); +u32 FUN_02030930(u8 *param0); +void FUN_02030A00(u8 *param0); +u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2); +u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2); +u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2); +u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2); +u32 FUN_02030C4C(u32 param0, u8 *param1); +int FUN_02030C58(); +void FUN_02030C70( u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4); -THUMB_FUNC void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0, +void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4); -THUMB_FUNC void FUN_02030DA4(); -THUMB_FUNC void FUN_02030DFC(); -THUMB_FUNC u32 FUN_02030E7C(u16 param0); -THUMB_FUNC s32 FUN_02030F20(); -THUMB_FUNC BOOL FUN_02030F40(); -THUMB_FUNC void FUN_02030F60(u8 param0); -THUMB_FUNC u8 FUN_02030F74(u32 param0); -THUMB_FUNC u32 FUN_02030F88(u32 param0); -THUMB_FUNC void FUN_02030FA8(); -THUMB_FUNC void FUN_02030FC8(); -THUMB_FUNC u32 FUN_02030FE0(); -THUMB_FUNC void FUN_02031000(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_0203105C(u32 param0, u8 *param1, u32 param2); -THUMB_FUNC void FUN_02031088(); -THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC u16 FUN_02031190(); -THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1); -THUMB_FUNC u32 FUN_020311DC(u32 param0); -THUMB_FUNC u32 FUN_020311E8(); -THUMB_FUNC BOOL FUN_020311F0(); -THUMB_FUNC int FUN_02031228(u16 param0); -THUMB_FUNC int FUN_02031248(u32 param0); -THUMB_FUNC int FUN_02031258(u32 param0); -THUMB_FUNC void FUN_02031268(u8 param0); -THUMB_FUNC u8 FUN_02031280(); -THUMB_FUNC void FUN_0203129C(); -THUMB_FUNC void FUN_020312BC(s64 *param0); -THUMB_FUNC void FUN_02031354(u32 param0); -THUMB_FUNC u32 FUN_02031370(); -THUMB_FUNC u32 FUN_02031388(); -THUMB_FUNC void FUN_020313A0(u8 param0); -THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1); -THUMB_FUNC u32 FUN_020313CC(u32 param0); -THUMB_FUNC u32 FUN_020313EC(); -THUMB_FUNC void FUN_02031400(u32 param0); -THUMB_FUNC u32 FUN_02031438(); -THUMB_FUNC void FUN_02031454(); -THUMB_FUNC void FUN_02031468(); +void FUN_02030DA4(); +void FUN_02030DFC(); +u32 FUN_02030E7C(u16 param0); +s32 FUN_02030F20(); +BOOL FUN_02030F40(); +void FUN_02030F60(u8 param0); +u8 FUN_02030F74(u32 param0); +u32 FUN_02030F88(u32 param0); +void FUN_02030FA8(); +void FUN_02030FC8(); +u32 FUN_02030FE0(); +void FUN_02031000(u32 param0, u8 *param1, u32 param2); +void FUN_0203105C(u32 param0, u8 *param1, u32 param2); +void FUN_02031088(); +void FUN_0203110C(u32 param0, u32 param1, u8 *param2); +void FUN_02031134(u32 param0, u32 param1, u8 *param2); +void FUN_0203115C(u32 param0, u32 param1, u8 *param2); +u16 FUN_02031190(); +u32 FUN_020311D0(u32 param0, u8 *param1); +u32 FUN_020311DC(u32 param0); +u32 FUN_020311E8(); +BOOL FUN_020311F0(); +int FUN_02031228(u16 param0); +int FUN_02031248(u32 param0); +int FUN_02031258(u32 param0); +void FUN_02031268(u8 param0); +u8 FUN_02031280(); +void FUN_0203129C(); +void FUN_020312BC(s64 *param0); +void FUN_02031354(u32 param0); +u32 FUN_02031370(); +u32 FUN_02031388(); +void FUN_020313A0(u8 param0); +void FUN_020313B4(u8 param0, u32 param1); +u32 FUN_020313CC(u32 param0); +u32 FUN_020313EC(); +void FUN_02031400(u32 param0); +u32 FUN_02031438(); +void FUN_02031454(); +void FUN_02031468(); #endif // POKEDIAMOND_UNK_0202F150_H diff --git a/include/unk_02031480.h b/include/unk_02031480.h index 975f0796..951a3717 100644 --- a/include/unk_02031480.h +++ b/include/unk_02031480.h @@ -6,25 +6,25 @@ #include "heap.h" #include "unk_0202F150.h" -THUMB_FUNC void FUN_02031480(u32 heap_id); -THUMB_FUNC void FUN_020314D0(); -THUMB_FUNC BOOL FUN_020314E8(); -THUMB_FUNC void FUN_020314FC(u8 param0, u32 param1, u8 *param2); -THUMB_FUNC void FUN_02031560(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC void FUN_02031574(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC void FUN_02031588(u8 param0); -THUMB_FUNC void FUN_020315A4(); -THUMB_FUNC BOOL FUN_020315D8(u8 param0); -THUMB_FUNC u8 FUN_020315FC(u8 index); -THUMB_FUNC void FUN_0203160C(u32 param0, u32 param1, u8 *param2); -THUMB_FUNC u32 FUN_02031628(); -THUMB_FUNC void FUN_0203162C(u8 param0, u8 param1); -THUMB_FUNC int FUN_02031640(u32 param0, u8 param1); -THUMB_FUNC void FUN_02031668(); -THUMB_FUNC void FUN_0203168C(); -THUMB_FUNC BOOL FUN_020316AC(u32 param0, void *param1); -THUMB_FUNC u8 *FUN_020316E0(int param0); -THUMB_FUNC void FUN_02031704(u32 param0, u32 param1, void *param2); -THUMB_FUNC u32 FUN_02031730(); +void FUN_02031480(u32 heap_id); +void FUN_020314D0(); +BOOL FUN_020314E8(); +void FUN_020314FC(u8 param0, u32 param1, u8 *param2); +void FUN_02031560(u32 param0, u32 param1, u8 *param2); +void FUN_02031574(u32 param0, u32 param1, u8 *param2); +void FUN_02031588(u8 param0); +void FUN_020315A4(); +BOOL FUN_020315D8(u8 param0); +u8 FUN_020315FC(u8 index); +void FUN_0203160C(u32 param0, u32 param1, u8 *param2); +u32 FUN_02031628(); +void FUN_0203162C(u8 param0, u8 param1); +int FUN_02031640(u32 param0, u8 param1); +void FUN_02031668(); +void FUN_0203168C(); +BOOL FUN_020316AC(u32 param0, void *param1); +u8 *FUN_020316E0(int param0); +void FUN_02031704(u32 param0, u32 param1, void *param2); +u32 FUN_02031730(); #endif // POKEDIAMOND_UNK_02031480_H diff --git a/include/unk_020337E8.h b/include/unk_020337E8.h new file mode 100644 index 00000000..228570ea --- /dev/null +++ b/include/unk_020337E8.h @@ -0,0 +1,25 @@ +#ifndef POKEDIAMOND_UNK_020337E8_H +#define POKEDIAMOND_UNK_020337E8_H + +#include "global.h" +#include "save_block_2.h" + +// Dummy struct until DWC_account +struct DWC_Struct +{ + s32 unk0; +}; + +struct DWC_token +{ + // size: 0xC + u8 fill0[0xC]; +}; + +s32 FUN_020337E8(u32 heap_id); +void FUN_0203380C(struct DWC_Struct *); +s32 FUN_02033830(struct DWC_Struct *); +BOOL FUN_0203384C(struct SaveBlock2 *); + + +#endif // POKEDIAMOND_UNK_020337E8_H diff --git a/include/unk_0205FA2C.h b/include/unk_0205FA2C.h index 19279a6c..418c7077 100644 --- a/include/unk_0205FA2C.h +++ b/include/unk_0205FA2C.h @@ -80,16 +80,16 @@ struct UnkCallbackStruct2_0205FA2C u16 unk14; }; -THUMB_FUNC u32 FUN_0205FA2C( +u32 FUN_0205FA2C( struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id); -THUMB_FUNC u32 FUN_0205FAD8( +u32 FUN_0205FAD8( struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1); -THUMB_FUNC u32 FUN_0205FB34( +u32 FUN_0205FB34( struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id); -THUMB_FUNC u32 FUN_0205FBC0( +u32 FUN_0205FBC0( struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1); -THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0); -THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, +int FUN_0205FBE8(struct UnkStruct_0204639C *param0); +void FUN_0205FC50(struct UnkStruct_0204639C *param0, void **param1, u8 param2, u8 param3, @@ -98,24 +98,24 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, u8 param6, u8 param7); -THUMB_FUNC u32 FUN_0205FC9C( +u32 FUN_0205FC9C( struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1); -THUMB_FUNC u32 FUN_0205FCC4( +u32 FUN_0205FCC4( struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1); -THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0); -THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3); +int FUN_0205FCE8(struct UnkStruct_0204639C *param0); +void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3); -THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0); -THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); +int FUN_0205FD70(struct UnkStruct_0204639C *param0); +void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); -THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2); -THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2); -THUMB_FUNC void FUN_02060044(u16 **param0, u32 *param1); -THUMB_FUNC u32 FUN_02060064(u32 param0); -THUMB_FUNC u32 FUN_02060070(u32 param0); -THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2); -THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2); -THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2); -THUMB_FUNC BOOL FUN_02060144(u32 **param0); +u32 FUN_0205FE10(struct SaveBlock2 *sav2); +u32 FUN_0205FF5C(struct SaveBlock2 *sav2); +void FUN_02060044(u16 **param0, u32 *param1); +u32 FUN_02060064(u32 param0); +u32 FUN_02060070(u32 param0); +u32 FUN_0206007C(struct SaveBlock2 *sav2); +u32 FUN_020600A0(struct SaveBlock2 *sav2); +u32 FUN_020600DC(struct SaveBlock2 *sav2); +BOOL FUN_02060144(u32 **param0); #endif // POKEDIAMOND_UNK_0205FA2C_H diff --git a/include/unk_0206015C.h b/include/unk_0206015C.h index e8a312c2..c285fac9 100644 --- a/include/unk_0206015C.h +++ b/include/unk_0206015C.h @@ -24,7 +24,7 @@ struct UnkStruct_0204652C u8 unkE; // some kind of counter? }; -THUMB_FUNC void FUN_0206015C(struct UnkSavStruct80* savStruct); -THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C * unkStruct0); +void FUN_0206015C(struct UnkSavStruct80* savStruct); +BOOL FUN_02060194(struct UnkStruct_0204639C * unkStruct0); #endif //UNK_0206015C_H_GUARD diff --git a/tools/asm_processor/asm_processor.py b/tools/asm_processor/asm_processor.py index ec01c68e..5c909388 100755 --- a/tools/asm_processor/asm_processor.py +++ b/tools/asm_processor/asm_processor.py @@ -9,7 +9,7 @@ import os from collections import namedtuple, defaultdict from io import StringIO -MAX_FN_SIZE = 100 +MAX_FN_SIZE = 3000 SLOW_CHECKS = False EI_NIDENT = 16 @@ -375,14 +375,14 @@ def is_temp_name(name): # https://stackoverflow.com/a/241506 def re_comment_replacer(match): s = match.group(0) - if s[0] in "/#": + if s[0] in "/#;": return " " else: return s re_comment_or_string = re.compile( - r'#.*|/\*.*?\*/|"(?:\\.|[^\\"])*"' + r';.*|#.*|/\*.*?\*/|"(?:\\.|[^\\"])*"' ) @@ -584,8 +584,12 @@ class GlobalAsmBlock: elif line.startswith('.byte'): self.add_sized(len(line.split(',')), real_line) # Branches are 4 bytes long - elif line.startswith('bl'): + elif line.startswith('bl') and not line.startswith('bls'): self.add_sized(4, real_line) + elif line.startswith('.word'): + self.add_sized(4, real_line) + elif line.startswith('.extern'): + pass else: # Unfortunately, macros are hard to support for .rodata -- # we don't know how how space they will expand to before @@ -820,7 +824,7 @@ def repl_float_hex(m): def parse_source(f, opt, framepointer, input_enc, output_enc, print_source=None): opt = "O4" min_instr_count = 3 # idk - skip_instr_count = 2 # idk + skip_instr_count = 3 # mandatory instructions: push, pop and mov r0, 0 use_jtbl_for_rodata = False if opt in ['O2', 'g3'] and not framepointer: |