summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-05-23 21:34:14 +0100
committerGitHub <noreply@github.com>2021-05-23 21:34:14 +0100
commitc3a9cae755efd6c2efde269c0837d2524634d592 (patch)
tree4ec97468f3963829479447e5772b19b971087b0a
parentb934918219cb4871c726b4e9815f0b801210865b (diff)
parent8ffb7a0c637d74d2140fefc7e20e10288b43e286 (diff)
Merge branch 'master' into master
-rw-r--r--.github/workflows/build.yml14
-rw-r--r--arm9/arm9.lsf6
-rw-r--r--arm9/asm/gf_rtc.s410
-rw-r--r--arm9/asm/scrcmd_asm.s2
-rw-r--r--arm9/asm/unk_020010A8.s1514
-rw-r--r--arm9/asm/unk_02001B80.s48
-rw-r--r--arm9/asm/unk_020023C0.s14
-rw-r--r--arm9/asm/unk_02002C14.s4
-rw-r--r--arm9/asm/unk_02006864.s2
-rw-r--r--arm9/asm/unk_0200BA78.s86
-rw-r--r--arm9/asm/unk_0200CABC.s38
-rw-r--r--arm9/asm/unk_02011744.s1810
-rw-r--r--arm9/asm/unk_02012004.s787
-rw-r--r--arm9/asm/unk_02012944.s471
-rw-r--r--arm9/asm/unk_02012CC8.s16
-rw-r--r--arm9/asm/unk_02016B94.s9653
-rw-r--r--arm9/asm/unk_020337E8.s74
-rw-r--r--arm9/asm/unk_02033F50.s2
-rw-r--r--arm9/asm/unk_02034188.s2
-rw-r--r--arm9/asm/unk_02035068.s22
-rw-r--r--arm9/asm/unk_02048120.s4
-rw-r--r--arm9/asm/unk_020484A8.s2
-rw-r--r--arm9/asm/unk_02050E48.s32
-rw-r--r--arm9/asm/unk_02053750.s12
-rw-r--r--arm9/asm/unk_02057380.s8
-rw-r--r--arm9/asm/unk_0205AD98.s2
-rw-r--r--arm9/asm/unk_0205C598.s2
-rw-r--r--arm9/asm/unk_020625EC.s38
-rw-r--r--arm9/asm/unk_020643C0.s8
-rw-r--r--arm9/asm/unk_020653EC.s50
-rw-r--r--arm9/asm/unk_0206C700.s6
-rw-r--r--arm9/asm/unk_0206F3FC.s16
-rw-r--r--arm9/asm/unk_02072548.s58
-rw-r--r--arm9/asm/unk_02073DA8.s38
-rw-r--r--arm9/asm/unk_0207550C.s14
-rw-r--r--arm9/asm/unk_020772F0.s50
-rw-r--r--arm9/asm/unk_02079C70.s2
-rw-r--r--arm9/asm/unk_0207D5BC.s96
-rw-r--r--arm9/asm/unk_02086414.s14
-rw-r--r--arm9/asm/unk_02089498.s4
-rw-r--r--arm9/asm/unk_02089960.s4
-rw-r--r--arm9/asm/unk_02089D90.s2
-rw-r--r--arm9/asm/unk_02089F24.s4
-rw-r--r--arm9/asm/unk_0208A338.s28
-rw-r--r--arm9/global.inc75
-rw-r--r--arm9/lib/src/RTC_internal.c2
-rw-r--r--arm9/modules/04/asm/thumb_04.s6
-rw-r--r--arm9/modules/05/asm/mod05_021DB44C.s6
-rw-r--r--arm9/modules/05/asm/mod05_021DBA00.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DBABC.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DC0B8.s8
-rw-r--r--arm9/modules/05/asm/mod05_021E1374.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E1AD8.s34
-rw-r--r--arm9/modules/05/asm/mod05_021E2B80.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E2E88.s20
-rw-r--r--arm9/modules/05/asm/mod05_021E3444.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E5FD8.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E8310.s10
-rw-r--r--arm9/modules/05/asm/module_05.s78
-rw-r--r--arm9/modules/05/src/mod05_021E72FC.c2
-rw-r--r--arm9/modules/06/asm/module_06.s208
-rw-r--r--arm9/modules/07/asm/module_07.s14
-rw-r--r--arm9/modules/09/asm/module_09.s234
-rw-r--r--arm9/modules/11/asm/module_11_thumb1.s6
-rw-r--r--arm9/modules/11/asm/module_11_thumb2.s28
-rw-r--r--arm9/modules/12/asm/module_12.s26
-rw-r--r--arm9/modules/14/asm/module_14.s78
-rw-r--r--arm9/modules/15/asm/module_15.s44
-rw-r--r--arm9/modules/16/asm/module_16.s58
-rw-r--r--arm9/modules/17/asm/module_17.s32
-rw-r--r--arm9/modules/18/asm/module_18.s338
-rw-r--r--arm9/modules/20/asm/module_20.s18
-rw-r--r--arm9/modules/21/src/mod21_02254854.c2
-rw-r--r--arm9/modules/24/asm/module_24.s8
-rw-r--r--arm9/modules/27/asm/module_27.s8
-rw-r--r--arm9/modules/36/asm/module_36.s6
-rw-r--r--arm9/modules/38/asm/module_38.s4
-rw-r--r--arm9/modules/43/asm/module_43.s2
-rw-r--r--arm9/modules/47/asm/module_47.s10
-rw-r--r--arm9/modules/49/asm/module_49.s2
-rw-r--r--arm9/modules/51/asm/module_51.s12
-rw-r--r--arm9/modules/52/include/module_52.h24
-rw-r--r--arm9/modules/53/asm/module_53.s14
-rw-r--r--arm9/modules/54/asm/module_54.s12
-rw-r--r--arm9/modules/55/asm/module_55.s46
-rw-r--r--arm9/modules/56/asm/module_56.s114
-rw-r--r--arm9/modules/57/asm/module_57.s26
-rw-r--r--arm9/modules/58/asm/module_58.s16
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s18
-rw-r--r--arm9/modules/59/asm/mod59_021D9868.s2
-rw-r--r--arm9/modules/60/asm/module_60.s10
-rw-r--r--arm9/modules/61/asm/module_61.s6
-rw-r--r--arm9/modules/62/asm/module_62.s34
-rw-r--r--arm9/modules/63/asm/mod63_021D74E0.s2
-rw-r--r--arm9/modules/64/asm/module_64.s16
-rw-r--r--arm9/modules/65/asm/module_65.s58
-rw-r--r--arm9/modules/66/asm/module_66.s22
-rw-r--r--arm9/modules/67/asm/module_67.s6
-rw-r--r--arm9/modules/68/asm/module_68.s28
-rw-r--r--arm9/modules/69/asm/module_69.s4
-rw-r--r--arm9/modules/70/asm/module_70.s8
-rw-r--r--arm9/modules/71/asm/module_71.s68
-rw-r--r--arm9/modules/73/asm/module_73.s22
-rw-r--r--arm9/modules/74/asm/module_74.s10
-rw-r--r--arm9/modules/75/asm/module_75.s162
-rw-r--r--arm9/modules/76/asm/module_76.s46
-rw-r--r--arm9/modules/77/asm/module_77.s40
-rw-r--r--arm9/modules/80/asm/module_80.s242
-rw-r--r--arm9/modules/81/asm/module_81.s8
-rw-r--r--arm9/modules/82/asm/module_82.s18
-rw-r--r--arm9/modules/83/asm/module_83.s92
-rw-r--r--arm9/modules/84/asm/module_84_thumb2.s18
-rw-r--r--arm9/modules/85/asm/module_85.s4
-rw-r--r--arm9/modules/86/asm/module_86.s4
-rw-r--r--arm9/src/GX_layers.c3
-rw-r--r--arm9/src/error_message_reset.c34
-rw-r--r--arm9/src/game_init.c52
-rw-r--r--arm9/src/heap.c2
-rw-r--r--arm9/src/itemtool.c2
-rw-r--r--arm9/src/list_menu.c572
-rw-r--r--arm9/src/list_menu_items.c92
-rw-r--r--arm9/src/main.c71
-rw-r--r--arm9/src/scrcmd.c57
-rw-r--r--arm9/src/script_buffers.c19
-rw-r--r--arm9/src/text.c60
-rw-r--r--arm9/src/text_02054590.c51
-rw-r--r--arm9/src/unk_0200BA78.c36
-rw-r--r--arm9/src/unk_0200CA44.c10
-rw-r--r--arm9/src/unk_02016B94.c8109
-rw-r--r--arm9/src/unk_02022504.c2
-rw-r--r--arm9/src/unk_02025484.c4
-rw-r--r--arm9/src/unk_0202E29C.c334
-rw-r--r--arm9/src/unk_020337E8.c50
-rw-r--r--arm9/src/unk_0205FA2C.c2
-rw-r--r--arm9/src/unk_0206015C.c2
-rw-r--r--include/GX_layers.h45
-rw-r--r--include/error_message_reset.h28
-rw-r--r--include/font.h6
-rw-r--r--include/heap.h26
-rw-r--r--include/list_menu.h88
-rw-r--r--include/list_menu_cursor.h17
-rw-r--r--include/list_menu_items.h21
-rw-r--r--include/main.h22
-rw-r--r--include/scrcmd.h1
-rw-r--r--include/script.h4
-rw-r--r--include/script_buffers.h5
-rw-r--r--include/text.h86
-rw-r--r--include/text_02054590.h19
-rw-r--r--include/timer3.h12
-rw-r--r--include/unk_0200BA78.h19
-rw-r--r--include/unk_0200CA44.h10
-rw-r--r--include/unk_02015E30.h6
-rw-r--r--include/unk_02016B94.h340
-rw-r--r--include/unk_02022504.h2
-rw-r--r--include/unk_02024E64.h20
-rw-r--r--include/unk_02025484.h2
-rw-r--r--include/unk_0202D858.h6
-rw-r--r--include/unk_0202F150.h180
-rw-r--r--include/unk_02031480.h40
-rw-r--r--include/unk_020337E8.h25
-rw-r--r--include/unk_0205FA2C.h42
-rw-r--r--include/unk_0206015C.h4
-rwxr-xr-xtools/asm_processor/asm_processor.py14
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(
+ &param0->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(&param0->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(&param0->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, &param1, 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(&param0->unk08[param1],
+ param2,
+ param3,
+ param4,
+ param5,
+ (u16 *)param6,
+ param7,
+ param8,
+ param9,
+ param10,
+ 0);
+ }
+ else
+ {
+ FUN_020183DC(&param0->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(&param0->unk08[param1],
+ param2,
+ param3,
+ param4,
+ param5,
+ (u16 *)param6,
+ param7,
+ param8,
+ param9,
+ param10,
+ 1);
+ }
+ else
+ {
+ FUN_020183DC(&param0->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(&param0->unk08[param1], param2, param3, param4, param5, param6, param7);
+ }
+ else
+ {
+ FUN_02018640(&param0->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(&param0->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(&param0->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(&param0->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 = &param2[(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: