summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clang-format2
-rw-r--r--README.md2
-rw-r--r--arm9/CMakeLists.txt2
-rw-r--r--arm9/arm9.lsf79
-rw-r--r--arm9/asm/CTRDG_flash_LE39FW512.s2
-rw-r--r--arm9/asm/CTRDG_flash_MX29L010.s2
-rw-r--r--arm9/asm/CTRDG_flash_MX29L512.s2
-rw-r--r--arm9/asm/CTRDG_flash_common.s2
-rw-r--r--arm9/asm/CTRDG_proc.s2
-rw-r--r--arm9/asm/CTRDG_task.s6
-rw-r--r--arm9/asm/DGT_hash1.s2
-rw-r--r--arm9/asm/DGT_hash2.s2
-rw-r--r--arm9/asm/MSL_ARM_abort_exit.s168
-rw-r--r--arm9/asm/MSL_ARM_critical_regions_NITRO.s19
-rw-r--r--arm9/asm/MSL_ARM_math.s21
-rw-r--r--arm9/asm/MSL_Common_ansi_files.s151
-rw-r--r--arm9/asm/MSL_Common_arith.s11
-rw-r--r--arm9/asm/MSL_Common_assert.s37
-rw-r--r--arm9/asm/MSL_Common_buffer_io.s119
-rw-r--r--arm9/asm/MSL_Common_ctype.s48
-rw-r--r--arm9/asm/MSL_Common_direct_io.s513
-rw-r--r--arm9/asm/MSL_Common_errno.s9
-rw-r--r--arm9/asm/MSL_Common_file_io.s113
-rw-r--r--arm9/asm/MSL_Common_file_pos.s372
-rw-r--r--arm9/asm/MSL_Common_float.s18
-rw-r--r--arm9/asm/MSL_Common_mbstring.s247
-rw-r--r--arm9/asm/MSL_Common_mem.s115
-rw-r--r--arm9/asm/MSL_Common_mem_funcs.s61
-rw-r--r--arm9/asm/MSL_Common_printf.s2607
-rw-r--r--arm9/asm/MSL_Common_qsort.s112
-rw-r--r--arm9/asm/MSL_Common_rand.s38
-rw-r--r--arm9/asm/MSL_Common_scanf.s1466
-rw-r--r--arm9/asm/MSL_Common_signal.s107
-rw-r--r--arm9/asm/MSL_Common_string.s364
-rw-r--r--arm9/asm/MSL_Common_strtold.s1436
-rw-r--r--arm9/asm/MSL_Common_strtoul.s743
-rw-r--r--arm9/asm/MSL_Common_wchar_io.s43
-rw-r--r--arm9/asm/MSL_Common_wctype.s61
-rw-r--r--arm9/asm/MSL_Common_wmem.s35
-rw-r--r--arm9/asm/MSL_Common_wprintf.s2367
-rw-r--r--arm9/asm/MSL_Common_wstring.s48
-rw-r--r--arm9/asm/MSL_DPMath_e_pow.s1193
-rw-r--r--arm9/asm/MSL_DPMath_s_copysign.s18
-rw-r--r--arm9/asm/MSL_DPMath_s_fabs.s16
-rw-r--r--arm9/asm/MSL_DPMath_s_frexp.s65
-rw-r--r--arm9/asm/MSL_DPMath_s_ldexp.s170
-rw-r--r--arm9/asm/MSL_DPMath_w_pow.s18
-rw-r--r--arm9/asm/MSL_fp_ansi.s1627
-rw-r--r--arm9/asm/MSL_math.s110
-rw-r--r--arm9/asm/MSL_string_extras.s46
-rw-r--r--arm9/asm/NNS_SND_sndarc_stream.s4
-rw-r--r--arm9/asm/RTC_external.s2
-rw-r--r--arm9/asm/RUNTIME_ARM_semihosted_console_io.s84
-rw-r--r--arm9/asm/RUNTIME_CPLUS_StaticInitializers.s60
-rw-r--r--arm9/asm/RUNTIME_NITRO_eabi_init.s17
-rw-r--r--arm9/asm/RUNTIME_d_add.s231
-rw-r--r--arm9/asm/RUNTIME_d_div.s333
-rw-r--r--arm9/asm/RUNTIME_d_dtof.s85
-rw-r--r--arm9/asm/RUNTIME_d_dtoi.s30
-rw-r--r--arm9/asm/RUNTIME_d_dtoull.s48
-rw-r--r--arm9/asm/RUNTIME_d_itod.s48
-rw-r--r--arm9/asm/RUNTIME_d_mul.s246
-rw-r--r--arm9/asm/RUNTIME_d_sqrt.s123
-rw-r--r--arm9/asm/RUNTIME_d_sub.s283
-rw-r--r--arm9/asm/RUNTIME_f_add.s165
-rw-r--r--arm9/asm/RUNTIME_f_cmp.s376
-rw-r--r--arm9/asm/RUNTIME_f_div.s225
-rw-r--r--arm9/asm/RUNTIME_f_ftod.s46
-rw-r--r--arm9/asm/RUNTIME_f_ftoi.s21
-rw-r--r--arm9/asm/RUNTIME_f_ftou.s25
-rw-r--r--arm9/asm/RUNTIME_f_itof.s51
-rw-r--r--arm9/asm/RUNTIME_f_mul.s147
-rw-r--r--arm9/asm/RUNTIME_f_sub.s195
-rw-r--r--arm9/asm/RUNTIME_ieee_status.s8
-rw-r--r--arm9/asm/RUNTIME_ll_div.s167
-rw-r--r--arm9/asm/RUNTIME_ll_mul.s15
-rw-r--r--arm9/asm/RUNTIME_ll_sll.s20
-rw-r--r--arm9/asm/RUNTIME_s32_div_f.s139
-rw-r--r--arm9/asm/RUNTIME_u32_div_f.s131
-rw-r--r--arm9/asm/SPI_tp.s2
-rw-r--r--arm9/asm/WM_dcf.s2
-rw-r--r--arm9/asm/WM_ds.s2
-rw-r--r--arm9/asm/WM_ks.s2
-rw-r--r--arm9/asm/WM_mp.s2
-rw-r--r--arm9/asm/WM_standard.s2
-rw-r--r--arm9/asm/WM_sync.s2
-rw-r--r--arm9/asm/WM_system.s2
-rw-r--r--arm9/asm/libc.s14430
-rw-r--r--arm9/asm/scrcmd_10.s4
-rw-r--r--arm9/asm/scrcmd_12.s4
-rw-r--r--arm9/asm/scrcmd_17.s4
-rw-r--r--arm9/asm/scrcmd_18.s1801
-rw-r--r--arm9/asm/scrcmd_3.s4
-rw-r--r--arm9/asm/scrcmd_5.s4
-rw-r--r--arm9/asm/scrcmd_7.s4
-rw-r--r--arm9/asm/scrcmd_9.s4
-rw-r--r--arm9/asm/scrcmd_asm.s4
-rw-r--r--arm9/asm/stdlibmwcc.s3175
-rw-r--r--arm9/asm/unk_02001B80.s22
-rw-r--r--arm9/asm/unk_020023C0.s1123
-rw-r--r--arm9/asm/unk_02002C14.s4
-rw-r--r--arm9/asm/unk_02002F08.s4
-rw-r--r--arm9/asm/unk_020030E8.s4
-rw-r--r--arm9/asm/unk_020051F4.s10
-rw-r--r--arm9/asm/unk_02005CFC.s4
-rw-r--r--arm9/asm/unk_02006D98.s4
-rw-r--r--arm9/asm/unk_02008AA4.s4
-rw-r--r--arm9/asm/unk_02008DEC.s4
-rw-r--r--arm9/asm/unk_02009EAC.s4
-rw-r--r--arm9/asm/unk_0200CABC.s232
-rw-r--r--arm9/asm/unk_0200E1D0.s4
-rw-r--r--arm9/asm/unk_0200E850.s4
-rw-r--r--arm9/asm/unk_0201137C.s4
-rw-r--r--arm9/asm/unk_02011744.s4
-rw-r--r--arm9/asm/unk_02012004.s4
-rw-r--r--arm9/asm/unk_02012944.s4
-rw-r--r--arm9/asm/unk_02012CC8.s6
-rw-r--r--arm9/asm/unk_02013CD4.s4
-rw-r--r--arm9/asm/unk_020142EC.s8
-rw-r--r--arm9/asm/unk_020144FC.s4
-rw-r--r--arm9/asm/unk_02014590.s16
-rw-r--r--arm9/asm/unk_02014BF4.s4
-rw-r--r--arm9/asm/unk_02015D14.s4
-rw-r--r--arm9/asm/unk_0201B1A8.s6
-rw-r--r--arm9/asm/unk_0201B4E8.s4
-rw-r--r--arm9/asm/unk_0201B6D0.s2
-rw-r--r--arm9/asm/unk_0201C24C.s2
-rw-r--r--arm9/asm/unk_0201C360.s2
-rw-r--r--arm9/asm/unk_0201C620.s2
-rw-r--r--arm9/asm/unk_0201C6B4.s2
-rw-r--r--arm9/asm/unk_0201C7A0.s2
-rw-r--r--arm9/asm/unk_0201CC08.s2
-rw-r--r--arm9/asm/unk_0201D040.s2
-rw-r--r--arm9/asm/unk_0201E00C.s2
-rw-r--r--arm9/asm/unk_0201E7D8.s2
-rw-r--r--arm9/asm/unk_0201F06C.s6
-rw-r--r--arm9/asm/unk_020208B8.s2
-rw-r--r--arm9/asm/unk_02020C44.s4
-rw-r--r--arm9/asm/unk_0202134C.s2
-rw-r--r--arm9/asm/unk_02021590.s2
-rw-r--r--arm9/asm/unk_02022244.s2
-rw-r--r--arm9/asm/unk_02022294.s2
-rw-r--r--arm9/asm/unk_020222E8.s2
-rw-r--r--arm9/asm/unk_02022318.s2
-rw-r--r--arm9/asm/unk_02022450.s2
-rw-r--r--arm9/asm/unk_02023AC4.s2
-rw-r--r--arm9/asm/unk_020250A4.s2
-rw-r--r--arm9/asm/unk_02025954.s2
-rw-r--r--arm9/asm/unk_02026CD0.s2
-rw-r--r--arm9/asm/unk_02027E30.s2
-rw-r--r--arm9/asm/unk_020281E0.s2
-rw-r--r--arm9/asm/unk_02028980.s2
-rw-r--r--arm9/asm/unk_02029A84.s2
-rw-r--r--arm9/asm/unk_02029AE0.s2
-rw-r--r--arm9/asm/unk_02029CEC.s2
-rw-r--r--arm9/asm/unk_02029FB0.s2
-rw-r--r--arm9/asm/unk_0202A924.s2
-rw-r--r--arm9/asm/unk_0202AC20.s2
-rw-r--r--arm9/asm/unk_0202B374.s2
-rw-r--r--arm9/asm/unk_0202B870.s2
-rw-r--r--arm9/asm/unk_0202BE98.s2
-rw-r--r--arm9/asm/unk_0202C198.s2
-rw-r--r--arm9/asm/unk_0202D394.s2
-rw-r--r--arm9/asm/unk_0202D4C4.s2
-rw-r--r--arm9/asm/unk_0202D8D0.s2
-rw-r--r--arm9/asm/unk_0202DB14.s2
-rw-r--r--arm9/asm/unk_020336C0.s2
-rw-r--r--arm9/asm/unk_02033874.s2
-rw-r--r--arm9/asm/unk_02033B68.s8
-rw-r--r--arm9/asm/unk_02033F50.s22
-rw-r--r--arm9/asm/unk_02034188.s40
-rw-r--r--arm9/asm/unk_020343A8.s2
-rw-r--r--arm9/asm/unk_02034A28.s2
-rw-r--r--arm9/asm/unk_02034D7C.s2
-rw-r--r--arm9/asm/unk_02034E84.s2
-rw-r--r--arm9/asm/unk_02034FE4.s2
-rw-r--r--arm9/asm/unk_02035068.s36
-rw-r--r--arm9/asm/unk_02036FA4.s2
-rw-r--r--arm9/asm/unk_02037024.s2
-rw-r--r--arm9/asm/unk_020372D4.s14
-rw-r--r--arm9/asm/unk_020377B0.s2
-rw-r--r--arm9/asm/unk_020377F0.s6
-rw-r--r--arm9/asm/unk_02038C78.s1448
-rw-r--r--arm9/asm/unk_02046030.s8
-rw-r--r--arm9/asm/unk_0204653C.s4
-rw-r--r--arm9/asm/unk_02047500.s4
-rw-r--r--arm9/asm/unk_020476CC.s4
-rw-r--r--arm9/asm/unk_02048120.s16
-rw-r--r--arm9/asm/unk_020484A8.s28
-rw-r--r--arm9/asm/unk_02048904.s12
-rw-r--r--arm9/asm/unk_0204A368.s4
-rw-r--r--arm9/asm/unk_0204A498.s4
-rw-r--r--arm9/asm/unk_0204AB0C.s4
-rw-r--r--arm9/asm/unk_0204ADE0.s4
-rw-r--r--arm9/asm/unk_0204AF24.s4
-rw-r--r--arm9/asm/unk_0204B34C.s4
-rw-r--r--arm9/asm/unk_0204B9EC.s4
-rw-r--r--arm9/asm/unk_0204C1B4.s8
-rw-r--r--arm9/asm/unk_0204CA80.s4
-rw-r--r--arm9/asm/unk_0204CB20.s12
-rw-r--r--arm9/asm/unk_0204FBA8.s8
-rw-r--r--arm9/asm/unk_02050E48.s38
-rw-r--r--arm9/asm/unk_020520AC.s8
-rw-r--r--arm9/asm/unk_02052EE8.s10
-rw-r--r--arm9/asm/unk_0205363C.s4
-rw-r--r--arm9/asm/unk_02053750.s18
-rw-r--r--arm9/asm/unk_0205478C.s4
-rw-r--r--arm9/asm/unk_02054C14.s4
-rw-r--r--arm9/asm/unk_02055068.s4
-rw-r--r--arm9/asm/unk_020557F4.s40
-rw-r--r--arm9/asm/unk_02057380.s4
-rw-r--r--arm9/asm/unk_02058EE8.s4
-rw-r--r--arm9/asm/unk_02059F04.s4
-rw-r--r--arm9/asm/unk_0205AD98.s8
-rw-r--r--arm9/asm/unk_0205BEF8.s4
-rw-r--r--arm9/asm/unk_0205C334.s4
-rw-r--r--arm9/asm/unk_0205C598.s4
-rw-r--r--arm9/asm/unk_0205CDB4.s4
-rw-r--r--arm9/asm/unk_0205CE48.s6
-rw-r--r--arm9/asm/unk_0205DD18.s4
-rw-r--r--arm9/asm/unk_0205E4EC.s4
-rw-r--r--arm9/asm/unk_0205EB38.s4
-rw-r--r--arm9/asm/unk_0205EC84.s906
-rw-r--r--arm9/asm/unk_0205F314.s4
-rw-r--r--arm9/asm/unk_0205F7A0.s4
-rw-r--r--arm9/asm/unk_02060344.s4
-rw-r--r--arm9/asm/unk_020603B0.s4
-rw-r--r--arm9/asm/unk_020606B0.s4
-rw-r--r--arm9/asm/unk_020607D4.s8
-rw-r--r--arm9/asm/unk_02060CCC.s4
-rw-r--r--arm9/asm/unk_020625EC.s66
-rw-r--r--arm9/asm/unk_0206367C.s4
-rw-r--r--arm9/asm/unk_02063888.s4
-rw-r--r--arm9/asm/unk_02063948.s4
-rw-r--r--arm9/asm/unk_020643C0.s4
-rw-r--r--arm9/asm/unk_020647A4.s12
-rw-r--r--arm9/asm/unk_02064CA8.s4
-rw-r--r--arm9/asm/unk_02064E20.s4
-rw-r--r--arm9/asm/unk_02064E90.s4
-rw-r--r--arm9/asm/unk_020653EC.s56
-rw-r--r--arm9/asm/unk_02066840.s4
-rw-r--r--arm9/asm/unk_0206BB5C.s4
-rw-r--r--arm9/asm/unk_0206BF90.s4
-rw-r--r--arm9/asm/unk_0206C700.s54
-rw-r--r--arm9/asm/unk_0206DE24.s4
-rw-r--r--arm9/asm/unk_0206E0F0.s4
-rw-r--r--arm9/asm/unk_0206E2F0.s375
-rw-r--r--arm9/asm/unk_0206F1F0.s6
-rw-r--r--arm9/asm/unk_0206F3FC.s160
-rw-r--r--arm9/asm/unk_02072548.s112
-rw-r--r--arm9/asm/unk_02073710.s4
-rw-r--r--arm9/asm/unk_02073DA8.s36
-rw-r--r--arm9/asm/unk_0207550C.s22
-rw-r--r--arm9/asm/unk_020772F0.s120
-rw-r--r--arm9/asm/unk_020799E8.s14
-rw-r--r--arm9/asm/unk_02079C70.s242
-rw-r--r--arm9/asm/unk_0207C328.s6
-rw-r--r--arm9/asm/unk_0207D5BC.s190
-rw-r--r--arm9/asm/unk_0207EF6C.s4
-rw-r--r--arm9/asm/unk_0207F95C.s18
-rw-r--r--arm9/asm/unk_0207FD00.s4
-rw-r--r--arm9/asm/unk_02080C38.s10
-rw-r--r--arm9/asm/unk_020828BC.s10
-rw-r--r--arm9/asm/unk_020834D0.s4
-rw-r--r--arm9/asm/unk_02083B84.s4
-rw-r--r--arm9/asm/unk_02083D48.s4
-rw-r--r--arm9/asm/unk_02084098.s6
-rw-r--r--arm9/asm/unk_020842D0.s4
-rw-r--r--arm9/asm/unk_020851B8.s102
-rw-r--r--arm9/asm/unk_02085338.s286
-rw-r--r--arm9/asm/unk_020854E0.s8
-rw-r--r--arm9/asm/unk_020859C0.s24
-rw-r--r--arm9/asm/unk_02086084.s18
-rw-r--r--arm9/asm/unk_02086414.s36
-rw-r--r--arm9/asm/unk_02086FA8.s20
-rw-r--r--arm9/asm/unk_02087A6C.s4
-rw-r--r--arm9/asm/unk_02087D00.s8
-rw-r--r--arm9/asm/unk_02088320.s4
-rw-r--r--arm9/asm/unk_02088814.s4
-rw-r--r--arm9/asm/unk_02088858.s8
-rw-r--r--arm9/asm/unk_0208898C.s8
-rw-r--r--arm9/asm/unk_02088AAC.s345
-rw-r--r--arm9/asm/unk_02088D1C.s4
-rw-r--r--arm9/asm/unk_02088DD8.s4
-rw-r--r--arm9/asm/unk_02088F0C.s4
-rw-r--r--arm9/asm/unk_020893E0.s4
-rw-r--r--arm9/asm/unk_02089498.s50
-rw-r--r--arm9/asm/unk_02089960.s54
-rw-r--r--arm9/asm/unk_02089D90.s22
-rw-r--r--arm9/asm/unk_02089F24.s40
-rw-r--r--arm9/asm/unk_0208A258.s4
-rw-r--r--arm9/asm/unk_0208A338.s36
-rw-r--r--arm9/global.inc303
-rw-r--r--arm9/lib/include/GX_bgcnt.h414
-rw-r--r--arm9/lib/include/GX_g2.h80
-rw-r--r--arm9/lib/include/GX_vramcnt.h24
-rw-r--r--arm9/lib/include/NNS_FND_allocator.h34
-rw-r--r--arm9/lib/include/NNS_FND_expheap.h55
-rw-r--r--arm9/lib/include/NNS_FND_heapcommon.h26
-rw-r--r--arm9/lib/include/NNS_FND_list.h20
-rw-r--r--arm9/lib/include/OS_interrupt.h2
-rw-r--r--arm9/lib/include/OS_irqHandler.h2
-rw-r--r--arm9/lib/include/consts.h1
-rw-r--r--arm9/lib/include/fx.h3
-rw-r--r--arm9/lib/include/gx.h68
-rw-r--r--arm9/lib/include/registers.h413
-rw-r--r--arm9/lib/include/tp.h8
-rw-r--r--arm9/lib/src/GX.c52
-rw-r--r--arm9/lib/src/GX_g2.c10
-rw-r--r--arm9/lib/src/GX_load2d.c4
-rw-r--r--arm9/lib/src/GX_vramcnt.c88
-rw-r--r--arm9/modules/04/asm/arm_04.s64
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s34
-rw-r--r--arm9/modules/05/asm/mod05_021D80E8.s8
-rw-r--r--arm9/modules/05/asm/mod05_021D9320.s4
-rw-r--r--arm9/modules/05/asm/mod05_021D9A48.s4
-rw-r--r--arm9/modules/05/asm/mod05_021DA5B8.s4
-rw-r--r--arm9/modules/05/asm/mod05_021DB44C.s2
-rw-r--r--arm9/modules/05/asm/mod05_021DBEF4.s4
-rw-r--r--arm9/modules/05/asm/mod05_021DC0B8.s18
-rw-r--r--arm9/modules/05/asm/mod05_021E1374.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E1AD8.s42
-rw-r--r--arm9/modules/05/asm/mod05_021E2E88.s20
-rw-r--r--arm9/modules/05/asm/mod05_021E3444.s28
-rw-r--r--arm9/modules/05/asm/mod05_021E4AE4.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E5AB4.s2
-rw-r--r--arm9/modules/05/asm/mod05_021E5FD8.s16
-rw-r--r--arm9/modules/05/asm/mod05_021E7504.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E779C.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E80F8.s30
-rw-r--r--arm9/modules/05/asm/mod05_021E8310.s4
-rw-r--r--arm9/modules/05/asm/module_05.s120
-rw-r--r--arm9/modules/05/src/mod05_021E72FC.c4
-rw-r--r--arm9/modules/06/asm/module_06.s361
-rw-r--r--arm9/modules/07/asm/module_07.s156
-rw-r--r--arm9/modules/08/asm/module_08.s238
-rw-r--r--arm9/modules/09/asm/module_09.s360
-rw-r--r--arm9/modules/11/asm/module_11_thumb1.s72
-rw-r--r--arm9/modules/11/asm/module_11_thumb2.s210
-rw-r--r--arm9/modules/12/asm/module_12.s496
-rw-r--r--arm9/modules/13/asm/module_13_arm2.s20
-rw-r--r--arm9/modules/14/asm/module_14.s519
-rw-r--r--arm9/modules/15/asm/module_15.s250
-rw-r--r--arm9/modules/16/asm/module_16.s472
-rw-r--r--arm9/modules/17/asm/module_17.s208
-rw-r--r--arm9/modules/18/asm/module_18.s453
-rw-r--r--arm9/modules/19/asm/module_19.s111
-rw-r--r--arm9/modules/19/src/module_19.c47
-rw-r--r--arm9/modules/20/asm/module_20.s90
-rw-r--r--arm9/modules/21/src/mod21_02254A6C.c24
-rw-r--r--arm9/modules/22/asm/module_22.s26
-rw-r--r--arm9/modules/23/asm/module_23.s36
-rw-r--r--arm9/modules/24/asm/module_24.s38
-rw-r--r--arm9/modules/25/asm/module_25.s8
-rw-r--r--arm9/modules/26/asm/module_26.s12
-rw-r--r--arm9/modules/27/asm/module_27.s36
-rw-r--r--arm9/modules/28/asm/module_28.s8
-rw-r--r--arm9/modules/29/asm/module_29.s6
-rw-r--r--arm9/modules/30/asm/module_30.s6
-rw-r--r--arm9/modules/31/asm/module_31.s6
-rw-r--r--arm9/modules/32/asm/module_32.s6
-rw-r--r--arm9/modules/33/asm/module_33.s8
-rw-r--r--arm9/modules/34/asm/module_34.s12
-rw-r--r--arm9/modules/35/asm/module_35.s6
-rw-r--r--arm9/modules/36/asm/module_36.s32
-rw-r--r--arm9/modules/37/asm/module_37.s6
-rw-r--r--arm9/modules/38/asm/module_38.s34
-rw-r--r--arm9/modules/39/asm/module_39.s6
-rw-r--r--arm9/modules/40/asm/module_40.s6
-rw-r--r--arm9/modules/41/asm/module_41.s6
-rw-r--r--arm9/modules/42/asm/module_42.s6
-rw-r--r--arm9/modules/43/asm/module_43.s14
-rw-r--r--arm9/modules/44/asm/module_44.s6
-rw-r--r--arm9/modules/45/asm/module_45.s28
-rw-r--r--arm9/modules/46/asm/module_46.s8
-rw-r--r--arm9/modules/47/asm/module_47.s22
-rw-r--r--arm9/modules/48/asm/module_48.s4
-rw-r--r--arm9/modules/49/asm/module_49.s18
-rw-r--r--arm9/modules/50/asm/module_50.s10
-rw-r--r--arm9/modules/51/asm/module_51.s71
-rw-r--r--arm9/modules/52/src/module_52.c12
-rw-r--r--arm9/modules/53/asm/module_53.s78
-rw-r--r--arm9/modules/54/asm/module_54.s74
-rw-r--r--arm9/modules/55/asm/module_55.s288
-rw-r--r--arm9/modules/56/asm/module_56.s290
-rw-r--r--arm9/modules/57/asm/module_57.s94
-rw-r--r--arm9/modules/58/asm/module_58.s72
-rw-r--r--arm9/modules/59/asm/mod59_021D74E0_asm.s551
-rw-r--r--arm9/modules/59/asm/mod59_021D9868.s64
-rw-r--r--arm9/modules/59/include/mod59_021D74E0.h24
-rw-r--r--arm9/modules/59/src/mod59_021D74E0_src.c188
-rw-r--r--arm9/modules/60/asm/module_60.s72
-rw-r--r--arm9/modules/61/asm/module_61.s102
-rw-r--r--arm9/modules/62/asm/module_62.s108
-rw-r--r--arm9/modules/63/asm/mod63_021D74E0.s58
-rw-r--r--arm9/modules/63/asm/mod63_021D8890.s108
-rw-r--r--arm9/modules/64/asm/module_64.s56
-rw-r--r--arm9/modules/65/asm/module_65.s86
-rw-r--r--arm9/modules/66/asm/module_66.s194
-rw-r--r--arm9/modules/67/asm/module_67.s90
-rw-r--r--arm9/modules/68/asm/module_68.s54
-rw-r--r--arm9/modules/69/asm/module_69.s48
-rw-r--r--arm9/modules/70/asm/module_70.s48
-rw-r--r--arm9/modules/71/asm/module_71.s238
-rw-r--r--arm9/modules/73/asm/module_73.s114
-rw-r--r--arm9/modules/74/asm/module_74.s32
-rw-r--r--arm9/modules/75/asm/module_75.s258
-rw-r--r--arm9/modules/76/asm/module_76.s128
-rw-r--r--arm9/modules/77/asm/module_77.s80
-rw-r--r--arm9/modules/78/asm/module_78.s8
-rw-r--r--arm9/modules/79/asm/module_79_arm.s10
-rw-r--r--arm9/modules/80/asm/module_80.s537
-rw-r--r--arm9/modules/81/asm/module_81.s243
-rw-r--r--arm9/modules/82/asm/module_82.s83
-rw-r--r--arm9/modules/83/asm/module_83.s461
-rw-r--r--arm9/modules/84/asm/module_84_thumb1.s18
-rw-r--r--arm9/modules/84/asm/module_84_thumb2.s104
-rw-r--r--arm9/modules/85/asm/module_85.s120
-rw-r--r--arm9/modules/86/asm/module_86.s120
-rw-r--r--arm9/src/GX_layers.c37
-rw-r--r--arm9/src/bag.c25
-rw-r--r--arm9/src/bag_view.c210
-rw-r--r--arm9/src/bg_window.c5456
-rw-r--r--arm9/src/error_message_reset.c121
-rw-r--r--arm9/src/filesystem.c30
-rw-r--r--arm9/src/game_init.c284
-rw-r--r--arm9/src/gf_gfx_loader.c42
-rw-r--r--arm9/src/heap.c363
-rw-r--r--arm9/src/mail_message.c13
-rw-r--r--arm9/src/main.c13
-rw-r--r--arm9/src/options.c6
-rw-r--r--arm9/src/player_data.c4
-rw-r--r--arm9/src/poke_overlay.c19
-rw-r--r--arm9/src/render_text.c502
-rw-r--r--arm9/src/scrcmd.c14
-rw-r--r--arm9/src/scrcmd_18_c.c22
-rw-r--r--arm9/src/scrcmd_24.c140
-rw-r--r--arm9/src/scrcmd_party.c815
-rw-r--r--arm9/src/scrcmd_sound.c5
-rw-r--r--arm9/src/script.c2
-rw-r--r--arm9/src/script_pokemon_util.c2
-rw-r--r--arm9/src/text_02054590.c33
-rw-r--r--arm9/src/timer3.c46
-rw-r--r--arm9/src/unk_0200BB14.c44
-rw-r--r--arm9/src/unk_02016B94.c8110
-rw-r--r--arm9/src/unk_0201B8B8.c4
-rw-r--r--arm9/src/unk_0202E29C.c2
-rw-r--r--arm9/src/unk_0202F150.c13
-rw-r--r--arm9/src/unk_02031734.c46
-rw-r--r--arm9/src/unk_0205EC84.c436
-rw-r--r--arm9/src/unk_0206015C.c6
-rw-r--r--arm9/src/unk_020851B8.c45
-rw-r--r--arm9/src/unk_02085338.c165
-rw-r--r--arm9/src/unk_02088AAC.c185
-rw-r--r--files/data/mmodel/fldeff/narc_0012.NSBTX (renamed from files/data/mmodel/fldeff/narc_0012.bin)bin1360 -> 1360 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0013.NSBTX (renamed from files/data/mmodel/fldeff/narc_0013.bin)bin308 -> 308 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0014.NSBTX (renamed from files/data/mmodel/fldeff/narc_0014.bin)bin744 -> 744 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0015.NSBMD (renamed from files/data/mmodel/fldeff/narc_0015.bin)bin1052 -> 1052 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0016.NSBMD (renamed from files/data/mmodel/fldeff/narc_0016.bin)bin1068 -> 1068 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0017.NSBMD (renamed from files/data/mmodel/fldeff/narc_0017.bin)bin792 -> 792 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0018.NSBMD (renamed from files/data/mmodel/fldeff/narc_0018.bin)bin704 -> 704 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0019.NSBMD (renamed from files/data/mmodel/fldeff/narc_0019.bin)bin704 -> 704 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0020.NSBMD (renamed from files/data/mmodel/fldeff/narc_0020.bin)bin1168 -> 1168 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0021.NSBMD (renamed from files/data/mmodel/fldeff/narc_0021.bin)bin768 -> 768 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0022.NSBMD (renamed from files/data/mmodel/fldeff/narc_0022.bin)bin780 -> 780 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0023.NSBMD (renamed from files/data/mmodel/fldeff/narc_0023.bin)bin780 -> 780 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0024.NSBMD (renamed from files/data/mmodel/fldeff/narc_0024.bin)bin780 -> 780 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0025.NSBMD (renamed from files/data/mmodel/fldeff/narc_0025.bin)bin704 -> 704 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0026.NSBMD (renamed from files/data/mmodel/fldeff/narc_0026.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0027.NSBMD (renamed from files/data/mmodel/fldeff/narc_0027.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0028.NSBMD (renamed from files/data/mmodel/fldeff/narc_0028.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0029.NSBMD (renamed from files/data/mmodel/fldeff/narc_0029.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0030.NSBMD (renamed from files/data/mmodel/fldeff/narc_0030.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0031.NSBMD (renamed from files/data/mmodel/fldeff/narc_0031.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0032.NSBMD (renamed from files/data/mmodel/fldeff/narc_0032.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0033.NSBMD (renamed from files/data/mmodel/fldeff/narc_0033.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0034.NSBMD (renamed from files/data/mmodel/fldeff/narc_0034.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0035.NSBMD (renamed from files/data/mmodel/fldeff/narc_0035.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0036.NSBMD (renamed from files/data/mmodel/fldeff/narc_0036.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0037.NSBMD (renamed from files/data/mmodel/fldeff/narc_0037.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0038.NSBMD (renamed from files/data/mmodel/fldeff/narc_0038.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0039.NSBMD (renamed from files/data/mmodel/fldeff/narc_0039.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0040.NSBMD (renamed from files/data/mmodel/fldeff/narc_0040.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0041.NSBMD (renamed from files/data/mmodel/fldeff/narc_0041.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0042.NSBMD (renamed from files/data/mmodel/fldeff/narc_0042.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0043.NSBMD (renamed from files/data/mmodel/fldeff/narc_0043.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0044.NSBMD (renamed from files/data/mmodel/fldeff/narc_0044.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0045.NSBMD (renamed from files/data/mmodel/fldeff/narc_0045.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0046.NSBMD (renamed from files/data/mmodel/fldeff/narc_0046.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0047.NSBMD (renamed from files/data/mmodel/fldeff/narc_0047.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0048.NSBMD (renamed from files/data/mmodel/fldeff/narc_0048.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0049.NSBMD (renamed from files/data/mmodel/fldeff/narc_0049.bin)bin780 -> 780 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0050.NSBMD (renamed from files/data/mmodel/fldeff/narc_0050.bin)bin780 -> 780 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0051.NSBMD (renamed from files/data/mmodel/fldeff/narc_0051.bin)bin780 -> 780 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0052.NSBMD (renamed from files/data/mmodel/fldeff/narc_0052.bin)bin780 -> 780 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0053.NSBMD (renamed from files/data/mmodel/fldeff/narc_0053.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0054.NSBMD (renamed from files/data/mmodel/fldeff/narc_0054.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0055.NSBMD (renamed from files/data/mmodel/fldeff/narc_0055.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0056.NSBMD (renamed from files/data/mmodel/fldeff/narc_0056.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0057.NSBMD (renamed from files/data/mmodel/fldeff/narc_0057.bin)bin796 -> 796 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0058.NSBMD (renamed from files/data/mmodel/fldeff/narc_0058.bin)bin2772 -> 2772 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0059.NSBMD (renamed from files/data/mmodel/fldeff/narc_0059.bin)bin704 -> 704 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0103.NSBMD (renamed from files/data/mmodel/fldeff/narc_0103.bin)bin704 -> 704 bytes
-rw-r--r--files/data/mmodel/fldeff/narc_0104.NSBMD (renamed from files/data/mmodel/fldeff/narc_0104.bin)bin704 -> 704 bytes
-rw-r--r--files/data/mmodel/mmodel/narc_0001.NSBTX (renamed from files/data/mmodel/mmodel/narc_0001.bin)bin6760 -> 6760 bytes
-rw-r--r--files/data/mmodel/mmodel/narc_0002.NSBTX (renamed from files/data/mmodel/mmodel/narc_0002.bin)bin6760 -> 6760 bytes
-rw-r--r--files/data/mmodel/mmodel/narc_0003.NSBTX (renamed from files/data/mmodel/mmodel/narc_0003.bin)bin6760 -> 6760 bytes
-rw-r--r--files/data/mmodel/mmodel/narc_0004.NSBTX (renamed from files/data/mmodel/mmodel/narc_0004.bin)bin6760 -> 6760 bytes
-rw-r--r--files/data/mmodel/mmodel/narc_0005.NSBTX (renamed from files/data/mmodel/mmodel/narc_0005.bin)bin6760 -> 6760 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0000.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0000.bin)bin65776 -> 65776 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0001.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0001.bin)bin25156 -> 25156 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0002.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0002.bin)bin74308 -> 74308 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0003.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0003.bin)bin34448 -> 34448 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0004.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0004.bin)bin46908 -> 46908 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0005.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0005.bin)bin38840 -> 38840 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0006.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0006.bin)bin38376 -> 38376 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0007.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0007.bin)bin37892 -> 37892 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0008.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0008.bin)bin32740 -> 32740 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0009.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0009.bin)bin36648 -> 36648 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0010.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0010.bin)bin33560 -> 33560 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0011.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0011.bin)bin27556 -> 27556 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0012.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0012.bin)bin23728 -> 23728 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0013.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0013.bin)bin20276 -> 20276 bytes
-rw-r--r--files/fielddata/areadata/area_build_model/areabm_texset/narc_0014.NSBTX (renamed from files/fielddata/areadata/area_build_model/areabm_texset/narc_0014.bin)bin30868 -> 30868 bytes
-rw-r--r--files/fielddata/areadata/area_map_tex/map_tex_set/narc_0000.NSBTX (renamed from files/fielddata/areadata/area_map_tex/map_tex_set/narc_0000.bin)bin23448 -> 23448 bytes
-rw-r--r--files/fielddata/areadata/area_map_tex/map_tex_set/narc_0001.NSBTX (renamed from files/fielddata/areadata/area_map_tex/map_tex_set/narc_0001.bin)bin8204 -> 8204 bytes
-rw-r--r--files/fielddata/build_model/build_model/narc_0000.NSBMD (renamed from files/fielddata/build_model/build_model/narc_0000.bin)bin1900 -> 1900 bytes
-rw-r--r--files/fielddata/build_model/build_model/narc_0001.NSMBD (renamed from files/fielddata/build_model/build_model/narc_0001.bin)bin2836 -> 2836 bytes
-rw-r--r--files/fielddata/build_model/build_model/narc_0002.NSBMD (renamed from files/fielddata/build_model/build_model/narc_0002.bin)bin784 -> 784 bytes
-rw-r--r--files/fielddata/build_model/build_model/narc_0003.NSBMD (renamed from files/fielddata/build_model/build_model/narc_0003.bin)bin4636 -> 4636 bytes
-rw-r--r--files/fielddata/build_model/build_model/narc_0004.NSBMD (renamed from files/fielddata/build_model/build_model/narc_0004.bin)bin9816 -> 9816 bytes
-rw-r--r--files/fielddata/build_model/build_model/narc_0005.NSBMD (renamed from files/fielddata/build_model/build_model/narc_0005.bin)bin8292 -> 8292 bytes
-rw-r--r--files/fielddata/build_model/build_model/narc_0006.NSBMD (renamed from files/fielddata/build_model/build_model/narc_0006.bin)bin2772 -> 2772 bytes
-rw-r--r--files/graphic/demo_trade/narc_0027.NSBMD (renamed from files/graphic/demo_trade/narc_0027.bin)bin8632 -> 8632 bytes
-rw-r--r--files/graphic/ending/narc_0000.NSBMD (renamed from files/graphic/ending/narc_0000.bin)bin8024 -> 8024 bytes
-rw-r--r--files/graphic/ending/narc_0001.NSBMD (renamed from files/graphic/ending/narc_0001.bin)bin8024 -> 8024 bytes
-rw-r--r--files/graphic/ending/narc_0002.NSBMD (renamed from files/graphic/ending/narc_0002.bin)bin7996 -> 7996 bytes
-rw-r--r--files/graphic/ending/narc_0003.NSBTA (renamed from files/graphic/ending/narc_0003.bin)bin1292 -> 1292 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0000.NSBCA (renamed from files/graphic/ev_pokeselect/narc_0000.bin)bin6100 -> 6100 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0001.NSBMD (renamed from files/graphic/ev_pokeselect/narc_0001.bin)bin54124 -> 54124 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0002.NSBCA (renamed from files/graphic/ev_pokeselect/narc_0002.bin)bin772 -> 772 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0003.NSBMD (renamed from files/graphic/ev_pokeselect/narc_0003.bin)bin9780 -> 9780 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0004.NSBCA (renamed from files/graphic/ev_pokeselect/narc_0004.bin)bin772 -> 772 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0005.NSBMD (renamed from files/graphic/ev_pokeselect/narc_0005.bin)bin9868 -> 9868 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0006.NSBCA (renamed from files/graphic/ev_pokeselect/narc_0006.bin)bin772 -> 772 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0007.NSBMD (renamed from files/graphic/ev_pokeselect/narc_0007.bin)bin9860 -> 9860 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0008.NSBMD (renamed from files/graphic/ev_pokeselect/narc_0008.bin)bin31748 -> 31748 bytes
-rw-r--r--files/graphic/ev_pokeselect/narc_0009.NSBMD (renamed from files/graphic/ev_pokeselect/narc_0009.bin)bin5352 -> 5352 bytes
-rw-r--r--files/graphic/hiden_effect/narc_0000.NSBCA (renamed from files/graphic/hiden_effect/narc_0000.bin)bin4740 -> 4740 bytes
-rw-r--r--files/graphic/hiden_effect/narc_0001.NSBMA (renamed from files/graphic/hiden_effect/narc_0001.bin)bin520 -> 520 bytes
-rw-r--r--files/graphic/hiden_effect/narc_0002.NSBTA (renamed from files/graphic/hiden_effect/narc_0002.bin)bin860 -> 860 bytes
-rw-r--r--files/graphic/hiden_effect/narc_0003.NSBMD (renamed from files/graphic/hiden_effect/narc_0003.bin)bin4248 -> 4248 bytes
-rw-r--r--files/graphic/poketch/.knarcignore2
-rw-r--r--files/graphic/poketch/narc_0010.binbin501 -> 0 bytes
-rw-r--r--files/graphic/poketch/narc_0010.pngbin0 -> 435 bytes
-rw-r--r--files/graphic/poketch/narc_0011.NSCRbin435 -> 1572 bytes
-rw-r--r--filesystem.mk4
-rw-r--r--graphics_rules.mk3
-rw-r--r--include/GX_layers.h15
-rw-r--r--include/bag.h8
-rw-r--r--include/bag_view.h56
-rw-r--r--include/bg_window.h424
-rw-r--r--include/game_init.h30
-rw-r--r--include/gf_gfx_loader.h17
-rw-r--r--include/heap.h40
-rw-r--r--include/list_menu_cursor.h2
-rw-r--r--include/mail_message.h2
-rw-r--r--include/main.h30
-rw-r--r--include/player_data.h10
-rw-r--r--include/render_text.h48
-rw-r--r--include/scrcmd.h36
-rw-r--r--include/script.h4
-rw-r--r--include/script_buffers.h2
-rw-r--r--include/text.h2
-rw-r--r--include/text_02054590.h8
-rw-r--r--include/timer3.h6
-rw-r--r--include/unk_02016B94.h340
-rw-r--r--include/unk_0201B8B8.h4
-rw-r--r--include/unk_0205EC84.h58
-rw-r--r--include/unk_020851B8.h19
-rw-r--r--include/unk_02085338.h47
-rw-r--r--include/unk_02088AAC.h31
582 files changed, 35819 insertions, 39330 deletions
diff --git a/.clang-format b/.clang-format
index e78d3daf..6f287c3c 100644
--- a/.clang-format
+++ b/.clang-format
@@ -8,7 +8,7 @@ TabWidth: 4
AlignAfterOpenBracket: DontAlign
Cpp11BracedListStyle: false
BreakStringLiterals: false
-IndentCaseLabels: false
+IndentCaseLabels: true
BinPackArguments: false
BinPackParameters: false
AlignTrailingComments: false
diff --git a/README.md b/README.md
index 2f6255c0..41855803 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Pokémon Diamond
-[![Build Status](https://travis-ci.com/pret/pokediamond.svg?branch=master)](https://travis-ci.com/pret/pokediamond)
+[![build](https://github.com/pret/pokediamond/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/pret/pokediamond/actions/workflows/build.yml)
This is a decompilation of Pokémon Diamond.
diff --git a/arm9/CMakeLists.txt b/arm9/CMakeLists.txt
index 0de93feb..8bdaeba1 100644
--- a/arm9/CMakeLists.txt
+++ b/arm9/CMakeLists.txt
@@ -11,7 +11,7 @@ enable_language(ASM)
add_compile_options(-fms-extensions)
-file(GLOB_RECURSE SOURCES "*.c" "*.cpp")
+file(GLOB_RECURSE SOURCES "*.c" "*.cpp" "*.s")
file(GLOB MODULE_INC modules/*/include)
add_executable(DP_Arm9 ${SOURCES})
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index fa609048..19c29a3c 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -9,7 +9,7 @@ Static arm9
Object list_menu.o
Object unk_02001B80.o
Object string_util.o
- Object unk_020023C0.o
+ Object render_text.o
Object unk_02002C14.o
Object unk_02002F08.o
Object unk_020030E8.o
@@ -53,7 +53,7 @@ Static arm9
Object unk_02015E30.o
Object game_init.o
Object heap.o
- Object unk_02016B94.o
+ Object bg_window.o
Object unk_0201B1A8.o
Object unk_0201B4E8.o
Object unk_0201B6D0.o
@@ -173,8 +173,7 @@ Static arm9
Object scrcmd_money.o
Object scrcmd_daycare.o
Object scrcmd_17.o
- Object scrcmd_18_c.o
- Object scrcmd_18.o
+ Object scrcmd_party.o
Object scrcmd_fossils.o
Object scrcmd_prizes.o
Object scrcmd_flags.o
@@ -265,7 +264,7 @@ Static arm9
Object unk_0206C700.o
Object unk_0206DE24.o
Object unk_0206E0F0.o
- Object unk_0206E2F0.o
+ Object bag_view.o
##itemtool##
Object itemtool.o
@@ -545,8 +544,72 @@ Static arm9
Object MATH_crc.o
Object STD_string.o
### Standard libraries ###
- Object libc.o
- Object stdlibmwcc.o
+ ### Bundled with CodeWarrior, so probably compiled with 2.0sp1 ###
+ Object MSL_ARM_abort_exit.o
+ Object MSL_ARM_critical_regions_NITRO.o
+ Object MSL_ARM_math.o
+ Object MSL_Common_ansi_files.o
+ Object MSL_Common_arith.o
+ Object MSL_Common_assert.o
+ Object MSL_Common_buffer_io.o
+ Object MSL_Common_ctype.o
+ Object MSL_Common_direct_io.o
+ Object MSL_Common_errno.o
+ Object MSL_Common_file_io.o
+ Object MSL_Common_file_pos.o
+ Object MSL_Common_float.o
+ Object MSL_Common_mbstring.o
+ Object MSL_Common_mem.o
+ Object MSL_Common_mem_funcs.o
+ Object MSL_Common_printf.o
+ Object MSL_Common_qsort.o
+ Object MSL_Common_rand.o
+ Object MSL_Common_scanf.o
+ Object MSL_Common_signal.o
+ Object MSL_Common_string.o
+ Object MSL_Common_strtold.o
+ Object MSL_Common_strtoul.o
+ Object MSL_Common_wchar_io.o
+ Object MSL_Common_wctype.o
+ Object MSL_Common_wmem.o
+ Object MSL_Common_wprintf.o
+ Object MSL_Common_wstring.o
+ Object MSL_DPMath_e_pow.o
+ Object MSL_DPMath_s_copysign.o
+ Object MSL_DPMath_s_fabs.o
+ Object MSL_DPMath_s_frexp.o
+ Object MSL_DPMath_s_ldexp.o
+ Object MSL_DPMath_w_pow.o
+ Object MSL_fp_ansi.o
+ Object MSL_math.o
+ Object MSL_string_extras.o
+ Object RUNTIME_d_add.o
+ Object RUNTIME_d_dtof.o
+ Object RUNTIME_d_dtoi.o
+ Object RUNTIME_d_dtoull.o
+ Object RUNTIME_d_itod.o
+ Object RUNTIME_d_mul.o
+ Object RUNTIME_d_sqrt.o
+ Object RUNTIME_d_sub.o
+ Object RUNTIME_f_add.o
+ Object RUNTIME_f_cmp.o
+ Object RUNTIME_f_div.o
+ Object RUNTIME_f_ftod.o
+ Object RUNTIME_f_ftoi.o
+ Object RUNTIME_f_ftou.o
+ Object RUNTIME_f_itof.o
+ Object RUNTIME_f_mul.o
+ Object RUNTIME_f_sub.o
+ Object RUNTIME_ll_div.o
+ Object RUNTIME_ll_mul.o
+ Object RUNTIME_ll_sll.o
+ Object RUNTIME_s32_div_f.o
+ Object RUNTIME_u32_div_f.o
+ Object RUNTIME_d_div.o
+ Object RUNTIME_ieee_status.o
+ Object RUNTIME_ARM_semihosted_console_io.o
+ Object RUNTIME_CPLUS_StaticInitializers.o
+ Object RUNTIME_NITRO_eabi_init.o
}
Autoload ITCM
@@ -730,7 +793,7 @@ Overlay MODULE_18
Overlay MODULE_19
{
- ##Overworld (models?)##
+ ##Bottom screen before Pokétch##
After MODULE_06
Object module_19.o
}
diff --git a/arm9/asm/CTRDG_flash_LE39FW512.s b/arm9/asm/CTRDG_flash_LE39FW512.s
index 8b249e96..6f964d91 100644
--- a/arm9/asm/CTRDG_flash_LE39FW512.s
+++ b/arm9/asm/CTRDG_flash_LE39FW512.s
@@ -40,7 +40,7 @@ LE39FW512: ; 0x0210410C
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xD4, 0x00
- .text
+ .text
arm_func_start CTRDGi_WriteFlashSectorAsyncLE
CTRDGi_WriteFlashSectorAsyncLE: ; 0x020DCC9C
diff --git a/arm9/asm/CTRDG_flash_MX29L010.s b/arm9/asm/CTRDG_flash_MX29L010.s
index 39f792cc..9d7cd2aa 100644
--- a/arm9/asm/CTRDG_flash_MX29L010.s
+++ b/arm9/asm/CTRDG_flash_MX29L010.s
@@ -40,7 +40,7 @@ defaultFlash1M: ; 0x0210418C
.byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .text
+ .text
arm_func_start CTRDGi_WriteFlashSectorAsyncMX
CTRDGi_WriteFlashSectorAsyncMX: ; 0x020DD2D8
diff --git a/arm9/asm/CTRDG_flash_MX29L512.s b/arm9/asm/CTRDG_flash_MX29L512.s
index a0d7a776..f5f855bc 100644
--- a/arm9/asm/CTRDG_flash_MX29L512.s
+++ b/arm9/asm/CTRDG_flash_MX29L512.s
@@ -28,7 +28,7 @@ MN63F805MNP: ; 0x021041D0
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x1B, 0x00
- .text
+ .text
arm_func_start CTRDGi_WriteFlashSectorAsyncMX5
CTRDGi_WriteFlashSectorAsyncMX5: ; 0x020DD868
diff --git a/arm9/asm/CTRDG_flash_common.s b/arm9/asm/CTRDG_flash_common.s
index cf62c3b0..968e3512 100644
--- a/arm9/asm/CTRDG_flash_common.s
+++ b/arm9/asm/CTRDG_flash_common.s
@@ -67,7 +67,7 @@ UNK_021D6B44: ; 0x021D6B44
ctrdgi_sram_lock_id: ; 0x021D6B4C
.space 0x4
- .text
+ .text
arm_func_start CTRDG_WriteAndVerifyAgbFlashAsync
CTRDG_WriteAndVerifyAgbFlashAsync: ; 0x020DBF14
diff --git a/arm9/asm/CTRDG_proc.s b/arm9/asm/CTRDG_proc.s
index f9e981d0..88c82553 100644
--- a/arm9/asm/CTRDG_proc.s
+++ b/arm9/asm/CTRDG_proc.s
@@ -37,7 +37,7 @@ UNK_021D6964: ; 0x021D6964
UNK_021D6A20: ; 0x021D6A20
.space 0xe8
- .text
+ .text
arm_func_start CTRDGi_CallbackForSetPhi
CTRDGi_CallbackForSetPhi: ; 0x020DB978
diff --git a/arm9/asm/CTRDG_task.s b/arm9/asm/CTRDG_task.s
index c0feb88e..95c9ddb4 100644
--- a/arm9/asm/CTRDG_task.s
+++ b/arm9/asm/CTRDG_task.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021D6F78
+ .extern __console_exit
.section .bss
@@ -177,7 +177,7 @@ _020DDC04: ; 0x020DDC04
str r0, [r5, #0xc0]
mov r2, #0x400
ldr r1, _020DDC54 ; =CTRDGi_TaskThread
- ldr r3, _020DDC58 ; =UNK_021D6F78
+ ldr r3, _020DDC58 ; =__console_exit
mov r0, r5
str r2, [sp, #0x0]
mov r2, #0x14
@@ -196,4 +196,4 @@ _020DDC38:
_020DDC4C: .word UNK_021D6B50
_020DDC50: .word UNK_021D6B54
_020DDC54: .word CTRDGi_TaskThread
-_020DDC58: .word UNK_021D6F78
+_020DDC58: .word __console_exit
diff --git a/arm9/asm/DGT_hash1.s b/arm9/asm/DGT_hash1.s
index 4befbb88..6a8580c1 100644
--- a/arm9/asm/DGT_hash1.s
+++ b/arm9/asm/DGT_hash1.s
@@ -41,7 +41,7 @@ Unk_02106900: ; 0x02106900
.word 0x6FA87E4F, 0xFE2CE6E0, 0xA3014314, 0x4E0811A1
.word 0xF7537E82, 0xBD3AF235, 0x2AD7D2BB, 0xEB86D391
- .text
+ .text
arm_func_start ProcessBlock
ProcessBlock: ; 0x020D2798
diff --git a/arm9/asm/DGT_hash2.s b/arm9/asm/DGT_hash2.s
index f309204e..918b6988 100644
--- a/arm9/asm/DGT_hash2.s
+++ b/arm9/asm/DGT_hash2.s
@@ -12,7 +12,7 @@ Unk_02106A04: ; 0x02106A04
.byte 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .text
+ .text
arm_func_start DGT_Hash2CalcHmac
DGT_Hash2CalcHmac: ; 0x020D2D78
diff --git a/arm9/asm/MSL_ARM_abort_exit.s b/arm9/asm/MSL_ARM_abort_exit.s
new file mode 100644
index 00000000..2fb7796f
--- /dev/null
+++ b/arm9/asm/MSL_ARM_abort_exit.s
@@ -0,0 +1,168 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global __console_exit
+__console_exit: ; 0x021D6F78
+ .space 0x4
+ .size __console_exit,.-__console_exit
+
+ .global __stdio_exit
+__stdio_exit: ; 0x021D6F7C
+ .space 0x4
+ .size __stdio_exit,.-__stdio_exit
+
+ .global __atexit_curr_func
+__atexit_curr_func: ; 0x021D6F80
+ .space 0x4
+ .size __atexit_curr_func,.-__atexit_curr_func
+
+ .global __aborting
+__aborting: ; 0x021D6F84
+ .space 0x4
+ .size __aborting,.-__aborting
+
+ .global __atexit_funcs
+__atexit_funcs: ; 0x021D6F88
+ .space 0x100
+ .size __atexit_funcs,.-__atexit_funcs
+
+ .text
+
+ arm_func_start abort
+abort: ; 0x020DE14C
+ stmdb sp!, {r3,lr}
+ mov r0, #0x1
+ bl raise
+ ldr r1, _020DE16C ; =__aborting - 0xC
+ mov r0, #0x1
+ str r0, [r1, #0xc]
+ bl exit
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DE16C: .word __aborting - 0xC
+ arm_func_end abort
+
+ arm_func_start exit
+exit: ; 0x020DE170
+ stmdb sp!, {r4,lr}
+ ldr r1, _020DE1B8 ; =__aborting - 0xC
+ mov r4, r0
+ ldr r0, [r1, #0xc]
+ cmp r0, #0x0
+ bne _020DE1AC
+ bl __destroy_global_chain
+ ldr r0, _020DE1B8 ; =__stdio_exit - 0x4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _020DE1AC
+ blx r0
+ ldr r0, _020DE1B8 ; =__stdio_exit - 0x4
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+_020DE1AC:
+ mov r0, r4
+ bl __exit
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020DE1B8: .word __console_exit
+ arm_func_end exit
+
+ arm_func_start __exit
+__exit: ; 0x020DE1BC
+ stmdb sp!, {r3-r5,lr}
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DE1F4
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ b _020DE24C
+_020DE1F4:
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0x0]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DE224
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ b _020DE24C
+_020DE224:
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_LockMutex
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+_020DE24C:
+ ldr r4, _020DE2DC ; =__console_exit
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ ble _020DE280
+ ldr r5, _020DE2E0 ; =__atexit_funcs
+_020DE260:
+ ldr r0, [r4, #0x8]
+ sub r1, r0, #0x1
+ ldr r0, [r5, r1, lsl #0x2]
+ str r1, [r4, #0x8]
+ blx r0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bgt _020DE260
+_020DE280:
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r1, [r0, #0x0]
+ subs r1, r1, #0x1
+ str r1, [r0, #0x0]
+ bne _020DE29C
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_UnlockMutex
+_020DE29C:
+ ldr r0, _020DE2DC ; =__console_exit
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020DE2BC
+ blx r0
+ ldr r0, _020DE2DC ; =__console_exit
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_020DE2BC:
+ mov r0, #0x0
+ bl fflush
+ bl _ExitProcess
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020DE2CC: .word __cs
+_020DE2D0: .word OSi_ThreadInfo
+_020DE2D4: .word __cs_id
+_020DE2D8: .word __cs_ref
+_020DE2DC: .word __console_exit
+_020DE2E0: .word __atexit_funcs
+ arm_func_end __exit
+
+ .section .exceptix,4
+
+ .word abort
+ .short 37
+ .word 0x00100000
+ .word exit
+ .short 77
+ .word 0x00100100
+ .word __exit
+ .short 297
+ .word 0x00200300
diff --git a/arm9/asm/MSL_ARM_critical_regions_NITRO.s b/arm9/asm/MSL_ARM_critical_regions_NITRO.s
new file mode 100644
index 00000000..2995c55e
--- /dev/null
+++ b/arm9/asm/MSL_ARM_critical_regions_NITRO.s
@@ -0,0 +1,19 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global __cs_id
+__cs_id: ; 0x021D7088
+ .space 0x24
+ .size __cs_id,.-__cs_id
+
+ .global __cs_ref
+__cs_ref: ; 0x021D70AC
+ .space 0x24
+ .size __cs_ref,.-__cs_ref
+
+ .global __cs
+__cs: ; 0x021D70D0
+ .space 0xD8
+ .size __cs,.-__cs
diff --git a/arm9/asm/MSL_ARM_math.s b/arm9/asm/MSL_ARM_math.s
new file mode 100644
index 00000000..cb9bb034
--- /dev/null
+++ b/arm9/asm/MSL_ARM_math.s
@@ -0,0 +1,21 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .text
+
+ arm_func_start nan
+nan: ; 0x020DE2E4
+ ldr r0, _020DE2F4 ; =__float_nan
+ ldr ip, _020DE2F8 ; =_f2d
+ ldr r0, [r0, #0x0]
+ bx r12
+ .balign 4
+_020DE2F4: .word __float_nan
+_020DE2F8: .word _f2d
+ arm_func_end nan
+
+ .section .exceptix,4
+
+ .word nan
+ .short 25
+ .word 0x00000000
diff --git a/arm9/asm/MSL_Common_ansi_files.s b/arm9/asm/MSL_Common_ansi_files.s
new file mode 100644
index 00000000..70fdc293
--- /dev/null
+++ b/arm9/asm/MSL_Common_ansi_files.s
@@ -0,0 +1,151 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .data
+
+ .global __files
+__files: ; 0x02106A58
+ ; stdin
+ .byte 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stdin_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stdin_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ ; stdout
+ .byte 0x01, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stdout_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stdout_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ ; stderr
+ .byte 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stderr_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stderr_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+ .size __files,.-__files
+
+ .bss
+
+ .global stderr_buff
+stderr_buff: ; 0x021D71A8
+ .space 0x100
+ .size stderr_buff,.-stderr_buff
+
+ .global stdout_buff
+stdout_buff: ; 0x021D72A8
+ .space 0x100
+ .size stdout_buff,.-stdout_buff
+
+ .global stdin_buff
+stdin_buff: ; 0x021D73A8
+ .space 0x100
+ .size stdin_buff,.-stdin_buff
+
+ .text
+
+ arm_func_start __flush_line_buffered_output_files
+__flush_line_buffered_output_files:
+ stmdb sp!, {r3-r9,lr}
+ ldr r0, _020DE384 ; =__files
+ mov r4, #0x0
+ mov r5, #0x1
+ mov r8, r0
+ mvn r9, #0x0
+ mov r7, r4
+ mov r6, #0x4c
+_020DE31C:
+ ldr r1, [r0, #0x4]
+ mov r2, r1, lsl #0x16
+ movs r2, r2, lsr #0x1d
+ beq _020DE35C
+ mov r1, r1, lsl #0x19
+ mov r1, r1, lsr #0x1e
+ tst r1, #0x1
+ beq _020DE35C
+ ldr r1, [r0, #0x8]
+ mov r1, r1, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ bne _020DE35C
+ bl fflush
+ cmp r0, #0x0
+ movne r4, r9
+_020DE35C:
+ cmp r5, #0x3
+ movge r0, r7
+ bge _020DE374
+ mul r0, r5, r6
+ add r5, r5, #0x1
+ add r0, r8, r0
+_020DE374:
+ cmp r0, #0x0
+ bne _020DE31C
+ mov r0, r4
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DE384: .word __files
+ arm_func_end __flush_line_buffered_output_files
+
+ arm_func_start __flush_all
+__flush_all: ; 0x020DE388
+ stmdb sp!, {r3-r9,lr}
+ ldr r0, _020DE3EC ; =__files
+ mov r4, #0x0
+ mov r5, #0x1
+ mov r8, r0
+ mvn r9, #0x0
+ mov r7, r4
+ mov r6, #0x4c
+_020DE3A8:
+ ldr r1, [r0, #0x4]
+ mov r1, r1, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ beq _020DE3C4
+ bl fflush
+ cmp r0, #0x0
+ movne r4, r9
+_020DE3C4:
+ cmp r5, #0x3
+ movge r0, r7
+ bge _020DE3DC
+ mul r0, r5, r6
+ add r5, r5, #0x1
+ add r0, r8, r0
+_020DE3DC:
+ cmp r0, #0x0
+ bne _020DE3A8
+ mov r0, r4
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DE3EC: .word __files
+ arm_func_end __flush_all
+
+ .section .exceptix,4
+
+ .word __flush_line_buffered_output_files
+ .short 141
+ .word 0x00403F00
+ .word __flush_all
+ .short 105
+ .word 0x00403F00
diff --git a/arm9/asm/MSL_Common_arith.s b/arm9/asm/MSL_Common_arith.s
new file mode 100644
index 00000000..5d93a4de
--- /dev/null
+++ b/arm9/asm/MSL_Common_arith.s
@@ -0,0 +1,11 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start abs
+abs: ; 0x020DE3F0
+ cmp r0, #0x0
+ rsblt r0, r0, #0x0
+ bx lr
+ arm_func_end abs
diff --git a/arm9/asm/MSL_Common_assert.s b/arm9/asm/MSL_Common_assert.s
new file mode 100644
index 00000000..ded4056d
--- /dev/null
+++ b/arm9/asm/MSL_Common_assert.s
@@ -0,0 +1,37 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+__local_str__msl_assertion_failed: ; 0x02106B3C
+ .asciz "Assertion (%s) failed in \"%s\", function \"%s\", line %d\n"
+ .size __local_str__msl_assertion_failed,.-__local_str__msl_assertion_failed
+ .balign 4, 0
+
+ .text
+
+ arm_func_start __msl_assertion_failed
+__msl_assertion_failed: ; 0x020DE3FC
+ stmdb sp!, {r3-r4,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ ldr r0, _020DE434 ; =__local_str__msl_assertion_failed
+ mov r1, r4
+ mov r2, lr
+ mov r3, r12
+ bl printf
+ bl abort
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r4,pc}
+ .balign 4
+_020DE434: .word __local_str__msl_assertion_failed
+ arm_func_end __msl_assertion_failed
+
+ .section .exceptix,4
+
+ .word __msl_assertion_failed
+ .short 61
+ .word 0x00200100
diff --git a/arm9/asm/MSL_Common_buffer_io.s b/arm9/asm/MSL_Common_buffer_io.s
new file mode 100644
index 00000000..7dbbcc45
--- /dev/null
+++ b/arm9/asm/MSL_Common_buffer_io.s
@@ -0,0 +1,119 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start __convert_from_newlines
+__convert_from_newlines:
+ bx lr
+ arm_func_end __convert_from_newlines
+
+ arm_func_start __convert_to_newlines
+__convert_to_newlines:
+ bx lr
+ arm_func_end __convert_to_newlines
+
+ arm_func_start __prep_buffer
+__prep_buffer:
+ ldr r1, [r0, #0x1c]
+ str r1, [r0, #0x24]
+ ldr r3, [r0, #0x20]
+ str r3, [r0, #0x28]
+ ldr r2, [r0, #0x18]
+ ldr r1, [r0, #0x2c]
+ and r1, r2, r1
+ sub r1, r3, r1
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x18]
+ str r1, [r0, #0x34]
+ bx lr
+ arm_func_end __prep_buffer
+
+ arm_func_start __load_buffer
+__load_buffer:
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r2
+ mov r4, r0
+ mov r6, r1
+ bl __prep_buffer
+ cmp r5, #0x1
+ ldreq r0, [r4, #0x20]
+ add r2, r4, #0x28
+ streq r0, [r4, #0x28]
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x1c]
+ ldr r3, [r4, #0x48]
+ ldr r12, [r4, #0x3c]
+ blx r12
+ cmp r0, #0x2
+ moveq r1, #0x0
+ streq r1, [r4, #0x28]
+ cmp r6, #0x0
+ ldrne r1, [r4, #0x28]
+ strne r1, [r6, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6,pc}
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x28]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x4]
+ mov r0, r0, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ bne _020DE4F4
+ ldr r0, [r4, #0x1c]
+ add r1, r4, #0x28
+ bl __convert_to_newlines
+_020DE4F4:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end __load_buffer
+
+ arm_func_start __flush_buffer
+__flush_buffer:
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ ldr r2, [r5, #0x24]
+ ldr r0, [r5, #0x1c]
+ mov r4, r1
+ subs r0, r2, r0
+ beq _020DE574
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x4]
+ mov r0, r0, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ bne _020DE538
+ ldr r0, [r5, #0x1c]
+ add r1, r5, #0x28
+ bl __convert_from_newlines
+_020DE538:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x1c]
+ ldr r3, [r5, #0x48]
+ ldr r12, [r5, #0x40]
+ add r2, r5, #0x28
+ blx r12
+ cmp r4, #0x0
+ ldrne r1, [r5, #0x28]
+ strne r1, [r4, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r3-r5,pc}
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x28]
+ add r0, r1, r0
+ str r0, [r5, #0x18]
+_020DE574:
+ mov r0, r5
+ bl __prep_buffer
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __flush_buffer
+
+ .section .exceptix,4
+
+ .word __load_buffer
+ .short 141
+ .word 0x00200700
+ .word __flush_buffer
+ .short 137
+ .word 0x00200300
diff --git a/arm9/asm/MSL_Common_ctype.s b/arm9/asm/MSL_Common_ctype.s
new file mode 100644
index 00000000..7513f451
--- /dev/null
+++ b/arm9/asm/MSL_Common_ctype.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+ .global __lower_mapC
+__lower_mapC: ; 0x0210420C
+ .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+ .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
+ .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
+ .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
+ .byte 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
+ .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
+ .byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
+ .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
+ .size __lower_mapC,.-__lower_mapC
+
+ .global __upper_mapC
+__upper_mapC: ; 0x0210428C
+ .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+ .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
+ .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
+ .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
+ .byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
+ .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
+ .byte 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
+ .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
+ .size __upper_mapC,.-__upper_mapC
+
+ .global __msl_digit
+__msl_digit: ; 0x0210430C
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0004, 0x0106, 0x0104, 0x0104, 0x0104, 0x0104, 0x0004, 0x0004
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0142, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458
+ .short 0x0458, 0x0458, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x0004
+ .size __msl_digit,.-__msl_digit
diff --git a/arm9/asm/MSL_Common_direct_io.s b/arm9/asm/MSL_Common_direct_io.s
new file mode 100644
index 00000000..d71f0bc4
--- /dev/null
+++ b/arm9/asm/MSL_Common_direct_io.s
@@ -0,0 +1,513 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start fread
+fread: ; 0x020DE584
+ stmdb sp!, {r4-r10,lr}
+ ldr r4, _020DE67C ; =__files
+ mov r7, r3
+ cmp r7, r4
+ moveq r6, #0x2
+ mov r10, r0
+ movne r6, #0x5
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DE680 ; =__cs
+ mov r9, r1
+ add r0, r5, r4
+ mov r8, r2
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DE5E8
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r2, _020DE688 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DE68C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DE640
+_020DE5E8:
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r1, _020DE688 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DE618
+ ldr r1, _020DE68C ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DE640
+_020DE618:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r2, _020DE688 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DE68C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DE640:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r8
+ mov r3, r7
+ bl __fread
+ ldr r1, _020DE68C ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DE674
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DE674:
+ mov r0, r7
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020DE67C: .word __files
+_020DE680: .word __cs
+_020DE684: .word OSi_ThreadInfo
+_020DE688: .word __cs_id
+_020DE68C: .word __cs_ref
+ arm_func_end fread
+
+ arm_func_start __fread
+__fread: ; 0x020DE690
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x4
+ mov r7, r3
+ mov r9, r0
+ mov r8, r1
+ mov r0, r7
+ mov r1, #0x0
+ mov r4, r2
+ bl fwide
+ cmp r0, #0x0
+ bne _020DE6C8
+ mov r0, r7
+ mvn r1, #0x0
+ bl fwide
+_020DE6C8:
+ muls r4, r8, r4
+ beq _020DE6EC
+ ldrb r0, [r7, #0xd]
+ cmp r0, #0x0
+ bne _020DE6EC
+ ldr r1, [r7, #0x4]
+ mov r0, r1, lsl #0x16
+ movs r0, r0, lsr #0x1d
+ bne _020DE6F8
+_020DE6EC:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r3-r10,pc}
+_020DE6F8:
+ mov r0, r1, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ movne r0, r1, lsl #0x19
+ movne r0, r0, lsr #0x1e
+ ldr r1, [r7, #0x8]
+ cmpne r0, #0x2
+ mov r6, #0x1
+ mov r0, r1, lsl #0x1d
+ movne r6, #0x0
+ movs r0, r0, lsr #0x1d
+ bne _020DE74C
+ ldr r0, [r7, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ tst r0, #0x1
+ beq _020DE74C
+ bic r0, r1, #0x7
+ orr r0, r0, #0x2
+ str r0, [r7, #0x8]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE74C:
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ bhs _020DE778
+ mov r0, #0x1
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ str r0, [r7, #0x28]
+ ldmia sp!, {r3-r10,pc}
+_020DE778:
+ ldr r0, [r7, #0x4]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ tst r0, #0x1
+ beq _020DE7B0
+ bl __flush_line_buffered_output_files
+ cmp r0, #0x0
+ beq _020DE7B0
+ mov r0, #0x1
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ str r0, [r7, #0x28]
+ ldmia sp!, {r3-r10,pc}
+_020DE7B0:
+ cmp r4, #0x0
+ mov r5, #0x0
+ beq _020DE874
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ blo _020DE874
+ mov r10, r5
+_020DE7D4:
+ mov r0, r7
+ mov r1, r10
+ bl fwide
+ cmp r0, #0x1
+ ldr r0, [r7, #0x8]
+ bne _020DE808
+ mov r0, r0, lsl #0x1d
+ add r0, r7, r0, lsr #0x1c
+ ldrh r0, [r0, #0xe]
+ add r5, r5, #0x2
+ sub r4, r4, #0x2
+ strh r0, [r9], #0x2
+ b _020DE820
+_020DE808:
+ mov r0, r0, lsl #0x1d
+ add r0, r7, r0, lsr #0x1d
+ ldrb r0, [r0, #0xf]
+ add r5, r5, #0x1
+ sub r4, r4, #0x1
+ strb r0, [r9], #0x1
+_020DE820:
+ ldr r1, [r7, #0x8]
+ cmp r4, #0x0
+ mov r0, r1, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ sub r0, r0, #0x1
+ bic r1, r1, #0x7
+ and r0, r0, #0x7
+ orr r0, r1, r0
+ str r0, [r7, #0x8]
+ beq _020DE85C
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ bhs _020DE7D4
+_020DE85C:
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ ldreq r0, [r7, #0x30]
+ streq r0, [r7, #0x28]
+_020DE874:
+ cmp r4, #0x0
+ beq _020DE938
+ ldr r0, [r7, #0x28]
+ cmp r0, #0x0
+ cmpeq r6, #0x0
+ beq _020DE938
+ mov r10, #0x0
+_020DE890:
+ ldr r0, [r7, #0x28]
+ cmp r0, #0x0
+ bne _020DE8E4
+ mov r0, r7
+ mov r1, r10
+ mov r2, r10
+ bl __load_buffer
+ cmp r0, #0x0
+ beq _020DE8E4
+ cmp r0, #0x1
+ mov r0, #0x1
+ streqb r0, [r7, #0xd]
+ beq _020DE8D4
+ ldr r1, [r7, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r7, #0x8]
+ strb r0, [r7, #0xc]
+_020DE8D4:
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ mov r4, #0x0
+ b _020DE938
+_020DE8E4:
+ ldr r0, [r7, #0x28]
+ str r0, [sp, #0x0]
+ cmp r0, r4
+ strhi r4, [sp, #0x0]
+ ldr r1, [r7, #0x24]
+ ldr r2, [sp, #0x0]
+ mov r0, r9
+ bl memcpy
+ ldr r2, [sp, #0x0]
+ ldr r0, [r7, #0x24]
+ subs r4, r4, r2
+ add r0, r0, r2
+ str r0, [r7, #0x24]
+ ldr r1, [r7, #0x28]
+ ldr r0, [sp, #0x0]
+ add r9, r9, r2
+ sub r0, r1, r0
+ add r5, r5, r2
+ str r0, [r7, #0x28]
+ cmpne r6, #0x0
+ bne _020DE890
+_020DE938:
+ cmp r4, #0x0
+ beq _020DE9C4
+ cmp r6, #0x0
+ bne _020DE9C4
+ ldr r6, [r7, #0x1c]
+ ldr r10, [r7, #0x20]
+ add r1, sp, #0x0
+ str r9, [r7, #0x1c]
+ mov r0, r7
+ mov r2, #0x1
+ str r4, [r7, #0x20]
+ bl __load_buffer
+ cmp r0, #0x0
+ beq _020DE9A4
+ cmp r0, #0x1
+ mov r0, #0x1
+ bne _020DE98C
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ b _020DE9A4
+_020DE98C:
+ ldr r1, [r7, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r7, #0x8]
+ strb r0, [r7, #0xc]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE9A4:
+ ldr r1, [sp, #0x0]
+ mov r0, r7
+ str r6, [r7, #0x1c]
+ str r10, [r7, #0x20]
+ add r5, r5, r1
+ bl __prep_buffer
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE9C4:
+ mov r0, r5
+ mov r1, r8
+ bl _u32_div_f
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r10,pc}
+ arm_func_end __fread
+
+ arm_func_start __fwrite
+__fwrite:
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x8
+ mov r9, r3
+ mov r10, r0
+ str r1, [sp, #0x0]
+ mov r0, r9
+ mov r1, #0x0
+ mov r4, r2
+ bl fwide
+ cmp r0, #0x0
+ bne _020DEA10
+ mov r0, r9
+ mvn r1, #0x0
+ bl fwide
+_020DEA10:
+ ldr r0, [sp, #0x0]
+ muls r5, r0, r4
+ beq _020DEA38
+ ldrb r0, [r9, #0xd]
+ cmp r0, #0x0
+ bne _020DEA38
+ ldr r1, [r9, #0x4]
+ mov r0, r1, lsl #0x16
+ movs r0, r0, lsr #0x1d
+ bne _020DEA44
+_020DEA38:
+ add sp, sp, #0x8
+ mov r0, #0x0
+ ldmia sp!, {r3-r11,pc}
+_020DEA44:
+ mov r0, r1, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ movne r0, r1, lsl #0x19
+ movne r0, r0, lsr #0x1e
+ cmpne r0, #0x2
+ ldr r1, [r9, #0x8]
+ cmpne r0, #0x1
+ mov r8, #0x1
+ mov r0, r1, lsl #0x1d
+ movne r8, #0x0
+ movs r0, r0, lsr #0x1d
+ bne _020DEA9C
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ tst r0, #0x2
+ beq _020DEA9C
+ bic r0, r1, #0x7
+ orr r1, r0, #0x1
+ mov r0, r9
+ str r1, [r9, #0x8]
+ bl __prep_buffer
+_020DEA9C:
+ ldr r0, [r9, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x1
+ beq _020DEAC8
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ str r0, [r9, #0x28]
+ ldmia sp!, {r3-r11,pc}
+_020DEAC8:
+ cmp r5, #0x0
+ mov r6, #0x0
+ beq _020DEBF0
+ ldr r0, [r9, #0x1c]
+ ldr r2, [r9, #0x24]
+ cmp r2, r0
+ cmpeq r8, #0x0
+ beq _020DEBF0
+ ldr r1, [r9, #0x20]
+ sub r0, r2, r0
+ sub r0, r1, r0
+ str r0, [r9, #0x28]
+ mov r11, #0xa
+ mov r4, #0x0
+_020DEB00:
+ ldr r0, [r9, #0x28]
+ mov r7, r4
+ str r0, [sp, #0x4]
+ cmp r0, r5
+ strhi r5, [sp, #0x4]
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ cmp r0, #0x1
+ bne _020DEB50
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020DEB50
+ mov r0, r10
+ mov r1, r11
+ bl __memrchr
+ movs r7, r0
+ addne r0, r7, #0x1
+ subne r0, r0, r10
+ strne r0, [sp, #0x4]
+_020DEB50:
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020DEB90
+ ldr r0, [r9, #0x24]
+ mov r1, r10
+ bl memcpy
+ ldr r2, [sp, #0x4]
+ ldr r0, [r9, #0x24]
+ add r10, r10, r2
+ add r0, r0, r2
+ str r0, [r9, #0x24]
+ ldr r1, [r9, #0x28]
+ ldr r0, [sp, #0x4]
+ sub r5, r5, r2
+ sub r0, r1, r0
+ str r0, [r9, #0x28]
+_020DEB90:
+ ldr r0, [r9, #0x28]
+ cmp r0, #0x0
+ beq _020DEBB4
+ cmp r7, #0x0
+ bne _020DEBB4
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x19
+ movs r0, r0, lsr #0x1e
+ bne _020DEBDC
+_020DEBB4:
+ mov r0, r9
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ beq _020DEBDC
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r5, #0x0
+ str r5, [r9, #0x28]
+ b _020DEBF0
+_020DEBDC:
+ ldr r0, [sp, #0x4]
+ cmp r5, #0x0
+ add r6, r6, r0
+ cmpne r8, #0x0
+ bne _020DEB00
+_020DEBF0:
+ cmp r5, #0x0
+ beq _020DEC5C
+ cmp r8, #0x0
+ bne _020DEC5C
+ ldr r4, [r9, #0x1c]
+ ldr r7, [r9, #0x20]
+ add r2, r10, r5
+ str r10, [r9, #0x1c]
+ str r5, [r9, #0x20]
+ add r1, sp, #0x4
+ mov r0, r9
+ str r2, [r9, #0x24]
+ bl __flush_buffer
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x4]
+ addeq r6, r6, r0
+ beq _020DEC44
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r0, #0x0
+ str r0, [r9, #0x28]
+_020DEC44:
+ str r4, [r9, #0x1c]
+ mov r0, r9
+ str r7, [r9, #0x20]
+ bl __prep_buffer
+ mov r0, #0x0
+ str r0, [r9, #0x28]
+_020DEC5C:
+ ldr r0, [r9, #0x4]
+ ldr r1, [sp, #0x0]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ cmp r0, #0x2
+ movne r0, #0x0
+ strne r0, [r9, #0x28]
+ mov r0, r6
+ bl _u32_div_f
+ add sp, sp, #0x8
+ ldmia sp!, {r3-r11,pc}
+ arm_func_end __fwrite
+
+ .section .exceptix,4
+
+ .word fread
+ .short 269
+ .word 0x00407F00
+ .word __fread
+ .short 841
+ .word 0x00507F00
+ .word __fwrite
+ .short 689
+ .word 0x0060FF00 \ No newline at end of file
diff --git a/arm9/asm/MSL_Common_errno.s b/arm9/asm/MSL_Common_errno.s
new file mode 100644
index 00000000..1005e7b7
--- /dev/null
+++ b/arm9/asm/MSL_Common_errno.s
@@ -0,0 +1,9 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global errno
+errno: ; 0x021D74A8
+ .space 0x4
+ .size errno,.-errno \ No newline at end of file
diff --git a/arm9/asm/MSL_Common_file_io.s b/arm9/asm/MSL_Common_file_io.s
new file mode 100644
index 00000000..f8a76bba
--- /dev/null
+++ b/arm9/asm/MSL_Common_file_io.s
@@ -0,0 +1,113 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start fclose
+fclose: ; 0x020DEC88
+ stmdb sp!, {r3-r5,lr}
+ movs r5, r0
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ ldr r1, [r5, #0x4]
+ mov r1, r1, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ bl fflush
+ mov r4, r0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x44]
+ blx r1
+ ldr r1, [r5, #0x4]
+ mov r2, #0x0
+ bic r1, r1, #0x380
+ str r1, [r5, #0x4]
+ str r2, [r5, #0x0]
+ ldr r1, [r5, #0x8]
+ mov r1, r1, lsl #0x1c
+ movs r1, r1, lsr #0x1f
+ subne r0, r2, #0x1
+ ldmneia sp!, {r3-r5,pc}
+ cmp r4, #0x0
+ cmpeq r0, #0x0
+ movne r2, #0x1
+ rsb r0, r2, #0x0
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end fclose
+
+ arm_func_start fflush
+fflush:
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ bne _020DED10
+ bl __flush_all
+ ldmia sp!, {r4,pc}
+_020DED10:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0x0
+ bne _020DED2C
+ ldr r0, [r4, #0x4]
+ mov r1, r0, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ bne _020DED34
+_020DED2C:
+ mvn r0, #0x0
+ ldmia sp!, {r4,pc}
+_020DED34:
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x1
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r0, [r4, #0x8]
+ mov r1, r0, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x3
+ biccs r0, r0, #0x7
+ orrcs r0, r0, #0x2
+ strcs r0, [r4, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ moveq r0, #0x0
+ streq r0, [r4, #0x28]
+ ldr r0, [r4, #0x8]
+ mov r1, r0, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ beq _020DEDA0
+ bic r0, r0, #0x7
+ str r0, [r4, #0x8]
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+_020DEDA0:
+ mov r0, r4
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ mov r0, #0x0
+ beq _020DEDCC
+ mov r1, #0x1
+ strb r1, [r4, #0xd]
+ str r0, [r4, #0x28]
+ sub r0, r0, #0x1
+ ldmia sp!, {r4,pc}
+_020DEDCC:
+ ldr r1, [r4, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r4, #0x8]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x28]
+ ldmia sp!, {r4,pc}
+ arm_func_end fflush
+
+ .section .exceptix,4
+
+ .word fclose
+ .short 117
+ .word 0x00200300
+ .word fflush
+ .short 233
+ .word 0x00100100
diff --git a/arm9/asm/MSL_Common_file_pos.s b/arm9/asm/MSL_Common_file_pos.s
new file mode 100644
index 00000000..f5a122aa
--- /dev/null
+++ b/arm9/asm/MSL_Common_file_pos.s
@@ -0,0 +1,372 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ftell
+_ftell: ; 0x020DEDE4
+ ldr r1, [r0, #0x4]
+ mov r1, r1, lsl #0x16
+ mov r1, r1, lsr #0x1d
+ and r1, r1, #0xff
+ add r1, r1, #0xff
+ and r1, r1, #0xff
+ cmp r1, #0x1
+ bhi _020DEE10
+ ldrb r1, [r0, #0xd]
+ cmp r1, #0x0
+ beq _020DEE24
+_020DEE10:
+ ldr r0, _020DEE5C ; =errno
+ mov r1, #0x28
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ bx lr
+_020DEE24:
+ ldr r1, [r0, #0x8]
+ mov r1, r1, lsl #0x1d
+ movs r12, r1, lsr #0x1d
+ ldreq r0, [r0, #0x18]
+ bxeq lr
+ ldr r2, [r0, #0x24]
+ ldr r1, [r0, #0x1c]
+ ldr r3, [r0, #0x34]
+ sub r0, r2, r1
+ cmp r12, #0x3
+ add r0, r3, r0
+ subcs r1, r12, #0x2
+ subcs r0, r0, r1
+ bx lr
+ .balign 4
+_020DEE5C: .word errno
+ arm_func_end _ftell
+
+ arm_func_start ftell
+ftell: ; 0x020DEE60
+ stmdb sp!, {r3-r7,lr}
+ ldr r1, _020DEF60 ; =__files
+ mov r7, r0
+ cmp r7, r1
+ moveq r6, #0x2
+ beq _020DEE98
+ ldr r0, _020DEF64 ; =__files + 0x4C
+ cmp r7, r0
+ moveq r6, #0x3
+ beq _020DEE98
+ ldr r0, _020DEF68 ; =__files + 0x98
+ cmp r7, r0
+ moveq r6, #0x4
+ movne r6, #0x5
+_020DEE98:
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DEF6C ; =__cs
+ add r0, r5, r4
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DEED8
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r2, _020DEF74 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DEF78 ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DEF30
+_020DEED8:
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r1, _020DEF74 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DEF08
+ ldr r1, _020DEF78 ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DEF30
+_020DEF08:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DEF70 ; =OSi_ThreadInfo
+ ldr r2, _020DEF74 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DEF78 ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DEF30:
+ mov r0, r7
+ bl _ftell
+ ldr r1, _020DEF78 ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DEF58
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DEF58:
+ mov r0, r7
+ ldmia sp!, {r3-r7,pc}
+ .balign 4
+_020DEF60: .word __files
+_020DEF64: .word __files + 0x4C
+_020DEF68: .word __files + 0x98
+_020DEF6C: .word __cs
+_020DEF70: .word OSi_ThreadInfo
+_020DEF74: .word __cs_id
+_020DEF78: .word __cs_ref
+ arm_func_end ftell
+
+ arm_func_start _fseek
+_fseek: ; 0x020DEF7C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ ldr r1, [r5, #0x4]
+ mov r4, r2
+ mov r1, r1, lsl #0x16
+ mov r1, r1, lsr #0x1d
+ and r1, r1, #0xff
+ cmp r1, #0x1
+ ldreqb r1, [r5, #0xd]
+ cmpeq r1, #0x0
+ beq _020DEFC8
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DEFC8:
+ ldr r1, [r5, #0x8]
+ mov r1, r1, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ bne _020DF018
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ beq _020DF018
+ mov r0, #0x1
+ strb r0, [r5, #0xd]
+ mov r2, #0x0
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r2, [r5, #0x28]
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DF018:
+ cmp r4, #0x1
+ bne _020DF038
+ mov r0, r5
+ mov r4, #0x0
+ bl _ftell
+ ldr r1, [sp, #0x14]
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+_020DF038:
+ cmp r4, #0x2
+ beq _020DF0CC
+ ldr r0, [r5, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ beq _020DF0CC
+ ldr r0, [r5, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ sub r0, r0, #0x2
+ cmp r0, #0x1
+ bhi _020DF0CC
+ ldr r2, [sp, #0x14]
+ ldr r0, [r5, #0x18]
+ cmp r2, r0
+ bhs _020DF088
+ ldr r0, [r5, #0x34]
+ cmp r2, r0
+ bhs _020DF098
+_020DF088:
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ str r0, [r5, #0x8]
+ b _020DF0D8
+_020DF098:
+ ldr r1, [r5, #0x1c]
+ sub r0, r2, r0
+ add r0, r1, r0
+ str r0, [r5, #0x24]
+ ldr r1, [r5, #0x18]
+ ldr r0, [sp, #0x14]
+ sub r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ orr r0, r0, #0x2
+ str r0, [r5, #0x8]
+ b _020DF0D8
+_020DF0CC:
+ ldr r0, [r5, #0x8]
+ bic r0, r0, #0x7
+ str r0, [r5, #0x8]
+_020DF0D8:
+ ldr r0, [r5, #0x8]
+ mov r0, r0, lsl #0x1d
+ movs r0, r0, lsr #0x1d
+ bne _020DF150
+ ldr r12, [r5, #0x38]
+ cmp r12, #0x0
+ beq _020DF13C
+ ldr r0, [r5, #0x0]
+ ldr r3, [r5, #0x48]
+ add r1, sp, #0x14
+ mov r2, r4
+ blx r12
+ cmp r0, #0x0
+ beq _020DF13C
+ mov r0, #0x1
+ strb r0, [r5, #0xd]
+ mov r2, #0x0
+ ldr r0, _020DF160 ; =errno
+ mov r1, #0x28
+ str r2, [r5, #0x28]
+ str r1, [r0, #0x0]
+ sub r0, r1, #0x29
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DF13C:
+ mov r1, #0x0
+ strb r1, [r5, #0xc]
+ ldr r0, [sp, #0x14]
+ str r0, [r5, #0x18]
+ str r1, [r5, #0x28]
+_020DF150:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020DF160: .word errno
+ arm_func_end _fseek
+
+ arm_func_start fseek
+fseek:
+ stmdb sp!, {r3-r9,lr}
+ ldr r3, _020DF274 ; =__files
+ mov r9, r0
+ cmp r9, r3
+ mov r8, r1
+ mov r7, r2
+ moveq r6, #0x2
+ beq _020DF1A4
+ ldr r0, _020DF278 ; =__files + 0x4C
+ cmp r9, r0
+ moveq r6, #0x3
+ beq _020DF1A4
+ ldr r0, _020DF27C ; =__files + 0x98
+ cmp r9, r0
+ moveq r6, #0x4
+ movne r6, #0x5
+_020DF1A4:
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DF280 ; =__cs
+ add r0, r5, r4
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DF1E4
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r2, _020DF288 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DF28C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DF23C
+_020DF1E4:
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r1, _020DF288 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DF214
+ ldr r1, _020DF28C ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DF23C
+_020DF214:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DF284 ; =OSi_ThreadInfo
+ ldr r2, _020DF288 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DF28C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DF23C:
+ mov r0, r9
+ mov r1, r8
+ mov r2, r7
+ bl _fseek
+ ldr r1, _020DF28C ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DF26C
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DF26C:
+ mov r0, r7
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DF274: .word __files
+_020DF278: .word __files + 0x4C
+_020DF27C: .word __files + 0x98
+_020DF280: .word __cs
+_020DF284: .word OSi_ThreadInfo
+_020DF288: .word __cs_id
+_020DF28C: .word __cs_ref
+ arm_func_end fseek
+
+ arm_func_start rewind
+rewind: ; 0x020DF290
+ stmdb sp!, {r4,lr}
+ mov r1, #0x0
+ mov r4, r0
+ mov r2, r1
+ strb r1, [r4, #0xd]
+ bl fseek
+ mov r0, #0x0
+ strb r0, [r4, #0xd]
+ ldmia sp!, {r4,pc}
+ arm_func_end rewind
+
+ .section .exceptix,4
+
+ .word ftell
+ .short 285
+ .word 0x00300F00
+ .word _fseek
+ .short 489
+ .word 0x00400320
+ .word fseek
+ .short 301
+ .word 0x00403F00
+ .word rewind
+ .short 37
+ .word 0x00100100
diff --git a/arm9/asm/MSL_Common_float.s b/arm9/asm/MSL_Common_float.s
new file mode 100644
index 00000000..c9a1db8f
--- /dev/null
+++ b/arm9/asm/MSL_Common_float.s
@@ -0,0 +1,18 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+ .global __float_huge
+__float_huge: ; 0x02106B74
+ .word 0x7F800000 ; inf
+ .size __float_huge,.-__float_huge
+
+ .global __float_nan
+__float_nan: ; 0x02106B78
+ .word 0x7FFFFFFF ; nan
+ .size __float_nan,.-__float_nan
+
+ .global __double_huge
+__double_huge: ; 0x02106B7C
+ .word 0x00000000, 0x7FF00000 ; inf
+ .size __double_huge,.-__double_huge
diff --git a/arm9/asm/MSL_Common_mbstring.s b/arm9/asm/MSL_Common_mbstring.s
new file mode 100644
index 00000000..e7bf6947
--- /dev/null
+++ b/arm9/asm/MSL_Common_mbstring.s
@@ -0,0 +1,247 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+ .balign 4
+ .global _loc_tim_C$timezone
+_loc_tim_C$timezone: ; 0x02106B84
+ .asciz ""
+ .size _loc_tim_C$timezone,.-_loc_tim_C$timezone
+
+ .balign 4
+ .global _loc_tim_C$timefmt2
+_loc_tim_C$timefmt2: ; 0x02106B88
+ .asciz "%T"
+ .size _loc_tim_C$timefmt2,.-_loc_tim_C$timefmt2
+
+ .balign 4
+ .global _loc_tim_C$AMPM
+_loc_tim_C$AMPM: ; 0x02106B8C
+ .asciz "AM|PM"
+ .size _loc_tim_C$AMPM,.-_loc_tim_C$AMPM
+
+ .balign 4, 0
+ .global _loc_ctyp_C
+_loc_ctyp_C: ; 0x02106B94
+ .word __mbtowc_noconv
+ .word __wctomb_noconv
+ .size _loc_ctyp_C,.-_loc_ctyp_C
+
+ .global _loc_coll_C
+_loc_coll_C: ; 0x02106B9C
+ .word 0x20
+ .word 0x6E
+ .word 0x00
+ .word char_coll_tableC
+ .size _loc_coll_C,.-_loc_coll_C
+
+ .global _loc_tim_C
+_loc_tim_C: ; 0x02106BAC
+ .word _loc_tim_C$AMPM
+ .word _loc_tim_C$datetimefmt
+ .word _loc_tim_C$timefmt
+ .word _loc_tim_C$datefmt
+ .word _loc_tim_C$timefmt2
+ .word _loc_tim_C$daynames
+ .word _loc_tim_C$monthnames
+ .word _loc_tim_C$timezone
+ .size _loc_tim_C,.-_loc_tim_C
+
+ .global char_coll_tableC
+char_coll_tableC: ; 0x02106BCC
+ .short 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008
+ .short 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010
+ .short 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028
+ .short 0x0029, 0x002A, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016
+ .short 0x0017, 0x002B, 0x002D, 0x002F, 0x0031, 0x0033, 0x0035, 0x0037
+ .short 0x0039, 0x003B, 0x003D, 0x003F, 0x0041, 0x0043, 0x0045, 0x0047
+ .short 0x0049, 0x004B, 0x004D, 0x004F, 0x0051, 0x0053, 0x0055, 0x0057
+ .short 0x0059, 0x005B, 0x005D, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C
+ .short 0x0000, 0x002C, 0x002E, 0x0030, 0x0032, 0x0034, 0x0036, 0x0038
+ .short 0x003A, 0x003C, 0x003E, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048
+ .short 0x004A, 0x004C, 0x004E, 0x0050, 0x0052, 0x0054, 0x0056, 0x0058
+ .short 0x005A, 0x005C, 0x005E, 0x001D, 0x001E, 0x001F, 0x0020, 0x0000
+ .size char_coll_tableC,.-char_coll_tableC
+
+ .global _loc_tim_C$datefmt
+_loc_tim_C$datefmt: ; 0x02106C8C
+ .asciz "%m/%d/%y"
+ .size _loc_tim_C$datefmt,.-_loc_tim_C$datefmt
+
+ .balign 4, 0
+ .global _current_locale
+_current_locale: ; 0x02106C98
+ .word _loc_tim_C
+ .word _loc_coll_C
+ .word _loc_ctyp_C
+ .size _current_locale,.-_current_locale
+
+ .global _loc_tim_C$timefmt
+_loc_tim_C$timefmt: ; 0x02106CA4
+ .asciz "%I:%M:%S %p"
+ .size _loc_tim_C$timefmt,.-_loc_tim_C$timefmt
+
+ .balign 4, 0
+ .global _loc_tim_C$datetimefmt
+_loc_tim_C$datetimefmt: ; 0x02106CB0
+ .asciz "%a %b %e %T %Y"
+ .size _loc_tim_C$datetimefmt,.-_loc_tim_C$datetimefmt
+
+ .balign 4, 0
+ .global _loc_tim_C$daynames
+_loc_tim_C$daynames: ; 0x02106CC0
+ .asciz "Sun|Sunday|Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday"
+ .size _loc_tim_C$daynames,.-_loc_tim_C$daynames
+
+ .balign 4, 0
+ .global _loc_tim_C$monthnames
+_loc_tim_C$monthnames: ; 0x02106D18
+ .asciz "Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December"
+ .size _loc_tim_C$monthnames,.-_loc_tim_C$monthnames
+
+ .text
+
+ arm_func_start mbtowc
+mbtowc:
+ stmdb sp!, {r3,lr}
+ ldr r3, _020DF2CC ; =_current_locale
+ ldr r3, [r3, #0x8]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DF2CC: .word _current_locale
+ arm_func_end mbtowc
+
+ arm_func_start __mbtowc_noconv
+__mbtowc_noconv: ; 0x020DF2D0
+ cmp r1, #0x0
+ moveq r0, #0x0
+ bxeq lr
+ cmp r2, #0x0
+ mvneq r0, #0x0
+ bxeq lr
+ cmp r0, #0x0
+ ldrneb r2, [r1, #0x0]
+ strneh r2, [r0, #0x0]
+ ldrsb r0, [r1, #0x0]
+ cmp r0, #0x0
+ moveq r0, #0x0
+ movne r0, #0x1
+ bx lr
+ arm_func_end __mbtowc_noconv
+
+ arm_func_start __wctomb_noconv
+__wctomb_noconv: ; 0x020DF308
+ cmp r0, #0x0
+ moveq r0, #0x0
+ strneb r1, [r0, #0x0]
+ movne r0, #0x1
+ bx lr
+ arm_func_end __wctomb_noconv
+
+ arm_func_start wctomb
+wctomb: ; 0x020DF31C
+ stmdb sp!, {r3,lr}
+ ldr r2, _020DF334 ; =_current_locale
+ ldr r2, [r2, #0x8]
+ ldr r2, [r2, #0x4]
+ blx r2
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DF334: .word _current_locale
+ arm_func_end wctomb
+
+ arm_func_start mbstowcs
+mbstowcs: ; 0x020DF338
+ stmdb sp!, {r4-r8,lr}
+ mov r7, r1
+ mov r8, r0
+ mov r0, r7
+ mov r6, r2
+ bl strlen
+ mov r5, r0
+ cmp r8, #0x0
+ mov r4, #0x0
+ beq _020DF3B8
+ cmp r6, #0x0
+ bls _020DF3B8
+_020DF368:
+ ldrsb r0, [r7, #0x0]
+ cmp r0, #0x0
+ beq _020DF3A0
+ mov r0, r8
+ mov r1, r7
+ mov r2, r5
+ bl mbtowc
+ cmp r0, #0x0
+ add r8, r8, #0x2
+ addgt r7, r7, r0
+ subgt r5, r5, r0
+ bgt _020DF3AC
+ mvn r0, #0x0
+ ldmia sp!, {r4-r8,pc}
+_020DF3A0:
+ mov r0, #0x0
+ strh r0, [r8, #0x0]
+ b _020DF3B8
+_020DF3AC:
+ add r4, r4, #0x1
+ cmp r4, r6
+ blo _020DF368
+_020DF3B8:
+ mov r0, r4
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end mbstowcs
+
+ arm_func_start wcstombs
+wcstombs:
+ stmdb sp!, {r3-r9,lr}
+ movs r4, r0
+ mov r9, r1
+ cmpne r9, #0x0
+ mov r8, r2
+ mov r7, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r9,pc}
+ add r6, sp, #0x0
+_020DF3E4:
+ ldrh r1, [r9, #0x0]
+ cmp r1, #0x0
+ moveq r0, #0x0
+ streqb r0, [r4, r7]
+ beq _020DF430
+ mov r0, r6
+ add r9, r9, #0x2
+ bl wctomb
+ mov r5, r0
+ add r0, r7, r5
+ cmp r0, r8
+ bhi _020DF430
+ mov r1, r6
+ mov r2, r5
+ add r0, r4, r7
+ bl strncpy
+ add r7, r7, r5
+ cmp r7, r8
+ bls _020DF3E4
+_020DF430:
+ mov r0, r7
+ ldmia sp!, {r3-r9,pc}
+ arm_func_end wcstombs
+
+ .section .exceptix,4
+
+ .word mbtowc
+ .short 29
+ .word 0x00100000
+ .word wctomb
+ .short 29
+ .word 0x00100000
+ .word mbstowcs
+ .short 137
+ .word 0x00301F00
+ .word wcstombs
+ .short 121
+ .word 0x00403F00
diff --git a/arm9/asm/MSL_Common_mem.s b/arm9/asm/MSL_Common_mem.s
new file mode 100644
index 00000000..d6449dde
--- /dev/null
+++ b/arm9/asm/MSL_Common_mem.s
@@ -0,0 +1,115 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start memcpy
+memcpy: ; 0x020DF438
+ mov r12, r0
+ cmp r2, #0x0
+ bxeq lr
+_020DF444:
+ ldrsb r3, [r1], #0x1
+ subs r2, r2, #0x1
+ strb r3, [r12], #0x1
+ bne _020DF444
+ bx lr
+ arm_func_end memcpy
+
+ arm_func_start memmove
+memmove: ; 0x020DF458
+ cmp r1, r0
+ blo _020DF480
+ mov r12, r0
+ cmp r2, #0x0
+ bxeq lr
+_020DF46C:
+ ldrsb r3, [r1], #0x1
+ subs r2, r2, #0x1
+ strb r3, [r12], #0x1
+ bne _020DF46C
+ bx lr
+_020DF480:
+ cmp r2, #0x0
+ add r3, r1, r2
+ add r12, r0, r2
+ bxeq lr
+_020DF490:
+ ldrsb r1, [r3, #-0x1]!
+ subs r2, r2, #0x1
+ strb r1, [r12, #-0x1]!
+ bne _020DF490
+ bx lr
+ arm_func_end memmove
+
+ arm_func_start memset
+memset: ; 0x020DF4A4
+ stmdb sp!, {r4,lr}
+ mov r4, r0
+ bl __fill_mem
+ mov r0, r4
+ ldmia sp!, {r4,pc}
+ arm_func_end memset
+
+ arm_func_start memchr
+memchr:
+ cmp r2, #0x0
+ and r3, r1, #0xff
+ beq _020DF4DC
+_020DF4C4:
+ ldrb r1, [r0], #0x1
+ cmp r1, r3
+ subeq r0, r0, #0x1
+ bxeq lr
+ subs r2, r2, #0x1
+ bne _020DF4C4
+_020DF4DC:
+ mov r0, #0x0
+ bx lr
+ arm_func_end memchr
+
+ arm_func_start __memrchr
+__memrchr: ; 0x020DF4E4
+ cmp r2, #0x0
+ and r3, r1, #0xff
+ add r0, r0, r2
+ beq _020DF508
+_020DF4F4:
+ ldrb r1, [r0, #-0x1]!
+ cmp r1, r3
+ bxeq lr
+ subs r2, r2, #0x1
+ bne _020DF4F4
+_020DF508:
+ mov r0, #0x0
+ bx lr
+ arm_func_end __memrchr
+
+ arm_func_start memcmp
+memcmp: ; 0x020DF510
+ cmp r2, #0x0
+ beq _020DF548
+_020DF518:
+ ldrb r12, [r0], #0x1
+ ldrb r3, [r1], #0x1
+ cmp r12, r3
+ beq _020DF540
+ ldrb r2, [r0, #-0x1]
+ ldrb r0, [r1, #-0x1]
+ cmp r2, r0
+ mvncc r0, #0x0
+ movcs r0, #0x1
+ bx lr
+_020DF540:
+ subs r2, r2, #0x1
+ bne _020DF518
+_020DF548:
+ mov r0, #0x0
+ bx lr
+ arm_func_end memcmp
+
+ .section .exceptix,4
+
+ .word memset
+ .short 21
+ .word 0x00100100
diff --git a/arm9/asm/MSL_Common_mem_funcs.s b/arm9/asm/MSL_Common_mem_funcs.s
new file mode 100644
index 00000000..2a0a0efb
--- /dev/null
+++ b/arm9/asm/MSL_Common_mem_funcs.s
@@ -0,0 +1,61 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start __fill_mem
+__fill_mem: ; 0x020DF550
+ cmp r2, #0x20
+ and r3, r1, #0xff
+ blo _020DF5E4
+ rsb r1, r0, #0x0
+ ands r12, r1, #0x3
+ beq _020DF57C
+ sub r2, r2, r12
+ and r1, r3, #0xff
+_020DF570:
+ strb r1, [r0], #0x1
+ subs r12, r12, #0x1
+ bne _020DF570
+_020DF57C:
+ cmp r3, #0x0
+ beq _020DF594
+ mov r1, r3, lsl #0x10
+ orr r1, r1, r3, lsl #0x18
+ orr r1, r1, r3, lsl #0x8
+ orr r3, r3, r1
+_020DF594:
+ movs r1, r2, lsr #0x5
+ beq _020DF5C8
+_020DF59C:
+ str r3, [r0, #0x0]
+ str r3, [r0, #0x4]
+ str r3, [r0, #0x8]
+ str r3, [r0, #0xc]
+ str r3, [r0, #0x10]
+ str r3, [r0, #0x14]
+ str r3, [r0, #0x18]
+ str r3, [r0, #0x1c]
+ add r0, r0, #0x20
+ subs r1, r1, #0x1
+ bne _020DF59C
+_020DF5C8:
+ and r1, r2, #0x1f
+ movs r1, r1, lsr #0x2
+ beq _020DF5E0
+_020DF5D4:
+ str r3, [r0], #0x4
+ subs r1, r1, #0x1
+ bne _020DF5D4
+_020DF5E0:
+ and r2, r2, #0x3
+_020DF5E4:
+ cmp r2, #0x0
+ bxeq lr
+ and r1, r3, #0xff
+_020DF5F0:
+ strb r1, [r0], #0x1
+ subs r2, r2, #0x1
+ bne _020DF5F0
+ bx lr
+ arm_func_end __fill_mem
diff --git a/arm9/asm/MSL_Common_printf.s b/arm9/asm/MSL_Common_printf.s
new file mode 100644
index 00000000..b9879afe
--- /dev/null
+++ b/arm9/asm/MSL_Common_printf.s
@@ -0,0 +1,2607 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+ .global UNK_02106DA0
+UNK_02106DA0: ; 0x02106DA0
+ .byte 0x30, 0x78, 0x30, 0x70, 0x30, 0x00, 0x00, 0x00
+ .size UNK_02106DA0,.-UNK_02106DA0
+
+ .global UNK_02106DA8
+UNK_02106DA8: ; 0x02106DA8
+ .asciz "-INF"
+ .size UNK_02106DA8,.-UNK_02106DA8
+
+ .balign 4, 0
+ .global UNK_02106DB0
+UNK_02106DB0: ; 0x02106DB0
+ .asciz "-inf"
+ .size UNK_02106DB0,.-UNK_02106DB0
+
+ .balign 4, 0
+ .global UNK_02106DB8
+UNK_02106DB8: ; 0x02106DB8
+ .asciz "INF"
+ .size UNK_02106DB8,.-UNK_02106DB8
+
+ .balign 4, 0
+ .global UNK_02106DBC
+UNK_02106DBC: ; 0x02106DBC
+ .asciz "inf"
+ .size UNK_02106DBC,.-UNK_02106DBC
+
+ .balign 4, 0
+ .global UNK_02106DC0
+UNK_02106DC0: ; 0x02106DC0
+ .asciz "-NAN"
+ .size UNK_02106DC0,.-UNK_02106DC0
+
+ .balign 4, 0
+ .global UNK_02106DC8
+UNK_02106DC8: ; 0x02106DC8
+ .asciz "-nan"
+ .size UNK_02106DC8,.-UNK_02106DC8
+
+ .balign 4, 0
+ .global UNK_02106DD0
+UNK_02106DD0: ; 0x02106DD0
+ .asciz "NAN"
+ .size UNK_02106DD0,.-UNK_02106DD0
+
+ .balign 4, 0
+ .global UNK_02106DD4
+UNK_02106DD4: ; 0x02106DD4
+ .asciz "nan"
+ .size UNK_02106DD4,.-UNK_02106DD4
+
+ .balign 4, 0
+ .global UNK_02106DD8
+UNK_02106DD8: ; 0x02106DD8
+ .byte 0x00, 0x00, 0x00, 0x00
+ .size UNK_02106DD8,.-UNK_02106DD8
+
+ .global UNK_02106DDC
+UNK_02106DDC: ; 0x02106DDC
+ .byte 0x00, 0x00, 0x00, 0x00
+ .size UNK_02106DDC,.-UNK_02106DDC
+
+ .text
+
+ arm_func_start parse_format
+parse_format: ; 0x020DF600
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ ldrsb r3, [r0, #0x1]
+ mov r4, #0x0
+ mov r5, #0x1
+ mov lr, r2
+ strb r5, [sp, #0x0]
+ strb r4, [sp, #0x1]
+ strb r4, [sp, #0x2]
+ strb r4, [sp, #0x3]
+ strb r4, [sp, #0x4]
+ str r4, [sp, #0x8]
+ str r4, [sp, #0xc]
+ cmp r3, #0x25
+ add r12, r0, #0x1
+ bne _020DF65C
+ add r0, sp, #0x0
+ strb r3, [sp, #0x5]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x1
+ ldmia sp!, {r4-r8,pc}
+_020DF65C:
+ mov r2, #0x2
+ mov r0, r4
+ mov r5, r2
+ mov r6, r4
+ mov r7, #0x1
+_020DF670:
+ mov r8, r7
+ cmp r3, #0x2b
+ bgt _020DF6A0
+ bge _020DF6C8
+ cmp r3, #0x23
+ bgt _020DF6F8
+ cmp r3, #0x20
+ blt _020DF6F8
+ beq _020DF6D0
+ cmp r3, #0x23
+ beq _020DF6E0
+ b _020DF6F8
+_020DF6A0:
+ cmp r3, #0x30
+ bgt _020DF6F8
+ cmp r3, #0x2d
+ blt _020DF6F8
+ beq _020DF6C0
+ cmp r3, #0x30
+ beq _020DF6E8
+ b _020DF6F8
+_020DF6C0:
+ strb r6, [sp, #0x0]
+ b _020DF6FC
+_020DF6C8:
+ strb r7, [sp, #0x1]
+ b _020DF6FC
+_020DF6D0:
+ ldrb r4, [sp, #0x1]
+ cmp r4, #0x1
+ strneb r5, [sp, #0x1]
+ b _020DF6FC
+_020DF6E0:
+ strb r7, [sp, #0x3]
+ b _020DF6FC
+_020DF6E8:
+ ldrb r4, [sp, #0x0]
+ cmp r4, #0x0
+ strneb r2, [sp, #0x0]
+ b _020DF6FC
+_020DF6F8:
+ mov r8, r0
+_020DF6FC:
+ cmp r8, #0x0
+ ldrnesb r3, [r12, #0x1]!
+ bne _020DF670
+ cmp r3, #0x2a
+ bne _020DF744
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bge _020DF73C
+ rsb r0, r0, #0x0
+ mov r2, #0x0
+ strb r2, [sp, #0x0]
+ str r0, [sp, #0x8]
+_020DF73C:
+ ldrsb r3, [r12, #0x1]!
+ b _020DF794
+_020DF744:
+ ldr r4, _020DFB88 ; =__msl_digit
+ mov r5, #0x0
+ mov r0, #0xa
+ b _020DF768
+_020DF754:
+ ldr r2, [sp, #0x8]
+ sub r3, r3, #0x30
+ mla r6, r2, r0, r3
+ ldrsb r3, [r12, #0x1]!
+ str r6, [sp, #0x8]
+_020DF768:
+ cmp r3, #0x0
+ blt _020DF778
+ cmp r3, #0x80
+ blt _020DF780
+_020DF778:
+ mov r2, r5
+ b _020DF78C
+_020DF780:
+ mov r2, r3, lsl #0x1
+ ldrh r2, [r4, r2]
+ and r2, r2, #0x8
+_020DF78C:
+ cmp r2, #0x0
+ bne _020DF754
+_020DF794:
+ ldr r2, [sp, #0x8]
+ ldr r0, _020DFB8C ; =0x000001FD
+ cmp r2, r0
+ ble _020DF7C4
+ mov r1, #0xff
+ add r0, sp, #0x0
+ strb r1, [sp, #0x5]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x1
+ ldmia sp!, {r4-r8,pc}
+_020DF7C4:
+ cmp r3, #0x2e
+ bne _020DF858
+ ldrsb r3, [r12, #0x1]!
+ mov r0, #0x1
+ strb r0, [sp, #0x2]
+ cmp r3, #0x2a
+ bne _020DF808
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ ldrsb r3, [r12, #0x1]!
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ movlt r0, #0x0
+ strltb r0, [sp, #0x2]
+ b _020DF858
+_020DF808:
+ ldr r2, _020DFB88 ; =__msl_digit
+ mov r4, #0x0
+ mov r0, #0xa
+ b _020DF82C
+_020DF818:
+ ldr r1, [sp, #0xc]
+ sub r3, r3, #0x30
+ mla r5, r1, r0, r3
+ ldrsb r3, [r12, #0x1]!
+ str r5, [sp, #0xc]
+_020DF82C:
+ cmp r3, #0x0
+ blt _020DF83C
+ cmp r3, #0x80
+ blt _020DF844
+_020DF83C:
+ mov r1, r4
+ b _020DF850
+_020DF844:
+ mov r1, r3, lsl #0x1
+ ldrh r1, [r2, r1]
+ and r1, r1, #0x8
+_020DF850:
+ cmp r1, #0x0
+ bne _020DF818
+_020DF858:
+ cmp r3, #0x6c
+ mov r0, #0x1
+ bgt _020DF890
+ cmp r3, #0x68
+ blt _020DF884
+ beq _020DF8AC
+ cmp r3, #0x6a
+ beq _020DF8F8
+ cmp r3, #0x6c
+ beq _020DF8C8
+ b _020DF91C
+_020DF884:
+ cmp r3, #0x4c
+ beq _020DF8EC
+ b _020DF91C
+_020DF890:
+ cmp r3, #0x74
+ bgt _020DF8A0
+ beq _020DF904
+ b _020DF91C
+_020DF8A0:
+ cmp r3, #0x7a
+ beq _020DF910
+ b _020DF91C
+_020DF8AC:
+ ldrsb r1, [r12, #0x1]
+ mov r2, #0x2
+ strb r2, [sp, #0x4]
+ cmp r1, #0x68
+ streqb r0, [sp, #0x4]
+ ldreqsb r3, [r12, #0x1]!
+ b _020DF920
+_020DF8C8:
+ ldrsb r1, [r12, #0x1]
+ mov r2, #0x3
+ strb r2, [sp, #0x4]
+ cmp r1, #0x6c
+ bne _020DF920
+ mov r1, #0x4
+ strb r1, [sp, #0x4]
+ ldrsb r3, [r12, #0x1]!
+ b _020DF920
+_020DF8EC:
+ mov r1, #0x9
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF8F8:
+ mov r1, #0x6
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF904:
+ mov r1, #0x8
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF910:
+ mov r1, #0x7
+ strb r1, [sp, #0x4]
+ b _020DF920
+_020DF91C:
+ mov r0, #0x0
+_020DF920:
+ cmp r0, #0x0
+ ldrnesb r3, [r12, #0x1]!
+ strb r3, [sp, #0x5]
+ cmp r3, #0x61
+ bgt _020DF974
+ bge _020DFA5C
+ cmp r3, #0x47
+ bgt _020DF968
+ subs r0, r3, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020DFB68
+ b _020DFA5C ; case 65
+ b _020DFB68 ; case 66
+ b _020DFB68 ; case 67
+ b _020DFB68 ; case 68
+ b _020DFAA4 ; case 69
+ b _020DFA24 ; case 70
+ b _020DFA94 ; case 71
+_020DF968:
+ cmp r3, #0x58
+ beq _020DF9E8
+ b _020DFB68
+_020DF974:
+ cmp r3, #0x63
+ bgt _020DF984
+ beq _020DFB04
+ b _020DFB68
+_020DF984:
+ sub r0, r3, #0x64
+ cmp r0, #0x14
+ addls pc, pc, r0, lsl #0x2
+ b _020DFB68
+ b _020DF9E8 ; case 100
+ b _020DFAA4 ; case 101
+ b _020DFA24 ; case 102
+ b _020DFA94 ; case 103
+ b _020DFB68 ; case 104
+ b _020DF9E8 ; case 105
+ b _020DFB68 ; case 106
+ b _020DFB68 ; case 107
+ b _020DFB68 ; case 108
+ b _020DFB68 ; case 109
+ b _020DFB54 ; case 110
+ b _020DF9E8 ; case 111
+ b _020DFAE0 ; case 112
+ b _020DFB68 ; case 113
+ b _020DFB68 ; case 114
+ b _020DFB30 ; case 115
+ b _020DFB68 ; case 116
+ b _020DF9E8 ; case 117
+ b _020DFB68 ; case 118
+ b _020DFB68 ; case 119
+ b _020DF9E8 ; case 120
+_020DF9E8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020DFB70
+ ldrb r0, [sp, #0x0]
+ cmp r0, #0x2
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ b _020DFB70
+_020DFA24:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020DFB70
+_020DFA5C:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0xd
+ streq r0, [sp, #0xc]
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ b _020DFB70
+_020DFA94:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+_020DFAA4:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020DFB70
+_020DFAE0:
+ mov r3, #0x78
+ mov r2, #0x1
+ mov r1, #0x3
+ mov r0, #0x8
+ strb r3, [sp, #0x5]
+ strb r2, [sp, #0x3]
+ strb r1, [sp, #0x4]
+ str r0, [sp, #0xc]
+ b _020DFB70
+_020DFB04:
+ ldrb r1, [sp, #0x4]
+ cmp r1, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020DFB70
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB30:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020DFB70
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB54:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x5]
+ b _020DFB70
+_020DFB68:
+ mov r0, #0xff
+ strb r0, [sp, #0x5]
+_020DFB70:
+ add r0, sp, #0x0
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add r0, r12, #0x1
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020DFB88: .word __msl_digit
+_020DFB8C: .word 0x000001FD
+ arm_func_end parse_format
+
+ arm_func_start long2str
+long2str: ; 0x020DFB90
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x10
+ movs r10, r0
+ mov r0, #0x0
+ mov r5, r1
+ str r0, [sp, #0xc]
+ ldr r7, [sp, #0x4c]
+ mov r6, r0
+ strb r0, [r5, #-0x1]!
+ ldrb r0, [sp, #0x43]
+ str r1, [sp, #0x0]
+ ldrb r8, [sp, #0x45]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldrb r11, [sp, #0x41]
+ str r0, [sp, #0x8]
+ cmpeq r7, #0x0
+ bne _020DFC04
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020DFBF0
+ cmp r8, #0x6f
+ beq _020DFC04
+_020DFBF0:
+ add sp, sp, #0x10
+ mov r0, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DFC04:
+ cmp r8, #0x69
+ bgt _020DFC2C
+ bge _020DFC60
+ cmp r8, #0x58
+ bgt _020DFC20
+ beq _020DFC8C
+ b _020DFC94
+_020DFC20:
+ cmp r8, #0x64
+ beq _020DFC60
+ b _020DFC94
+_020DFC2C:
+ cmp r8, #0x6f
+ bgt _020DFC40
+ moveq r4, #0x8
+ moveq r11, #0x0
+ b _020DFC94
+_020DFC40:
+ cmp r8, #0x78
+ bgt _020DFC94
+ cmp r8, #0x75
+ blt _020DFC94
+ beq _020DFC80
+ cmp r8, #0x78
+ beq _020DFC8C
+ b _020DFC94
+_020DFC60:
+ cmp r10, #0x0
+ mov r4, #0xa
+ bge _020DFC94
+ mov r0, #0x1
+ cmp r10, #0x80000000
+ rsbne r10, r10, #0x0
+ str r0, [sp, #0xc]
+ b _020DFC94
+_020DFC80:
+ mov r4, #0xa
+ mov r11, #0x0
+ b _020DFC94
+_020DFC8C:
+ mov r4, #0x10
+ mov r11, #0x0
+_020DFC94:
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ mov r9, r1
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ cmp r9, #0xa
+ mov r10, r0
+ addlt r9, r9, #0x30
+ blt _020DFCCC
+ cmp r8, #0x78
+ addeq r9, r9, #0x57
+ addne r9, r9, #0x37
+_020DFCCC:
+ cmp r10, #0x0
+ strb r9, [r5, #-0x1]!
+ add r6, r6, #0x1
+ bne _020DFC94
+ cmp r4, #0x8
+ bne _020DFD00
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r5, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneb r0, [r5, #-0x1]!
+ addne r6, r6, #0x1
+_020DFD00:
+ ldrb r0, [sp, #0x40]
+ cmp r0, #0x2
+ bne _020DFD34
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x8]
+ cmp r0, #0x0
+ cmpeq r11, #0x0
+ subne r7, r7, #0x1
+ cmp r4, #0x10
+ bne _020DFD34
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ subne r7, r7, #0x2
+_020DFD34:
+ ldr r0, [sp, #0x0]
+ sub r1, r0, r5
+ ldr r0, _020DFDD8 ; =0x000001FD
+ add r1, r7, r1
+ cmp r1, r0
+ addgt sp, sp, #0x10
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ cmp r6, r7
+ bge _020DFD78
+ mov r0, #0x30
+_020DFD68:
+ add r6, r6, #0x1
+ cmp r6, r7
+ strb r0, [r5, #-0x1]!
+ blt _020DFD68
+_020DFD78:
+ cmp r4, #0x10
+ bne _020DFD94
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneb r8, [r5, #-0x1]
+ strneb r0, [r5, #-0x2]!
+_020DFD94:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r5, #-0x1]!
+ bne _020DFDC4
+ cmp r11, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r5, #-0x1]!
+ beq _020DFDC4
+ cmp r11, #0x2
+ moveq r0, #0x20
+ streqb r0, [r5, #-0x1]!
+_020DFDC4:
+ mov r0, r5
+ add sp, sp, #0x10
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020DFDD8: .word 0x000001FD
+ arm_func_end long2str
+
+ arm_func_start longlong2str
+longlong2str: ; 0x020DFDDC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x18
+ mov r9, r1
+ mov r1, #0x0
+ mov r10, r0
+ mov r6, r2
+ mov r0, r1
+ strb r0, [r6, #-0x1]!
+ ldr r0, [sp, #0x58]
+ cmp r9, #0x0
+ str r0, [sp, #0x10]
+ ldrb r0, [sp, #0x4f]
+ cmpeq r10, #0x0
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x54]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x8]
+ ldrb r0, [sp, #0x4d]
+ mov r7, r1
+ ldrb r8, [sp, #0x51]
+ str r0, [sp, #0xc]
+ ldreq r0, [sp, #0x10]
+ cmpeq r0, #0x0
+ bne _020DFE6C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020DFE58
+ cmp r8, #0x6f
+ beq _020DFE6C
+_020DFE58:
+ add sp, sp, #0x18
+ mov r0, r6
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020DFE6C:
+ cmp r8, #0x69
+ bgt _020DFE94
+ bge _020DFEC4
+ cmp r8, #0x58
+ bgt _020DFE88
+ beq _020DFF18
+ b _020DFF24
+_020DFE88:
+ cmp r8, #0x64
+ beq _020DFEC4
+ b _020DFF24
+_020DFE94:
+ cmp r8, #0x6f
+ bgt _020DFEA4
+ beq _020DFEF8
+ b _020DFF24
+_020DFEA4:
+ cmp r8, #0x78
+ bgt _020DFF24
+ cmp r8, #0x75
+ blt _020DFF24
+ beq _020DFF08
+ cmp r8, #0x78
+ beq _020DFF18
+ b _020DFF24
+_020DFEC4:
+ subs r0, r10, #0x0
+ sbcs r0, r9, #0x0
+ mov r11, #0xa
+ mov r5, #0x0
+ bge _020DFF24
+ cmp r9, #0x80000000
+ cmpeq r10, r5
+ beq _020DFEEC
+ rsbs r10, r10, #0x0
+ rsc r9, r9, #0x0
+_020DFEEC:
+ mov r0, #0x1
+ str r0, [sp, #0x14]
+ b _020DFF24
+_020DFEF8:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x8
+ b _020DFF24
+_020DFF08:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0xa
+ b _020DFF24
+_020DFF18:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x10
+_020DFF24:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ull_mod
+ mov r4, r0
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ll_udiv
+ mov r10, r0
+ cmp r4, #0xa
+ mov r9, r1
+ addlt r0, r4, #0x30
+ blt _020DFF70
+ cmp r8, #0x78
+ addeq r0, r4, #0x57
+ addne r0, r4, #0x37
+_020DFF70:
+ strb r0, [r6, #-0x1]!
+ mov r0, #0x0
+ cmp r9, r0
+ cmpeq r10, r0
+ add r7, r7, #0x1
+ bne _020DFF24
+ cmp r5, #0x0
+ cmpeq r11, #0x8
+ bne _020DFFB0
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r6, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneb r0, [r6, #-0x1]!
+ addne r7, r7, #0x1
+_020DFFB0:
+ ldrb r0, [sp, #0x4c]
+ cmp r0, #0x2
+ bne _020E0000
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0xc]
+ cmpeq r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x1
+ strne r0, [sp, #0x10]
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E0000
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x2
+ strne r0, [sp, #0x10]
+_020E0000:
+ ldr r0, [sp, #0x0]
+ ldr r1, _020E00B8 ; =0x000001FD
+ sub r2, r0, r6
+ ldr r0, [sp, #0x10]
+ add r0, r0, r2
+ cmp r0, r1
+ addgt sp, sp, #0x18
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldr r0, [sp, #0x10]
+ cmp r7, r0
+ bge _020E0050
+ mov r1, #0x30
+_020E003C:
+ ldr r0, [sp, #0x10]
+ add r7, r7, #0x1
+ cmp r7, r0
+ strb r1, [r6, #-0x1]!
+ blt _020E003C
+_020E0050:
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E0070
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneb r8, [r6, #-0x1]
+ strneb r0, [r6, #-0x2]!
+_020E0070:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r6, #-0x1]!
+ bne _020E00A4
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r6, #-0x1]!
+ beq _020E00A4
+ cmp r0, #0x2
+ moveq r0, #0x20
+ streqb r0, [r6, #-0x1]!
+_020E00A4:
+ mov r0, r6
+ add sp, sp, #0x18
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E00B8: .word 0x000001FD
+ arm_func_end longlong2str
+
+ arm_func_start double2hex
+double2hex: ; 0x020E00BC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x44
+ ldr r7, [sp, #0x80]
+ ldr r0, _020E056C ; =0x000001FD
+ mov r8, r2
+ cmp r7, r0
+ ldrb r6, [sp, #0x79]
+ ldrb r5, [sp, #0x77]
+ ldrb r4, [sp, #0x75]
+ ldr r1, [sp, #0x68]
+ ldr r2, [sp, #0x6c]
+ addgt sp, sp, #0x44
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r10,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r10, #0x0
+ mov r9, #0x20
+ add r0, sp, #0x8
+ add r3, sp, #0xc
+ strb r10, [sp, #0x8]
+ strh r9, [sp, #0xa]
+ bl __num2dec_internal2
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ bl fabs
+ mov r2, r0
+ mov r0, r10
+ mov r3, r1
+ mov r1, r0
+ bl _deq
+ bne _020E0188
+ ldr r3, _020E0570 ; =UNK_02106DA0
+ sub r0, r8, #0x6
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ add sp, sp, #0x44
+ strb r2, [r8, #-0x6]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r2, [r3, #0x4]
+ ldrb r1, [r3, #0x5]
+ strb r2, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0188:
+ ldrb r0, [sp, #0x11]
+ cmp r0, #0x49
+ bne _020E0298
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E0224
+ cmp r6, #0x41
+ sub r0, r8, #0x5
+ bne _020E01E8
+ ldr r3, _020E0574 ; =UNK_02106DA8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E01E8:
+ ldr r3, _020E0578 ; =UNK_02106DB0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0224:
+ cmp r6, #0x41
+ sub r0, r8, #0x4
+ bne _020E0264
+ ldr r3, _020E057C ; =UNK_02106DB8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0264:
+ ldr r3, _020E0580 ; =UNK_02106DBC
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0298:
+ cmp r0, #0x4e
+ bne _020E03A4
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E0330
+ cmp r6, #0x41
+ sub r0, r8, #0x5
+ bne _020E02F4
+ ldr r3, _020E0584 ; =UNK_02106DC0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E02F4:
+ ldr r3, _020E0588 ; =UNK_02106DC8
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0330:
+ cmp r6, #0x41
+ sub r0, r8, #0x4
+ bne _020E0370
+ ldr r3, _020E058C ; =UNK_02106DD0
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0370:
+ ldr r3, _020E0590 ; =UNK_02106DD4
+ add sp, sp, #0x44
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E03A4:
+ mov r3, r10
+ mov r1, #0x1
+ mov r0, #0x64
+ add r9, sp, #0x68
+ strb r1, [sp, #0x34]
+ strb r1, [sp, #0x35]
+ strb r3, [sp, #0x36]
+ strb r3, [sp, #0x37]
+ strb r3, [sp, #0x38]
+ str r3, [sp, #0x3c]
+ str r1, [sp, #0x40]
+ strb r0, [sp, #0x39]
+_020E03D4:
+ rsb r1, r3, #0x7
+ ldrsb r2, [r9, r3]
+ ldrsb r0, [r9, r1]
+ strb r0, [r9, r3]
+ add r3, r3, #0x1
+ strb r2, [r9, r1]
+ cmp r3, #0x4
+ blt _020E03D4
+ ldrb r0, [sp, #0x69]
+ ldrb r1, [sp, #0x68]
+ ldr sb, _020E0594 ; =0x000007FF
+ mov r0, r0, lsl #0x11
+ orr r1, r0, r1, lsl #0x19
+ add r0, sp, #0x34
+ and lr, r9, r1, lsr #0x15
+ sub r12, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r12, {r0-r3}
+ rsb r0, r9, #0x400
+ mov r1, r8
+ add r0, lr, r0
+ ldmia r12, {r2-r3}
+ bl long2str
+ cmp r6, #0x61
+ moveq r1, #0x70
+ movne r1, #0x50
+ strb r1, [r0, #-0x1]!
+ mov r1, r7, lsl #0x2
+ mov lr, r7
+ cmp r7, #0x1
+ add r8, r1, #0xb
+ add r12, sp, #0x68
+ blt _020E04E4
+ mov r9, #0x30
+_020E045C:
+ cmp r8, #0x40
+ bge _020E04CC
+ ldrb r1, [r12, r8, asr #0x3]
+ and r2, r8, #0x7
+ rsb r3, r2, #0x7
+ mov r2, r1, asr r3
+ sub r10, r8, #0x4
+ bic r1, r8, #0x7
+ bic r10, r10, #0x7
+ cmp r1, r10
+ add r10, r12, r8, asr #0x3
+ and r1, r2, #0xff
+ beq _020E04A0
+ ldrb r2, [r10, #-0x1]
+ mov r2, r2, lsl #0x8
+ orr r1, r1, r2, asr r3
+ and r1, r1, #0xff
+_020E04A0:
+ and r1, r1, #0xf
+ cmp r1, #0xa
+ addcc r1, r1, #0x30
+ andcc r1, r1, #0xff
+ blo _020E04D0
+ cmp r6, #0x61
+ addeq r1, r1, #0x57
+ andeq r1, r1, #0xff
+ addne r1, r1, #0x37
+ andne r1, r1, #0xff
+ b _020E04D0
+_020E04CC:
+ mov r1, r9
+_020E04D0:
+ sub lr, lr, #0x1
+ cmp lr, #0x1
+ strb r1, [r0, #-0x1]!
+ sub r8, r8, #0x4
+ bge _020E045C
+_020E04E4:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r0, #-0x1]!
+ mov r1, #0x31
+ strb r1, [r0, #-0x1]
+ cmp r6, #0x61
+ moveq r1, #0x78
+ movne r1, #0x58
+ strb r1, [r0, #-0x2]!
+ mov r1, #0x30
+ strb r1, [r0, #-0x1]!
+ ldrsb r1, [sp, #0xc]
+ cmp r1, #0x0
+ movne r1, #0x2d
+ strneb r1, [r0, #-0x1]!
+ addne sp, sp, #0x44
+ ldmneia sp!, {r3-r10,lr}
+ addne sp, sp, #0x10
+ bxne lr
+ cmp r4, #0x1
+ moveq r1, #0x2b
+ streqb r1, [r0, #-0x1]!
+ addeq sp, sp, #0x44
+ ldmeqia sp!, {r3-r10,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ cmp r4, #0x2
+ moveq r1, #0x20
+ streqb r1, [r0, #-0x1]!
+ add sp, sp, #0x44
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E056C: .word 0x000001FD
+_020E0570: .word UNK_02106DA0
+_020E0574: .word UNK_02106DA8
+_020E0578: .word UNK_02106DB0
+_020E057C: .word UNK_02106DB8
+_020E0580: .word UNK_02106DBC
+_020E0584: .word UNK_02106DC0
+_020E0588: .word UNK_02106DC8
+_020E058C: .word UNK_02106DD0
+_020E0590: .word UNK_02106DD4
+_020E0594: .word 0x000007FF
+ arm_func_end double2hex
+
+ arm_func_start round_decimal
+round_decimal: ; 0x020E0598
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ bge _020E05C0
+_020E05A4:
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ strb r1, [r0, #0x4]
+ mov r1, #0x30
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E05C0:
+ ldrb lr, [r0, #0x4]
+ cmp r1, lr
+ ldmgeia sp!, {r4,pc}
+ add r12, r0, #0x5
+ add r2, r12, r1
+ add r2, r2, #0x1
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x5
+ bne _020E0620
+ add r12, r12, lr
+_020E05F4:
+ sub r12, r12, #0x1
+ cmp r12, r2
+ bls _020E060C
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x30
+ beq _020E05F4
+_020E060C:
+ cmp r12, r2
+ ldreqsb r3, [r2, #-0x1]
+ andeq r4, r3, #0x1
+ movne r4, #0x1
+ b _020E0628
+_020E0620:
+ movgt r4, #0x1
+ movle r4, #0x0
+_020E0628:
+ cmp r1, #0x0
+ beq _020E0684
+ mov r12, #0x0
+ mov lr, #0x1
+_020E0638:
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ add r3, r3, r4
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x9
+ movgt r4, lr
+ movle r4, r12
+ cmp r4, #0x0
+ bne _020E0668
+ cmp r3, #0x0
+ bne _020E0670
+_020E0668:
+ sub r1, r1, #0x1
+ b _020E067C
+_020E0670:
+ add r3, r3, #0x30
+ strb r3, [r2, #0x0]
+ b _020E0684
+_020E067C:
+ cmp r1, #0x0
+ bne _020E0638
+_020E0684:
+ cmp r4, #0x0
+ beq _020E06AC
+ ldrsh r3, [r0, #0x2]
+ mov r2, #0x1
+ mov r1, #0x31
+ add r3, r3, #0x1
+ strh r3, [r0, #0x2]
+ strb r2, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E06AC:
+ cmp r1, #0x0
+ beq _020E05A4
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4,pc}
+ arm_func_end round_decimal
+
+ arm_func_start float2str
+float2str: ; 0x020E06BC
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x2c
+ ldr r7, [sp, #0x68]
+ ldr r3, _020E0DF4 ; =0x000001FD
+ ldrb r6, [sp, #0x61]
+ ldrb r5, [sp, #0x5f]
+ ldrb r4, [sp, #0x5d]
+ cmp r7, r3
+ mov r10, r0
+ mov r8, r1
+ mov r9, r2
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r12, #0x0
+ mov r11, #0x20
+ add r0, sp, #0x0
+ add r3, sp, #0x4
+ mov r1, r10
+ mov r2, r8
+ strb r12, [sp, #0x0]
+ strh r11, [sp, #0x2]
+ bl __num2dec_internal2
+ ldrb r0, [sp, #0x8]
+ add r1, sp, #0x9
+ add r0, r1, r0
+ b _020E074C
+_020E0734:
+ ldrb r2, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r2, r2, #0x1
+ add r1, r1, #0x1
+ strb r2, [sp, #0x8]
+ strh r1, [sp, #0x6]
+_020E074C:
+ ldrb r1, [sp, #0x8]
+ cmp r1, #0x1
+ bls _020E0764
+ ldrsb r1, [r0, #-0x1]!
+ cmp r1, #0x30
+ beq _020E0734
+_020E0764:
+ ldrb r0, [sp, #0x9]
+ cmp r0, #0x30
+ beq _020E0784
+ cmp r0, #0x49
+ beq _020E0790
+ cmp r0, #0x4e
+ beq _020E08F0
+ b _020E0A44
+_020E0784:
+ mov r0, #0x0
+ strh r0, [sp, #0x6]
+ b _020E0A44
+_020E0790:
+ mov r2, #0x0
+ mov r0, r10
+ mov r1, r8
+ mov r3, r2
+ bl _dls
+ bhs _020E0854
+ cmp r6, #0x0
+ sub r0, r9, #0x5
+ blt _020E07BC
+ cmp r6, #0x80
+ blt _020E07C4
+_020E07BC:
+ mov r1, #0x0
+ b _020E07D4
+_020E07C4:
+ ldr r1, _020E0DF8 ; =__msl_digit
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E07D4:
+ cmp r1, #0x0
+ beq _020E0818
+ ldr r3, _020E0DFC ; =UNK_02106DA8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0818:
+ ldr r3, _020E0E00 ; =UNK_02106DB0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0854:
+ cmp r6, #0x0
+ sub r0, r9, #0x4
+ blt _020E0868
+ cmp r6, #0x80
+ blt _020E0870
+_020E0868:
+ mov r1, #0x0
+ b _020E0880
+_020E0870:
+ ldr r1, _020E0DF8 ; =__msl_digit
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E0880:
+ cmp r1, #0x0
+ beq _020E08BC
+ ldr r3, _020E0E04 ; =UNK_02106DB8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E08BC:
+ ldr r3, _020E0E08 ; =UNK_02106DBC
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E08F0:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E09A8
+ cmp r6, #0x0
+ sub r0, r9, #0x5
+ blt _020E0910
+ cmp r6, #0x80
+ blt _020E0918
+_020E0910:
+ mov r1, #0x0
+ b _020E0928
+_020E0918:
+ ldr r1, _020E0DF8 ; =__msl_digit
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E0928:
+ cmp r1, #0x0
+ beq _020E096C
+ ldr r3, _020E0E0C ; =UNK_02106DC0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E096C:
+ ldr r3, _020E0E10 ; =UNK_02106DC8
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldrb r1, [r3, #0x4]
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E09A8:
+ cmp r6, #0x0
+ sub r0, r9, #0x4
+ blt _020E09BC
+ cmp r6, #0x80
+ blt _020E09C4
+_020E09BC:
+ mov r1, #0x0
+ b _020E09D4
+_020E09C4:
+ ldr r1, _020E0DF8 ; =__msl_digit
+ mov r2, r6, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x200
+_020E09D4:
+ cmp r1, #0x0
+ beq _020E0A10
+ ldr r3, _020E0E14 ; =UNK_02106DD0
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0A10:
+ ldr r3, _020E0E18 ; =UNK_02106DD4
+ add sp, sp, #0x2c
+ ldrb r2, [r3, #0x0]
+ ldrb r1, [r3, #0x1]
+ strb r2, [r0, #0x0]
+ strb r1, [r0, #0x1]
+ ldrb r2, [r3, #0x2]
+ ldrb r1, [r3, #0x3]
+ strb r2, [r0, #0x2]
+ strb r1, [r0, #0x3]
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0A44:
+ ldrb r0, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r8, r9, #0x1
+ sub r0, r0, #0x1
+ add r0, r1, r0
+ strh r0, [sp, #0x6]
+ mov r0, #0x0
+ strb r0, [r8, #0x0]
+ cmp r6, #0x65
+ bgt _020E0A98
+ bge _020E0B24
+ cmp r6, #0x47
+ bgt _020E0DE0
+ cmp r6, #0x45
+ blt _020E0DE0
+ beq _020E0B24
+ cmp r6, #0x46
+ beq _020E0C6C
+ cmp r6, #0x47
+ beq _020E0AB0
+ b _020E0DE0
+_020E0A98:
+ cmp r6, #0x66
+ bgt _020E0AA8
+ beq _020E0C6C
+ b _020E0DE0
+_020E0AA8:
+ cmp r6, #0x67
+ bne _020E0DE0
+_020E0AB0:
+ ldrb r0, [sp, #0x8]
+ cmp r0, r7
+ ble _020E0AC8
+ add r0, sp, #0x4
+ mov r1, r7
+ bl round_decimal
+_020E0AC8:
+ ldrsh r2, [sp, #0x6]
+ mvn r0, #0x3
+ cmp r2, r0
+ blt _020E0AE0
+ cmp r2, r7
+ blt _020E0B00
+_020E0AE0:
+ cmp r5, #0x0
+ ldreqb r0, [sp, #0x8]
+ subne r7, r7, #0x1
+ subeq r7, r0, #0x1
+ cmp r6, #0x67
+ moveq r6, #0x65
+ movne r6, #0x45
+ b _020E0B24
+_020E0B00:
+ cmp r5, #0x0
+ addne r0, r2, #0x1
+ subne r7, r7, r0
+ bne _020E0C6C
+ ldrb r1, [sp, #0x8]
+ add r0, r2, #0x1
+ subs r7, r1, r0
+ movmi r7, #0x0
+ b _020E0C6C
+_020E0B24:
+ ldrb r0, [sp, #0x8]
+ add r1, r7, #0x1
+ cmp r0, r1
+ ble _020E0B3C
+ add r0, sp, #0x4
+ bl round_decimal
+_020E0B3C:
+ ldrsh lr, [sp, #0x6]
+ mov r11, #0x2b
+ mov r10, #0x0
+ cmp lr, #0x0
+ rsblt lr, lr, #0x0
+ movlt r11, #0x2d
+ ldr r3, _020E0E1C ; =0x66666667
+ mov r0, #0xa
+ b _020E0B90
+_020E0B60:
+ mov r1, lr, lsr #0x1f
+ smull r2, r12, r3, lr
+ add r12, r1, r12, asr #0x2
+ smull r1, r2, r0, r12
+ sub r12, lr, r1
+ add r1, r12, #0x30
+ strb r1, [r8, #-0x1]!
+ mov r2, lr
+ smull r1, lr, r3, r2
+ mov r1, r2, lsr #0x1f
+ add lr, r1, lr, asr #0x2
+ add r10, r10, #0x1
+_020E0B90:
+ cmp lr, #0x0
+ bne _020E0B60
+ cmp r10, #0x2
+ blt _020E0B60
+ strb r11, [r8, #-0x1]
+ strb r6, [r8, #-0x2]!
+ sub r1, r9, r8
+ ldr r0, _020E0DF4 ; =0x000001FD
+ add r1, r7, r1
+ cmp r1, r0
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldrb r1, [sp, #0x8]
+ add r0, r7, #0x1
+ cmp r1, r0
+ bge _020E0BFC
+ add r0, r7, #0x2
+ sub r0, r0, r1
+ subs r1, r0, #0x1
+ beq _020E0BFC
+ mov r0, #0x30
+_020E0BF0:
+ strb r0, [r8, #-0x1]!
+ subs r1, r1, #0x1
+ bne _020E0BF0
+_020E0BFC:
+ ldrb r1, [sp, #0x8]
+ add r0, sp, #0x9
+ add r2, r0, r1
+ subs r1, r1, #0x1
+ beq _020E0C20
+_020E0C10:
+ ldrsb r0, [r2, #-0x1]!
+ subs r1, r1, #0x1
+ strb r0, [r8, #-0x1]!
+ bne _020E0C10
+_020E0C20:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r0, #0x2e
+ strneb r0, [r8, #-0x1]!
+ ldrb r0, [sp, #0x9]
+ strb r0, [r8, #-0x1]!
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E0DE0
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E0DE0
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+ b _020E0DE0
+_020E0C6C:
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+ cmp r1, r7
+ ble _020E0CAC
+ sub r1, r1, r7
+ add r0, sp, #0x4
+ sub r1, r2, r1
+ bl round_decimal
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+_020E0CAC:
+ adds r0, r3, #0x1
+ movmi r0, #0x0
+ ldr r3, _020E0DF4 ; =0x000001FD
+ add r6, r0, r1
+ cmp r6, r3
+ addgt sp, sp, #0x2c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ add r3, sp, #0x9
+ sub r6, r7, r1
+ cmp r6, #0x0
+ add r2, r3, r2
+ mov r9, #0x0
+ ble _020E0D00
+ mov r3, #0x30
+_020E0CF0:
+ add r9, r9, #0x1
+ cmp r9, r6
+ strb r3, [r8, #-0x1]!
+ blt _020E0CF0
+_020E0D00:
+ mov r6, #0x0
+ b _020E0D14
+_020E0D08:
+ ldrsb r3, [r2, #-0x1]!
+ add r6, r6, #0x1
+ strb r3, [r8, #-0x1]!
+_020E0D14:
+ cmp r6, r1
+ ldrltb r3, [sp, #0x8]
+ cmplt r6, r3
+ blt _020E0D08
+ cmp r6, r1
+ bge _020E0D40
+ mov r3, #0x30
+_020E0D30:
+ add r6, r6, #0x1
+ cmp r6, r1
+ strb r3, [r8, #-0x1]!
+ blt _020E0D30
+_020E0D40:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r8, #-0x1]!
+ cmp r0, #0x0
+ beq _020E0DA8
+ ldrb r1, [sp, #0x8]
+ mov r5, #0x0
+ sub r1, r0, r1
+ cmp r1, #0x0
+ ble _020E0D88
+ mov r3, #0x30
+_020E0D70:
+ strb r3, [r8, #-0x1]!
+ ldrb r1, [sp, #0x8]
+ add r5, r5, #0x1
+ sub r1, r0, r1
+ cmp r5, r1
+ blt _020E0D70
+_020E0D88:
+ cmp r5, r0
+ bge _020E0DB0
+_020E0D90:
+ ldrsb r1, [r2, #-0x1]!
+ add r5, r5, #0x1
+ cmp r5, r0
+ strb r1, [r8, #-0x1]!
+ blt _020E0D90
+ b _020E0DB0
+_020E0DA8:
+ mov r0, #0x30
+ strb r0, [r8, #-0x1]!
+_020E0DB0:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E0DE0
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E0DE0
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+_020E0DE0:
+ mov r0, r8
+ add sp, sp, #0x2c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E0DF4: .word 0x000001FD
+_020E0DF8: .word __msl_digit
+_020E0DFC: .word UNK_02106DA8
+_020E0E00: .word UNK_02106DB0
+_020E0E04: .word UNK_02106DB8
+_020E0E08: .word UNK_02106DBC
+_020E0E0C: .word UNK_02106DC0
+_020E0E10: .word UNK_02106DC8
+_020E0E14: .word UNK_02106DD0
+_020E0E18: .word UNK_02106DD4
+_020E0E1C: .word 0x66666667
+ arm_func_end float2str
+
+ arm_func_start __pformatter
+__pformatter:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x22c
+ mov r3, #0x20
+ mov r11, r2
+ strb r3, [sp, #0x19]
+ ldrsb r2, [r11, #0x0]
+ mov r9, r0
+ mov r8, r1
+ cmp r2, #0x0
+ mov r10, #0x0
+ beq _020E1628
+_020E0E50:
+ mov r0, r11
+ mov r1, #0x25
+ bl strchr
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _020E0EA4
+ mov r0, r11
+ bl strlen
+ movs r2, r0
+ add r10, r10, r2
+ beq _020E1628
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ bne _020E1628
+ add sp, sp, #0x22c
+ mvn r0, #0x0
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E0EA4:
+ subs r2, r0, r11
+ add r10, r10, r2
+ beq _020E0ED4
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E0ED4:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x25c
+ add r2, sp, #0x1c
+ bl parse_format
+ ldrb r1, [sp, #0x21]
+ mov r11, r0
+ cmp r1, #0x61
+ bgt _020E0F40
+ bge _020E12A4
+ cmp r1, #0x47
+ bgt _020E0F34
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E0F28
+ b _020E12A4 ; case 65
+ b _020E148C ; case 66
+ b _020E148C ; case 67
+ b _020E148C ; case 68
+ b _020E123C ; case 69
+ b _020E123C ; case 70
+ b _020E123C ; case 71
+_020E0F28:
+ cmp r1, #0x25
+ beq _020E1478
+ b _020E148C
+_020E0F34:
+ cmp r1, #0x58
+ beq _020E1100
+ b _020E148C
+_020E0F40:
+ cmp r1, #0x75
+ bgt _020E0FA8
+ subs r0, r1, #0x64
+ addpl pc, pc, r0, lsl #0x2
+ b _020E0F9C
+ b _020E0FC0 ; case 100
+ b _020E123C ; case 101
+ b _020E123C ; case 102
+ b _020E123C ; case 103
+ b _020E148C ; case 104
+ b _020E0FC0 ; case 105
+ b _020E148C ; case 106
+ b _020E148C ; case 107
+ b _020E148C ; case 108
+ b _020E148C ; case 109
+ b _020E13CC ; case 110
+ b _020E1100 ; case 111
+ b _020E148C ; case 112
+ b _020E148C ; case 113
+ b _020E148C ; case 114
+ b _020E130C ; case 115
+ b _020E148C ; case 116
+ b _020E1100 ; case 117
+_020E0F9C:
+ cmp r1, #0x63
+ beq _020E1458
+ b _020E148C
+_020E0FA8:
+ cmp r1, #0x78
+ bgt _020E0FB8
+ beq _020E1100
+ b _020E148C
+_020E0FB8:
+ cmp r1, #0xff
+ b _020E148C
+_020E0FC0:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x3
+ bne _020E0FE0
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E0FE0:
+ cmp r0, #0x4
+ bne _020E1008
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E1078
+_020E1008:
+ cmp r0, #0x6
+ bne _020E1030
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E1078
+_020E1030:
+ cmp r0, #0x7
+ bne _020E104C
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E104C:
+ cmp r0, #0x8
+ bne _020E1068
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E1078
+_020E1068:
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+_020E1078:
+ cmp r0, #0x2
+ moveq r1, r5, lsl #0x10
+ moveq r5, r1, asr #0x10
+ cmp r0, #0x1
+ moveq r1, r5, lsl #0x18
+ moveq r5, r1, asr #0x18
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x1c
+ bne _020E10CC
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x22c
+ bl longlong2str
+ movs r7, r0
+ beq _020E148C
+ b _020E10F0
+_020E10CC:
+ sub r4, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ add r1, sp, #0x22c
+ mov r0, r5
+ ldmia r4, {r2-r3}
+ bl long2str
+ movs r7, r0
+ beq _020E148C
+_020E10F0:
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E1100:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x3
+ bne _020E1120
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E1120:
+ cmp r0, #0x4
+ bne _020E1148
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E11B8
+_020E1148:
+ cmp r0, #0x6
+ bne _020E1170
+ ldr r1, [sp, #0x25c]
+ add r2, r1, #0x8
+ str r2, [sp, #0x25c]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E11B8
+_020E1170:
+ cmp r0, #0x7
+ bne _020E118C
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E118C:
+ cmp r0, #0x8
+ bne _020E11A8
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+ b _020E11B8
+_020E11A8:
+ ldr r1, [sp, #0x25c]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r5, [r1, #-0x4]
+_020E11B8:
+ cmp r0, #0x2
+ moveq r1, r5, lsl #0x10
+ moveq r5, r1, lsr #0x10
+ cmp r0, #0x1
+ andeq r5, r5, #0xff
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x1c
+ bne _020E1208
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x22c
+ bl longlong2str
+ movs r7, r0
+ beq _020E148C
+ b _020E122C
+_020E1208:
+ sub r4, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ add r1, sp, #0x22c
+ mov r0, r5
+ ldmia r4, {r2-r3}
+ bl long2str
+ movs r7, r0
+ beq _020E148C
+_020E122C:
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E123C:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x25c]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x25c]
+ bne _020E1260
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x8
+ str r0, [sp, #0x25c]
+_020E1260:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x1c
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x22c
+ bl float2str
+ movs r7, r0
+ beq _020E148C
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E12A4:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x25c]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x25c]
+ bne _020E12C8
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x8
+ str r0, [sp, #0x25c]
+_020E12C8:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x1c
+ sub r4, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r4, {r0-r3}
+ ldr r3, [r4, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x22c
+ bl double2hex
+ movs r7, r0
+ beq _020E148C
+ add r0, sp, #0x200
+ add r0, r0, #0x2b
+ sub r6, r0, r7
+ b _020E14D8
+_020E130C:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x5
+ bne _020E134C
+ ldr r0, [sp, #0x25c]
+ mov r2, #0x200
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r1, [r0, #-0x4]
+ add r0, sp, #0x2c
+ cmp r1, #0x0
+ ldreq r1, _020E163C ; =UNK_02106DD8
+ bl wcstombs
+ cmp r0, #0x0
+ blt _020E148C
+ add r7, sp, #0x2c
+ b _020E135C
+_020E134C:
+ ldr r0, [sp, #0x25c]
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r7, [r0, #-0x4]
+_020E135C:
+ ldrb r0, [sp, #0x1f]
+ cmp r7, #0x0
+ ldreq r7, _020E1640 ; =UNK_02106DDC
+ cmp r0, #0x0
+ beq _020E1390
+ ldrb r0, [sp, #0x1e]
+ ldrb r6, [r7], #0x1
+ cmp r0, #0x0
+ beq _020E14D8
+ ldr r0, [sp, #0x28]
+ cmp r6, r0
+ movgt r6, r0
+ b _020E14D8
+_020E1390:
+ ldrb r0, [sp, #0x1e]
+ cmp r0, #0x0
+ beq _020E13BC
+ ldr r6, [sp, #0x28]
+ mov r0, r7
+ mov r2, r6
+ mov r1, #0x0
+ bl memchr
+ cmp r0, #0x0
+ subne r6, r0, r7
+ b _020E14D8
+_020E13BC:
+ mov r0, r7
+ bl strlen
+ mov r6, r0
+ b _020E14D8
+_020E13CC:
+ ldr r1, [sp, #0x25c]
+ ldrb r0, [sp, #0x20]
+ add r1, r1, #0x4
+ str r1, [sp, #0x25c]
+ ldr r1, [r1, #-0x4]
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020E161C
+ b _020E1410 ; case 0
+ b _020E161C ; case 1
+ b _020E1418 ; case 2
+ b _020E1420 ; case 3
+ b _020E1448 ; case 4
+ b _020E161C ; case 5
+ b _020E1428 ; case 6
+ b _020E1438 ; case 7
+ b _020E1440 ; case 8
+_020E1410:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1418:
+ strh r10, [r1, #0x0]
+ b _020E161C
+_020E1420:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1428:
+ str r10, [r1, #0x0]
+ mov r0, r10, asr #0x1f
+ str r0, [r1, #0x4]
+ b _020E161C
+_020E1438:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1440:
+ str r10, [r1, #0x0]
+ b _020E161C
+_020E1448:
+ str r10, [r1, #0x0]
+ mov r0, r10, asr #0x1f
+ str r0, [r1, #0x4]
+ b _020E161C
+_020E1458:
+ ldr r0, [sp, #0x25c]
+ add r7, sp, #0x2c
+ add r0, r0, #0x4
+ str r0, [sp, #0x25c]
+ ldr r0, [r0, #-0x4]
+ mov r6, #0x1
+ strb r0, [sp, #0x2c]
+ b _020E14D8
+_020E1478:
+ mov r0, #0x25
+ strb r0, [sp, #0x2c]
+ add r7, sp, #0x2c
+ mov r6, #0x1
+ b _020E14D8
+_020E148C:
+ ldr r0, [sp, #0xc]
+ bl strlen
+ movs r4, r0
+ beq _020E14C4
+ ldr r1, [sp, #0xc]
+ mov r0, r8
+ mov r2, r4
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E14C4:
+ add sp, sp, #0x22c
+ add r0, r10, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E14D8:
+ ldrb r0, [sp, #0x1c]
+ mov r4, r6
+ cmp r0, #0x0
+ beq _020E158C
+ cmp r0, #0x2
+ moveq r0, #0x30
+ movne r0, #0x20
+ strb r0, [sp, #0x19]
+ ldrsb r0, [r7, #0x0]
+ cmp r0, #0x2b
+ cmpne r0, #0x2d
+ cmpne r0, #0x20
+ bne _020E1548
+ ldrsb r0, [sp, #0x19]
+ cmp r0, #0x30
+ bne _020E1548
+ mov r0, r8
+ mov r1, r7
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ add r7, r7, #0x1
+ sub r6, r6, #0x1
+_020E1548:
+ ldr r0, [sp, #0x24]
+ cmp r4, r0
+ bge _020E158C
+_020E1554:
+ mov r0, r8
+ add r1, sp, #0x19
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x24]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _020E1554
+_020E158C:
+ cmp r6, #0x0
+ beq _020E15BC
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E15BC:
+ ldrb r0, [sp, #0x1c]
+ cmp r0, #0x0
+ bne _020E1618
+ ldr r0, [sp, #0x24]
+ cmp r4, r0
+ bge _020E1618
+ mov r6, #0x20
+ add r7, sp, #0x18
+_020E15DC:
+ mov r0, r8
+ mov r1, r7
+ mov r2, #0x1
+ strb r6, [sp, #0x18]
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x22c
+ mvneq r0, #0x0
+ ldmeqia sp!, {r4-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x24]
+ add r4, r4, #0x1
+ cmp r4, r0
+ blt _020E15DC
+_020E1618:
+ add r10, r10, r4
+_020E161C:
+ ldrsb r0, [r11, #0x0]
+ cmp r0, #0x0
+ bne _020E0E50
+_020E1628:
+ mov r0, r10
+ add sp, sp, #0x22c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E163C: .word UNK_02106DD8
+_020E1640: .word UNK_02106DDC
+ arm_func_end __pformatter
+
+ arm_func_start __FileWrite
+__FileWrite: ; 0x020E1644
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ mov r0, r1
+ mov r3, r5
+ mov r1, #0x1
+ mov r4, r2
+ bl __fwrite
+ cmp r4, r0
+ movne r5, #0x0
+ mov r0, r5
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __FileWrite
+
+ arm_func_start __StringWrite
+__StringWrite: ; 0x020E1670
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r0
+ ldr r3, [r4, #0x8]
+ mov r5, r2
+ ldr r2, [r4, #0x4]
+ add r0, r3, r5
+ cmp r0, r2
+ ldr r0, [r4, #0x0]
+ subhi r5, r2, r3
+ mov r2, r5
+ add r0, r0, r3
+ bl memcpy
+ ldr r1, [r4, #0x8]
+ mov r0, #0x1
+ add r1, r1, r5
+ str r1, [r4, #0x8]
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __StringWrite
+
+ arm_func_start printf
+printf: ; 0x020E16B4
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r0, _020E17B4 ; =__files + 0x4C
+ mvn r1, #0x0
+ bl fwide
+ cmp r0, #0x0
+ mvnge r0, #0x0
+ ldmgeia sp!, {r4,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r0, _020E17B8 ; =__cs + 0x48
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020E1710
+ ldr r0, _020E17BC ; =OSi_ThreadInfo
+ ldr r1, _020E17C0 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E17C4 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0xc]
+ str r2, [r0, #0xc]
+ b _020E1768
+_020E1710:
+ ldr r0, _020E17BC ; =OSi_ThreadInfo
+ ldr r1, _020E17C0 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0xc]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020E1740
+ ldr r0, _020E17C4 ; =__cs_ref
+ ldr r1, [r0, #0xc]
+ add r1, r1, #0x1
+ str r1, [r0, #0xc]
+ b _020E1768
+_020E1740:
+ ldr r0, _020E17B8 ; =__cs + 0x48
+ bl OS_LockMutex
+ ldr r0, _020E17BC ; =OSi_ThreadInfo
+ ldr r1, _020E17C0 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E17C4 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0xc]
+ str r2, [r0, #0xc]
+_020E1768:
+ add r0, sp, #0x8
+ bic r3, r0, #0x3
+ ldr r2, [sp, #0x8]
+ ldr r0, _020E17C8 ; =__FileWrite
+ ldr r1, _020E17B4 ; =__files + 0x4C
+ add r3, r3, #0x4
+ bl __pformatter
+ ldr r1, _020E17C4 ; =__cs_ref
+ mov r4, r0
+ ldr r0, [r1, #0xc]
+ subs r0, r0, #0x1
+ str r0, [r1, #0xc]
+ bne _020E17A4
+ ldr r0, _020E17B8 ; =__cs + 0x48
+ bl OS_UnlockMutex
+_020E17A4:
+ mov r0, r4
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E17B4: .word __files + 0x4C
+_020E17B8: .word __cs + 0x48
+_020E17BC: .word OSi_ThreadInfo
+_020E17C0: .word __cs_id
+_020E17C4: .word __cs_ref
+_020E17C8: .word __FileWrite
+ arm_func_end printf
+
+ arm_func_start vsnprintf
+vsnprintf: ; 0x020E17CC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ mov r4, r1
+ mov r12, #0x0
+ ldr r0, _020E1830 ; =__StringWrite
+ add r1, sp, #0x0
+ str r5, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r12, [sp, #0x8]
+ bl __pformatter
+ cmp r5, #0x0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4-r5,pc}
+ cmp r0, r4
+ movcc r1, #0x0
+ addcc sp, sp, #0xc
+ strccb r1, [r5, r0]
+ ldmccia sp!, {r4-r5,pc}
+ cmp r4, #0x0
+ addne r1, r5, r4
+ movne r2, #0x0
+ strneb r2, [r1, #-0x1]
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E1830: .word __StringWrite
+ arm_func_end vsnprintf
+
+ arm_func_start snprintf
+snprintf: ; 0x020E1834
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r3, sp, #0x10
+ bic r3, r3, #0x3
+ ldr r2, [sp, #0x10]
+ add r3, r3, #0x4
+ bl vsnprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end snprintf
+
+ arm_func_start sprintf
+sprintf: ; 0x020E185C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r1, sp, #0xc
+ bic r1, r1, #0x3
+ add r3, r1, #0x4
+ ldr r2, [sp, #0xc]
+ mvn r1, #0x0
+ bl vsnprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end sprintf
+
+ .section .exceptix,4
+
+ .word long2str
+ .short 589
+ .word 0x0090FF20
+ .word longlong2str
+ .short 737
+ .word 0x00A0FF20
+ .word double2hex
+ .short 1245
+ .word 0x00F07F20
+ .word float2str
+ .short 1893
+ .word 0x00C0FF20
+ .word __pformatter
+ .short 2084
+ .word UNK_020EC710
+ .word __FileWrite
+ .short 45
+ .word 0x00200300
+ .word __StringWrite
+ .short 69
+ .word 0x00200300
+ .word printf
+ .short 281
+ .word 0x00300120
+ .word vsnprintf
+ .short 105
+ .word 0x00300300
+ .word snprintf
+ .short 41
+ .word 0x00300020
+ .word sprintf
+ .short 45
+ .word 0x00300020
+
+ .section .exception,8
+
+UNK_020EC710: ; 0x020EC710
+ .byte 0x20, 0xFF, 0x09, 0x60
+ .balign 8
diff --git a/arm9/asm/MSL_Common_qsort.s b/arm9/asm/MSL_Common_qsort.s
new file mode 100644
index 00000000..edfc142b
--- /dev/null
+++ b/arm9/asm/MSL_Common_qsort.s
@@ -0,0 +1,112 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start qsort
+qsort: ; 0x020E1888
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x10
+ mov r9, r1
+ cmp r9, #0x2
+ mov r10, r0
+ mov r8, r2
+ mov r7, r3
+ addcc sp, sp, #0x10
+ ldmccia sp!, {r3-r11,pc}
+ mov r0, r9, lsr #0x1
+ add r11, r0, #0x1
+ sub r0, r11, #0x1
+ mla r0, r8, r0, r10
+ sub r2, r9, #0x1
+ str r0, [sp, #0xc]
+ mla r0, r8, r2, r10
+ str r0, [sp, #0x8]
+ mul r0, r11, r8
+ mvn r1, #0x0
+ str r0, [sp, #0x4]
+ mul r0, r8, r1
+ str r0, [sp, #0x0]
+_020E18E0:
+ cmp r11, #0x1
+ bls _020E1908
+ ldr r0, [sp, #0x4]
+ sub r11, r11, #0x1
+ sub r0, r0, r8
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ sub r0, r0, r8
+ str r0, [sp, #0xc]
+ b _020E1950
+_020E1908:
+ mov r2, r8
+ ldr r4, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ cmp r8, #0x0
+ beq _020E1934
+_020E191C:
+ ldrsb r0, [r4, #0x0]
+ ldrsb r1, [r3, #0x0]
+ subs r2, r2, #0x1
+ strb r0, [r3], #0x1
+ strb r1, [r4], #0x1
+ bne _020E191C
+_020E1934:
+ sub r9, r9, #0x1
+ cmp r9, #0x1
+ addeq sp, sp, #0x10
+ ldmeqia sp!, {r3-r11,pc}
+ ldr r0, [sp, #0x8]
+ sub r0, r0, r8
+ str r0, [sp, #0x8]
+_020E1950:
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0x0]
+ mov r4, r11
+ add r0, r1, r0
+ cmp r9, r11, lsl #0x1
+ add r5, r10, r0
+ blo _020E18E0
+_020E196C:
+ mov r4, r4, lsl #0x1
+ sub r0, r4, #0x1
+ mov r6, r5
+ mla r5, r8, r0, r10
+ cmp r9, r4
+ bls _020E199C
+ mov r0, r5
+ add r1, r5, r8
+ blx r7
+ cmp r0, #0x0
+ addlt r4, r4, #0x1
+ addlt r5, r5, r8
+_020E199C:
+ mov r0, r6
+ mov r1, r5
+ blx r7
+ cmp r0, #0x0
+ bge _020E18E0
+ mov r2, r8
+ mov r3, r5
+ cmp r8, #0x0
+ beq _020E19D8
+_020E19C0:
+ ldrsb r1, [r6, #0x0]
+ ldrsb r0, [r3, #0x0]
+ subs r2, r2, #0x1
+ strb r0, [r6], #0x1
+ strb r1, [r3], #0x1
+ bne _020E19C0
+_020E19D8:
+ cmp r9, r4, lsl #0x1
+ bhs _020E196C
+ b _020E18E0
+ add sp, sp, #0x10
+ ldmia sp!, {r3-r11,pc}
+ arm_func_end qsort
+
+ .section .exceptix,4
+
+ .word qsort
+ .short 357
+ .word 0x0070FF00
diff --git a/arm9/asm/MSL_Common_rand.s b/arm9/asm/MSL_Common_rand.s
new file mode 100644
index 00000000..8191a5a4
--- /dev/null
+++ b/arm9/asm/MSL_Common_rand.s
@@ -0,0 +1,38 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+ .global random_next
+random_next: ; 0x02106DE0
+ .word 0x00000001
+ .size random_next,.-random_next
+
+ .text
+
+ arm_func_start rand
+rand: ; 0x020E19EC
+ ldr r2, _020E1A14 ; =random_next
+ ldr r0, _020E1A18 ; =0x41C64E6D
+ ldr r3, [r2, #0x0]
+ ldr r1, _020E1A1C ; =0x00007FFF
+ mul r0, r3, r0
+ add r0, r0, #0x39
+ add r0, r0, #0x3000
+ str r0, [r2, #0x0]
+ and r0, r1, r0, lsr #0x10
+ bx lr
+ .balign 4
+_020E1A14: .word random_next
+_020E1A18: .word 0x41C64E6D
+_020E1A1C: .word 0x00007FFF
+ arm_func_end rand
+
+ arm_func_start srand
+srand: ; 0x020E1A20
+ ldr r1, _020E1A2C ; =random_next
+ str r0, [r1, #0x0]
+ bx lr
+ .balign 4
+_020E1A2C: .word random_next
+ arm_func_end srand
diff --git a/arm9/asm/MSL_Common_scanf.s b/arm9/asm/MSL_Common_scanf.s
new file mode 100644
index 00000000..8d9a8fe3
--- /dev/null
+++ b/arm9/asm/MSL_Common_scanf.s
@@ -0,0 +1,1466 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+parse_format$f: ; 0x0210440C
+ .byte 0x00, 0x00, 0x00, 0x00
+ .word 0x7FFFFFFF
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .size parse_format$f,.-parse_format$f
+
+ .text
+
+ local_arm_func_start parse_format
+parse_format: ; 0x020E1A30
+ stmdb sp!, {r3-r7,lr}
+ sub sp, sp, #0x28
+ ldr r6, _020E1F20 ; =parse_format$f
+ add r5, sp, #0x0
+ mov r7, r0
+ mov lr, r1
+ mov r4, r5
+ ldmia r6!, {r0-r3}
+ stmia r5!, {r0-r3}
+ ldmia r6!, {r0-r3}
+ stmia r5!, {r0-r3}
+ ldmia r6, {r0-r1}
+ stmia r5, {r0-r1}
+ ldrsb r0, [r7, #0x1]
+ add r12, r7, #0x1
+ cmp r0, #0x25
+ bne _020E1A9C
+ strb r0, [sp, #0x3]
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add sp, sp, #0x28
+ add r0, r12, #0x1
+ ldmia sp!, {r3-r7,pc}
+_020E1A9C:
+ cmp r0, #0x2a
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ ldreqsb r0, [r12, #0x1]!
+ cmp r0, #0x0
+ blt _020E1ABC
+ cmp r0, #0x80
+ blt _020E1AC4
+_020E1ABC:
+ mov r1, #0x0
+ b _020E1AD4
+_020E1AC4:
+ ldr r1, _020E1F24 ; =__msl_digit
+ mov r2, r0, lsl #0x1
+ ldrh r1, [r1, r2]
+ and r1, r1, #0x8
+_020E1AD4:
+ cmp r1, #0x0
+ beq _020E1B74
+ mov r1, #0x0
+ ldr r3, _020E1F24 ; =__msl_digit
+ str r1, [sp, #0x4]
+ mov r4, r1
+ mov r1, #0xa
+_020E1AF0:
+ ldr r2, [sp, #0x4]
+ sub r0, r0, #0x30
+ mla r0, r2, r1, r0
+ str r0, [sp, #0x4]
+ ldrsb r0, [r12, #0x1]!
+ cmp r0, #0x0
+ blt _020E1B14
+ cmp r0, #0x80
+ blt _020E1B1C
+_020E1B14:
+ mov r2, r4
+ b _020E1B28
+_020E1B1C:
+ mov r2, r0, lsl #0x1
+ ldrh r2, [r3, r2]
+ and r2, r2, #0x8
+_020E1B28:
+ cmp r2, #0x0
+ bne _020E1AF0
+ ldr r1, [sp, #0x4]
+ cmp r1, #0x0
+ bne _020E1B6C
+ mov r0, #0xff
+ add r4, sp, #0x0
+ strb r0, [sp, #0x3]
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add sp, sp, #0x28
+ add r0, r12, #0x1
+ ldmia sp!, {r3-r7,pc}
+_020E1B6C:
+ mov r1, #0x1
+ strb r1, [sp, #0x1]
+_020E1B74:
+ cmp r0, #0x6c
+ mov r1, #0x1
+ bgt _020E1BAC
+ cmp r0, #0x68
+ blt _020E1BA0
+ beq _020E1BC8
+ cmp r0, #0x6a
+ beq _020E1C14
+ cmp r0, #0x6c
+ beq _020E1BE4
+ b _020E1C38
+_020E1BA0:
+ cmp r0, #0x4c
+ beq _020E1C08
+ b _020E1C38
+_020E1BAC:
+ cmp r0, #0x74
+ bgt _020E1BBC
+ beq _020E1C2C
+ b _020E1C38
+_020E1BBC:
+ cmp r0, #0x7a
+ beq _020E1C20
+ b _020E1C38
+_020E1BC8:
+ mov r2, #0x2
+ strb r2, [sp, #0x2]
+ ldrsb r2, [r12, #0x1]
+ cmp r2, #0x68
+ streqb r1, [sp, #0x2]
+ ldreqsb r0, [r12, #0x1]!
+ b _020E1C3C
+_020E1BE4:
+ mov r2, #0x3
+ strb r2, [sp, #0x2]
+ ldrsb r2, [r12, #0x1]
+ cmp r2, #0x6c
+ bne _020E1C3C
+ mov r0, #0x7
+ strb r0, [sp, #0x2]
+ ldrsb r0, [r12, #0x1]!
+ b _020E1C3C
+_020E1C08:
+ mov r2, #0x9
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C14:
+ mov r2, #0x4
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C20:
+ mov r2, #0x5
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C2C:
+ mov r2, #0x6
+ strb r2, [sp, #0x2]
+ b _020E1C3C
+_020E1C38:
+ mov r1, #0x0
+_020E1C3C:
+ cmp r1, #0x0
+ ldrnesb r0, [r12, #0x1]!
+ strb r0, [sp, #0x3]
+ cmp r0, #0x5b
+ bgt _020E1C90
+ bge _020E1DE0
+ cmp r0, #0x47
+ bgt _020E1C84
+ subs r1, r0, #0x41
+ addpl pc, pc, r1, lsl #0x2
+ b _020E1EF0
+ b _020E1D1C ; case 65
+ b _020E1EF0 ; case 66
+ b _020E1EF0 ; case 67
+ b _020E1EF0 ; case 68
+ b _020E1D1C ; case 69
+ b _020E1D1C ; case 70
+ b _020E1D1C ; case 71
+_020E1C84:
+ cmp r0, #0x58
+ beq _020E1D08
+ b _020E1EF0
+_020E1C90:
+ cmp r0, #0x61
+ bgt _020E1CA0
+ beq _020E1D1C
+ b _020E1EF0
+_020E1CA0:
+ sub r0, r0, #0x63
+ cmp r0, #0x15
+ addls pc, pc, r0, lsl #0x2
+ b _020E1EF0
+ b _020E1D6C ; case 99
+ b _020E1D08 ; case 100
+ b _020E1D1C ; case 101
+ b _020E1D1C ; case 102
+ b _020E1D1C ; case 103
+ b _020E1EF0 ; case 104
+ b _020E1D08 ; case 105
+ b _020E1EF0 ; case 106
+ b _020E1EF0 ; case 107
+ b _020E1EF0 ; case 108
+ b _020E1EF0 ; case 109
+ b _020E1EF8 ; case 110
+ b _020E1D08 ; case 111
+ b _020E1D58 ; case 112
+ b _020E1EF0 ; case 113
+ b _020E1EF0 ; case 114
+ b _020E1D90 ; case 115
+ b _020E1EF0 ; case 116
+ b _020E1D08 ; case 117
+ b _020E1EF0 ; case 118
+ b _020E1EF0 ; case 119
+ b _020E1D08 ; case 120
+_020E1D08:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x9
+ moveq r0, #0xff
+ streqb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D1C:
+ ldrb r1, [sp, #0x2]
+ cmp r1, #0x1
+ cmpne r1, #0x2
+ beq _020E1D3C
+ add r0, r1, #0xfc
+ and r0, r0, #0xff
+ cmp r0, #0x3
+ bhi _020E1D48
+_020E1D3C:
+ mov r0, #0xff
+ strb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D48:
+ cmp r1, #0x3
+ moveq r0, #0x8
+ streqb r0, [sp, #0x2]
+ b _020E1EF8
+_020E1D58:
+ mov r1, #0x3
+ mov r0, #0x78
+ strb r1, [sp, #0x2]
+ strb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D6C:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1EF8
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+ b _020E1EF8
+_020E1D90:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1DB0
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+_020E1DB0:
+ add r2, sp, #0x8
+ mov r1, #0x20
+ mov r0, #0xff
+_020E1DBC:
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ strb r0, [r2], #0x1
+ bgt _020E1DBC
+ mov r1, #0xc1
+ mov r0, #0xfe
+ strb r1, [sp, #0x9]
+ strb r0, [sp, #0xc]
+ b _020E1EF8
+_020E1DE0:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x3
+ moveq r0, #0xa
+ streqb r0, [sp, #0x2]
+ beq _020E1E00
+ cmp r0, #0x0
+ movne r0, #0xff
+ strneb r0, [sp, #0x3]
+_020E1E00:
+ ldrsb r2, [r12, #0x1]!
+ mov r1, #0x0
+ cmp r2, #0x5e
+ ldreqsb r2, [r12, #0x1]!
+ moveq r1, #0x1
+ cmp r2, #0x5d
+ bne _020E1EA8
+ ldrb r0, [sp, #0x13]
+ orr r0, r0, #0x20
+ strb r0, [sp, #0x13]
+ ldrsb r2, [r12, #0x1]!
+ b _020E1EA8
+_020E1E30:
+ add r0, sp, #0x0
+ and r3, r2, #0xff
+ add r6, r0, r3, asr #0x3
+ ldrb r5, [r6, #0x8]
+ and r3, r2, #0x7
+ mov r4, #0x1
+ orr r3, r5, r4, lsl r3
+ strb r3, [r6, #0x8]
+ ldrsb r3, [r12, #0x1]
+ cmp r3, #0x2d
+ bne _020E1EA4
+ ldrsb r7, [r12, #0x2]
+ cmp r7, #0x0
+ cmpne r7, #0x5d
+ beq _020E1EA4
+ add r2, r2, #0x1
+ cmp r2, r7
+ bgt _020E1E9C
+_020E1E78:
+ and r3, r2, #0xff
+ add r6, r0, r3, asr #0x3
+ ldrb r5, [r6, #0x8]
+ and r3, r2, #0x7
+ add r2, r2, #0x1
+ orr r3, r5, r4, lsl r3
+ strb r3, [r6, #0x8]
+ cmp r2, r7
+ ble _020E1E78
+_020E1E9C:
+ ldrsb r2, [r12, #0x3]!
+ b _020E1EA8
+_020E1EA4:
+ ldrsb r2, [r12, #0x1]!
+_020E1EA8:
+ cmp r2, #0x0
+ cmpne r2, #0x5d
+ bne _020E1E30
+ cmp r2, #0x0
+ moveq r0, #0xff
+ streqb r0, [sp, #0x3]
+ beq _020E1EF8
+ cmp r1, #0x0
+ beq _020E1EF8
+ add r2, sp, #0x8
+ mov r1, #0x20
+_020E1ED4:
+ ldrb r0, [r2, #0x0]
+ sub r1, r1, #0x1
+ cmp r1, #0x0
+ mvn r0, r0
+ strb r0, [r2], #0x1
+ bgt _020E1ED4
+ b _020E1EF8
+_020E1EF0:
+ mov r0, #0xff
+ strb r0, [sp, #0x3]
+_020E1EF8:
+ add r4, sp, #0x0
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4!, {r0-r3}
+ stmia lr!, {r0-r3}
+ ldmia r4, {r0-r1}
+ stmia lr, {r0-r1}
+ add r0, r12, #0x1
+ add sp, sp, #0x28
+ ldmia sp!, {r3-r7,pc}
+ .balign 4
+_020E1F20: .word parse_format$f
+_020E1F24: .word __msl_digit
+ arm_func_end parse_format
+
+ arm_func_start __sformatter
+__sformatter: ; 0x020E1F28
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x88
+ ldrsb r5, [r2, #0x0]
+ str r2, [sp, #0xc]
+ mov r2, #0x0
+ mov r9, r0
+ mov r0, r2
+ str r2, [sp, #0x20]
+ mov r8, r1
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x24]
+ cmp r5, #0x0
+ ldr r10, [sp, #0xb0]
+ str r0, [sp, #0x30]
+ mov r4, r2
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x40]
+ beq _020E2C3C
+_020E1F70:
+ cmp r5, #0x0
+ mov r0, #0x1
+ blt _020E1F84
+ cmp r5, #0x80
+ movlt r0, #0x0
+_020E1F84:
+ cmp r0, #0x0
+ movne r0, #0x0
+ bne _020E1FA0
+ mov r1, r5, lsl #0x1
+ ldr r0, _020E2C74 ; =__msl_digit
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E1FA0:
+ cmp r0, #0x0
+ beq _020E2060
+ mov r2, #0x0
+ ldr r1, _020E2C74 ; =__msl_digit
+ mov r12, r2
+ mov r3, #0x1
+_020E1FB8:
+ ldr r0, [sp, #0xc]
+ ldrsb r5, [r0, #0x1]!
+ str r0, [sp, #0xc]
+ mov r0, r3
+ cmp r5, #0x0
+ blt _020E1FD8
+ cmp r5, #0x80
+ movlt r0, r2
+_020E1FD8:
+ cmp r0, #0x0
+ movne r0, r12
+ moveq r0, r5, lsl #0x1
+ ldreqh r0, [r1, r0]
+ andeq r0, r0, #0x100
+ cmp r0, #0x0
+ bne _020E1FB8
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2C2C
+ ldr r5, _020E2C74 ; =__msl_digit
+ b _020E200C
+_020E2008:
+ add r4, r4, #0x1
+_020E200C:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E2034
+ cmp r1, #0x80
+ blt _020E203C
+_020E2034:
+ mov r0, #0x0
+ b _020E2048
+_020E203C:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r5, r0]
+ and r0, r0, #0x100
+_020E2048:
+ cmp r0, #0x0
+ bne _020E2008
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ b _020E2C2C
+_020E2060:
+ cmp r5, #0x25
+ beq _020E20D8
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E20D8
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ and r0, r5, #0xff
+ ldrsb r1, [sp, #0x50]
+ cmp r0, r1
+ beq _020E20C4
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ b _020E2C2C
+_020E20C4:
+ ldr r0, [sp, #0xc]
+ add r4, r4, #0x1
+ add r0, r0, #0x1
+ str r0, [sp, #0xc]
+ b _020E2C2C
+_020E20D8:
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x60
+ bl parse_format
+ str r0, [sp, #0xc]
+ ldrb r0, [sp, #0x60]
+ cmp r0, #0x0
+ bne _020E2114
+ ldrb r0, [sp, #0x63]
+ cmp r0, #0x25
+ beq _020E2114
+ ldr r0, [sp, #0x10]
+ add r0, r0, #0x4
+ str r0, [sp, #0x10]
+ ldr r5, [r0, #-0x4]
+ b _020E2118
+_020E2114:
+ mov r5, #0x0
+_020E2118:
+ ldrb r0, [sp, #0x63]
+ cmp r0, #0x6e
+ beq _020E2158
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2158
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, #0x2
+ blx r9
+ cmp r0, #0x0
+ beq _020E2158
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+_020E2158:
+ ldrb r1, [sp, #0x63]
+ cmp r1, #0x5b
+ bgt _020E21B0
+ bge _020E2984
+ cmp r1, #0x47
+ bgt _020E21A4
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E2198
+ b _020E2600 ; case 65
+ b _020E2C3C ; case 66
+ b _020E2C3C ; case 67
+ b _020E2C3C ; case 68
+ b _020E2600 ; case 69
+ b _020E2600 ; case 70
+ b _020E2600 ; case 71
+_020E2198:
+ cmp r1, #0x25
+ beq _020E287C
+ b _020E2C3C
+_020E21A4:
+ cmp r1, #0x58
+ beq _020E243C
+ b _020E2C3C
+_020E21B0:
+ cmp r1, #0x78
+ bgt _020E2228
+ subs r0, r1, #0x63
+ addpl pc, pc, r0, lsl #0x2
+ b _020E221C
+ b _020E26C4 ; case 99
+ b _020E2230 ; case 100
+ b _020E2600 ; case 101
+ b _020E2600 ; case 102
+ b _020E2600 ; case 103
+ b _020E2C3C ; case 104
+ b _020E2238 ; case 105
+ b _020E2C3C ; case 106
+ b _020E2C3C ; case 107
+ b _020E2C3C ; case 108
+ b _020E2C3C ; case 109
+ b _020E2BC8 ; case 110
+ b _020E242C ; case 111
+ b _020E2C3C ; case 112
+ b _020E2C3C ; case 113
+ b _020E2C3C ; case 114
+ b _020E2908 ; case 115
+ b _020E2C3C ; case 116
+ b _020E2434 ; case 117
+ b _020E2C3C ; case 118
+ b _020E2C3C ; case 119
+ b _020E243C ; case 120
+_020E221C:
+ cmp r1, #0x61
+ beq _020E2600
+ b _020E2C3C
+_020E2228:
+ cmp r1, #0xff
+ b _020E2C3C
+_020E2230:
+ mov r0, #0xa
+ b _020E223C
+_020E2238:
+ mov r0, #0x0
+_020E223C:
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x0
+ beq _020E225C
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E225C:
+ ldrb r1, [sp, #0x62]
+ add r2, sp, #0x5c
+ cmp r1, #0x7
+ cmpne r1, #0x4
+ add r1, sp, #0x58
+ bne _020E22A0
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoull
+ str r0, [sp, #0x34]
+ str r1, [sp, #0x18]
+ b _020E22C4
+_020E22A0:
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoul
+ str r0, [sp, #0x3c]
+_020E22C4:
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E22F4
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ mov r0, #0x0
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E22F4:
+ add r4, r4, r0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ cmpne r0, #0x4
+ bne _020E2344
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ beq _020E2330
+ ldr r0, [sp, #0x34]
+ rsbs r0, r0, #0x0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ rsc r0, r0, #0x0
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E2330:
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x24]
+ b _020E2364
+_020E2344:
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x3c]
+ streq r0, [sp, #0x1c]
+ beq _020E2364
+ ldr r0, [sp, #0x3c]
+ rsb r0, r0, #0x0
+ str r0, [sp, #0x1c]
+_020E2364:
+ cmp r5, #0x0
+ beq _020E241C
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E2408
+ b _020E239C ; case 0
+ b _020E23A8 ; case 1
+ b _020E23B4 ; case 2
+ b _020E23C0 ; case 3
+ b _020E23CC ; case 4
+ b _020E23E0 ; case 5
+ b _020E23EC ; case 6
+ b _020E23F8 ; case 7
+_020E239C:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23A8:
+ ldr r0, [sp, #0x1c]
+ strb r0, [r5, #0x0]
+ b _020E2408
+_020E23B4:
+ ldr r0, [sp, #0x1c]
+ strh r0, [r5, #0x0]
+ b _020E2408
+_020E23C0:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23CC:
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x4]
+ b _020E2408
+_020E23E0:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23EC:
+ ldr r0, [sp, #0x1c]
+ str r0, [r5, #0x0]
+ b _020E2408
+_020E23F8:
+ ldr r0, [sp, #0x20]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x24]
+ str r0, [r5, #0x4]
+_020E2408:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E241C:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E242C:
+ mov r0, #0x8
+ b _020E2440
+_020E2434:
+ mov r0, #0xa
+ b _020E2440
+_020E243C:
+ mov r0, #0x10
+_020E2440:
+ ldr r1, [sp, #0x30]
+ cmp r1, #0x0
+ beq _020E2460
+ mov r0, #0x0
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ b _020E2538
+_020E2460:
+ ldrb r1, [sp, #0x62]
+ add r2, sp, #0x5c
+ cmp r1, #0x7
+ cmpne r1, #0x4
+ add r1, sp, #0x58
+ bne _020E24A4
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoull
+ str r0, [sp, #0x34]
+ str r1, [sp, #0x18]
+ b _020E24C8
+_020E24A4:
+ str r2, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add r1, sp, #0x54
+ str r1, [sp, #0x8]
+ ldr r1, [sp, #0x64]
+ mov r2, r9
+ mov r3, r8
+ bl __strtoul
+ str r0, [sp, #0x3c]
+_020E24C8:
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E24F8
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ mov r0, #0x0
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ b _020E2538
+_020E24F8:
+ add r4, r4, r0
+ ldr r0, [sp, #0x58]
+ cmp r0, #0x0
+ beq _020E2538
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ ldrne r0, [sp, #0x3c]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x3c]
+ bne _020E2538
+ ldr r0, [sp, #0x34]
+ rsbs r0, r0, #0x0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x18]
+ rsc r0, r0, #0x0
+ str r0, [sp, #0x18]
+_020E2538:
+ cmp r5, #0x0
+ beq _020E25F0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E25DC
+ b _020E2570 ; case 0
+ b _020E257C ; case 1
+ b _020E2588 ; case 2
+ b _020E2594 ; case 3
+ b _020E25A0 ; case 4
+ b _020E25B4 ; case 5
+ b _020E25C0 ; case 6
+ b _020E25CC ; case 7
+_020E2570:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E257C:
+ ldr r0, [sp, #0x3c]
+ strb r0, [r5, #0x0]
+ b _020E25DC
+_020E2588:
+ ldr r0, [sp, #0x3c]
+ strh r0, [r5, #0x0]
+ b _020E25DC
+_020E2594:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25A0:
+ ldr r0, [sp, #0x34]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x4]
+ b _020E25DC
+_020E25B4:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25C0:
+ ldr r0, [sp, #0x3c]
+ str r0, [r5, #0x0]
+ b _020E25DC
+_020E25CC:
+ ldr r0, [sp, #0x34]
+ str r0, [r5, #0x0]
+ ldr r0, [sp, #0x18]
+ str r0, [r5, #0x4]
+_020E25DC:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E25F0:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E2600:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ beq _020E261C
+ ldr r0, _020E2C78 ; =__float_nan
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ b _020E2668
+_020E261C:
+ add r0, sp, #0x54
+ str r0, [sp, #0x0]
+ ldr r0, [sp, #0x64]
+ mov r1, r9
+ mov r2, r8
+ add r3, sp, #0x5c
+ bl __strtold
+ ldr r2, [sp, #0x5c]
+ cmp r2, #0x0
+ bne _020E2664
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ ldr r0, _020E2C78 ; =__float_nan
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ b _020E2668
+_020E2664:
+ add r4, r4, r2
+_020E2668:
+ cmp r5, #0x0
+ beq _020E26B4
+ ldrb r2, [sp, #0x62]
+ cmp r2, #0x0
+ beq _020E2690
+ cmp r2, #0x8
+ beq _020E269C
+ cmp r2, #0x9
+ stmeqia r5, {r0-r1}
+ b _020E26A0
+_020E2690:
+ bl _d2f
+ str r0, [r5, #0x0]
+ b _020E26A0
+_020E269C:
+ stmia r5, {r0-r1}
+_020E26A0:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x44]
+ addeq r0, r0, #0x1
+ streq r0, [sp, #0x44]
+_020E26B4:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E26C4:
+ ldrb r0, [sp, #0x61]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0x64]
+ cmp r5, #0x0
+ beq _020E280C
+ cmp r10, #0x0
+ beq _020E26F8
+ ldr r0, [sp, #0x10]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ ldr r11, [r0, #-0x4]
+ str r0, [sp, #0x10]
+_020E26F8:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x0
+ cmp r0, #0x0
+ str r1, [sp, #0x5c]
+ beq _020E2718
+ cmp r11, #0x0
+ strneb r1, [r5, #0x0]
+ b _020E2C2C
+_020E2718:
+ mvn r0, #0x0
+ str r5, [sp, #0x2c]
+ str r0, [sp, #0x48]
+ b _020E2760
+_020E2728:
+ ldrb r0, [sp, #0x62]
+ strb r6, [sp, #0x50]
+ cmp r0, #0xa
+ ldrnesb r0, [sp, #0x50]
+ strneb r0, [r5], #0x1
+ bne _020E2754
+ mov r0, r5
+ add r1, sp, #0x50
+ mov r2, #0x1
+ bl mbtowc
+ add r5, r5, #0x1
+_020E2754:
+ ldr r0, [sp, #0x5c]
+ add r1, r0, #0x1
+ str r1, [sp, #0x5c]
+_020E2760:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E27B0
+ cmp r10, #0x0
+ beq _020E2790
+ cmp r11, r1
+ movhi r7, #0x1
+ movls r7, #0x0
+ cmp r7, #0x0
+ beq _020E27B0
+_020E2790:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ ldr r0, [sp, #0x48]
+ cmp r6, r0
+ bne _020E2728
+_020E27B0:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E27D0
+ cmp r10, #0x0
+ beq _020E27F8
+ cmp r7, #0x0
+ bne _020E27F8
+_020E27D0:
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ cmp r11, #0x0
+ str r0, [sp, #0x30]
+ beq _020E2C2C
+ ldr r0, [sp, #0x2c]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ b _020E2C2C
+_020E27F8:
+ add r4, r4, r0
+ ldr r0, [sp, #0x44]
+ add r0, r0, #0x1
+ str r0, [sp, #0x44]
+ b _020E286C
+_020E280C:
+ mov r0, #0x0
+ str r0, [sp, #0x5c]
+ mvn r5, #0x0
+ b _020E282C
+_020E281C:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x5c]
+_020E282C:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E285C
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ cmp r6, r5
+ bne _020E281C
+_020E285C:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E2C3C
+_020E286C:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E287C:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2C2C
+ ldr r5, _020E2C74 ; =__msl_digit
+ b _020E2894
+_020E2890:
+ add r4, r4, #0x1
+_020E2894:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E28BC
+ cmp r1, #0x80
+ blt _020E28C4
+_020E28BC:
+ mov r0, #0x0
+ b _020E28D0
+_020E28C4:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r5, r0]
+ and r0, r0, #0x100
+_020E28D0:
+ cmp r0, #0x0
+ bne _020E2890
+ cmp r1, #0x25
+ beq _020E2900
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ str r0, [sp, #0x30]
+ b _020E2C2C
+_020E2900:
+ add r4, r4, #0x1
+ b _020E2C2C
+_020E2908:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0x0
+ bne _020E2984
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ strb r0, [sp, #0x50]
+ b _020E2944
+_020E292C:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ strb r0, [sp, #0x50]
+_020E2944:
+ ldrsb r1, [sp, #0x50]
+ cmp r1, #0x0
+ blt _020E2958
+ cmp r1, #0x80
+ blt _020E2960
+_020E2958:
+ mov r0, #0x0
+ b _020E2970
+_020E2960:
+ ldr r0, _020E2C74 ; =__msl_digit
+ mov r2, r1, lsl #0x1
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x100
+_020E2970:
+ cmp r0, #0x0
+ bne _020E292C
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+_020E2984:
+ cmp r5, #0x0
+ beq _020E2B00
+ cmp r10, #0x0
+ beq _020E29AC
+ ldr r0, [sp, #0x10]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ str r0, [sp, #0x10]
+ ldr r0, [r0, #-0x4]
+ sub r11, r0, #0x1
+_020E29AC:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x0
+ cmp r0, #0x0
+ str r1, [sp, #0x5c]
+ beq _020E29CC
+ cmp r11, #0x0
+ strneb r1, [r5, #0x0]
+ b _020E2C2C
+_020E29CC:
+ mvn r0, #0x0
+ str r5, [sp, #0x28]
+ str r0, [sp, #0x4c]
+ b _020E2A30
+_020E29DC:
+ strb r6, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ add r2, sp, #0x60
+ and r3, r1, #0xff
+ add r2, r2, r3, asr #0x3
+ ldrb r3, [r2, #0x8]
+ and r0, r1, #0x7
+ mov r2, #0x1
+ tst r3, r2, lsl r0
+ beq _020E2A80
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0xa
+ strneb r1, [r5], #0x1
+ bne _020E2A24
+ mov r0, r5
+ add r1, sp, #0x50
+ bl mbtowc
+ add r5, r5, #0x2
+_020E2A24:
+ ldr r0, [sp, #0x5c]
+ add r1, r0, #0x1
+ str r1, [sp, #0x5c]
+_020E2A30:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E2A80
+ cmp r10, #0x0
+ beq _020E2A60
+ cmp r11, r1
+ movcs r7, #0x1
+ movcc r7, #0x0
+ cmp r7, #0x0
+ beq _020E2A80
+_020E2A60:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ ldr r0, [sp, #0x4c]
+ cmp r6, r0
+ bne _020E29DC
+_020E2A80:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ beq _020E2AA0
+ cmp r10, #0x0
+ beq _020E2AD8
+ cmp r7, #0x0
+ bne _020E2AD8
+_020E2AA0:
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ beq _020E2C3C
+ mov r0, #0x1
+ cmp r11, #0x0
+ str r0, [sp, #0x30]
+ beq _020E2C2C
+ ldr r0, [sp, #0x28]
+ mov r1, #0x0
+ strb r1, [r0, #0x0]
+ b _020E2C2C
+_020E2AD8:
+ add r4, r4, r0
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0xa
+ mov r0, #0x0
+ streqh r0, [r5, #0x0]
+ strneb r0, [r5, #0x0]
+ ldr r0, [sp, #0x44]
+ add r0, r0, #0x1
+ str r0, [sp, #0x44]
+ b _020E2B9C
+_020E2B00:
+ mov r0, #0x0
+ str r0, [sp, #0x5c]
+ mvn r5, #0x0
+ b _020E2B44
+_020E2B10:
+ strb r6, [sp, #0x50]
+ ldrsb r1, [sp, #0x50]
+ and r0, r1, #0x7
+ and r2, r1, #0xff
+ add r1, sp, #0x60
+ add r1, r1, r2, asr #0x3
+ ldrb r2, [r1, #0x8]
+ mov r1, #0x1
+ tst r2, r1, lsl r0
+ beq _020E2B74
+ ldr r0, [sp, #0x5c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x5c]
+_020E2B44:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ sub r0, r0, #0x1
+ str r0, [sp, #0x64]
+ beq _020E2B74
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r6, r0
+ cmp r6, r5
+ bne _020E2B10
+_020E2B74:
+ strb r6, [sp, #0x50]
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0x0
+ bne _020E2B98
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+ b _020E2C2C
+_020E2B98:
+ add r4, r4, r0
+_020E2B9C:
+ ldr r0, [sp, #0x64]
+ cmp r0, #0x0
+ blt _020E2BB8
+ mov r0, r8
+ ldrsb r1, [sp, #0x50]
+ mov r2, #0x1
+ blx r9
+_020E2BB8:
+ ldr r0, [sp, #0x40]
+ add r0, r0, #0x1
+ str r0, [sp, #0x40]
+ b _020E2C2C
+_020E2BC8:
+ cmp r5, #0x0
+ beq _020E2C2C
+ ldrb r0, [sp, #0x62]
+ cmp r0, #0x7
+ addls pc, pc, r0, lsl #0x2
+ b _020E2C2C
+ b _020E2C00 ; case 0
+ b _020E2C18 ; case 1
+ b _020E2C08 ; case 2
+ b _020E2C10 ; case 3
+ b _020E2C2C ; case 4
+ b _020E2C2C ; case 5
+ b _020E2C2C ; case 6
+ b _020E2C20 ; case 7
+_020E2C00:
+ str r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C08:
+ strh r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C10:
+ str r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C18:
+ strb r4, [r5, #0x0]
+ b _020E2C2C
+_020E2C20:
+ str r4, [r5, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r5, #0x4]
+_020E2C2C:
+ ldr r0, [sp, #0xc]
+ ldrsb r5, [r0, #0x0]
+ cmp r5, #0x0
+ bne _020E1F70
+_020E2C3C:
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, #0x2
+ blx r9
+ cmp r0, #0x0
+ beq _020E2C68
+ ldr r0, [sp, #0x40]
+ cmp r0, #0x0
+ addeq sp, sp, #0x88
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,pc}
+_020E2C68:
+ ldr r0, [sp, #0x44]
+ add sp, sp, #0x88
+ ldmia sp!, {r3-r11,pc}
+ .balign 4
+_020E2C74: .word __msl_digit
+_020E2C78: .word __float_nan
+ arm_func_end __sformatter
+
+ arm_func_start __StringRead
+__StringRead: ; 0x020E2C7C
+ cmp r2, #0x0
+ beq _020E2C98
+ cmp r2, #0x1
+ beq _020E2CC8
+ cmp r2, #0x2
+ beq _020E2CF0
+ b _020E2CF8
+_020E2C98:
+ ldr r1, [r0, #0x0]
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _020E2CB8
+ mov r1, #0x1
+ str r1, [r0, #0x4]
+ sub r0, r1, #0x2
+ bx lr
+_020E2CB8:
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ and r0, r2, #0xff
+ bx lr
+_020E2CC8:
+ ldr r2, [r0, #0x4]
+ cmp r2, #0x0
+ movne r2, #0x0
+ strne r2, [r0, #0x4]
+ bne _020E2CE8
+ ldr r2, [r0, #0x0]
+ sub r2, r2, #0x1
+ str r2, [r0, #0x0]
+_020E2CE8:
+ mov r0, r1
+ bx lr
+_020E2CF0:
+ ldr r0, [r0, #0x4]
+ bx lr
+_020E2CF8:
+ mov r0, #0x0
+ bx lr
+ arm_func_end __StringRead
+
+ arm_func_start vsscanf
+vsscanf: ; 0x020E2D00
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ str r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrnesb r0, [r0, #0x0]
+ mov lr, r1
+ mov r3, r2
+ cmpne r0, #0x0
+ addeq sp, sp, #0xc
+ mvneq r0, #0x0
+ ldmeqia sp!, {pc}
+ mov r12, #0x0
+ str r12, [sp, #0x8]
+ ldr r0, _020E2D50 ; =__StringRead
+ add r1, sp, #0x4
+ mov r2, lr
+ str r12, [sp, #0x0]
+ bl __sformatter
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .balign 4
+_020E2D50: .word __StringRead
+ arm_func_end vsscanf
+
+ arm_func_start sscanf
+sscanf: ; 0x020E2D54
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r2, sp, #0xc
+ bic r2, r2, #0x3
+ ldr r1, [sp, #0xc]
+ add r2, r2, #0x4
+ bl vsscanf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end sscanf
+
+ .section .exceptix,4
+
+ .word __sformatter
+ .short 3412
+ .word UNK_020EC718
+ .word vsscanf
+ .short 85
+ .word 0x00200000
+ .word sscanf
+ .short 41
+ .word 0x00300020
+
+ .section .exception,8
+
+UNK_020EC718: ; 0x020EC718
+ .byte 0x00, 0xFF, 0x01, 0xB0
+ .balign 8
diff --git a/arm9/asm/MSL_Common_signal.s b/arm9/asm/MSL_Common_signal.s
new file mode 100644
index 00000000..8fd03917
--- /dev/null
+++ b/arm9/asm/MSL_Common_signal.s
@@ -0,0 +1,107 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global signal_funcs
+signal_funcs: ; 0x021D74AC
+ .space 0x1c
+ .size signal_funcs,.-signal_funcs
+
+ .text
+
+ arm_func_start raise
+raise: ; 0x020E2D7C
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ cmp r5, #0x1
+ blt _020E2D94
+ cmp r5, #0x7
+ ble _020E2D9C
+_020E2D94:
+ mvn r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E2D9C:
+ ldr r0, _020E2E98 ; =__cs + 0xA8
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020E2DD0
+ ldr r0, _020E2E9C ; =OSi_ThreadInfo
+ ldr r1, _020E2EA0 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E2EA4 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x1c]
+ str r2, [r0, #0x1c]
+ b _020E2E28
+_020E2DD0:
+ ldr r0, _020E2E9C ; =OSi_ThreadInfo
+ ldr r1, _020E2EA0 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0x1c]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020E2E00
+ ldr r0, _020E2EA4 ; =__cs_ref
+ ldr r1, [r0, #0x1c]
+ add r1, r1, #0x1
+ str r1, [r0, #0x1c]
+ b _020E2E28
+_020E2E00:
+ ldr r0, _020E2E98 ; =__cs + 0xA8
+ bl OS_LockMutex
+ ldr r0, _020E2E9C ; =OSi_ThreadInfo
+ ldr r1, _020E2EA0 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020E2EA4 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x1c]
+ str r2, [r0, #0x1c]
+_020E2E28:
+ ldr r1, _020E2EA8 ; =signal_funcs
+ sub r2, r5, #0x1
+ ldr r4, [r1, r2, lsl #0x2]
+ cmp r4, #0x1
+ movne r0, #0x0
+ strne r0, [r1, r2, lsl #0x2]
+ ldr r0, _020E2EA4 ; =__cs_ref
+ ldr r1, [r0, #0x1c]
+ subs r1, r1, #0x1
+ str r1, [r0, #0x1c]
+ bne _020E2E5C
+ ldr r0, _020E2E98 ; =__cs + 0xA8
+ bl OS_UnlockMutex
+_020E2E5C:
+ cmp r4, #0x1
+ beq _020E2E70
+ cmp r4, #0x0
+ cmpeq r5, #0x1
+ bne _020E2E78
+_020E2E70:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E2E78:
+ cmp r4, #0x0
+ bne _020E2E88
+ mov r0, #0x0
+ bl exit
+_020E2E88:
+ mov r0, r5
+ blx r4
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E2E98: .word __cs + 0xA8
+_020E2E9C: .word OSi_ThreadInfo
+_020E2EA0: .word __cs_id
+_020E2EA4: .word __cs_ref
+_020E2EA8: .word signal_funcs
+ arm_func_end raise
+
+ .section .exceptix,4
+
+ .word raise
+ .short 305
+ .word 0x00200300
diff --git a/arm9/asm/MSL_Common_string.s b/arm9/asm/MSL_Common_string.s
new file mode 100644
index 00000000..d8371d05
--- /dev/null
+++ b/arm9/asm/MSL_Common_string.s
@@ -0,0 +1,364 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start strlen
+strlen: ; 0x020E2EAC
+ mvn r2, #0x0
+_020E2EB0:
+ ldrsb r1, [r0], #0x1
+ add r2, r2, #0x1
+ cmp r1, #0x0
+ bne _020E2EB0
+ mov r0, r2
+ bx lr
+ arm_func_end strlen
+
+ arm_func_start strcpy
+strcpy: ; 0x020E2EC8
+ stmdb sp!, {r3-r5,lr}
+ and r4, r1, #0x3
+ and r3, r0, #0x3
+ mov r2, r0
+ cmp r3, r4
+ bne _020E2F64
+ cmp r4, #0x0
+ beq _020E2F20
+ ldrb r3, [r1, #0x0]
+ strb r3, [r0, #0x0]
+ cmp r3, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ rsbs r4, r4, #0x3
+ beq _020E2F18
+_020E2F00:
+ ldrb r3, [r1, #0x1]!
+ cmp r3, #0x0
+ strb r3, [r2, #0x1]!
+ ldmeqia sp!, {r3-r5,pc}
+ subs r4, r4, #0x1
+ bne _020E2F00
+_020E2F18:
+ add r2, r2, #0x1
+ add r1, r1, #0x1
+_020E2F20:
+ ldr r5, [r1, #0x0]
+ ldr r3, _020E2F88 ; =0xFEFEFEFF
+ mvn r4, r5
+ add lr, r5, r3
+ ldr ip, _020E2F8C ; =0x80808080
+ and r4, lr, r4
+ tst r4, r12
+ bne _020E2F64
+ sub r2, r2, #0x4
+_020E2F44:
+ str r5, [r2, #0x4]!
+ ldr r5, [r1, #0x4]!
+ add r4, r5, r3
+ mvn lr, r5
+ and lr, r4, lr
+ tst lr, r12
+ beq _020E2F44
+ add r2, r2, #0x4
+_020E2F64:
+ ldrb r3, [r1, #0x0]
+ strb r3, [r2, #0x0]
+ cmp r3, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020E2F74:
+ ldrb r3, [r1, #0x1]!
+ cmp r3, #0x0
+ strb r3, [r2, #0x1]!
+ bne _020E2F74
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E2F88: .word 0xFEFEFEFF
+_020E2F8C: .word 0x80808080
+ arm_func_end strcpy
+
+ arm_func_start strncpy
+strncpy: ; 0x020E2F90
+ stmdb sp!, {r3,lr}
+ mov lr, r0
+ cmp r2, #0x0
+ ldmeqia sp!, {r3,pc}
+_020E2FA0:
+ ldrsb r3, [r1], #0x1
+ mov r12, lr
+ strb r3, [lr], #0x1
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x0
+ bne _020E2FD4
+ subs r2, r2, #0x1
+ ldmeqia sp!, {r3,pc}
+ mov r1, #0x0
+_020E2FC4:
+ strb r1, [lr], #0x1
+ subs r2, r2, #0x1
+ bne _020E2FC4
+ ldmia sp!, {r3,pc}
+_020E2FD4:
+ subs r2, r2, #0x1
+ bne _020E2FA0
+ ldmia sp!, {r3,pc}
+ arm_func_end strncpy
+
+ arm_func_start strcat
+strcat: ; 0x020E2FE0
+ mov r3, r0
+_020E2FE4:
+ ldrsb r2, [r3], #0x1
+ cmp r2, #0x0
+ bne _020E2FE4
+ sub r3, r3, #0x1
+_020E2FF4:
+ ldrsb r2, [r1], #0x1
+ mov r12, r3
+ strb r2, [r3], #0x1
+ ldrsb r2, [r12, #0x0]
+ cmp r2, #0x0
+ bne _020E2FF4
+ bx lr
+ arm_func_end strcat
+
+ arm_func_start strncat
+strncat: ; 0x020E3010
+ stmdb sp!, {r3,lr}
+ mov r12, r0
+_020E3018:
+ ldrsb r3, [r12], #0x1
+ cmp r3, #0x0
+ bne _020E3018
+ cmp r2, #0x0
+ sub r12, r12, #0x1
+ beq _020E3054
+_020E3030:
+ ldrsb r3, [r1], #0x1
+ mov lr, r12
+ strb r3, [r12], #0x1
+ ldrsb r3, [lr, #0x0]
+ cmp r3, #0x0
+ subeq r12, r12, #0x1
+ beq _020E3054
+ subs r2, r2, #0x1
+ bne _020E3030
+_020E3054:
+ mov r1, #0x0
+ strb r1, [r12, #0x0]
+ ldmia sp!, {r3,pc}
+ arm_func_end strncat
+
+ arm_func_start strcmp
+strcmp: ; 0x020E3060
+ stmdb sp!, {r4,lr}
+ ldrb r2, [r0, #0x0]
+ ldrb r3, [r1, #0x0]
+ subs r3, r2, r3
+ movne r0, r3
+ ldmneia sp!, {r4,pc}
+ and r4, r0, #0x3
+ and r3, r1, #0x3
+ cmp r3, r4
+ bne _020E313C
+ cmp r4, #0x0
+ beq _020E30D4
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ rsbs r4, r4, #0x3
+ beq _020E30CC
+_020E30A4:
+ ldrb r3, [r0, #0x1]!
+ ldrb r2, [r1, #0x1]!
+ subs r2, r3, r2
+ movne r0, r2
+ ldmneia sp!, {r4,pc}
+ cmp r3, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ subs r4, r4, #0x1
+ bne _020E30A4
+_020E30CC:
+ add r0, r0, #0x1
+ add r1, r1, #0x1
+_020E30D4:
+ ldr r2, [r0, #0x0]
+ ldr r3, _020E316C ; =0xFEFEFEFF
+ mvn r4, r2
+ add lr, r2, r3
+ ldr ip, _020E3170 ; =0x80808080
+ and r4, lr, r4
+ tst r4, r12
+ ldr r4, [r1, #0x0]
+ bne _020E3128
+ cmp r2, r4
+ bne _020E311C
+_020E3100:
+ ldr r2, [r0, #0x4]!
+ ldr r4, [r1, #0x4]!
+ add lr, r2, r3
+ tst lr, r12
+ bne _020E3128
+ cmp r2, r4
+ beq _020E3100
+_020E311C:
+ sub r0, r0, #0x1
+ sub r1, r1, #0x1
+ b _020E313C
+_020E3128:
+ ldrb r2, [r0, #0x0]
+ ldrb r3, [r1, #0x0]
+ subs r3, r2, r3
+ movne r0, r3
+ ldmneia sp!, {r4,pc}
+_020E313C:
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+_020E3148:
+ ldrb r3, [r0, #0x1]!
+ ldrb r2, [r1, #0x1]!
+ subs r2, r3, r2
+ movne r0, r2
+ ldmneia sp!, {r4,pc}
+ cmp r3, #0x0
+ bne _020E3148
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020E316C: .word 0xFEFEFEFF
+_020E3170: .word 0x80808080
+ arm_func_end strcmp
+
+ arm_func_start strncmp
+strncmp: ; 0x020E3174
+ cmp r2, #0x0
+ beq _020E31A0
+_020E317C:
+ ldrb r12, [r1], #0x1
+ ldrb r3, [r0], #0x1
+ cmp r3, r12
+ subne r0, r3, r12
+ bxne lr
+ cmp r3, #0x0
+ beq _020E31A0
+ subs r2, r2, #0x1
+ bne _020E317C
+_020E31A0:
+ mov r0, #0x0
+ bx lr
+ arm_func_end strncmp
+
+ arm_func_start strchr
+strchr: ; 0x020E31A8
+ ldrsb r2, [r0], #0x1
+ mov r1, r1, lsl #0x18
+ mov r1, r1, asr #0x18
+ cmp r2, #0x0
+ beq _020E31D4
+_020E31BC:
+ cmp r2, r1
+ subeq r0, r0, #0x1
+ bxeq lr
+ ldrsb r2, [r0], #0x1
+ cmp r2, #0x0
+ bne _020E31BC
+_020E31D4:
+ cmp r1, #0x0
+ movne r0, #0x0
+ subeq r0, r0, #0x1
+ bx lr
+ arm_func_end strchr
+
+ arm_func_start strspn
+strspn: ; 0x020E31E4
+ stmdb sp!, {r4,lr}
+ sub sp, sp, #0x20
+ add r12, sp, #0x0
+ mov r3, #0x8
+ mov r2, #0x0
+_020E31F8:
+ strb r2, [r12, #0x0]
+ strb r2, [r12, #0x1]
+ strb r2, [r12, #0x2]
+ strb r2, [r12, #0x3]
+ add r12, r12, #0x4
+ subs r3, r3, #0x1
+ bne _020E31F8
+ ldrb r3, [r1, #0x0]
+ add r4, r1, #0x1
+ cmp r3, #0x0
+ beq _020E3254
+ add lr, sp, #0x0
+ mov r2, #0x1
+_020E322C:
+ and r12, r3, #0xff
+ and r1, r3, #0x7
+ mov r1, r2, lsl r1
+ ldrb r3, [lr, r12, asr #0x3]
+ and r1, r1, #0xff
+ orr r1, r3, r1
+ strb r1, [lr, r12, asr #0x3]
+ ldrb r3, [r4], #0x1
+ cmp r3, #0x0
+ bne _020E322C
+_020E3254:
+ ldrb r1, [r0, #0x0]
+ add r4, r0, #0x1
+ cmp r1, #0x0
+ beq _020E3294
+ add r12, sp, #0x0
+ mov r2, #0x1
+_020E326C:
+ and r3, r1, #0xff
+ and r1, r1, #0x7
+ mov r1, r2, lsl r1
+ ldrb r3, [r12, r3, asr #0x3]
+ and r1, r1, #0xff
+ tst r3, r1
+ bne _020E3294
+ ldrb r1, [r4], #0x1
+ cmp r1, #0x0
+ bne _020E326C
+_020E3294:
+ sub r0, r4, r0
+ sub r0, r0, #0x1
+ add sp, sp, #0x20
+ ldmia sp!, {r4,pc}
+ arm_func_end strspn
+
+ arm_func_start strstr
+strstr: ; 0x020E32A4
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ ldrneb r2, [r1, #0x0]
+ cmpne r2, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldrb r3, [r0, #0x0]
+ add r4, r0, #0x1
+ cmp r3, #0x0
+ beq _020E3308
+_020E32C8:
+ cmp r3, r2
+ bne _020E32FC
+ mov lr, r4
+ add r12, r1, #0x1
+_020E32D8:
+ ldrb r3, [r12], #0x1
+ ldrb r0, [lr], #0x1
+ cmp r0, r3
+ bne _020E32F0
+ cmp r0, #0x0
+ bne _020E32D8
+_020E32F0:
+ cmp r3, #0x0
+ subeq r0, r4, #0x1
+ ldmeqia sp!, {r4,pc}
+_020E32FC:
+ ldrb r3, [r4], #0x1
+ cmp r3, #0x0
+ bne _020E32C8
+_020E3308:
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+ arm_func_end strstr
diff --git a/arm9/asm/MSL_Common_strtold.s b/arm9/asm/MSL_Common_strtold.s
new file mode 100644
index 00000000..424c3a19
--- /dev/null
+++ b/arm9/asm/MSL_Common_strtold.s
@@ -0,0 +1,1436 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+model$4434: ; 0x02104434
+ .asciz "NAN("
+ .size model$4434,.-model$4434
+
+model$4439: ; 0x02104439
+ .asciz "INFINITY"
+ .size model$4439,.-model$4439
+
+ .text
+
+ arm_func_start __strtold
+__strtold: ; 0x020E3310
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0xa8
+ ldr r4, [sp, #0xd0]
+ mov r10, #0x0
+ str r4, [sp, #0xd0]
+ str r0, [sp, #0x0]
+ add r6, sp, #0x80
+ mov r9, r1
+ mov r8, r2
+ str r3, [sp, #0x4]
+ mov r4, r10
+ str r10, [sp, #0x2c]
+ mov r5, #0x1
+ mov r0, #0x4
+_020E3348:
+ strh r10, [r6, #0x0]
+ strh r10, [r6, #0x2]
+ strh r10, [r6, #0x4]
+ strh r10, [r6, #0x6]
+ add r6, r6, #0x8
+ subs r0, r0, #0x1
+ bne _020E3348
+ mov r0, #0x0
+ str r0, [sp, #0x28]
+ strh r10, [r6, #0x0]
+ strh r10, [r6, #0x2]
+ ldr r2, [sp, #0x28]
+ ldr r1, [sp, #0xd0]
+ strh r10, [r6, #0x4]
+ str r2, [r1, #0x0]
+ mov r1, r2
+ mov r0, r8
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x1c]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x8]
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ ldr r7, _020E42F0 ; =model$4439
+ add r0, sp, #0x4d
+ mov r6, #0x4
+_020E33C0:
+ ldrb r3, [r7, #0x0]
+ ldrb r2, [r7, #0x1]
+ add r7, r7, #0x2
+ strb r3, [r0, #0x0]
+ strb r2, [r0, #0x1]
+ add r0, r0, #0x2
+ subs r6, r6, #0x1
+ bne _020E33C0
+ ldrb r3, [r7, #0x0]
+ ldr r2, _020E42F4 ; =model$4434
+ strb r3, [r0, #0x0]
+ ldrb r3, [r2, #0x1]
+ ldrb r0, [r2, #0x2]
+ ldrb r6, [r2, #0x0]
+ strb r3, [sp, #0x31]
+ strb r0, [sp, #0x32]
+ ldrb r3, [r2, #0x3]
+ ldrb r0, [r2, #0x4]
+ strb r6, [sp, #0x30]
+ strb r3, [sp, #0x33]
+ strb r0, [sp, #0x34]
+ b _020E4104
+_020E3418:
+ cmp r5, #0x100
+ bgt _020E3490
+ bge _020E3B98
+ cmp r5, #0x20
+ bgt _020E3474
+ bge _020E3A6C
+ cmp r5, #0x8
+ bgt _020E3468
+ cmp r5, #0x0
+ addge pc, pc, r5, lsl #0x2
+ b _020E4104
+ b _020E4104 ; case 0
+ b _020E34D4 ; case 1
+ b _020E38B8 ; case 2
+ b _020E4104 ; case 3
+ b _020E3968 ; case 4
+ b _020E4104 ; case 5
+ b _020E4104 ; case 6
+ b _020E4104 ; case 7
+ b _020E3990 ; case 8
+_020E3468:
+ cmp r5, #0x10
+ beq _020E3A34
+ b _020E4104
+_020E3474:
+ cmp r5, #0x40
+ bgt _020E3484
+ beq _020E3AF8
+ b _020E4104
+_020E3484:
+ cmp r5, #0x80
+ beq _020E3B44
+ b _020E4104
+_020E3490:
+ cmp r5, #0x2000
+ bgt _020E34B8
+ bge _020E36EC
+ cmp r5, #0x200
+ bgt _020E34AC
+ beq _020E3BF8
+ b _020E4104
+_020E34AC:
+ cmp r5, #0x400
+ beq _020E3C20
+ b _020E4104
+_020E34B8:
+ cmp r5, #0x4000
+ bgt _020E34C8
+ beq _020E35F4
+ b _020E4104
+_020E34C8:
+ cmp r5, #0x8000
+ beq _020E3C98
+ b _020E4104
+_020E34D4:
+ cmp r1, #0x0
+ blt _020E34E4
+ cmp r1, #0x80
+ blt _020E34EC
+_020E34E4:
+ mov r0, #0x0
+ b _020E34FC
+_020E34EC:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x100
+_020E34FC:
+ cmp r0, #0x0
+ beq _020E3528
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ ldr r0, [sp, #0x2c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x2c]
+ b _020E4104
+_020E3528:
+ cmp r1, #0x0
+ blt _020E3538
+ cmp r1, #0x80
+ blt _020E3540
+_020E3538:
+ mov r0, r1
+ b _020E3548
+_020E3540:
+ ldr r0, _020E42FC ; =__upper_mapC
+ ldrb r0, [r0, r1]
+_020E3548:
+ cmp r0, #0x49
+ bgt _020E3574
+ bge _020E35AC
+ cmp r0, #0x2d
+ bgt _020E35EC
+ cmp r0, #0x2b
+ blt _020E35EC
+ beq _020E3588
+ cmp r0, #0x2d
+ beq _020E3580
+ b _020E35EC
+_020E3574:
+ cmp r0, #0x4e
+ beq _020E35CC
+ b _020E35EC
+_020E3580:
+ mov r0, #0x1
+ str r0, [sp, #0x28]
+_020E3588:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ mov r0, #0x1
+ str r0, [sp, #0x18]
+ b _020E4104
+_020E35AC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ mov r5, #0x4000
+ b _020E4104
+_020E35CC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ mov r5, #0x2000
+ b _020E4104
+_020E35EC:
+ mov r5, #0x2
+ b _020E4104
+_020E35F4:
+ mov r5, #0x1
+ add r7, sp, #0x4d
+ add r0, sp, #0x76
+ mov r6, #0x4
+_020E3604:
+ ldrb r3, [r7, #0x0]
+ ldrb r2, [r7, #0x1]
+ add r7, r7, #0x2
+ strb r3, [r0, #0x0]
+ strb r2, [r0, #0x1]
+ add r0, r0, #0x2
+ subs r6, r6, #0x1
+ bne _020E3604
+ ldrb r2, [r7, #0x0]
+ add r6, sp, #0x77
+ ldr r7, _020E42FC ; =__upper_mapC
+ strb r2, [r0, #0x0]
+ b _020E3658
+_020E3638:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r6, r6, #0x1
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E3658:
+ cmp r5, #0x8
+ bge _020E3688
+ cmp r1, #0x0
+ blt _020E3670
+ cmp r1, #0x80
+ blt _020E3678
+_020E3670:
+ mov r2, r1
+ b _020E367C
+_020E3678:
+ ldrb r2, [r7, r1]
+_020E367C:
+ ldrsb r0, [r6, #0x0]
+ cmp r0, r2
+ beq _020E3638
+_020E3688:
+ cmp r5, #0x3
+ cmpne r5, #0x8
+ bne _020E36E4
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ beq _020E36B8
+ ldr r1, _020E4300 ; =__float_huge
+ mov r0, #0x0
+ ldr r1, [r1, #0x0]
+ bl _fsub
+ bl _f2d
+ b _020E36C4
+_020E36B8:
+ ldr r0, _020E4300 ; =__float_huge
+ ldr r0, [r0, #0x0]
+ bl _f2d
+_020E36C4:
+ ldr r2, [sp, #0x2c]
+ add r3, r2, r5
+ ldr r2, [sp, #0x18]
+ add r3, r2, r3
+ ldr r2, [sp, #0x4]
+ add sp, sp, #0xa8
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E36E4:
+ mov r5, #0x1000
+ b _020E4104
+_020E36EC:
+ ldrb r3, [sp, #0x30]
+ ldrb r0, [sp, #0x32]
+ ldrb r2, [sp, #0x31]
+ strb r3, [sp, #0x40]
+ strb r0, [sp, #0x42]
+ ldrb r3, [sp, #0x33]
+ ldrb r0, [sp, #0x34]
+ strb r2, [sp, #0x41]
+ mov r5, #0x1
+ strb r0, [sp, #0x44]
+ mov r6, #0x0
+ add r2, sp, #0x56
+ strb r3, [sp, #0x43]
+ mov r0, #0x8
+_020E3724:
+ strb r6, [r2, #0x0]
+ strb r6, [r2, #0x1]
+ strb r6, [r2, #0x2]
+ strb r6, [r2, #0x3]
+ add r2, r2, #0x4
+ subs r0, r0, #0x1
+ bne _020E3724
+ add r7, sp, #0x41
+ b _020E3768
+_020E3748:
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r7, r7, #0x1
+ add r5, r5, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E3768:
+ cmp r5, #0x4
+ bge _020E379C
+ cmp r1, #0x0
+ blt _020E3780
+ cmp r1, #0x80
+ blt _020E3788
+_020E3780:
+ mov r2, r1
+ b _020E3790
+_020E3788:
+ ldr r0, _020E42FC ; =__upper_mapC
+ ldrb r2, [r0, r1]
+_020E3790:
+ ldrsb r0, [r7, #0x0]
+ cmp r0, r2
+ beq _020E3748
+_020E379C:
+ sub r0, r5, #0x3
+ cmp r0, #0x1
+ bhi _020E38B0
+ cmp r5, #0x4
+ bne _020E3854
+ ldr r7, _020E42F8 ; =__msl_digit
+ b _020E37DC
+_020E37B8:
+ add r0, sp, #0x56
+ strb r1, [r0, r6]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r6, r6, #0x1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+_020E37DC:
+ cmp r6, #0x20
+ bge _020E3844
+ cmp r1, #0x0
+ blt _020E37F4
+ cmp r1, #0x80
+ blt _020E37FC
+_020E37F4:
+ mov r0, #0x0
+ b _020E3808
+_020E37FC:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r7, r0]
+ and r0, r0, #0x8
+_020E3808:
+ cmp r0, #0x0
+ bne _020E37B8
+ cmp r1, #0x0
+ blt _020E3820
+ cmp r1, #0x80
+ blt _020E3828
+_020E3820:
+ mov r0, #0x0
+ b _020E3834
+_020E3828:
+ mov r0, r1, lsl #0x1
+ ldrh r0, [r7, r0]
+ and r0, r0, #0x1
+_020E3834:
+ cmp r0, #0x0
+ bne _020E37B8
+ cmp r1, #0x2e
+ beq _020E37B8
+_020E3844:
+ cmp r1, #0x29
+ movne r5, #0x1000
+ bne _020E4104
+ add r6, r6, #0x1
+_020E3854:
+ add r0, sp, #0x56
+ mov r1, #0x0
+ strb r1, [r0, r6]
+ ldr r1, [sp, #0x28]
+ cmp r1, #0x0
+ beq _020E3888
+ bl nan
+ mov r2, r0
+ mov r0, #0x0
+ mov r3, r1
+ mov r1, r0
+ bl _dsub
+ b _020E388C
+_020E3888:
+ bl nan
+_020E388C:
+ ldr r2, [sp, #0x2c]
+ add r2, r2, r5
+ add r3, r6, r2
+ ldr r2, [sp, #0x18]
+ add r3, r2, r3
+ ldr r2, [sp, #0x4]
+ add sp, sp, #0xa8
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E38B0:
+ mov r5, #0x1000
+ b _020E4104
+_020E38B8:
+ cmp r1, #0x2e
+ bne _020E38E0
+ mov r5, #0x10
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E38E0:
+ cmp r1, #0x0
+ blt _020E38F0
+ cmp r1, #0x80
+ blt _020E38F8
+_020E38F0:
+ mov r0, #0x0
+ b _020E3908
+_020E38F8:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3908:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ bne _020E3960
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ cmp r0, #0x0
+ mov r1, r0
+ blt _020E394C
+ cmp r0, #0x80
+ bge _020E394C
+ ldr r2, _020E42FC ; =__upper_mapC
+ ldrb r0, [r2, r0]
+_020E394C:
+ cmp r0, #0x58
+ moveq r5, #0x8000
+ moveq r10, #0x1
+ movne r5, #0x4
+ b _020E4104
+_020E3960:
+ mov r5, #0x8
+ b _020E4104
+_020E3968:
+ cmp r1, #0x30
+ movne r5, #0x8
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3990:
+ cmp r1, #0x0
+ blt _020E39A0
+ cmp r1, #0x80
+ blt _020E39A8
+_020E39A0:
+ mov r0, #0x0
+ b _020E39B8
+_020E39A8:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E39B8:
+ cmp r0, #0x0
+ bne _020E39EC
+ cmp r1, #0x2e
+ movne r5, #0x40
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x20
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E39EC:
+ ldrb r2, [sp, #0x84]
+ cmp r2, #0x14
+ ldrcs r0, [sp, #0x1c]
+ addcs r0, r0, #0x1
+ strcs r0, [sp, #0x1c]
+ bhs _020E3A18
+ add r0, r2, #0x1
+ strb r0, [sp, #0x84]
+ add r0, sp, #0x80
+ add r0, r0, r2
+ strb r1, [r0, #0x5]
+_020E3A18:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3A34:
+ cmp r1, #0x0
+ blt _020E3A44
+ cmp r1, #0x80
+ blt _020E3A4C
+_020E3A44:
+ mov r0, #0x0
+ b _020E3A5C
+_020E3A4C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3A5C:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ movne r5, #0x20
+ b _020E4104
+_020E3A6C:
+ cmp r1, #0x0
+ blt _020E3A7C
+ cmp r1, #0x80
+ blt _020E3A84
+_020E3A7C:
+ mov r0, #0x0
+ b _020E3A94
+_020E3A84:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3A94:
+ cmp r0, #0x0
+ moveq r5, #0x40
+ beq _020E4104
+ ldrb r3, [sp, #0x84]
+ cmp r3, #0x14
+ bhs _020E3ADC
+ cmp r1, #0x30
+ cmpeq r3, #0x0
+ beq _020E3AD0
+ ldrb r2, [sp, #0x84]
+ add r0, sp, #0x80
+ add r0, r0, r3
+ add r2, r2, #0x1
+ strb r2, [sp, #0x84]
+ strb r1, [r0, #0x5]
+_020E3AD0:
+ ldr r0, [sp, #0x1c]
+ sub r0, r0, #0x1
+ str r0, [sp, #0x1c]
+_020E3ADC:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3AF8:
+ cmp r1, #0x0
+ blt _020E3B08
+ cmp r1, #0x80
+ blt _020E3B10
+_020E3B08:
+ mov r0, r1
+ b _020E3B18
+_020E3B10:
+ ldr r0, _020E42FC ; =__upper_mapC
+ ldrb r0, [r0, r1]
+_020E3B18:
+ cmp r0, #0x45
+ movne r5, #0x800
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x80
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3B44:
+ cmp r1, #0x2b
+ bne _020E3B68
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E3B90
+_020E3B68:
+ cmp r1, #0x2d
+ bne _020E3B90
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ mov r0, #0x1
+ str r0, [sp, #0x24]
+_020E3B90:
+ mov r5, #0x100
+ b _020E4104
+_020E3B98:
+ cmp r1, #0x0
+ blt _020E3BA8
+ cmp r1, #0x80
+ blt _020E3BB0
+_020E3BA8:
+ mov r0, #0x0
+ b _020E3BC0
+_020E3BB0:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3BC0:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ movne r5, #0x400
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r5, #0x200
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3BF8:
+ cmp r1, #0x30
+ movne r5, #0x400
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3C20:
+ cmp r1, #0x0
+ blt _020E3C30
+ cmp r1, #0x80
+ blt _020E3C38
+_020E3C30:
+ mov r0, #0x0
+ b _020E3C48
+_020E3C38:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E3C48:
+ cmp r0, #0x0
+ moveq r5, #0x800
+ beq _020E4104
+ ldr r0, [sp, #0x20]
+ sub r2, r1, #0x30
+ mov r1, #0xa
+ mla r0, r1, r0, r2
+ ldr r1, _020E4304 ; =0x00007FFF
+ str r0, [sp, #0x20]
+ cmp r0, r1
+ ldrgt r0, [sp, #0xd0]
+ movgt r1, #0x1
+ strgt r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3C98:
+ cmp r10, #0x20
+ bgt _020E3CE8
+ bge _020E3FBC
+ cmp r10, #0x8
+ bgt _020E3CDC
+ cmp r10, #0x0
+ addge pc, pc, r10, lsl #0x2
+ b _020E4104
+ b _020E4104 ; case 0
+ b _020E3D0C ; case 1
+ b _020E3D5C ; case 2
+ b _020E4104 ; case 3
+ b _020E3D84 ; case 4
+ b _020E4104 ; case 5
+ b _020E4104 ; case 6
+ b _020E4104 ; case 7
+ b _020E3E94 ; case 8
+_020E3CDC:
+ cmp r10, #0x10
+ beq _020E3F70
+ b _020E4104
+_020E3CE8:
+ cmp r10, #0x80
+ bgt _020E3D00
+ bge _020E4064
+ cmp r10, #0x40
+ beq _020E4004
+ b _020E4104
+_020E3D00:
+ cmp r10, #0x100
+ beq _020E408C
+ b _020E4104
+_020E3D0C:
+ mov r1, #0x0
+ add r0, sp, #0x45
+ str r0, [sp, #0x14]
+ 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]
+ mov r0, r8
+ mov r2, r1
+ str r1, [sp, #0x8]
+ mov r11, r1
+ mov r10, #0x2
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3D5C:
+ cmp r1, #0x30
+ movne r10, #0x4
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3D84:
+ cmp r1, #0x0
+ blt _020E3D94
+ cmp r1, #0x80
+ blt _020E3D9C
+_020E3D94:
+ mov r0, #0x0
+ b _020E3DAC
+_020E3D9C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x400
+_020E3DAC:
+ cmp r0, #0x0
+ bne _020E3DE0
+ cmp r1, #0x2e
+ movne r10, #0x10
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x8
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3DE0:
+ ldr r2, [sp, #0x8]
+ mov r0, #0xe
+ cmp r2, r0
+ bhs _020E3E78
+ mov r0, r2
+ add r0, r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x14]
+ add r2, r11, r11, lsr #0x1f
+ cmp r1, #0x0
+ ldrb r0, [r0, r2, asr #0x1]
+ blt _020E3E20
+ cmp r1, #0x80
+ bge _020E3E20
+ ldr r2, _020E42FC ; =__upper_mapC
+ ldrb r1, [r2, r1]
+_020E3E20:
+ cmp r1, #0x41
+ subge r1, r1, #0x37
+ sublt r1, r1, #0x30
+ mov r2, r11, lsr #0x1f
+ and r3, r1, #0xff
+ rsb r1, r2, r11, lsl #0x1f
+ adds r1, r2, r1, ror #0x1f
+ moveq r1, r3, lsl #0x4
+ add r2, r11, r11, lsr #0x1f
+ orrne r0, r0, r3
+ andeq r1, r1, #0xff
+ orreq r0, r0, r1
+ ldr r1, [sp, #0x14]
+ add r11, r11, #0x1
+ strb r0, [r1, r2, asr #0x1]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3E78:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3E94:
+ cmp r1, #0x0
+ blt _020E3EA4
+ cmp r1, #0x80
+ blt _020E3EAC
+_020E3EA4:
+ mov r0, #0x0
+ b _020E3EBC
+_020E3EAC:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x400
+_020E3EBC:
+ cmp r0, #0x0
+ moveq r10, #0x10
+ beq _020E4104
+ ldr r2, [sp, #0x8]
+ mov r0, #0xe
+ cmp r2, r0
+ bhs _020E3F54
+ ldr r0, [sp, #0x14]
+ add r2, r11, r11, lsr #0x1f
+ cmp r1, #0x0
+ ldrb r0, [r0, r2, asr #0x1]
+ blt _020E3EFC
+ cmp r1, #0x80
+ bge _020E3EFC
+ ldr r2, _020E42FC ; =__upper_mapC
+ ldrb r1, [r2, r1]
+_020E3EFC:
+ cmp r1, #0x41
+ subge r1, r1, #0x37
+ sublt r1, r1, #0x30
+ mov r2, r11, lsr #0x1f
+ and r3, r1, #0xff
+ rsb r1, r2, r11, lsl #0x1f
+ adds r1, r2, r1, ror #0x1f
+ moveq r1, r3, lsl #0x4
+ add r2, r11, r11, lsr #0x1f
+ orrne r0, r0, r3
+ andeq r1, r1, #0xff
+ orreq r0, r0, r1
+ ldr r1, [sp, #0x14]
+ add r11, r11, #0x1
+ strb r0, [r1, r2, asr #0x1]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3F54:
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3F70:
+ cmp r1, #0x0
+ blt _020E3F80
+ cmp r1, #0x80
+ blt _020E3F88
+_020E3F80:
+ mov r0, r1
+ b _020E3F90
+_020E3F88:
+ ldr r0, _020E42FC ; =__upper_mapC
+ ldrb r0, [r0, r1]
+_020E3F90:
+ cmp r0, #0x50
+ movne r5, #0x800
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x20
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E3FBC:
+ cmp r1, #0x2d
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020E3FE4
+ cmp r1, #0x2b
+ beq _020E3FE4
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ sub r4, r4, #0x1
+_020E3FE4:
+ mov r10, #0x40
+ add r4, r4, #0x1
+ mov r0, r8
+ mov r1, #0x0
+ mov r2, r1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E4004:
+ cmp r1, #0x0
+ blt _020E4014
+ cmp r1, #0x80
+ blt _020E401C
+_020E4014:
+ mov r0, #0x0
+ b _020E402C
+_020E401C:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E402C:
+ cmp r0, #0x0
+ moveq r5, #0x1000
+ beq _020E4104
+ cmp r1, #0x30
+ movne r10, #0x100
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ mov r10, #0x80
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E4064:
+ cmp r1, #0x30
+ movne r10, #0x100
+ bne _020E4104
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ add r4, r4, #0x1
+ blx r9
+ mov r1, r0
+ b _020E4104
+_020E408C:
+ cmp r1, #0x0
+ blt _020E409C
+ cmp r1, #0x80
+ blt _020E40A4
+_020E409C:
+ mov r0, #0x0
+ b _020E40B4
+_020E40A4:
+ mov r2, r1, lsl #0x1
+ ldr r0, _020E42F8 ; =__msl_digit
+ ldrh r0, [r0, r2]
+ and r0, r0, #0x8
+_020E40B4:
+ cmp r0, #0x0
+ moveq r5, #0x800
+ beq _020E4104
+ ldr r0, [sp, #0x10]
+ sub r2, r1, #0x30
+ mov r1, #0xa
+ mla r0, r1, r0, r2
+ str r0, [sp, #0x10]
+ ldr r1, _020E4304 ; =0x00007FFF
+ ldr r0, [sp, #0x20]
+ add r4, r4, #0x1
+ cmp r0, r1
+ ldrgt r0, [sp, #0xd0]
+ movgt r1, #0x1
+ strgt r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r8
+ mov r2, r1
+ blx r9
+ mov r1, r0
+_020E4104:
+ ldr r0, [sp, #0x0]
+ cmp r4, r0
+ bgt _020E4124
+ mvn r0, #0x0
+ cmp r1, r0
+ beq _020E4124
+ tst r5, #0x1800
+ beq _020E3418
+_020E4124:
+ cmp r5, #0x8000
+ beq _020E4140
+ ldr r0, _020E4308 ; =0x00000E2C
+ tst r5, r0
+ moveq r0, #0x1
+ movne r0, #0x0
+ b _020E4164
+_020E4140:
+ sub r0, r4, #0x1
+ cmp r0, #0x2
+ ble _020E4158
+ ldr r0, _020E430C ; =0x0000018E
+ tst r10, r0
+ bne _020E4160
+_020E4158:
+ mov r0, #0x1
+ b _020E4164
+_020E4160:
+ mov r0, #0x0
+_020E4164:
+ cmp r0, #0x0
+ movne r2, #0x0
+ ldrne r0, [sp, #0x4]
+ bne _020E4184
+ ldr r0, [sp, #0x2c]
+ sub r2, r4, #0x1
+ add r2, r2, r0
+ ldr r0, [sp, #0x4]
+_020E4184:
+ str r2, [r0, #0x0]
+ mov r0, r8
+ mov r2, #0x1
+ blx r9
+ cmp r10, #0x0
+ bne _020E4388
+ ldr r0, [sp, #0x24]
+ ldrb r2, [sp, #0x84]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x20]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x20]
+ add r0, sp, #0x85
+ add r1, r0, r2
+ b _020E41CC
+_020E41C0:
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #0x1
+ str r0, [sp, #0x1c]
+_020E41CC:
+ cmp r2, #0x0
+ sub r2, r2, #0x1
+ beq _020E41E4
+ ldrb r0, [r1, #-0x1]!
+ cmp r0, #0x30
+ beq _020E41C0
+_020E41E4:
+ add r0, r2, #0x1
+ strb r0, [sp, #0x84]
+ ands r2, r0, #0xff
+ bne _020E4208
+ add r1, r2, #0x1
+ strb r1, [sp, #0x84]
+ add r0, sp, #0x85
+ mov r1, #0x30
+ strb r1, [r0, r2]
+_020E4208:
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ mov r2, #0x8000
+ add r0, r1, r0
+ rsb r2, r2, #0x0
+ str r0, [sp, #0x20]
+ cmp r0, r2
+ blt _020E4230
+ cmp r0, r2, lsr #0x11
+ ble _020E423C
+_020E4230:
+ ldr r0, [sp, #0xd0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E423C:
+ ldr r0, [sp, #0xd0]
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020E4298
+ ldr r0, [sp, #0x24]
+ cmp r0, #0x0
+ movne r0, #0x0
+ addne sp, sp, #0xa8
+ movne r1, r0
+ ldmneia sp!, {r3-r11,pc}
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ ldreq r1, _020E4310 ; =__double_huge
+ addeq sp, sp, #0xa8
+ ldmeqia r1, {r0-r1}
+ ldmeqia sp!, {r3-r11,pc}
+ ldr r1, _020E4310 ; =__double_huge
+ mov r0, #0x0
+ ldmia r1, {r2-r3}
+ mov r1, r0
+ bl _dsub
+ add sp, sp, #0xa8
+ ldmia sp!, {r3-r11,pc}
+_020E4298:
+ ldr r1, [sp, #0x20]
+ add r0, sp, #0x80
+ strh r1, [sp, #0x82]
+ bl __dec2num
+ mov r4, r0
+ mov r6, r1
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r6
+ bl _dneq
+ beq _020E4318
+ mov r0, r4
+ mov r1, r6
+ mov r2, #0x0
+ mov r3, #0x100000
+ bl _dls
+ bhs _020E4318
+ ldr r0, [sp, #0xd0]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+ b _020E4344
+ .balign 4
+_020E42F0: .word model$4439
+_020E42F4: .word model$4434
+_020E42F8: .word __msl_digit
+_020E42FC: .word __upper_mapC
+_020E4300: .word __float_huge
+_020E4304: .word 0x00007FFF
+_020E4308: .word 0x00000E2C
+_020E430C: .word 0x0000018E
+_020E4310: .word __double_huge
+_020E4314: .word 0x7FEFFFFF
+_020E4318:
+ ldr r3, _020E4314 ; =0x7FEFFFFF
+ mov r0, r4
+ mov r1, r6
+ mvn r2, #0x0
+ bl _dgr
+ bls _020E4344
+ ldr r0, [sp, #0xd0]
+ mov r2, #0x1
+ ldr r1, _020E4310 ; =__double_huge
+ str r2, [r0, #0x0]
+ ldmia r1, {r4,r6}
+_020E4344:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x0
+ beq _020E4378
+ ldr r0, _020E4308 ; =0x00000E2C
+ tst r5, r0
+ beq _020E4378
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r6
+ bl _dsub
+ mov r4, r0
+ mov r6, r1
+_020E4378:
+ add sp, sp, #0xa8
+ mov r0, r4
+ mov r1, r6
+ ldmia sp!, {r3-r11,pc}
+_020E4388:
+ ldr r0, [sp, #0xc]
+ add r4, sp, #0x38
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ ldrb r3, [sp, #0x45]
+ rsbne r0, r0, #0x0
+ strne r0, [sp, #0x10]
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x8]
+ mov r2, #0x0
+ add r0, r1, r0, lsl #0x2
+ str r0, [sp, #0x10]
+ mov r1, #0x80
+ b _020E43D0
+_020E43C0:
+ ldr r0, [sp, #0x10]
+ add r2, r2, #0x1
+ sub r0, r0, #0x1
+ str r0, [sp, #0x10]
+_020E43D0:
+ cmp r2, #0x4
+ bhs _020E43E0
+ tst r3, r1, asr r2
+ beq _020E43C0
+_020E43E0:
+ adds r5, r2, #0x1
+ beq _020E442C
+ add r0, sp, #0x4c
+ add r3, sp, #0x45
+ str r0, [sp, #0x14]
+ mov r1, #0x0
+ cmp r0, r3
+ blo _020E442C
+ rsb r6, r5, #0x8
+_020E4404:
+ ldr r0, [sp, #0x14]
+ ldrb r0, [r0, #0x0]
+ orr r2, r1, r0, lsl r5
+ mov r1, r0, asr r6
+ ldr r0, [sp, #0x14]
+ and r1, r1, #0xff
+ strb r2, [r0], #-0x1
+ str r0, [sp, #0x14]
+ cmp r0, r3
+ bhs _020E4404
+_020E442C:
+ mov r2, #0x0
+ mov r6, r2
+ strb r2, [r4, #0x0]
+ strb r2, [r4, #0x1]
+ strb r2, [r4, #0x2]
+ strb r2, [r4, #0x3]
+ strb r2, [r4, #0x4]
+ strb r2, [r4, #0x5]
+ strb r2, [r4, #0x6]
+ strb r2, [r4, #0x7]
+ mov r3, #0xc
+ mov r7, #0x1
+ mov r0, #0xff
+ add r1, sp, #0x45
+_020E4464:
+ add r5, r2, #0x8
+ cmp r5, #0x34
+ ldrb r5, [r1, r6]
+ rsbhi r8, r2, #0x34
+ and r11, r3, #0x7
+ andhi r5, r5, r0, lsl r8
+ andhi r5, r5, #0xff
+ mov r8, r5, asr r11
+ and r9, r8, #0xff
+ ldrb r10, [r4, r7]
+ rsb r8, r11, #0x8
+ mov r5, r5, lsl r8
+ orr r9, r10, r9
+ strb r9, [r4, r7]
+ add r7, r7, #0x1
+ add r2, r2, #0x8
+ ldrb r8, [r4, r7]
+ and r5, r5, #0xff
+ cmp r2, #0x34
+ orr r5, r8, r5
+ strb r5, [r4, r7]
+ add r3, r3, #0x8
+ add r6, r6, #0x1
+ blo _020E4464
+ ldr r0, [sp, #0x10]
+ mov r1, #0x800
+ add r0, r0, #0xfe
+ add r2, r0, #0x300
+ rsb r1, r1, #0x0
+ tst r2, r1
+ beq _020E44FC
+ ldr r2, [sp, #0xd0]
+ mov r3, #0x1
+ mov r0, #0x0
+ add sp, sp, #0xa8
+ mov r1, r0
+ str r3, [r2, #0x0]
+ ldmia sp!, {r3-r11,pc}
+_020E44FC:
+ ldrb r0, [r4, #0x1]
+ mov r2, r2, lsl #0x15
+ ldrb r1, [r4, #0x0]
+ orr r0, r0, r2, lsr #0x11
+ strb r0, [r4, #0x1]
+ ldr r0, [sp, #0x28]
+ orr r1, r1, r2, lsr #0x19
+ cmp r0, #0x0
+ andne r0, r1, #0xff
+ strb r1, [r4, #0x0]
+ orrne r0, r0, #0x80
+ strneb r0, [r4, #0x0]
+ mov r3, #0x0
+_020E4530:
+ rsb r1, r3, #0x7
+ ldrb r2, [r4, r3]
+ ldrb r0, [r4, r1]
+ strb r0, [r4, r3]
+ add r3, r3, #0x1
+ strb r2, [r4, r1]
+ cmp r3, #0x4
+ blt _020E4530
+ ldmia r4, {r0-r1}
+ add sp, sp, #0xa8
+ ldmia sp!, {r3-r11,pc}
+ arm_func_end __strtold
+
+ arm_func_start strtold
+strtold: ; 0x020E455C
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x14
+ mov r7, r0
+ mov r0, #0x0
+ mov r6, r1
+ str r0, [sp, #0x8]
+ add r4, sp, #0xc
+ str r7, [sp, #0x4]
+ ldr r1, _020E4630 ; =__StringRead
+ add r2, sp, #0x4
+ add r3, sp, #0x10
+ sub r0, r0, #0x80000001
+ str r4, [sp, #0x0]
+ bl __strtold
+ mov r5, r1
+ mov r4, r0
+ cmp r6, #0x0
+ ldrne r0, [sp, #0x10]
+ mov r1, r5
+ addne r0, r7, r0
+ strne r0, [r6, #0x0]
+ mov r0, r4
+ bl fabs
+ ldr r2, [sp, #0xc]
+ mov r6, r0
+ mov r7, r1
+ cmp r2, #0x0
+ bne _020E4614
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r4
+ mov r3, r5
+ bl _dneq
+ beq _020E4620
+ mov r0, r6
+ mov r1, r7
+ mov r2, #0x0
+ mov r3, #0x100000
+ bl _dls
+ blo _020E4614
+ ldr r3, _020E4634 ; =0x7FEFFFFF
+ mov r0, r6
+ mov r1, r7
+ mvn r2, #0x0
+ bl _dgr
+ bls _020E4620
+_020E4614:
+ ldr r0, _020E4638 ; =errno
+ mov r1, #0x22
+ str r1, [r0, #0x0]
+_020E4620:
+ mov r0, r4
+ mov r1, r5
+ add sp, sp, #0x14
+ ldmia sp!, {r4-r7,pc}
+ .balign 4
+_020E4630: .word __StringRead
+_020E4634: .word 0x7FEFFFFF
+_020E4638: .word errno
+ arm_func_end strtold
+
+ arm_func_start atod
+atod: ; 0x020E463C
+ ldr ip, _020E4648 ; =strtold
+ mov r1, #0x0
+ bx r12
+ .balign 4
+_020E4648: .word strtold
+ arm_func_end atod
+
+ .section .exceptix,4
+
+ .word __strtold
+ .short 4684
+ .word UNK_020EC720
+ .word strtold
+ .short 225
+ .word 0x00500F00
+ .word atod
+ .short 17
+ .word 0x00000000
+
+ .section .exception,8
+
+UNK_020EC720: ; 0x020EC720
+ .byte 0x00, 0xFF, 0x01, 0xD0
+ .balign 8
diff --git a/arm9/asm/MSL_Common_strtoul.s b/arm9/asm/MSL_Common_strtoul.s
new file mode 100644
index 00000000..ab4a1bbf
--- /dev/null
+++ b/arm9/asm/MSL_Common_strtoul.s
@@ -0,0 +1,743 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start __strtoul
+__strtoul:
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xc
+ ldr r4, [sp, #0x38]
+ movs r9, r0
+ ldr r0, [sp, #0x34]
+ str r4, [sp, #0x38]
+ mov r4, #0x0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x38]
+ str r1, [sp, #0x0]
+ str r4, [r0, #0x0]
+ mov r0, r4
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x34]
+ mov r1, r4
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x30]
+ str r4, [sp, #0x8]
+ mov r8, r2
+ mov r7, r3
+ mov r5, r4
+ mov r10, r4
+ str r0, [sp, #0x30]
+ mov r4, #0x1
+ bmi _020E46CC
+ cmp r9, #0x1
+ beq _020E46CC
+ cmp r9, #0x24
+ bgt _020E46CC
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x1
+ bge _020E46D4
+_020E46CC:
+ mov r4, #0x40
+ b _020E46F0
+_020E46D4:
+ ldr r1, [sp, #0x8]
+ mov r0, r7
+ mov r3, r1
+ mov r2, r1
+ add r5, r3, #0x1
+ blx r8
+ mov r6, r0
+_020E46F0:
+ cmp r9, #0x0
+ beq _020E4708
+ mov r1, r9
+ mvn r0, #0x0
+ bl _u32_div_f
+ str r0, [sp, #0x4]
+_020E4708:
+ mvn r11, #0x0
+ b _020E49C8
+_020E4710:
+ cmp r4, #0x8
+ bgt _020E4748
+ cmp r4, #0x0
+ addge pc, pc, r4, lsl #0x2
+ b _020E49C8
+ b _020E49C8
+ b _020E4754
+ b _020E4800
+ b _020E49C8
+ b _020E483C
+ b _020E49C8
+ b _020E49C8
+ b _020E49C8
+ b _020E487C
+_020E4748:
+ cmp r4, #0x10
+ beq _020E487C
+ b _020E49C8
+_020E4754:
+ cmp r6, #0x0
+ blt _020E4764
+ cmp r6, #0x80
+ blt _020E476C
+_020E4764:
+ mov r0, #0x0
+ b _020E477C
+_020E476C:
+ ldr r0, _020E4A2C ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E477C:
+ cmp r0, #0x0
+ beq _020E47A8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x8]
+ add r0, r0, #0x1
+ str r0, [sp, #0x8]
+ b _020E49C8
+_020E47A8:
+ cmp r6, #0x2b
+ bne _020E47CC
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E47F8
+_020E47CC:
+ cmp r6, #0x2d
+ bne _020E47F8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x34]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E47F8:
+ mov r4, #0x2
+ b _020E49C8
+_020E4800:
+ cmp r9, #0x0
+ cmpne r9, #0x10
+ bne _020E4834
+ cmp r6, #0x30
+ bne _020E4834
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r4, #0x4
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E49C8
+_020E4834:
+ mov r4, #0x8
+ b _020E49C8
+_020E483C:
+ cmp r6, #0x58
+ cmpne r6, #0x78
+ bne _020E486C
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r9, #0x10
+ mov r4, #0x8
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E49C8
+_020E486C:
+ cmp r9, #0x0
+ moveq r9, #0x8
+ mov r4, #0x10
+ b _020E49C8
+_020E487C:
+ ldr r0, [sp, #0x4]
+ cmp r9, #0x0
+ moveq r9, #0xa
+ cmp r0, #0x0
+ bne _020E48A0
+ mov r0, r11
+ mov r1, r9
+ bl _u32_div_f
+ str r0, [sp, #0x4]
+_020E48A0:
+ cmp r6, #0x0
+ blt _020E48B0
+ cmp r6, #0x80
+ blt _020E48B8
+_020E48B0:
+ mov r0, #0x0
+ b _020E48C8
+_020E48B8:
+ ldr r0, _020E4A2C ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x8
+_020E48C8:
+ cmp r0, #0x0
+ beq _020E48F0
+ sub r6, r6, #0x30
+ cmp r6, r9
+ blt _020E4978
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ add r6, r6, #0x30
+ b _020E49C8
+_020E48F0:
+ cmp r6, #0x0
+ blt _020E4900
+ cmp r6, #0x80
+ blt _020E4908
+_020E4900:
+ mov r0, #0x0
+ b _020E4918
+_020E4908:
+ ldr r0, _020E4A2C ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x1
+_020E4918:
+ cmp r0, #0x0
+ beq _020E494C
+ cmp r6, #0x0
+ blt _020E4930
+ cmp r6, #0x80
+ blt _020E4938
+_020E4930:
+ mov r0, r6
+ b _020E4940
+_020E4938:
+ ldr r0, _020E4A30 ; =__upper_mapC
+ ldrb r0, [r0, r6]
+_020E4940:
+ sub r0, r0, #0x37
+ cmp r0, r9
+ blt _020E495C
+_020E494C:
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ b _020E49C8
+_020E495C:
+ cmp r6, #0x0
+ blt _020E4974
+ cmp r6, #0x80
+ bge _020E4974
+ ldr r0, _020E4A30 ; =__upper_mapC
+ ldrb r6, [r0, r6]
+_020E4974:
+ sub r6, r6, #0x37
+_020E4978:
+ ldr r0, [sp, #0x4]
+ mov r4, #0x10
+ cmp r10, r0
+ ldrhi r0, [sp, #0x38]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mul r0, r10, r9
+ mov r10, r0
+ sub r0, r11, r0
+ cmp r6, r0
+ ldrhi r0, [sp, #0x38]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r10, r10, r6
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+_020E49C8:
+ ldr r0, [sp, #0x0]
+ cmp r5, r0
+ bgt _020E49E4
+ cmp r6, r11
+ beq _020E49E4
+ tst r4, #0x60
+ beq _020E4710
+_020E49E4:
+ tst r4, #0x34
+ bne _020E49FC
+ ldr r0, [sp, #0x30]
+ mov r10, #0x0
+ str r10, [r0, #0x0]
+ b _020E4A10
+_020E49FC:
+ ldr r0, [sp, #0x8]
+ sub r1, r5, #0x1
+ add r1, r1, r0
+ ldr r0, [sp, #0x30]
+ str r1, [r0, #0x0]
+_020E4A10:
+ mov r0, r7
+ mov r1, r6
+ mov r2, #0x1
+ blx r8
+ mov r0, r10
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E4A2C: .word __msl_digit
+_020E4A30: .word __upper_mapC
+ arm_func_end __strtoul
+
+ arm_func_start __strtoull
+__strtoull: ; 0x020E4A34
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x1c
+ ldr r4, [sp, #0x48]
+ movs r9, r0
+ ldr r0, [sp, #0x44]
+ str r4, [sp, #0x48]
+ mov r4, #0x0
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x48]
+ str r1, [sp, #0x0]
+ str r4, [r0, #0x0]
+ mov r0, r4
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x8]
+ ldr r0, [sp, #0x44]
+ mov r1, r4
+ str r1, [r0, #0x0]
+ ldr r0, [sp, #0x40]
+ str r4, [sp, #0x14]
+ mov r8, r2
+ mov r7, r3
+ mov r5, r4
+ mov r10, r4
+ mov r11, r4
+ str r0, [sp, #0x40]
+ mov r4, #0x1
+ bmi _020E4ABC
+ cmp r9, #0x1
+ beq _020E4ABC
+ cmp r9, #0x24
+ bgt _020E4ABC
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x1
+ bge _020E4AC4
+_020E4ABC:
+ mov r4, #0x40
+ b _020E4ADC
+_020E4AC4:
+ ldr r1, [sp, #0x14]
+ mov r0, r7
+ mov r2, r1
+ add r5, r1, #0x1
+ blx r8
+ mov r6, r0
+_020E4ADC:
+ cmp r9, #0x0
+ beq _020E4B00
+ mvn r0, #0x0
+ mov r1, r0
+ mov r3, r9, asr #0x1f
+ mov r2, r9
+ bl _ll_udiv
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x8]
+_020E4B00:
+ mvn r0, #0x0
+ str r0, [sp, #0x18]
+ b _020E4E08
+_020E4B0C:
+ cmp r4, #0x8
+ bgt _020E4B44
+ cmp r4, #0x0
+ addge pc, pc, r4, lsl #0x2
+ b _020E4E08
+ b _020E4E08
+ b _020E4B50
+ b _020E4BFC
+ b _020E4E08
+ b _020E4C38
+ b _020E4E08
+ b _020E4E08
+ b _020E4E08
+ b _020E4C78
+_020E4B44:
+ cmp r4, #0x10
+ beq _020E4C78
+ b _020E4E08
+_020E4B50:
+ cmp r6, #0x0
+ blt _020E4B60
+ cmp r6, #0x80
+ blt _020E4B68
+_020E4B60:
+ mov r0, #0x0
+ b _020E4B78
+_020E4B68:
+ ldr r0, _020E4E78 ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x100
+_020E4B78:
+ cmp r0, #0x0
+ beq _020E4BA4
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x14]
+ add r0, r0, #0x1
+ str r0, [sp, #0x14]
+ b _020E4E08
+_020E4BA4:
+ cmp r6, #0x2b
+ bne _020E4BC8
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4BF4
+_020E4BC8:
+ cmp r6, #0x2d
+ bne _020E4BF4
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ ldr r0, [sp, #0x44]
+ mov r1, #0x1
+ str r1, [r0, #0x0]
+_020E4BF4:
+ mov r4, #0x2
+ b _020E4E08
+_020E4BFC:
+ cmp r9, #0x0
+ cmpne r9, #0x10
+ bne _020E4C30
+ cmp r6, #0x30
+ bne _020E4C30
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r4, #0x4
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4E08
+_020E4C30:
+ mov r4, #0x8
+ b _020E4E08
+_020E4C38:
+ cmp r6, #0x58
+ cmpne r6, #0x78
+ bne _020E4C68
+ mov r1, #0x0
+ mov r0, r7
+ mov r2, r1
+ mov r9, #0x10
+ mov r4, #0x8
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+ b _020E4E08
+_020E4C68:
+ cmp r9, #0x0
+ moveq r9, #0x8
+ mov r4, #0x10
+ b _020E4E08
+_020E4C78:
+ ldr r1, [sp, #0x8]
+ mov r0, #0x0
+ cmp r9, #0x0
+ moveq r9, #0xa
+ cmp r1, r0
+ ldr r1, [sp, #0xc]
+ cmpeq r1, r0
+ bne _020E4CB4
+ ldr r0, [sp, #0x18]
+ mov r3, r9, asr #0x1f
+ mov r1, r0
+ mov r2, r9
+ bl _ll_udiv
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x8]
+_020E4CB4:
+ cmp r6, #0x0
+ blt _020E4CC4
+ cmp r6, #0x80
+ blt _020E4CCC
+_020E4CC4:
+ mov r0, #0x0
+ b _020E4CDC
+_020E4CCC:
+ ldr r0, _020E4E78 ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x8
+_020E4CDC:
+ cmp r0, #0x0
+ beq _020E4D04
+ sub r6, r6, #0x30
+ cmp r6, r9
+ blt _020E4D8C
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ add r6, r6, #0x30
+ b _020E4E08
+_020E4D04:
+ cmp r6, #0x0
+ blt _020E4D14
+ cmp r6, #0x80
+ blt _020E4D1C
+_020E4D14:
+ mov r0, #0x0
+ b _020E4D2C
+_020E4D1C:
+ ldr r0, _020E4E78 ; =__msl_digit
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x1
+_020E4D2C:
+ cmp r0, #0x0
+ beq _020E4D60
+ cmp r6, #0x0
+ blt _020E4D44
+ cmp r6, #0x80
+ blt _020E4D4C
+_020E4D44:
+ mov r0, r6
+ b _020E4D54
+_020E4D4C:
+ ldr r0, _020E4E7C ; =__upper_mapC
+ ldrb r0, [r0, r6]
+_020E4D54:
+ sub r0, r0, #0x37
+ cmp r0, r9
+ blt _020E4D70
+_020E4D60:
+ cmp r4, #0x10
+ moveq r4, #0x20
+ movne r4, #0x40
+ b _020E4E08
+_020E4D70:
+ cmp r6, #0x0
+ blt _020E4D88
+ cmp r6, #0x80
+ bge _020E4D88
+ ldr r0, _020E4E7C ; =__upper_mapC
+ ldrb r6, [r0, r6]
+_020E4D88:
+ sub r6, r6, #0x37
+_020E4D8C:
+ ldr r0, [sp, #0x8]
+ umull r2, r3, r10, r9
+ cmp r11, r0
+ ldr r0, [sp, #0xc]
+ mov r4, #0x10
+ cmpeq r10, r0
+ ldrhi r0, [sp, #0x48]
+ movhi r1, #0x1
+ strhi r1, [r0, #0x0]
+ mov r1, r9, asr #0x1f
+ mla r3, r10, r1, r3
+ mla r3, r11, r9, r3
+ ldr r1, [sp, #0x18]
+ mov r10, r2
+ subs r2, r1, r2
+ mov r0, r6, asr #0x1f
+ sbc r1, r1, r3
+ cmp r0, r1
+ cmpeq r6, r2
+ ldrhi r1, [sp, #0x48]
+ movhi r2, #0x1
+ strhi r2, [r1, #0x0]
+ mov r1, #0x0
+ mov r11, r3
+ adds r10, r10, r6
+ adc r11, r11, r0
+ mov r0, r7
+ mov r2, r1
+ add r5, r5, #0x1
+ blx r8
+ mov r6, r0
+_020E4E08:
+ ldr r0, [sp, #0x0]
+ cmp r5, r0
+ bgt _020E4E28
+ ldr r0, [sp, #0x18]
+ cmp r6, r0
+ beq _020E4E28
+ tst r4, #0x60
+ beq _020E4B0C
+_020E4E28:
+ tst r4, #0x34
+ bne _020E4E44
+ ldr r0, [sp, #0x40]
+ mov r10, #0x0
+ mov r11, r10
+ str r10, [r0, #0x0]
+ b _020E4E58
+_020E4E44:
+ ldr r0, [sp, #0x14]
+ sub r1, r5, #0x1
+ add r1, r1, r0
+ ldr r0, [sp, #0x40]
+ str r1, [r0, #0x0]
+_020E4E58:
+ mov r0, r7
+ mov r1, r6
+ mov r2, #0x1
+ blx r8
+ mov r0, r10
+ mov r1, r11
+ add sp, sp, #0x1c
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E4E78: .word __msl_digit
+_020E4E7C: .word __upper_mapC
+ arm_func_end __strtoull
+
+ arm_func_start strtoul
+strtoul: ; 0x020E4E80
+ stmdb sp!, {r3-r5,lr}
+ sub sp, sp, #0x20
+ mov r5, r0
+ mov lr, #0x0
+ mov r0, r2
+ mov r4, r1
+ add r2, sp, #0x1c
+ str r5, [sp, #0xc]
+ str lr, [sp, #0x10]
+ str r2, [sp, #0x0]
+ add r1, sp, #0x18
+ str r1, [sp, #0x4]
+ add r12, sp, #0x14
+ ldr r2, _020E4F10 ; =__StringRead
+ add r3, sp, #0xc
+ sub r1, lr, #0x80000001
+ str r12, [sp, #0x8]
+ bl __strtoul
+ cmp r4, #0x0
+ ldrne r1, [sp, #0x1c]
+ addne r1, r5, r1
+ strne r1, [r4, #0x0]
+ ldr r1, [sp, #0x14]
+ cmp r1, #0x0
+ beq _020E4EFC
+ ldr r0, _020E4F14 ; =errno
+ mov r1, #0x22
+ str r1, [r0, #0x0]
+ add sp, sp, #0x20
+ mvn r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E4EFC:
+ ldr r1, [sp, #0x18]
+ cmp r1, #0x0
+ rsbne r0, r0, #0x0
+ add sp, sp, #0x20
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E4F10: .word __StringRead
+_020E4F14: .word errno
+ arm_func_end strtoul
+
+ arm_func_start strtol
+strtol: ; 0x020E4F18
+ stmdb sp!, {r3-r5,lr}
+ sub sp, sp, #0x20
+ mov r5, r0
+ mov lr, #0x0
+ mov r0, r2
+ mov r4, r1
+ add r2, sp, #0x1c
+ str r5, [sp, #0xc]
+ str lr, [sp, #0x10]
+ str r2, [sp, #0x0]
+ add r1, sp, #0x18
+ str r1, [sp, #0x4]
+ add r12, sp, #0x14
+ ldr r2, _020E4FD8 ; =__StringRead
+ add r3, sp, #0xc
+ sub r1, lr, #0x80000001
+ str r12, [sp, #0x8]
+ bl __strtoul
+ cmp r4, #0x0
+ ldrne r1, [sp, #0x1c]
+ addne r1, r5, r1
+ strne r1, [r4, #0x0]
+ ldr r1, [sp, #0x14]
+ cmp r1, #0x0
+ bne _020E4FA4
+ ldr r2, [sp, #0x18]
+ cmp r2, #0x0
+ bne _020E4F94
+ mvn r1, #0x80000000
+ cmp r0, r1
+ bhi _020E4FA4
+_020E4F94:
+ cmp r2, #0x0
+ beq _020E4FC8
+ cmp r0, #0x80000000
+ bls _020E4FC8
+_020E4FA4:
+ ldr r0, [sp, #0x18]
+ ldr r1, _020E4FDC ; =errno
+ mov r2, #0x22
+ cmp r0, #0x0
+ movne r0, #0x80000000
+ str r2, [r1, #0x0]
+ add sp, sp, #0x20
+ mvneq r0, #0x80000000
+ ldmia sp!, {r3-r5,pc}
+_020E4FC8:
+ cmp r2, #0x0
+ rsbne r0, r0, #0x0
+ add sp, sp, #0x20
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020E4FD8: .word __StringRead
+_020E4FDC: .word errno
+ arm_func_end strtol
+
+ arm_func_start atol
+atol: ; 0x020E4FE0
+ ldr ip, _020E4FF0 ; =strtol
+ mov r1, #0x0
+ mov r2, #0xa
+ bx r12
+ .balign 4
+_020E4FF0: .word strtol
+ arm_func_end atol
+
+ .section .exceptix,4
+
+ .word __strtoul
+ .short 1001
+ .word 0x0060FF00
+ .word __strtoull
+ .short 1101
+ .word 0x0080FF00
+ .word strtoul
+ .short 153
+ .word 0x00600300
+ .word strtol
+ .short 201
+ .word 0x00600300
+ .word atol
+ .short 21
+ .word 0x00000000
diff --git a/arm9/asm/MSL_Common_wchar_io.s b/arm9/asm/MSL_Common_wchar_io.s
new file mode 100644
index 00000000..92f47ac4
--- /dev/null
+++ b/arm9/asm/MSL_Common_wchar_io.s
@@ -0,0 +1,43 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start fwide
+fwide:
+ cmp r0, #0x0
+ beq _020E500C
+ ldr r3, [r0, #0x4]
+ mov r2, r3, lsl #0x16
+ movs r2, r2, lsr #0x1d
+ bne _020E5014
+_020E500C:
+ mov r0, #0x0
+ bx lr
+_020E5014:
+ mov r2, r3, lsl #0x14
+ movs r2, r2, lsr #0x1e
+ beq _020E5034
+ cmp r2, #0x1
+ beq _020E505C
+ cmp r2, #0x2
+ moveq r1, #0x1
+ b _020E5060
+_020E5034:
+ cmp r1, #0x0
+ ble _020E504C
+ bic r2, r3, #0xc00
+ orr r2, r2, #0x800
+ str r2, [r0, #0x4]
+ b _020E5060
+_020E504C:
+ biclt r2, r3, #0xc00
+ orrlt r2, r2, #0x400
+ strlt r2, [r0, #0x4]
+ b _020E5060
+_020E505C:
+ mvn r1, #0x0
+_020E5060:
+ mov r0, r1
+ bx lr
+ arm_func_end fwide
diff --git a/arm9/asm/MSL_Common_wctype.s b/arm9/asm/MSL_Common_wctype.s
new file mode 100644
index 00000000..7b671940
--- /dev/null
+++ b/arm9/asm/MSL_Common_wctype.s
@@ -0,0 +1,61 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+ .global __wlower_mapC
+__wlower_mapC: ; 0x02104444
+ .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007
+ .short 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F
+ .short 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017
+ .short 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F
+ .short 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027
+ .short 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F
+ .short 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037
+ .short 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F
+ .short 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067
+ .short 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F
+ .short 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077
+ .short 0x0078, 0x0079, 0x007A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F
+ .short 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067
+ .short 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F
+ .short 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077
+ .short 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F
+
+ .global __wctype_mapC
+__wctype_mapC: ; 0x02104544
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0004, 0x0106, 0x0104, 0x0104, 0x0104, 0x0104, 0x0004, 0x0004
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+ .short 0x0142, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458
+ .short 0x0458, 0x0458, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
+ .short 0x0251, 0x0251, 0x0251, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
+ .short 0x00D0, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
+ .short 0x0071, 0x0071, 0x0071, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x0004
+
+ .global __wupper_mapC
+__wupper_mapC: ; 0x02104644
+ .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007
+ .short 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F
+ .short 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017
+ .short 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F
+ .short 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027
+ .short 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F
+ .short 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037
+ .short 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F
+ .short 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047
+ .short 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F
+ .short 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057
+ .short 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F
+ .short 0x0060, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047
+ .short 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F
+ .short 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057
+ .short 0x0058, 0x0059, 0x005A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F
diff --git a/arm9/asm/MSL_Common_wmem.s b/arm9/asm/MSL_Common_wmem.s
new file mode 100644
index 00000000..7c02c344
--- /dev/null
+++ b/arm9/asm/MSL_Common_wmem.s
@@ -0,0 +1,35 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start wmemcpy
+wmemcpy: ; 0x020E5068
+ ldr ip, _020E5074 ; =memcpy
+ mov r2, r2, lsl #0x1
+ bx r12
+ .balign 4
+_020E5074: .word memcpy
+ arm_func_end wmemcpy
+
+ arm_func_start wmemchr
+wmemchr:
+ cmp r2, #0x0
+ beq _020E5098
+_020E5080:
+ ldrh r3, [r0, #0x0]
+ cmp r3, r1
+ bxeq lr
+ add r0, r0, #0x2
+ subs r2, r2, #0x1
+ bne _020E5080
+_020E5098:
+ mov r0, #0x0
+ bx lr
+ arm_func_end wmemchr
+
+ .section .exceptix,4
+
+ .word wmemcpy
+ .short 17
+ .word 0x00000000
diff --git a/arm9/asm/MSL_Common_wprintf.s b/arm9/asm/MSL_Common_wprintf.s
new file mode 100644
index 00000000..95d115e6
--- /dev/null
+++ b/arm9/asm/MSL_Common_wprintf.s
@@ -0,0 +1,2367 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+wstr$6DE4: ; 0x02106DE4
+ ; L"0x0p0"
+ .short 0x0030, 0x0078, 0x0030, 0x0070, 0x0030, 0x0000
+
+wstr$6DF0: ; 0x02106DF0
+ ; L"-INF"
+ .short 0x002D, 0x0049, 0x004E, 0x0046, 0x0000, 0x0000
+
+wstr$6DFC: ; 0x02106DFC
+ ; L"-inf"
+ .short 0x002D, 0x0069, 0x006E, 0x0066, 0x0000, 0x0000
+
+wstr$6E08: ; 0x02106E08
+ ; L"INF"
+ .short 0x0049, 0x004E, 0x0046, 0x0000
+
+wstr$6E10: ; 0x02106E10
+ ; L"inf"
+ .short 0x0069, 0x006E, 0x0066, 0x0000
+
+wstr$6E18: ; 0x02106E18
+ ; L"-NAN"
+ .short 0x002D, 0x004E, 0x0041, 0x004E, 0x0000, 0x0000
+
+wstr$6E24: ; 0x02106E24
+ ; L"-nan"
+ .short 0x002D, 0x006E, 0x0061, 0x006E, 0x0000, 0x0000
+
+wstr$6E30: ; 0x02106E30
+ ; L"NAN"
+ .short 0x004E, 0x0041, 0x004E, 0x0000
+
+wstr$6E38: ; 0x02106E38
+ ; L"nan"
+ .short 0x006E, 0x0061, 0x006E, 0x0000
+
+buff_ptr$6E40: ; 0x02106E40
+ .short 0x0000, 0x0000
+
+strptr$6E44: ; 0x02106E44
+ .asciz ""
+
+ .text
+
+ arm_func_start parse_format__wide
+parse_format__wide: ; 0x020E50A0
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x10
+ ldrh r3, [r0, #0x2]
+ mov r4, #0x0
+ mov r5, #0x1
+ mov lr, r2
+ strb r5, [sp, #0x0]
+ strb r4, [sp, #0x1]
+ strb r4, [sp, #0x2]
+ strb r4, [sp, #0x3]
+ strb r4, [sp, #0x4]
+ str r4, [sp, #0x8]
+ str r4, [sp, #0xc]
+ cmp r3, #0x25
+ add r12, r0, #0x2
+ bne _020E50FC
+ add r0, sp, #0x0
+ strh r3, [sp, #0x6]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x2
+ ldmia sp!, {r4-r8,pc}
+_020E50FC:
+ mov r2, #0x2
+ mov r0, r4
+ mov r5, r2
+ mov r6, r4
+ mov r7, #0x1
+_020E5110:
+ mov r8, r7
+ cmp r3, #0x2b
+ bgt _020E5140
+ bge _020E5168
+ cmp r3, #0x23
+ bgt _020E5198
+ cmp r3, #0x20
+ blt _020E5198
+ beq _020E5170
+ cmp r3, #0x23
+ beq _020E5180
+ b _020E5198
+_020E5140:
+ cmp r3, #0x30
+ bgt _020E5198
+ cmp r3, #0x2d
+ blt _020E5198
+ beq _020E5160
+ cmp r3, #0x30
+ beq _020E5188
+ b _020E5198
+_020E5160:
+ strb r6, [sp, #0x0]
+ b _020E519C
+_020E5168:
+ strb r7, [sp, #0x1]
+ b _020E519C
+_020E5170:
+ ldrb r4, [sp, #0x1]
+ cmp r4, #0x1
+ strneb r5, [sp, #0x1]
+ b _020E519C
+_020E5180:
+ strb r7, [sp, #0x3]
+ b _020E519C
+_020E5188:
+ ldrb r4, [sp, #0x0]
+ cmp r4, #0x0
+ strneb r2, [sp, #0x0]
+ b _020E519C
+_020E5198:
+ mov r8, r0
+_020E519C:
+ cmp r8, #0x0
+ ldrneh r3, [r12, #0x2]!
+ bne _020E5110
+ cmp r3, #0x2a
+ bne _020E51E4
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ str r0, [sp, #0x8]
+ cmp r0, #0x0
+ bge _020E51DC
+ rsb r0, r0, #0x0
+ mov r2, #0x0
+ strb r2, [sp, #0x0]
+ str r0, [sp, #0x8]
+_020E51DC:
+ ldrh r3, [r12, #0x2]!
+ b _020E5228
+_020E51E4:
+ mov r2, #0x0
+ ldr r5, _020E560C ; =__wctype_mapC
+ mov r0, #0xa
+ b _020E5208
+_020E51F4:
+ ldr r4, [sp, #0x8]
+ sub r3, r3, #0x30
+ mla r6, r4, r0, r3
+ ldrh r3, [r12, #0x2]!
+ str r6, [sp, #0x8]
+_020E5208:
+ cmp r3, #0x80
+ movcs r4, r2
+ bhs _020E5220
+ mov r4, r3, lsl #0x1
+ ldrh r4, [r5, r4]
+ and r4, r4, #0x8
+_020E5220:
+ cmp r4, #0x0
+ bne _020E51F4
+_020E5228:
+ ldr r2, [sp, #0x8]
+ ldr r0, _020E5610 ; =0x000001FD
+ cmp r2, r0
+ ble _020E5258
+ ldr r1, _020E5614 ; =0x0000FFFF
+ add r0, sp, #0x0
+ strh r1, [sp, #0x6]
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add sp, sp, #0x10
+ add r0, r12, #0x2
+ ldmia sp!, {r4-r8,pc}
+_020E5258:
+ cmp r3, #0x2e
+ bne _020E52E0
+ ldrh r3, [r12, #0x2]!
+ mov r0, #0x1
+ strb r0, [sp, #0x2]
+ cmp r3, #0x2a
+ bne _020E529C
+ ldr r0, [r1, #0x0]
+ add r0, r0, #0x4
+ str r0, [r1, #0x0]
+ ldr r0, [r0, #-0x4]
+ ldrh r3, [r12, #0x2]!
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ movlt r0, #0x0
+ strltb r0, [sp, #0x2]
+ b _020E52E0
+_020E529C:
+ mov r1, #0x0
+ ldr r4, _020E560C ; =__wctype_mapC
+ mov r0, #0xa
+ b _020E52C0
+_020E52AC:
+ ldr r2, [sp, #0xc]
+ sub r3, r3, #0x30
+ mla r5, r2, r0, r3
+ ldrh r3, [r12, #0x2]!
+ str r5, [sp, #0xc]
+_020E52C0:
+ cmp r3, #0x80
+ movcs r2, r1
+ bhs _020E52D8
+ mov r2, r3, lsl #0x1
+ ldrh r2, [r4, r2]
+ and r2, r2, #0x8
+_020E52D8:
+ cmp r2, #0x0
+ bne _020E52AC
+_020E52E0:
+ cmp r3, #0x6c
+ mov r0, #0x1
+ bgt _020E5318
+ cmp r3, #0x68
+ blt _020E530C
+ beq _020E5334
+ cmp r3, #0x6a
+ beq _020E5380
+ cmp r3, #0x6c
+ beq _020E5350
+ b _020E53A4
+_020E530C:
+ cmp r3, #0x4c
+ beq _020E5374
+ b _020E53A4
+_020E5318:
+ cmp r3, #0x74
+ bgt _020E5328
+ beq _020E538C
+ b _020E53A4
+_020E5328:
+ cmp r3, #0x7a
+ beq _020E5398
+ b _020E53A4
+_020E5334:
+ ldrh r1, [r12, #0x2]
+ mov r2, #0x2
+ strb r2, [sp, #0x4]
+ cmp r1, #0x68
+ streqb r0, [sp, #0x4]
+ ldreqh r3, [r12, #0x2]!
+ b _020E53A8
+_020E5350:
+ ldrh r1, [r12, #0x2]
+ mov r2, #0x3
+ strb r2, [sp, #0x4]
+ cmp r1, #0x6c
+ bne _020E53A8
+ mov r1, #0x4
+ strb r1, [sp, #0x4]
+ ldrh r3, [r12, #0x2]!
+ b _020E53A8
+_020E5374:
+ mov r1, #0x9
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E5380:
+ mov r1, #0x6
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E538C:
+ mov r1, #0x8
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E5398:
+ mov r1, #0x7
+ strb r1, [sp, #0x4]
+ b _020E53A8
+_020E53A4:
+ mov r0, #0x0
+_020E53A8:
+ cmp r0, #0x0
+ ldrneh r3, [r12, #0x2]!
+ strh r3, [sp, #0x6]
+ cmp r3, #0x61
+ bgt _020E53FC
+ bge _020E54E0
+ cmp r3, #0x47
+ bgt _020E53F0
+ subs r0, r3, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E55EC
+ b _020E54E0
+ b _020E55EC
+ b _020E55EC
+ b _020E55EC
+ b _020E5528
+ b _020E54A8
+ b _020E5518
+_020E53F0:
+ cmp r3, #0x58
+ beq _020E5470
+ b _020E55EC
+_020E53FC:
+ cmp r3, #0x63
+ bgt _020E540C
+ beq _020E5588
+ b _020E55EC
+_020E540C:
+ sub r0, r3, #0x64
+ cmp r0, #0x14
+ addls pc, pc, r0, lsl #0x2
+ b _020E55EC
+ b _020E5470 ; case
+ b _020E5528 ; case
+ b _020E54A8 ; case
+ b _020E5518 ; case
+ b _020E55EC ; case
+ b _020E5470 ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E55D8 ; case
+ b _020E5470 ; case
+ b _020E5564 ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E55B4 ; case
+ b _020E55EC ; case
+ b _020E5470 ; case
+ b _020E55EC ; case
+ b _020E55EC ; case
+ b _020E5470 ; case
+_020E5470:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0x4
+ streqb r0, [sp, #0x4]
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+ beq _020E55F4
+ ldrb r0, [sp, #0x0]
+ cmp r0, #0x2
+ moveq r0, #0x1
+ streqb r0, [sp, #0x0]
+ b _020E55F4
+_020E54A8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020E55F4
+_020E54E0:
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0xd
+ streq r0, [sp, #0xc]
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ b _020E55F4
+_020E5518:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ streq r0, [sp, #0xc]
+_020E5528:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x2
+ cmpne r0, #0x6
+ cmpne r0, #0x7
+ cmpne r0, #0x8
+ cmpne r0, #0x4
+ cmpne r0, #0x1
+ ldreq r0, _020E5614 ; =0x0000FFFF
+ streqh r0, [sp, #0x6]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ moveq r0, #0x6
+ streq r0, [sp, #0xc]
+ b _020E55F4
+_020E5564:
+ mov r3, #0x3
+ mov r2, #0x1
+ mov r1, #0x78
+ mov r0, #0x8
+ strb r3, [sp, #0x4]
+ strb r2, [sp, #0x3]
+ strh r1, [sp, #0x6]
+ str r0, [sp, #0xc]
+ b _020E55F4
+_020E5588:
+ ldrb r1, [sp, #0x4]
+ cmp r1, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020E55F4
+ ldrb r0, [sp, #0x2]
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ ldrne r0, _020E5614 ; =0x0000FFFF
+ strneh r0, [sp, #0x6]
+ b _020E55F4
+_020E55B4:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x3
+ moveq r0, #0x5
+ streqb r0, [sp, #0x4]
+ beq _020E55F4
+ cmp r0, #0x0
+ ldrne r0, _020E5614 ; =0x0000FFFF
+ strneh r0, [sp, #0x6]
+ b _020E55F4
+_020E55D8:
+ ldrb r0, [sp, #0x4]
+ cmp r0, #0x9
+ moveq r0, #0x4
+ streqb r0, [sp, #0x4]
+ b _020E55F4
+_020E55EC:
+ ldr r0, _020E5614 ; =0x0000FFFF
+ strh r0, [sp, #0x6]
+_020E55F4:
+ add r0, sp, #0x0
+ ldmia r0, {r0-r3}
+ stmia lr, {r0-r3}
+ add r0, r12, #0x2
+ add sp, sp, #0x10
+ ldmia sp!, {r4-r8,pc}
+ .balign 4
+_020E560C: .word __wctype_mapC
+_020E5610: .word 0x000001FD
+_020E5614: .word 0x0000FFFF
+ arm_func_end parse_format__wide
+
+ arm_func_start long2str__wide
+long2str__wide: ; 0x020E5618
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x10
+ movs r10, r0
+ mov r0, #0x0
+ mov r5, r1
+ str r0, [sp, #0xc]
+ ldr r7, [sp, #0x4c]
+ mov r6, r0
+ strh r0, [r5, #-0x2]!
+ ldrb r0, [sp, #0x43]
+ str r1, [sp, #0x0]
+ ldrh r8, [sp, #0x46]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldrb r11, [sp, #0x41]
+ str r0, [sp, #0x8]
+ cmpeq r7, #0x0
+ bne _020E568C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E5678
+ cmp r8, #0x6f
+ beq _020E568C
+_020E5678:
+ add sp, sp, #0x10
+ mov r0, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E568C:
+ cmp r8, #0x69
+ bgt _020E56B4
+ bge _020E56E8
+ cmp r8, #0x58
+ bgt _020E56A8
+ beq _020E5714
+ b _020E571C
+_020E56A8:
+ cmp r8, #0x64
+ beq _020E56E8
+ b _020E571C
+_020E56B4:
+ cmp r8, #0x6f
+ bgt _020E56C8
+ moveq r4, #0x8
+ moveq r11, #0x0
+ b _020E571C
+_020E56C8:
+ cmp r8, #0x78
+ bgt _020E571C
+ cmp r8, #0x75
+ blt _020E571C
+ beq _020E5708
+ cmp r8, #0x78
+ beq _020E5714
+ b _020E571C
+_020E56E8:
+ cmp r10, #0x0
+ mov r4, #0xa
+ bge _020E571C
+ mov r0, #0x1
+ cmp r10, #0x80000000
+ rsbne r10, r10, #0x0
+ str r0, [sp, #0xc]
+ b _020E571C
+_020E5708:
+ mov r4, #0xa
+ mov r11, #0x0
+ b _020E571C
+_020E5714:
+ mov r4, #0x10
+ mov r11, #0x0
+_020E571C:
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ mov r9, r1
+ mov r0, r10
+ mov r1, r4
+ bl _u32_div_f
+ cmp r9, #0xa
+ mov r10, r0
+ addlt r9, r9, #0x30
+ blt _020E5754
+ cmp r8, #0x78
+ addeq r9, r9, #0x57
+ addne r9, r9, #0x37
+_020E5754:
+ cmp r10, #0x0
+ strh r9, [r5, #-0x2]!
+ add r6, r6, #0x1
+ bne _020E571C
+ cmp r4, #0x8
+ bne _020E5788
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrneh r0, [r5, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneh r0, [r5, #-0x2]!
+ addne r6, r6, #0x1
+_020E5788:
+ ldrb r0, [sp, #0x40]
+ cmp r0, #0x2
+ bne _020E57BC
+ ldr r0, [sp, #0xc]
+ ldr r7, [sp, #0x8]
+ cmp r0, #0x0
+ cmpeq r11, #0x0
+ subne r7, r7, #0x1
+ cmp r4, #0x10
+ bne _020E57BC
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ subne r7, r7, #0x2
+_020E57BC:
+ ldr r0, [sp, #0x0]
+ ldr r1, _020E5864 ; =0x000001FD
+ sub r0, r0, r5
+ add r0, r0, r0, lsr #0x1f
+ add r0, r7, r0, asr #0x1
+ cmp r0, r1
+ addgt sp, sp, #0x10
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ cmp r6, r7
+ bge _020E5804
+ mov r0, #0x30
+_020E57F4:
+ add r6, r6, #0x1
+ cmp r6, r7
+ strh r0, [r5, #-0x2]!
+ blt _020E57F4
+_020E5804:
+ cmp r4, #0x10
+ bne _020E5820
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneh r8, [r5, #-0x2]
+ strneh r0, [r5, #-0x4]!
+_020E5820:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneh r0, [r5, #-0x2]!
+ bne _020E5850
+ cmp r11, #0x1
+ moveq r0, #0x2b
+ streqh r0, [r5, #-0x2]!
+ beq _020E5850
+ cmp r11, #0x2
+ moveq r0, #0x20
+ streqh r0, [r5, #-0x2]!
+_020E5850:
+ mov r0, r5
+ add sp, sp, #0x10
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5864: .word 0x000001FD
+ ; arm_func_end long2str__wide
+
+ arm_func_start longlong2str__wide
+longlong2str__wide: ; 0x020E5868
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x18
+ mov r9, r1
+ mov r1, #0x0
+ mov r10, r0
+ mov r6, r2
+ mov r0, r1
+ strh r0, [r6, #-0x2]!
+ ldr r0, [sp, #0x58]
+ cmp r9, #0x0
+ str r0, [sp, #0x10]
+ ldrb r0, [sp, #0x4f]
+ cmpeq r10, #0x0
+ str r2, [sp, #0x0]
+ str r0, [sp, #0x4]
+ ldr r0, [sp, #0x54]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x8]
+ ldrb r0, [sp, #0x4d]
+ mov r7, r1
+ ldrh r8, [sp, #0x52]
+ str r0, [sp, #0xc]
+ ldreq r0, [sp, #0x10]
+ cmpeq r0, #0x0
+ bne _020E58F8
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E58E4
+ cmp r8, #0x6f
+ beq _020E58F8
+_020E58E4:
+ add sp, sp, #0x18
+ mov r0, r6
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E58F8:
+ cmp r8, #0x69
+ bgt _020E5920
+ bge _020E5950
+ cmp r8, #0x58
+ bgt _020E5914
+ beq _020E59A4
+ b _020E59B0
+_020E5914:
+ cmp r8, #0x64
+ beq _020E5950
+ b _020E59B0
+_020E5920:
+ cmp r8, #0x6f
+ bgt _020E5930
+ beq _020E5984
+ b _020E59B0
+_020E5930:
+ cmp r8, #0x78
+ bgt _020E59B0
+ cmp r8, #0x75
+ blt _020E59B0
+ beq _020E5994
+ cmp r8, #0x78
+ beq _020E59A4
+ b _020E59B0
+_020E5950:
+ subs r0, r10, #0x0
+ sbcs r0, r9, #0x0
+ mov r11, #0xa
+ mov r5, #0x0
+ bge _020E59B0
+ cmp r9, #0x80000000
+ cmpeq r10, r5
+ beq _020E5978
+ rsbs r10, r10, #0x0
+ rsc r9, r9, #0x0
+_020E5978:
+ mov r0, #0x1
+ str r0, [sp, #0x14]
+ b _020E59B0
+_020E5984:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x8
+ b _020E59B0
+_020E5994:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0xa
+ b _020E59B0
+_020E59A4:
+ mov r5, #0x0
+ str r5, [sp, #0xc]
+ mov r11, #0x10
+_020E59B0:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ull_mod
+ mov r4, r0
+ mov r0, r10
+ mov r1, r9
+ mov r2, r11
+ mov r3, r5
+ bl _ll_udiv
+ mov r10, r0
+ cmp r4, #0xa
+ mov r9, r1
+ addlt r0, r4, #0x30
+ blt _020E59FC
+ cmp r8, #0x78
+ addeq r0, r4, #0x57
+ addne r0, r4, #0x37
+_020E59FC:
+ strh r0, [r6, #-0x2]!
+ mov r0, #0x0
+ cmp r9, r0
+ cmpeq r10, r0
+ add r7, r7, #0x1
+ bne _020E59B0
+ cmp r5, #0x0
+ cmpeq r11, #0x8
+ bne _020E5A3C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrneh r0, [r6, #0x0]
+ cmpne r0, #0x30
+ movne r0, #0x30
+ strneh r0, [r6, #-0x2]!
+ addne r7, r7, #0x1
+_020E5A3C:
+ ldrb r0, [sp, #0x4c]
+ cmp r0, #0x2
+ bne _020E5A8C
+ ldr r0, [sp, #0x8]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ ldreq r0, [sp, #0xc]
+ cmpeq r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x1
+ strne r0, [sp, #0x10]
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E5A8C
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x10]
+ subne r0, r0, #0x2
+ strne r0, [sp, #0x10]
+_020E5A8C:
+ ldr r0, [sp, #0x0]
+ ldr r2, _020E5B48 ; =0x000001FD
+ sub r0, r0, r6
+ add r1, r0, r0, lsr #0x1f
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1, asr #0x1
+ cmp r0, r2
+ addgt sp, sp, #0x18
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldr r0, [sp, #0x10]
+ cmp r7, r0
+ bge _020E5AE0
+ mov r1, #0x30
+_020E5ACC:
+ ldr r0, [sp, #0x10]
+ add r7, r7, #0x1
+ cmp r7, r0
+ strh r1, [r6, #-0x2]!
+ blt _020E5ACC
+_020E5AE0:
+ cmp r5, #0x0
+ cmpeq r11, #0x10
+ bne _020E5B00
+ ldr r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x30
+ strneh r8, [r6, #-0x2]
+ strneh r0, [r6, #-0x4]!
+_020E5B00:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneh r0, [r6, #-0x2]!
+ bne _020E5B34
+ ldr r0, [sp, #0xc]
+ cmp r0, #0x1
+ moveq r0, #0x2b
+ streqh r0, [r6, #-0x2]!
+ beq _020E5B34
+ cmp r0, #0x2
+ moveq r0, #0x20
+ streqh r0, [r6, #-0x2]!
+_020E5B34:
+ mov r0, r6
+ add sp, sp, #0x18
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5B48: .word 0x000001FD
+ ; arm_func_end longlong2str__wide
+
+ arm_func_start double2hex__wide
+double2hex__wide: ; 0x020E5B4C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x44
+ ldr r7, [sp, #0x80]
+ ldr r0, _020E5EB8 ; =0x000001FD
+ mov r8, r2
+ cmp r7, r0
+ ldrh r6, [sp, #0x7a]
+ ldrb r5, [sp, #0x77]
+ ldrb r4, [sp, #0x75]
+ ldr r1, [sp, #0x68]
+ ldr r2, [sp, #0x6c]
+ addgt sp, sp, #0x44
+ movgt r0, #0x0
+ ldmgtia sp!, {r3-r10,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r10, #0x0
+ mov r9, #0x20
+ add r0, sp, #0x8
+ add r3, sp, #0xc
+ strb r10, [sp, #0x8]
+ strh r9, [sp, #0xa]
+ bl __num2dec_internal2
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ bl fabs
+ mov r2, r0
+ mov r0, r10
+ mov r3, r1
+ mov r1, r0
+ bl _deq
+ bne _020E5BF4
+ sub r4, r8, #0xc
+ ldr r1, _020E5EBC ; =wstr$6DE4
+ mov r0, r4
+ bl wcscpy
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5BF4:
+ ldrb r0, [sp, #0x11]
+ cmp r0, #0x49
+ bne _020E5C74
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E5C38
+ cmp r6, #0x41
+ sub r4, r8, #0xa
+ bne _020E5C28
+ ldr r1, _020E5EC0 ; =wstr$6DF0
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C28:
+ ldr r1, _020E5EC4 ; =wstr$6DFC
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C38:
+ cmp r6, #0x41
+ sub r4, r8, #0x8
+ bne _020E5C54
+ ldr r1, _020E5EC8 ; =wstr$6E08
+ mov r0, r4
+ bl wcscpy
+ b _020E5C60
+_020E5C54:
+ ldr r1, _020E5ECC ; =wstr$6E10
+ mov r0, r4
+ bl wcscpy
+_020E5C60:
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5C74:
+ cmp r0, #0x4e
+ bne _020E5CF0
+ ldrsb r0, [sp, #0xc]
+ cmp r0, #0x0
+ beq _020E5CB4
+ cmp r6, #0x41
+ sub r4, r8, #0xa
+ bne _020E5CA4
+ ldr r1, _020E5ED0 ; =wstr$6E18
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CA4:
+ ldr r1, _020E5ED4 ; =wstr$6E24
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CB4:
+ cmp r6, #0x41
+ sub r4, r8, #0x8
+ bne _020E5CD0
+ ldr r1, _020E5ED8 ; =wstr$6E30
+ mov r0, r4
+ bl wcscpy
+ b _020E5CDC
+_020E5CD0:
+ ldr r1, _020E5EDC ; =wstr$6E38
+ mov r0, r4
+ bl wcscpy
+_020E5CDC:
+ add sp, sp, #0x44
+ mov r0, r4
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E5CF0:
+ mov r3, r10
+ mov r1, #0x1
+ mov r0, #0x64
+ add r9, sp, #0x68
+ strb r1, [sp, #0x34]
+ strb r1, [sp, #0x35]
+ strb r3, [sp, #0x36]
+ strb r3, [sp, #0x37]
+ strb r3, [sp, #0x38]
+ str r3, [sp, #0x3c]
+ str r1, [sp, #0x40]
+ strh r0, [sp, #0x3a]
+_020E5D20:
+ rsb r1, r3, #0x7
+ ldrsb r2, [r9, r3]
+ ldrsb r0, [r9, r1]
+ strb r0, [r9, r3]
+ add r3, r3, #0x1
+ strb r2, [r9, r1]
+ cmp r3, #0x4
+ blt _020E5D20
+ ldrb r0, [sp, #0x69]
+ ldrb r1, [sp, #0x68]
+ ldr sb, _020E5EE0 ; =0x000007FF
+ mov r0, r0, lsl #0x11
+ orr r1, r0, r1, lsl #0x19
+ add r0, sp, #0x34
+ and lr, r9, r1, lsr #0x15
+ sub r12, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r12, {r0-r3}
+ rsb r0, r9, #0x400
+ mov r1, r8
+ add r0, lr, r0
+ ldmia r12, {r2-r3}
+ bl long2str__wide
+ cmp r6, #0x61
+ moveq r1, #0x70
+ movne r1, #0x50
+ strh r1, [r0, #-0x2]!
+ mov r1, r7, lsl #0x2
+ mov lr, r7
+ cmp r7, #0x1
+ add r8, r1, #0xb
+ add r12, sp, #0x68
+ blt _020E5E30
+ mov r9, #0x30
+_020E5DA8:
+ cmp r8, #0x40
+ bge _020E5E18
+ ldrb r1, [r12, r8, asr #0x3]
+ and r2, r8, #0x7
+ rsb r3, r2, #0x7
+ mov r2, r1, asr r3
+ sub r10, r8, #0x4
+ bic r1, r8, #0x7
+ bic r10, r10, #0x7
+ cmp r1, r10
+ add r10, r12, r8, asr #0x3
+ and r1, r2, #0xff
+ beq _020E5DEC
+ ldrb r2, [r10, #-0x1]
+ mov r2, r2, lsl #0x8
+ orr r1, r1, r2, asr r3
+ and r1, r1, #0xff
+_020E5DEC:
+ and r1, r1, #0xf
+ cmp r1, #0xa
+ addcc r1, r1, #0x30
+ andcc r1, r1, #0xff
+ blo _020E5E1C
+ cmp r6, #0x61
+ addeq r1, r1, #0x57
+ andeq r1, r1, #0xff
+ addne r1, r1, #0x37
+ andne r1, r1, #0xff
+ b _020E5E1C
+_020E5E18:
+ mov r1, r9
+_020E5E1C:
+ sub lr, lr, #0x1
+ cmp lr, #0x1
+ strh r1, [r0, #-0x2]!
+ sub r8, r8, #0x4
+ bge _020E5DA8
+_020E5E30:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneh r1, [r0, #-0x2]!
+ mov r1, #0x31
+ strh r1, [r0, #-0x2]
+ cmp r6, #0x61
+ moveq r1, #0x78
+ movne r1, #0x58
+ strh r1, [r0, #-0x4]!
+ mov r1, #0x30
+ strh r1, [r0, #-0x2]!
+ ldrsb r1, [sp, #0xc]
+ cmp r1, #0x0
+ movne r1, #0x2d
+ strneh r1, [r0, #-0x2]!
+ addne sp, sp, #0x44
+ ldmneia sp!, {r3-r10,lr}
+ addne sp, sp, #0x10
+ bxne lr
+ cmp r4, #0x1
+ moveq r1, #0x2b
+ streqh r1, [r0, #-0x2]!
+ addeq sp, sp, #0x44
+ ldmeqia sp!, {r3-r10,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ cmp r4, #0x2
+ moveq r1, #0x20
+ streqh r1, [r0, #-0x2]!
+ add sp, sp, #0x44
+ ldmia sp!, {r3-r10,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E5EB8: .word 0x000001FD
+_020E5EBC: .word wstr$6DE4
+_020E5EC0: .word wstr$6DF0
+_020E5EC4: .word wstr$6DFC
+_020E5EC8: .word wstr$6E08
+_020E5ECC: .word wstr$6E10
+_020E5ED0: .word wstr$6E18
+_020E5ED4: .word wstr$6E24
+_020E5ED8: .word wstr$6E30
+_020E5EDC: .word wstr$6E38
+_020E5EE0: .word 0x000007FF
+ ; arm_func_end double2hex__wide
+
+ arm_func_start round_decimal__wide
+round_decimal__wide: ; 0x020E5EE4
+ stmdb sp!, {r4,lr}
+ cmp r1, #0x0
+ bge _020E5F0C
+_020E5EF0:
+ mov r1, #0x0
+ strh r1, [r0, #0x2]
+ mov r1, #0x1
+ strb r1, [r0, #0x4]
+ mov r1, #0x30
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E5F0C:
+ ldrb lr, [r0, #0x4]
+ cmp r1, lr
+ ldmgeia sp!, {r4,pc}
+ add r12, r0, #0x5
+ add r2, r12, r1
+ add r2, r2, #0x1
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x5
+ bne _020E5F6C
+ add r12, r12, lr
+_020E5F40:
+ sub r12, r12, #0x1
+ cmp r12, r2
+ bls _020E5F58
+ ldrsb r3, [r12, #0x0]
+ cmp r3, #0x30
+ beq _020E5F40
+_020E5F58:
+ cmp r12, r2
+ ldreqsb r3, [r2, #-0x1]
+ andeq r4, r3, #0x1
+ movne r4, #0x1
+ b _020E5F74
+_020E5F6C:
+ movgt r4, #0x1
+ movle r4, #0x0
+_020E5F74:
+ cmp r1, #0x0
+ beq _020E5FD0
+ mov r12, #0x0
+ mov lr, #0x1
+_020E5F84:
+ ldrsb r3, [r2, #-0x1]!
+ sub r3, r3, #0x30
+ add r3, r3, r4
+ mov r3, r3, lsl #0x18
+ mov r3, r3, asr #0x18
+ cmp r3, #0x9
+ movgt r4, lr
+ movle r4, r12
+ cmp r4, #0x0
+ bne _020E5FB4
+ cmp r3, #0x0
+ bne _020E5FBC
+_020E5FB4:
+ sub r1, r1, #0x1
+ b _020E5FC8
+_020E5FBC:
+ add r3, r3, #0x30
+ strb r3, [r2, #0x0]
+ b _020E5FD0
+_020E5FC8:
+ cmp r1, #0x0
+ bne _020E5F84
+_020E5FD0:
+ cmp r4, #0x0
+ beq _020E5FF8
+ ldrsh r3, [r0, #0x2]
+ mov r2, #0x1
+ mov r1, #0x31
+ add r3, r3, #0x1
+ strh r3, [r0, #0x2]
+ strb r2, [r0, #0x4]
+ strb r1, [r0, #0x5]
+ ldmia sp!, {r4,pc}
+_020E5FF8:
+ cmp r1, #0x0
+ beq _020E5EF0
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r4,pc}
+ arm_func_end round_decimal__wide
+
+ arm_func_start float2str__wide
+float2str__wide: ; 0x020E6008
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x22c
+ mov r10, r0
+ add r0, sp, #0x250
+ ldr r7, [sp, #0x268]
+ ldr r3, _020E6628 ; =0x000001FD
+ ldrh r6, [r0, #0x12]
+ cmp r7, r3
+ ldrb r5, [sp, #0x25f]
+ ldrb r4, [sp, #0x25d]
+ mov r8, r1
+ mov r9, r2
+ addgt sp, sp, #0x22c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ mov r12, #0x0
+ mov r11, #0x20
+ add r0, sp, #0x0
+ add r3, sp, #0x4
+ mov r1, r10
+ mov r2, r8
+ strb r12, [sp, #0x0]
+ strh r11, [sp, #0x2]
+ bl __num2dec_internal2
+ ldrb r0, [sp, #0x8]
+ add r1, sp, #0x9
+ add r0, r1, r0
+ b _020E609C
+_020E6084:
+ ldrb r2, [sp, #0x8]
+ ldrsh r1, [sp, #0x6]
+ sub r2, r2, #0x1
+ add r1, r1, #0x1
+ strb r2, [sp, #0x8]
+ strh r1, [sp, #0x6]
+_020E609C:
+ ldrb r1, [sp, #0x8]
+ cmp r1, #0x1
+ bls _020E60B4
+ ldrsb r1, [r0, #-0x1]!
+ cmp r1, #0x30
+ beq _020E6084
+_020E60B4:
+ ldrb r0, [sp, #0x9]
+ cmp r0, #0x30
+ beq _020E60D4
+ cmp r0, #0x49
+ beq _020E60E0
+ cmp r0, #0x4e
+ beq _020E6198
+ b _020E6244
+_020E60D4:
+ mov r0, #0x0
+ strh r0, [sp, #0x6]
+ b _020E6244
+_020E60E0:
+ mov r2, #0x0
+ mov r0, r10
+ mov r1, r8
+ mov r3, r2
+ bl _dls
+ bhs _020E6140
+ cmp r6, #0x80
+ sub r4, r9, #0xa
+ movcs r0, #0x0
+ bhs _020E6118
+ ldr r0, _020E662C ; =__wctype_mapC
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E6118:
+ cmp r0, #0x0
+ beq _020E6130
+ ldr r1, _020E6630 ; =wstr$6DF0
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6130:
+ ldr r1, _020E6634 ; =wstr$6DFC
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6140:
+ cmp r6, #0x80
+ sub r4, r9, #0x8
+ movcs r0, #0x0
+ bhs _020E6160
+ ldr r0, _020E662C ; =__wctype_mapC
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E6160:
+ cmp r0, #0x0
+ beq _020E6178
+ ldr r1, _020E6638 ; =wstr$6E08
+ mov r0, r4
+ bl wcscpy
+ b _020E6184
+_020E6178:
+ ldr r1, _020E663C ; =wstr$6E10
+ mov r0, r4
+ bl wcscpy
+_020E6184:
+ add sp, sp, #0x22c
+ mov r0, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6198:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ beq _020E61EC
+ cmp r6, #0x80
+ sub r4, r9, #0xa
+ movcs r0, #0x0
+ bhs _020E61C4
+ ldr r0, _020E662C ; =__wctype_mapC
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E61C4:
+ cmp r0, #0x0
+ beq _020E61DC
+ ldr r1, _020E6640 ; =wstr$6E18
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E61DC:
+ ldr r1, _020E6644 ; =wstr$6E24
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E61EC:
+ cmp r6, #0x80
+ sub r4, r9, #0x8
+ movcs r0, #0x0
+ bhs _020E620C
+ ldr r0, _020E662C ; =__wctype_mapC
+ mov r1, r6, lsl #0x1
+ ldrh r0, [r0, r1]
+ and r0, r0, #0x200
+_020E620C:
+ cmp r0, #0x0
+ beq _020E6224
+ ldr r1, _020E6648 ; =wstr$6E30
+ mov r0, r4
+ bl wcscpy
+ b _020E6230
+_020E6224:
+ ldr r1, _020E664C ; =wstr$6E38
+ mov r0, r4
+ bl wcscpy
+_020E6230:
+ add sp, sp, #0x22c
+ mov r0, r4
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6244:
+ ldrb r1, [sp, #0x8]
+ ldrsh r2, [sp, #0x6]
+ add r0, sp, #0x200
+ sub r1, r1, #0x1
+ add r0, r0, #0x2a
+ add r1, r2, r1
+ sub r8, r0, #0x1
+ strh r1, [sp, #0x6]
+ mov r0, #0x0
+ strb r0, [r8, #0x0]
+ cmp r6, #0x65
+ bgt _020E62A0
+ bge _020E632C
+ cmp r6, #0x47
+ bgt _020E65EC
+ cmp r6, #0x45
+ blt _020E65EC
+ beq _020E632C
+ cmp r6, #0x46
+ beq _020E6478
+ cmp r6, #0x47
+ beq _020E62B8
+ b _020E65EC
+_020E62A0:
+ cmp r6, #0x66
+ bgt _020E62B0
+ beq _020E6478
+ b _020E65EC
+_020E62B0:
+ cmp r6, #0x67
+ bne _020E65EC
+_020E62B8:
+ ldrb r0, [sp, #0x8]
+ cmp r0, r7
+ ble _020E62D0
+ add r0, sp, #0x4
+ mov r1, r7
+ bl round_decimal__wide
+_020E62D0:
+ ldrsh r2, [sp, #0x6]
+ mvn r0, #0x3
+ cmp r2, r0
+ blt _020E62E8
+ cmp r2, r7
+ blt _020E6308
+_020E62E8:
+ cmp r5, #0x0
+ ldreqb r0, [sp, #0x8]
+ subne r7, r7, #0x1
+ subeq r7, r0, #0x1
+ cmp r6, #0x67
+ moveq r6, #0x65
+ movne r6, #0x45
+ b _020E632C
+_020E6308:
+ cmp r5, #0x0
+ addne r0, r2, #0x1
+ subne r7, r7, r0
+ bne _020E6478
+ ldrb r1, [sp, #0x8]
+ add r0, r2, #0x1
+ subs r7, r1, r0
+ movmi r7, #0x0
+ b _020E6478
+_020E632C:
+ ldrb r0, [sp, #0x8]
+ add r1, r7, #0x1
+ cmp r0, r1
+ ble _020E6344
+ add r0, sp, #0x4
+ bl round_decimal__wide
+_020E6344:
+ ldrsh lr, [sp, #0x6]
+ mov r11, #0x2b
+ mov r10, #0x0
+ cmp lr, #0x0
+ rsblt lr, lr, #0x0
+ movlt r11, #0x2d
+ ldr r3, _020E6650 ; =0x66666667
+ mov r0, #0xa
+ b _020E6398
+_020E6368:
+ mov r1, lr, lsr #0x1f
+ smull r2, r12, r3, lr
+ add r12, r1, r12, asr #0x2
+ smull r1, r2, r0, r12
+ sub r12, lr, r1
+ add r1, r12, #0x30
+ strb r1, [r8, #-0x1]!
+ mov r2, lr
+ smull r1, lr, r3, r2
+ mov r1, r2, lsr #0x1f
+ add lr, r1, lr, asr #0x2
+ add r10, r10, #0x1
+_020E6398:
+ cmp lr, #0x0
+ bne _020E6368
+ cmp r10, #0x2
+ blt _020E6368
+ add r0, sp, #0x2a
+ strb r11, [r8, #-0x1]
+ strb r6, [r8, #-0x2]!
+ sub r1, r0, r8
+ ldr r0, _020E6628 ; =0x000001FD
+ add r1, r1, r7
+ cmp r1, r0
+ addgt sp, sp, #0x22c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ ldrb r1, [sp, #0x8]
+ add r0, r7, #0x1
+ cmp r1, r0
+ bge _020E6408
+ add r0, r7, #0x2
+ sub r0, r0, r1
+ subs r1, r0, #0x1
+ beq _020E6408
+ mov r0, #0x30
+_020E63FC:
+ strb r0, [r8, #-0x1]!
+ subs r1, r1, #0x1
+ bne _020E63FC
+_020E6408:
+ ldrb r1, [sp, #0x8]
+ add r0, sp, #0x9
+ add r2, r0, r1
+ subs r1, r1, #0x1
+ beq _020E642C
+_020E641C:
+ ldrsb r0, [r2, #-0x1]!
+ subs r1, r1, #0x1
+ strb r0, [r8, #-0x1]!
+ bne _020E641C
+_020E642C:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r0, #0x2e
+ strneb r0, [r8, #-0x1]!
+ ldrb r0, [sp, #0x9]
+ strb r0, [r8, #-0x1]!
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E65EC
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E65EC
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+ b _020E65EC
+_020E6478:
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+ cmp r1, r7
+ ble _020E64B8
+ sub r1, r1, r7
+ add r0, sp, #0x4
+ sub r1, r2, r1
+ bl round_decimal__wide
+ ldrsh r3, [sp, #0x6]
+ ldrb r2, [sp, #0x8]
+ sub r0, r2, r3
+ subs r1, r0, #0x1
+ movmi r1, #0x0
+_020E64B8:
+ adds r0, r3, #0x1
+ movmi r0, #0x0
+ ldr r3, _020E6628 ; =0x000001FD
+ add r6, r0, r1
+ cmp r6, r3
+ addgt sp, sp, #0x22c
+ movgt r0, #0x0
+ ldmgtia sp!, {r4-r11,lr}
+ addgt sp, sp, #0x10
+ bxgt lr
+ add r3, sp, #0x9
+ sub r6, r7, r1
+ cmp r6, #0x0
+ add r2, r3, r2
+ mov r10, #0x0
+ ble _020E650C
+ mov r3, #0x30
+_020E64FC:
+ add r10, r10, #0x1
+ cmp r10, r6
+ strb r3, [r8, #-0x1]!
+ blt _020E64FC
+_020E650C:
+ mov r6, #0x0
+ b _020E6520
+_020E6514:
+ ldrsb r3, [r2, #-0x1]!
+ add r6, r6, #0x1
+ strb r3, [r8, #-0x1]!
+_020E6520:
+ cmp r6, r1
+ ldrltb r3, [sp, #0x8]
+ cmplt r6, r3
+ blt _020E6514
+ cmp r6, r1
+ bge _020E654C
+ mov r3, #0x30
+_020E653C:
+ add r6, r6, #0x1
+ cmp r6, r1
+ strb r3, [r8, #-0x1]!
+ blt _020E653C
+_020E654C:
+ cmp r7, #0x0
+ cmpeq r5, #0x0
+ movne r1, #0x2e
+ strneb r1, [r8, #-0x1]!
+ cmp r0, #0x0
+ beq _020E65B4
+ ldrb r1, [sp, #0x8]
+ mov r5, #0x0
+ sub r1, r0, r1
+ cmp r1, #0x0
+ ble _020E6594
+ mov r3, #0x30
+_020E657C:
+ strb r3, [r8, #-0x1]!
+ ldrb r1, [sp, #0x8]
+ add r5, r5, #0x1
+ sub r1, r0, r1
+ cmp r5, r1
+ blt _020E657C
+_020E6594:
+ cmp r5, r0
+ bge _020E65BC
+_020E659C:
+ ldrsb r1, [r2, #-0x1]!
+ add r5, r5, #0x1
+ cmp r5, r0
+ strb r1, [r8, #-0x1]!
+ blt _020E659C
+ b _020E65BC
+_020E65B4:
+ mov r0, #0x30
+ strb r0, [r8, #-0x1]!
+_020E65BC:
+ ldrsb r0, [sp, #0x4]
+ cmp r0, #0x0
+ movne r0, #0x2d
+ strneb r0, [r8, #-0x1]!
+ bne _020E65EC
+ cmp r4, #0x1
+ moveq r0, #0x2b
+ streqb r0, [r8, #-0x1]!
+ beq _020E65EC
+ cmp r4, #0x2
+ moveq r0, #0x20
+ streqb r0, [r8, #-0x1]!
+_020E65EC:
+ mov r0, r8
+ bl strlen
+ sub r1, r9, r0, lsl #0x1
+ mov r0, r8
+ sub r4, r1, #0x2
+ bl strlen
+ mov r2, r0
+ mov r0, r4
+ mov r1, r8
+ bl mbstowcs
+ mov r0, r4
+ add sp, sp, #0x22c
+ ldmia sp!, {r4-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E6628: .word 0x000001FD
+_020E662C: .word __wctype_mapC
+_020E6630: .word wstr$6DF0
+_020E6634: .word wstr$6DFC
+_020E6638: .word wstr$6E08
+_020E663C: .word wstr$6E10
+_020E6640: .word wstr$6E18
+_020E6644: .word wstr$6E24
+_020E6648: .word wstr$6E30
+_020E664C: .word wstr$6E38
+_020E6650: .word 0x66666667
+ ; arm_func_end float2str__wide
+
+ arm_func_start __wpformatter
+__wpformatter:
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x430
+ mov r3, #0x20
+ mov r11, r2
+ strh r3, [sp, #0x1c]
+ ldrh r2, [r11, #0x0]
+ mov r9, r0
+ mov r8, r1
+ cmp r2, #0x0
+ mov r4, #0x0
+ beq _020E6F24
+_020E6684:
+ mov r0, r11
+ mov r1, #0x25
+ bl wcschr
+ str r0, [sp, #0xc]
+ cmp r0, #0x0
+ bne _020E66D8
+ mov r0, r11
+ bl wcslen
+ movs r2, r0
+ add r4, r4, r2
+ beq _020E6F24
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ bne _020E6F24
+ add sp, sp, #0x430
+ mvn r0, #0x0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E66D8:
+ sub r0, r0, r11
+ add r0, r0, r0, lsr #0x1f
+ movs r2, r0, asr #0x1
+ add r4, r4, r2
+ beq _020E6710
+ mov r0, r8
+ mov r1, r11
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6710:
+ add r1, sp, #0x400
+ ldr r0, [sp, #0xc]
+ add r1, r1, #0x64
+ add r2, sp, #0x20
+ bl parse_format__wide
+ ldrh r1, [sp, #0x26]
+ mov r11, r0
+ cmp r1, #0x61
+ bgt _020E6780
+ bge _020E6AEC
+ cmp r1, #0x47
+ bgt _020E6774
+ subs r0, r1, #0x41
+ addpl pc, pc, r0, lsl #0x2
+ b _020E6768
+ b _020E6AEC
+ b _020E6D90
+ b _020E6D90
+ b _020E6D90
+ b _020E6A7C
+ b _020E6A7C
+ b _020E6A7C
+_020E6768:
+ cmp r1, #0x25
+ beq _020E6D7C
+ b _020E6D90
+_020E6774:
+ cmp r1, #0x58
+ beq _020E6940
+ b _020E6D90
+_020E6780:
+ cmp r1, #0x75
+ bgt _020E67E8
+ subs r0, r1, #0x64
+ addpl pc, pc, r0, lsl #0x2
+ b _020E67DC
+ b _020E6804
+ b _020E6A7C
+ b _020E6A7C
+ b _020E6A7C
+ b _020E6D90
+ b _020E6804
+ b _020E6D90
+ b _020E6D90
+ b _020E6D90
+ b _020E6D90
+ b _020E6C98
+ b _020E6940
+ b _020E6D90
+ b _020E6D90
+ b _020E6D90
+ b _020E6B5C
+ b _020E6D90
+ b _020E6940
+_020E67DC:
+ cmp r1, #0x63
+ beq _020E6D24
+ b _020E6D90
+_020E67E8:
+ cmp r1, #0x78
+ bgt _020E67F8
+ beq _020E6940
+ b _020E6D90
+_020E67F8:
+ ldr r0, _020E6F38 ; =0x0000FFFF
+ cmp r1, r0
+ b _020E6D90
+_020E6804:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x3
+ bne _020E6824
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E6824:
+ cmp r0, #0x4
+ bne _020E684C
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E68BC
+_020E684C:
+ cmp r0, #0x6
+ bne _020E6874
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E68BC
+_020E6874:
+ cmp r0, #0x7
+ bne _020E6890
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E6890:
+ cmp r0, #0x8
+ bne _020E68AC
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E68BC
+_020E68AC:
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+_020E68BC:
+ cmp r0, #0x2
+ moveq r1, r10, lsl #0x10
+ moveq r10, r1, asr #0x10
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x20
+ bne _020E6904
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x430
+ bl longlong2str__wide
+ movs r6, r0
+ beq _020E6D90
+ b _020E6928
+_020E6904:
+ sub r5, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ add r1, sp, #0x430
+ mov r0, r10
+ ldmia r5, {r2-r3}
+ bl long2str__wide
+ movs r6, r0
+ beq _020E6D90
+_020E6928:
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6940:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x3
+ bne _020E6960
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E6960:
+ cmp r0, #0x4
+ bne _020E6988
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E69F8
+_020E6988:
+ cmp r0, #0x6
+ bne _020E69B0
+ ldr r1, [sp, #0x464]
+ add r2, r1, #0x8
+ str r2, [sp, #0x464]
+ ldr r1, [r2, #-0x8]
+ str r1, [sp, #0x10]
+ ldr r1, [r2, #-0x4]
+ str r1, [sp, #0x14]
+ b _020E69F8
+_020E69B0:
+ cmp r0, #0x7
+ bne _020E69CC
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E69CC:
+ cmp r0, #0x8
+ bne _020E69E8
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+ b _020E69F8
+_020E69E8:
+ ldr r1, [sp, #0x464]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r10, [r1, #-0x4]
+_020E69F8:
+ cmp r0, #0x2
+ moveq r1, r10, lsl #0x10
+ moveq r10, r1, lsr #0x10
+ cmp r0, #0x4
+ cmpne r0, #0x6
+ add r0, sp, #0x20
+ bne _020E6A40
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x430
+ bl longlong2str__wide
+ movs r6, r0
+ beq _020E6D90
+ b _020E6A64
+_020E6A40:
+ sub r5, sp, #0x8
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ add r1, sp, #0x430
+ mov r0, r10
+ ldmia r5, {r2-r3}
+ bl long2str__wide
+ movs r6, r0
+ beq _020E6D90
+_020E6A64:
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6A7C:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x464]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x464]
+ bne _020E6AA0
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x8
+ str r0, [sp, #0x464]
+_020E6AA0:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x20
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x430
+ bl float2str__wide
+ movs r6, r0
+ beq _020E6D90
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6AEC:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x9
+ ldrne r0, [sp, #0x464]
+ addne r0, r0, #0x8
+ strne r0, [sp, #0x464]
+ bne _020E6B10
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x8
+ str r0, [sp, #0x464]
+_020E6B10:
+ ldr r7, [r0, #-0x8]
+ ldr r6, [r0, #-0x4]
+ add r0, sp, #0x20
+ sub r5, sp, #0x4
+ ldmia r0, {r0-r3}
+ stmia r5, {r0-r3}
+ ldr r3, [r5, #0x0]
+ mov r0, r7
+ mov r1, r6
+ add r2, sp, #0x430
+ bl double2hex__wide
+ movs r6, r0
+ beq _020E6D90
+ add r0, sp, #0x400
+ add r0, r0, #0x2e
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6B5C:
+ ldrb r0, [sp, #0x24]
+ cmp r0, #0x5
+ bne _020E6BF8
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r6, [r0, #-0x4]
+ ldrb r0, [sp, #0x23]
+ cmp r6, #0x0
+ ldreq r6, _020E6F3C ; =buff_ptr$6E40
+ cmp r0, #0x0
+ beq _020E6BB0
+ ldrh r1, [r6], #0x2
+ ldrb r0, [sp, #0x22]
+ and r7, r1, #0xff
+ cmp r0, #0x0
+ beq _020E6DDC
+ ldr r0, [sp, #0x2c]
+ cmp r7, r0
+ movgt r7, r0
+ b _020E6DDC
+_020E6BB0:
+ ldrb r0, [sp, #0x22]
+ cmp r0, #0x0
+ beq _020E6BE8
+ ldr r7, [sp, #0x2c]
+ mov r0, r6
+ mov r2, r7
+ mov r1, #0x0
+ bl wmemchr
+ cmp r0, #0x0
+ beq _020E6DDC
+ sub r0, r0, r6
+ add r0, r0, r0, lsr #0x1f
+ mov r7, r0, asr #0x1
+ b _020E6DDC
+_020E6BE8:
+ mov r0, r6
+ bl wcslen
+ mov r7, r0
+ b _020E6DDC
+_020E6BF8:
+ ldr r0, [sp, #0x464]
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r5, [r0, #-0x4]
+ ldrb r0, [sp, #0x23]
+ cmp r5, #0x0
+ ldreq r5, _020E6F40 ; =strptr$6E44
+ cmp r0, #0x0
+ beq _020E6C40
+ ldrh r1, [r6, #0x0]
+ ldrb r0, [sp, #0x22]
+ and r6, r1, #0xff
+ cmp r0, #0x0
+ beq _020E6C78
+ ldr r0, [sp, #0x2c]
+ cmp r6, r0
+ movgt r6, r0
+ b _020E6C78
+_020E6C40:
+ ldrb r0, [sp, #0x22]
+ cmp r0, #0x0
+ beq _020E6C6C
+ ldr r6, [sp, #0x2c]
+ mov r0, r5
+ mov r2, r6
+ mov r1, #0x0
+ bl memchr
+ cmp r0, #0x0
+ subne r6, r0, r5
+ b _020E6C78
+_020E6C6C:
+ mov r0, r5
+ bl strlen
+ mov r6, r0
+_020E6C78:
+ add r0, sp, #0x30
+ mov r1, r5
+ mov r2, r6
+ bl mbstowcs
+ movs r7, r0
+ bmi _020E6D90
+ add r6, sp, #0x30
+ b _020E6DDC
+_020E6C98:
+ ldr r1, [sp, #0x464]
+ ldrb r0, [sp, #0x24]
+ add r1, r1, #0x4
+ str r1, [sp, #0x464]
+ ldr r6, [r1, #-0x4]
+ cmp r0, #0x8
+ addls pc, pc, r0, lsl #0x2
+ b _020E6F18
+ b _020E6CDC ; case
+ b _020E6F18 ; case
+ b _020E6CE4 ; case
+ b _020E6CEC ; case
+ b _020E6D14 ; case
+ b _020E6F18 ; case
+ b _020E6CF4 ; case
+ b _020E6D04 ; case
+ b _020E6D0C ; case
+_020E6CDC:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6CE4:
+ strh r4, [r6, #0x0]
+ b _020E6F18
+_020E6CEC:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6CF4:
+ str r4, [r6, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r6, #0x4]
+ b _020E6F18
+_020E6D04:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6D0C:
+ str r4, [r6, #0x0]
+ b _020E6F18
+_020E6D14:
+ str r4, [r6, #0x0]
+ mov r0, r4, asr #0x1f
+ str r0, [r6, #0x4]
+ b _020E6F18
+_020E6D24:
+ ldrb r0, [sp, #0x24]
+ add r6, sp, #0x30
+ cmp r0, #0x5
+ bne _020E6D50
+ ldr r0, [sp, #0x464]
+ mov r7, #0x1
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r0, [r0, #-0x4]
+ strh r0, [r6, #0x0]
+ b _020E6DDC
+_020E6D50:
+ ldr r0, [sp, #0x464]
+ add r1, sp, #0x18
+ add r0, r0, #0x4
+ str r0, [sp, #0x464]
+ ldr r3, [r0, #-0x4]
+ mov r0, r6
+ mov r2, #0x1
+ strb r3, [sp, #0x18]
+ bl mbtowc
+ mov r7, r0
+ b _020E6DDC
+_020E6D7C:
+ mov r0, #0x25
+ strh r0, [sp, #0x30]
+ add r6, sp, #0x30
+ mov r7, #0x1
+ b _020E6DDC
+_020E6D90:
+ ldr r0, [sp, #0xc]
+ bl wcslen
+ movs r5, r0
+ beq _020E6DC8
+ ldr r1, [sp, #0xc]
+ mov r0, r8
+ mov r2, r5
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6DC8:
+ add sp, sp, #0x430
+ add r0, r4, r5
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E6DDC:
+ ldrb r0, [sp, #0x20]
+ mov r5, r7
+ cmp r0, #0x0
+ beq _020E6E8C
+ cmp r0, #0x2
+ moveq r1, #0x30
+ movne r1, #0x20
+ strh r1, [sp, #0x1c]
+ ldrh r0, [r6, #0x0]
+ cmp r0, #0x2b
+ cmpne r0, #0x2d
+ cmpne r0, #0x20
+ bne _020E6E48
+ cmp r1, #0x30
+ bne _020E6E48
+ mov r0, r8
+ mov r1, r6
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ add r6, r6, #0x2
+ sub r7, r7, #0x1
+_020E6E48:
+ ldr r0, [sp, #0x28]
+ cmp r5, r0
+ bge _020E6E8C
+_020E6E54:
+ mov r0, r8
+ add r1, sp, #0x1c
+ mov r2, #0x1
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x28]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _020E6E54
+_020E6E8C:
+ cmp r7, #0x0
+ beq _020E6EBC
+ mov r0, r8
+ mov r1, r6
+ mov r2, r7
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+_020E6EBC:
+ ldrb r0, [sp, #0x20]
+ cmp r0, #0x0
+ bne _020E6F14
+ ldr r0, [sp, #0x28]
+ cmp r5, r0
+ bge _020E6F14
+ mov r7, #0x20
+_020E6ED8:
+ mov r0, r8
+ add r1, sp, #0x1a
+ mov r2, #0x1
+ strh r7, [sp, #0x1a]
+ blx r9
+ cmp r0, #0x0
+ addeq sp, sp, #0x430
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x28]
+ add r5, r5, #0x1
+ cmp r5, r0
+ blt _020E6ED8
+_020E6F14:
+ add r4, r4, r5
+_020E6F18:
+ ldrh r0, [r11, #0x0]
+ cmp r0, #0x0
+ bne _020E6684
+_020E6F24:
+ mov r0, r4
+ add sp, sp, #0x430
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E6F38: .word 0x0000FFFF
+_020E6F3C: .word buff_ptr$6E40
+_020E6F40: .word strptr$6E44
+ arm_func_end __wpformatter
+
+ arm_func_start __wStringWrite
+__wStringWrite: ; 0x020E6F44
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r0
+ ldr r3, [r4, #0x8]
+ mov r5, r2
+ ldr r2, [r4, #0x4]
+ add r0, r3, r5
+ cmp r0, r2
+ ldr r0, [r4, #0x0]
+ subhi r5, r2, r3
+ mov r2, r5
+ add r0, r0, r3, lsl #0x1
+ bl wmemcpy
+ ldr r1, [r4, #0x8]
+ add r1, r1, r5
+ str r1, [r4, #0x8]
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __wStringWrite
+
+ arm_func_start swprintf
+swprintf: ; 0x020E6F84
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3,lr}
+ add r3, sp, #0x10
+ bic r3, r3, #0x3
+ ldr r2, [sp, #0x10]
+ add r3, r3, #0x4
+ bl vswprintf
+ ldmia sp!, {r3,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end swprintf
+
+ arm_func_start vswprintf
+vswprintf: ; 0x020E6FAC
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0xc
+ mov r5, r0
+ mov r4, r1
+ mov r12, #0x0
+ ldr r0, _020E7018 ; =__wStringWrite
+ add r1, sp, #0x0
+ str r5, [sp, #0x0]
+ str r4, [sp, #0x4]
+ str r12, [sp, #0x8]
+ bl __wpformatter
+ cmp r0, #0x0
+ addlt sp, sp, #0xc
+ ldmltia sp!, {r4-r5,pc}
+ cmp r0, r4
+ bhs _020E7000
+ mov r1, r0, lsl #0x1
+ mov r2, #0x0
+ add sp, sp, #0xc
+ strh r2, [r5, r1]
+ ldmia sp!, {r4-r5,pc}
+_020E7000:
+ mov r1, #0x0
+ add r0, r5, r4, lsl #0x1
+ strh r1, [r0, #-0x2]
+ sub r0, r1, #0x1
+ add sp, sp, #0xc
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E7018: .word __wStringWrite
+ arm_func_end vswprintf
+
+ .section .exceptix,4
+
+ .word long2str__wide
+ .short 593
+ .word 0x0090FF20
+ .word longlong2str__wide
+ .short 741
+ .word 0x00A0FF20
+ .word double2hex__wide
+ .short 921
+ .word 0x00F07F20
+ .word float2str__wide
+ .short 1612
+ .word UNK_020EC728
+ .word __wpformatter
+ .short 2288
+ .word UNK_020EC730
+ .word __wStringWrite
+ .short 65
+ .word 0x00200300
+ .word swprintf
+ .short 41
+ .word 0x00300020
+ .word vswprintf
+ .short 113
+ .word 0x00300300
+
+ .section .exception,8
+
+UNK_020EC728: ; 0x020EC728
+ .byte 0x20, 0xFF, 0x09, 0x60
+ .balign 8
+
+ .section .exception,8
+
+UNK_020EC730: ; 0x020EC730
+ .byte 0x20, 0xFF, 0x11, 0x68
+ .balign 8
diff --git a/arm9/asm/MSL_Common_wstring.s b/arm9/asm/MSL_Common_wstring.s
new file mode 100644
index 00000000..d01c034b
--- /dev/null
+++ b/arm9/asm/MSL_Common_wstring.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start wcslen
+wcslen: ; 0x020E701C
+ mvn r2, #0x0
+_020E7020:
+ ldrh r1, [r0], #0x2
+ add r2, r2, #0x1
+ cmp r1, #0x0
+ bne _020E7020
+ mov r0, r2
+ bx lr
+ arm_func_end wcslen
+
+ arm_func_start wcscpy
+wcscpy: ; 0x020E7038
+ mov r3, r0
+_020E703C:
+ ldrh r2, [r1], #0x2
+ mov r12, r3
+ strh r2, [r3], #0x2
+ ldrh r2, [r12, #0x0]
+ cmp r2, #0x0
+ bne _020E703C
+ bx lr
+ arm_func_end wcscpy
+
+ arm_func_start wcschr
+wcschr: ; 0x020E7058
+ ldrh r2, [r0], #0x2
+ cmp r2, #0x0
+ beq _020E707C
+_020E7064:
+ cmp r2, r1
+ subeq r0, r0, #0x2
+ bxeq lr
+ ldrh r2, [r0], #0x2
+ cmp r2, #0x0
+ bne _020E7064
+_020E707C:
+ cmp r1, #0x0
+ movne r0, #0x0
+ subeq r0, r0, #0x2
+ bx lr
+ arm_func_end wcschr
diff --git a/arm9/asm/MSL_DPMath_e_pow.s b/arm9/asm/MSL_DPMath_e_pow.s
new file mode 100644
index 00000000..fedcbb10
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_e_pow.s
@@ -0,0 +1,1193 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .rodata
+
+ .global UNK_02104744
+UNK_02104744: ; 0x02104744
+ .word 0x00000000, 0x00000000
+ .word 0x40000000, 0x3FE2B803
+ .size UNK_02104744,.-UNK_02104744
+
+ .global UNK_02104754
+UNK_02104754: ; 0x02104754
+ .word 0x00000000, 0x3FF00000
+ .word 0x00000000, 0x3FF80000
+ .size UNK_02104754,.-UNK_02104754
+
+ .global UNK_02104764
+UNK_02104764: ; 0x02104764
+ .word 0x00000000, 0x00000000
+ .word 0x43CFD006, 0x3E4CFDEB
+ .size UNK_02104764,.-UNK_02104764
+
+ .text
+
+ arm_func_start __ieee754_pow
+__ieee754_pow: ; 0x020E708C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x80
+ ldr r8, [sp, #0xb4]
+ ldr r6, [sp, #0xac]
+ ldr r0, [sp, #0xb0]
+ bic r9, r8, #0x80000000
+ orrs r1, r9, r0
+ ldr r7, [sp, #0xa8]
+ bic r4, r6, #0x80000000
+ addeq sp, sp, #0x80
+ moveq r0, #0x0
+ ldreq r1, _020E7638 ; =0x3FF00000
+ ldmeqia sp!, {r3-r11,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r4, r1
+ bgt _020E70FC
+ bne _020E70E4
+ cmp r7, #0x0
+ bne _020E70FC
+_020E70E4:
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r9, r1
+ bgt _020E70FC
+ bne _020E7120
+ cmp r0, #0x0
+ beq _020E7120
+_020E70FC:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ ldr r2, [sp, #0xb0]
+ ldr r3, [sp, #0xb4]
+ bl _dadd
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7120:
+ cmp r6, #0x0
+ mov r5, #0x0
+ bge _020E7188
+ ldr r1, _020E7640 ; =0x43400000
+ cmp r9, r1
+ movge r5, #0x2
+ bge _020E7188
+ sub r1, r1, #0x3500000
+ cmp r9, r1
+ blt _020E7188
+ ldr r1, _020E7644 ; =0xFFFFFC01
+ add r1, r1, r9, asr #0x14
+ cmp r1, #0x14
+ ble _020E7170
+ rsb r2, r1, #0x34
+ mov r1, r0, lsr r2
+ cmp r0, r1, lsl r2
+ andeq r1, r1, #0x1
+ rsbeq r5, r1, #0x2
+ b _020E7188
+_020E7170:
+ cmp r0, #0x0
+ rsbeq r2, r1, #0x14
+ moveq r1, r9, asr r2
+ cmpeq r9, r1, lsl r2
+ andeq r1, r1, #0x1
+ rsbeq r5, r1, #0x2
+_020E7188:
+ cmp r0, #0x0
+ bne _020E72E4
+ ldr r1, _020E763C ; =0x7FF00000
+ cmp r9, r1
+ bne _020E723C
+ add r0, r4, #0x100000
+ add r0, r0, #0xc0000000
+ orrs r0, r0, r7
+ bne _020E71D0
+ ldr r0, [sp, #0xb0]
+ ldr r1, [sp, #0xb4]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E71D0:
+ sub r0, r1, #0x40000000
+ cmp r4, r0
+ blt _020E7200
+ cmp r8, #0x0
+ ldrge r0, [sp, #0xb0]
+ ldrge r1, [sp, #0xb4]
+ movlt r0, #0x0
+ add sp, sp, #0x80
+ movlt r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7200:
+ cmp r8, #0x0
+ mov r0, #0x0
+ addge sp, sp, #0x80
+ movge r1, r0
+ ldmgeia sp!, {r3-r11,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r2, [sp, #0xb0]
+ ldr r3, [sp, #0xb4]
+ mov r1, r0
+ bl _dsub
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E723C:
+ sub r0, r1, #0x40000000
+ cmp r9, r0
+ bne _020E7288
+ cmp r8, #0x0
+ ldrge r0, [sp, #0xa8]
+ ldrge r1, [sp, #0xac]
+ addge sp, sp, #0x80
+ ldmgeia sp!, {r3-r11,lr}
+ addge sp, sp, #0x10
+ bxge lr
+ ldr r2, [sp, #0xa8]
+ ldr r3, [sp, #0xac]
+ sub r1, r1, #0x40000000
+ mov r0, #0x0
+ bl _ddiv
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7288:
+ cmp r8, #0x40000000
+ bne _020E72B4
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E72B4:
+ ldr r0, _020E7648 ; =0x3FE00000
+ cmp r8, r0
+ bne _020E72E4
+ cmp r6, #0x0
+ blt _020E72E4
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ bl _dsqrt
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E72E4:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ bl fabs
+ str r0, [sp, #0x70]
+ str r1, [sp, #0x74]
+ cmp r7, #0x0
+ bne _020E73E8
+ ldr r0, _020E763C ; =0x7FF00000
+ cmp r4, r0
+ cmpne r4, #0x0
+ subne r0, r0, #0x40000000
+ cmpne r4, r0
+ bne _020E73E8
+ ldr r2, [sp, #0x70]
+ ldr r3, [sp, #0x74]
+ str r2, [sp, #0x78]
+ str r3, [sp, #0x7c]
+ cmp r8, #0x0
+ bge _020E7344
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _ddiv
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E7344:
+ cmp r6, #0x0
+ bge _020E73D0
+ add r0, r4, #0x100000
+ add r0, r0, #0xc0000000
+ orrs r0, r0, r5
+ bne _020E73AC
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ mov r4, r0
+ mov r5, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r5
+ bl _ddiv
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+ b _020E73D0
+_020E73AC:
+ cmp r5, #0x1
+ bne _020E73D0
+ mov r0, #0x0
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ mov r1, r0
+ bl _dsub
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E73D0:
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E73E8:
+ mov r0, r6, asr #0x1f
+ add r7, r0, #0x1
+ orrs r0, r7, r5
+ bne _020E7420
+ ldr r0, _020E764C ; =__float_nan
+ ldr r1, _020E7650 ; =errno
+ ldr r0, [r0, #0x0]
+ mov r2, #0x21
+ str r2, [r1, #0x0]
+ bl _f2d
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7420:
+ ldr r3, _020E7654 ; =0x41E00000
+ cmp r9, r3
+ ble _020E7724
+ add r0, r3, #0x2100000
+ cmp r9, r0
+ ble _020E7490
+ ldr r1, _020E7658 ; =0x3FEFFFFF
+ cmp r4, r1
+ bgt _020E7464
+ cmp r8, #0x0
+ mov r0, #0x0
+ addlt r1, r1, #0x40000001
+ add sp, sp, #0x80
+ movge r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7464:
+ add r0, r1, #0x1
+ cmp r4, r0
+ blt _020E7490
+ cmp r8, #0x0
+ mov r0, #0x0
+ addgt r1, r1, #0x40000001
+ add sp, sp, #0x80
+ movle r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7490:
+ ldr r2, _020E7658 ; =0x3FEFFFFF
+ cmp r4, r2
+ bge _020E74BC
+ cmp r8, #0x0
+ mov r0, #0x0
+ addlt r1, r2, #0x40000001
+ add sp, sp, #0x80
+ movge r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E74BC:
+ add r0, r2, #0x1
+ cmp r4, r0
+ ble _020E74E8
+ cmp r8, #0x0
+ mov r0, #0x0
+ addgt r1, r2, #0x40000001
+ add sp, sp, #0x80
+ movle r1, r0
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E74E8:
+ ldr r0, [sp, #0xa8]
+ ldr r1, [sp, #0xac]
+ add r3, r2, #0x1
+ mov r2, #0x0
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ str r0, [sp, #0x50]
+ str r1, [sp, #0x54]
+ bl _dmul
+ mov r6, r1
+ mov r4, r0
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ ldr r1, _020E765C ; =0x3FD00000
+ mov r0, #0x0
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7660 ; =0x55555555
+ sub r1, r0, #0x15800000
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, #0x0
+ ldr r1, _020E7648 ; =0x3FE00000
+ bl _dsub
+ mov r2, r0
+ mov r0, r4
+ mov r3, r1
+ mov r1, r6
+ bl _dmul
+ mov r6, r0
+ mov r8, r1
+ mov r0, #0x60000000
+ ldr r1, _020E7664 ; =0x3FF71547
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ ldr r0, _020E7668 ; =0xF85DDF44
+ ldr r1, _020E766C ; =0x3E54AE0B
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r11, r0
+ mov r10, r1
+ ldr r0, _020E7670 ; =0x652B82FE
+ ldr r1, _020E7664 ; =0x3FF71547
+ mov r2, r6
+ mov r3, r8
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r11
+ mov r1, r10
+ bl _dsub
+ mov r6, r0
+ mov r8, r1
+ mov r0, r4
+ mov r1, r9
+ mov r2, r6
+ mov r3, r8
+ bl _dadd
+ mov r2, r4
+ mov r3, r9
+ str r1, [sp, #0x5c]
+ mov r0, #0x0
+ str r0, [sp, #0x58]
+ bl _dsub
+ mov r2, r0
+ mov r0, r6
+ mov r3, r1
+ mov r1, r8
+ bl _dsub
+ mov r4, r0
+ mov r8, r1
+ b _020E7C80
+ .balign 4
+_020E7638: .word 0x3FF00000
+_020E763C: .word 0x7FF00000
+_020E7640: .word 0x43400000
+_020E7644: .word 0xFFFFFC01
+_020E7648: .word 0x3FE00000
+_020E764C: .word __float_nan
+_020E7650: .word errno
+_020E7654: .word 0x41E00000
+_020E7658: .word 0x3FEFFFFF
+_020E765C: .word 0x3FD00000
+_020E7660: .word 0x55555555
+_020E7664: .word 0x3FF71547
+_020E7668: .word 0xF85DDF44
+_020E766C: .word 0x3E54AE0B
+_020E7670: .word 0x652B82FE
+_020E7674: .word 0x0003988E
+_020E7678: .word 0x000BB67A
+_020E767C: .word UNK_02104754
+_020E7680: .word 0x4A454EEF
+_020E7684: .word 0x3FCA7E28
+_020E7688: .word 0x93C9DB65
+_020E768C: .word 0x3FCD864A
+_020E7690: .word 0xA91D4101
+_020E7694: .word 0x3FD17460
+_020E7698: .word 0x518F264D
+_020E769C: .word 0x3FD55555
+_020E76A0: .word 0xDB6FABFF
+_020E76A4: .word 0x3FDB6DB6
+_020E76A8: .word 0x33333303
+_020E76AC: .word 0x3FE33333
+_020E76B0: .word 0x40080000
+_020E76B4: .word 0x3FEEC709
+_020E76B8: .word 0x145B01F5
+_020E76BC: .word 0xBE3E2FE0
+_020E76C0: .word 0xDC3A03FD
+_020E76C4: .word UNK_02104764
+_020E76C8: .word UNK_02104744
+_020E76CC: .word 0x40900000
+_020E76D0: .word 0x8800759C
+_020E76D4: .word 0x7E37E43C
+_020E76D8: .word 0x3C971547
+_020E76DC: .word 0x3F6F3400
+_020E76E0: .word 0xC2F8F359
+_020E76E4: .word 0x01A56E1F
+_020E76E8: .word 0x3FE62E43
+_020E76EC: .word 0xFEFA39EF
+_020E76F0: .word 0x3FE62E42
+_020E76F4: .word 0x0CA86C39
+_020E76F8: .word 0xBE205C61
+_020E76FC: .word 0x72BEA4D0
+_020E7700: .word 0x3E663769
+_020E7704: .word 0xC5D26BF1
+_020E7708: .word 0xBEBBBD41
+_020E770C: .word 0xAF25DE2C
+_020E7710: .word 0x3F11566A
+_020E7714: .word 0x16BEBD93
+_020E7718: .word 0xBF66C16C
+_020E771C: .word 0x5555553E
+_020E7720: .word 0x3FC55555
+_020E7724:
+ cmp r4, #0x100000
+ mov r6, #0x0
+ bge _020E7754
+ ldr r0, [sp, #0x70]
+ ldr r1, [sp, #0x74]
+ mov r2, r6
+ add r3, r3, #0x1600000
+ bl _dmul
+ mov r4, r1
+ str r0, [sp, #0x70]
+ str r4, [sp, #0x74]
+ sub r6, r6, #0x35
+_020E7754:
+ ldr r0, _020E7644 ; =0xFFFFFC01
+ ldr r1, _020E7674 ; =0x0003988E
+ and r2, r4, r0, lsr #0xc
+ add r0, r0, r4, asr #0x14
+ orr r9, r2, #0xff00000
+ cmp r2, r1
+ add r6, r6, r0
+ orr r9, r9, #0x30000000
+ movle r8, #0x0
+ ble _020E7794
+ ldr r0, _020E7678 ; =0x000BB67A
+ cmp r2, r0
+ movlt r8, #0x1
+ addge r6, r6, #0x1
+ subge r9, r9, #0x100000
+ movge r8, #0x0
+_020E7794:
+ ldr r2, _020E767C ; =UNK_02104754
+ ldr r0, [sp, #0x70]
+ add r1, r2, r8, lsl #0x3
+ ldr r3, [r1, #0x4]
+ ldr r2, [r2, r8, lsl #0x3]
+ mov r1, r9
+ str r9, [sp, #0x74]
+ bl _dsub
+ ldr r2, _020E767C ; =UNK_02104754
+ mov r10, r0
+ add r3, r2, r8, lsl #0x3
+ mov r4, r1
+ ldr r0, [sp, #0x70]
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ mov r1, r9
+ bl _dadd
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _ddiv
+ str r1, [sp, #0x24]
+ mov r11, r0
+ ldr r3, [sp, #0x24]
+ mov r0, r10
+ mov r1, r4
+ mov r2, r11
+ bl _dmul
+ mov r2, r9, asr #0x1
+ orr r2, r2, #0x20000000
+ mov r9, r1
+ add r2, r2, #0x80000
+ add r1, r2, r8, lsl #0x12
+ ldr r2, _020E767C ; =UNK_02104754
+ str r0, [sp, #0x28]
+ add r3, r2, r8, lsl #0x3
+ mov r0, #0x0
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ str r9, [sp, #0x4c]
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x40]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x70]
+ ldr r1, [sp, #0x74]
+ bl _dsub
+ str r0, [sp, #0x2c]
+ str r1, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ mov r1, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r10
+ mov r1, r4
+ bl _dsub
+ mov r10, r0
+ mov r4, r1
+ ldr r2, [sp, #0x2c]
+ ldr r3, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ mov r1, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r10
+ mov r1, r4
+ bl _dsub
+ mov r3, r1
+ mov r2, r0
+ ldr r1, [sp, #0x24]
+ mov r0, r11
+ bl _dmul
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #0x14]
+ mov r1, r9
+ mov r2, r0
+ mov r3, r9
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ mov r2, r4
+ mov r3, r10
+ bl _dmul
+ str r0, [sp, #0x34]
+ mov r11, r1
+ ldr r0, _020E7680 ; =0x4A454EEF
+ ldr r1, _020E7684 ; =0x3FCA7E28
+ mov r2, r4
+ mov r3, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7688 ; =0x93C9DB65
+ ldr r1, _020E768C ; =0x3FCD864A
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7690 ; =0xA91D4101
+ ldr r1, _020E7694 ; =0x3FD17460
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7698 ; =0x518F264D
+ ldr r1, _020E769C ; =0x3FD55555
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76A0 ; =0xDB6FABFF
+ ldr r1, _020E76A4 ; =0x3FDB6DB6
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76A8 ; =0x33333303
+ ldr r1, _020E76AC ; =0x3FE33333
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x34]
+ mov r1, r11
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x28]
+ mov r1, r9
+ mov r3, r9
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x14]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dadd
+ mov r4, r0
+ ldr r0, [sp, #0x48]
+ mov r10, r1
+ mov r1, r9
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ str r1, [sp, #0xc]
+ mov r11, r0
+ ldr r1, _020E76B0 ; =0x40080000
+ ldr r3, [sp, #0xc]
+ mov r0, #0x0
+ mov r2, r11
+ bl _dadd
+ mov r2, r4
+ mov r3, r10
+ bl _dadd
+ mov r0, #0x0
+ ldr r3, _020E76B0 ; =0x40080000
+ mov r2, r0
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x40]
+ bl _dsub
+ ldr r3, [sp, #0xc]
+ mov r2, r11
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dsub
+ str r0, [sp, #0x38]
+ str r1, [sp, #0x4]
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ mov r1, r9
+ bl _dmul
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x40]
+ ldr r3, [sp, #0x44]
+ bl _dmul
+ str r0, [sp, #0x3c]
+ mov r11, r1
+ ldr r0, [sp, #0x38]
+ ldr r1, [sp, #0x4]
+ ldr r2, [sp, #0x28]
+ mov r3, r9
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x3c]
+ mov r1, r11
+ bl _dadd
+ mov r9, r0
+ mov r11, r1
+ mov r0, r4
+ mov r1, r10
+ mov r2, r9
+ mov r3, r11
+ bl _dadd
+ mov r0, #0x0
+ mov r2, r4
+ mov r3, r10
+ str r1, [sp, #0x6c]
+ str r0, [sp, #0x68]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r9
+ mov r1, r11
+ bl _dsub
+ mov r10, r1
+ mov r11, r0
+ ldr r1, _020E76B4 ; =0x3FEEC709
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r0, #0xe0000000
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ ldr r0, _020E76B8 ; =0x145B01F5
+ ldr r1, _020E76BC ; =0xBE3E2FE0
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dmul
+ mov r2, r11
+ mov r3, r10
+ mov r11, r0
+ mov r10, r1
+ ldr r0, _020E76C0 ; =0xDC3A03FD
+ ldr r1, _020E76B4 ; =0x3FEEC709
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r11
+ mov r1, r10
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76C4 ; =UNK_02104764
+ add r1, r0, r8, lsl #0x3
+ ldr r0, [r0, r8, lsl #0x3]
+ ldr r1, [r1, #0x4]
+ bl _dadd
+ mov r11, r0
+ mov r10, r1
+ mov r0, r6
+ bl _dflt
+ str r0, [sp, #0x50]
+ str r1, [sp, #0x54]
+ mov r0, r4
+ mov r1, r9
+ mov r2, r11
+ mov r3, r10
+ bl _dadd
+ ldr r2, _020E76C8 ; =UNK_02104744
+ add r3, r2, r8, lsl #0x3
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dadd
+ str r1, [sp, #0x5c]
+ mov r0, #0x0
+ str r0, [sp, #0x58]
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dsub
+ ldr r2, _020E76C8 ; =UNK_02104744
+ add r3, r2, r8, lsl #0x3
+ ldr r2, [r2, r8, lsl #0x3]
+ ldr r3, [r3, #0x4]
+ bl _dsub
+ mov r2, r4
+ mov r3, r9
+ bl _dsub
+ mov r2, r0
+ mov r0, r11
+ mov r3, r1
+ mov r1, r10
+ bl _dsub
+ mov r4, r0
+ mov r8, r1
+_020E7C80:
+ sub r0, r5, #0x1
+ ldr r1, [sp, #0xb4]
+ orrs r0, r7, r0
+ ldr r5, _020E7638 ; =0x3FF00000
+ mov r2, #0x0
+ ldr r0, [sp, #0xb0]
+ mov r3, r1
+ mov r6, #0x0
+ subeq r5, r5, #0x80000000
+ str r1, [sp, #0x64]
+ str r2, [sp, #0x60]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x58]
+ ldr r1, [sp, #0x5c]
+ bl _dmul
+ mov r7, r0
+ mov r9, r1
+ ldr r0, [sp, #0xb0]
+ ldr r1, [sp, #0xb4]
+ mov r2, r4
+ mov r3, r8
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r9
+ bl _dadd
+ mov r7, r0
+ mov r8, r1
+ ldr r0, [sp, #0x60]
+ ldr r1, [sp, #0x64]
+ ldr r2, [sp, #0x58]
+ ldr r3, [sp, #0x5c]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ str r2, [sp, #0x68]
+ str r3, [sp, #0x6c]
+ bl _dadd
+ mov r9, r1
+ ldr r2, _020E76CC ; =0x40900000
+ str r0, [sp, #0x78]
+ str r9, [sp, #0x7c]
+ cmp r9, r2
+ blt _020E7E0C
+ add r1, r9, #0xf700000
+ add r1, r1, #0xb0000000
+ orrs r0, r1, r0
+ beq _020E7D8C
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7D8C:
+ ldr r0, _020E7670 ; =0x652B82FE
+ ldr r1, _020E76D8 ; =0x3C971547
+ mov r2, r7
+ mov r3, r8
+ bl _dadd
+ mov r4, r0
+ mov r10, r1
+ ldr r0, [sp, #0x78]
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r1, r9
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r10
+ bl _dgr
+ bls _020E7EC0
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76D0 ; =0x8800759C
+ ldr r1, _020E76D4 ; =0x7E37E43C
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7E0C:
+ bic r3, r9, #0x80000000
+ add r2, r2, #0xcc00
+ cmp r3, r2
+ blt _020E7EC0
+ ldr r2, _020E76DC ; =0x3F6F3400
+ add r2, r9, r2
+ orrs r2, r2, r0
+ beq _020E7E64
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7E64:
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ bl _dleq
+ bhi _020E7EC0
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ mov r2, r6
+ mov r3, r5
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76E0 ; =0xC2F8F359
+ ldr r1, _020E76E4 ; =0x01A56E1F
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E7EC0:
+ ldr r0, _020E7644 ; =0xFFFFFC01
+ bic r3, r9, #0x80000000
+ ldr r1, _020E7648 ; =0x3FE00000
+ add r2, r0, r3, asr #0x14
+ cmp r3, r1
+ mov r4, #0x0
+ ble _020E7F3C
+ mov r1, #0x100000
+ add r2, r2, #0x1
+ add r2, r9, r1, asr r2
+ bic r3, r2, #0x80000000
+ add r0, r0, r3, asr #0x14
+ sub r3, r1, #0x1
+ mvn r3, r3, asr r0
+ sub r1, r1, #0x1
+ and r1, r2, r1
+ and r2, r2, r3
+ str r2, [sp, #0x54]
+ str r4, [sp, #0x50]
+ orr r1, r1, #0x100000
+ rsb r0, r0, #0x14
+ mov r4, r1, asr r0
+ cmp r9, #0x0
+ ldr r0, [sp, #0x68]
+ ldr r1, [sp, #0x6c]
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ rsblt r4, r4, #0x0
+ bl _dsub
+ str r0, [sp, #0x68]
+ str r1, [sp, #0x6c]
+_020E7F3C:
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ mov r0, r7
+ mov r1, r8
+ bl _dadd
+ mov r3, r1
+ mov r0, #0x0
+ ldr r1, _020E76E8 ; =0x3FE62E43
+ mov r2, r0
+ str r3, [sp, #0x54]
+ str r0, [sp, #0x50]
+ bl _dmul
+ mov r9, r0
+ mov r10, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ ldr r2, [sp, #0x68]
+ ldr r3, [sp, #0x6c]
+ bl _dsub
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r8
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E76EC ; =0xFEFA39EF
+ ldr r1, _020E76F0 ; =0x3FE62E42
+ bl _dmul
+ mov r7, r0
+ mov r8, r1
+ ldr r0, _020E76F4 ; =0x0CA86C39
+ ldr r1, _020E76F8 ; =0xBE205C61
+ ldr r2, [sp, #0x50]
+ ldr r3, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r8
+ bl _dadd
+ mov r7, r0
+ mov r8, r1
+ mov r0, r9
+ mov r1, r10
+ mov r2, r7
+ mov r3, r8
+ bl _dadd
+ mov r2, r9
+ mov r3, r10
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+ bl _dsub
+ mov r2, r0
+ mov r3, r1
+ mov r0, r7
+ mov r1, r8
+ bl _dsub
+ mov r8, r0
+ mov r9, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r0
+ mov r3, r1
+ bl _dmul
+ mov r2, r0
+ str r2, [sp, #0x50]
+ mov r3, r1
+ str r3, [sp, #0x54]
+ ldr r0, _020E76FC ; =0x72BEA4D0
+ ldr r1, _020E7700 ; =0x3E663769
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7704 ; =0xC5D26BF1
+ ldr r1, _020E7708 ; =0xBEBBBD41
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E770C ; =0xAF25DE2C
+ ldr r1, _020E7710 ; =0x3F11566A
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E7714 ; =0x16BEBD93
+ ldr r1, _020E7718 ; =0xBF66C16C
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E771C ; =0x5555553E
+ ldr r1, _020E7720 ; =0x3FC55555
+ bl _dadd
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x50]
+ ldr r1, [sp, #0x54]
+ bl _dmul
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ bl _dsub
+ mov r2, r0
+ str r2, [sp, #0x58]
+ mov r3, r1
+ str r3, [sp, #0x5c]
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ bl _dmul
+ mov r7, r0
+ mov r10, r1
+ ldr r0, [sp, #0x58]
+ ldr r1, [sp, #0x5c]
+ mov r2, #0x0
+ mov r3, #0x40000000
+ bl _dsub
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r10
+ bl _ddiv
+ mov r7, r0
+ mov r10, r1
+ ldr r0, [sp, #0x78]
+ ldr r1, [sp, #0x7c]
+ mov r2, r8
+ mov r3, r9
+ bl _dmul
+ mov r2, r0
+ mov r0, r8
+ mov r3, r1
+ mov r1, r9
+ bl _dadd
+ mov r2, r0
+ mov r0, r7
+ mov r3, r1
+ mov r1, r10
+ bl _dsub
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ bl _dsub
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E7638 ; =0x3FF00000
+ mov r0, #0x0
+ bl _dsub
+ add r3, r1, r4, lsl #0x14
+ mov r2, r3, asr #0x14
+ str r0, [sp, #0x78]
+ cmp r2, #0x0
+ str r1, [sp, #0x7c]
+ addgt r0, sp, #0x78
+ strgt r3, [r0, #0x4]
+ bgt _020E81F0
+ mov r2, r4
+ bl scalbn
+ str r0, [sp, #0x78]
+ str r1, [sp, #0x7c]
+_020E81F0:
+ ldr r2, [sp, #0x78]
+ ldr r3, [sp, #0x7c]
+ mov r0, r6
+ mov r1, r5
+ bl _dmul
+ add sp, sp, #0x80
+ ldmia sp!, {r3-r11,lr}
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end __ieee754_pow
+
+ .section .exceptix,4
+ .word __ieee754_pow
+ .short 4488
+ .word UNK_020EC738
+
+ .section .exception,8
+
+ .global UNK_020EC738
+UNK_020EC738: ; 0x020EC738
+ .byte 0x20, 0xFF, 0x01, 0xB8
+ .balign 8
diff --git a/arm9/asm/MSL_DPMath_s_copysign.s b/arm9/asm/MSL_DPMath_s_copysign.s
new file mode 100644
index 00000000..b8afdb31
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_s_copysign.s
@@ -0,0 +1,18 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start copysign
+copysign: ; 0x020E8214
+ stmdb sp!, {r0-r3}
+ ldr r1, [sp, #0x4]
+ ldr r0, [sp, #0xc]
+ bic r1, r1, #0x80000000
+ and r0, r0, #0x80000000
+ orr r1, r1, r0
+ ldr r0, [sp, #0x0]
+ str r1, [sp, #0x4]
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end copysign
diff --git a/arm9/asm/MSL_DPMath_s_fabs.s b/arm9/asm/MSL_DPMath_s_fabs.s
new file mode 100644
index 00000000..049675a4
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_s_fabs.s
@@ -0,0 +1,16 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start fabs
+fabs: ; 0x020E823C
+ stmdb sp!, {r0-r3}
+ add r2, sp, #0x0
+ ldr r1, [r2, #0x4]
+ ldr r0, [sp, #0x0]
+ bic r1, r1, #0x80000000
+ str r1, [r2, #0x4]
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end fabs
diff --git a/arm9/asm/MSL_DPMath_s_frexp.s b/arm9/asm/MSL_DPMath_s_frexp.s
new file mode 100644
index 00000000..b0c22aac
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_s_frexp.s
@@ -0,0 +1,65 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start frexp
+frexp: ; 0x020E825C
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r1, [sp, #0xc]
+ ldr r0, _020E8308 ; =0x7FF00000
+ mov r4, r2
+ bic r3, r1, #0x80000000
+ mov r2, #0x0
+ str r2, [r4, #0x0]
+ cmp r3, r0
+ ldr r0, [sp, #0x8]
+ bge _020E8290
+ orrs r0, r3, r0
+ bne _020E82A4
+_020E8290:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E82A4:
+ cmp r3, #0x100000
+ bge _020E82D0
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldr r3, _020E830C ; =0x43500000
+ bl _dmul
+ mvn r2, #0x35
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ str r2, [r4, #0x0]
+ bic r3, r1, #0x80000000
+_020E82D0:
+ ldr r2, _020E8310 ; =0x800FFFFF
+ ldr r0, _020E8314 ; =0xFFFFFC02
+ and r1, r1, r2
+ orr r1, r1, #0xfe00000
+ orr r1, r1, #0x30000000
+ ldr r2, [r4, #0x0]
+ add r0, r0, r3, asr #0x14
+ add r2, r2, r0
+ ldr r0, [sp, #0x8]
+ str r2, [r4, #0x0]
+ str r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E8308: .word 0x7FF00000
+_020E830C: .word 0x43500000
+_020E8310: .word 0x800FFFFF
+_020E8314: .word 0xFFFFFC02
+ arm_func_end frexp
+
+ .section .exceptix,4
+
+ .word frexp
+ .short 189
+ .word 0x00300120
diff --git a/arm9/asm/MSL_DPMath_s_ldexp.s b/arm9/asm/MSL_DPMath_s_ldexp.s
new file mode 100644
index 00000000..fc3a4713
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_s_ldexp.s
@@ -0,0 +1,170 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start ldexp
+ldexp: ; 0x020E8318
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4,lr}
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r4, r2
+ bl __fpclassifyf
+ cmp r0, #0x2
+ ble _020E8350
+ mov r0, #0x0
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r1, r0
+ bl _deq
+ bne _020E8364
+_020E8350:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8364:
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8538 ; =0x7FF00000
+ ldr r1, [sp, #0x8]
+ and r0, r3, r0
+ movs r12, r0, asr #0x14
+ bne _020E83F0
+ bic r0, r3, #0x80000000
+ orrs r0, r1, r0
+ ldreq r0, [sp, #0x8]
+ ldreq r1, [sp, #0xc]
+ ldmeqia sp!, {r4,lr}
+ addeq sp, sp, #0x10
+ bxeq lr
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ ldr r3, _020E853C ; =0x43500000
+ mov r2, #0x0
+ bl _dmul
+ mov r3, r1
+ ldr r1, _020E8538 ; =0x7FF00000
+ ldr ip, _020E8540 ; =0xFFFF3CB0
+ and r1, r3, r1
+ mov r2, r0
+ mov r0, r1, asr #0x14
+ str r2, [sp, #0x8]
+ str r3, [sp, #0xc]
+ cmp r4, r12
+ sub r12, r0, #0x36
+ bge _020E83F0
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E83F0:
+ ldr r0, _020E854C ; =0x000007FF
+ cmp r12, r0
+ bne _020E841C
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r2, r0
+ mov r3, r1
+ bl _dadd
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E841C:
+ add r2, r12, r4
+ sub r0, r0, #0x1
+ cmp r2, r0
+ ble _020E8460
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8460:
+ cmp r2, #0x0
+ ble _020E8488
+ ldr r1, _020E8558 ; =0x800FFFFF
+ ldr r0, [sp, #0x8]
+ and r1, r3, r1
+ orr r1, r1, r2, lsl #0x14
+ str r1, [sp, #0xc]
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8488:
+ mvn r0, #0x35
+ cmp r2, r0
+ bgt _020E8508
+ ldr r0, _020E855C ; =0x0000C350
+ cmp r4, r0
+ ble _020E84D4
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8550 ; =0x8800759C
+ ldr r1, _020E8554 ; =0x7E37E43C
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E84D4:
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl copysign
+ mov r2, r0
+ mov r3, r1
+ ldr r0, _020E8544 ; =0xC2F8F359
+ ldr r1, _020E8548 ; =0x01A56E1F
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+_020E8508:
+ ldr r0, _020E8558 ; =0x800FFFFF
+ add r1, r2, #0x36
+ and r0, r3, r0
+ orr r3, r0, r1, lsl #0x14
+ ldr r2, [sp, #0x8]
+ ldr r1, _020E8560 ; =0x3C900000
+ mov r0, #0x0
+ str r3, [sp, #0xc]
+ bl _dmul
+ ldmia sp!, {r4,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E8538: .word 0x7FF00000
+_020E853C: .word 0x43500000
+_020E8540: .word 0xFFFF3CB0
+_020E8544: .word 0xC2F8F359
+_020E8548: .word 0x01A56E1F
+_020E854C: .word 0x000007FF
+_020E8550: .word 0x8800759C
+_020E8554: .word 0x7E37E43C
+_020E8558: .word 0x800FFFFF
+_020E855C: .word 0x0000C350
+_020E8560: .word 0x3C900000
+ arm_func_end ldexp
+
+ .section .exceptix,4
+
+ .word ldexp
+ .short 589
+ .word 0x00300120
diff --git a/arm9/asm/MSL_DPMath_w_pow.s b/arm9/asm/MSL_DPMath_w_pow.s
new file mode 100644
index 00000000..8a6625ad
--- /dev/null
+++ b/arm9/asm/MSL_DPMath_w_pow.s
@@ -0,0 +1,18 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start pow
+pow: ; 0x020E8564
+ ldr ip, _020E856C ; =__ieee754_pow
+ bx r12
+ .balign 4
+_020E856C: .word __ieee754_pow
+ arm_func_end pow
+
+ .section .exceptix,4
+
+ .word pow
+ .short 13
+ .word 0x00000000
diff --git a/arm9/asm/MSL_fp_ansi.s b/arm9/asm/MSL_fp_ansi.s
new file mode 100644
index 00000000..b10a364e
--- /dev/null
+++ b/arm9/asm/MSL_fp_ansi.s
@@ -0,0 +1,1627 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .data
+
+ .global UNK_02106E48
+UNK_02106E48: ; 0x02106E48
+ .word 0x00000000, 0x40240000
+ .word 0x00000000, 0x40590000
+ .word 0x00000000, 0x408F4000
+ .word 0x00000000, 0x40C38800
+ .word 0x00000000, 0x40F86A00
+ .word 0x00000000, 0x412E8480
+ .word 0x00000000, 0x416312D0
+ .word 0x00000000, 0x4197D784
+
+ .global UNK_02106E88
+UNK_02106E88: ; 0x02106E88
+ .asciz "542101086242752217003726400434970855712890625"
+
+ .balign 4, 0
+ .global UNK_02106EB8
+UNK_02106EB8: ; 0x02106EB8
+ .asciz "11102230246251565404236316680908203125"
+
+ .balign 4, 0
+ .global UNK_02106EE0
+UNK_02106EE0: ; 0x02106EE0
+ .asciz "23283064365386962890625"
+
+ .balign 4, 0
+ .global UNK_02106EF8
+UNK_02106EF8: ; 0x02106EF8
+ .asciz "152587890625"
+
+ .balign 4, 0
+ .global UNK_02106F08
+UNK_02106F08: ; 0x02106F08
+ .asciz "390625"
+
+ .balign 4, 0
+ .global UNK_02106F10
+UNK_02106F10: ; 0x02106F10
+ .asciz "78125"
+
+ .balign 4, 0
+ .global UNK_02106F18
+UNK_02106F18: ; 0x02106F18
+ .asciz "15625"
+
+ .balign 4, 0
+ .global UNK_02106F20
+UNK_02106F20: ; 0x02106F20
+ .asciz "3125"
+
+ .balign 4, 0
+ .global UNK_02106F28
+UNK_02106F28: ; 0x02106F28
+ .asciz "625"
+
+ .balign 4, 0
+ .global UNK_02106F2C
+UNK_02106F2C: ; 0x02106F2C
+ .asciz "125"
+
+ .balign 4, 0
+ .global UNK_02106F30
+UNK_02106F30: ; 0x02106F30
+ .asciz "25"
+
+ .balign 4, 0
+ .global UNK_02106F34
+UNK_02106F34: ; 0x02106F34
+ .asciz "5"
+
+ .balign 4, 0
+ .global UNK_02106F38
+UNK_02106F38: ; 0x02106F38
+ .asciz "1"
+
+ .balign 4, 0
+ .global UNK_02106F3C
+UNK_02106F3C: ; 0x02106F3C
+ .asciz "2"
+
+ .balign 4, 0
+ .global UNK_02106F40
+UNK_02106F40: ; 0x02106F40
+ .asciz "4"
+
+ .balign 4, 0
+ .global UNK_02106F44
+UNK_02106F44: ; 0x02106F44
+ .asciz "8"
+
+ .balign 4, 0
+ .global UNK_02106F48
+UNK_02106F48: ; 0x02106F48
+ .asciz "16"
+
+ .balign 4, 0
+ .global UNK_02106F4C
+UNK_02106F4C: ; 0x02106F4C
+ .asciz "32"
+
+ .balign 4, 0
+ .global UNK_02106F50
+UNK_02106F50: ; 0x02106F50
+ .asciz "64"
+
+ .balign 4, 0
+ .global UNK_02106F54
+UNK_02106F54: ; 0x02106F54
+ .asciz "128"
+
+ .balign 4, 0
+ .global UNK_02106F58
+UNK_02106F58: ; 0x02106F58
+ .asciz "256"
+
+ .balign 4, 0
+ .global UNK_02106F5C
+UNK_02106F5C: ; 0x02106F5C
+ .asciz "179769313486231580793728714053034151"
+
+ .text
+
+ arm_func_start __must_round
+__must_round: ; 0x020E8570
+ add r3, r0, #0x5
+ ldrb r2, [r3, r1]
+ add r12, r3, r1
+ cmp r2, #0x5
+ movhi r0, #0x1
+ bxhi lr
+ mvncc r0, #0x0
+ bxcc lr
+ ldrb r2, [r0, #0x4]
+ add r12, r12, #0x1
+ add r3, r3, r2
+ cmp r12, r3
+ bhs _020E85C0
+_020E85A4:
+ ldrb r2, [r12, #0x0]
+ cmp r2, #0x0
+ movne r0, #0x1
+ bxne lr
+ add r12, r12, #0x1
+ cmp r12, r3
+ blo _020E85A4
+_020E85C0:
+ sub r1, r1, #0x1
+ add r0, r0, r1
+ ldrb r0, [r0, #0x5]
+ tst r0, #0x1
+ movne r0, #0x1
+ mvneq r0, #0x0
+ bx lr
+ arm_func_end __must_round
+
+ arm_func_start __dorounddecup
+__dorounddecup: ; 0x020E85DC
+ add r3, r0, #0x5
+ add r1, r3, r1
+ sub r12, r1, #0x1
+ mov r1, #0x0
+_020E85EC:
+ ldrb r2, [r12, #0x0]
+ cmp r2, #0x9
+ addcc r0, r2, #0x1
+ strccb r0, [r12, #0x0]
+ bxcc lr
+ cmp r12, r3
+ bne _020E8620
+ mov r1, #0x1
+ strb r1, [r12, #0x0]
+ ldrsh r1, [r0, #0x2]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x2]
+ bx lr
+_020E8620:
+ strb r1, [r12], #-0x1
+ b _020E85EC
+ bx lr
+ arm_func_end __dorounddecup
+
+ arm_func_start __rounddec
+__rounddec: ; 0x020E862C
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r1
+ mov r5, r0
+ cmp r4, #0x0
+ ldmleia sp!, {r3-r5,pc}
+ ldrb r2, [r5, #0x4]
+ cmp r4, r2
+ ldmgeia sp!, {r3-r5,pc}
+ bl __must_round
+ strb r4, [r5, #0x4]
+ cmp r0, #0x0
+ ldmltia sp!, {r3-r5,pc}
+ mov r0, r5
+ mov r1, r4
+ bl __dorounddecup
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __rounddec
+
+ arm_func_start __ull2dec
+__ull2dec: ; 0x020E866C
+ stmdb sp!, {r3-r11,lr}
+ mov r10, r0
+ mov r0, #0x0
+ mov r8, r2
+ strb r0, [r10, #0x0]
+ mov r9, r1
+ cmp r8, #0x0
+ strb r0, [r10, #0x4]
+ cmpeq r9, #0x0
+ beq _020E86F8
+ mov r6, #0xa
+ mov r11, r0
+ mov r5, r0
+ mov r4, r0
+_020E86A4:
+ ldrb r1, [r10, #0x4]
+ mov r0, r9
+ mov r2, r6
+ add r3, r1, #0x1
+ mov r7, r1
+ strb r3, [r10, #0x4]
+ mov r1, r8
+ mov r3, r11
+ bl _ull_mod
+ add r1, r10, r7
+ strb r0, [r1, #0x5]
+ mov r0, r9
+ mov r1, r8
+ mov r2, #0xa
+ mov r3, #0x0
+ bl _ll_udiv
+ mov r8, r1
+ mov r9, r0
+ cmp r8, r5
+ cmpeq r9, r4
+ bne _020E86A4
+_020E86F8:
+ ldrb r0, [r10, #0x4]
+ add r2, r10, #0x5
+ add r0, r2, r0
+ sub r3, r0, #0x1
+ cmp r2, r3
+ bhs _020E8728
+_020E8710:
+ ldrb r0, [r3, #0x0]
+ ldrb r1, [r2, #0x0]
+ strb r0, [r2], #0x1
+ strb r1, [r3], #-0x1
+ cmp r2, r3
+ blo _020E8710
+_020E8728:
+ ldrb r0, [r10, #0x4]
+ sub r0, r0, #0x1
+ strh r0, [r10, #0x2]
+ ldmia sp!, {r3-r11,pc}
+ arm_func_end __ull2dec
+
+ arm_func_start __timesdec
+__timesdec: ; 0x020E8738
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x40
+ ldrb r6, [r1, #0x4]
+ ldrb r5, [r2, #0x4]
+ mov r4, #0x0
+ add r3, sp, #0x0
+ add r5, r6, r5
+ sub r5, r5, #0x1
+ add r3, r3, r5
+ add r6, r3, #0x1
+ mov r7, r6
+ strb r4, [r0, #0x0]
+ cmp r5, #0x0
+ ble _020E8800
+ add lr, r1, #0x5
+ add r11, r2, #0x5
+_020E8778:
+ ldrb r3, [r2, #0x4]
+ sub r10, r3, #0x1
+ sub r3, r5, r10
+ subs r9, r3, #0x1
+ ldrb r3, [r1, #0x4]
+ movmi r9, #0x0
+ submi r10, r5, #0x1
+ add r8, r10, #0x1
+ sub r3, r3, r9
+ cmp r8, r3
+ movgt r8, r3
+ add r10, r11, r10
+ add r9, lr, r9
+ cmp r8, #0x0
+ ble _020E87CC
+_020E87B4:
+ ldrb r12, [r9], #0x1
+ ldrb r3, [r10], #-0x1
+ sub r8, r8, #0x1
+ cmp r8, #0x0
+ mla r4, r12, r3, r4
+ bgt _020E87B4
+_020E87CC:
+ ldr r3, _020E88B8 ; =0xCCCCCCCD
+ sub r5, r5, #0x1
+ umull r8, r9, r4, r3
+ mov r9, r9, lsr #0x3
+ cmp r5, #0x0
+ mov r10, #0xa
+ umull r8, r9, r10, r9
+ sub r9, r4, r8
+ strb r9, [r6, #-0x1]!
+ mov r8, r4
+ umull r3, r4, r8, r3
+ mov r4, r4, lsr #0x3
+ bgt _020E8778
+_020E8800:
+ ldrsh r3, [r1, #0x2]
+ ldrsh r1, [r2, #0x2]
+ cmp r4, #0x0
+ add r1, r3, r1
+ strh r1, [r0, #0x2]
+ beq _020E8828
+ strb r4, [r6, #-0x1]!
+ ldrsh r1, [r0, #0x2]
+ add r1, r1, #0x1
+ strh r1, [r0, #0x2]
+_020E8828:
+ mov r3, #0x0
+ b _020E8840
+_020E8830:
+ ldrb r2, [r6], #0x1
+ add r1, r0, r3
+ add r3, r3, #0x1
+ strb r2, [r1, #0x5]
+_020E8840:
+ cmp r3, #0x20
+ bge _020E8850
+ cmp r6, r7
+ blo _020E8830
+_020E8850:
+ cmp r6, r7
+ addcs sp, sp, #0x40
+ strb r3, [r0, #0x4]
+ ldmcsia sp!, {r3-r11,pc}
+ ldrb r1, [r6, #0x0]
+ cmp r1, #0x5
+ addcc sp, sp, #0x40
+ ldmccia sp!, {r3-r11,pc}
+ bne _020E88A8
+ add r2, r6, #0x1
+ cmp r2, r7
+ bhs _020E8898
+_020E8880:
+ ldrb r1, [r2, #0x0]
+ cmp r1, #0x0
+ bne _020E88A8
+ add r2, r2, #0x1
+ cmp r2, r7
+ blo _020E8880
+_020E8898:
+ ldrb r1, [r6, #-0x1]
+ tst r1, #0x1
+ addeq sp, sp, #0x40
+ ldmeqia sp!, {r3-r11,pc}
+_020E88A8:
+ ldrb r1, [r0, #0x4]
+ bl __dorounddecup
+ add sp, sp, #0x40
+ ldmia sp!, {r3-r11,pc}
+ .balign 4
+_020E88B8: .word 0xCCCCCCCD
+ arm_func_end __timesdec
+
+ arm_func_start __str2dec
+__str2dec: ; 0x020E88BC
+ stmdb sp!, {r3,lr}
+ strh r2, [r0, #0x2]
+ mov r12, #0x0
+ strb r12, [r0, #0x0]
+ b _020E88E4
+_020E88D0:
+ ldrsb r3, [r1], #0x1
+ add r2, r0, r12
+ add r12, r12, #0x1
+ sub r3, r3, #0x30
+ strb r3, [r2, #0x5]
+_020E88E4:
+ cmp r12, #0x20
+ bge _020E88F8
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ bne _020E88D0
+_020E88F8:
+ strb r12, [r0, #0x4]
+ ldrsb r2, [r1, #0x0]
+ cmp r2, #0x0
+ ldmeqia sp!, {r3,pc}
+ cmp r2, #0x5
+ ldmltia sp!, {r3,pc}
+ bgt _020E894C
+ ldrsb r2, [r1, #0x1]
+ add r1, r1, #0x1
+ cmp r2, #0x0
+ beq _020E8938
+_020E8924:
+ cmp r2, #0x30
+ bne _020E894C
+ ldrsb r2, [r1, #0x1]!
+ cmp r2, #0x0
+ bne _020E8924
+_020E8938:
+ sub r1, r12, #0x1
+ add r1, r0, r1
+ ldrb r1, [r1, #0x5]
+ tst r1, #0x1
+ ldmeqia sp!, {r3,pc}
+_020E894C:
+ ldrb r1, [r0, #0x4]
+ bl __dorounddecup
+ ldmia sp!, {r3,pc}
+ arm_func_end __str2dec
+
+ arm_func_start __two_exp
+__two_exp: ; 0x020E8958
+ stmdb sp!, {r4-r5,lr}
+ sub sp, sp, #0x4c
+ mov r4, r1
+ mvn r2, #0x34
+ mov r5, r0
+ cmp r4, r2
+ bgt _020E8988
+ bge _020E8A54
+ sub r0, r2, #0xb
+ cmp r4, r0
+ beq _020E8A3C
+ b _020E8BE4
+_020E8988:
+ add r1, r4, #0x20
+ cmp r1, #0x28
+ addls pc, pc, r1, lsl #0x2
+ b _020E8BE4
+ b _020E8A68 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8A7C ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8BE4 ; case
+ b _020E8A90 ; case
+ b _020E8AA4 ; case
+ b _020E8AB8 ; case
+ b _020E8ACC ; case
+ b _020E8AE0 ; case
+ b _020E8AF4 ; case
+ b _020E8B08 ; case
+ b _020E8B1C ; case
+ b _020E8B30 ; case
+ b _020E8B44 ; case
+ b _020E8B58 ; case
+ b _020E8B6C ; case
+ b _020E8B80 ; case
+ b _020E8B94 ; case
+ b _020E8BA8 ; case
+ b _020E8BBC ; case
+ b _020E8BD0 ; case
+_020E8A3C:
+ ldr r1, _020E8C88 ; =UNK_02106E88
+ mov r0, r5
+ mvn r2, #0x13
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A54:
+ ldr r1, _020E8C8C ; =UNK_02106EB8
+ add r2, r2, #0x25
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A68:
+ ldr r1, _020E8C90 ; =UNK_02106EE0
+ add r2, r2, #0x2b
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A7C:
+ ldr r1, _020E8C94 ; =UNK_02106EF8
+ add r2, r2, #0x30
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8A90:
+ ldr r1, _020E8C98 ; =UNK_02106F08
+ add r2, r2, #0x32
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AA4:
+ ldr r1, _020E8C9C ; =UNK_02106F10
+ add r2, r2, #0x32
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AB8:
+ ldr r1, _020E8CA0 ; =UNK_02106F18
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8ACC:
+ ldr r1, _020E8CA4 ; =UNK_02106F20
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AE0:
+ ldr r1, _020E8CA8 ; =UNK_02106F28
+ add r2, r2, #0x33
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8AF4:
+ ldr r1, _020E8CAC ; =UNK_02106F2C
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B08:
+ ldr r1, _020E8CB0 ; =UNK_02106F30
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B1C:
+ ldr r1, _020E8CB4 ; =UNK_02106F34
+ add r2, r2, #0x34
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B30:
+ ldr r1, _020E8CB8 ; =UNK_02106F38
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B44:
+ ldr r1, _020E8CBC ; =UNK_02106F3C
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B58:
+ ldr r1, _020E8CC0 ; =UNK_02106F40
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B6C:
+ ldr r1, _020E8CC4 ; =UNK_02106F44
+ mov r2, #0x0
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B80:
+ ldr r1, _020E8CC8 ; =UNK_02106F48
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8B94:
+ ldr r1, _020E8CCC ; =UNK_02106F4C
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BA8:
+ ldr r1, _020E8CD0 ; =UNK_02106F50
+ mov r2, #0x1
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BBC:
+ ldr r1, _020E8CD4 ; =UNK_02106F54
+ mov r2, #0x2
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BD0:
+ ldr r1, _020E8CD8 ; =UNK_02106F58
+ mov r2, #0x2
+ bl __str2dec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+_020E8BE4:
+ and r0, r4, #0x80000000
+ add r1, r4, r0, lsr #0x1f
+ add r0, sp, #0x26
+ mov r1, r1, asr #0x1
+ bl __two_exp
+ add r1, sp, #0x26
+ mov r0, r5
+ mov r2, r1
+ bl __timesdec
+ tst r4, #0x1
+ addeq sp, sp, #0x4c
+ ldmeqia sp!, {r4-r5,pc}
+ add r3, sp, #0x0
+ mov r12, r5
+ mov r2, #0x9
+_020E8C20:
+ ldrh r1, [r12, #0x0]
+ ldrh r0, [r12, #0x2]
+ add r12, r12, #0x4
+ subs r2, r2, #0x1
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ bne _020E8C20
+ ldrh r0, [r12, #0x0]
+ cmp r4, #0x0
+ strh r0, [r3, #0x0]
+ add r0, sp, #0x26
+ ble _020E8C64
+ ldr r1, _020E8CBC ; =UNK_02106F3C
+ mov r2, #0x0
+ bl __str2dec
+ b _020E8C70
+_020E8C64:
+ ldr r1, _020E8CB4 ; =UNK_02106F34
+ mvn r2, #0x0
+ bl __str2dec
+_020E8C70:
+ add r1, sp, #0x0
+ add r2, sp, #0x26
+ mov r0, r5
+ bl __timesdec
+ add sp, sp, #0x4c
+ ldmia sp!, {r4-r5,pc}
+ .balign 4
+_020E8C88: .word UNK_02106E88
+_020E8C8C: .word UNK_02106EB8
+_020E8C90: .word UNK_02106EE0
+_020E8C94: .word UNK_02106EF8
+_020E8C98: .word UNK_02106F08
+_020E8C9C: .word UNK_02106F10
+_020E8CA0: .word UNK_02106F18
+_020E8CA4: .word UNK_02106F20
+_020E8CA8: .word UNK_02106F28
+_020E8CAC: .word UNK_02106F2C
+_020E8CB0: .word UNK_02106F30
+_020E8CB4: .word UNK_02106F34
+_020E8CB8: .word UNK_02106F38
+_020E8CBC: .word UNK_02106F3C
+_020E8CC0: .word UNK_02106F40
+_020E8CC4: .word UNK_02106F44
+_020E8CC8: .word UNK_02106F48
+_020E8CCC: .word UNK_02106F4C
+_020E8CD0: .word UNK_02106F50
+_020E8CD4: .word UNK_02106F54
+_020E8CD8: .word UNK_02106F58
+ arm_func_end __two_exp
+
+ arm_func_start __equals_dec
+__equals_dec:
+ stmdb sp!, {r4,lr}
+ ldrb r3, [r0, #0x5]
+ cmp r3, #0x0
+ bne _020E8D00
+ ldrb r0, [r1, #0x5]
+ cmp r0, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4,pc}
+_020E8D00:
+ ldrb r2, [r1, #0x5]
+ cmp r2, #0x0
+ bne _020E8D1C
+ cmp r3, #0x0
+ moveq r0, #0x1
+ movne r0, #0x0
+ ldmia sp!, {r4,pc}
+_020E8D1C:
+ ldrsh r3, [r0, #0x2]
+ ldrsh r2, [r1, #0x2]
+ cmp r3, r2
+ bne _020E8DB4
+ ldrb r4, [r0, #0x4]
+ ldrb r2, [r1, #0x4]
+ mov r12, #0x0
+ mov lr, r4
+ cmp r4, r2
+ movgt lr, r2
+ cmp lr, #0x0
+ ble _020E8D74
+_020E8D4C:
+ add r3, r0, r12
+ add r2, r1, r12
+ ldrb r3, [r3, #0x5]
+ ldrb r2, [r2, #0x5]
+ cmp r3, r2
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+ add r12, r12, #0x1
+ cmp r12, lr
+ blt _020E8D4C
+_020E8D74:
+ cmp lr, r4
+ moveq r0, r1
+ ldrb r1, [r0, #0x4]
+ cmp r12, r1
+ bge _020E8DAC
+_020E8D88:
+ add r1, r0, r12
+ ldrb r1, [r1, #0x5]
+ cmp r1, #0x0
+ movne r0, #0x0
+ ldmneia sp!, {r4,pc}
+ ldrb r1, [r0, #0x4]
+ add r12, r12, #0x1
+ cmp r12, r1
+ blt _020E8D88
+_020E8DAC:
+ mov r0, #0x1
+ ldmia sp!, {r4,pc}
+_020E8DB4:
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+ arm_func_end __equals_dec
+
+ arm_func_start __less_dec
+__less_dec:
+ stmdb sp!, {r3-r5,lr}
+ ldrb r2, [r0, #0x5]
+ cmp r2, #0x0
+ bne _020E8DE0
+ ldrb r0, [r1, #0x5]
+ cmp r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E8DE0:
+ ldrb r2, [r1, #0x5]
+ cmp r2, #0x0
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ ldrsh r3, [r1, #0x2]
+ ldrsh r2, [r0, #0x2]
+ cmp r2, r3
+ bne _020E8E90
+ ldrb r5, [r0, #0x4]
+ ldrb r4, [r1, #0x4]
+ mov r12, #0x0
+ mov lr, r5
+ cmp r5, r4
+ movgt lr, r4
+ cmp lr, #0x0
+ ble _020E8E54
+_020E8E20:
+ add r3, r1, r12
+ add r2, r0, r12
+ ldrb r3, [r3, #0x5]
+ ldrb r2, [r2, #0x5]
+ cmp r2, r3
+ movcc r0, #0x1
+ ldmccia sp!, {r3-r5,pc}
+ cmp r3, r2
+ movcc r0, #0x0
+ ldmccia sp!, {r3-r5,pc}
+ add r12, r12, #0x1
+ cmp r12, lr
+ blt _020E8E20
+_020E8E54:
+ cmp lr, r5
+ bne _020E8E88
+ cmp r12, r4
+ bge _020E8E88
+_020E8E64:
+ add r0, r1, r12
+ ldrb r0, [r0, #0x5]
+ cmp r0, #0x0
+ movne r0, #0x1
+ ldmneia sp!, {r3-r5,pc}
+ ldrb r0, [r1, #0x4]
+ add r12, r12, #0x1
+ cmp r12, r0
+ blt _020E8E64
+_020E8E88:
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+_020E8E90:
+ movlt r0, #0x1
+ movge r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __less_dec
+
+ arm_func_start __minus_dec
+__minus_dec: ; 0x020E8E9C
+ stmdb sp!, {r3-r7,lr}
+ mov r6, r0
+ mov r5, #0x9
+_020E8EA8:
+ ldrh r4, [r1, #0x0]
+ ldrh r3, [r1, #0x2]
+ add r1, r1, #0x4
+ subs r5, r5, #0x1
+ strh r4, [r6, #0x0]
+ strh r3, [r6, #0x2]
+ add r6, r6, #0x4
+ bne _020E8EA8
+ ldrh r1, [r1, #0x0]
+ strh r1, [r6, #0x0]
+ ldrb r1, [r2, #0x5]
+ cmp r1, #0x0
+ ldmeqia sp!, {r3-r7,pc}
+ ldrb r7, [r0, #0x4]
+ ldrb r3, [r2, #0x4]
+ ldrsh r4, [r0, #0x2]
+ mov r1, r7
+ cmp r7, r3
+ movlt r1, r3
+ ldrsh r3, [r2, #0x2]
+ sub r6, r4, r3
+ add r1, r1, r6
+ cmp r1, #0x20
+ movgt r1, #0x20
+ cmp r7, r1
+ bge _020E8F34
+ mov r4, #0x0
+_020E8F14:
+ ldrb r5, [r0, #0x4]
+ add r3, r0, r7
+ add r5, r5, #0x1
+ strb r5, [r0, #0x4]
+ strb r4, [r3, #0x5]
+ ldrb r7, [r0, #0x4]
+ cmp r7, r1
+ blt _020E8F14
+_020E8F34:
+ ldrb r4, [r2, #0x4]
+ add r3, r0, #0x5
+ add r12, r3, r1
+ add r4, r4, r6
+ cmp r4, r1
+ addlt r12, r3, r4
+ sub r4, r12, r3
+ add r1, r2, #0x5
+ sub r4, r4, r6
+ add lr, r1, r4
+ mov r4, lr
+ b _020E8FC8
+_020E8F64:
+ ldrb r7, [r12, #-0x1]!
+ ldrb r5, [lr, #-0x1]!
+ cmp r7, r5
+ bhs _020E8FB8
+ ldrb r7, [r12, #-0x1]
+ sub r5, r12, #0x1
+ cmp r7, #0x0
+ bne _020E8F90
+_020E8F84:
+ ldrb r7, [r5, #-0x1]!
+ cmp r7, #0x0
+ beq _020E8F84
+_020E8F90:
+ cmp r5, r12
+ beq _020E8FB8
+_020E8F98:
+ ldrb r7, [r5, #0x0]
+ sub r7, r7, #0x1
+ strb r7, [r5, #0x0]
+ ldrb r7, [r5, #0x1]!
+ cmp r5, r12
+ add r7, r7, #0xa
+ strb r7, [r5, #0x0]
+ bne _020E8F98
+_020E8FB8:
+ ldrb r7, [r12, #0x0]
+ ldrb r5, [lr, #0x0]
+ sub r5, r7, r5
+ strb r5, [r12, #0x0]
+_020E8FC8:
+ cmp r12, r3
+ cmphi lr, r1
+ bhi _020E8F64
+ ldrb r5, [r2, #0x4]
+ sub lr, r4, r1
+ cmp lr, r5
+ bge _020E90A4
+ ldrb r1, [r4, #0x0]
+ mov r7, #0x0
+ cmp r1, #0x5
+ movcc r7, #0x1
+ blo _020E9040
+ bne _020E9040
+ add r1, r2, #0x5
+ add r2, r1, r5
+ add r4, r4, #0x1
+ cmp r4, r2
+ bhs _020E9028
+_020E9010:
+ ldrb r1, [r4, #0x0]
+ cmp r1, #0x0
+ bne _020E90A4
+ add r4, r4, #0x1
+ cmp r4, r2
+ blo _020E9010
+_020E9028:
+ add r1, r3, lr
+ add r2, r1, r6
+ ldrb r1, [r2, #-0x1]
+ sub r12, r2, #0x1
+ tst r1, #0x1
+ movne r7, #0x1
+_020E9040:
+ cmp r7, #0x0
+ beq _020E90A4
+ ldrb r1, [r12, #0x0]
+ cmp r1, #0x1
+ bhs _020E9098
+ ldrb r1, [r12, #-0x1]
+ sub r2, r12, #0x1
+ cmp r1, #0x0
+ bne _020E9070
+_020E9064:
+ ldrb r1, [r2, #-0x1]!
+ cmp r1, #0x0
+ beq _020E9064
+_020E9070:
+ cmp r2, r12
+ beq _020E9098
+_020E9078:
+ ldrb r1, [r2, #0x0]
+ sub r1, r1, #0x1
+ strb r1, [r2, #0x0]
+ ldrb r1, [r2, #0x1]!
+ cmp r2, r12
+ add r1, r1, #0xa
+ strb r1, [r2, #0x0]
+ bne _020E9078
+_020E9098:
+ ldrb r1, [r12, #0x0]
+ sub r1, r1, #0x1
+ strb r1, [r12, #0x0]
+_020E90A4:
+ ldrb r1, [r3, #0x0]
+ mov r5, r3
+ cmp r1, #0x0
+ bne _020E90C0
+_020E90B4:
+ ldrb r1, [r5, #0x1]!
+ cmp r1, #0x0
+ beq _020E90B4
+_020E90C0:
+ cmp r5, r3
+ bls _020E9108
+ ldrsh r1, [r0, #0x2]
+ sub r2, r5, r3
+ and r4, r2, #0xff
+ sub r1, r1, r4
+ strh r1, [r0, #0x2]
+ ldrb r1, [r0, #0x4]
+ add r2, r3, r1
+ cmp r5, r2
+ bhs _020E90FC
+_020E90EC:
+ ldrb r1, [r5], #0x1
+ cmp r5, r2
+ strb r1, [r3], #0x1
+ blo _020E90EC
+_020E90FC:
+ ldrb r1, [r0, #0x4]
+ sub r1, r1, r4
+ strb r1, [r0, #0x4]
+_020E9108:
+ ldrb r1, [r0, #0x4]
+ add r2, r0, #0x5
+ add r3, r2, r1
+ cmp r3, r2
+ bls _020E9130
+_020E911C:
+ ldrb r1, [r3, #-0x1]!
+ cmp r1, #0x0
+ bne _020E9130
+ cmp r3, r2
+ bhi _020E911C
+_020E9130:
+ sub r1, r3, r2
+ add r1, r1, #0x1
+ strb r1, [r0, #0x4]
+ ldmia sp!, {r3-r7,pc}
+ arm_func_end __minus_dec
+
+ arm_func_start __num2dec_internal
+__num2dec_internal:
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0x58
+ mov r8, r1
+ mov r6, r2
+ mov r7, r0
+ mov r0, r8
+ mov r1, r6
+ bl __signbitf
+ cmp r0, #0x0
+ movne r1, #0x1
+ moveq r1, #0x0
+ mov r4, r1, lsl #0x18
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r8
+ mov r3, r6
+ mov r5, r4, asr #0x18
+ bl _deq
+ bne _020E91AC
+ strb r5, [r7, #0x0]
+ mov r1, #0x0
+ strh r1, [r7, #0x2]
+ mov r0, #0x1
+ strb r0, [r7, #0x4]
+ add sp, sp, #0x58
+ strb r1, [r7, #0x5]
+ ldmia sp!, {r4-r8,pc}
+_020E91AC:
+ mov r0, r8
+ mov r1, r6
+ bl __fpclassifyf
+ cmp r0, #0x2
+ bgt _020E91F8
+ strb r5, [r7, #0x0]
+ mov r2, #0x0
+ strh r2, [r7, #0x2]
+ mov r2, #0x1
+ mov r0, r8
+ mov r1, r6
+ strb r2, [r7, #0x4]
+ bl __fpclassifyf
+ cmp r0, #0x1
+ moveq r0, #0x4e
+ movne r0, #0x49
+ add sp, sp, #0x58
+ strb r0, [r7, #0x5]
+ ldmia sp!, {r4-r8,pc}
+_020E91F8:
+ cmp r5, #0x0
+ beq _020E921C
+ mov r0, #0x0
+ mov r1, r0
+ mov r2, r8
+ mov r3, r6
+ bl _dsub
+ mov r8, r0
+ mov r6, r1
+_020E921C:
+ add r2, sp, #0x8
+ mov r0, r8
+ mov r1, r6
+ bl frexp
+ mov r4, r0
+ mov r6, r1
+ orr r12, r4, #0x0
+ rsbs r2, r12, #0x0
+ orr r3, r6, #0x100000
+ rsc r1, r3, #0x0
+ mov r0, #0x0
+ and r3, r3, r1
+ sub r1, r0, #0x1
+ and r12, r12, r2
+ mov r2, r1
+ adds r0, r12, r1
+ adc r1, r3, r2
+ str r4, [sp, #0x0]
+ str r6, [sp, #0x4]
+ bl __msl_generic_count_bits64
+ rsb r8, r0, #0x35
+ ldr r1, [sp, #0x8]
+ add r0, sp, #0xc
+ sub r1, r1, r8
+ bl __two_exp
+ mov r0, r4
+ mov r1, r6
+ mov r2, r8
+ bl ldexp
+ bl _ll_ufrom_d
+ mov r2, r1
+ mov r1, r0
+ add r0, sp, #0x32
+ bl __ull2dec
+ mov r0, r7
+ add r1, sp, #0x32
+ add r2, sp, #0xc
+ bl __timesdec
+ strb r5, [r7, #0x0]
+ add sp, sp, #0x58
+ ldmia sp!, {r4-r8,pc}
+ arm_func_end __num2dec_internal
+
+ arm_func_start __num2dec_internal2
+__num2dec_internal2: ; 0x020E92C0
+ stmdb sp!, {r3-r5,lr}
+ mov r4, r3
+ ldrsh r5, [r0, #0x2]
+ mov r0, r4
+ bl __num2dec_internal
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x9
+ ldmhiia sp!, {r3-r5,pc}
+ cmp r5, #0x20
+ movgt r5, #0x20
+ mov r0, r4
+ mov r1, r5
+ bl __rounddec
+ ldrb r0, [r4, #0x4]
+ cmp r0, r5
+ bge _020E9324
+ mov r1, #0x0
+_020E9304:
+ ldrb r2, [r4, #0x4]
+ add r0, r4, r0
+ add r2, r2, #0x1
+ strb r2, [r4, #0x4]
+ strb r1, [r0, #0x5]
+ ldrb r0, [r4, #0x4]
+ cmp r0, r5
+ blt _020E9304
+_020E9324:
+ ldrsh r1, [r4, #0x2]
+ sub r0, r0, #0x1
+ mov r2, #0x0
+ sub r0, r1, r0
+ strh r0, [r4, #0x2]
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x0
+ ldmleia sp!, {r3-r5,pc}
+_020E9344:
+ add r1, r4, r2
+ ldrb r0, [r1, #0x5]
+ add r2, r2, #0x1
+ add r0, r0, #0x30
+ strb r0, [r1, #0x5]
+ ldrb r0, [r4, #0x4]
+ cmp r2, r0
+ blt _020E9344
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __num2dec_internal2
+
+ arm_func_start __dec2num
+__dec2num: ; 0x020E9368
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0xfc
+ mov r4, r0
+ ldrb r0, [r4, #0x4]
+ cmp r0, #0x0
+ bne _020E93A8
+ ldrsb r0, [r4, #0x0]
+ mov r2, #0x0
+ cmp r0, #0x0
+ ldreq r3, _020E996C ; =0x3FF00000
+ mov r0, #0x0
+ ldrne r3, _020E9970 ; =0xBFF00000
+ mov r1, r0
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E93A8:
+ ldrb r0, [r4, #0x5]
+ cmp r0, #0x30
+ beq _020E93C8
+ cmp r0, #0x49
+ beq _020E93F0
+ cmp r0, #0x4e
+ beq _020E9424
+ b _020E946C
+_020E93C8:
+ ldrsb r0, [r4, #0x0]
+ mov r2, #0x0
+ cmp r0, #0x0
+ ldreq r3, _020E996C ; =0x3FF00000
+ mov r0, #0x0
+ ldrne r3, _020E9970 ; =0xBFF00000
+ mov r1, r0
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E93F0:
+ ldrsb r0, [r4, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldreq r4, _020E996C ; =0x3FF00000
+ ldr r0, _020E9974 ; =__float_huge
+ ldrne r4, _020E9970 ; =0xBFF00000
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ mov r2, r5
+ mov r3, r4
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E9424:
+ ldr r1, _020E9978 ; =0x7FF00000
+ add r3, sp, #0x10
+ mov r2, #0x0
+ str r2, [r3, #0x0]
+ str r1, [r3, #0x4]
+ ldrsb r0, [r4, #0x0]
+ cmp r0, #0x0
+ beq _020E9454
+ orr r0, r1, #0x80000000
+ orr r1, r2, r2
+ str r1, [r3, #0x0]
+ str r0, [r3, #0x4]
+_020E9454:
+ ldmia r3, {r0-r1}
+ orr r0, r0, #0x0
+ orr r1, r1, #0x80000
+ stmia r3, {r0-r1}
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E946C:
+ add r3, sp, #0xd6
+ mov r5, r4
+ mov r2, #0x9
+_020E9478:
+ ldrh r1, [r5, #0x0]
+ ldrh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ bne _020E9478
+ ldrh r0, [r5, #0x0]
+ add r1, sp, #0xdb
+ strh r0, [r3, #0x0]
+ ldrb r0, [sp, #0xda]
+ add r5, r1, r0
+ cmp r1, r5
+ bhs _020E94C8
+_020E94B4:
+ ldrb r0, [r1, #0x0]
+ sub r0, r0, #0x30
+ strb r0, [r1], #0x1
+ cmp r1, r5
+ blo _020E94B4
+_020E94C8:
+ ldrb r1, [sp, #0xda]
+ ldrsh r2, [sp, #0xd8]
+ add r0, sp, #0xb0
+ sub r1, r1, #0x1
+ add r1, r2, r1
+ strh r1, [sp, #0xd8]
+ ldr r1, _020E997C ; =UNK_02106F5C
+ mov r2, #0x134
+ ldrsh r11, [sp, #0xd8]
+ bl __str2dec
+ add r0, sp, #0xb0
+ add r1, sp, #0xd6
+ bl __less_dec
+ cmp r0, #0x0
+ beq _020E9538
+ ldrsb r0, [r4, #0x0]
+ mov r5, #0x0
+ cmp r0, #0x0
+ ldreq r4, _020E996C ; =0x3FF00000
+ ldr r0, _020E9974 ; =__float_huge
+ ldrne r4, _020E9970 ; =0xBFF00000
+ ldr r0, [r0, #0x0]
+ bl _f2d
+ mov r2, r5
+ mov r3, r4
+ bl copysign
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+_020E9538:
+ add r1, sp, #0xdb
+ ldrb r0, [r1, #0x0]
+ add r8, r1, #0x1
+ bl _dfltu
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ cmp r8, r5
+ bhs _020E9610
+_020E9558:
+ sub r0, r5, r8
+ mov r1, r0, lsr #0x1f
+ rsb r0, r1, r0, lsl #0x1d
+ adds r7, r1, r0, ror #0x1d
+ moveq r7, #0x8
+ mov r6, #0x0
+ mov r2, #0x0
+ cmp r7, #0x0
+ ble _020E9594
+ mov r0, #0xa
+_020E9580:
+ ldrb r1, [r8], #0x1
+ add r2, r2, #0x1
+ cmp r2, r7
+ mla r6, r0, r6, r1
+ blt _020E9580
+_020E9594:
+ ldr r0, _020E9980 ; =UNK_02106E48
+ ldr r1, [sp, #0xc]
+ add r3, r0, r7, lsl #0x3
+ ldr r2, [r3, #-0x8]
+ ldr r0, [sp, #0x8]
+ ldr r3, [r3, #-0x4]
+ bl _dmul
+ mov r4, r0
+ mov r9, r1
+ mov r0, r6
+ bl _dfltu
+ mov r2, r0
+ mov r3, r1
+ mov r0, r4
+ mov r1, r9
+ bl _dadd
+ cmp r6, #0x0
+ mov r6, r0
+ mov r10, r1
+ beq _020E95FC
+ mov r0, r4
+ mov r1, r9
+ mov r2, r6
+ mov r3, r10
+ bl _deq
+ beq _020E9610
+_020E95FC:
+ str r6, [sp, #0x8]
+ str r10, [sp, #0xc]
+ cmp r8, r5
+ sub r11, r11, r7
+ blo _020E9558
+_020E9610:
+ cmp r11, #0x0
+ bge _020E9654
+ rsb r0, r11, #0x0
+ bl _dflt
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E9984 ; =0x40140000
+ mov r0, #0x0
+ bl pow
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ bl _ddiv
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ b _020E968C
+_020E9654:
+ mov r0, r11
+ bl _dflt
+ mov r3, r1
+ mov r2, r0
+ ldr r1, _020E9984 ; =0x40140000
+ mov r0, #0x0
+ bl pow
+ mov r2, r0
+ mov r3, r1
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ bl _dmul
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+_020E968C:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ mov r2, r11
+ bl ldexp
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+ bl __fpclassifyf
+ cmp r0, #0x2
+ bne _020E96C0
+ ldr r0, _020E9988 ; =0x7FEFFFFF
+ mvn r1, #0x0
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+_020E96C0:
+ ldr r1, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ add r0, sp, #0x8a
+ add r4, sp, #0x0
+ mov r5, #0x0
+ bl __num2dec_internal
+ add r0, sp, #0x8a
+ add r1, sp, #0xd6
+ bl __equals_dec
+ cmp r0, #0x0
+ bne _020E9934
+ add r0, sp, #0x8a
+ add r1, sp, #0xd6
+ bl __less_dec
+ cmp r0, #0x0
+ movne r5, #0x1
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ cmp r5, #0x0
+ moveq r6, #0x1
+ str r1, [sp, #0x0]
+ str r0, [sp, #0x4]
+ movne r6, #0x0
+_020E971C:
+ cmp r6, #0x0
+ bne _020E9744
+ ldmia r4, {r0-r1}
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ stmia r4, {r0-r1}
+ bl __fpclassifyf
+ cmp r0, #0x2
+ beq _020E9934
+ b _020E975C
+_020E9744:
+ ldr r1, [r4, #0x0]
+ ldr r0, [r4, #0x4]
+ subs r1, r1, #0x1
+ sbc r0, r0, #0x0
+ str r1, [r4, #0x0]
+ str r0, [r4, #0x4]
+_020E975C:
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0x4]
+ add r0, sp, #0x64
+ bl __num2dec_internal
+ cmp r5, #0x0
+ beq _020E9788
+ add r0, sp, #0x64
+ add r1, sp, #0xd6
+ bl __less_dec
+ cmp r0, #0x0
+ beq _020E98AC
+_020E9788:
+ cmp r5, #0x0
+ bne _020E9864
+ add r0, sp, #0xd6
+ add r1, sp, #0x64
+ bl __less_dec
+ cmp r0, #0x0
+ bne _020E9864
+ add r3, sp, #0x8a
+ add r5, sp, #0x3e
+ mov r2, #0x9
+_020E97B0:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r5, #0x0]
+ strh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ bne _020E97B0
+ ldrh r0, [r3, #0x0]
+ add r3, sp, #0x64
+ add r4, sp, #0x8a
+ strh r0, [r5, #0x0]
+ mov r2, #0x9
+_020E97E4:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r4, #0x0]
+ strh r0, [r4, #0x2]
+ add r4, r4, #0x4
+ subs r2, r2, #0x1
+ bne _020E97E4
+ ldrh r0, [r3, #0x0]
+ add r3, sp, #0x3e
+ add r5, sp, #0x64
+ strh r0, [r4, #0x0]
+ mov r2, #0x9
+_020E9818:
+ ldrh r1, [r3, #0x0]
+ ldrh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ strh r1, [r5, #0x0]
+ strh r0, [r5, #0x2]
+ add r5, r5, #0x4
+ subs r2, r2, #0x1
+ bne _020E9818
+ ldrh r4, [r3, #0x0]
+ ldr r3, [sp, #0x8]
+ ldr r1, [sp, #0x0]
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp, #0x4]
+ strh r4, [r5, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x0]
+ str r2, [sp, #0x4]
+ b _020E98AC
+_020E9864:
+ add r7, sp, #0x64
+ add r3, sp, #0x8a
+ mov r2, #0x9
+_020E9870:
+ ldrh r1, [r7, #0x0]
+ ldrh r0, [r7, #0x2]
+ add r7, r7, #0x4
+ strh r1, [r3, #0x0]
+ strh r0, [r3, #0x2]
+ add r3, r3, #0x4
+ subs r2, r2, #0x1
+ bne _020E9870
+ ldrh r2, [r7, #0x0]
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ strh r2, [r3, #0x0]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ b _020E971C
+_020E98AC:
+ add r0, sp, #0x3e
+ add r1, sp, #0xd6
+ add r2, sp, #0x8a
+ bl __minus_dec
+ add r0, sp, #0x18
+ add r1, sp, #0x64
+ add r2, sp, #0xd6
+ bl __minus_dec
+ add r0, sp, #0x3e
+ add r1, sp, #0x18
+ bl __equals_dec
+ cmp r0, #0x0
+ beq _020E9910
+ ldr r1, [sp, #0x8]
+ ldr r0, [sp, #0xc]
+ and r1, r1, #0x1
+ and r0, r0, #0x0
+ cmp r0, #0x0
+ cmpeq r1, #0x0
+ beq _020E9934
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+ b _020E9934
+_020E9910:
+ add r0, sp, #0x3e
+ add r1, sp, #0x18
+ bl __less_dec
+ cmp r0, #0x0
+ bne _020E9934
+ ldr r1, [sp, #0x0]
+ ldr r0, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r0, [sp, #0xc]
+_020E9934:
+ ldrsb r0, [sp, #0xd6]
+ cmp r0, #0x0
+ beq _020E995C
+ mov r0, #0x0
+ ldr r2, [sp, #0x8]
+ ldr r3, [sp, #0xc]
+ mov r1, r0
+ bl _dsub
+ str r0, [sp, #0x8]
+ str r1, [sp, #0xc]
+_020E995C:
+ ldr r0, [sp, #0x8]
+ ldr r1, [sp, #0xc]
+ add sp, sp, #0xfc
+ ldmia sp!, {r4-r11,pc}
+ .balign 4
+_020E996C: .word 0x3FF00000
+_020E9970: .word 0xBFF00000
+_020E9974: .word __float_huge
+_020E9978: .word 0x7FF00000
+_020E997C: .word UNK_02106F5C
+_020E9980: .word UNK_02106E48
+_020E9984: .word 0x40140000
+_020E9988: .word 0x7FEFFFFF
+ arm_func_end __dec2num
+
+ .section .exception,8
+
+ .global UNK_020EC740
+UNK_020EC740: ; 0x020EC740
+ .byte 0x00, 0xFF, 0x05, 0x20
+ .balign 8
+
+ .section .exceptix,4
+
+ .word __rounddec
+ .short 65
+ .word 0x00200300
+ .word __ull2dec
+ .short 205
+ .word 0x0050FF00
+ .word __timesdec
+ .short 389
+ .word 0x00D0FF00
+ .word __str2dec
+ .short 157
+ .word 0x00100000
+ .word __two_exp
+ .short 901
+ .word 0x00B00300
+ .word __num2dec_internal
+ .short 385
+ .word 0x00E01F00
+ .word __num2dec_internal2
+ .short 169
+ .word 0x00200300
+ .word __dec2num
+ .short 1572
+ .word UNK_020EC740
diff --git a/arm9/asm/MSL_math.s b/arm9/asm/MSL_math.s
new file mode 100644
index 00000000..260034e5
--- /dev/null
+++ b/arm9/asm/MSL_math.s
@@ -0,0 +1,110 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .text
+
+ arm_func_start __msl_generic_count_bits64
+__msl_generic_count_bits64: ; 0x020E998C
+ mov r3, r0, lsr #0x1
+ ldr r2, _020E9A14 ; =0x55555555
+ orr r3, r3, r1, lsl #0x1f
+ and r3, r3, r2
+ subs r12, r0, r3
+ and r2, r2, r1, lsr #0x1
+ ldr r0, _020E9A18 ; =0x33333333
+ sbc r3, r1, r2
+ mov r1, r12, lsr #0x2
+ orr r1, r1, r3, lsl #0x1e
+ and r2, r12, r0
+ and r1, r1, r0
+ adds r2, r2, r1
+ and r1, r3, r0
+ and r0, r0, r3, lsr #0x2
+ adc r1, r1, r0
+ mov r0, r2, lsr #0x4
+ orr r0, r0, r1, lsl #0x1c
+ adds r2, r2, r0
+ ldr r0, _020E9A1C ; =0x0F0F0F0F
+ adc r1, r1, r1, lsr #0x4
+ and r3, r2, r0
+ and r2, r1, r0
+ mov r0, r3, lsr #0x8
+ orr r0, r0, r2, lsl #0x18
+ adds r1, r3, r0
+ adc r2, r2, r2, lsr #0x8
+ mov r0, r1, lsr #0x10
+ orr r0, r0, r2, lsl #0x10
+ adds r1, r1, r0
+ adc r0, r2, r2, lsr #0x10
+ adds r0, r1, r0
+ and r0, r0, #0xff
+ bx lr
+ .balign 4
+_020E9A14: .word 0x55555555
+_020E9A18: .word 0x33333333
+_020E9A1C: .word 0x0F0F0F0F
+ arm_func_end __msl_generic_count_bits64
+
+ arm_func_start __signbitf
+__signbitf:
+ stmdb sp!, {r0-r3}
+ ldr r0, [sp, #0x4]
+ and r0, r0, #0x80000000
+ add sp, sp, #0x10
+ bx lr
+ arm_func_end __signbitf
+
+ arm_func_start __fpclassifyf
+__fpclassifyf: ; 0x020E9A34
+ stmdb sp!, {r0-r3}
+ ldr r2, [sp, #0x4]
+ ldr r0, _020E9A9C ; =0x7FF00000
+ ands r1, r2, r0
+ beq _020E9A70
+ cmp r1, r0
+ bne _020E9A90
+ ldr r0, _020E9AA0 ; =0x000FFFFF
+ tst r2, r0
+ ldreq r0, [sp, #0x0]
+ add sp, sp, #0x10
+ cmpeq r0, #0x0
+ movne r0, #0x1
+ moveq r0, #0x2
+ bx lr
+_020E9A70:
+ ldr r0, _020E9AA0 ; =0x000FFFFF
+ tst r2, r0
+ ldreq r0, [sp, #0x0]
+ add sp, sp, #0x10
+ cmpeq r0, #0x0
+ movne r0, #0x5
+ moveq r0, #0x3
+ bx lr
+_020E9A90:
+ mov r0, #0x4
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020E9A9C: .word 0x7FF00000
+_020E9AA0: .word 0x000FFFFF
+ arm_func_end __fpclassifyf
+
+ arm_func_start scalbn
+scalbn: ; 0x020E9AA4
+ stmdb sp!, {r3-r4,lr}
+ sub sp, sp, #0x4
+ mov r4, r2
+ add r2, sp, #0x0
+ bl frexp
+ ldr r2, [sp, #0x0]
+ add r2, r2, r4
+ str r2, [sp, #0x0]
+ bl ldexp
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r4,pc}
+ arm_func_end scalbn
+
+ .section .exceptix,4
+ .word scalbn
+ .short 45
+ .word 0x00200100
diff --git a/arm9/asm/MSL_string_extras.s b/arm9/asm/MSL_string_extras.s
new file mode 100644
index 00000000..c3b09fe9
--- /dev/null
+++ b/arm9/asm/MSL_string_extras.s
@@ -0,0 +1,46 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start stricmp
+stricmp: ; 0x020E9AD0
+ stmdb sp!, {r3,lr}
+ ldr r3, _020E9B34 ; =__lower_mapC
+_020E9AD8:
+ ldrb r2, [r0], #0x1
+ cmp r2, #0x0
+ blt _020E9AF0
+ cmp r2, #0x80
+ bge _020E9AF0
+ ldrb r2, [r3, r2]
+_020E9AF0:
+ ldrb lr, [r1], #0x1
+ and r12, r2, #0xff
+ cmp lr, #0x0
+ blt _020E9B0C
+ cmp lr, #0x80
+ bge _020E9B0C
+ ldrb lr, [r3, lr]
+_020E9B0C:
+ and r2, lr, #0xff
+ cmp r12, r2
+ mvncc r0, #0x0
+ ldmccia sp!, {r3,pc}
+ movhi r0, #0x1
+ ldmhiia sp!, {r3,pc}
+ cmp r12, #0x0
+ bne _020E9AD8
+ mov r0, #0x0
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020E9B34: .word __lower_mapC
+ arm_func_end stricmp
+
+ arm_func_start strnicmp
+strnicmp: ; 0x020E9B38
+ ldr ip, _020E9B40 ; =stricmp
+ bx r12
+ .balign 4
+_020E9B40: .word stricmp
+ arm_func_end strnicmp
diff --git a/arm9/asm/NNS_SND_sndarc_stream.s b/arm9/asm/NNS_SND_sndarc_stream.s
index 1962bdcc..9ae2274f 100644
--- a/arm9/asm/NNS_SND_sndarc_stream.s
+++ b/arm9/asm/NNS_SND_sndarc_stream.s
@@ -10,8 +10,8 @@ sPrepareThread: ; 0x021D2900
.global sFreeCommandList
sFreeCommandList: ; 0x021D2904
.space 0xC
- ; sStrmThread
- .global sStrmThread
+ ; sStrmThread
+ .global sStrmThread
sStrmThread: ; 0x021D2910
.space 0x4EC
diff --git a/arm9/asm/RTC_external.s b/arm9/asm/RTC_external.s
index 91605f14..f5124044 100644
--- a/arm9/asm/RTC_external.s
+++ b/arm9/asm/RTC_external.s
@@ -11,7 +11,7 @@ UNK_021D5534: ; 0x021D5534
UNK_021D5538: ; 0x021D5538
.space 0x24
- .text
+ .text
arm_func_start RtcWaitBusy
RtcWaitBusy: ; 0x020D5914
diff --git a/arm9/asm/RUNTIME_ARM_semihosted_console_io.s b/arm9/asm/RUNTIME_ARM_semihosted_console_io.s
new file mode 100644
index 00000000..7bd44bdb
--- /dev/null
+++ b/arm9/asm/RUNTIME_ARM_semihosted_console_io.s
@@ -0,0 +1,84 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start sys_writec
+sys_writec: ; 0x020EC5D0
+ str lr, [sp, #-0x4]!
+ mov r1, r0
+ mov r0, #0x3
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_readc
+sys_readc: ; 0x020EC5E4
+ str lr, [sp, #-0x4]!
+ mov r1, #0x0
+ mov r0, #0x7
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_exit
+sys_exit: ; 0x020EC5F8
+ mov r1, #0x0
+ mov r0, #0x18
+ swi 0x123456
+ mov pc, lr
+
+ arm_func_start __read_console
+__read_console: ; 0x020EC608
+ stmdb sp!, {r3-r7,lr}
+ mov r6, r2
+ ldr r5, [r6, #0x0]
+ mov r7, r1
+ cmp r5, #0x0
+ mov r4, #0x0
+ bls _020EC650
+_020EC624:
+ bl sys_readc
+ and r1, r0, #0xff
+ cmp r1, #0xd
+ strb r0, [r7, r4]
+ cmpne r1, #0xa
+ addeq r0, r4, #0x1
+ streq r0, [r6, #0x0]
+ beq _020EC650
+ add r4, r4, #0x1
+ cmp r4, r5
+ blo _020EC624
+_020EC650:
+ mov r0, #0x0
+ ldmia sp!, {r3-r7,pc}
+
+ arm_func_start __write_console
+__write_console: ; 0x020EC658
+ stmdb sp!, {r4-r6,lr}
+ ldr r5, [r2, #0x0]
+ mov r6, r1
+ cmp r5, #0x0
+ mov r4, #0x0
+ bls _020EC684
+_020EC670:
+ add r0, r6, r4
+ bl sys_writec
+ add r4, r4, #0x1
+ cmp r4, r5
+ blo _020EC670
+_020EC684:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+
+ arm_func_start __close_console
+__close_console: ; 0x020EC68C
+ mov r0, #0x0
+ bx lr
+
+ .section .exceptix,4
+
+ .word __read_console
+ .short 81
+ .word 0x00300F00
+ .word __write_console
+ .short 53
+ .word 0x00200700 \ No newline at end of file
diff --git a/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s b/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s
new file mode 100644
index 00000000..c1446521
--- /dev/null
+++ b/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s
@@ -0,0 +1,60 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global __global_destructor_chain
+__global_destructor_chain: ; 0x021D74C8
+ .space 0xC
+
+ .text
+
+ .extern __sinit__
+ arm_func_start __call_static_initializers
+__call_static_initializers: ; 0x020EC694
+ stmdb sp!, {r4,lr}
+ ldr r4, _020EC6BC ; =__sinit__
+ b _020EC6A8
+_020EC6A0:
+ blx r0
+ add r4, r4, #0x4
+_020EC6A8:
+ cmp r4, #0x0
+ ldrne r0, [r4, #0x0]
+ cmpne r0, #0x0
+ bne _020EC6A0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020EC6BC: .word __sinit__
+
+ arm_func_start __destroy_global_chain
+__destroy_global_chain: ; 0x020EC6C0
+ stmdb sp!, {r3-r5,lr}
+ ldr r4, _020EC700 ; =__global_destructor_chain
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020EC6D4: ; 0x020EC6D4
+ mvn r5, #0x0
+_020EC6D8:
+ ldr r0, [r2, #0x0]
+ mov r1, r5
+ str r0, [r4, #0x0]
+ ldr r0, [r2, #0x8]
+ ldr r2, [r2, #0x4]
+ blx r2
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ bne _020EC6D8
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020EC700: .word __global_destructor_chain
+
+ .section .exceptix,4
+
+ .word __call_static_initializers
+ .short 45
+ .word 0x00100100
+ .word __destroy_global_chain
+ .short 69
+ .word 0x00200300
diff --git a/arm9/asm/RUNTIME_NITRO_eabi_init.s b/arm9/asm/RUNTIME_NITRO_eabi_init.s
new file mode 100644
index 00000000..1bd26818
--- /dev/null
+++ b/arm9/asm/RUNTIME_NITRO_eabi_init.s
@@ -0,0 +1,17 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ExitProcess
+_ExitProcess: ; 0x020EC704
+ ldr ip, _020EC70C ; =sys_exit
+ bx r12
+ .balign 4
+_020EC70C: .word sys_exit
+
+ .section .exceptix,4
+
+ .word _ExitProcess
+ .short 13
+ .word 0x00000000
diff --git a/arm9/asm/RUNTIME_d_add.s b/arm9/asm/RUNTIME_d_add.s
new file mode 100644
index 00000000..3d2e24b1
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_add.s
@@ -0,0 +1,231 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .extern __dsub_start
+
+ .text
+
+ arm_func_start _dadd
+_dadd:
+ stmdb sp!, {r4,lr}
+ eors r12, r1, r3
+ eormi r3, r3, #0x80000000
+ bmi __dsub_start
+ .global __dadd_start
+__dadd_start:
+ subs r12, r0, r2
+ sbcs lr, r1, r3
+ bhs _020E9B70
+ adds r2, r2, r12
+ adc r3, r3, lr
+ subs r0, r0, r12
+ sbc r1, r1, lr
+_020E9B70:
+ mov lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ orr r1, lr, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r4, r12, lsl #0x15
+ cmnne r4, #0x200000
+ beq _020E9C6C
+ mov r4, r3, lsr #0x14
+ orr r3, lr, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs lr, r4, lsl #0x15
+ beq _020E9CB4
+_020E9BA8:
+ subs r4, r12, r4
+ beq _020E9C00
+ cmp r4, #0x20
+ ble _020E9BE4
+ cmp r4, #0x38
+ movge r4, #0x3f
+ sub r4, r4, #0x20
+ rsb lr, r4, #0x20
+ orrs lr, r2, r3, lsl lr
+ mov r2, r3, lsr r4
+ orrne r2, r2, #0x1
+ adds r0, r0, r2
+ adcs r1, r1, #0x0
+ blo _020E9C28
+ b _020E9C0C
+_020E9BE4:
+ rsb lr, r4, #0x20
+ movs lr, r2, lsl lr
+ rsb lr, r4, #0x20
+ mov r2, r2, lsr r4
+ orr r2, r2, r3, lsl lr
+ mov r3, r3, lsr r4
+ orrne r2, r2, #0x1
+_020E9C00:
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ blo _020E9C28
+_020E9C0C:
+ add r12, r12, #0x1
+ and r4, r0, #0x1
+ movs r1, r1, rrx
+ orr r0, r4, r0, rrx
+ mov lr, r12, lsl #0x15
+ cmn lr, #0x200000
+ beq _020E9E38
+_020E9C28:
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9C6C:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bics r12, r12, #0x800
+ beq _020E9CD8
+ orrs r4, r0, r1, lsl #0x1
+ bne _020E9E14
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ beq _020E9E00
+ cmn r4, #0x200000
+ bne _020E9E00
+ orrs r4, r2, r3, lsl #0x1
+ beq _020E9E00
+ b _020E9E14
+_020E9CB4:
+ cmp r4, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bic r12, r12, #0x800
+ bics r4, r4, #0x800
+ beq _020E9D44
+ orrs r4, r2, r3, lsl #0x1
+ bne _020E9E14
+ b _020E9E00
+_020E9CD8:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020E9D18
+ mov r12, #0x1
+ bic r1, r1, #0x80000000
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ cmnne r4, #0x200000
+ mov r4, r4, lsr #0x15
+ orr r4, r4, lr, lsr #0x14
+ beq _020E9CB4
+ orr r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ b _020E9BA8
+_020E9D18:
+ mov r12, r3, lsr #0x14
+ mov r1, r3, lsl #0xb
+ orr r1, r1, r2, lsr #0x15
+ mov r0, r2, lsl #0xb
+ movs r4, r12, lsl #0x15
+ beq _020E9DCC
+ cmn r4, #0x200000
+ bne _020E9DCC
+ orrs r4, r0, r1, lsl #0x1
+ beq _020E9E00
+ b _020E9E18
+_020E9D44:
+ orrs r4, r2, r3, lsl #0x1
+ beq _020E9DDC
+ mov r4, #0x1
+ bic r3, r3, #0x80000000
+ cmp r1, #0x0
+ bpl _020E9D68
+ orr r12, r12, lr, lsr #0x14
+ orr r4, r4, lr, lsr #0x14
+ b _020E9BA8
+_020E9D68:
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ blo _020E9D88
+ add r12, r12, #0x1
+ and r4, r0, #0x1
+ movs r1, r1, rrx
+ mov r0, r0, rrx
+ orr r0, r0, r4
+_020E9D88:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+_020E9DCC:
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9DDC:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E00:
+ ldr r1, _020E9E58 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E14:
+ mov r1, r3
+_020E9E18:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E28: ; 0x020E9E28
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020E9E38:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ ldr r1, _020E9E58 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020E9E58: .word 0x7FF00000
+ arm_func_end _dadd
diff --git a/arm9/asm/RUNTIME_d_div.s b/arm9/asm/RUNTIME_d_div.s
new file mode 100644
index 00000000..0259c528
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_div.s
@@ -0,0 +1,333 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _drdiv
+_drdiv: ; 0x020EC070
+ eor r1, r1, r3
+ eor r3, r1, r3
+ eor r1, r1, r3
+ eor r0, r0, r2
+ eor r2, r0, r2
+ eor r0, r0, r2
+
+ arm_func_start _ddiv
+_ddiv: ; 0x020EC088
+ stmdb sp!, {r4-r6,lr}
+ ldr lr, _020EC5C8 ; =0x00000FFE
+ eor r4, r1, r3
+ ands r12, lr, r1, lsr #0x13
+ cmpne r12, lr
+ beq _020EC434
+ bic r1, r1, lr, lsl #0x14
+ orr r1, r1, #0x100000
+ add r12, r12, r4, lsr #0x1f
+_020EC0AC:
+ ands r4, lr, r3, lsr #0x13
+ cmpne r4, lr
+ beq _020EC4CC
+ bic r3, r3, lr, lsl #0x14
+ orr r3, r3, #0x100000
+_020EC0C0:
+ sub r12, r12, r4
+ cmp r1, r3
+ cmpeq r0, r2
+ bhs _020EC0DC
+ adds r0, r0, r0
+ adc r1, r1, r1
+ sub r12, r12, #0x2
+_020EC0DC:
+ sub r4, pc, #0x24 ; _020EC1C0 - #0x100
+ ldrb lr, [r4, r3, lsr #0xc]
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+ mov r4, #0x20000000
+ mla r5, lr, r3, r4
+ mov r6, r3, lsl #0xa
+ mov r5, r5, lsr #0x7
+ mul lr, r5, lr
+ orr r6, r6, r2, lsr #0x16
+ mov lr, lr, lsr #0xd
+ mul r5, lr, r6
+ mov r6, r1, lsl #0xa
+ orr r6, r6, r0, lsr #0x16
+ mov r5, r5, lsr #0x10
+ mul r5, lr, r5
+ mov lr, lr, lsl #0xe
+ add lr, lr, r5, lsr #0x10
+ umull r5, r6, lr, r6
+ umull r4, r5, r6, r2
+ mla r5, r3, r6, r5
+ mov r4, r4, lsr #0x1a
+ orr r4, r4, r5, lsl #0x6
+ add r4, r4, r0, lsl #0x2
+ umull lr, r5, r4, lr
+ mov r4, #0x0
+ adds r5, r5, r6, lsl #0x18
+ adc r4, r4, r6, lsr #0x8
+ cmp r12, #0x800
+ bge _020EC2C0
+ add r12, r12, #0x7f0
+ adds r12, r12, #0xc
+ bmi _020EC2D8
+ orr r1, r4, r12, lsl #0x1f
+ bic r12, r12, #0x1
+ add r1, r1, r12, lsl #0x13
+ tst lr, #0x80000000
+ bne _020EC1B0
+ rsbs r2, r2, #0x0
+ mov r4, r4, lsl #0x1
+ add r4, r4, r5, lsr #0x1f
+ mul lr, r2, r4
+ mov r6, #0x0
+ mov r4, r5, lsl #0x1
+ orr r4, r4, #0x1
+ umlal r6, lr, r4, r2
+ rsc r3, r3, #0x0
+ mla lr, r4, r3, lr
+ cmp lr, r0, lsl #0x15
+ bmi _020EC1B0
+ mov r0, r5
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC1B0:
+ adds r0, r5, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC1C0: ; not code
+ .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1
+ .byte 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4
+ .byte 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8
+ .byte 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD
+ .byte 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3
+ .byte 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA
+ .byte 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2
+ .byte 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB
+ .byte 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4
+ .byte 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E
+ .byte 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98
+ .byte 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92
+ .byte 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D
+ .byte 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89
+ .byte 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84
+ .byte 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
+_020EC2C0:
+ movs r1, r12, lsl #0x1f
+ orr r1, r1, #0x7f000000
+ orr r1, r1, #0xf00000
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC2D8:
+ mvn r6, r12, asr #0x1
+ cmp r6, #0x34
+ bgt _020EC424
+ beq _020EC400
+ cmp r6, #0x14
+ bge _020EC320
+ rsb r6, r6, #0x13
+ mov lr, r0, lsl r6
+ rsb r6, r6, #0x14
+ mov r0, r5, lsr r6
+ rsb r6, r6, #0x20
+ orr r0, r0, r4, lsl r6
+ rsb r6, r6, #0x20
+ mov r4, r4, lsr r6
+ orr r1, r4, r12, lsl #0x1f
+ mov r12, lr
+ mov lr, #0x0
+ b _020EC350
+_020EC320:
+ rsb r6, r6, #0x33
+ mov lr, r1, lsl r6
+ mov r1, r12, lsl #0x1f
+ rsb r6, r6, #0x20
+ orr r12, lr, r0, lsr r6
+ rsb r6, r6, #0x20
+ mov lr, r0, lsl r6
+ mov r5, r5, lsr #0x15
+ orr r5, r5, r4, lsl #0xb
+ rsb r6, r6, #0x1f
+ mov r0, r5, lsr r6
+ mov r4, #0x0
+_020EC350:
+ rsbs r2, r2, #0x0
+ mul r4, r2, r4
+ mov r5, #0x0
+ umlal r5, r4, r2, r0
+ rsc r3, r3, #0x0
+ mla r4, r0, r3, r4
+ cmp r4, r12
+ cmpeq r5, lr
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ adds r5, r5, r2
+ adc r4, r4, r3
+ cmp r4, r12
+ bmi _020EC3F4
+ bne _020EC398
+ cmp r5, lr
+ beq _020EC3E4
+ blo _020EC3F4
+_020EC398:
+ subs r5, r5, r2
+ sbc r4, r4, r3
+_020EC3A0:
+ adds r5, r5, r5
+ adc r4, r4, r4
+ adds r5, r5, r2
+ adc r4, r4, r3
+ adds lr, lr, lr
+ adc r12, r12, r12
+ cmp r4, r12
+ bmi _020EC3E4
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ cmp r5, lr
+ blo _020EC3E4
+ ldmneia sp!, {r4-r6,lr}
+ bxne lr
+ tst r0, #0x1
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+_020EC3E4:
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC3F4:
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ b _020EC3A0
+_020EC400:
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+ cmp r1, r3
+ cmpeq r0, r2
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ movne r0, #0x1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC424:
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC434:
+ orrs r5, r0, r1, lsl #0x1
+ beq _020EC558
+ cmp r12, lr
+ beq _020EC49C
+ movs r1, r1, lsl #0xc
+ beq _020EC478
+ clz r5, r1
+ movs r1, r1, lsl r5
+ sub r12, r12, r5
+ add r5, r12, #0x1f
+ mov r1, r1, lsr #0xb
+ orr r1, r1, r0, lsr r5
+ rsb r5, r5, #0x20
+ mov r0, r0, lsl r5
+ mov r12, r12, lsl #0x1
+ orr r12, r12, r4, lsr #0x1f
+ b _020EC0AC
+_020EC478:
+ mvn r12, #0x13
+ clz r5, r0
+ movs r0, r0, lsl r5
+ sub r12, r12, r5
+ mov r1, r0, lsr #0xb
+ mov r0, r0, lsl #0x15
+ mov r12, r12, lsl #0x1
+ orr r12, r12, r4, lsr #0x1f
+ b _020EC0AC
+_020EC49C:
+ orrs r5, r0, r1, lsl #0xc
+ bne _020EC580
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ bhs _020EC4C0
+ and r5, r3, #0x80000000
+ eor r1, r5, r1
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC4C0:
+ orrs r5, r2, r3, lsl #0xc
+ bne _020EC5A0
+ b _020EC5B8
+_020EC4CC:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EC544
+ cmp r4, lr
+ beq _020EC52C
+ movs r3, r3, lsl #0xc
+ beq _020EC50C
+ clz r5, r3
+ movs r3, r3, lsl r5
+ sub r4, r4, r5
+ add r5, r4, #0x1f
+ mov r3, r3, lsr #0xb
+ orr r3, r3, r2, lsr r5
+ rsb r5, r5, #0x20
+ mov r2, r2, lsl r5
+ mov r4, r4, lsl #0x1
+ b _020EC0C0
+_020EC50C:
+ mvn r4, #0x13
+ clz r5, r2
+ movs r2, r2, lsl r5
+ sub r4, r4, r5
+ mov r3, r2, lsr #0xb
+ mov r2, r2, lsl #0x15
+ mov r4, r4, lsl #0x1
+ b _020EC0C0
+_020EC52C:
+ orrs r5, r2, r3, lsl #0xc
+ bne _020EC5A0
+ mov r1, r12, lsl #0x1f
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC544:
+ mov r1, r12, lsl #0x1f
+ orr r1, r1, lr, lsl #0x13
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC558:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EC5B8
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ cmpeq r2, #0x0
+ bhi _020EC5A0
+ eor r1, r1, r3
+ and r1, r1, #0x80000000
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC580:
+ tst r1, #0x80000
+ beq _020EC5B8
+ bic r5, r3, #0x80000000
+ cmp r5, lr, lsl #0x13
+ cmpeq r2, #0x0
+ bhi _020EC5A0
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC5A0:
+ tst r3, #0x80000
+ beq _020EC5B8
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EC5B8:
+ orr r1, r1, #0x7f000000
+ orr r1, r1, #0xf80000
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020EC5C8: .word 0x00000FFE
diff --git a/arm9/asm/RUNTIME_d_dtof.s b/arm9/asm/RUNTIME_d_dtof.s
new file mode 100644
index 00000000..b4e98ca9
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_dtof.s
@@ -0,0 +1,85 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _d2f
+_d2f:
+ and r2, r1, #0x80000000
+ mov r12, r1, lsr #0x14
+ bics r12, r12, #0x800
+ beq _020E9ED4
+ mov r3, r12, lsl #0x15
+ cmn r3, #0x200000
+ bhs _020E9EB8
+ subs r12, r12, #0x380
+ bls _020E9EE4
+ cmp r12, #0xff
+ bge _020E9F54
+ mov r1, r1, lsl #0xc
+ orr r3, r2, r1, lsr #0x9
+ orr r3, r3, r0, lsr #0x1d
+ movs r1, r0, lsl #0x3
+ orr r0, r3, r12, lsl #0x17
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020E9EB8:
+ orrs r3, r0, r1, lsl #0xc
+ bne _020E9ECC
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020E9ECC:
+ mvn r0, #0x80000000
+ bx lr
+_020E9ED4:
+ orrs r3, r0, r1, lsl #0xc
+ bne __f_underflow
+ .global __f_result_zero
+__f_result_zero:
+ mov r0, r2
+ bx lr
+_020E9EE4:
+ cmn r12, #0x17
+ beq _020E9F38
+ bmi __f_underflow
+ mov r1, r1, lsl #0xb
+ orr r1, r1, #0x80000000
+ mov r3, r1, lsr #0x8
+ orr r3, r3, r0, lsr #0x1d
+ rsb r12, r12, #0x1
+ movs r1, r0, lsl #0x3
+ orr r0, r2, r3, lsr r12
+ rsb r12, r12, #0x20
+ mov r3, r3, lsl r12
+ orrne r3, r3, #0x1
+ movs r1, r3
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020E9F38:
+ orr r0, r0, r1, lsl #0xc
+ .global __f_very_tiny_result
+__f_very_tiny_result:
+ movs r1, r0
+ mov r0, r2
+ addne r0, r0, #0x1
+ bx lr
+ .global __f_underflow
+__f_underflow:
+ mov r0, r2
+ bx lr
+_020E9F54:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+ arm_func_end _d2f
diff --git a/arm9/asm/RUNTIME_d_dtoi.s b/arm9/asm/RUNTIME_d_dtoi.s
new file mode 100644
index 00000000..825c11cd
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_dtoi.s
@@ -0,0 +1,30 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dfix
+_dfix: ; 0x020E9F60
+ bic r3, r1, #0x80000000
+ ldr r2, _020E9FA8 ; =0x0000041E
+ subs r2, r2, r3, lsr #0x14
+ ble _020E9F9C
+ cmp r2, #0x20
+ bge _020E9F94
+ mov r3, r1, lsl #0xb
+ orr r3, r3, #0x80000000
+ orr r3, r3, r0, lsr #0x15
+ cmp r1, #0x0
+ mov r0, r3, lsr r2
+ rsbmi r0, r0, #0x0
+ bx lr
+_020E9F94:
+ mov r0, #0x0
+ bx lr
+_020E9F9C:
+ mvn r0, r1, asr #0x1f
+ add r0, r0, #0x80000000
+ bx lr
+ .balign 4
+_020E9FA8: .word 0x0000041E
+ arm_func_end _dfix
diff --git a/arm9/asm/RUNTIME_d_dtoull.s b/arm9/asm/RUNTIME_d_dtoull.s
new file mode 100644
index 00000000..c9ef3f7b
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_dtoull.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ll_ufrom_d
+_ll_ufrom_d: ; 0x020E9FAC
+ tst r1, #0x80000000
+ bne _020EA010
+ ldr r2, _020EA034 ; =0x0000043E
+ subs r2, r2, r1, lsr #0x14
+ blt _020EA028
+ cmp r2, #0x40
+ bge _020EA004
+ mov r12, r1, lsl #0xb
+ orr r12, r12, #0x80000000
+ orr r12, r12, r0, lsr #0x15
+ cmp r2, #0x20
+ ble _020E9FEC
+ sub r2, r2, #0x20
+ mov r1, #0x0
+ mov r0, r12, lsr r2
+ bx lr
+_020E9FEC:
+ mov r3, r0, lsl #0xb
+ mov r1, r12, lsr r2
+ mov r0, r3, lsr r2
+ rsb r2, r2, #0x20
+ orr r0, r0, r12, lsl r2
+ bx lr
+_020EA004:
+ mov r1, #0x0
+ mov r0, #0x0
+ bx lr
+_020EA010:
+ cmn r1, #0x100000
+ cmpeq r0, #0x0
+ bhi _020EA028
+ mov r1, #0x0
+ mov r0, #0x0
+ bx lr
+_020EA028:
+ mvn r1, #0x0
+ mvn r0, #0x0
+ bx lr
+ .balign 4
+_020EA034: .word 0x0000043E
+ arm_func_end _ll_ufrom_d
diff --git a/arm9/asm/RUNTIME_d_itod.s b/arm9/asm/RUNTIME_d_itod.s
new file mode 100644
index 00000000..5a9c241d
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_itod.s
@@ -0,0 +1,48 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dflt
+_dflt: ; 0x020EA038
+ ands r2, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r0, #0x0
+ .global __d_itod_common
+__d_itod_common:
+ mov r1, #0x0
+ bxeq lr
+ mov r3, #0x400
+ add r3, r3, #0x1e
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ movs r1, r0
+ mov r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, r2, r1, lsr #0xc
+ orr r1, r1, r3, lsl #0x14
+ bx lr
+ arm_func_end _dflt
+
+ arm_func_start _dfltu
+_dfltu: ; 0x020EA078
+ cmp r0, #0x0
+ .global __d_utod_common
+__d_utod_common:
+ mov r1, #0x0
+ bxeq lr
+ mov r3, #0x400
+ add r3, r3, #0x1e
+ bmi _020EA09C
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+_020EA09C:
+ mov r1, r0
+ mov r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r3, lsl #0x14
+ bx lr
+ arm_func_end _dfltu
diff --git a/arm9/asm/RUNTIME_d_mul.s b/arm9/asm/RUNTIME_d_mul.s
new file mode 100644
index 00000000..eb46c3ab
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_mul.s
@@ -0,0 +1,246 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dmul
+_dmul: ; 0x020EA0B4
+ stmdb sp!, {r4-r7,lr}
+ eor lr, r1, r3
+ and lr, lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ mov r1, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r6, r12, lsl #0x15
+ cmnne r6, #0x200000
+ beq _020EA1BC
+ orr r1, r1, #0x80000000
+ bic r12, r12, #0x800
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ cmnne r5, #0x200000
+ beq _020EA204
+ orr r3, r3, #0x80000000
+ bic r4, r4, #0x800
+_020EA108:
+ add r12, r4, r12
+ umull r5, r4, r0, r2
+ umull r7, r6, r0, r3
+ adds r4, r7, r4
+ adc r6, r6, #0x0
+ umull r7, r0, r1, r2
+ adds r4, r7, r4
+ adcs r0, r0, r6
+ umull r7, r2, r1, r3
+ adc r1, r2, #0x0
+ adds r0, r0, r7
+ adc r1, r1, #0x0
+ orrs r4, r4, r5
+ orrne r0, r0, #0x1
+ cmp r1, #0x0
+ blt _020EA154
+ sub r12, r12, #0x1
+ adds r0, r0, r0
+ adc r1, r1, r1
+_020EA154:
+ add r12, r12, #0x2
+ subs r12, r12, #0x400
+ bmi _020EA2F0
+ beq _020EA2F0
+ mov r6, r12, lsl #0x14
+ cmn r6, #0x100000
+ bmi _020EA3F0
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA1BC:
+ bics r12, r12, #0x800
+ beq _020EA218
+ orrs r6, r0, r1, lsl #0x1
+ bne _020EA3A4
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ beq _020EA1F8
+ cmn r5, #0x200000
+ bne _020EA390
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EA390
+ b _020EA3A4
+_020EA1F8:
+ orrs r5, r3, r2
+ beq _020EA3B8
+ b _020EA390
+_020EA204:
+ bics r4, r4, #0x800
+ beq _020EA2AC
+ orrs r6, r2, r3, lsl #0x1
+ bne _020EA3A4
+ b _020EA390
+_020EA218:
+ orrs r6, r0, r1, lsl #0x1
+ beq _020EA280
+ mov r12, #0x1
+ cmp r1, #0x0
+ bne _020EA23C
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA258
+_020EA23C:
+ clz r6, r1
+ movs r1, r1, lsl r6
+ rsb r6, r6, #0x20
+ orr r1, r1, r0, lsr r6
+ rsb r6, r6, #0x20
+ mov r0, r0, lsl r6
+ sub r12, r12, r6
+_020EA258:
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ cmnne r5, #0x200000
+ beq _020EA204
+ orr r3, r3, #0x80000000
+ bic r4, r4, #0x800
+ b _020EA108
+_020EA280:
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r5, r4, lsl #0x15
+ beq _020EA404
+ cmn r5, #0x200000
+ bne _020EA404
+ orrs r6, r2, r3, lsl #0x1
+ beq _020EA3B8
+ b _020EA3A4
+_020EA2AC:
+ orrs r5, r2, r3, lsl #0x1
+ beq _020EA404
+ mov r4, #0x1
+ cmp r3, #0x0
+ bne _020EA2D0
+ sub r4, r4, #0x20
+ movs r3, r2
+ mov r2, #0x0
+ bmi _020EA108
+_020EA2D0:
+ clz r6, r3
+ movs r3, r3, lsl r6
+ rsb r6, r6, #0x20
+ orr r3, r3, r2, lsr r6
+ rsb r6, r6, #0x20
+ mov r2, r2, lsl r6
+ sub r4, r4, r6
+ b _020EA108
+_020EA2F0:
+ cmn r12, #0x34
+ beq _020EA388
+ bmi _020EA3E0
+ mov r2, r1
+ mov r3, r0
+ add r4, r12, #0x34
+ cmp r4, #0x20
+ movge r2, r3
+ movge r3, #0x0
+ subge r4, r4, #0x20
+ rsb r5, r4, #0x20
+ mov r2, r2, lsl r4
+ orr r2, r2, r3, lsr r5
+ movs r3, r3, lsl r4
+ orrne r2, r2, #0x1
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ cmp r2, #0x0
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4-r7,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA388:
+ orr r0, r0, r1, lsl #0x1
+ b _020EA3C8
+_020EA390:
+ ldr r1, _020EA414 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3A4:
+ mov r1, r3
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3B8:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3C8:
+ movs r2, r0
+ mov r1, lr
+ mov r0, #0x0
+ addne r0, r0, #0x1
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3E0:
+ mov r1, lr
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA3F0:
+ ldr r1, _020EA414 ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+_020EA404:
+ mov r1, lr
+ mov r0, #0x0
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020EA414: .word 0x7FF00000
+ arm_func_end _dmul
diff --git a/arm9/asm/RUNTIME_d_sqrt.s b/arm9/asm/RUNTIME_d_sqrt.s
new file mode 100644
index 00000000..8cc562a7
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_sqrt.s
@@ -0,0 +1,123 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dsqrt
+_dsqrt: ; 0x020EA418
+ stmdb sp!, {r4-r6,lr}
+ ldr r2, _020EA5A8 ; =0x7FF00000
+ cmp r1, r2
+ bhs _020EA564
+ movs r12, r1, lsr #0x14
+ beq _020EA510
+ bic r1, r1, r2
+ orr r1, r1, #0x100000
+_020EA438:
+ movs r12, r12, asr #0x1
+ bhs _020EA44C
+ sub r12, r12, #0x1
+ movs r0, r0, lsl #0x1
+ adc r1, r1, r1
+_020EA44C:
+ movs r3, r0, lsl #0x1
+ adc r1, r1, r1
+ mov r2, #0x0
+ mov r4, #0x0
+ mov lr, #0x200000
+_020EA460:
+ add r6, r4, lr
+ cmp r6, r1
+ addle r4, r6, lr
+ suble r1, r1, r6
+ addle r2, r2, lr
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ movs lr, lr, lsr #0x1
+ bne _020EA460
+ mov r0, #0x0
+ mov r5, #0x0
+ cmp r1, r4
+ cmpeq r3, #0x80000000
+ blo _020EA4A8
+ subs r3, r3, #0x80000000
+ sbc r1, r1, r4
+ add r4, r4, #0x1
+ mov r0, #0x80000000
+_020EA4A8:
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ mov lr, #0x40000000
+_020EA4B4:
+ add r6, r5, lr
+ cmp r4, r1
+ cmpeq r6, r3
+ bhi _020EA4D4
+ add r5, r6, lr
+ subs r3, r3, r6
+ sbc r1, r1, r4
+ add r0, r0, lr
+_020EA4D4:
+ movs r3, r3, lsl #0x1
+ adc r1, r1, r1
+ movs lr, lr, lsr #0x1
+ bne _020EA4B4
+ orrs r1, r1, r3
+ biceq r0, r0, #0x1
+ movs r1, r2, lsr #0x1
+ movs r0, r0, rrx
+ adcs r0, r0, #0x0
+ adc r1, r1, #0x0
+ add r1, r1, #0x20000000
+ sub r1, r1, #0x100000
+ add r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+_020EA510:
+ cmp r1, #0x0
+ bne _020EA540
+ cmp r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ mvn r12, #0x13
+ clz r5, r0
+ movs r0, r0, lsl r5
+ sub r12, r12, r5
+ mov r1, r0, lsr #0xb
+ mov r0, r0, lsl #0x15
+ b _020EA438
+_020EA540:
+ clz r2, r1
+ movs r1, r1, lsl r2
+ rsb r2, r2, #0x2b
+ mov r1, r1, lsr #0xb
+ orr r1, r1, r0, lsr r2
+ rsb r2, r2, #0x20
+ mov r0, r0, lsl r2
+ rsb r12, r2, #0x1
+ b _020EA438
+_020EA564:
+ tst r1, #0x80000000
+ beq _020EA580
+ bics r3, r1, #0x80000000
+ cmpeq r0, #0x0
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+ b _020EA58C
+_020EA580:
+ orrs r2, r0, r1, lsl #0xc
+ ldmeqia sp!, {r4-r6,lr}
+ bxeq lr
+_020EA58C:
+ ldr r2, _020EA5AC ; =0x7FF80000
+ orr r1, r1, r2
+ ldr r3, _020EA5B0 ; =errno
+ mov r4, #0x21
+ str r4, [r3, #0x0]
+ ldmia sp!, {r4-r6,lr}
+ bx lr
+ .balign 4
+_020EA5A8: .word 0x7FF00000
+_020EA5AC: .word 0x7FF80000
+_020EA5B0: .word errno
+ arm_func_end _dsqrt
diff --git a/arm9/asm/RUNTIME_d_sub.s b/arm9/asm/RUNTIME_d_sub.s
new file mode 100644
index 00000000..c9388ffa
--- /dev/null
+++ b/arm9/asm/RUNTIME_d_sub.s
@@ -0,0 +1,283 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .extern __dadd_start
+
+ .text
+
+ arm_func_start _drsb
+_drsb: ; 0x020EA5B4
+ eor r1, r1, r3
+ eor r3, r1, r3
+ eor r1, r1, r3
+ eor r0, r0, r2
+ eor r2, r0, r2
+ eor r0, r0, r2
+
+ arm_func_start _dsub
+_dsub:
+ stmdb sp!, {r4,lr}
+ eors r12, r1, r3
+ eormi r3, r3, #0x80000000
+ bmi __dadd_start
+ .global __dsub_start
+__dsub_start:
+ subs r12, r0, r2
+ sbcs lr, r1, r3
+ bhs _020EA5FC
+ eor lr, lr, #0x80000000
+ adds r2, r2, r12
+ adc r3, r3, lr
+ subs r0, r0, r12
+ sbc r1, r1, lr
+_020EA5FC:
+ mov lr, #0x80000000
+ mov r12, r1, lsr #0x14
+ orr r1, lr, r1, lsl #0xb
+ orr r1, r1, r0, lsr #0x15
+ mov r0, r0, lsl #0xb
+ movs r4, r12, lsl #0x15
+ cmnne r4, #0x200000
+ beq _020EA800
+ mov r4, r3, lsr #0x14
+ orr r3, lr, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs lr, r4, lsl #0x15
+ beq _020EA848
+_020EA634:
+ subs r4, r12, r4
+ beq _020EA6DC
+ cmp r4, #0x20
+ ble _020EA670
+ cmp r4, #0x38
+ movge r4, #0x3f
+ sub r4, r4, #0x20
+ rsb lr, r4, #0x20
+ orrs lr, r2, r3, lsl lr
+ mov r2, r3, lsr r4
+ orrne r2, r2, #0x1
+ subs r0, r0, r2
+ sbcs r1, r1, #0x0
+ bmi _020EA698
+ b _020EA788
+_020EA670:
+ rsb lr, r4, #0x20
+ movs lr, r2, lsl lr
+ rsb lr, r4, #0x20
+ mov r2, r2, lsr r4
+ orr r2, r2, r3, lsl lr
+ mov r3, r3, lsr r4
+ orrne r2, r2, #0x1
+ subs r0, r0, r2
+ sbcs r1, r1, r3
+ bpl _020EA788
+_020EA698:
+ movs r2, r0, lsl #0x15
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ mov r1, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ tst r2, #0x80000000
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ movs r2, r2, lsl #0x1
+ andeqs r2, r0, #0x1
+ ldmeqia sp!, {r4,lr}
+ bxeq lr
+ adds r0, r0, #0x1
+ adc r1, r1, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA6DC:
+ subs r0, r0, r2
+ sbc r1, r1, r3
+ orrs lr, r1, r0
+ beq _020EA96C
+ mov lr, r12, lsl #0x14
+ and lr, lr, #0x80000000
+ bic r12, r12, #0x800
+ cmp r1, #0x0
+ bmi _020EA764
+ bne _020EA714
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA730
+_020EA714:
+ clz r4, r1
+ movs r1, r1, lsl r4
+ rsb r4, r4, #0x20
+ orr r1, r1, r0, lsr r4
+ rsb r4, r4, #0x20
+ mov r0, r0, lsl r4
+ sub r12, r12, r4
+_020EA730:
+ cmp r12, #0x0
+ bgt _020EA76C
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA764:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+_020EA76C:
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA788:
+ mov lr, r12, lsl #0x14
+ and lr, lr, #0x80000000
+ bic r12, r12, #0x800
+ cmp r1, #0x0
+ bne _020EA7AC
+ sub r12, r12, #0x20
+ movs r1, r0
+ mov r0, #0x0
+ bmi _020EA7C8
+_020EA7AC:
+ clz r4, r1
+ movs r1, r1, lsl r4
+ rsb r4, r4, #0x20
+ orr r1, r1, r0, lsr r4
+ rsb r4, r4, #0x20
+ mov r0, r0, lsl r4
+ sub r12, r12, r4
+_020EA7C8:
+ cmp r12, #0x0
+ orrgt r12, r12, lr, lsr #0x14
+ bgt _020EA698
+ rsb r12, r12, #0xc
+ cmp r12, #0x20
+ movge r0, r1
+ movge r1, #0x0
+ subge r12, r12, #0x20
+ rsb r4, r12, #0x20
+ mov r0, r0, lsr r12
+ orr r0, r0, r1, lsl r4
+ orr r1, lr, r1, lsr r12
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA800:
+ cmp r12, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bics r12, r12, #0x800
+ beq _020EA86C
+ orrs r4, r0, r1, lsl #0x1
+ bne _020EA948
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ beq _020EA934
+ cmn r4, #0x200000
+ bne _020EA934
+ orrs r4, r2, r3, lsl #0x1
+ beq _020EA95C
+ b _020EA948
+_020EA848:
+ cmp r4, #0x800
+ movge lr, #0x80000000
+ movlt lr, #0x0
+ bic r12, r12, #0x800
+ bics r4, r4, #0x800
+ beq _020EA8E4
+ orrs r4, r2, r3, lsl #0x1
+ bne _020EA948
+ b _020EA934
+_020EA86C:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020EA8AC
+ mov r12, #0x1
+ bic r1, r1, #0x80000000
+ mov r4, r3, lsr #0x14
+ mov r3, r3, lsl #0xb
+ orr r3, r3, r2, lsr #0x15
+ mov r2, r2, lsl #0xb
+ movs r4, r4, lsl #0x15
+ cmnne r4, #0x200000
+ mov r4, r4, lsr #0x15
+ orr r4, r4, lr, lsr #0x14
+ beq _020EA848
+ orr r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ b _020EA634
+_020EA8AC:
+ mov r12, r3, lsr #0x14
+ mov r1, r3, lsl #0xb
+ orr r1, r1, r2, lsr #0x15
+ mov r0, r2, lsl #0xb
+ movs r4, r12, lsl #0x15
+ beq _020EA8D8
+ cmn r4, #0x200000
+ bne _020EA900
+ orrs r4, r0, r1, lsl #0x1
+ bne _020EA94C
+ b _020EA934
+_020EA8D8:
+ orrs r4, r0, r1, lsl #0x1
+ beq _020EA96C
+ b _020EA900
+_020EA8E4:
+ orrs r4, r2, r3, lsl #0x1
+ beq _020EA910
+ mov r4, #0x1
+ bic r3, r3, #0x80000000
+ orr r12, r12, lr, lsr #0x14
+ orr r4, r4, lr, lsr #0x14
+ b _020EA634
+_020EA900:
+ mov r1, r3
+ mov r0, r2
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA910:
+ cmp r1, #0x0
+ subges r12, r12, #0x1
+ mov r0, r0, lsr #0xb
+ orr r0, r0, r1, lsl #0x15
+ add r1, r1, r1
+ orr r1, lr, r1, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA934:
+ ldr r1, _020EA97C ; =0x7FF00000
+ orr r1, lr, r1
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA948:
+ mov r1, r3
+_020EA94C:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA95C:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ ldmia sp!, {r4,lr}
+ bx lr
+_020EA96C:
+ mov r1, #0x0
+ mov r0, #0x0
+ ldmia sp!, {r4,lr}
+ bx lr
+ .balign 4
+_020EA97C: .word 0x7FF00000
diff --git a/arm9/asm/RUNTIME_f_add.s b/arm9/asm/RUNTIME_f_add.s
new file mode 100644
index 00000000..f54dfb58
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_add.s
@@ -0,0 +1,165 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .extern __fsub_start
+
+ .text
+
+ arm_func_start _fadd
+_fadd: ; 0x020EA980
+ eors r2, r0, r1
+ eormi r1, r1, #0x80000000
+ bmi __fsub_start
+ .global __fadd_start
+__fadd_start:
+ subs r12, r0, r1
+ subcc r0, r0, r12
+ addcc r1, r1, r12
+ mov r2, #0x80000000
+ mov r3, r0, lsr #0x17
+ orr r0, r2, r0, lsl #0x8
+ ands r12, r3, #0xff
+ cmpne r12, #0xff
+ beq _020EAA20
+ mov r12, r1, lsr #0x17
+ orr r1, r2, r1, lsl #0x8
+ ands r2, r12, #0xff
+ beq _020EAA60
+_020EA9C0:
+ subs r12, r3, r12
+ beq _020EA9D8
+ rsb r2, r12, #0x20
+ movs r2, r1, lsl r2
+ mov r1, r1, lsr r12
+ orrne r1, r1, #0x1
+_020EA9D8:
+ adds r0, r0, r1
+ blo _020EA9F8
+ and r1, r0, #0x1
+ orr r0, r1, r0, rrx
+ add r3, r3, #0x1
+ and r2, r3, #0xff
+ cmp r2, #0xff
+ beq _020EAB68
+_020EA9F8:
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EAA20:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ ands r3, r3, #0xff
+ beq _020EAA84
+ movs r0, r0, lsl #0x1
+ bne _020EAB94
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EAB88
+ cmp r12, #0xff
+ blt _020EAB88
+ cmp r1, #0x0
+ beq _020EAB88
+ b _020EAB94
+_020EAA60:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ and r3, r3, #0xff
+ ands r12, r12, #0xff
+ beq _020EAAE0
+_020EAA78:
+ movs r1, r1, lsl #0x1
+ bne _020EAB94
+ b _020EAB88
+_020EAA84:
+ movs r0, r0, lsl #0x1
+ beq _020EAABC
+ mov r3, #0x1
+ mov r0, r0, lsr #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EAAE0
+ cmp r12, #0xff
+ beq _020EAA78
+ orr r1, r1, #0x80000000
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ b _020EA9C0
+_020EAABC:
+ mov r3, r1, lsr #0x17
+ mov r0, r1, lsl #0x9
+ ands r3, r3, #0xff
+ beq _020EAB48
+ cmp r3, #0xff
+ blt _020EAB48
+ cmp r0, #0x0
+ beq _020EAB88
+ b _020EAB80
+_020EAAE0:
+ movs r1, r1, lsl #0x1
+ beq _020EAB50
+ mov r1, r1, lsr #0x1
+ mov r12, #0x1
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ cmp r0, #0x0
+ bmi _020EA9C0
+ adds r0, r0, r1
+ blo _020EAB14
+ and r1, r0, #0x1
+ orr r0, r1, r0, rrx
+ add r12, r12, #0x1
+_020EAB14:
+ cmp r0, #0x0
+ subge r12, r12, #0x1
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r12, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EAB48:
+ mov r0, r1
+ bx lr
+_020EAB50:
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EAB68:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EAB80:
+ mvn r0, #0x80000000
+ bx lr
+_020EAB88:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EAB94:
+ mvn r0, #0x80000000
+ bx lr
+_020EAB9C: ; 0x020EAB9C
+ mvn r0, #0x80000000
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_cmp.s b/arm9/asm/RUNTIME_f_cmp.s
new file mode 100644
index 00000000..696d0af1
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_cmp.s
@@ -0,0 +1,376 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _dgr
+_dgr: ; 0x020EABA4
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAC18
+ cmn r12, r3, lsl #0x1
+ bhs _020EAC2C
+_020EABB8:
+ orrs r12, r3, r1
+ bmi _020EABE8
+ cmp r1, r3
+ cmpeq r0, r2
+ movhi r0, #0x1
+ movls r0, #0x0
+ bx lr
+_020EABD4:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EABE8:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ movhi r0, #0x1
+ movls r0, #0x0
+ bx lr
+_020EAC18:
+ bne _020EABD4
+ cmp r0, #0x0
+ bhi _020EABD4
+ cmn r12, r3, lsl #0x1
+ blo _020EABB8
+_020EAC2C:
+ bne _020EABD4
+ cmp r2, #0x0
+ bhi _020EABD4
+ b _020EABB8
+
+ arm_func_start _dleq
+_dleq: ; 0x020EAC3C
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EACBC
+ cmn r12, r3, lsl #0x1
+ bhs _020EACD0
+_020EAC50:
+ orrs r12, r3, r1
+ bmi _020EAC84
+ cmp r1, r3
+ cmpeq r0, r2
+ movls r0, #0x1
+ movhi r0, #0x0
+ bx lr
+_020EAC6C:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAC84:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x1
+ bne _020EACA8
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ orr r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bxeq lr
+_020EACA8:
+ cmp r3, r1
+ cmpeq r2, r0
+ movls r0, #0x1
+ movhi r0, #0x0
+ bx lr
+_020EACBC:
+ bne _020EAC6C
+ cmp r0, #0x0
+ bhi _020EAC6C
+ cmn r12, r3, lsl #0x1
+ blo _020EAC50
+_020EACD0:
+ bne _020EAC6C
+ cmp r2, #0x0
+ bhi _020EAC6C
+ b _020EAC50
+
+ arm_func_start _dls
+_dls: ; 0x020EACE0
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAD58
+ cmn r12, r3, lsl #0x1
+ bhs _020EAD6C
+_020EACF4:
+ orrs r12, r3, r1
+ bmi _020EAD24
+ cmp r1, r3
+ cmpeq r0, r2
+ movcc r0, #0x1
+ movcs r0, #0x0
+ bx lr
+_020EAD10:
+ mov r0, #0x0
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAD24:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ bne _020EAD44
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bxeq lr
+_020EAD44:
+ cmp r3, r1
+ cmpeq r2, r0
+ movcc r0, #0x1
+ movcs r0, #0x0
+ bx lr
+_020EAD58:
+ bne _020EAD10
+ cmp r0, #0x0
+ bhi _020EAD10
+ cmn r12, r3, lsl #0x1
+ blo _020EACF4
+_020EAD6C:
+ bne _020EAD10
+ cmp r2, #0x0
+ bhi _020EAD10
+ b _020EACF4
+
+ arm_func_start _deq
+_deq: ; 0x020EAD7C
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EADE4
+ cmn r12, r3, lsl #0x1
+ bhs _020EADF8
+_020EAD90:
+ orrs r12, r3, r1
+ bmi _020EADC0
+ cmp r1, r3
+ cmpeq r0, r2
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+_020EADAC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EADC0:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x1
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ moveq r0, #0x1
+ movne r0, #0x0
+ bx lr
+_020EADE4:
+ bne _020EADAC
+ cmp r0, #0x0
+ bhi _020EADAC
+ cmn r12, r3, lsl #0x1
+ blo _020EAD90
+_020EADF8:
+ bne _020EADAC
+ cmp r2, #0x0
+ bhi _020EADAC
+ b _020EAD90
+
+ arm_func_start _dneq
+_dneq: ; 0x020EAE08
+ mov r12, #0x200000
+ cmn r12, r1, lsl #0x1
+ bhs _020EAE70
+ cmn r12, r3, lsl #0x1
+ bhs _020EAE84
+_020EAE1C:
+ orrs r12, r3, r1
+ bmi _020EAE4C
+ cmp r1, r3
+ cmpeq r0, r2
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+_020EAE38:
+ mov r0, #0x1
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EAE4C:
+ orr r12, r0, r12, lsl #0x1
+ orrs r12, r12, r2
+ moveq r0, #0x0
+ bxeq lr
+ cmp r3, r1
+ cmpeq r2, r0
+ movne r0, #0x1
+ moveq r0, #0x0
+ bx lr
+_020EAE70:
+ bne _020EAE38
+ cmp r0, #0x0
+ bhi _020EAE38
+ cmn r12, r3, lsl #0x1
+ blo _020EAE1C
+_020EAE84:
+ bne _020EAE38
+ cmp r2, #0x0
+ bhi _020EAE38
+ b _020EAE1C
+
+ arm_func_start _fgeq
+_fgeq: ; 0x020EAE94
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAEDC
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movge r0, #0x1
+ movlt r0, #0x0
+ mrs r12, cpsr
+ biclt r12, r12, #0x20000000
+ orrge r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAEDC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fgr
+_fgr: ; 0x020EAEF0
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAF38
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movgt r0, #0x1
+ movle r0, #0x0
+ mrs r12, cpsr
+ bicle r12, r12, #0x20000000
+ orrgt r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAF38:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fleq
+_fleq: ; 0x020EAF4C
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAF9C
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movle r0, #0x1
+ movgt r0, #0x0
+ mrs r12, cpsr
+ orrgt r12, r12, #0x20000000
+ bicgt r12, r12, #0x40000000
+ bicle r12, r12, #0x20000000
+ orrle r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EAF9C:
+ mov r0, #0x0
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _fls
+_fls: ; 0x020EAFB4
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ cmpcs r3, r1, lsl #0x1
+ blo _020EAFFC
+ cmp r0, #0x0
+ bicmi r0, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r1, #0x0
+ bicmi r1, r1, #0x80000000
+ rsbmi r1, r1, #0x0
+ cmp r0, r1
+ movlt r0, #0x1
+ movge r0, #0x0
+ mrs r12, cpsr
+ orrge r12, r12, #0x20000000
+ biclt r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+_020EAFFC:
+ mov r0, #0x0
+ mrs r12, cpsr
+ orr r12, r12, #0x20000000
+ msr cpsr_f, r12
+ bx lr
+
+ arm_func_start _feq
+_feq: ; 0x020EB010
+ mov r3, #0xff000000
+ cmp r3, r0, lsl #0x1
+ blo _020EB064
+ cmp r3, r1, lsl #0x1
+ blo _020EB064
+ orr r3, r0, r1
+ movs r3, r3, lsl #0x1
+ moveq r0, #0x0
+ bne _020EB044
+ mrs r12, cpsr
+ orr r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EB044:
+ cmp r0, r1
+ movne r0, #0x1
+ moveq r0, #0x0
+ mrs r12, cpsr
+ bicne r12, r12, #0x40000000
+ orreq r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
+_020EB064:
+ mov r0, #0x1
+ mrs r12, cpsr
+ bic r12, r12, #0x40000000
+ msr cpsr_f, r12
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_div.s b/arm9/asm/RUNTIME_f_div.s
new file mode 100644
index 00000000..4f7c6d15
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_div.s
@@ -0,0 +1,225 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _frdiv
+_frdiv: ; 0x020EB078
+ eor r0, r0, r1
+ eor r1, r0, r1
+ eor r0, r0, r1
+
+ arm_func_start _fdiv
+_fdiv: ; 0x020EB084
+ stmdb sp!, {lr}
+ mov r12, #0xff
+ ands r3, r12, r0, lsr #0x17
+ cmpne r3, #0xff
+ beq _020EB258
+ ands r12, r12, r1, lsr #0x17
+ cmpne r12, #0xff
+ beq _020EB294
+ orr r1, r1, #0x800000
+ orr r0, r0, #0x800000
+ bic r2, r0, #0xff000000
+ bic lr, r1, #0xff000000
+_020EB0B4:
+ cmp r2, lr
+ movcc r2, r2, lsl #0x1
+ subcc r3, r3, #0x1
+ teq r0, r1
+ sub r0, pc, #0x94 ; _020EB138 - #0x100
+ ldrb r1, [r0, lr, lsr #0xf]
+ rsb lr, lr, #0x0
+ mov r0, lr, asr #0x1
+ mul r0, r1, r0
+ add r0, r0, #0x80000000
+ mov r0, r0, lsr #0x6
+ mul r0, r1, r0
+ mov r0, r0, lsr #0xe
+ mul r1, lr, r0
+ sub r12, r3, r12
+ mov r1, r1, lsr #0xc
+ mul r1, r0, r1
+ mov r0, r0, lsl #0xe
+ add r0, r0, r1, lsr #0xf
+ umull r1, r0, r2, r0
+ mov r3, r0
+ orrmi r0, r0, #0x80000000
+ adds r12, r12, #0x7e
+ bmi _020EB35C
+ cmp r12, #0xfe
+ bge _020EB410
+ add r0, r0, r12, lsl #0x17
+ mov r12, r1, lsr #0x1c
+ cmp r12, #0x7
+ beq _020EB238
+ add r0, r0, r1, lsr #0x1f
+ ldmia sp!, {lr}
+ bx lr
+_020EB138: ; not code
+ .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9
+ .byte 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA
+ .byte 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE
+ .byte 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2
+ .byte 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8
+ .byte 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF
+ .byte 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6
+ .byte 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF
+ .byte 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7
+ .byte 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1
+ .byte 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B
+ .byte 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95
+ .byte 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90
+ .byte 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B
+ .byte 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86
+ .byte 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82
+ .byte 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
+_020EB238:
+ mov r1, r3, lsl #0x1
+ add r1, r1, #0x1
+ rsb lr, lr, #0x0
+ mul r1, lr, r1
+ cmp r1, r2, lsl #0x18
+ addmi r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB258:
+ eor lr, r0, r1
+ and lr, lr, #0x80000000
+ cmp r3, #0x0
+ beq _020EB2B0
+ movs r0, r0, lsl #0x9
+ bne _020EB3F8
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB3E8
+ cmp r12, #0xff
+ blt _020EB3E8
+ cmp r1, #0x0
+ beq _020EB404
+ b _020EB3E0
+_020EB294:
+ eor lr, r0, r1
+ and lr, lr, #0x80000000
+ cmp r12, #0x0
+ beq _020EB314
+_020EB2A4:
+ movs r1, r1, lsl #0x9
+ bne _020EB3E0
+ b _020EB430
+_020EB2B0:
+ movs r2, r0, lsl #0x9
+ beq _020EB2E4
+ clz r3, r2
+ movs r2, r2, lsl r3
+ rsb r3, r3, #0x0
+ mov r2, r2, lsr #0x8
+ ands r12, r12, r1, lsr #0x17
+ beq _020EB33C
+ cmp r12, #0xff
+ beq _020EB2A4
+ orr r1, r1, #0x800000
+ bic lr, r1, #0xff000000
+ b _020EB0B4
+_020EB2E4:
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB308
+ cmp r12, #0xff
+ blt _020EB430
+ cmp r1, #0x0
+ beq _020EB430
+ b _020EB3E0
+_020EB308:
+ cmp r1, #0x0
+ beq _020EB404
+ b _020EB430
+_020EB314:
+ movs r12, r1, lsl #0x9
+ beq _020EB3E8
+ mov lr, r12
+ clz r12, lr
+ movs lr, lr, lsl r12
+ rsb r12, r12, #0x0
+ mov lr, lr, lsr #0x8
+ orr r0, r0, #0x800000
+ bic r2, r0, #0xff000000
+ b _020EB0B4
+_020EB33C:
+ movs r12, r1, lsl #0x9
+ beq _020EB3E8
+ mov lr, r12
+ clz r12, lr
+ movs lr, lr, lsl r12
+ rsb r12, r12, #0x0
+ mov lr, lr, lsr #0x8
+ b _020EB0B4
+_020EB35C:
+ and r0, r0, #0x80000000
+ cmn r12, #0x18
+ beq _020EB3D0
+ bmi _020EB428
+ add r1, r12, #0x17
+ mov r2, r2, lsl r1
+ rsb r12, r12, #0x0
+ mov r3, r3, lsr r12
+ orr r0, r0, r3
+ rsb lr, lr, #0x0
+ mul r1, lr, r3
+ cmp r1, r2
+ ldmeqia sp!, {lr}
+ bxeq lr
+ add r1, r1, lr
+ cmp r1, r2
+ beq _020EB3C4
+ addmi r0, r0, #0x1
+ subpl r1, r1, lr
+ add r1, lr, r1, lsl #0x1
+ cmp r1, r2, lsl #0x1
+ and r3, r0, #0x1
+ addmi r0, r0, #0x1
+ addeq r0, r0, r3
+ ldmia sp!, {lr}
+ bx lr
+_020EB3C4:
+ add r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3D0:
+ cmn r2, lr
+ addne r0, r0, #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3E0:
+ mov r0, r1
+ b _020EB3F8
+_020EB3E8:
+ mov r0, #0xff000000
+ orr r0, lr, r0, lsr #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB3F8:
+ mvn r0, #0x80000000
+ ldmia sp!, {lr}
+ bx lr
+_020EB404:
+ mvn r0, #0x80000000
+ ldmia sp!, {lr}
+ bx lr
+_020EB410:
+ tst r0, #0x80000000
+ mov r0, #0xff000000
+ movne r0, r0, asr #0x1
+ moveq r0, r0, lsr #0x1
+ ldmia sp!, {lr}
+ bx lr
+_020EB428:
+ ldmia sp!, {lr}
+ bx lr
+_020EB430:
+ mov r0, lr
+ ldmia sp!, {lr}
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_ftod.s b/arm9/asm/RUNTIME_f_ftod.s
new file mode 100644
index 00000000..fe3a7224
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_ftod.s
@@ -0,0 +1,46 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _f2d
+_f2d:
+ and r2, r0, #0x80000000
+ mov r12, r0, lsr #0x17
+ mov r3, r0, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB46C
+ cmp r12, #0xff
+ beq _020EB498
+_020EB458:
+ add r12, r12, #0x380
+ mov r0, r3, lsl #0x14
+ orr r1, r2, r3, lsr #0xc
+ orr r1, r1, r12, lsl #0x14
+ bx lr
+_020EB46C:
+ cmp r3, #0x0
+ bne _020EB480
+ mov r1, r2
+ mov r0, #0x0
+ bx lr
+_020EB480:
+ mov r3, r3, lsr #0x1
+ clz r12, r3
+ movs r3, r3, lsl r12
+ rsb r12, r12, #0x1
+ add r3, r3, r3
+ b _020EB458
+_020EB498:
+ cmp r3, #0x0
+ bhi _020EB4B0
+ ldr r1, _020EB4BC ; =0x7FF00000
+ orr r1, r1, r2
+ mov r0, #0x0
+ bx lr
+_020EB4B0:
+ mvn r0, #0x0
+ bic r1, r0, #0x80000000
+ bx lr
+ .balign 4
+_020EB4BC: .word 0x7FF00000
diff --git a/arm9/asm/RUNTIME_f_ftoi.s b/arm9/asm/RUNTIME_f_ftoi.s
new file mode 100644
index 00000000..d7503ede
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_ftoi.s
@@ -0,0 +1,21 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ffix
+_ffix: ; 0x020EB4C0
+ bic r1, r0, #0x80000000
+ mov r2, #0x9e
+ subs r2, r2, r1, lsr #0x17
+ ble _020EB4E8
+ mov r1, r1, lsl #0x8
+ orr r1, r1, #0x80000000
+ cmp r0, #0x0
+ mov r0, r1, lsr r2
+ rsbmi r0, r0, #0x0
+ bx lr
+_020EB4E8:
+ mvn r0, r0, asr #0x1f
+ add r0, r0, #0x80000000
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_ftou.s b/arm9/asm/RUNTIME_f_ftou.s
new file mode 100644
index 00000000..74c7277f
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_ftou.s
@@ -0,0 +1,25 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ffixu
+_ffixu: ; 0x020EB4F4
+ tst r0, #0x80000000
+ bne _020EB518
+ mov r1, #0x9e
+ subs r1, r1, r0, lsr #0x17
+ blt _020EB52C
+ mov r2, r0, lsl #0x8
+ orr r0, r2, #0x80000000
+ mov r0, r0, lsr r1
+ bx lr
+_020EB518:
+ mov r2, #0xff000000
+ cmp r2, r0, lsl #0x1
+ movcs r0, #0x0
+ mvncc r0, #0x0
+ bx lr
+_020EB52C:
+ mvn r0, #0x0
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_itof.s b/arm9/asm/RUNTIME_f_itof.s
new file mode 100644
index 00000000..370e7ea1
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_itof.s
@@ -0,0 +1,51 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _fflt
+_fflt: ; 0x020EB534
+ ands r2, r0, #0x80000000
+ rsbmi r0, r0, #0x0
+ cmp r0, #0x0
+ .global __f_itof_common
+__f_itof_common:
+ bxeq lr
+ clz r3, r0
+ movs r0, r0, lsl r3
+ rsb r3, r3, #0x9e
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r3, r1, #0x7f
+ andeqs r3, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+
+ arm_func_start _ffltu
+_ffltu: ; 0x020EB57C
+ cmp r0, #0x0
+ .global __f_utof_common
+__f_utof_common:
+ bxeq lr
+ mov r3, #0x9e
+ bmi _020EB598
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+_020EB598:
+ ands r2, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r2, #0x80
+ bxeq lr
+ ands r1, r2, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_mul.s b/arm9/asm/RUNTIME_f_mul.s
new file mode 100644
index 00000000..ef48250f
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_mul.s
@@ -0,0 +1,147 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _fmul
+_fmul: ; 0x020EB5C4
+ eor r2, r0, r1
+ and r2, r2, #0x80000000
+ mov r12, #0xff
+ ands r3, r12, r0, lsr #0x17
+ mov r0, r0, lsl #0x8
+ cmpne r3, #0xff
+ beq _020EB640
+ orr r0, r0, #0x80000000
+ ands r12, r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ cmpne r12, #0xff
+ beq _020EB680
+ orr r1, r1, #0x80000000
+_020EB5F8:
+ add r12, r3, r12
+ umull r1, r3, r0, r1
+ movs r0, r3
+ addpl r0, r0, r0
+ subpl r12, r12, #0x1
+ subs r12, r12, #0x7f
+ bmi _020EB70C
+ cmp r12, #0xfe
+ bge _020EB778
+ ands r3, r0, #0xff
+ orr r0, r2, r0, lsr #0x8
+ add r0, r0, r12, lsl #0x17
+ tst r3, #0x80
+ bxeq lr
+ orrs r1, r1, r3, lsl #0x19
+ andeqs r3, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB640:
+ cmp r3, #0x0
+ beq _020EB694
+ movs r0, r0, lsl #0x1
+ bne __f_result_x_NaN
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB674
+ cmp r12, #0xff
+ blt __f_result_INF
+ cmp r1, #0x0
+ beq __f_result_INF
+ b __f_result_x_NaN
+_020EB674:
+ cmp r1, #0x0
+ beq __f_result_invalid
+ b __f_result_INF
+_020EB680:
+ cmp r12, #0x0
+ beq _020EB6F0
+_020EB688:
+ movs r1, r1, lsl #0x1
+ bne __f_result_x_NaN
+ b __f_result_INF
+_020EB694:
+ movs r0, r0, lsl #0x1
+ beq _020EB6CC
+ mov r0, r0, lsr #0x1
+ clz r3, r0
+ movs r0, r0, lsl r3
+ rsb r3, r3, #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EB6F0
+ cmp r12, #0xff
+ beq _020EB688
+ orr r1, r1, #0x80000000
+ b _020EB5F8
+_020EB6CC:
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EB79C
+ cmp r12, #0xff
+ blt _020EB79C
+ cmp r1, #0x0
+ beq __f_result_invalid
+ b __f_result_x_NaN
+_020EB6F0:
+ movs r1, r1, lsl #0x1
+ beq _020EB79C
+ mov r1, r1, lsr #0x1
+ clz r12, r1
+ movs r1, r1, lsl r12
+ rsb r12, r12, #0x1
+ b _020EB5F8
+_020EB70C:
+ cmn r12, #0x18
+ beq _020EB754
+ bmi _020EB794
+ cmp r1, #0x0
+ orrne r0, r0, #0x1
+ mov r3, r0
+ mov r0, r0, lsr #0x8
+ rsb r12, r12, #0x0
+ orr r0, r2, r0, lsr r12
+ rsb r12, r12, #0x18
+ movs r1, r3, lsl r12
+ bxeq lr
+ tst r1, #0x80000000
+ bxeq lr
+ movs r1, r1, lsl #0x1
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB754:
+ mov r0, r0, lsl #0x1
+ b _020EB784
+ .global __f_result_INF
+__f_result_INF:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+ .global __f_result_x_NaN
+__f_result_x_NaN:
+ mvn r0, #0x80000000
+ bx lr
+ .global __f_result_invalid
+__f_result_invalid:
+ mvn r0, #0x80000000
+ bx lr
+_020EB778:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EB784:
+ movs r1, r0
+ mov r0, r2
+ addne r0, r0, #0x1
+ bx lr
+_020EB794:
+ mov r0, r2
+ bx lr
+_020EB79C:
+ mov r0, r2
+ bx lr
diff --git a/arm9/asm/RUNTIME_f_sub.s b/arm9/asm/RUNTIME_f_sub.s
new file mode 100644
index 00000000..e3c6560e
--- /dev/null
+++ b/arm9/asm/RUNTIME_f_sub.s
@@ -0,0 +1,195 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .extern __fadd_start
+
+ .text
+
+ arm_func_start _frsb
+_frsb: ; 0x020EB7A4
+ eor r0, r0, r1
+ eor r1, r0, r1
+ eor r0, r0, r1
+
+ arm_func_start _fsub
+_fsub: ; 0x020EB7B0
+ eors r2, r0, r1
+ eormi r1, r1, #0x80000000
+ bmi __fadd_start
+ .global __fsub_start
+__fsub_start:
+ subs r12, r0, r1
+ eorcc r12, r12, #0x80000000
+ subcc r0, r0, r12
+ addcc r1, r1, r12
+ mov r2, #0x80000000
+ mov r3, r0, lsr #0x17
+ orr r0, r2, r0, lsl #0x8
+ ands r12, r3, #0xff
+ cmpne r12, #0xff
+ beq _020EB8D8
+ mov r12, r1, lsr #0x17
+ orr r1, r2, r1, lsl #0x8
+ ands r2, r12, #0xff
+ beq _020EB918
+_020EB7F4:
+ subs r12, r3, r12
+ beq _020EB83C
+ rsb r2, r12, #0x20
+ movs r2, r1, lsl r2
+ mov r1, r1, lsr r12
+ orrne r1, r1, #0x1
+ subs r0, r0, r1
+ bpl _020EB880
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB83C:
+ subs r0, r0, r1
+ beq _020EB9E4
+ mov r2, r3, lsl #0x17
+ and r2, r2, #0x80000000
+ bic r3, r3, #0x100
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ cmp r3, #0x0
+ bgt _020EB870
+ rsb r3, r3, #0x9
+ orr r0, r2, r0, lsr r3
+ bx lr
+_020EB870:
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EB880:
+ mov r2, r3, lsl #0x17
+ and r2, r2, #0x80000000
+ bic r3, r3, #0x100
+ clz r12, r0
+ movs r0, r0, lsl r12
+ sub r3, r3, r12
+ cmp r3, #0x0
+ bgt _020EB8AC
+ rsb r3, r3, #0x9
+ orr r0, r2, r0, lsr r3
+ bx lr
+_020EB8AC:
+ ands r1, r0, #0xff
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bxeq lr
+ tst r1, #0x80
+ bxeq lr
+ ands r1, r1, #0x7f
+ andeqs r1, r0, #0x1
+ addne r0, r0, #0x1
+ bx lr
+_020EB8D8:
+ cmp r3, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ ands r3, r3, #0xff
+ beq _020EB940
+ movs r0, r0, lsl #0x1
+ bne _020EBA18
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x9
+ ands r12, r12, #0xff
+ beq _020EBA0C
+ cmp r12, #0xff
+ blt _020EBA0C
+ cmp r1, #0x0
+ beq _020EBA20
+ b _020EBA18
+_020EB918:
+ cmp r12, #0x100
+ movge r2, #0x80000000
+ movlt r2, #0x0
+ and r3, r3, #0xff
+ ands r12, r12, #0xff
+ beq _020EB9A8
+_020EB930:
+ eor r2, r2, #0x80000000
+ movs r1, r1, lsl #0x1
+ bne _020EBA18
+ b _020EBA0C
+_020EB940:
+ movs r0, r0, lsl #0x1
+ beq _020EB978
+ mov r0, r0, lsr #0x1
+ mov r3, #0x1
+ mov r12, r1, lsr #0x17
+ mov r1, r1, lsl #0x8
+ ands r12, r12, #0xff
+ beq _020EB9A8
+ cmp r12, #0xff
+ beq _020EB930
+ orr r1, r1, #0x80000000
+ orr r3, r3, r2, lsr #0x17
+ orr r12, r12, r2, lsr #0x17
+ b _020EB7F4
+_020EB978:
+ mov r3, r1, lsr #0x17
+ mov r0, r1, lsl #0x9
+ ands r2, r3, #0xff
+ beq _020EB99C
+ cmp r2, #0xff
+ blt _020EB9C4
+ cmp r0, #0x0
+ bne _020EBA04
+ b _020EBA0C
+_020EB99C:
+ cmp r0, #0x0
+ beq _020EB9E4
+ b _020EB9C4
+_020EB9A8:
+ movs r1, r1, lsl #0x1
+ beq _020EB9CC
+ mov r1, r1, lsr #0x1
+ mov r12, #0x1
+ orr r12, r12, r2, lsr #0x17
+ orr r3, r3, r2, lsr #0x17
+ b _020EB7F4
+_020EB9C4:
+ mov r0, r1
+ bx lr
+_020EB9CC:
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ orr r0, r2, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EB9E4:
+ mov r0, #0x0
+ bx lr
+_020EB9EC: ; 0x020EB9EC
+ cmp r0, #0x0
+ subges r3, r3, #0x1
+ add r0, r0, r0
+ mov r0, r0, lsr #0x9
+ orr r0, r0, r3, lsl #0x17
+ bx lr
+_020EBA04:
+ mvn r0, #0x80000000
+ bx lr
+_020EBA0C:
+ mov r0, #0xff000000
+ orr r0, r2, r0, lsr #0x1
+ bx lr
+_020EBA18:
+ mvn r0, #0x80000000
+ bx lr
+_020EBA20:
+ mvn r0, #0x80000000
+ bx lr
diff --git a/arm9/asm/RUNTIME_ieee_status.s b/arm9/asm/RUNTIME_ieee_status.s
new file mode 100644
index 00000000..652bb8e3
--- /dev/null
+++ b/arm9/asm/RUNTIME_ieee_status.s
@@ -0,0 +1,8 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _fp_init
+_fp_init: ; 0x020EC5CC
+ bx lr
diff --git a/arm9/asm/RUNTIME_ll_div.s b/arm9/asm/RUNTIME_ll_div.s
new file mode 100644
index 00000000..9b53d21b
--- /dev/null
+++ b/arm9/asm/RUNTIME_ll_div.s
@@ -0,0 +1,167 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ll_mod
+_ll_mod: ; 0x020EBA28
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, r1
+ orr r4, r4, #0x1
+ b _020EBA48
+
+ arm_func_start _ll_sdiv
+_ll_sdiv: ; 0x020EBA38
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ eor r4, r1, r3
+ mov r4, r4, asr #0x1
+ mov r4, r4, lsl #0x1
+_020EBA48:
+ orrs r5, r3, r2
+ bne _020EBA58
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBA58:
+ mov r5, r0, lsr #0x1f
+ add r5, r5, r1
+ mov r6, r2, lsr #0x1f
+ add r6, r6, r3
+ orrs r6, r5, r6
+ bne _020EBA8C
+ mov r1, r2
+ bl _s32_div_f
+ ands r4, r4, #0x1
+ movne r0, r1
+ mov r1, r0, asr #0x1f
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBA8C:
+ cmp r1, #0x0
+ bge _020EBA9C
+ rsbs r0, r0, #0x0
+ rsc r1, r1, #0x0
+_020EBA9C:
+ cmp r3, #0x0
+ bge _020EBAAC
+ rsbs r2, r2, #0x0
+ rsc r3, r3, #0x0
+_020EBAAC:
+ orrs r5, r1, r0
+ beq _020EBBD0
+ mov r5, #0x0
+ mov r6, #0x1
+ cmp r3, #0x0
+ bmi _020EBAD8
+_020EBAC4:
+ add r5, r5, #0x1
+ adds r2, r2, r2
+ adcs r3, r3, r3
+ bpl _020EBAC4
+ add r6, r6, r5
+_020EBAD8:
+ cmp r1, #0x0
+ blt _020EBAF8
+_020EBAE0:
+ cmp r6, #0x1
+ beq _020EBAF8
+ sub r6, r6, #0x1
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ bpl _020EBAE0
+_020EBAF8:
+ mov r7, #0x0
+ mov r12, #0x0
+ mov r11, #0x0
+ b _020EBB20
+_020EBB08:
+ orr r12, r12, #0x1
+ subs r6, r6, #0x1
+ beq _020EBB78
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ adcs r7, r7, r7
+_020EBB20:
+ subs r0, r0, r2
+ sbcs r1, r1, r3
+ sbcs r7, r7, #0x0
+ adds r12, r12, r12
+ adc r11, r11, r11
+ cmp r7, #0x0
+ bge _020EBB08
+_020EBB3C:
+ subs r6, r6, #0x1
+ beq _020EBB70
+ adds r0, r0, r0
+ adcs r1, r1, r1
+ adc r7, r7, r7
+ adds r0, r0, r2
+ adcs r1, r1, r3
+ adc r7, r7, #0x0
+ adds r12, r12, r12
+ adc r11, r11, r11
+ cmp r7, #0x0
+ bge _020EBB08
+ b _020EBB3C
+_020EBB70:
+ adds r0, r0, r2
+ adc r1, r1, r3
+_020EBB78:
+ ands r7, r4, #0x1
+ moveq r0, r12
+ moveq r1, r11
+ beq _020EBBB0
+ subs r7, r5, #0x20
+ movge r0, r1, lsr r7
+ bge _020EBBD4
+ rsb r7, r5, #0x20
+ mov r0, r0, lsr r5
+ orr r0, r0, r1, lsl r7
+ mov r1, r1, lsr r5
+ b _020EBBB0
+_020EBBA8: ; 0x020EBBA8
+ mov r0, r1, lsr r7
+ mov r1, #0x0
+_020EBBB0:
+ cmp r4, #0x0
+ blt _020EBBC0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBBC0:
+ rsbs r0, r0, #0x0
+ rsc r1, r1, #0x0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBBD0:
+ mov r0, #0x0
+_020EBBD4:
+ mov r1, #0x0
+ cmp r4, #0x0
+ blt _020EBBC0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+
+ arm_func_start _ll_udiv
+_ll_udiv: ; 0x020EBBE8
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, #0x0
+ b _020EBBFC
+
+ arm_func_start _ull_mod
+_ull_mod: ; 0x020EBBF4
+ stmdb sp!, {r4-r7,r11-r12,lr}
+ mov r4, #0x1
+_020EBBFC:
+ orrs r5, r3, r2
+ bne _020EBC0C
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
+_020EBC0C:
+ orrs r5, r1, r3
+ bne _020EBAAC
+ mov r1, r2
+ bl _u32_div_not_0_f
+ cmp r4, #0x0
+ movne r0, r1
+ mov r1, #0x0
+ ldmia sp!, {r4-r7,r11-r12,lr}
+ bx lr
diff --git a/arm9/asm/RUNTIME_ll_mul.s b/arm9/asm/RUNTIME_ll_mul.s
new file mode 100644
index 00000000..965efe9e
--- /dev/null
+++ b/arm9/asm/RUNTIME_ll_mul.s
@@ -0,0 +1,15 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ll_mul
+_ll_mul: ; 0x020EBC30
+ stmdb sp!, {r4-r5,lr}
+ umull r5, r4, r0, r2
+ mla r4, r0, r3, r4
+ mla r4, r2, r1, r4
+ mov r1, r4
+ mov r0, r5
+ ldmia sp!, {r4-r5,lr}
+ bx lr
diff --git a/arm9/asm/RUNTIME_ll_sll.s b/arm9/asm/RUNTIME_ll_sll.s
new file mode 100644
index 00000000..c4f37ead
--- /dev/null
+++ b/arm9/asm/RUNTIME_ll_sll.s
@@ -0,0 +1,20 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ll_shl
+_ll_shl: ; 0x020EBC50
+ ands r2, r2, #0x3f
+ bxeq lr
+ subs r3, r2, #0x20
+ bge _020EBC74
+ rsb r3, r2, #0x20
+ mov r1, r1, lsl r2
+ orr r1, r1, r0, lsr r3
+ mov r0, r0, lsl r2
+ bx lr
+_020EBC74:
+ mov r1, r0, lsl r3
+ mov r0, #0x0
+ bx lr
diff --git a/arm9/asm/RUNTIME_s32_div_f.s b/arm9/asm/RUNTIME_s32_div_f.s
new file mode 100644
index 00000000..2dc6cc7e
--- /dev/null
+++ b/arm9/asm/RUNTIME_s32_div_f.s
@@ -0,0 +1,139 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _s32_div_f
+_s32_div_f: ; 0x020EBC80
+ eor r12, r0, r1
+ and r12, r12, #0x80000000
+ cmp r0, #0x0
+ rsblt r0, r0, #0x0
+ addlt r12, r12, #0x1
+ cmp r1, #0x0
+ rsblt r1, r1, #0x0
+ beq _020EBE78
+ cmp r0, r1
+ movcc r1, r0
+ movcc r0, #0x0
+ blo _020EBE78
+ mov r2, #0x1c
+ mov r3, r0, lsr #0x4
+ cmp r1, r3, lsr #0xc
+ suble r2, r2, #0x10
+ movle r3, r3, lsr #0x10
+ cmp r1, r3, lsr #0x4
+ suble r2, r2, #0x8
+ movle r3, r3, lsr #0x8
+ cmp r1, r3
+ suble r2, r2, #0x4
+ movle r3, r3, lsr #0x4
+ mov r0, r0, lsl r2
+ rsb r1, r1, #0x0
+ adds r0, r0, r0
+ add r2, r2, r2, lsl #0x1
+ add pc, pc, r2, lsl #0x2
+ mov r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ mov r1, r3
+_020EBE78:
+ ands r3, r12, #0x80000000
+ rsbne r0, r0, #0x0
+ ands r3, r12, #0x1
+ rsbne r1, r1, #0x0
+ bx lr
diff --git a/arm9/asm/RUNTIME_u32_div_f.s b/arm9/asm/RUNTIME_u32_div_f.s
new file mode 100644
index 00000000..5042c504
--- /dev/null
+++ b/arm9/asm/RUNTIME_u32_div_f.s
@@ -0,0 +1,131 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _u32_div_f
+_u32_div_f: ; 0x020EBE8C
+ cmp r1, #0x0
+ bxeq lr
+
+ arm_func_start _u32_div_not_0_f
+_u32_div_not_0_f:
+ cmp r0, r1
+ movcc r1, r0
+ movcc r0, #0x0
+ bxcc lr
+ mov r2, #0x1c
+ mov r3, r0, lsr #0x4
+ cmp r1, r3, lsr #0xc
+ suble r2, r2, #0x10
+ movle r3, r3, lsr #0x10
+ cmp r1, r3, lsr #0x4
+ suble r2, r2, #0x8
+ movle r3, r3, lsr #0x8
+ cmp r1, r3
+ suble r2, r2, #0x4
+ movle r3, r3, lsr #0x4
+ mov r0, r0, lsl r2
+ rsb r1, r1, #0x0
+ adds r0, r0, r0
+ add r2, r2, r2, lsl #0x1
+ add pc, pc, r2, lsl #0x2
+ mov r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ adcs r3, r1, r3, lsl #0x1
+ subcc r3, r3, r1
+ adcs r0, r0, r0
+ mov r1, r3
+ bx lr
diff --git a/arm9/asm/SPI_tp.s b/arm9/asm/SPI_tp.s
index 233da29f..7766abdd 100644
--- a/arm9/asm/SPI_tp.s
+++ b/arm9/asm/SPI_tp.s
@@ -15,7 +15,7 @@ UNK_021D5474: ; 0x021D5474
UNK_021D548C: ; 0x021D548C
.space 0x20
- .text
+ .text
arm_func_start TP_CheckError
TP_CheckError: ; 0x020D36C4
diff --git a/arm9/asm/WM_dcf.s b/arm9/asm/WM_dcf.s
index eb802550..779bb2ec 100644
--- a/arm9/asm/WM_dcf.s
+++ b/arm9/asm/WM_dcf.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WM_EndDCF
WM_EndDCF: ; 0x020D9DDC
diff --git a/arm9/asm/WM_ds.s b/arm9/asm/WM_ds.s
index c2a26eb4..f83211ee 100644
--- a/arm9/asm/WM_ds.s
+++ b/arm9/asm/WM_ds.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WmGetSharedDataAddress
WmGetSharedDataAddress: ; 0x020DA00C
diff --git a/arm9/asm/WM_ks.s b/arm9/asm/WM_ks.s
index ba5fdb5c..3dd46c1b 100644
--- a/arm9/asm/WM_ks.s
+++ b/arm9/asm/WM_ks.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WM_EndKeySharing
WM_EndKeySharing: ; 0x020DAD3C
diff --git a/arm9/asm/WM_mp.s b/arm9/asm/WM_mp.s
index 0c2fca76..46b44fed 100644
--- a/arm9/asm/WM_mp.s
+++ b/arm9/asm/WM_mp.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WM_EndMP
WM_EndMP: ; 0x020D9960
diff --git a/arm9/asm/WM_standard.s b/arm9/asm/WM_standard.s
index 5d7e8db9..869015a6 100644
--- a/arm9/asm/WM_standard.s
+++ b/arm9/asm/WM_standard.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .text
arm_func_start WM_Disconnect
WM_Disconnect: ; 0x020D9060
diff --git a/arm9/asm/WM_sync.s b/arm9/asm/WM_sync.s
index 65163b4f..c50663c4 100644
--- a/arm9/asm/WM_sync.s
+++ b/arm9/asm/WM_sync.s
@@ -7,7 +7,7 @@
UNK_02106A54: ; 0x02106A54
.word 0x00010000
- .text
+ .text
arm_func_start WM_GetNextTgid
WM_GetNextTgid: ; 0x020D8868
diff --git a/arm9/asm/WM_system.s b/arm9/asm/WM_system.s
index e3792814..9b77b7c4 100644
--- a/arm9/asm/WM_system.s
+++ b/arm9/asm/WM_system.s
@@ -35,7 +35,7 @@ UNK_021D5E9C: ; 0x021D5E9C
UNK_021D5EC0: ; 0x021D5EC0
.space 0xa00
- .text
+ .text
arm_func_start WMi_GetMPReadyAIDs
WMi_GetMPReadyAIDs: ; 0x020D7DE0
diff --git a/arm9/asm/libc.s b/arm9/asm/libc.s
deleted file mode 100644
index 39c2decb..00000000
--- a/arm9/asm/libc.s
+++ /dev/null
@@ -1,14430 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .extern OSi_ThreadInfo
-
- .section .rodata
-
- .global UNK_0210420C
-UNK_0210420C: ; 0x0210420C
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
- .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
- .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
- .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
- .byte 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
- .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
- .byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F
- .byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
-
- .global UNK_0210428C
-UNK_0210428C: ; 0x0210428C
- .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
- .byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
- .byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F
- .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
- .byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
- .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F
- .byte 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
- .byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
-
- .global UNK_0210430C
-UNK_0210430C: ; 0x0210430C
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x06, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
- .byte 0x42, 0x01, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04
- .byte 0x58, 0x04, 0x58, 0x04, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
- .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
- .byte 0xD0, 0x00, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
- .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x04, 0x00
-
- .global UNK_0210440C
-UNK_0210440C: ; 0x0210440C
- .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02104434
-UNK_02104434: ; 0x02104434
- .asciz "NAN("
-
- .global UNK_02104439
-UNK_02104439: ; 0x02104439
- .asciz "INFINITY"
- .balign 4
- .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007
- .short 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F
- .short 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017
- .short 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F
- .short 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027
- .short 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F
- .short 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037
- .short 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F
- .short 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067
- .short 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F
- .short 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077
- .short 0x0078, 0x0079, 0x007A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F
- .short 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067
- .short 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F
- .short 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077
- .short 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F
-
- .global UNK_02104544
-UNK_02104544: ; 0x02104544
- .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
- .short 0x0004, 0x0106, 0x0104, 0x0104, 0x0104, 0x0104, 0x0004, 0x0004
- .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
- .short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
- .short 0x0142, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
- .short 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
- .short 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458
- .short 0x0458, 0x0458, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
- .short 0x00D0, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0251
- .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
- .short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
- .short 0x0251, 0x0251, 0x0251, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
- .short 0x00D0, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0071
- .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
- .short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
- .short 0x0071, 0x0071, 0x0071, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x0004
- .short 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007
- .short 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F
- .short 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017
- .short 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F
- .short 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027
- .short 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F
- .short 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037
- .short 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F
- .short 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047
- .short 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F
- .short 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057
- .short 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F
- .short 0x0060, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047
- .short 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F
- .short 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057
- .short 0x0058, 0x0059, 0x005A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F
-
- .global UNK_02104744
-UNK_02104744: ; 0x02104744
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0xB8, 0xE2, 0x3F
-
- .global UNK_02104754
-UNK_02104754: ; 0x02104754
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F
-
- .global UNK_02104764
-UNK_02104764: ; 0x02104764
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xD0, 0xCF, 0x43, 0xEB, 0xFD, 0x4C, 0x3E
-
- .section .data
-
- .global UNK_02106A58
-UNK_02106A58: ; 0x02106A58
- .byte 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D73A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D73A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106AA4
-UNK_02106AA4: ; 0x02106AA4
- .byte 0x01, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D72A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D72A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106AF0
-UNK_02106AF0: ; 0x02106AF0
- .byte 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D71A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D71A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106B3C
-UNK_02106B3C: ; 0x02106B3C
- .asciz "Assertion (%s) failed in \"%s\", function \"%s\", line %d\n"
-
- .balign 4, 0
- .global UNK_02106B74
-UNK_02106B74: ; 0x02106B74
- .word 0x7F800000 ; inf
-
- .global UNK_02106B78
-UNK_02106B78: ; 0x02106B78
- .word 0x7FFFFFFF ; nan
-
- .global UNK_02106B7C
-UNK_02106B7C: ; 0x02106B7C
- .word 0x00000000, 0x7FF00000 ; 1.06047983e-314
-
- .global UNK_02106B84
-UNK_02106B84: ; 0x02106B84
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106B88
-UNK_02106B88: ; 0x02106B88
- .byte 0x25, 0x54, 0x00, 0x00
-
- .global UNK_02106B8C
-UNK_02106B8C: ; 0x02106B8C
- .asciz "AM|PM"
-
- .balign 4, 0
- .global UNK_02106B94
-UNK_02106B94: ; 0x02106B94
- .word __mbtowc_noconv
- .word __wctomb_noconv
-
- .global UNK_02106B9C
-UNK_02106B9C: ; 0x02106B9C
- .byte 0x20, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_02106BCC
-
- .global UNK_02106BAC
-UNK_02106BAC: ; 0x02106BAC
- .word UNK_02106B8C
- .word UNK_02106CB0
- .word UNK_02106CA4
- .word UNK_02106C8C
- .word UNK_02106B88
- .word UNK_02106CC0
- .word UNK_02106D18
- .word UNK_02106B84
-
- .global UNK_02106BCC
-UNK_02106BCC: ; 0x02106BCC
- .byte 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00
- .byte 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00
- .byte 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00
- .byte 0x29, 0x00, 0x2A, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00
- .byte 0x17, 0x00, 0x2B, 0x00, 0x2D, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x33, 0x00, 0x35, 0x00, 0x37, 0x00
- .byte 0x39, 0x00, 0x3B, 0x00, 0x3D, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x47, 0x00
- .byte 0x49, 0x00, 0x4B, 0x00, 0x4D, 0x00, 0x4F, 0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x00, 0x57, 0x00
- .byte 0x59, 0x00, 0x5B, 0x00, 0x5D, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00
- .byte 0x00, 0x00, 0x2C, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x32, 0x00, 0x34, 0x00, 0x36, 0x00, 0x38, 0x00
- .byte 0x3A, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x46, 0x00, 0x48, 0x00
- .byte 0x4A, 0x00, 0x4C, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x52, 0x00, 0x54, 0x00, 0x56, 0x00, 0x58, 0x00
- .byte 0x5A, 0x00, 0x5C, 0x00, 0x5E, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x00, 0x00
-
- .global UNK_02106C8C
-UNK_02106C8C: ; 0x02106C8C
- .asciz "%m/%d/%y"
-
- .balign 4, 0
- .global UNK_02106C98
-UNK_02106C98: ; 0x02106C98
- .word UNK_02106BAC
- .word UNK_02106B9C
- .word UNK_02106B94
-
- .global UNK_02106CA4
-UNK_02106CA4: ; 0x02106CA4
- .asciz "%I:%M:%S %p"
-
- .balign 4, 0
- .global UNK_02106CB0
-UNK_02106CB0: ; 0x02106CB0
- .asciz "%a %b %e %T %Y"
-
- .balign 4, 0
- .global UNK_02106CC0
-UNK_02106CC0: ; 0x02106CC0
- .asciz "Sun|Sunday|Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday"
-
- .balign 4, 0
- .global UNK_02106D18
-UNK_02106D18: ; 0x02106D18
- .asciz "Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December"
-
- .balign 4, 0
- .global UNK_02106DA0
-UNK_02106DA0: ; 0x02106DA0
- .byte 0x30, 0x78, 0x30, 0x70, 0x30, 0x00, 0x00, 0x00
-
- .global UNK_02106DA8
-UNK_02106DA8: ; 0x02106DA8
- .asciz "-INF"
-
- .balign 4, 0
- .global UNK_02106DB0
-UNK_02106DB0: ; 0x02106DB0
- .asciz "-inf"
-
- .balign 4, 0
- .global UNK_02106DB8
-UNK_02106DB8: ; 0x02106DB8
- .asciz "INF"
-
- .balign 4, 0
- .global UNK_02106DBC
-UNK_02106DBC: ; 0x02106DBC
- .asciz "inf"
-
- .balign 4, 0
- .global UNK_02106DC0
-UNK_02106DC0: ; 0x02106DC0
- .asciz "-NAN"
-
- .balign 4, 0
- .global UNK_02106DC8
-UNK_02106DC8: ; 0x02106DC8
- .asciz "-nan"
-
- .balign 4, 0
- .global UNK_02106DD0
-UNK_02106DD0: ; 0x02106DD0
- .asciz "NAN"
-
- .balign 4, 0
- .global UNK_02106DD4
-UNK_02106DD4: ; 0x02106DD4
- .asciz "nan"
-
- .balign 4, 0
- .global UNK_02106DD8
-UNK_02106DD8: ; 0x02106DD8
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106DDC
-UNK_02106DDC: ; 0x02106DDC
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106DE0
-UNK_02106DE0: ; 0x02106DE0
- .byte 0x01, 0x00, 0x00, 0x00
-
- .global UNK_02106DE4
-UNK_02106DE4: ; 0x02106DE4
- .byte 0x30, 0x00, 0x78, 0x00, 0x30, 0x00, 0x70, 0x00, 0x30, 0x00, 0x00, 0x00
-
- .global UNK_02106DF0
-UNK_02106DF0: ; 0x02106DF0
- .byte 0x2D, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106DFC
-UNK_02106DFC: ; 0x02106DFC
- .byte 0x2D, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E08
-UNK_02106E08: ; 0x02106E08
- .byte 0x49, 0x00, 0x4E, 0x00, 0x46, 0x00, 0x00, 0x00
-
- .global UNK_02106E10
-UNK_02106E10: ; 0x02106E10
- .byte 0x69, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x00, 0x00
-
- .global UNK_02106E18
-UNK_02106E18: ; 0x02106E18
- .byte 0x2D, 0x00, 0x4E, 0x00, 0x41, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E24
-UNK_02106E24: ; 0x02106E24
- .byte 0x2D, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E30
-UNK_02106E30: ; 0x02106E30
- .byte 0x4E, 0x00, 0x41, 0x00, 0x4E, 0x00, 0x00, 0x00
-
- .global UNK_02106E38
-UNK_02106E38: ; 0x02106E38
- .byte 0x6E, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00
-
- .global UNK_02106E40
-UNK_02106E40: ; 0x02106E40
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E44
-UNK_02106E44: ; 0x02106E44
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106E48
-UNK_02106E48: ; 0x02106E48
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x40
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xC3, 0x40
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xF8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x2E, 0x41
- .byte 0x00, 0x00, 0x00, 0x00, 0xD0, 0x12, 0x63, 0x41, 0x00, 0x00, 0x00, 0x00, 0x84, 0xD7, 0x97, 0x41
-
- .global UNK_02106E88
-UNK_02106E88: ; 0x02106E88
- .asciz "542101086242752217003726400434970855712890625"
-
- .balign 4, 0
- .global UNK_02106EB8
-UNK_02106EB8: ; 0x02106EB8
- .asciz "11102230246251565404236316680908203125"
-
- .balign 4, 0
- .global UNK_02106EE0
-UNK_02106EE0: ; 0x02106EE0
- .asciz "23283064365386962890625"
-
- .balign 4, 0
- .global UNK_02106EF8
-UNK_02106EF8: ; 0x02106EF8
- .asciz "152587890625"
-
- .balign 4, 0
- .global UNK_02106F08
-UNK_02106F08: ; 0x02106F08
- .asciz "390625"
-
- .balign 4, 0
- .global UNK_02106F10
-UNK_02106F10: ; 0x02106F10
- .asciz "78125"
-
- .balign 4, 0
- .global UNK_02106F18
-UNK_02106F18: ; 0x02106F18
- .asciz "15625"
-
- .balign 4, 0
- .global UNK_02106F20
-UNK_02106F20: ; 0x02106F20
- .asciz "3125"
-
- .balign 4, 0
- .global UNK_02106F28
-UNK_02106F28: ; 0x02106F28
- .asciz "625"
-
- .balign 4, 0
- .global UNK_02106F2C
-UNK_02106F2C: ; 0x02106F2C
- .asciz "125"
-
- .balign 4, 0
- .global UNK_02106F30
-UNK_02106F30: ; 0x02106F30
- .asciz "25"
-
- .balign 4, 0
- .global UNK_02106F34
-UNK_02106F34: ; 0x02106F34
- .asciz "5"
-
- .balign 4, 0
- .global UNK_02106F38
-UNK_02106F38: ; 0x02106F38
- .asciz "1"
-
- .balign 4, 0
- .global UNK_02106F3C
-UNK_02106F3C: ; 0x02106F3C
- .asciz "2"
-
- .balign 4, 0
- .global UNK_02106F40
-UNK_02106F40: ; 0x02106F40
- .asciz "4"
-
- .balign 4, 0
- .global UNK_02106F44
-UNK_02106F44: ; 0x02106F44
- .asciz "8"
-
- .balign 4, 0
- .global UNK_02106F48
-UNK_02106F48: ; 0x02106F48
- .asciz "16"
-
- .balign 4, 0
- .global UNK_02106F4C
-UNK_02106F4C: ; 0x02106F4C
- .asciz "32"
-
- .balign 4, 0
- .global UNK_02106F50
-UNK_02106F50: ; 0x02106F50
- .asciz "64"
-
- .balign 4, 0
- .global UNK_02106F54
-UNK_02106F54: ; 0x02106F54
- .asciz "128"
-
- .balign 4, 0
- .global UNK_02106F58
-UNK_02106F58: ; 0x02106F58
- .asciz "256"
-
- .balign 4, 0
- .global UNK_02106F5C
-UNK_02106F5C: ; 0x02106F5C
- .asciz "179769313486231580793728714053034151"
-
- .section .bss
-
- .global UNK_021D6F78
-UNK_021D6F78: ; 0x021D6F78
- .space 0x10
-
- .global UNK_021D6F88
-UNK_021D6F88: ; 0x021D6F88
- .space 0x100
-
- .global UNK_021D7088
-UNK_021D7088: ; 0x021D7088
- .space 0x24
-
- .global UNK_021D70AC
-UNK_021D70AC: ; 0x021D70AC
- .space 0x24
-
- .global UNK_021D70D0
-UNK_021D70D0: ; 0x021D70D0
- .space 0x48
-
- .global UNK_021D7118
-UNK_021D7118: ; 0x021D7118
- .space 0x60
-
- .global UNK_021D7178
-UNK_021D7178: ; 0x021D7178
- .space 0x30
-
- .global UNK_021D71A8
-UNK_021D71A8: ; 0x021D71A8
- .space 0x100
-
- .global UNK_021D72A8
-UNK_021D72A8: ; 0x021D72A8
- .space 0x100
-
- .global UNK_021D73A8
-UNK_021D73A8: ; 0x021D73A8
- .space 0x100
-
- .global UNK_021D74A8
-UNK_021D74A8: ; 0x021D74A8
- .space 0x4
-
- .global UNK_021D74AC
-UNK_021D74AC: ; 0x021D74AC
- .space 0x1c
-
- .section .text
- .balign 4, 0
-
- arm_func_start abort
-abort: ; 0x020DE14C
- stmdb sp!, {r3,lr}
- mov r0, #0x1
- bl raise
- ldr r1, _020DE16C ; =UNK_021D6F78
- mov r0, #0x1
- str r0, [r1, #0xc]
- bl exit
- ldmia sp!, {r3,pc}
- .balign 4
-_020DE16C: .word UNK_021D6F78
-
- arm_func_start exit
-exit: ; 0x020DE170
- stmdb sp!, {r4,lr}
- ldr r1, _020DE1B8 ; =UNK_021D6F78
- mov r4, r0
- ldr r0, [r1, #0xc]
- cmp r0, #0x0
- bne _020DE1AC
- bl __destroy_global_chain
- ldr r0, _020DE1B8 ; =UNK_021D6F78
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _020DE1AC
- blx r0
- ldr r0, _020DE1B8 ; =UNK_021D6F78
- mov r1, #0x0
- str r1, [r0, #0x4]
-_020DE1AC:
- mov r0, r4
- bl __exit
- ldmia sp!, {r4,pc}
- .balign 4
-_020DE1B8: .word UNK_021D6F78
-
- arm_func_start __exit
-__exit: ; 0x020DE1BC
- stmdb sp!, {r3-r5,lr}
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DE1F4
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
- b _020DE24C
-_020DE1F4:
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, #0x0]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DE224
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r1, [r0, #0x0]
- add r1, r1, #0x1
- str r1, [r0, #0x0]
- b _020DE24C
-_020DE224:
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_LockMutex
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
-_020DE24C:
- ldr r4, _020DE2DC ; =UNK_021D6F78
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- ble _020DE280
- ldr r5, _020DE2E0 ; =UNK_021D6F88
-_020DE260:
- ldr r0, [r4, #0x8]
- sub r1, r0, #0x1
- ldr r0, [r5, r1, lsl #0x2]
- str r1, [r4, #0x8]
- blx r0
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- bgt _020DE260
-_020DE280:
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r1, [r0, #0x0]
- subs r1, r1, #0x1
- str r1, [r0, #0x0]
- bne _020DE29C
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_UnlockMutex
-_020DE29C:
- ldr r0, _020DE2DC ; =UNK_021D6F78
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020DE2BC
- blx r0
- ldr r0, _020DE2DC ; =UNK_021D6F78
- mov r1, #0x0
- str r1, [r0, #0x0]
-_020DE2BC:
- mov r0, #0x0
- bl fflush
- bl _ExitProcess
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020DE2CC: .word UNK_021D70D0
-_020DE2D0: .word OSi_ThreadInfo
-_020DE2D4: .word UNK_021D7088
-_020DE2D8: .word UNK_021D70AC
-_020DE2DC: .word UNK_021D6F78
-_020DE2E0: .word UNK_021D6F88
-
- arm_func_start nan
-nan: ; 0x020DE2E4
- ldr r0, _020DE2F4 ; =UNK_02106B78
- ldr ip, _020DE2F8 ; =_f2d
- ldr r0, [r0, #0x0]
- bx r12
- .balign 4
-_020DE2F4: .word UNK_02106B78
-_020DE2F8: .word _f2d
-
- arm_func_start __flush_line_buffered_output_files
-__flush_line_buffered_output_files:
- stmdb sp!, {r3-r9,lr}
- ldr r0, _020DE384 ; =UNK_02106A58
- mov r4, #0x0
- mov r5, #0x1
- mov r8, r0
- mvn r9, #0x0
- mov r7, r4
- mov r6, #0x4c
-_020DE31C:
- ldr r1, [r0, #0x4]
- mov r2, r1, lsl #0x16
- movs r2, r2, lsr #0x1d
- beq _020DE35C
- mov r1, r1, lsl #0x19
- mov r1, r1, lsr #0x1e
- tst r1, #0x1
- beq _020DE35C
- ldr r1, [r0, #0x8]
- mov r1, r1, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- bne _020DE35C
- bl fflush
- cmp r0, #0x0
- movne r4, r9
-_020DE35C:
- cmp r5, #0x3
- movge r0, r7
- bge _020DE374
- mul r0, r5, r6
- add r5, r5, #0x1
- add r0, r8, r0
-_020DE374:
- cmp r0, #0x0
- bne _020DE31C
- mov r0, r4
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DE384: .word UNK_02106A58
-
- arm_func_start __flush_all
-__flush_all: ; 0x020DE388
- stmdb sp!, {r3-r9,lr}
- ldr r0, _020DE3EC ; =UNK_02106A58
- mov r4, #0x0
- mov r5, #0x1
- mov r8, r0
- mvn r9, #0x0
- mov r7, r4
- mov r6, #0x4c
-_020DE3A8:
- ldr r1, [r0, #0x4]
- mov r1, r1, lsl #0x16
- movs r1, r1, lsr #0x1d
- beq _020DE3C4
- bl fflush
- cmp r0, #0x0
- movne r4, r9
-_020DE3C4:
- cmp r5, #0x3
- movge r0, r7
- bge _020DE3DC
- mul r0, r5, r6
- add r5, r5, #0x1
- add r0, r8, r0
-_020DE3DC:
- cmp r0, #0x0
- bne _020DE3A8
- mov r0, r4
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DE3EC: .word UNK_02106A58
-
- arm_func_start abs
-abs: ; 0x020DE3F0
- cmp r0, #0x0
- rsblt r0, r0, #0x0
- bx lr
-
- arm_func_start __msl_assertion_failed
-__msl_assertion_failed: ; 0x020DE3FC
- stmdb sp!, {r3-r4,lr}
- sub sp, sp, #0x4
- mov r4, r0
- mov lr, r1
- mov r12, r2
- str r3, [sp, #0x0]
- ldr r0, _020DE434 ; =UNK_02106B3C
- mov r1, r4
- mov r2, lr
- mov r3, r12
- bl printf
- bl abort
- add sp, sp, #0x4
- ldmia sp!, {r3-r4,pc}
- .balign 4
-_020DE434: .word UNK_02106B3C
-
- arm_func_start __convert_from_newlines
-__convert_from_newlines:
- bx lr
-
- arm_func_start __convert_to_newlines
-__convert_to_newlines:
- bx lr
-
- arm_func_start __prep_buffer
-__prep_buffer:
- ldr r1, [r0, #0x1c]
- str r1, [r0, #0x24]
- ldr r3, [r0, #0x20]
- str r3, [r0, #0x28]
- ldr r2, [r0, #0x18]
- ldr r1, [r0, #0x2c]
- and r1, r2, r1
- sub r1, r3, r1
- str r1, [r0, #0x28]
- ldr r1, [r0, #0x18]
- str r1, [r0, #0x34]
- bx lr
-
- arm_func_start __load_buffer
-__load_buffer:
- stmdb sp!, {r4-r6,lr}
- mov r5, r2
- mov r4, r0
- mov r6, r1
- bl __prep_buffer
- cmp r5, #0x1
- ldreq r0, [r4, #0x20]
- add r2, r4, #0x28
- streq r0, [r4, #0x28]
- ldr r0, [r4, #0x0]
- ldr r1, [r4, #0x1c]
- ldr r3, [r4, #0x48]
- ldr r12, [r4, #0x3c]
- blx r12
- cmp r0, #0x2
- moveq r1, #0x0
- streq r1, [r4, #0x28]
- cmp r6, #0x0
- ldrne r1, [r4, #0x28]
- strne r1, [r6, #0x0]
- cmp r0, #0x0
- ldmneia sp!, {r4-r6,pc}
- ldr r1, [r4, #0x18]
- ldr r0, [r4, #0x28]
- add r0, r1, r0
- str r0, [r4, #0x18]
- ldr r0, [r4, #0x4]
- mov r0, r0, lsl #0x13
- movs r0, r0, lsr #0x1f
- bne _020DE4F4
- ldr r0, [r4, #0x1c]
- add r1, r4, #0x28
- bl __convert_to_newlines
-_020DE4F4:
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start __flush_buffer
-__flush_buffer:
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- ldr r2, [r5, #0x24]
- ldr r0, [r5, #0x1c]
- mov r4, r1
- subs r0, r2, r0
- beq _020DE574
- str r0, [r5, #0x28]
- ldr r0, [r5, #0x4]
- mov r0, r0, lsl #0x13
- movs r0, r0, lsr #0x1f
- bne _020DE538
- ldr r0, [r5, #0x1c]
- add r1, r5, #0x28
- bl __convert_from_newlines
-_020DE538:
- ldr r0, [r5, #0x0]
- ldr r1, [r5, #0x1c]
- ldr r3, [r5, #0x48]
- ldr r12, [r5, #0x40]
- add r2, r5, #0x28
- blx r12
- cmp r4, #0x0
- ldrne r1, [r5, #0x28]
- strne r1, [r4, #0x0]
- cmp r0, #0x0
- ldmneia sp!, {r3-r5,pc}
- ldr r1, [r5, #0x18]
- ldr r0, [r5, #0x28]
- add r0, r1, r0
- str r0, [r5, #0x18]
-_020DE574:
- mov r0, r5
- bl __prep_buffer
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start fread
-fread: ; 0x020DE584
- stmdb sp!, {r4-r10,lr}
- ldr r4, _020DE67C ; =UNK_02106A58
- mov r7, r3
- cmp r7, r4
- moveq r6, #0x2
- mov r10, r0
- movne r6, #0x5
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DE680 ; =UNK_021D70D0
- mov r9, r1
- add r0, r5, r4
- mov r8, r2
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DE5E8
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r2, _020DE688 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DE68C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DE640
-_020DE5E8:
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r1, _020DE688 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DE618
- ldr r1, _020DE68C ; =UNK_021D70AC
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DE640
-_020DE618:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r2, _020DE688 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DE68C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DE640:
- mov r0, r10
- mov r1, r9
- mov r2, r8
- mov r3, r7
- bl __fread
- ldr r1, _020DE68C ; =UNK_021D70AC
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DE674
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DE674:
- mov r0, r7
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020DE67C: .word UNK_02106A58
-_020DE680: .word UNK_021D70D0
-_020DE684: .word OSi_ThreadInfo
-_020DE688: .word UNK_021D7088
-_020DE68C: .word UNK_021D70AC
-
- arm_func_start __fread
-__fread: ; 0x020DE690
- stmdb sp!, {r3-r10,lr}
- sub sp, sp, #0x4
- mov r7, r3
- mov r9, r0
- mov r8, r1
- mov r0, r7
- mov r1, #0x0
- mov r4, r2
- bl fwide
- cmp r0, #0x0
- bne _020DE6C8
- mov r0, r7
- mvn r1, #0x0
- bl fwide
-_020DE6C8:
- muls r4, r8, r4
- beq _020DE6EC
- ldrb r0, [r7, #0xd]
- cmp r0, #0x0
- bne _020DE6EC
- ldr r1, [r7, #0x4]
- mov r0, r1, lsl #0x16
- movs r0, r0, lsr #0x1d
- bne _020DE6F8
-_020DE6EC:
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {r3-r10,pc}
-_020DE6F8:
- mov r0, r1, lsl #0x13
- movs r0, r0, lsr #0x1f
- movne r0, r1, lsl #0x19
- movne r0, r0, lsr #0x1e
- ldr r1, [r7, #0x8]
- cmpne r0, #0x2
- mov r6, #0x1
- mov r0, r1, lsl #0x1d
- movne r6, #0x0
- movs r0, r0, lsr #0x1d
- bne _020DE74C
- ldr r0, [r7, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- tst r0, #0x1
- beq _020DE74C
- bic r0, r1, #0x7
- orr r0, r0, #0x2
- str r0, [r7, #0x8]
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE74C:
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- bhs _020DE778
- mov r0, #0x1
- strb r0, [r7, #0xd]
- mov r0, #0x0
- add sp, sp, #0x4
- str r0, [r7, #0x28]
- ldmia sp!, {r3-r10,pc}
-_020DE778:
- ldr r0, [r7, #0x4]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- tst r0, #0x1
- beq _020DE7B0
- bl __flush_line_buffered_output_files
- cmp r0, #0x0
- beq _020DE7B0
- mov r0, #0x1
- strb r0, [r7, #0xd]
- mov r0, #0x0
- add sp, sp, #0x4
- str r0, [r7, #0x28]
- ldmia sp!, {r3-r10,pc}
-_020DE7B0:
- cmp r4, #0x0
- mov r5, #0x0
- beq _020DE874
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- blo _020DE874
- mov r10, r5
-_020DE7D4:
- mov r0, r7
- mov r1, r10
- bl fwide
- cmp r0, #0x1
- ldr r0, [r7, #0x8]
- bne _020DE808
- mov r0, r0, lsl #0x1d
- add r0, r7, r0, lsr #0x1c
- ldrh r0, [r0, #0xe]
- add r5, r5, #0x2
- sub r4, r4, #0x2
- strh r0, [r9], #0x2
- b _020DE820
-_020DE808:
- mov r0, r0, lsl #0x1d
- add r0, r7, r0, lsr #0x1d
- ldrb r0, [r0, #0xf]
- add r5, r5, #0x1
- sub r4, r4, #0x1
- strb r0, [r9], #0x1
-_020DE820:
- ldr r1, [r7, #0x8]
- cmp r4, #0x0
- mov r0, r1, lsl #0x1d
- mov r0, r0, lsr #0x1d
- sub r0, r0, #0x1
- bic r1, r1, #0x7
- and r0, r0, #0x7
- orr r0, r1, r0
- str r0, [r7, #0x8]
- beq _020DE85C
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- bhs _020DE7D4
-_020DE85C:
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- ldreq r0, [r7, #0x30]
- streq r0, [r7, #0x28]
-_020DE874:
- cmp r4, #0x0
- beq _020DE938
- ldr r0, [r7, #0x28]
- cmp r0, #0x0
- cmpeq r6, #0x0
- beq _020DE938
- mov r10, #0x0
-_020DE890:
- ldr r0, [r7, #0x28]
- cmp r0, #0x0
- bne _020DE8E4
- mov r0, r7
- mov r1, r10
- mov r2, r10
- bl __load_buffer
- cmp r0, #0x0
- beq _020DE8E4
- cmp r0, #0x1
- mov r0, #0x1
- streqb r0, [r7, #0xd]
- beq _020DE8D4
- ldr r1, [r7, #0x8]
- bic r1, r1, #0x7
- str r1, [r7, #0x8]
- strb r0, [r7, #0xc]
-_020DE8D4:
- mov r0, #0x0
- str r0, [r7, #0x28]
- mov r4, #0x0
- b _020DE938
-_020DE8E4:
- ldr r0, [r7, #0x28]
- str r0, [sp, #0x0]
- cmp r0, r4
- strhi r4, [sp, #0x0]
- ldr r1, [r7, #0x24]
- ldr r2, [sp, #0x0]
- mov r0, r9
- bl memcpy
- ldr r2, [sp, #0x0]
- ldr r0, [r7, #0x24]
- subs r4, r4, r2
- add r0, r0, r2
- str r0, [r7, #0x24]
- ldr r1, [r7, #0x28]
- ldr r0, [sp, #0x0]
- add r9, r9, r2
- sub r0, r1, r0
- add r5, r5, r2
- str r0, [r7, #0x28]
- cmpne r6, #0x0
- bne _020DE890
-_020DE938:
- cmp r4, #0x0
- beq _020DE9C4
- cmp r6, #0x0
- bne _020DE9C4
- ldr r6, [r7, #0x1c]
- ldr r10, [r7, #0x20]
- add r1, sp, #0x0
- str r9, [r7, #0x1c]
- mov r0, r7
- mov r2, #0x1
- str r4, [r7, #0x20]
- bl __load_buffer
- cmp r0, #0x0
- beq _020DE9A4
- cmp r0, #0x1
- mov r0, #0x1
- bne _020DE98C
- strb r0, [r7, #0xd]
- mov r0, #0x0
- str r0, [r7, #0x28]
- b _020DE9A4
-_020DE98C:
- ldr r1, [r7, #0x8]
- bic r1, r1, #0x7
- str r1, [r7, #0x8]
- strb r0, [r7, #0xc]
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE9A4:
- ldr r1, [sp, #0x0]
- mov r0, r7
- str r6, [r7, #0x1c]
- str r10, [r7, #0x20]
- add r5, r5, r1
- bl __prep_buffer
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE9C4:
- mov r0, r5
- mov r1, r8
- bl _u32_div_f
- add sp, sp, #0x4
- ldmia sp!, {r3-r10,pc}
-
- arm_func_start __fwrite
-__fwrite:
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x8
- mov r9, r3
- mov r10, r0
- str r1, [sp, #0x0]
- mov r0, r9
- mov r1, #0x0
- mov r4, r2
- bl fwide
- cmp r0, #0x0
- bne _020DEA10
- mov r0, r9
- mvn r1, #0x0
- bl fwide
-_020DEA10:
- ldr r0, [sp, #0x0]
- muls r5, r0, r4
- beq _020DEA38
- ldrb r0, [r9, #0xd]
- cmp r0, #0x0
- bne _020DEA38
- ldr r1, [r9, #0x4]
- mov r0, r1, lsl #0x16
- movs r0, r0, lsr #0x1d
- bne _020DEA44
-_020DEA38:
- add sp, sp, #0x8
- mov r0, #0x0
- ldmia sp!, {r3-r11,pc}
-_020DEA44:
- mov r0, r1, lsl #0x13
- movs r0, r0, lsr #0x1f
- movne r0, r1, lsl #0x19
- movne r0, r0, lsr #0x1e
- cmpne r0, #0x2
- ldr r1, [r9, #0x8]
- cmpne r0, #0x1
- mov r8, #0x1
- mov r0, r1, lsl #0x1d
- movne r8, #0x0
- movs r0, r0, lsr #0x1d
- bne _020DEA9C
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- tst r0, #0x2
- beq _020DEA9C
- bic r0, r1, #0x7
- orr r1, r0, #0x1
- mov r0, r9
- str r1, [r9, #0x8]
- bl __prep_buffer
-_020DEA9C:
- ldr r0, [r9, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x1
- beq _020DEAC8
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r0, #0x0
- add sp, sp, #0x8
- str r0, [r9, #0x28]
- ldmia sp!, {r3-r11,pc}
-_020DEAC8:
- cmp r5, #0x0
- mov r6, #0x0
- beq _020DEBF0
- ldr r0, [r9, #0x1c]
- ldr r2, [r9, #0x24]
- cmp r2, r0
- cmpeq r8, #0x0
- beq _020DEBF0
- ldr r1, [r9, #0x20]
- sub r0, r2, r0
- sub r0, r1, r0
- str r0, [r9, #0x28]
- mov r11, #0xa
- mov r4, #0x0
-_020DEB00:
- ldr r0, [r9, #0x28]
- mov r7, r4
- str r0, [sp, #0x4]
- cmp r0, r5
- strhi r5, [sp, #0x4]
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- cmp r0, #0x1
- bne _020DEB50
- ldr r2, [sp, #0x4]
- cmp r2, #0x0
- beq _020DEB50
- mov r0, r10
- mov r1, r11
- bl __memrchr
- movs r7, r0
- addne r0, r7, #0x1
- subne r0, r0, r10
- strne r0, [sp, #0x4]
-_020DEB50:
- ldr r2, [sp, #0x4]
- cmp r2, #0x0
- beq _020DEB90
- ldr r0, [r9, #0x24]
- mov r1, r10
- bl memcpy
- ldr r2, [sp, #0x4]
- ldr r0, [r9, #0x24]
- add r10, r10, r2
- add r0, r0, r2
- str r0, [r9, #0x24]
- ldr r1, [r9, #0x28]
- ldr r0, [sp, #0x4]
- sub r5, r5, r2
- sub r0, r1, r0
- str r0, [r9, #0x28]
-_020DEB90:
- ldr r0, [r9, #0x28]
- cmp r0, #0x0
- beq _020DEBB4
- cmp r7, #0x0
- bne _020DEBB4
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x19
- movs r0, r0, lsr #0x1e
- bne _020DEBDC
-_020DEBB4:
- mov r0, r9
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- beq _020DEBDC
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r5, #0x0
- str r5, [r9, #0x28]
- b _020DEBF0
-_020DEBDC:
- ldr r0, [sp, #0x4]
- cmp r5, #0x0
- add r6, r6, r0
- cmpne r8, #0x0
- bne _020DEB00
-_020DEBF0:
- cmp r5, #0x0
- beq _020DEC5C
- cmp r8, #0x0
- bne _020DEC5C
- ldr r4, [r9, #0x1c]
- ldr r7, [r9, #0x20]
- add r2, r10, r5
- str r10, [r9, #0x1c]
- str r5, [r9, #0x20]
- add r1, sp, #0x4
- mov r0, r9
- str r2, [r9, #0x24]
- bl __flush_buffer
- cmp r0, #0x0
- ldreq r0, [sp, #0x4]
- addeq r6, r6, r0
- beq _020DEC44
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r0, #0x0
- str r0, [r9, #0x28]
-_020DEC44:
- str r4, [r9, #0x1c]
- mov r0, r9
- str r7, [r9, #0x20]
- bl __prep_buffer
- mov r0, #0x0
- str r0, [r9, #0x28]
-_020DEC5C:
- ldr r0, [r9, #0x4]
- ldr r1, [sp, #0x0]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- cmp r0, #0x2
- movne r0, #0x0
- strne r0, [r9, #0x28]
- mov r0, r6
- bl _u32_div_f
- add sp, sp, #0x8
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start fclose
-fclose: ; 0x020DEC88
- stmdb sp!, {r3-r5,lr}
- movs r5, r0
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r5,pc}
- ldr r1, [r5, #0x4]
- mov r1, r1, lsl #0x16
- movs r1, r1, lsr #0x1d
- moveq r0, #0x0
- ldmeqia sp!, {r3-r5,pc}
- bl fflush
- mov r4, r0
- ldr r0, [r5, #0x0]
- ldr r1, [r5, #0x44]
- blx r1
- ldr r1, [r5, #0x4]
- mov r2, #0x0
- bic r1, r1, #0x380
- str r1, [r5, #0x4]
- str r2, [r5, #0x0]
- ldr r1, [r5, #0x8]
- mov r1, r1, lsl #0x1c
- movs r1, r1, lsr #0x1f
- subne r0, r2, #0x1
- ldmneia sp!, {r3-r5,pc}
- cmp r4, #0x0
- cmpeq r0, #0x0
- movne r2, #0x1
- rsb r0, r2, #0x0
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start fflush
-fflush:
- stmdb sp!, {r4,lr}
- movs r4, r0
- bne _020DED10
- bl __flush_all
- ldmia sp!, {r4,pc}
-_020DED10:
- ldrb r0, [r4, #0xd]
- cmp r0, #0x0
- bne _020DED2C
- ldr r0, [r4, #0x4]
- mov r1, r0, lsl #0x16
- movs r1, r1, lsr #0x1d
- bne _020DED34
-_020DED2C:
- mvn r0, #0x0
- ldmia sp!, {r4,pc}
-_020DED34:
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- cmp r0, #0x1
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r0, [r4, #0x8]
- mov r1, r0, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x3
- biccs r0, r0, #0x7
- orrcs r0, r0, #0x2
- strcs r0, [r4, #0x8]
- ldr r0, [r4, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- moveq r0, #0x0
- streq r0, [r4, #0x28]
- ldr r0, [r4, #0x8]
- mov r1, r0, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- beq _020DEDA0
- bic r0, r0, #0x7
- str r0, [r4, #0x8]
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-_020DEDA0:
- mov r0, r4
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- mov r0, #0x0
- beq _020DEDCC
- mov r1, #0x1
- strb r1, [r4, #0xd]
- str r0, [r4, #0x28]
- sub r0, r0, #0x1
- ldmia sp!, {r4,pc}
-_020DEDCC:
- ldr r1, [r4, #0x8]
- bic r1, r1, #0x7
- str r1, [r4, #0x8]
- str r0, [r4, #0x18]
- str r0, [r4, #0x28]
- ldmia sp!, {r4,pc}
-
- arm_func_start _ftell
-_ftell: ; 0x020DEDE4
- ldr r1, [r0, #0x4]
- mov r1, r1, lsl #0x16
- mov r1, r1, lsr #0x1d
- and r1, r1, #0xff
- add r1, r1, #0xff
- and r1, r1, #0xff
- cmp r1, #0x1
- bhi _020DEE10
- ldrb r1, [r0, #0xd]
- cmp r1, #0x0
- beq _020DEE24
-_020DEE10:
- ldr r0, _020DEE5C ; =UNK_021D74A8
- mov r1, #0x28
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- bx lr
-_020DEE24:
- ldr r1, [r0, #0x8]
- mov r1, r1, lsl #0x1d
- movs r12, r1, lsr #0x1d
- ldreq r0, [r0, #0x18]
- bxeq lr
- ldr r2, [r0, #0x24]
- ldr r1, [r0, #0x1c]
- ldr r3, [r0, #0x34]
- sub r0, r2, r1
- cmp r12, #0x3
- add r0, r3, r0
- subcs r1, r12, #0x2
- subcs r0, r0, r1
- bx lr
- .balign 4
-_020DEE5C: .word UNK_021D74A8
-
- arm_func_start ftell
-ftell: ; 0x020DEE60
- stmdb sp!, {r3-r7,lr}
- ldr r1, _020DEF60 ; =UNK_02106A58
- mov r7, r0
- cmp r7, r1
- moveq r6, #0x2
- beq _020DEE98
- ldr r0, _020DEF64 ; =UNK_02106AA4
- cmp r7, r0
- moveq r6, #0x3
- beq _020DEE98
- ldr r0, _020DEF68 ; =UNK_02106AF0
- cmp r7, r0
- moveq r6, #0x4
- movne r6, #0x5
-_020DEE98:
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DEF6C ; =UNK_021D70D0
- add r0, r5, r4
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DEED8
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r2, _020DEF74 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DEF78 ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DEF30
-_020DEED8:
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r1, _020DEF74 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DEF08
- ldr r1, _020DEF78 ; =UNK_021D70AC
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DEF30
-_020DEF08:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r2, _020DEF74 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DEF78 ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DEF30:
- mov r0, r7
- bl _ftell
- ldr r1, _020DEF78 ; =UNK_021D70AC
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DEF58
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DEF58:
- mov r0, r7
- ldmia sp!, {r3-r7,pc}
- .balign 4
-_020DEF60: .word UNK_02106A58
-_020DEF64: .word UNK_02106AA4
-_020DEF68: .word UNK_02106AF0
-_020DEF6C: .word UNK_021D70D0
-_020DEF70: .word OSi_ThreadInfo
-_020DEF74: .word UNK_021D7088
-_020DEF78: .word UNK_021D70AC
-
- arm_func_start _fseek
-_fseek: ; 0x020DEF7C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- ldr r1, [r5, #0x4]
- mov r4, r2
- mov r1, r1, lsl #0x16
- mov r1, r1, lsr #0x1d
- and r1, r1, #0xff
- cmp r1, #0x1
- ldreqb r1, [r5, #0xd]
- cmpeq r1, #0x0
- beq _020DEFC8
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DEFC8:
- ldr r1, [r5, #0x8]
- mov r1, r1, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- bne _020DF018
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- beq _020DF018
- mov r0, #0x1
- strb r0, [r5, #0xd]
- mov r2, #0x0
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r2, [r5, #0x28]
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DF018:
- cmp r4, #0x1
- bne _020DF038
- mov r0, r5
- mov r4, #0x0
- bl _ftell
- ldr r1, [sp, #0x14]
- add r0, r1, r0
- str r0, [sp, #0x14]
-_020DF038:
- cmp r4, #0x2
- beq _020DF0CC
- ldr r0, [r5, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- beq _020DF0CC
- ldr r0, [r5, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- sub r0, r0, #0x2
- cmp r0, #0x1
- bhi _020DF0CC
- ldr r2, [sp, #0x14]
- ldr r0, [r5, #0x18]
- cmp r2, r0
- bhs _020DF088
- ldr r0, [r5, #0x34]
- cmp r2, r0
- bhs _020DF098
-_020DF088:
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- str r0, [r5, #0x8]
- b _020DF0D8
-_020DF098:
- ldr r1, [r5, #0x1c]
- sub r0, r2, r0
- add r0, r1, r0
- str r0, [r5, #0x24]
- ldr r1, [r5, #0x18]
- ldr r0, [sp, #0x14]
- sub r0, r1, r0
- str r0, [r5, #0x28]
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- orr r0, r0, #0x2
- str r0, [r5, #0x8]
- b _020DF0D8
-_020DF0CC:
- ldr r0, [r5, #0x8]
- bic r0, r0, #0x7
- str r0, [r5, #0x8]
-_020DF0D8:
- ldr r0, [r5, #0x8]
- mov r0, r0, lsl #0x1d
- movs r0, r0, lsr #0x1d
- bne _020DF150
- ldr r12, [r5, #0x38]
- cmp r12, #0x0
- beq _020DF13C
- ldr r0, [r5, #0x0]
- ldr r3, [r5, #0x48]
- add r1, sp, #0x14
- mov r2, r4
- blx r12
- cmp r0, #0x0
- beq _020DF13C
- mov r0, #0x1
- strb r0, [r5, #0xd]
- mov r2, #0x0
- ldr r0, _020DF160 ; =UNK_021D74A8
- mov r1, #0x28
- str r2, [r5, #0x28]
- str r1, [r0, #0x0]
- sub r0, r1, #0x29
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
-_020DF13C:
- mov r1, #0x0
- strb r1, [r5, #0xc]
- ldr r0, [sp, #0x14]
- str r0, [r5, #0x18]
- str r1, [r5, #0x28]
-_020DF150:
- mov r0, #0x0
- ldmia sp!, {r3-r5,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020DF160: .word UNK_021D74A8
-
- arm_func_start fseek
-fseek:
- stmdb sp!, {r3-r9,lr}
- ldr r3, _020DF274 ; =UNK_02106A58
- mov r9, r0
- cmp r9, r3
- mov r8, r1
- mov r7, r2
- moveq r6, #0x2
- beq _020DF1A4
- ldr r0, _020DF278 ; =UNK_02106AA4
- cmp r9, r0
- moveq r6, #0x3
- beq _020DF1A4
- ldr r0, _020DF27C ; =UNK_02106AF0
- cmp r9, r0
- moveq r6, #0x4
- movne r6, #0x5
-_020DF1A4:
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DF280 ; =UNK_021D70D0
- add r0, r5, r4
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DF1E4
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r2, _020DF288 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DF28C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DF23C
-_020DF1E4:
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r1, _020DF288 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DF214
- ldr r1, _020DF28C ; =UNK_021D70AC
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DF23C
-_020DF214:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r2, _020DF288 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DF28C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DF23C:
- mov r0, r9
- mov r1, r8
- mov r2, r7
- bl _fseek
- ldr r1, _020DF28C ; =UNK_021D70AC
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DF26C
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DF26C:
- mov r0, r7
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DF274: .word UNK_02106A58
-_020DF278: .word UNK_02106AA4
-_020DF27C: .word UNK_02106AF0
-_020DF280: .word UNK_021D70D0
-_020DF284: .word OSi_ThreadInfo
-_020DF288: .word UNK_021D7088
-_020DF28C: .word UNK_021D70AC
-
- arm_func_start rewind
-rewind: ; 0x020DF290
- stmdb sp!, {r4,lr}
- mov r1, #0x0
- mov r4, r0
- mov r2, r1
- strb r1, [r4, #0xd]
- bl fseek
- mov r0, #0x0
- strb r0, [r4, #0xd]
- ldmia sp!, {r4,pc}
-
- arm_func_start mbtowc
-mbtowc:
- stmdb sp!, {r3,lr}
- ldr r3, _020DF2CC ; =UNK_02106C98
- ldr r3, [r3, #0x8]
- ldr r3, [r3, #0x0]
- blx r3
- ldmia sp!, {r3,pc}
- .balign 4
-_020DF2CC: .word UNK_02106C98
-
- arm_func_start __mbtowc_noconv
-__mbtowc_noconv: ; 0x020DF2D0
- cmp r1, #0x0
- moveq r0, #0x0
- bxeq lr
- cmp r2, #0x0
- mvneq r0, #0x0
- bxeq lr
- cmp r0, #0x0
- ldrneb r2, [r1, #0x0]
- strneh r2, [r0, #0x0]
- ldrsb r0, [r1, #0x0]
- cmp r0, #0x0
- moveq r0, #0x0
- movne r0, #0x1
- bx lr
-
- arm_func_start __wctomb_noconv
-__wctomb_noconv: ; 0x020DF308
- cmp r0, #0x0
- moveq r0, #0x0
- strneb r1, [r0, #0x0]
- movne r0, #0x1
- bx lr
-
- arm_func_start wctomb
-wctomb: ; 0x020DF31C
- stmdb sp!, {r3,lr}
- ldr r2, _020DF334 ; =UNK_02106C98
- ldr r2, [r2, #0x8]
- ldr r2, [r2, #0x4]
- blx r2
- ldmia sp!, {r3,pc}
- .balign 4
-_020DF334: .word UNK_02106C98
-
- arm_func_start mbstowcs
-mbstowcs: ; 0x020DF338
- stmdb sp!, {r4-r8,lr}
- mov r7, r1
- mov r8, r0
- mov r0, r7
- mov r6, r2
- bl strlen
- mov r5, r0
- cmp r8, #0x0
- mov r4, #0x0
- beq _020DF3B8
- cmp r6, #0x0
- bls _020DF3B8
-_020DF368:
- ldrsb r0, [r7, #0x0]
- cmp r0, #0x0
- beq _020DF3A0
- mov r0, r8
- mov r1, r7
- mov r2, r5
- bl mbtowc
- cmp r0, #0x0
- add r8, r8, #0x2
- addgt r7, r7, r0
- subgt r5, r5, r0
- bgt _020DF3AC
- mvn r0, #0x0
- ldmia sp!, {r4-r8,pc}
-_020DF3A0:
- mov r0, #0x0
- strh r0, [r8, #0x0]
- b _020DF3B8
-_020DF3AC:
- add r4, r4, #0x1
- cmp r4, r6
- blo _020DF368
-_020DF3B8:
- mov r0, r4
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start wcstombs
-wcstombs:
- stmdb sp!, {r3-r9,lr}
- movs r4, r0
- mov r9, r1
- cmpne r9, #0x0
- mov r8, r2
- mov r7, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r3-r9,pc}
- add r6, sp, #0x0
-_020DF3E4:
- ldrh r1, [r9, #0x0]
- cmp r1, #0x0
- moveq r0, #0x0
- streqb r0, [r4, r7]
- beq _020DF430
- mov r0, r6
- add r9, r9, #0x2
- bl wctomb
- mov r5, r0
- add r0, r7, r5
- cmp r0, r8
- bhi _020DF430
- mov r1, r6
- mov r2, r5
- add r0, r4, r7
- bl strncpy
- add r7, r7, r5
- cmp r7, r8
- bls _020DF3E4
-_020DF430:
- mov r0, r7
- ldmia sp!, {r3-r9,pc}
-
- arm_func_start memcpy
-memcpy: ; 0x020DF438
- mov r12, r0
- cmp r2, #0x0
- bxeq lr
-_020DF444:
- ldrsb r3, [r1], #0x1
- subs r2, r2, #0x1
- strb r3, [r12], #0x1
- bne _020DF444
- bx lr
-
- arm_func_start memmove
-memmove: ; 0x020DF458
- cmp r1, r0
- blo _020DF480
- mov r12, r0
- cmp r2, #0x0
- bxeq lr
-_020DF46C:
- ldrsb r3, [r1], #0x1
- subs r2, r2, #0x1
- strb r3, [r12], #0x1
- bne _020DF46C
- bx lr
-_020DF480:
- cmp r2, #0x0
- add r3, r1, r2
- add r12, r0, r2
- bxeq lr
-_020DF490:
- ldrsb r1, [r3, #-0x1]!
- subs r2, r2, #0x1
- strb r1, [r12, #-0x1]!
- bne _020DF490
- bx lr
-
- arm_func_start memset
-memset: ; 0x020DF4A4
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl __fill_mem
- mov r0, r4
- ldmia sp!, {r4,pc}
-
- arm_func_start memchr
-memchr:
- cmp r2, #0x0
- and r3, r1, #0xff
- beq _020DF4DC
-_020DF4C4:
- ldrb r1, [r0], #0x1
- cmp r1, r3
- subeq r0, r0, #0x1
- bxeq lr
- subs r2, r2, #0x1
- bne _020DF4C4
-_020DF4DC:
- mov r0, #0x0
- bx lr
-
- arm_func_start __memrchr
-__memrchr: ; 0x020DF4E4
- cmp r2, #0x0
- and r3, r1, #0xff
- add r0, r0, r2
- beq _020DF508
-_020DF4F4:
- ldrb r1, [r0, #-0x1]!
- cmp r1, r3
- bxeq lr
- subs r2, r2, #0x1
- bne _020DF4F4
-_020DF508:
- mov r0, #0x0
- bx lr
-
- arm_func_start memcmp
-memcmp: ; 0x020DF510
- cmp r2, #0x0
- beq _020DF548
-_020DF518:
- ldrb r12, [r0], #0x1
- ldrb r3, [r1], #0x1
- cmp r12, r3
- beq _020DF540
- ldrb r2, [r0, #-0x1]
- ldrb r0, [r1, #-0x1]
- cmp r2, r0
- mvncc r0, #0x0
- movcs r0, #0x1
- bx lr
-_020DF540:
- subs r2, r2, #0x1
- bne _020DF518
-_020DF548:
- mov r0, #0x0
- bx lr
-
- arm_func_start __fill_mem
-__fill_mem: ; 0x020DF550
- cmp r2, #0x20
- and r3, r1, #0xff
- blo _020DF5E4
- rsb r1, r0, #0x0
- ands r12, r1, #0x3
- beq _020DF57C
- sub r2, r2, r12
- and r1, r3, #0xff
-_020DF570:
- strb r1, [r0], #0x1
- subs r12, r12, #0x1
- bne _020DF570
-_020DF57C:
- cmp r3, #0x0
- beq _020DF594
- mov r1, r3, lsl #0x10
- orr r1, r1, r3, lsl #0x18
- orr r1, r1, r3, lsl #0x8
- orr r3, r3, r1
-_020DF594:
- movs r1, r2, lsr #0x5
- beq _020DF5C8
-_020DF59C:
- str r3, [r0, #0x0]
- str r3, [r0, #0x4]
- str r3, [r0, #0x8]
- str r3, [r0, #0xc]
- str r3, [r0, #0x10]
- str r3, [r0, #0x14]
- str r3, [r0, #0x18]
- str r3, [r0, #0x1c]
- add r0, r0, #0x20
- subs r1, r1, #0x1
- bne _020DF59C
-_020DF5C8:
- and r1, r2, #0x1f
- movs r1, r1, lsr #0x2
- beq _020DF5E0
-_020DF5D4:
- str r3, [r0], #0x4
- subs r1, r1, #0x1
- bne _020DF5D4
-_020DF5E0:
- and r2, r2, #0x3
-_020DF5E4:
- cmp r2, #0x0
- bxeq lr
- and r1, r3, #0xff
-_020DF5F0:
- strb r1, [r0], #0x1
- subs r2, r2, #0x1
- bne _020DF5F0
- bx lr
-
- arm_func_start parse_format_printf
-parse_format_printf: ; 0x020DF600
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- ldrsb r3, [r0, #0x1]
- mov r4, #0x0
- mov r5, #0x1
- mov lr, r2
- strb r5, [sp, #0x0]
- strb r4, [sp, #0x1]
- strb r4, [sp, #0x2]
- strb r4, [sp, #0x3]
- strb r4, [sp, #0x4]
- str r4, [sp, #0x8]
- str r4, [sp, #0xc]
- cmp r3, #0x25
- add r12, r0, #0x1
- bne _020DF65C
- add r0, sp, #0x0
- strb r3, [sp, #0x5]
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add sp, sp, #0x10
- add r0, r12, #0x1
- ldmia sp!, {r4-r8,pc}
-_020DF65C:
- mov r2, #0x2
- mov r0, r4
- mov r5, r2
- mov r6, r4
- mov r7, #0x1
-_020DF670:
- mov r8, r7
- cmp r3, #0x2b
- bgt _020DF6A0
- bge _020DF6C8
- cmp r3, #0x23
- bgt _020DF6F8
- cmp r3, #0x20
- blt _020DF6F8
- beq _020DF6D0
- cmp r3, #0x23
- beq _020DF6E0
- b _020DF6F8
-_020DF6A0:
- cmp r3, #0x30
- bgt _020DF6F8
- cmp r3, #0x2d
- blt _020DF6F8
- beq _020DF6C0
- cmp r3, #0x30
- beq _020DF6E8
- b _020DF6F8
-_020DF6C0:
- strb r6, [sp, #0x0]
- b _020DF6FC
-_020DF6C8:
- strb r7, [sp, #0x1]
- b _020DF6FC
-_020DF6D0:
- ldrb r4, [sp, #0x1]
- cmp r4, #0x1
- strneb r5, [sp, #0x1]
- b _020DF6FC
-_020DF6E0:
- strb r7, [sp, #0x3]
- b _020DF6FC
-_020DF6E8:
- ldrb r4, [sp, #0x0]
- cmp r4, #0x0
- strneb r2, [sp, #0x0]
- b _020DF6FC
-_020DF6F8:
- mov r8, r0
-_020DF6FC:
- cmp r8, #0x0
- ldrnesb r3, [r12, #0x1]!
- bne _020DF670
- cmp r3, #0x2a
- bne _020DF744
- ldr r0, [r1, #0x0]
- add r0, r0, #0x4
- str r0, [r1, #0x0]
- ldr r0, [r0, #-0x4]
- str r0, [sp, #0x8]
- cmp r0, #0x0
- bge _020DF73C
- rsb r0, r0, #0x0
- mov r2, #0x0
- strb r2, [sp, #0x0]
- str r0, [sp, #0x8]
-_020DF73C:
- ldrsb r3, [r12, #0x1]!
- b _020DF794
-_020DF744:
- ldr r4, _020DFB88 ; =UNK_0210430C
- mov r5, #0x0
- mov r0, #0xa
- b _020DF768
-_020DF754:
- ldr r2, [sp, #0x8]
- sub r3, r3, #0x30
- mla r6, r2, r0, r3
- ldrsb r3, [r12, #0x1]!
- str r6, [sp, #0x8]
-_020DF768:
- cmp r3, #0x0
- blt _020DF778
- cmp r3, #0x80
- blt _020DF780
-_020DF778:
- mov r2, r5
- b _020DF78C
-_020DF780:
- mov r2, r3, lsl #0x1
- ldrh r2, [r4, r2]
- and r2, r2, #0x8
-_020DF78C:
- cmp r2, #0x0
- bne _020DF754
-_020DF794:
- ldr r2, [sp, #0x8]
- ldr r0, _020DFB8C ; =0x000001FD
- cmp r2, r0
- ble _020DF7C4
- mov r1, #0xff
- add r0, sp, #0x0
- strb r1, [sp, #0x5]
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add sp, sp, #0x10
- add r0, r12, #0x1
- ldmia sp!, {r4-r8,pc}
-_020DF7C4:
- cmp r3, #0x2e
- bne _020DF858
- ldrsb r3, [r12, #0x1]!
- mov r0, #0x1
- strb r0, [sp, #0x2]
- cmp r3, #0x2a
- bne _020DF808
- ldr r0, [r1, #0x0]
- add r0, r0, #0x4
- str r0, [r1, #0x0]
- ldr r0, [r0, #-0x4]
- ldrsb r3, [r12, #0x1]!
- str r0, [sp, #0xc]
- cmp r0, #0x0
- movlt r0, #0x0
- strltb r0, [sp, #0x2]
- b _020DF858
-_020DF808:
- ldr r2, _020DFB88 ; =UNK_0210430C
- mov r4, #0x0
- mov r0, #0xa
- b _020DF82C
-_020DF818:
- ldr r1, [sp, #0xc]
- sub r3, r3, #0x30
- mla r5, r1, r0, r3
- ldrsb r3, [r12, #0x1]!
- str r5, [sp, #0xc]
-_020DF82C:
- cmp r3, #0x0
- blt _020DF83C
- cmp r3, #0x80
- blt _020DF844
-_020DF83C:
- mov r1, r4
- b _020DF850
-_020DF844:
- mov r1, r3, lsl #0x1
- ldrh r1, [r2, r1]
- and r1, r1, #0x8
-_020DF850:
- cmp r1, #0x0
- bne _020DF818
-_020DF858:
- cmp r3, #0x6c
- mov r0, #0x1
- bgt _020DF890
- cmp r3, #0x68
- blt _020DF884
- beq _020DF8AC
- cmp r3, #0x6a
- beq _020DF8F8
- cmp r3, #0x6c
- beq _020DF8C8
- b _020DF91C
-_020DF884:
- cmp r3, #0x4c
- beq _020DF8EC
- b _020DF91C
-_020DF890:
- cmp r3, #0x74
- bgt _020DF8A0
- beq _020DF904
- b _020DF91C
-_020DF8A0:
- cmp r3, #0x7a
- beq _020DF910
- b _020DF91C
-_020DF8AC:
- ldrsb r1, [r12, #0x1]
- mov r2, #0x2
- strb r2, [sp, #0x4]
- cmp r1, #0x68
- streqb r0, [sp, #0x4]
- ldreqsb r3, [r12, #0x1]!
- b _020DF920
-_020DF8C8:
- ldrsb r1, [r12, #0x1]
- mov r2, #0x3
- strb r2, [sp, #0x4]
- cmp r1, #0x6c
- bne _020DF920
- mov r1, #0x4
- strb r1, [sp, #0x4]
- ldrsb r3, [r12, #0x1]!
- b _020DF920
-_020DF8EC:
- mov r1, #0x9
- strb r1, [sp, #0x4]
- b _020DF920
-_020DF8F8:
- mov r1, #0x6
- strb r1, [sp, #0x4]
- b _020DF920
-_020DF904:
- mov r1, #0x8
- strb r1, [sp, #0x4]
- b _020DF920
-_020DF910:
- mov r1, #0x7
- strb r1, [sp, #0x4]
- b _020DF920
-_020DF91C:
- mov r0, #0x0
-_020DF920:
- cmp r0, #0x0
- ldrnesb r3, [r12, #0x1]!
- strb r3, [sp, #0x5]
- cmp r3, #0x61
- bgt _020DF974
- bge _020DFA5C
- cmp r3, #0x47
- bgt _020DF968
- subs r0, r3, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020DFB68
- b _020DFA5C
- b _020DFB68
- b _020DFB68
- b _020DFB68
- b _020DFAA4
- b _020DFA24
- b _020DFA94
-_020DF968:
- cmp r3, #0x58
- beq _020DF9E8
- b _020DFB68
-_020DF974:
- cmp r3, #0x63
- bgt _020DF984
- beq _020DFB04
- b _020DFB68
-_020DF984:
- sub r0, r3, #0x64
- cmp r0, #0x14
- addls pc, pc, r0, lsl #0x2
- b _020DFB68
-_020DF994:
- b _020DF9E8
-_020DF998:
- b _020DFAA4
-_020DF99C:
- b _020DFA24
-_020DF9A0:
- b _020DFA94
-_020DF9A4:
- b _020DFB68
-_020DF9A8:
- b _020DF9E8
-_020DF9AC:
- b _020DFB68
-_020DF9B0:
- b _020DFB68
-_020DF9B4:
- b _020DFB68
-_020DF9B8:
- b _020DFB68
-_020DF9BC:
- b _020DFB54
-_020DF9C0:
- b _020DF9E8
-_020DF9C4:
- b _020DFAE0
-_020DF9C8:
- b _020DFB68
-_020DF9CC:
- b _020DFB68
-_020DF9D0:
- b _020DFB30
-_020DF9D4:
- b _020DFB68
-_020DF9D8:
- b _020DF9E8
-_020DF9DC:
- b _020DFB68
-_020DF9E0:
- b _020DFB68
-_020DF9E4:
- b _020DF9E8
-_020DF9E8:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x9
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- beq _020DFB70
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0xc]
- beq _020DFB70
- ldrb r0, [sp, #0x0]
- cmp r0, #0x2
- moveq r0, #0x1
- streqb r0, [sp, #0x0]
- b _020DFB70
-_020DFA24:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- beq _020DFB70
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x6
- streq r0, [sp, #0xc]
- b _020DFB70
-_020DFA5C:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0xd
- streq r0, [sp, #0xc]
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- cmpne r0, #0x1
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- b _020DFB70
-_020DFA94:
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0xc]
-_020DFAA4:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- cmpne r0, #0x1
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- beq _020DFB70
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x6
- streq r0, [sp, #0xc]
- b _020DFB70
-_020DFAE0:
- mov r3, #0x78
- mov r2, #0x1
- mov r1, #0x3
- mov r0, #0x8
- strb r3, [sp, #0x5]
- strb r2, [sp, #0x3]
- strb r1, [sp, #0x4]
- str r0, [sp, #0xc]
- b _020DFB70
-_020DFB04:
- ldrb r1, [sp, #0x4]
- cmp r1, #0x3
- moveq r0, #0x5
- streqb r0, [sp, #0x4]
- beq _020DFB70
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- cmpeq r1, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x5]
- b _020DFB70
-_020DFB30:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x3
- moveq r0, #0x5
- streqb r0, [sp, #0x4]
- beq _020DFB70
- cmp r0, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x5]
- b _020DFB70
-_020DFB54:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x9
- moveq r0, #0xff
- streqb r0, [sp, #0x5]
- b _020DFB70
-_020DFB68:
- mov r0, #0xff
- strb r0, [sp, #0x5]
-_020DFB70:
- add r0, sp, #0x0
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add r0, r12, #0x1
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020DFB88: .word UNK_0210430C
-_020DFB8C: .word 0x000001FD
-
- arm_func_start long2str
-long2str: ; 0x020DFB90
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x10
- movs r10, r0
- mov r0, #0x0
- mov r5, r1
- str r0, [sp, #0xc]
- ldr r7, [sp, #0x4c]
- mov r6, r0
- strb r0, [r5, #-0x1]!
- ldrb r0, [sp, #0x43]
- str r1, [sp, #0x0]
- ldrb r8, [sp, #0x45]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x48]
- ldrb r11, [sp, #0x41]
- str r0, [sp, #0x8]
- cmpeq r7, #0x0
- bne _020DFC04
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020DFBF0
- cmp r8, #0x6f
- beq _020DFC04
-_020DFBF0:
- add sp, sp, #0x10
- mov r0, r5
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020DFC04:
- cmp r8, #0x69
- bgt _020DFC2C
- bge _020DFC60
- cmp r8, #0x58
- bgt _020DFC20
- beq _020DFC8C
- b _020DFC94
-_020DFC20:
- cmp r8, #0x64
- beq _020DFC60
- b _020DFC94
-_020DFC2C:
- cmp r8, #0x6f
- bgt _020DFC40
- moveq r4, #0x8
- moveq r11, #0x0
- b _020DFC94
-_020DFC40:
- cmp r8, #0x78
- bgt _020DFC94
- cmp r8, #0x75
- blt _020DFC94
- beq _020DFC80
- cmp r8, #0x78
- beq _020DFC8C
- b _020DFC94
-_020DFC60:
- cmp r10, #0x0
- mov r4, #0xa
- bge _020DFC94
- mov r0, #0x1
- cmp r10, #0x80000000
- rsbne r10, r10, #0x0
- str r0, [sp, #0xc]
- b _020DFC94
-_020DFC80:
- mov r4, #0xa
- mov r11, #0x0
- b _020DFC94
-_020DFC8C:
- mov r4, #0x10
- mov r11, #0x0
-_020DFC94:
- mov r0, r10
- mov r1, r4
- bl _u32_div_f
- mov r9, r1
- mov r0, r10
- mov r1, r4
- bl _u32_div_f
- cmp r9, #0xa
- mov r10, r0
- addlt r9, r9, #0x30
- blt _020DFCCC
- cmp r8, #0x78
- addeq r9, r9, #0x57
- addne r9, r9, #0x37
-_020DFCCC:
- cmp r10, #0x0
- strb r9, [r5, #-0x1]!
- add r6, r6, #0x1
- bne _020DFC94
- cmp r4, #0x8
- bne _020DFD00
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrnesb r0, [r5, #0x0]
- cmpne r0, #0x30
- movne r0, #0x30
- strneb r0, [r5, #-0x1]!
- addne r6, r6, #0x1
-_020DFD00:
- ldrb r0, [sp, #0x40]
- cmp r0, #0x2
- bne _020DFD34
- ldr r0, [sp, #0xc]
- ldr r7, [sp, #0x8]
- cmp r0, #0x0
- cmpeq r11, #0x0
- subne r7, r7, #0x1
- cmp r4, #0x10
- bne _020DFD34
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- subne r7, r7, #0x2
-_020DFD34:
- ldr r0, [sp, #0x0]
- sub r1, r0, r5
- ldr r0, _020DFDD8 ; =0x000001FD
- add r1, r7, r1
- cmp r1, r0
- addgt sp, sp, #0x10
- movgt r0, #0x0
- ldmgtia sp!, {r3-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- cmp r6, r7
- bge _020DFD78
- mov r0, #0x30
-_020DFD68:
- add r6, r6, #0x1
- cmp r6, r7
- strb r0, [r5, #-0x1]!
- blt _020DFD68
-_020DFD78:
- cmp r4, #0x10
- bne _020DFD94
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x30
- strneb r8, [r5, #-0x1]
- strneb r0, [r5, #-0x2]!
-_020DFD94:
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r5, #-0x1]!
- bne _020DFDC4
- cmp r11, #0x1
- moveq r0, #0x2b
- streqb r0, [r5, #-0x1]!
- beq _020DFDC4
- cmp r11, #0x2
- moveq r0, #0x20
- streqb r0, [r5, #-0x1]!
-_020DFDC4:
- mov r0, r5
- add sp, sp, #0x10
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020DFDD8: .word 0x000001FD
-
- arm_func_start longlong2str
-longlong2str: ; 0x020DFDDC
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x18
- mov r9, r1
- mov r1, #0x0
- mov r10, r0
- mov r6, r2
- mov r0, r1
- strb r0, [r6, #-0x1]!
- ldr r0, [sp, #0x58]
- cmp r9, #0x0
- str r0, [sp, #0x10]
- ldrb r0, [sp, #0x4f]
- cmpeq r10, #0x0
- str r2, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x54]
- str r1, [sp, #0x14]
- str r0, [sp, #0x8]
- ldrb r0, [sp, #0x4d]
- mov r7, r1
- ldrb r8, [sp, #0x51]
- str r0, [sp, #0xc]
- ldreq r0, [sp, #0x10]
- cmpeq r0, #0x0
- bne _020DFE6C
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020DFE58
- cmp r8, #0x6f
- beq _020DFE6C
-_020DFE58:
- add sp, sp, #0x18
- mov r0, r6
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020DFE6C:
- cmp r8, #0x69
- bgt _020DFE94
- bge _020DFEC4
- cmp r8, #0x58
- bgt _020DFE88
- beq _020DFF18
- b _020DFF24
-_020DFE88:
- cmp r8, #0x64
- beq _020DFEC4
- b _020DFF24
-_020DFE94:
- cmp r8, #0x6f
- bgt _020DFEA4
- beq _020DFEF8
- b _020DFF24
-_020DFEA4:
- cmp r8, #0x78
- bgt _020DFF24
- cmp r8, #0x75
- blt _020DFF24
- beq _020DFF08
- cmp r8, #0x78
- beq _020DFF18
- b _020DFF24
-_020DFEC4:
- subs r0, r10, #0x0
- sbcs r0, r9, #0x0
- mov r11, #0xa
- mov r5, #0x0
- bge _020DFF24
- cmp r9, #0x80000000
- cmpeq r10, r5
- beq _020DFEEC
- rsbs r10, r10, #0x0
- rsc r9, r9, #0x0
-_020DFEEC:
- mov r0, #0x1
- str r0, [sp, #0x14]
- b _020DFF24
-_020DFEF8:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0x8
- b _020DFF24
-_020DFF08:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0xa
- b _020DFF24
-_020DFF18:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0x10
-_020DFF24:
- mov r0, r10
- mov r1, r9
- mov r2, r11
- mov r3, r5
- bl _ull_mod
- mov r4, r0
- mov r0, r10
- mov r1, r9
- mov r2, r11
- mov r3, r5
- bl _ll_udiv
- mov r10, r0
- cmp r4, #0xa
- mov r9, r1
- addlt r0, r4, #0x30
- blt _020DFF70
- cmp r8, #0x78
- addeq r0, r4, #0x57
- addne r0, r4, #0x37
-_020DFF70:
- strb r0, [r6, #-0x1]!
- mov r0, #0x0
- cmp r9, r0
- cmpeq r10, r0
- add r7, r7, #0x1
- bne _020DFF24
- cmp r5, #0x0
- cmpeq r11, #0x8
- bne _020DFFB0
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrnesb r0, [r6, #0x0]
- cmpne r0, #0x30
- movne r0, #0x30
- strneb r0, [r6, #-0x1]!
- addne r7, r7, #0x1
-_020DFFB0:
- ldrb r0, [sp, #0x4c]
- cmp r0, #0x2
- bne _020E0000
- ldr r0, [sp, #0x8]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x14]
- cmp r0, #0x0
- ldreq r0, [sp, #0xc]
- cmpeq r0, #0x0
- ldrne r0, [sp, #0x10]
- subne r0, r0, #0x1
- strne r0, [sp, #0x10]
- cmp r5, #0x0
- cmpeq r11, #0x10
- bne _020E0000
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrne r0, [sp, #0x10]
- subne r0, r0, #0x2
- strne r0, [sp, #0x10]
-_020E0000:
- ldr r0, [sp, #0x0]
- ldr r1, _020E00B8 ; =0x000001FD
- sub r2, r0, r6
- ldr r0, [sp, #0x10]
- add r0, r0, r2
- cmp r0, r1
- addgt sp, sp, #0x18
- movgt r0, #0x0
- ldmgtia sp!, {r3-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- ldr r0, [sp, #0x10]
- cmp r7, r0
- bge _020E0050
- mov r1, #0x30
-_020E003C:
- ldr r0, [sp, #0x10]
- add r7, r7, #0x1
- cmp r7, r0
- strb r1, [r6, #-0x1]!
- blt _020E003C
-_020E0050:
- cmp r5, #0x0
- cmpeq r11, #0x10
- bne _020E0070
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x30
- strneb r8, [r6, #-0x1]
- strneb r0, [r6, #-0x2]!
-_020E0070:
- ldr r0, [sp, #0x14]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r6, #-0x1]!
- bne _020E00A4
- ldr r0, [sp, #0xc]
- cmp r0, #0x1
- moveq r0, #0x2b
- streqb r0, [r6, #-0x1]!
- beq _020E00A4
- cmp r0, #0x2
- moveq r0, #0x20
- streqb r0, [r6, #-0x1]!
-_020E00A4:
- mov r0, r6
- add sp, sp, #0x18
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E00B8: .word 0x000001FD
-
- arm_func_start double2hex
-double2hex: ; 0x020E00BC
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r10,lr}
- sub sp, sp, #0x44
- ldr r7, [sp, #0x80]
- ldr r0, _020E056C ; =0x000001FD
- mov r8, r2
- cmp r7, r0
- ldrb r6, [sp, #0x79]
- ldrb r5, [sp, #0x77]
- ldrb r4, [sp, #0x75]
- ldr r1, [sp, #0x68]
- ldr r2, [sp, #0x6c]
- addgt sp, sp, #0x44
- movgt r0, #0x0
- ldmgtia sp!, {r3-r10,lr}
- addgt sp, sp, #0x10
- bxgt lr
- mov r10, #0x0
- mov r9, #0x20
- add r0, sp, #0x8
- add r3, sp, #0xc
- strb r10, [sp, #0x8]
- strh r9, [sp, #0xa]
- bl __num2dec_internal2
- ldr r0, [sp, #0x68]
- ldr r1, [sp, #0x6c]
- bl fabs
- mov r2, r0
- mov r0, r10
- mov r3, r1
- mov r1, r0
- bl _deq
- bne _020E0188
- ldr r3, _020E0570 ; =UNK_02106DA0
- sub r0, r8, #0x6
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- add sp, sp, #0x44
- strb r2, [r8, #-0x6]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r2, [r3, #0x4]
- ldrb r1, [r3, #0x5]
- strb r2, [r0, #0x4]
- strb r1, [r0, #0x5]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0188:
- ldrb r0, [sp, #0x11]
- cmp r0, #0x49
- bne _020E0298
- ldrsb r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020E0224
- cmp r6, #0x41
- sub r0, r8, #0x5
- bne _020E01E8
- ldr r3, _020E0574 ; =UNK_02106DA8
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E01E8:
- ldr r3, _020E0578 ; =UNK_02106DB0
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0224:
- cmp r6, #0x41
- sub r0, r8, #0x4
- bne _020E0264
- ldr r3, _020E057C ; =UNK_02106DB8
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0264:
- ldr r3, _020E0580 ; =UNK_02106DBC
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0298:
- cmp r0, #0x4e
- bne _020E03A4
- ldrsb r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020E0330
- cmp r6, #0x41
- sub r0, r8, #0x5
- bne _020E02F4
- ldr r3, _020E0584 ; =UNK_02106DC0
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E02F4:
- ldr r3, _020E0588 ; =UNK_02106DC8
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0330:
- cmp r6, #0x41
- sub r0, r8, #0x4
- bne _020E0370
- ldr r3, _020E058C ; =UNK_02106DD0
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E0370:
- ldr r3, _020E0590 ; =UNK_02106DD4
- add sp, sp, #0x44
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E03A4:
- mov r3, r10
- mov r1, #0x1
- mov r0, #0x64
- add r9, sp, #0x68
- strb r1, [sp, #0x34]
- strb r1, [sp, #0x35]
- strb r3, [sp, #0x36]
- strb r3, [sp, #0x37]
- strb r3, [sp, #0x38]
- str r3, [sp, #0x3c]
- str r1, [sp, #0x40]
- strb r0, [sp, #0x39]
-_020E03D4:
- rsb r1, r3, #0x7
- ldrsb r2, [r9, r3]
- ldrsb r0, [r9, r1]
- strb r0, [r9, r3]
- add r3, r3, #0x1
- strb r2, [r9, r1]
- cmp r3, #0x4
- blt _020E03D4
- ldrb r0, [sp, #0x69]
- ldrb r1, [sp, #0x68]
- ldr sb, _020E0594 ; =0x000007FF
- mov r0, r0, lsl #0x11
- orr r1, r0, r1, lsl #0x19
- add r0, sp, #0x34
- and lr, r9, r1, lsr #0x15
- sub r12, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r12, {r0-r3}
- rsb r0, r9, #0x400
- mov r1, r8
- add r0, lr, r0
- ldmia r12, {r2-r3}
- bl long2str
- cmp r6, #0x61
- moveq r1, #0x70
- movne r1, #0x50
- strb r1, [r0, #-0x1]!
- mov r1, r7, lsl #0x2
- mov lr, r7
- cmp r7, #0x1
- add r8, r1, #0xb
- add r12, sp, #0x68
- blt _020E04E4
- mov r9, #0x30
-_020E045C:
- cmp r8, #0x40
- bge _020E04CC
- ldrb r1, [r12, r8, asr #0x3]
- and r2, r8, #0x7
- rsb r3, r2, #0x7
- mov r2, r1, asr r3
- sub r10, r8, #0x4
- bic r1, r8, #0x7
- bic r10, r10, #0x7
- cmp r1, r10
- add r10, r12, r8, asr #0x3
- and r1, r2, #0xff
- beq _020E04A0
- ldrb r2, [r10, #-0x1]
- mov r2, r2, lsl #0x8
- orr r1, r1, r2, asr r3
- and r1, r1, #0xff
-_020E04A0:
- and r1, r1, #0xf
- cmp r1, #0xa
- addcc r1, r1, #0x30
- andcc r1, r1, #0xff
- blo _020E04D0
- cmp r6, #0x61
- addeq r1, r1, #0x57
- andeq r1, r1, #0xff
- addne r1, r1, #0x37
- andne r1, r1, #0xff
- b _020E04D0
-_020E04CC:
- mov r1, r9
-_020E04D0:
- sub lr, lr, #0x1
- cmp lr, #0x1
- strb r1, [r0, #-0x1]!
- sub r8, r8, #0x4
- bge _020E045C
-_020E04E4:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r1, #0x2e
- strneb r1, [r0, #-0x1]!
- mov r1, #0x31
- strb r1, [r0, #-0x1]
- cmp r6, #0x61
- moveq r1, #0x78
- movne r1, #0x58
- strb r1, [r0, #-0x2]!
- mov r1, #0x30
- strb r1, [r0, #-0x1]!
- ldrsb r1, [sp, #0xc]
- cmp r1, #0x0
- movne r1, #0x2d
- strneb r1, [r0, #-0x1]!
- addne sp, sp, #0x44
- ldmneia sp!, {r3-r10,lr}
- addne sp, sp, #0x10
- bxne lr
- cmp r4, #0x1
- moveq r1, #0x2b
- streqb r1, [r0, #-0x1]!
- addeq sp, sp, #0x44
- ldmeqia sp!, {r3-r10,lr}
- addeq sp, sp, #0x10
- bxeq lr
- cmp r4, #0x2
- moveq r1, #0x20
- streqb r1, [r0, #-0x1]!
- add sp, sp, #0x44
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E056C: .word 0x000001FD
-_020E0570: .word UNK_02106DA0
-_020E0574: .word UNK_02106DA8
-_020E0578: .word UNK_02106DB0
-_020E057C: .word UNK_02106DB8
-_020E0580: .word UNK_02106DBC
-_020E0584: .word UNK_02106DC0
-_020E0588: .word UNK_02106DC8
-_020E058C: .word UNK_02106DD0
-_020E0590: .word UNK_02106DD4
-_020E0594: .word 0x000007FF
-
- arm_func_start round_decimal
-round_decimal: ; 0x020E0598
- stmdb sp!, {r4,lr}
- cmp r1, #0x0
- bge _020E05C0
-_020E05A4:
- mov r1, #0x0
- strh r1, [r0, #0x2]
- mov r1, #0x1
- strb r1, [r0, #0x4]
- mov r1, #0x30
- strb r1, [r0, #0x5]
- ldmia sp!, {r4,pc}
-_020E05C0:
- ldrb lr, [r0, #0x4]
- cmp r1, lr
- ldmgeia sp!, {r4,pc}
- add r12, r0, #0x5
- add r2, r12, r1
- add r2, r2, #0x1
- ldrsb r3, [r2, #-0x1]!
- sub r3, r3, #0x30
- mov r3, r3, lsl #0x18
- mov r3, r3, asr #0x18
- cmp r3, #0x5
- bne _020E0620
- add r12, r12, lr
-_020E05F4:
- sub r12, r12, #0x1
- cmp r12, r2
- bls _020E060C
- ldrsb r3, [r12, #0x0]
- cmp r3, #0x30
- beq _020E05F4
-_020E060C:
- cmp r12, r2
- ldreqsb r3, [r2, #-0x1]
- andeq r4, r3, #0x1
- movne r4, #0x1
- b _020E0628
-_020E0620:
- movgt r4, #0x1
- movle r4, #0x0
-_020E0628:
- cmp r1, #0x0
- beq _020E0684
- mov r12, #0x0
- mov lr, #0x1
-_020E0638:
- ldrsb r3, [r2, #-0x1]!
- sub r3, r3, #0x30
- add r3, r3, r4
- mov r3, r3, lsl #0x18
- mov r3, r3, asr #0x18
- cmp r3, #0x9
- movgt r4, lr
- movle r4, r12
- cmp r4, #0x0
- bne _020E0668
- cmp r3, #0x0
- bne _020E0670
-_020E0668:
- sub r1, r1, #0x1
- b _020E067C
-_020E0670:
- add r3, r3, #0x30
- strb r3, [r2, #0x0]
- b _020E0684
-_020E067C:
- cmp r1, #0x0
- bne _020E0638
-_020E0684:
- cmp r4, #0x0
- beq _020E06AC
- ldrsh r3, [r0, #0x2]
- mov r2, #0x1
- mov r1, #0x31
- add r3, r3, #0x1
- strh r3, [r0, #0x2]
- strb r2, [r0, #0x4]
- strb r1, [r0, #0x5]
- ldmia sp!, {r4,pc}
-_020E06AC:
- cmp r1, #0x0
- beq _020E05A4
- strb r1, [r0, #0x4]
- ldmia sp!, {r4,pc}
-
- arm_func_start float2str
-float2str: ; 0x020E06BC
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x2c
- ldr r7, [sp, #0x68]
- ldr r3, _020E0DF4 ; =0x000001FD
- ldrb r6, [sp, #0x61]
- ldrb r5, [sp, #0x5f]
- ldrb r4, [sp, #0x5d]
- cmp r7, r3
- mov r10, r0
- mov r8, r1
- mov r9, r2
- addgt sp, sp, #0x2c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- mov r12, #0x0
- mov r11, #0x20
- add r0, sp, #0x0
- add r3, sp, #0x4
- mov r1, r10
- mov r2, r8
- strb r12, [sp, #0x0]
- strh r11, [sp, #0x2]
- bl __num2dec_internal2
- ldrb r0, [sp, #0x8]
- add r1, sp, #0x9
- add r0, r1, r0
- b _020E074C
-_020E0734:
- ldrb r2, [sp, #0x8]
- ldrsh r1, [sp, #0x6]
- sub r2, r2, #0x1
- add r1, r1, #0x1
- strb r2, [sp, #0x8]
- strh r1, [sp, #0x6]
-_020E074C:
- ldrb r1, [sp, #0x8]
- cmp r1, #0x1
- bls _020E0764
- ldrsb r1, [r0, #-0x1]!
- cmp r1, #0x30
- beq _020E0734
-_020E0764:
- ldrb r0, [sp, #0x9]
- cmp r0, #0x30
- beq _020E0784
- cmp r0, #0x49
- beq _020E0790
- cmp r0, #0x4e
- beq _020E08F0
- b _020E0A44
-_020E0784:
- mov r0, #0x0
- strh r0, [sp, #0x6]
- b _020E0A44
-_020E0790:
- mov r2, #0x0
- mov r0, r10
- mov r1, r8
- mov r3, r2
- bl _dls
- bhs _020E0854
- cmp r6, #0x0
- sub r0, r9, #0x5
- blt _020E07BC
- cmp r6, #0x80
- blt _020E07C4
-_020E07BC:
- mov r1, #0x0
- b _020E07D4
-_020E07C4:
- ldr r1, _020E0DF8 ; =UNK_0210430C
- mov r2, r6, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x200
-_020E07D4:
- cmp r1, #0x0
- beq _020E0818
- ldr r3, _020E0DFC ; =UNK_02106DA8
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0818:
- ldr r3, _020E0E00 ; =UNK_02106DB0
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0854:
- cmp r6, #0x0
- sub r0, r9, #0x4
- blt _020E0868
- cmp r6, #0x80
- blt _020E0870
-_020E0868:
- mov r1, #0x0
- b _020E0880
-_020E0870:
- ldr r1, _020E0DF8 ; =UNK_0210430C
- mov r2, r6, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x200
-_020E0880:
- cmp r1, #0x0
- beq _020E08BC
- ldr r3, _020E0E04 ; =UNK_02106DB8
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E08BC:
- ldr r3, _020E0E08 ; =UNK_02106DBC
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E08F0:
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020E09A8
- cmp r6, #0x0
- sub r0, r9, #0x5
- blt _020E0910
- cmp r6, #0x80
- blt _020E0918
-_020E0910:
- mov r1, #0x0
- b _020E0928
-_020E0918:
- ldr r1, _020E0DF8 ; =UNK_0210430C
- mov r2, r6, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x200
-_020E0928:
- cmp r1, #0x0
- beq _020E096C
- ldr r3, _020E0E0C ; =UNK_02106DC0
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E096C:
- ldr r3, _020E0E10 ; =UNK_02106DC8
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldrb r1, [r3, #0x4]
- strb r1, [r0, #0x4]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E09A8:
- cmp r6, #0x0
- sub r0, r9, #0x4
- blt _020E09BC
- cmp r6, #0x80
- blt _020E09C4
-_020E09BC:
- mov r1, #0x0
- b _020E09D4
-_020E09C4:
- ldr r1, _020E0DF8 ; =UNK_0210430C
- mov r2, r6, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x200
-_020E09D4:
- cmp r1, #0x0
- beq _020E0A10
- ldr r3, _020E0E14 ; =UNK_02106DD0
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0A10:
- ldr r3, _020E0E18 ; =UNK_02106DD4
- add sp, sp, #0x2c
- ldrb r2, [r3, #0x0]
- ldrb r1, [r3, #0x1]
- strb r2, [r0, #0x0]
- strb r1, [r0, #0x1]
- ldrb r2, [r3, #0x2]
- ldrb r1, [r3, #0x3]
- strb r2, [r0, #0x2]
- strb r1, [r0, #0x3]
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0A44:
- ldrb r0, [sp, #0x8]
- ldrsh r1, [sp, #0x6]
- sub r8, r9, #0x1
- sub r0, r0, #0x1
- add r0, r1, r0
- strh r0, [sp, #0x6]
- mov r0, #0x0
- strb r0, [r8, #0x0]
- cmp r6, #0x65
- bgt _020E0A98
- bge _020E0B24
- cmp r6, #0x47
- bgt _020E0DE0
- cmp r6, #0x45
- blt _020E0DE0
- beq _020E0B24
- cmp r6, #0x46
- beq _020E0C6C
- cmp r6, #0x47
- beq _020E0AB0
- b _020E0DE0
-_020E0A98:
- cmp r6, #0x66
- bgt _020E0AA8
- beq _020E0C6C
- b _020E0DE0
-_020E0AA8:
- cmp r6, #0x67
- bne _020E0DE0
-_020E0AB0:
- ldrb r0, [sp, #0x8]
- cmp r0, r7
- ble _020E0AC8
- add r0, sp, #0x4
- mov r1, r7
- bl round_decimal
-_020E0AC8:
- ldrsh r2, [sp, #0x6]
- mvn r0, #0x3
- cmp r2, r0
- blt _020E0AE0
- cmp r2, r7
- blt _020E0B00
-_020E0AE0:
- cmp r5, #0x0
- ldreqb r0, [sp, #0x8]
- subne r7, r7, #0x1
- subeq r7, r0, #0x1
- cmp r6, #0x67
- moveq r6, #0x65
- movne r6, #0x45
- b _020E0B24
-_020E0B00:
- cmp r5, #0x0
- addne r0, r2, #0x1
- subne r7, r7, r0
- bne _020E0C6C
- ldrb r1, [sp, #0x8]
- add r0, r2, #0x1
- subs r7, r1, r0
- movmi r7, #0x0
- b _020E0C6C
-_020E0B24:
- ldrb r0, [sp, #0x8]
- add r1, r7, #0x1
- cmp r0, r1
- ble _020E0B3C
- add r0, sp, #0x4
- bl round_decimal
-_020E0B3C:
- ldrsh lr, [sp, #0x6]
- mov r11, #0x2b
- mov r10, #0x0
- cmp lr, #0x0
- rsblt lr, lr, #0x0
- movlt r11, #0x2d
- ldr r3, _020E0E1C ; =0x66666667
- mov r0, #0xa
- b _020E0B90
-_020E0B60:
- mov r1, lr, lsr #0x1f
- smull r2, r12, r3, lr
- add r12, r1, r12, asr #0x2
- smull r1, r2, r0, r12
- sub r12, lr, r1
- add r1, r12, #0x30
- strb r1, [r8, #-0x1]!
- mov r2, lr
- smull r1, lr, r3, r2
- mov r1, r2, lsr #0x1f
- add lr, r1, lr, asr #0x2
- add r10, r10, #0x1
-_020E0B90:
- cmp lr, #0x0
- bne _020E0B60
- cmp r10, #0x2
- blt _020E0B60
- strb r11, [r8, #-0x1]
- strb r6, [r8, #-0x2]!
- sub r1, r9, r8
- ldr r0, _020E0DF4 ; =0x000001FD
- add r1, r7, r1
- cmp r1, r0
- addgt sp, sp, #0x2c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- ldrb r1, [sp, #0x8]
- add r0, r7, #0x1
- cmp r1, r0
- bge _020E0BFC
- add r0, r7, #0x2
- sub r0, r0, r1
- subs r1, r0, #0x1
- beq _020E0BFC
- mov r0, #0x30
-_020E0BF0:
- strb r0, [r8, #-0x1]!
- subs r1, r1, #0x1
- bne _020E0BF0
-_020E0BFC:
- ldrb r1, [sp, #0x8]
- add r0, sp, #0x9
- add r2, r0, r1
- subs r1, r1, #0x1
- beq _020E0C20
-_020E0C10:
- ldrsb r0, [r2, #-0x1]!
- subs r1, r1, #0x1
- strb r0, [r8, #-0x1]!
- bne _020E0C10
-_020E0C20:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r0, #0x2e
- strneb r0, [r8, #-0x1]!
- ldrb r0, [sp, #0x9]
- strb r0, [r8, #-0x1]!
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r8, #-0x1]!
- bne _020E0DE0
- cmp r4, #0x1
- moveq r0, #0x2b
- streqb r0, [r8, #-0x1]!
- beq _020E0DE0
- cmp r4, #0x2
- moveq r0, #0x20
- streqb r0, [r8, #-0x1]!
- b _020E0DE0
-_020E0C6C:
- ldrsh r3, [sp, #0x6]
- ldrb r2, [sp, #0x8]
- sub r0, r2, r3
- subs r1, r0, #0x1
- movmi r1, #0x0
- cmp r1, r7
- ble _020E0CAC
- sub r1, r1, r7
- add r0, sp, #0x4
- sub r1, r2, r1
- bl round_decimal
- ldrsh r3, [sp, #0x6]
- ldrb r2, [sp, #0x8]
- sub r0, r2, r3
- subs r1, r0, #0x1
- movmi r1, #0x0
-_020E0CAC:
- adds r0, r3, #0x1
- movmi r0, #0x0
- ldr r3, _020E0DF4 ; =0x000001FD
- add r6, r0, r1
- cmp r6, r3
- addgt sp, sp, #0x2c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- add r3, sp, #0x9
- sub r6, r7, r1
- cmp r6, #0x0
- add r2, r3, r2
- mov r9, #0x0
- ble _020E0D00
- mov r3, #0x30
-_020E0CF0:
- add r9, r9, #0x1
- cmp r9, r6
- strb r3, [r8, #-0x1]!
- blt _020E0CF0
-_020E0D00:
- mov r6, #0x0
- b _020E0D14
-_020E0D08:
- ldrsb r3, [r2, #-0x1]!
- add r6, r6, #0x1
- strb r3, [r8, #-0x1]!
-_020E0D14:
- cmp r6, r1
- ldrltb r3, [sp, #0x8]
- cmplt r6, r3
- blt _020E0D08
- cmp r6, r1
- bge _020E0D40
- mov r3, #0x30
-_020E0D30:
- add r6, r6, #0x1
- cmp r6, r1
- strb r3, [r8, #-0x1]!
- blt _020E0D30
-_020E0D40:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r1, #0x2e
- strneb r1, [r8, #-0x1]!
- cmp r0, #0x0
- beq _020E0DA8
- ldrb r1, [sp, #0x8]
- mov r5, #0x0
- sub r1, r0, r1
- cmp r1, #0x0
- ble _020E0D88
- mov r3, #0x30
-_020E0D70:
- strb r3, [r8, #-0x1]!
- ldrb r1, [sp, #0x8]
- add r5, r5, #0x1
- sub r1, r0, r1
- cmp r5, r1
- blt _020E0D70
-_020E0D88:
- cmp r5, r0
- bge _020E0DB0
-_020E0D90:
- ldrsb r1, [r2, #-0x1]!
- add r5, r5, #0x1
- cmp r5, r0
- strb r1, [r8, #-0x1]!
- blt _020E0D90
- b _020E0DB0
-_020E0DA8:
- mov r0, #0x30
- strb r0, [r8, #-0x1]!
-_020E0DB0:
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r8, #-0x1]!
- bne _020E0DE0
- cmp r4, #0x1
- moveq r0, #0x2b
- streqb r0, [r8, #-0x1]!
- beq _020E0DE0
- cmp r4, #0x2
- moveq r0, #0x20
- streqb r0, [r8, #-0x1]!
-_020E0DE0:
- mov r0, r8
- add sp, sp, #0x2c
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E0DF4: .word 0x000001FD
-_020E0DF8: .word UNK_0210430C
-_020E0DFC: .word UNK_02106DA8
-_020E0E00: .word UNK_02106DB0
-_020E0E04: .word UNK_02106DB8
-_020E0E08: .word UNK_02106DBC
-_020E0E0C: .word UNK_02106DC0
-_020E0E10: .word UNK_02106DC8
-_020E0E14: .word UNK_02106DD0
-_020E0E18: .word UNK_02106DD4
-_020E0E1C: .word 0x66666667
-
- arm_func_start __pformatter
-__pformatter:
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x22c
- mov r3, #0x20
- mov r11, r2
- strb r3, [sp, #0x19]
- ldrsb r2, [r11, #0x0]
- mov r9, r0
- mov r8, r1
- cmp r2, #0x0
- mov r10, #0x0
- beq _020E1628
-_020E0E50:
- mov r0, r11
- mov r1, #0x25
- bl strchr
- str r0, [sp, #0xc]
- cmp r0, #0x0
- bne _020E0EA4
- mov r0, r11
- bl strlen
- movs r2, r0
- add r10, r10, r2
- beq _020E1628
- mov r0, r8
- mov r1, r11
- blx r9
- cmp r0, #0x0
- bne _020E1628
- add sp, sp, #0x22c
- mvn r0, #0x0
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E0EA4:
- subs r2, r0, r11
- add r10, r10, r2
- beq _020E0ED4
- mov r0, r8
- mov r1, r11
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E0ED4:
- ldr r0, [sp, #0xc]
- add r1, sp, #0x25c
- add r2, sp, #0x1c
- bl parse_format_printf
- ldrb r1, [sp, #0x21]
- mov r11, r0
- cmp r1, #0x61
- bgt _020E0F40
- bge _020E12A4
- cmp r1, #0x47
- bgt _020E0F34
- subs r0, r1, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020E0F28
- b _020E12A4
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E123C
- b _020E123C
- b _020E123C
-_020E0F28:
- cmp r1, #0x25
- beq _020E1478
- b _020E148C
-_020E0F34:
- cmp r1, #0x58
- beq _020E1100
- b _020E148C
-_020E0F40:
- cmp r1, #0x75
- bgt _020E0FA8
- subs r0, r1, #0x64
- addpl pc, pc, r0, lsl #0x2
- b _020E0F9C
- b _020E0FC0
- b _020E123C
- b _020E123C
- b _020E123C
- b _020E148C
- b _020E0FC0
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E13CC
- b _020E1100
- b _020E148C
- b _020E148C
- b _020E148C
- b _020E130C
- b _020E148C
- b _020E1100
-_020E0F9C:
- cmp r1, #0x63
- beq _020E1458
- b _020E148C
-_020E0FA8:
- cmp r1, #0x78
- bgt _020E0FB8
- beq _020E1100
- b _020E148C
-_020E0FB8:
- cmp r1, #0xff
- b _020E148C
-_020E0FC0:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x3
- bne _020E0FE0
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E1078
-_020E0FE0:
- cmp r0, #0x4
- bne _020E1008
- ldr r1, [sp, #0x25c]
- add r2, r1, #0x8
- str r2, [sp, #0x25c]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E1078
-_020E1008:
- cmp r0, #0x6
- bne _020E1030
- ldr r1, [sp, #0x25c]
- add r2, r1, #0x8
- str r2, [sp, #0x25c]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E1078
-_020E1030:
- cmp r0, #0x7
- bne _020E104C
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E1078
-_020E104C:
- cmp r0, #0x8
- bne _020E1068
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E1078
-_020E1068:
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
-_020E1078:
- cmp r0, #0x2
- moveq r1, r5, lsl #0x10
- moveq r5, r1, asr #0x10
- cmp r0, #0x1
- moveq r1, r5, lsl #0x18
- moveq r5, r1, asr #0x18
- cmp r0, #0x4
- cmpne r0, #0x6
- add r0, sp, #0x1c
- bne _020E10CC
- sub r4, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- ldr r3, [r4, #0x0]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, sp, #0x22c
- bl longlong2str
- movs r7, r0
- beq _020E148C
- b _020E10F0
-_020E10CC:
- sub r4, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- add r1, sp, #0x22c
- mov r0, r5
- ldmia r4, {r2-r3}
- bl long2str
- movs r7, r0
- beq _020E148C
-_020E10F0:
- add r0, sp, #0x200
- add r0, r0, #0x2b
- sub r6, r0, r7
- b _020E14D8
-_020E1100:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x3
- bne _020E1120
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E11B8
-_020E1120:
- cmp r0, #0x4
- bne _020E1148
- ldr r1, [sp, #0x25c]
- add r2, r1, #0x8
- str r2, [sp, #0x25c]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E11B8
-_020E1148:
- cmp r0, #0x6
- bne _020E1170
- ldr r1, [sp, #0x25c]
- add r2, r1, #0x8
- str r2, [sp, #0x25c]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E11B8
-_020E1170:
- cmp r0, #0x7
- bne _020E118C
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E11B8
-_020E118C:
- cmp r0, #0x8
- bne _020E11A8
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
- b _020E11B8
-_020E11A8:
- ldr r1, [sp, #0x25c]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r5, [r1, #-0x4]
-_020E11B8:
- cmp r0, #0x2
- moveq r1, r5, lsl #0x10
- moveq r5, r1, lsr #0x10
- cmp r0, #0x1
- andeq r5, r5, #0xff
- cmp r0, #0x4
- cmpne r0, #0x6
- add r0, sp, #0x1c
- bne _020E1208
- sub r4, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- ldr r3, [r4, #0x0]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, sp, #0x22c
- bl longlong2str
- movs r7, r0
- beq _020E148C
- b _020E122C
-_020E1208:
- sub r4, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- add r1, sp, #0x22c
- mov r0, r5
- ldmia r4, {r2-r3}
- bl long2str
- movs r7, r0
- beq _020E148C
-_020E122C:
- add r0, sp, #0x200
- add r0, r0, #0x2b
- sub r6, r0, r7
- b _020E14D8
-_020E123C:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x9
- ldrne r0, [sp, #0x25c]
- addne r0, r0, #0x8
- strne r0, [sp, #0x25c]
- bne _020E1260
- ldr r0, [sp, #0x25c]
- add r0, r0, #0x8
- str r0, [sp, #0x25c]
-_020E1260:
- ldr r7, [r0, #-0x8]
- ldr r6, [r0, #-0x4]
- add r0, sp, #0x1c
- sub r4, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- ldr r3, [r4, #0x0]
- mov r0, r7
- mov r1, r6
- add r2, sp, #0x22c
- bl float2str
- movs r7, r0
- beq _020E148C
- add r0, sp, #0x200
- add r0, r0, #0x2b
- sub r6, r0, r7
- b _020E14D8
-_020E12A4:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x9
- ldrne r0, [sp, #0x25c]
- addne r0, r0, #0x8
- strne r0, [sp, #0x25c]
- bne _020E12C8
- ldr r0, [sp, #0x25c]
- add r0, r0, #0x8
- str r0, [sp, #0x25c]
-_020E12C8:
- ldr r7, [r0, #-0x8]
- ldr r6, [r0, #-0x4]
- add r0, sp, #0x1c
- sub r4, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r4, {r0-r3}
- ldr r3, [r4, #0x0]
- mov r0, r7
- mov r1, r6
- add r2, sp, #0x22c
- bl double2hex
- movs r7, r0
- beq _020E148C
- add r0, sp, #0x200
- add r0, r0, #0x2b
- sub r6, r0, r7
- b _020E14D8
-_020E130C:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x5
- bne _020E134C
- ldr r0, [sp, #0x25c]
- mov r2, #0x200
- add r0, r0, #0x4
- str r0, [sp, #0x25c]
- ldr r1, [r0, #-0x4]
- add r0, sp, #0x2c
- cmp r1, #0x0
- ldreq r1, _020E163C ; =UNK_02106DD8
- bl wcstombs
- cmp r0, #0x0
- blt _020E148C
- add r7, sp, #0x2c
- b _020E135C
-_020E134C:
- ldr r0, [sp, #0x25c]
- add r0, r0, #0x4
- str r0, [sp, #0x25c]
- ldr r7, [r0, #-0x4]
-_020E135C:
- ldrb r0, [sp, #0x1f]
- cmp r7, #0x0
- ldreq r7, _020E1640 ; =UNK_02106DDC
- cmp r0, #0x0
- beq _020E1390
- ldrb r0, [sp, #0x1e]
- ldrb r6, [r7], #0x1
- cmp r0, #0x0
- beq _020E14D8
- ldr r0, [sp, #0x28]
- cmp r6, r0
- movgt r6, r0
- b _020E14D8
-_020E1390:
- ldrb r0, [sp, #0x1e]
- cmp r0, #0x0
- beq _020E13BC
- ldr r6, [sp, #0x28]
- mov r0, r7
- mov r2, r6
- mov r1, #0x0
- bl memchr
- cmp r0, #0x0
- subne r6, r0, r7
- b _020E14D8
-_020E13BC:
- mov r0, r7
- bl strlen
- mov r6, r0
- b _020E14D8
-_020E13CC:
- ldr r1, [sp, #0x25c]
- ldrb r0, [sp, #0x20]
- add r1, r1, #0x4
- str r1, [sp, #0x25c]
- ldr r1, [r1, #-0x4]
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020E161C
-_020E13EC:
- b _020E1410
-_020E13F0:
- b _020E161C
-_020E13F4:
- b _020E1418
-_020E13F8:
- b _020E1420
-_020E13FC:
- b _020E1448
-_020E1400:
- b _020E161C
-_020E1404:
- b _020E1428
-_020E1408:
- b _020E1438
-_020E140C:
- b _020E1440
-_020E1410:
- str r10, [r1, #0x0]
- b _020E161C
-_020E1418:
- strh r10, [r1, #0x0]
- b _020E161C
-_020E1420:
- str r10, [r1, #0x0]
- b _020E161C
-_020E1428:
- str r10, [r1, #0x0]
- mov r0, r10, asr #0x1f
- str r0, [r1, #0x4]
- b _020E161C
-_020E1438:
- str r10, [r1, #0x0]
- b _020E161C
-_020E1440:
- str r10, [r1, #0x0]
- b _020E161C
-_020E1448:
- str r10, [r1, #0x0]
- mov r0, r10, asr #0x1f
- str r0, [r1, #0x4]
- b _020E161C
-_020E1458:
- ldr r0, [sp, #0x25c]
- add r7, sp, #0x2c
- add r0, r0, #0x4
- str r0, [sp, #0x25c]
- ldr r0, [r0, #-0x4]
- mov r6, #0x1
- strb r0, [sp, #0x2c]
- b _020E14D8
-_020E1478:
- mov r0, #0x25
- strb r0, [sp, #0x2c]
- add r7, sp, #0x2c
- mov r6, #0x1
- b _020E14D8
-_020E148C:
- ldr r0, [sp, #0xc]
- bl strlen
- movs r4, r0
- beq _020E14C4
- ldr r1, [sp, #0xc]
- mov r0, r8
- mov r2, r4
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E14C4:
- add sp, sp, #0x22c
- add r0, r10, r4
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E14D8:
- ldrb r0, [sp, #0x1c]
- mov r4, r6
- cmp r0, #0x0
- beq _020E158C
- cmp r0, #0x2
- moveq r0, #0x30
- movne r0, #0x20
- strb r0, [sp, #0x19]
- ldrsb r0, [r7, #0x0]
- cmp r0, #0x2b
- cmpne r0, #0x2d
- cmpne r0, #0x20
- bne _020E1548
- ldrsb r0, [sp, #0x19]
- cmp r0, #0x30
- bne _020E1548
- mov r0, r8
- mov r1, r7
- mov r2, #0x1
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- add r7, r7, #0x1
- sub r6, r6, #0x1
-_020E1548:
- ldr r0, [sp, #0x24]
- cmp r4, r0
- bge _020E158C
-_020E1554:
- mov r0, r8
- add r1, sp, #0x19
- mov r2, #0x1
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x24]
- add r4, r4, #0x1
- cmp r4, r0
- blt _020E1554
-_020E158C:
- cmp r6, #0x0
- beq _020E15BC
- mov r0, r8
- mov r1, r7
- mov r2, r6
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E15BC:
- ldrb r0, [sp, #0x1c]
- cmp r0, #0x0
- bne _020E1618
- ldr r0, [sp, #0x24]
- cmp r4, r0
- bge _020E1618
- mov r6, #0x20
- add r7, sp, #0x18
-_020E15DC:
- mov r0, r8
- mov r1, r7
- mov r2, #0x1
- strb r6, [sp, #0x18]
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x22c
- mvneq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x24]
- add r4, r4, #0x1
- cmp r4, r0
- blt _020E15DC
-_020E1618:
- add r10, r10, r4
-_020E161C:
- ldrsb r0, [r11, #0x0]
- cmp r0, #0x0
- bne _020E0E50
-_020E1628:
- mov r0, r10
- add sp, sp, #0x22c
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E163C: .word UNK_02106DD8
-_020E1640: .word UNK_02106DDC
-
- arm_func_start __FileWrite
-__FileWrite: ; 0x020E1644
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- mov r0, r1
- mov r3, r5
- mov r1, #0x1
- mov r4, r2
- bl __fwrite
- cmp r4, r0
- movne r5, #0x0
- mov r0, r5
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start __StringWrite
-__StringWrite: ; 0x020E1670
- stmdb sp!, {r3-r5,lr}
- mov r4, r0
- ldr r3, [r4, #0x8]
- mov r5, r2
- ldr r2, [r4, #0x4]
- add r0, r3, r5
- cmp r0, r2
- ldr r0, [r4, #0x0]
- subhi r5, r2, r3
- mov r2, r5
- add r0, r0, r3
- bl memcpy
- ldr r1, [r4, #0x8]
- mov r0, #0x1
- add r1, r1, r5
- str r1, [r4, #0x8]
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start printf
-printf: ; 0x020E16B4
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4,lr}
- ldr r0, _020E17B4 ; =UNK_02106AA4
- mvn r1, #0x0
- bl fwide
- cmp r0, #0x0
- mvnge r0, #0x0
- ldmgeia sp!, {r4,lr}
- addge sp, sp, #0x10
- bxge lr
- ldr r0, _020E17B8 ; =UNK_021D7118
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020E1710
- ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020E17C4 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0xc]
- str r2, [r0, #0xc]
- b _020E1768
-_020E1710:
- ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, #0xc]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020E1740
- ldr r0, _020E17C4 ; =UNK_021D70AC
- ldr r1, [r0, #0xc]
- add r1, r1, #0x1
- str r1, [r0, #0xc]
- b _020E1768
-_020E1740:
- ldr r0, _020E17B8 ; =UNK_021D7118
- bl OS_LockMutex
- ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020E17C4 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0xc]
- str r2, [r0, #0xc]
-_020E1768:
- add r0, sp, #0x8
- bic r3, r0, #0x3
- ldr r2, [sp, #0x8]
- ldr r0, _020E17C8 ; =__FileWrite
- ldr r1, _020E17B4 ; =UNK_02106AA4
- add r3, r3, #0x4
- bl __pformatter
- ldr r1, _020E17C4 ; =UNK_021D70AC
- mov r4, r0
- ldr r0, [r1, #0xc]
- subs r0, r0, #0x1
- str r0, [r1, #0xc]
- bne _020E17A4
- ldr r0, _020E17B8 ; =UNK_021D7118
- bl OS_UnlockMutex
-_020E17A4:
- mov r0, r4
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E17B4: .word UNK_02106AA4
-_020E17B8: .word UNK_021D7118
-_020E17BC: .word OSi_ThreadInfo
-_020E17C0: .word UNK_021D7088
-_020E17C4: .word UNK_021D70AC
-_020E17C8: .word __FileWrite
-
- arm_func_start vsnprintf
-vsnprintf: ; 0x020E17CC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r5, r0
- mov r4, r1
- mov r12, #0x0
- ldr r0, _020E1830 ; =__StringWrite
- add r1, sp, #0x0
- str r5, [sp, #0x0]
- str r4, [sp, #0x4]
- str r12, [sp, #0x8]
- bl __pformatter
- cmp r5, #0x0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4-r5,pc}
- cmp r0, r4
- movcc r1, #0x0
- addcc sp, sp, #0xc
- strccb r1, [r5, r0]
- ldmccia sp!, {r4-r5,pc}
- cmp r4, #0x0
- addne r1, r5, r4
- movne r2, #0x0
- strneb r2, [r1, #-0x1]
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020E1830: .word __StringWrite
-
- arm_func_start snprintf
-snprintf: ; 0x020E1834
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3,lr}
- add r3, sp, #0x10
- bic r3, r3, #0x3
- ldr r2, [sp, #0x10]
- add r3, r3, #0x4
- bl vsnprintf
- ldmia sp!, {r3,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start sprintf
-sprintf: ; 0x020E185C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3,lr}
- add r1, sp, #0xc
- bic r1, r1, #0x3
- add r3, r1, #0x4
- ldr r2, [sp, #0xc]
- mvn r1, #0x0
- bl vsnprintf
- ldmia sp!, {r3,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start qsort
-qsort: ; 0x020E1888
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x10
- mov r9, r1
- cmp r9, #0x2
- mov r10, r0
- mov r8, r2
- mov r7, r3
- addcc sp, sp, #0x10
- ldmccia sp!, {r3-r11,pc}
- mov r0, r9, lsr #0x1
- add r11, r0, #0x1
- sub r0, r11, #0x1
- mla r0, r8, r0, r10
- sub r2, r9, #0x1
- str r0, [sp, #0xc]
- mla r0, r8, r2, r10
- str r0, [sp, #0x8]
- mul r0, r11, r8
- mvn r1, #0x0
- str r0, [sp, #0x4]
- mul r0, r8, r1
- str r0, [sp, #0x0]
-_020E18E0:
- cmp r11, #0x1
- bls _020E1908
- ldr r0, [sp, #0x4]
- sub r11, r11, #0x1
- sub r0, r0, r8
- str r0, [sp, #0x4]
- ldr r0, [sp, #0xc]
- sub r0, r0, r8
- str r0, [sp, #0xc]
- b _020E1950
-_020E1908:
- mov r2, r8
- ldr r4, [sp, #0x8]
- ldr r3, [sp, #0xc]
- cmp r8, #0x0
- beq _020E1934
-_020E191C:
- ldrsb r0, [r4, #0x0]
- ldrsb r1, [r3, #0x0]
- subs r2, r2, #0x1
- strb r0, [r3], #0x1
- strb r1, [r4], #0x1
- bne _020E191C
-_020E1934:
- sub r9, r9, #0x1
- cmp r9, #0x1
- addeq sp, sp, #0x10
- ldmeqia sp!, {r3-r11,pc}
- ldr r0, [sp, #0x8]
- sub r0, r0, r8
- str r0, [sp, #0x8]
-_020E1950:
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x0]
- mov r4, r11
- add r0, r1, r0
- cmp r9, r11, lsl #0x1
- add r5, r10, r0
- blo _020E18E0
-_020E196C:
- mov r4, r4, lsl #0x1
- sub r0, r4, #0x1
- mov r6, r5
- mla r5, r8, r0, r10
- cmp r9, r4
- bls _020E199C
- mov r0, r5
- add r1, r5, r8
- blx r7
- cmp r0, #0x0
- addlt r4, r4, #0x1
- addlt r5, r5, r8
-_020E199C:
- mov r0, r6
- mov r1, r5
- blx r7
- cmp r0, #0x0
- bge _020E18E0
- mov r2, r8
- mov r3, r5
- cmp r8, #0x0
- beq _020E19D8
-_020E19C0:
- ldrsb r1, [r6, #0x0]
- ldrsb r0, [r3, #0x0]
- subs r2, r2, #0x1
- strb r0, [r6], #0x1
- strb r1, [r3], #0x1
- bne _020E19C0
-_020E19D8:
- cmp r9, r4, lsl #0x1
- bhs _020E196C
- b _020E18E0
- add sp, sp, #0x10
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start rand
-rand: ; 0x020E19EC
- ldr r2, _020E1A14 ; =UNK_02106DE0
- ldr r0, _020E1A18 ; =0x41C64E6D
- ldr r3, [r2, #0x0]
- ldr r1, _020E1A1C ; =0x00007FFF
- mul r0, r3, r0
- add r0, r0, #0x39
- add r0, r0, #0x3000
- str r0, [r2, #0x0]
- and r0, r1, r0, lsr #0x10
- bx lr
- .balign 4
-_020E1A14: .word UNK_02106DE0
-_020E1A18: .word 0x41C64E6D
-_020E1A1C: .word 0x00007FFF
-
- arm_func_start srand
-srand: ; 0x020E1A20
- ldr r1, _020E1A2C ; =UNK_02106DE0
- str r0, [r1, #0x0]
- bx lr
- .balign 4
-_020E1A2C: .word UNK_02106DE0
-
- arm_func_start parse_format_scanf
-parse_format_scanf: ; 0x020E1A30
- stmdb sp!, {r3-r7,lr}
- sub sp, sp, #0x28
- ldr r6, _020E1F20 ; =UNK_0210440C
- add r5, sp, #0x0
- mov r7, r0
- mov lr, r1
- mov r4, r5
- ldmia r6!, {r0-r3}
- stmia r5!, {r0-r3}
- ldmia r6!, {r0-r3}
- stmia r5!, {r0-r3}
- ldmia r6, {r0-r1}
- stmia r5, {r0-r1}
- ldrsb r0, [r7, #0x1]
- add r12, r7, #0x1
- cmp r0, #0x25
- bne _020E1A9C
- strb r0, [sp, #0x3]
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4, {r0-r1}
- stmia lr, {r0-r1}
- add sp, sp, #0x28
- add r0, r12, #0x1
- ldmia sp!, {r3-r7,pc}
-_020E1A9C:
- cmp r0, #0x2a
- moveq r0, #0x1
- streqb r0, [sp, #0x0]
- ldreqsb r0, [r12, #0x1]!
- cmp r0, #0x0
- blt _020E1ABC
- cmp r0, #0x80
- blt _020E1AC4
-_020E1ABC:
- mov r1, #0x0
- b _020E1AD4
-_020E1AC4:
- ldr r1, _020E1F24 ; =UNK_0210430C
- mov r2, r0, lsl #0x1
- ldrh r1, [r1, r2]
- and r1, r1, #0x8
-_020E1AD4:
- cmp r1, #0x0
- beq _020E1B74
- mov r1, #0x0
- ldr r3, _020E1F24 ; =UNK_0210430C
- str r1, [sp, #0x4]
- mov r4, r1
- mov r1, #0xa
-_020E1AF0:
- ldr r2, [sp, #0x4]
- sub r0, r0, #0x30
- mla r0, r2, r1, r0
- str r0, [sp, #0x4]
- ldrsb r0, [r12, #0x1]!
- cmp r0, #0x0
- blt _020E1B14
- cmp r0, #0x80
- blt _020E1B1C
-_020E1B14:
- mov r2, r4
- b _020E1B28
-_020E1B1C:
- mov r2, r0, lsl #0x1
- ldrh r2, [r3, r2]
- and r2, r2, #0x8
-_020E1B28:
- cmp r2, #0x0
- bne _020E1AF0
- ldr r1, [sp, #0x4]
- cmp r1, #0x0
- bne _020E1B6C
- mov r0, #0xff
- add r4, sp, #0x0
- strb r0, [sp, #0x3]
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4, {r0-r1}
- stmia lr, {r0-r1}
- add sp, sp, #0x28
- add r0, r12, #0x1
- ldmia sp!, {r3-r7,pc}
-_020E1B6C:
- mov r1, #0x1
- strb r1, [sp, #0x1]
-_020E1B74:
- cmp r0, #0x6c
- mov r1, #0x1
- bgt _020E1BAC
- cmp r0, #0x68
- blt _020E1BA0
- beq _020E1BC8
- cmp r0, #0x6a
- beq _020E1C14
- cmp r0, #0x6c
- beq _020E1BE4
- b _020E1C38
-_020E1BA0:
- cmp r0, #0x4c
- beq _020E1C08
- b _020E1C38
-_020E1BAC:
- cmp r0, #0x74
- bgt _020E1BBC
- beq _020E1C2C
- b _020E1C38
-_020E1BBC:
- cmp r0, #0x7a
- beq _020E1C20
- b _020E1C38
-_020E1BC8:
- mov r2, #0x2
- strb r2, [sp, #0x2]
- ldrsb r2, [r12, #0x1]
- cmp r2, #0x68
- streqb r1, [sp, #0x2]
- ldreqsb r0, [r12, #0x1]!
- b _020E1C3C
-_020E1BE4:
- mov r2, #0x3
- strb r2, [sp, #0x2]
- ldrsb r2, [r12, #0x1]
- cmp r2, #0x6c
- bne _020E1C3C
- mov r0, #0x7
- strb r0, [sp, #0x2]
- ldrsb r0, [r12, #0x1]!
- b _020E1C3C
-_020E1C08:
- mov r2, #0x9
- strb r2, [sp, #0x2]
- b _020E1C3C
-_020E1C14:
- mov r2, #0x4
- strb r2, [sp, #0x2]
- b _020E1C3C
-_020E1C20:
- mov r2, #0x5
- strb r2, [sp, #0x2]
- b _020E1C3C
-_020E1C2C:
- mov r2, #0x6
- strb r2, [sp, #0x2]
- b _020E1C3C
-_020E1C38:
- mov r1, #0x0
-_020E1C3C:
- cmp r1, #0x0
- ldrnesb r0, [r12, #0x1]!
- strb r0, [sp, #0x3]
- cmp r0, #0x5b
- bgt _020E1C90
- bge _020E1DE0
- cmp r0, #0x47
- bgt _020E1C84
- subs r1, r0, #0x41
- addpl pc, pc, r1, lsl #0x2
- b _020E1EF0
- b _020E1D1C
- b _020E1EF0
- b _020E1EF0
- b _020E1EF0
- b _020E1D1C
- b _020E1D1C
- b _020E1D1C
-_020E1C84:
- cmp r0, #0x58
- beq _020E1D08
- b _020E1EF0
-_020E1C90:
- cmp r0, #0x61
- bgt _020E1CA0
- beq _020E1D1C
- b _020E1EF0
-_020E1CA0:
- sub r0, r0, #0x63
- cmp r0, #0x15
- addls pc, pc, r0, lsl #0x2
- b _020E1EF0
-_020E1CB0:
- b _020E1D6C
-_020E1CB4:
- b _020E1D08
-_020E1CB8:
- b _020E1D1C
-_020E1CBC:
- b _020E1D1C
-_020E1CC0:
- b _020E1D1C
-_020E1CC4:
- b _020E1EF0
-_020E1CC8:
- b _020E1D08
-_020E1CCC:
- b _020E1EF0
-_020E1CD0:
- b _020E1EF0
-_020E1CD4:
- b _020E1EF0
-_020E1CD8:
- b _020E1EF0
-_020E1CDC:
- b _020E1EF8
-_020E1CE0:
- b _020E1D08
-_020E1CE4:
- b _020E1D58
-_020E1CE8:
- b _020E1EF0
-_020E1CEC:
- b _020E1EF0
-_020E1CF0:
- b _020E1D90
-_020E1CF4:
- b _020E1EF0
-_020E1CF8:
- b _020E1D08
-_020E1CFC:
- b _020E1EF0
-_020E1D00:
- b _020E1EF0
-_020E1D04:
- b _020E1D08
-_020E1D08:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x9
- moveq r0, #0xff
- streqb r0, [sp, #0x3]
- b _020E1EF8
-_020E1D1C:
- ldrb r1, [sp, #0x2]
- cmp r1, #0x1
- cmpne r1, #0x2
- beq _020E1D3C
- add r0, r1, #0xfc
- and r0, r0, #0xff
- cmp r0, #0x3
- bhi _020E1D48
-_020E1D3C:
- mov r0, #0xff
- strb r0, [sp, #0x3]
- b _020E1EF8
-_020E1D48:
- cmp r1, #0x3
- moveq r0, #0x8
- streqb r0, [sp, #0x2]
- b _020E1EF8
-_020E1D58:
- mov r1, #0x3
- mov r0, #0x78
- strb r1, [sp, #0x2]
- strb r0, [sp, #0x3]
- b _020E1EF8
-_020E1D6C:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x3
- moveq r0, #0xa
- streqb r0, [sp, #0x2]
- beq _020E1EF8
- cmp r0, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x3]
- b _020E1EF8
-_020E1D90:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x3
- moveq r0, #0xa
- streqb r0, [sp, #0x2]
- beq _020E1DB0
- cmp r0, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x3]
-_020E1DB0:
- add r2, sp, #0x8
- mov r1, #0x20
- mov r0, #0xff
-_020E1DBC:
- sub r1, r1, #0x1
- cmp r1, #0x0
- strb r0, [r2], #0x1
- bgt _020E1DBC
- mov r1, #0xc1
- mov r0, #0xfe
- strb r1, [sp, #0x9]
- strb r0, [sp, #0xc]
- b _020E1EF8
-_020E1DE0:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x3
- moveq r0, #0xa
- streqb r0, [sp, #0x2]
- beq _020E1E00
- cmp r0, #0x0
- movne r0, #0xff
- strneb r0, [sp, #0x3]
-_020E1E00:
- ldrsb r2, [r12, #0x1]!
- mov r1, #0x0
- cmp r2, #0x5e
- ldreqsb r2, [r12, #0x1]!
- moveq r1, #0x1
- cmp r2, #0x5d
- bne _020E1EA8
- ldrb r0, [sp, #0x13]
- orr r0, r0, #0x20
- strb r0, [sp, #0x13]
- ldrsb r2, [r12, #0x1]!
- b _020E1EA8
-_020E1E30:
- add r0, sp, #0x0
- and r3, r2, #0xff
- add r6, r0, r3, asr #0x3
- ldrb r5, [r6, #0x8]
- and r3, r2, #0x7
- mov r4, #0x1
- orr r3, r5, r4, lsl r3
- strb r3, [r6, #0x8]
- ldrsb r3, [r12, #0x1]
- cmp r3, #0x2d
- bne _020E1EA4
- ldrsb r7, [r12, #0x2]
- cmp r7, #0x0
- cmpne r7, #0x5d
- beq _020E1EA4
- add r2, r2, #0x1
- cmp r2, r7
- bgt _020E1E9C
-_020E1E78:
- and r3, r2, #0xff
- add r6, r0, r3, asr #0x3
- ldrb r5, [r6, #0x8]
- and r3, r2, #0x7
- add r2, r2, #0x1
- orr r3, r5, r4, lsl r3
- strb r3, [r6, #0x8]
- cmp r2, r7
- ble _020E1E78
-_020E1E9C:
- ldrsb r2, [r12, #0x3]!
- b _020E1EA8
-_020E1EA4:
- ldrsb r2, [r12, #0x1]!
-_020E1EA8:
- cmp r2, #0x0
- cmpne r2, #0x5d
- bne _020E1E30
- cmp r2, #0x0
- moveq r0, #0xff
- streqb r0, [sp, #0x3]
- beq _020E1EF8
- cmp r1, #0x0
- beq _020E1EF8
- add r2, sp, #0x8
- mov r1, #0x20
-_020E1ED4:
- ldrb r0, [r2, #0x0]
- sub r1, r1, #0x1
- cmp r1, #0x0
- mvn r0, r0
- strb r0, [r2], #0x1
- bgt _020E1ED4
- b _020E1EF8
-_020E1EF0:
- mov r0, #0xff
- strb r0, [sp, #0x3]
-_020E1EF8:
- add r4, sp, #0x0
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4!, {r0-r3}
- stmia lr!, {r0-r3}
- ldmia r4, {r0-r1}
- stmia lr, {r0-r1}
- add r0, r12, #0x1
- add sp, sp, #0x28
- ldmia sp!, {r3-r7,pc}
- .balign 4
-_020E1F20: .word UNK_0210440C
-_020E1F24: .word UNK_0210430C
-
- arm_func_start __sformatter
-__sformatter: ; 0x020E1F28
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x88
- ldrsb r5, [r2, #0x0]
- str r2, [sp, #0xc]
- mov r2, #0x0
- mov r9, r0
- mov r0, r2
- str r2, [sp, #0x20]
- mov r8, r1
- str r3, [sp, #0x10]
- str r0, [sp, #0x24]
- cmp r5, #0x0
- ldr r10, [sp, #0xb0]
- str r0, [sp, #0x30]
- mov r4, r2
- str r0, [sp, #0x44]
- str r0, [sp, #0x40]
- beq _020E2C3C
-_020E1F70:
- cmp r5, #0x0
- mov r0, #0x1
- blt _020E1F84
- cmp r5, #0x80
- movlt r0, #0x0
-_020E1F84:
- cmp r0, #0x0
- movne r0, #0x0
- bne _020E1FA0
- mov r1, r5, lsl #0x1
- ldr r0, _020E2C74 ; =UNK_0210430C
- ldrh r0, [r0, r1]
- and r0, r0, #0x100
-_020E1FA0:
- cmp r0, #0x0
- beq _020E2060
- mov r2, #0x0
- ldr r1, _020E2C74 ; =UNK_0210430C
- mov r12, r2
- mov r3, #0x1
-_020E1FB8:
- ldr r0, [sp, #0xc]
- ldrsb r5, [r0, #0x1]!
- str r0, [sp, #0xc]
- mov r0, r3
- cmp r5, #0x0
- blt _020E1FD8
- cmp r5, #0x80
- movlt r0, r2
-_020E1FD8:
- cmp r0, #0x0
- movne r0, r12
- moveq r0, r5, lsl #0x1
- ldreqh r0, [r1, r0]
- andeq r0, r0, #0x100
- cmp r0, #0x0
- bne _020E1FB8
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E2C2C
- ldr r5, _020E2C74 ; =UNK_0210430C
- b _020E200C
-_020E2008:
- add r4, r4, #0x1
-_020E200C:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- strb r0, [sp, #0x50]
- ldrsb r1, [sp, #0x50]
- cmp r1, #0x0
- blt _020E2034
- cmp r1, #0x80
- blt _020E203C
-_020E2034:
- mov r0, #0x0
- b _020E2048
-_020E203C:
- mov r0, r1, lsl #0x1
- ldrh r0, [r5, r0]
- and r0, r0, #0x100
-_020E2048:
- cmp r0, #0x0
- bne _020E2008
- mov r0, r8
- mov r2, #0x1
- blx r9
- b _020E2C2C
-_020E2060:
- cmp r5, #0x25
- beq _020E20D8
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E20D8
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- strb r0, [sp, #0x50]
- and r0, r5, #0xff
- ldrsb r1, [sp, #0x50]
- cmp r0, r1
- beq _020E20C4
- mov r0, r8
- mov r2, #0x1
- blx r9
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- ldr r0, [sp, #0xc]
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- b _020E2C2C
-_020E20C4:
- ldr r0, [sp, #0xc]
- add r4, r4, #0x1
- add r0, r0, #0x1
- str r0, [sp, #0xc]
- b _020E2C2C
-_020E20D8:
- ldr r0, [sp, #0xc]
- add r1, sp, #0x60
- bl parse_format_scanf
- str r0, [sp, #0xc]
- ldrb r0, [sp, #0x60]
- cmp r0, #0x0
- bne _020E2114
- ldrb r0, [sp, #0x63]
- cmp r0, #0x25
- beq _020E2114
- ldr r0, [sp, #0x10]
- add r0, r0, #0x4
- str r0, [sp, #0x10]
- ldr r5, [r0, #-0x4]
- b _020E2118
-_020E2114:
- mov r5, #0x0
-_020E2118:
- ldrb r0, [sp, #0x63]
- cmp r0, #0x6e
- beq _020E2158
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E2158
- mov r0, r8
- mov r1, #0x0
- mov r2, #0x2
- blx r9
- cmp r0, #0x0
- beq _020E2158
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
-_020E2158:
- ldrb r1, [sp, #0x63]
- cmp r1, #0x5b
- bgt _020E21B0
- bge _020E2984
- cmp r1, #0x47
- bgt _020E21A4
- subs r0, r1, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020E2198
- b _020E2600
- b _020E2C3C
- b _020E2C3C
- b _020E2C3C
- b _020E2600
- b _020E2600
- b _020E2600
-_020E2198:
- cmp r1, #0x25
- beq _020E287C
- b _020E2C3C
-_020E21A4:
- cmp r1, #0x58
- beq _020E243C
- b _020E2C3C
-_020E21B0:
- cmp r1, #0x78
- bgt _020E2228
- subs r0, r1, #0x63
- addpl pc, pc, r0, lsl #0x2
- b _020E221C
- b _020E26C4
- b _020E2230
- b _020E2600
- b _020E2600
- b _020E2600
- b _020E2C3C
- b _020E2238
- b _020E2C3C
- b _020E2C3C
- b _020E2C3C
- b _020E2C3C
- b _020E2BC8
- b _020E242C
- b _020E2C3C
- b _020E2C3C
- b _020E2C3C
- b _020E2908
- b _020E2C3C
- b _020E2434
- b _020E2C3C
- b _020E2C3C
- b _020E243C
-_020E221C:
- cmp r1, #0x61
- beq _020E2600
- b _020E2C3C
-_020E2228:
- cmp r1, #0xff
- b _020E2C3C
-_020E2230:
- mov r0, #0xa
- b _020E223C
-_020E2238:
- mov r0, #0x0
-_020E223C:
- ldr r1, [sp, #0x30]
- cmp r1, #0x0
- beq _020E225C
- mov r0, #0x0
- str r0, [sp, #0x1c]
- str r0, [sp, #0x20]
- str r0, [sp, #0x24]
- b _020E2364
-_020E225C:
- ldrb r1, [sp, #0x62]
- add r2, sp, #0x5c
- cmp r1, #0x7
- cmpne r1, #0x4
- add r1, sp, #0x58
- bne _020E22A0
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- add r1, sp, #0x54
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x64]
- mov r2, r9
- mov r3, r8
- bl __strtoull
- str r0, [sp, #0x34]
- str r1, [sp, #0x18]
- b _020E22C4
-_020E22A0:
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- add r1, sp, #0x54
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x64]
- mov r2, r9
- mov r3, r8
- bl __strtoul
- str r0, [sp, #0x3c]
-_020E22C4:
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- bne _020E22F4
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- mov r0, #0x0
- str r0, [sp, #0x1c]
- str r0, [sp, #0x20]
- str r0, [sp, #0x24]
- b _020E2364
-_020E22F4:
- add r4, r4, r0
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- cmpne r0, #0x4
- bne _020E2344
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- beq _020E2330
- ldr r0, [sp, #0x34]
- rsbs r0, r0, #0x0
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x18]
- rsc r0, r0, #0x0
- str r0, [sp, #0x24]
- b _020E2364
-_020E2330:
- ldr r0, [sp, #0x34]
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x18]
- str r0, [sp, #0x24]
- b _020E2364
-_020E2344:
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- ldreq r0, [sp, #0x3c]
- streq r0, [sp, #0x1c]
- beq _020E2364
- ldr r0, [sp, #0x3c]
- rsb r0, r0, #0x0
- str r0, [sp, #0x1c]
-_020E2364:
- cmp r5, #0x0
- beq _020E241C
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- addls pc, pc, r0, lsl #0x2
- b _020E2408
-_020E237C:
- b _020E239C
-_020E2380:
- b _020E23A8
-_020E2384:
- b _020E23B4
-_020E2388:
- b _020E23C0
-_020E238C:
- b _020E23CC
-_020E2390:
- b _020E23E0
-_020E2394:
- b _020E23EC
-_020E2398:
- b _020E23F8
-_020E239C:
- ldr r0, [sp, #0x1c]
- str r0, [r5, #0x0]
- b _020E2408
-_020E23A8:
- ldr r0, [sp, #0x1c]
- strb r0, [r5, #0x0]
- b _020E2408
-_020E23B4:
- ldr r0, [sp, #0x1c]
- strh r0, [r5, #0x0]
- b _020E2408
-_020E23C0:
- ldr r0, [sp, #0x1c]
- str r0, [r5, #0x0]
- b _020E2408
-_020E23CC:
- ldr r0, [sp, #0x20]
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x24]
- str r0, [r5, #0x4]
- b _020E2408
-_020E23E0:
- ldr r0, [sp, #0x1c]
- str r0, [r5, #0x0]
- b _020E2408
-_020E23EC:
- ldr r0, [sp, #0x1c]
- str r0, [r5, #0x0]
- b _020E2408
-_020E23F8:
- ldr r0, [sp, #0x20]
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x24]
- str r0, [r5, #0x4]
-_020E2408:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- ldreq r0, [sp, #0x44]
- addeq r0, r0, #0x1
- streq r0, [sp, #0x44]
-_020E241C:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E242C:
- mov r0, #0x8
- b _020E2440
-_020E2434:
- mov r0, #0xa
- b _020E2440
-_020E243C:
- mov r0, #0x10
-_020E2440:
- ldr r1, [sp, #0x30]
- cmp r1, #0x0
- beq _020E2460
- mov r0, #0x0
- str r0, [sp, #0x3c]
- str r0, [sp, #0x34]
- str r0, [sp, #0x18]
- b _020E2538
-_020E2460:
- ldrb r1, [sp, #0x62]
- add r2, sp, #0x5c
- cmp r1, #0x7
- cmpne r1, #0x4
- add r1, sp, #0x58
- bne _020E24A4
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- add r1, sp, #0x54
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x64]
- mov r2, r9
- mov r3, r8
- bl __strtoull
- str r0, [sp, #0x34]
- str r1, [sp, #0x18]
- b _020E24C8
-_020E24A4:
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- add r1, sp, #0x54
- str r1, [sp, #0x8]
- ldr r1, [sp, #0x64]
- mov r2, r9
- mov r3, r8
- bl __strtoul
- str r0, [sp, #0x3c]
-_020E24C8:
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- bne _020E24F8
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- mov r0, #0x0
- str r0, [sp, #0x3c]
- str r0, [sp, #0x34]
- str r0, [sp, #0x18]
- b _020E2538
-_020E24F8:
- add r4, r4, r0
- ldr r0, [sp, #0x58]
- cmp r0, #0x0
- beq _020E2538
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- ldrne r0, [sp, #0x3c]
- rsbne r0, r0, #0x0
- strne r0, [sp, #0x3c]
- bne _020E2538
- ldr r0, [sp, #0x34]
- rsbs r0, r0, #0x0
- str r0, [sp, #0x34]
- ldr r0, [sp, #0x18]
- rsc r0, r0, #0x0
- str r0, [sp, #0x18]
-_020E2538:
- cmp r5, #0x0
- beq _020E25F0
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- addls pc, pc, r0, lsl #0x2
- b _020E25DC
-_020E2550:
- b _020E2570
-_020E2554:
- b _020E257C
-_020E2558:
- b _020E2588
-_020E255C:
- b _020E2594
-_020E2560:
- b _020E25A0
-_020E2564:
- b _020E25B4
-_020E2568:
- b _020E25C0
-_020E256C:
- b _020E25CC
-_020E2570:
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x0]
- b _020E25DC
-_020E257C:
- ldr r0, [sp, #0x3c]
- strb r0, [r5, #0x0]
- b _020E25DC
-_020E2588:
- ldr r0, [sp, #0x3c]
- strh r0, [r5, #0x0]
- b _020E25DC
-_020E2594:
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x0]
- b _020E25DC
-_020E25A0:
- ldr r0, [sp, #0x34]
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x18]
- str r0, [r5, #0x4]
- b _020E25DC
-_020E25B4:
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x0]
- b _020E25DC
-_020E25C0:
- ldr r0, [sp, #0x3c]
- str r0, [r5, #0x0]
- b _020E25DC
-_020E25CC:
- ldr r0, [sp, #0x34]
- str r0, [r5, #0x0]
- ldr r0, [sp, #0x18]
- str r0, [r5, #0x4]
-_020E25DC:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- ldreq r0, [sp, #0x44]
- addeq r0, r0, #0x1
- streq r0, [sp, #0x44]
-_020E25F0:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E2600:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- beq _020E261C
- ldr r0, _020E2C78 ; =UNK_02106B78
- ldr r0, [r0, #0x0]
- bl _f2d
- b _020E2668
-_020E261C:
- add r0, sp, #0x54
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x64]
- mov r1, r9
- mov r2, r8
- add r3, sp, #0x5c
- bl __strtold
- ldr r2, [sp, #0x5c]
- cmp r2, #0x0
- bne _020E2664
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- ldr r0, _020E2C78 ; =UNK_02106B78
- ldr r0, [r0, #0x0]
- bl _f2d
- b _020E2668
-_020E2664:
- add r4, r4, r2
-_020E2668:
- cmp r5, #0x0
- beq _020E26B4
- ldrb r2, [sp, #0x62]
- cmp r2, #0x0
- beq _020E2690
- cmp r2, #0x8
- beq _020E269C
- cmp r2, #0x9
- stmeqia r5, {r0-r1}
- b _020E26A0
-_020E2690:
- bl _d2f
- str r0, [r5, #0x0]
- b _020E26A0
-_020E269C:
- stmia r5, {r0-r1}
-_020E26A0:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- ldreq r0, [sp, #0x44]
- addeq r0, r0, #0x1
- streq r0, [sp, #0x44]
-_020E26B4:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E26C4:
- ldrb r0, [sp, #0x61]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0x64]
- cmp r5, #0x0
- beq _020E280C
- cmp r10, #0x0
- beq _020E26F8
- ldr r0, [sp, #0x10]
- mov r7, #0x1
- add r0, r0, #0x4
- ldr r11, [r0, #-0x4]
- str r0, [sp, #0x10]
-_020E26F8:
- ldr r0, [sp, #0x30]
- mov r1, #0x0
- cmp r0, #0x0
- str r1, [sp, #0x5c]
- beq _020E2718
- cmp r11, #0x0
- strneb r1, [r5, #0x0]
- b _020E2C2C
-_020E2718:
- mvn r0, #0x0
- str r5, [sp, #0x2c]
- str r0, [sp, #0x48]
- b _020E2760
-_020E2728:
- ldrb r0, [sp, #0x62]
- strb r6, [sp, #0x50]
- cmp r0, #0xa
- ldrnesb r0, [sp, #0x50]
- strneb r0, [r5], #0x1
- bne _020E2754
- mov r0, r5
- add r1, sp, #0x50
- mov r2, #0x1
- bl mbtowc
- add r5, r5, #0x1
-_020E2754:
- ldr r0, [sp, #0x5c]
- add r1, r0, #0x1
- str r1, [sp, #0x5c]
-_020E2760:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0x64]
- beq _020E27B0
- cmp r10, #0x0
- beq _020E2790
- cmp r11, r1
- movhi r7, #0x1
- movls r7, #0x0
- cmp r7, #0x0
- beq _020E27B0
-_020E2790:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r6, r0
- ldr r0, [sp, #0x48]
- cmp r6, r0
- bne _020E2728
-_020E27B0:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- beq _020E27D0
- cmp r10, #0x0
- beq _020E27F8
- cmp r7, #0x0
- bne _020E27F8
-_020E27D0:
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- cmp r11, #0x0
- str r0, [sp, #0x30]
- beq _020E2C2C
- ldr r0, [sp, #0x2c]
- mov r1, #0x0
- strb r1, [r0, #0x0]
- b _020E2C2C
-_020E27F8:
- add r4, r4, r0
- ldr r0, [sp, #0x44]
- add r0, r0, #0x1
- str r0, [sp, #0x44]
- b _020E286C
-_020E280C:
- mov r0, #0x0
- str r0, [sp, #0x5c]
- mvn r5, #0x0
- b _020E282C
-_020E281C:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- add r0, r0, #0x1
- str r0, [sp, #0x5c]
-_020E282C:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0x64]
- beq _020E285C
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r6, r0
- cmp r6, r5
- bne _020E281C
-_020E285C:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- beq _020E2C3C
-_020E286C:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E287C:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E2C2C
- ldr r5, _020E2C74 ; =UNK_0210430C
- b _020E2894
-_020E2890:
- add r4, r4, #0x1
-_020E2894:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- strb r0, [sp, #0x50]
- ldrsb r1, [sp, #0x50]
- cmp r1, #0x0
- blt _020E28BC
- cmp r1, #0x80
- blt _020E28C4
-_020E28BC:
- mov r0, #0x0
- b _020E28D0
-_020E28C4:
- mov r0, r1, lsl #0x1
- ldrh r0, [r5, r0]
- and r0, r0, #0x100
-_020E28D0:
- cmp r0, #0x0
- bne _020E2890
- cmp r1, #0x25
- beq _020E2900
- mov r0, r8
- mov r2, #0x1
- blx r9
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- str r0, [sp, #0x30]
- b _020E2C2C
-_020E2900:
- add r4, r4, #0x1
- b _020E2C2C
-_020E2908:
- ldr r0, [sp, #0x30]
- cmp r0, #0x0
- bne _020E2984
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- strb r0, [sp, #0x50]
- b _020E2944
-_020E292C:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- strb r0, [sp, #0x50]
-_020E2944:
- ldrsb r1, [sp, #0x50]
- cmp r1, #0x0
- blt _020E2958
- cmp r1, #0x80
- blt _020E2960
-_020E2958:
- mov r0, #0x0
- b _020E2970
-_020E2960:
- ldr r0, _020E2C74 ; =UNK_0210430C
- mov r2, r1, lsl #0x1
- ldrh r0, [r0, r2]
- and r0, r0, #0x100
-_020E2970:
- cmp r0, #0x0
- bne _020E292C
- mov r0, r8
- mov r2, #0x1
- blx r9
-_020E2984:
- cmp r5, #0x0
- beq _020E2B00
- cmp r10, #0x0
- beq _020E29AC
- ldr r0, [sp, #0x10]
- mov r7, #0x1
- add r0, r0, #0x4
- str r0, [sp, #0x10]
- ldr r0, [r0, #-0x4]
- sub r11, r0, #0x1
-_020E29AC:
- ldr r0, [sp, #0x30]
- mov r1, #0x0
- cmp r0, #0x0
- str r1, [sp, #0x5c]
- beq _020E29CC
- cmp r11, #0x0
- strneb r1, [r5, #0x0]
- b _020E2C2C
-_020E29CC:
- mvn r0, #0x0
- str r5, [sp, #0x28]
- str r0, [sp, #0x4c]
- b _020E2A30
-_020E29DC:
- strb r6, [sp, #0x50]
- ldrsb r1, [sp, #0x50]
- add r2, sp, #0x60
- and r3, r1, #0xff
- add r2, r2, r3, asr #0x3
- ldrb r3, [r2, #0x8]
- and r0, r1, #0x7
- mov r2, #0x1
- tst r3, r2, lsl r0
- beq _020E2A80
- ldrb r0, [sp, #0x62]
- cmp r0, #0xa
- strneb r1, [r5], #0x1
- bne _020E2A24
- mov r0, r5
- add r1, sp, #0x50
- bl mbtowc
- add r5, r5, #0x2
-_020E2A24:
- ldr r0, [sp, #0x5c]
- add r1, r0, #0x1
- str r1, [sp, #0x5c]
-_020E2A30:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0x64]
- beq _020E2A80
- cmp r10, #0x0
- beq _020E2A60
- cmp r11, r1
- movcs r7, #0x1
- movcc r7, #0x0
- cmp r7, #0x0
- beq _020E2A80
-_020E2A60:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r6, r0
- ldr r0, [sp, #0x4c]
- cmp r6, r0
- bne _020E29DC
-_020E2A80:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- beq _020E2AA0
- cmp r10, #0x0
- beq _020E2AD8
- cmp r7, #0x0
- bne _020E2AD8
-_020E2AA0:
- mov r0, r8
- ldrsb r1, [sp, #0x50]
- mov r2, #0x1
- blx r9
- cmp r10, #0x0
- beq _020E2C3C
- mov r0, #0x1
- cmp r11, #0x0
- str r0, [sp, #0x30]
- beq _020E2C2C
- ldr r0, [sp, #0x28]
- mov r1, #0x0
- strb r1, [r0, #0x0]
- b _020E2C2C
-_020E2AD8:
- add r4, r4, r0
- ldrb r0, [sp, #0x62]
- cmp r0, #0xa
- mov r0, #0x0
- streqh r0, [r5, #0x0]
- strneb r0, [r5, #0x0]
- ldr r0, [sp, #0x44]
- add r0, r0, #0x1
- str r0, [sp, #0x44]
- b _020E2B9C
-_020E2B00:
- mov r0, #0x0
- str r0, [sp, #0x5c]
- mvn r5, #0x0
- b _020E2B44
-_020E2B10:
- strb r6, [sp, #0x50]
- ldrsb r1, [sp, #0x50]
- and r0, r1, #0x7
- and r2, r1, #0xff
- add r1, sp, #0x60
- add r1, r1, r2, asr #0x3
- ldrb r2, [r1, #0x8]
- mov r1, #0x1
- tst r2, r1, lsl r0
- beq _020E2B74
- ldr r0, [sp, #0x5c]
- add r0, r0, #0x1
- str r0, [sp, #0x5c]
-_020E2B44:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- sub r0, r0, #0x1
- str r0, [sp, #0x64]
- beq _020E2B74
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r6, r0
- cmp r6, r5
- bne _020E2B10
-_020E2B74:
- strb r6, [sp, #0x50]
- ldr r0, [sp, #0x5c]
- cmp r0, #0x0
- bne _020E2B98
- mov r0, r8
- ldrsb r1, [sp, #0x50]
- mov r2, #0x1
- blx r9
- b _020E2C2C
-_020E2B98:
- add r4, r4, r0
-_020E2B9C:
- ldr r0, [sp, #0x64]
- cmp r0, #0x0
- blt _020E2BB8
- mov r0, r8
- ldrsb r1, [sp, #0x50]
- mov r2, #0x1
- blx r9
-_020E2BB8:
- ldr r0, [sp, #0x40]
- add r0, r0, #0x1
- str r0, [sp, #0x40]
- b _020E2C2C
-_020E2BC8:
- cmp r5, #0x0
- beq _020E2C2C
- ldrb r0, [sp, #0x62]
- cmp r0, #0x7
- addls pc, pc, r0, lsl #0x2
- b _020E2C2C
-_020E2BE0:
- b _020E2C00
-_020E2BE4:
- b _020E2C18
-_020E2BE8:
- b _020E2C08
-_020E2BEC:
- b _020E2C10
-_020E2BF0:
- b _020E2C2C
-_020E2BF4:
- b _020E2C2C
-_020E2BF8:
- b _020E2C2C
-_020E2BFC:
- b _020E2C20
-_020E2C00:
- str r4, [r5, #0x0]
- b _020E2C2C
-_020E2C08:
- strh r4, [r5, #0x0]
- b _020E2C2C
-_020E2C10:
- str r4, [r5, #0x0]
- b _020E2C2C
-_020E2C18:
- strb r4, [r5, #0x0]
- b _020E2C2C
-_020E2C20:
- str r4, [r5, #0x0]
- mov r0, r4, asr #0x1f
- str r0, [r5, #0x4]
-_020E2C2C:
- ldr r0, [sp, #0xc]
- ldrsb r5, [r0, #0x0]
- cmp r5, #0x0
- bne _020E1F70
-_020E2C3C:
- mov r0, r8
- mov r1, #0x0
- mov r2, #0x2
- blx r9
- cmp r0, #0x0
- beq _020E2C68
- ldr r0, [sp, #0x40]
- cmp r0, #0x0
- addeq sp, sp, #0x88
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,pc}
-_020E2C68:
- ldr r0, [sp, #0x44]
- add sp, sp, #0x88
- ldmia sp!, {r3-r11,pc}
- .balign 4
-_020E2C74: .word UNK_0210430C
-_020E2C78: .word UNK_02106B78
-
- arm_func_start __StringRead
-__StringRead: ; 0x020E2C7C
- cmp r2, #0x0
- beq _020E2C98
- cmp r2, #0x1
- beq _020E2CC8
- cmp r2, #0x2
- beq _020E2CF0
- b _020E2CF8
-_020E2C98:
- ldr r1, [r0, #0x0]
- ldrsb r2, [r1, #0x0]
- cmp r2, #0x0
- bne _020E2CB8
- mov r1, #0x1
- str r1, [r0, #0x4]
- sub r0, r1, #0x2
- bx lr
-_020E2CB8:
- add r1, r1, #0x1
- str r1, [r0, #0x0]
- and r0, r2, #0xff
- bx lr
-_020E2CC8:
- ldr r2, [r0, #0x4]
- cmp r2, #0x0
- movne r2, #0x0
- strne r2, [r0, #0x4]
- bne _020E2CE8
- ldr r2, [r0, #0x0]
- sub r2, r2, #0x1
- str r2, [r0, #0x0]
-_020E2CE8:
- mov r0, r1
- bx lr
-_020E2CF0:
- ldr r0, [r0, #0x4]
- bx lr
-_020E2CF8:
- mov r0, #0x0
- bx lr
-
- arm_func_start vsscanf
-vsscanf: ; 0x020E2D00
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- str r0, [sp, #0x4]
- cmp r0, #0x0
- ldrnesb r0, [r0, #0x0]
- mov lr, r1
- mov r3, r2
- cmpne r0, #0x0
- addeq sp, sp, #0xc
- mvneq r0, #0x0
- ldmeqia sp!, {pc}
- mov r12, #0x0
- str r12, [sp, #0x8]
- ldr r0, _020E2D50 ; =__StringRead
- add r1, sp, #0x4
- mov r2, lr
- str r12, [sp, #0x0]
- bl __sformatter
- add sp, sp, #0xc
- ldmia sp!, {pc}
- .balign 4
-_020E2D50: .word __StringRead
-
- arm_func_start sscanf
-sscanf: ; 0x020E2D54
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3,lr}
- add r2, sp, #0xc
- bic r2, r2, #0x3
- ldr r1, [sp, #0xc]
- add r2, r2, #0x4
- bl vsscanf
- ldmia sp!, {r3,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start raise
-raise: ; 0x020E2D7C
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- cmp r5, #0x1
- blt _020E2D94
- cmp r5, #0x7
- ble _020E2D9C
-_020E2D94:
- mvn r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E2D9C:
- ldr r0, _020E2E98 ; =UNK_021D7178
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020E2DD0
- ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x1c]
- str r2, [r0, #0x1c]
- b _020E2E28
-_020E2DD0:
- ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, #0x1c]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020E2E00
- ldr r0, _020E2EA4 ; =UNK_021D70AC
- ldr r1, [r0, #0x1c]
- add r1, r1, #0x1
- str r1, [r0, #0x1c]
- b _020E2E28
-_020E2E00:
- ldr r0, _020E2E98 ; =UNK_021D7178
- bl OS_LockMutex
- ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x1c]
- str r2, [r0, #0x1c]
-_020E2E28:
- ldr r1, _020E2EA8 ; =UNK_021D74AC
- sub r2, r5, #0x1
- ldr r4, [r1, r2, lsl #0x2]
- cmp r4, #0x1
- movne r0, #0x0
- strne r0, [r1, r2, lsl #0x2]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
- ldr r1, [r0, #0x1c]
- subs r1, r1, #0x1
- str r1, [r0, #0x1c]
- bne _020E2E5C
- ldr r0, _020E2E98 ; =UNK_021D7178
- bl OS_UnlockMutex
-_020E2E5C:
- cmp r4, #0x1
- beq _020E2E70
- cmp r4, #0x0
- cmpeq r5, #0x1
- bne _020E2E78
-_020E2E70:
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E2E78:
- cmp r4, #0x0
- bne _020E2E88
- mov r0, #0x0
- bl exit
-_020E2E88:
- mov r0, r5
- blx r4
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020E2E98: .word UNK_021D7178
-_020E2E9C: .word OSi_ThreadInfo
-_020E2EA0: .word UNK_021D7088
-_020E2EA4: .word UNK_021D70AC
-_020E2EA8: .word UNK_021D74AC
-
- arm_func_start strlen
-strlen: ; 0x020E2EAC
- mvn r2, #0x0
-_020E2EB0:
- ldrsb r1, [r0], #0x1
- add r2, r2, #0x1
- cmp r1, #0x0
- bne _020E2EB0
- mov r0, r2
- bx lr
-
- arm_func_start strcpy
-strcpy: ; 0x020E2EC8
- stmdb sp!, {r3-r5,lr}
- and r4, r1, #0x3
- and r3, r0, #0x3
- mov r2, r0
- cmp r3, r4
- bne _020E2F64
- cmp r4, #0x0
- beq _020E2F20
- ldrb r3, [r1, #0x0]
- strb r3, [r0, #0x0]
- cmp r3, #0x0
- ldmeqia sp!, {r3-r5,pc}
- rsbs r4, r4, #0x3
- beq _020E2F18
-_020E2F00:
- ldrb r3, [r1, #0x1]!
- cmp r3, #0x0
- strb r3, [r2, #0x1]!
- ldmeqia sp!, {r3-r5,pc}
- subs r4, r4, #0x1
- bne _020E2F00
-_020E2F18:
- add r2, r2, #0x1
- add r1, r1, #0x1
-_020E2F20:
- ldr r5, [r1, #0x0]
- ldr r3, _020E2F88 ; =0xFEFEFEFF
- mvn r4, r5
- add lr, r5, r3
- ldr ip, _020E2F8C ; =0x80808080
- and r4, lr, r4
- tst r4, r12
- bne _020E2F64
- sub r2, r2, #0x4
-_020E2F44:
- str r5, [r2, #0x4]!
- ldr r5, [r1, #0x4]!
- add r4, r5, r3
- mvn lr, r5
- and lr, r4, lr
- tst lr, r12
- beq _020E2F44
- add r2, r2, #0x4
-_020E2F64:
- ldrb r3, [r1, #0x0]
- strb r3, [r2, #0x0]
- cmp r3, #0x0
- ldmeqia sp!, {r3-r5,pc}
-_020E2F74:
- ldrb r3, [r1, #0x1]!
- cmp r3, #0x0
- strb r3, [r2, #0x1]!
- bne _020E2F74
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020E2F88: .word 0xFEFEFEFF
-_020E2F8C: .word 0x80808080
-
- arm_func_start strncpy
-strncpy: ; 0x020E2F90
- stmdb sp!, {r3,lr}
- mov lr, r0
- cmp r2, #0x0
- ldmeqia sp!, {r3,pc}
-_020E2FA0:
- ldrsb r3, [r1], #0x1
- mov r12, lr
- strb r3, [lr], #0x1
- ldrsb r3, [r12, #0x0]
- cmp r3, #0x0
- bne _020E2FD4
- subs r2, r2, #0x1
- ldmeqia sp!, {r3,pc}
- mov r1, #0x0
-_020E2FC4:
- strb r1, [lr], #0x1
- subs r2, r2, #0x1
- bne _020E2FC4
- ldmia sp!, {r3,pc}
-_020E2FD4:
- subs r2, r2, #0x1
- bne _020E2FA0
- ldmia sp!, {r3,pc}
-
- arm_func_start strcat
-strcat: ; 0x020E2FE0
- mov r3, r0
-_020E2FE4:
- ldrsb r2, [r3], #0x1
- cmp r2, #0x0
- bne _020E2FE4
- sub r3, r3, #0x1
-_020E2FF4:
- ldrsb r2, [r1], #0x1
- mov r12, r3
- strb r2, [r3], #0x1
- ldrsb r2, [r12, #0x0]
- cmp r2, #0x0
- bne _020E2FF4
- bx lr
-
- arm_func_start strncat
-strncat: ; 0x020E3010
- stmdb sp!, {r3,lr}
- mov r12, r0
-_020E3018:
- ldrsb r3, [r12], #0x1
- cmp r3, #0x0
- bne _020E3018
- cmp r2, #0x0
- sub r12, r12, #0x1
- beq _020E3054
-_020E3030:
- ldrsb r3, [r1], #0x1
- mov lr, r12
- strb r3, [r12], #0x1
- ldrsb r3, [lr, #0x0]
- cmp r3, #0x0
- subeq r12, r12, #0x1
- beq _020E3054
- subs r2, r2, #0x1
- bne _020E3030
-_020E3054:
- mov r1, #0x0
- strb r1, [r12, #0x0]
- ldmia sp!, {r3,pc}
-
- arm_func_start strcmp
-strcmp: ; 0x020E3060
- stmdb sp!, {r4,lr}
- ldrb r2, [r0, #0x0]
- ldrb r3, [r1, #0x0]
- subs r3, r2, r3
- movne r0, r3
- ldmneia sp!, {r4,pc}
- and r4, r0, #0x3
- and r3, r1, #0x3
- cmp r3, r4
- bne _020E313C
- cmp r4, #0x0
- beq _020E30D4
- cmp r2, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- rsbs r4, r4, #0x3
- beq _020E30CC
-_020E30A4:
- ldrb r3, [r0, #0x1]!
- ldrb r2, [r1, #0x1]!
- subs r2, r3, r2
- movne r0, r2
- ldmneia sp!, {r4,pc}
- cmp r3, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- subs r4, r4, #0x1
- bne _020E30A4
-_020E30CC:
- add r0, r0, #0x1
- add r1, r1, #0x1
-_020E30D4:
- ldr r2, [r0, #0x0]
- ldr r3, _020E316C ; =0xFEFEFEFF
- mvn r4, r2
- add lr, r2, r3
- ldr ip, _020E3170 ; =0x80808080
- and r4, lr, r4
- tst r4, r12
- ldr r4, [r1, #0x0]
- bne _020E3128
- cmp r2, r4
- bne _020E311C
-_020E3100:
- ldr r2, [r0, #0x4]!
- ldr r4, [r1, #0x4]!
- add lr, r2, r3
- tst lr, r12
- bne _020E3128
- cmp r2, r4
- beq _020E3100
-_020E311C:
- sub r0, r0, #0x1
- sub r1, r1, #0x1
- b _020E313C
-_020E3128:
- ldrb r2, [r0, #0x0]
- ldrb r3, [r1, #0x0]
- subs r3, r2, r3
- movne r0, r3
- ldmneia sp!, {r4,pc}
-_020E313C:
- cmp r2, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
-_020E3148:
- ldrb r3, [r0, #0x1]!
- ldrb r2, [r1, #0x1]!
- subs r2, r3, r2
- movne r0, r2
- ldmneia sp!, {r4,pc}
- cmp r3, #0x0
- bne _020E3148
- mov r0, #0x0
- ldmia sp!, {r4,pc}
- .balign 4
-_020E316C: .word 0xFEFEFEFF
-_020E3170: .word 0x80808080
-
- arm_func_start strncmp
-strncmp: ; 0x020E3174
- cmp r2, #0x0
- beq _020E31A0
-_020E317C:
- ldrb r12, [r1], #0x1
- ldrb r3, [r0], #0x1
- cmp r3, r12
- subne r0, r3, r12
- bxne lr
- cmp r3, #0x0
- beq _020E31A0
- subs r2, r2, #0x1
- bne _020E317C
-_020E31A0:
- mov r0, #0x0
- bx lr
-
- arm_func_start strchr
-strchr: ; 0x020E31A8
- ldrsb r2, [r0], #0x1
- mov r1, r1, lsl #0x18
- mov r1, r1, asr #0x18
- cmp r2, #0x0
- beq _020E31D4
-_020E31BC:
- cmp r2, r1
- subeq r0, r0, #0x1
- bxeq lr
- ldrsb r2, [r0], #0x1
- cmp r2, #0x0
- bne _020E31BC
-_020E31D4:
- cmp r1, #0x0
- movne r0, #0x0
- subeq r0, r0, #0x1
- bx lr
-
- arm_func_start strspn
-strspn: ; 0x020E31E4
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x20
- add r12, sp, #0x0
- mov r3, #0x8
- mov r2, #0x0
-_020E31F8:
- strb r2, [r12, #0x0]
- strb r2, [r12, #0x1]
- strb r2, [r12, #0x2]
- strb r2, [r12, #0x3]
- add r12, r12, #0x4
- subs r3, r3, #0x1
- bne _020E31F8
- ldrb r3, [r1, #0x0]
- add r4, r1, #0x1
- cmp r3, #0x0
- beq _020E3254
- add lr, sp, #0x0
- mov r2, #0x1
-_020E322C:
- and r12, r3, #0xff
- and r1, r3, #0x7
- mov r1, r2, lsl r1
- ldrb r3, [lr, r12, asr #0x3]
- and r1, r1, #0xff
- orr r1, r3, r1
- strb r1, [lr, r12, asr #0x3]
- ldrb r3, [r4], #0x1
- cmp r3, #0x0
- bne _020E322C
-_020E3254:
- ldrb r1, [r0, #0x0]
- add r4, r0, #0x1
- cmp r1, #0x0
- beq _020E3294
- add r12, sp, #0x0
- mov r2, #0x1
-_020E326C:
- and r3, r1, #0xff
- and r1, r1, #0x7
- mov r1, r2, lsl r1
- ldrb r3, [r12, r3, asr #0x3]
- and r1, r1, #0xff
- tst r3, r1
- bne _020E3294
- ldrb r1, [r4], #0x1
- cmp r1, #0x0
- bne _020E326C
-_020E3294:
- sub r0, r4, r0
- sub r0, r0, #0x1
- add sp, sp, #0x20
- ldmia sp!, {r4,pc}
-
- arm_func_start strstr
-strstr: ; 0x020E32A4
- stmdb sp!, {r4,lr}
- cmp r1, #0x0
- ldrneb r2, [r1, #0x0]
- cmpne r2, #0x0
- ldmeqia sp!, {r4,pc}
- ldrb r3, [r0, #0x0]
- add r4, r0, #0x1
- cmp r3, #0x0
- beq _020E3308
-_020E32C8:
- cmp r3, r2
- bne _020E32FC
- mov lr, r4
- add r12, r1, #0x1
-_020E32D8:
- ldrb r3, [r12], #0x1
- ldrb r0, [lr], #0x1
- cmp r0, r3
- bne _020E32F0
- cmp r0, #0x0
- bne _020E32D8
-_020E32F0:
- cmp r3, #0x0
- subeq r0, r4, #0x1
- ldmeqia sp!, {r4,pc}
-_020E32FC:
- ldrb r3, [r4], #0x1
- cmp r3, #0x0
- bne _020E32C8
-_020E3308:
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-
- arm_func_start __strtold
-__strtold: ; 0x020E3310
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0xa8
- ldr r4, [sp, #0xd0]
- mov r10, #0x0
- str r4, [sp, #0xd0]
- str r0, [sp, #0x0]
- add r6, sp, #0x80
- mov r9, r1
- mov r8, r2
- str r3, [sp, #0x4]
- mov r4, r10
- str r10, [sp, #0x2c]
- mov r5, #0x1
- mov r0, #0x4
-_020E3348:
- strh r10, [r6, #0x0]
- strh r10, [r6, #0x2]
- strh r10, [r6, #0x4]
- strh r10, [r6, #0x6]
- add r6, r6, #0x8
- subs r0, r0, #0x1
- bne _020E3348
- mov r0, #0x0
- str r0, [sp, #0x28]
- strh r10, [r6, #0x0]
- strh r10, [r6, #0x2]
- ldr r2, [sp, #0x28]
- ldr r1, [sp, #0xd0]
- strh r10, [r6, #0x4]
- str r2, [r1, #0x0]
- mov r1, r2
- mov r0, r8
- str r1, [sp, #0x24]
- str r1, [sp, #0x20]
- str r1, [sp, #0x1c]
- str r1, [sp, #0x18]
- str r1, [sp, #0x10]
- str r1, [sp, #0xc]
- str r1, [sp, #0x8]
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- ldr r7, _020E42F0 ; =UNK_02104439
- add r0, sp, #0x4d
- mov r6, #0x4
-_020E33C0:
- ldrb r3, [r7, #0x0]
- ldrb r2, [r7, #0x1]
- add r7, r7, #0x2
- strb r3, [r0, #0x0]
- strb r2, [r0, #0x1]
- add r0, r0, #0x2
- subs r6, r6, #0x1
- bne _020E33C0
- ldrb r3, [r7, #0x0]
- ldr r2, _020E42F4 ; =UNK_02104434
- strb r3, [r0, #0x0]
- ldrb r3, [r2, #0x1]
- ldrb r0, [r2, #0x2]
- ldrb r6, [r2, #0x0]
- strb r3, [sp, #0x31]
- strb r0, [sp, #0x32]
- ldrb r3, [r2, #0x3]
- ldrb r0, [r2, #0x4]
- strb r6, [sp, #0x30]
- strb r3, [sp, #0x33]
- strb r0, [sp, #0x34]
- b _020E4104
-_020E3418:
- cmp r5, #0x100
- bgt _020E3490
- bge _020E3B98
- cmp r5, #0x20
- bgt _020E3474
- bge _020E3A6C
- cmp r5, #0x8
- bgt _020E3468
- cmp r5, #0x0
- addge pc, pc, r5, lsl #0x2
- b _020E4104
- b _020E4104
- b _020E34D4
- b _020E38B8
- b _020E4104
- b _020E3968
- b _020E4104
- b _020E4104
- b _020E4104
- b _020E3990
-_020E3468:
- cmp r5, #0x10
- beq _020E3A34
- b _020E4104
-_020E3474:
- cmp r5, #0x40
- bgt _020E3484
- beq _020E3AF8
- b _020E4104
-_020E3484:
- cmp r5, #0x80
- beq _020E3B44
- b _020E4104
-_020E3490:
- cmp r5, #0x2000
- bgt _020E34B8
- bge _020E36EC
- cmp r5, #0x200
- bgt _020E34AC
- beq _020E3BF8
- b _020E4104
-_020E34AC:
- cmp r5, #0x400
- beq _020E3C20
- b _020E4104
-_020E34B8:
- cmp r5, #0x4000
- bgt _020E34C8
- beq _020E35F4
- b _020E4104
-_020E34C8:
- cmp r5, #0x8000
- beq _020E3C98
- b _020E4104
-_020E34D4:
- cmp r1, #0x0
- blt _020E34E4
- cmp r1, #0x80
- blt _020E34EC
-_020E34E4:
- mov r0, #0x0
- b _020E34FC
-_020E34EC:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x100
-_020E34FC:
- cmp r0, #0x0
- beq _020E3528
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r1, r0
- ldr r0, [sp, #0x2c]
- add r0, r0, #0x1
- str r0, [sp, #0x2c]
- b _020E4104
-_020E3528:
- cmp r1, #0x0
- blt _020E3538
- cmp r1, #0x80
- blt _020E3540
-_020E3538:
- mov r0, r1
- b _020E3548
-_020E3540:
- ldr r0, _020E42FC ; =UNK_0210428C
- ldrb r0, [r0, r1]
-_020E3548:
- cmp r0, #0x49
- bgt _020E3574
- bge _020E35AC
- cmp r0, #0x2d
- bgt _020E35EC
- cmp r0, #0x2b
- blt _020E35EC
- beq _020E3588
- cmp r0, #0x2d
- beq _020E3580
- b _020E35EC
-_020E3574:
- cmp r0, #0x4e
- beq _020E35CC
- b _020E35EC
-_020E3580:
- mov r0, #0x1
- str r0, [sp, #0x28]
-_020E3588:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- mov r0, #0x1
- str r0, [sp, #0x18]
- b _020E4104
-_020E35AC:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- mov r5, #0x4000
- b _020E4104
-_020E35CC:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- mov r5, #0x2000
- b _020E4104
-_020E35EC:
- mov r5, #0x2
- b _020E4104
-_020E35F4:
- mov r5, #0x1
- add r7, sp, #0x4d
- add r0, sp, #0x76
- mov r6, #0x4
-_020E3604:
- ldrb r3, [r7, #0x0]
- ldrb r2, [r7, #0x1]
- add r7, r7, #0x2
- strb r3, [r0, #0x0]
- strb r2, [r0, #0x1]
- add r0, r0, #0x2
- subs r6, r6, #0x1
- bne _020E3604
- ldrb r2, [r7, #0x0]
- add r6, sp, #0x77
- ldr r7, _020E42FC ; =UNK_0210428C
- strb r2, [r0, #0x0]
- b _020E3658
-_020E3638:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r6, r6, #0x1
- add r5, r5, #0x1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
-_020E3658:
- cmp r5, #0x8
- bge _020E3688
- cmp r1, #0x0
- blt _020E3670
- cmp r1, #0x80
- blt _020E3678
-_020E3670:
- mov r2, r1
- b _020E367C
-_020E3678:
- ldrb r2, [r7, r1]
-_020E367C:
- ldrsb r0, [r6, #0x0]
- cmp r0, r2
- beq _020E3638
-_020E3688:
- cmp r5, #0x3
- cmpne r5, #0x8
- bne _020E36E4
- ldr r0, [sp, #0x28]
- cmp r0, #0x0
- beq _020E36B8
- ldr r1, _020E4300 ; =UNK_02106B74
- mov r0, #0x0
- ldr r1, [r1, #0x0]
- bl _fsub
- bl _f2d
- b _020E36C4
-_020E36B8:
- ldr r0, _020E4300 ; =UNK_02106B74
- ldr r0, [r0, #0x0]
- bl _f2d
-_020E36C4:
- ldr r2, [sp, #0x2c]
- add r3, r2, r5
- ldr r2, [sp, #0x18]
- add r3, r2, r3
- ldr r2, [sp, #0x4]
- add sp, sp, #0xa8
- str r3, [r2, #0x0]
- ldmia sp!, {r3-r11,pc}
-_020E36E4:
- mov r5, #0x1000
- b _020E4104
-_020E36EC:
- ldrb r3, [sp, #0x30]
- ldrb r0, [sp, #0x32]
- ldrb r2, [sp, #0x31]
- strb r3, [sp, #0x40]
- strb r0, [sp, #0x42]
- ldrb r3, [sp, #0x33]
- ldrb r0, [sp, #0x34]
- strb r2, [sp, #0x41]
- mov r5, #0x1
- strb r0, [sp, #0x44]
- mov r6, #0x0
- add r2, sp, #0x56
- strb r3, [sp, #0x43]
- mov r0, #0x8
-_020E3724:
- strb r6, [r2, #0x0]
- strb r6, [r2, #0x1]
- strb r6, [r2, #0x2]
- strb r6, [r2, #0x3]
- add r2, r2, #0x4
- subs r0, r0, #0x1
- bne _020E3724
- add r7, sp, #0x41
- b _020E3768
-_020E3748:
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r7, r7, #0x1
- add r5, r5, #0x1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
-_020E3768:
- cmp r5, #0x4
- bge _020E379C
- cmp r1, #0x0
- blt _020E3780
- cmp r1, #0x80
- blt _020E3788
-_020E3780:
- mov r2, r1
- b _020E3790
-_020E3788:
- ldr r0, _020E42FC ; =UNK_0210428C
- ldrb r2, [r0, r1]
-_020E3790:
- ldrsb r0, [r7, #0x0]
- cmp r0, r2
- beq _020E3748
-_020E379C:
- sub r0, r5, #0x3
- cmp r0, #0x1
- bhi _020E38B0
- cmp r5, #0x4
- bne _020E3854
- ldr r7, _020E42F8 ; =UNK_0210430C
- b _020E37DC
-_020E37B8:
- add r0, sp, #0x56
- strb r1, [r0, r6]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r6, r6, #0x1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
-_020E37DC:
- cmp r6, #0x20
- bge _020E3844
- cmp r1, #0x0
- blt _020E37F4
- cmp r1, #0x80
- blt _020E37FC
-_020E37F4:
- mov r0, #0x0
- b _020E3808
-_020E37FC:
- mov r0, r1, lsl #0x1
- ldrh r0, [r7, r0]
- and r0, r0, #0x8
-_020E3808:
- cmp r0, #0x0
- bne _020E37B8
- cmp r1, #0x0
- blt _020E3820
- cmp r1, #0x80
- blt _020E3828
-_020E3820:
- mov r0, #0x0
- b _020E3834
-_020E3828:
- mov r0, r1, lsl #0x1
- ldrh r0, [r7, r0]
- and r0, r0, #0x1
-_020E3834:
- cmp r0, #0x0
- bne _020E37B8
- cmp r1, #0x2e
- beq _020E37B8
-_020E3844:
- cmp r1, #0x29
- movne r5, #0x1000
- bne _020E4104
- add r6, r6, #0x1
-_020E3854:
- add r0, sp, #0x56
- mov r1, #0x0
- strb r1, [r0, r6]
- ldr r1, [sp, #0x28]
- cmp r1, #0x0
- beq _020E3888
- bl nan
- mov r2, r0
- mov r0, #0x0
- mov r3, r1
- mov r1, r0
- bl _dsub
- b _020E388C
-_020E3888:
- bl nan
-_020E388C:
- ldr r2, [sp, #0x2c]
- add r2, r2, r5
- add r3, r6, r2
- ldr r2, [sp, #0x18]
- add r3, r2, r3
- ldr r2, [sp, #0x4]
- add sp, sp, #0xa8
- str r3, [r2, #0x0]
- ldmia sp!, {r3-r11,pc}
-_020E38B0:
- mov r5, #0x1000
- b _020E4104
-_020E38B8:
- cmp r1, #0x2e
- bne _020E38E0
- mov r5, #0x10
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E38E0:
- cmp r1, #0x0
- blt _020E38F0
- cmp r1, #0x80
- blt _020E38F8
-_020E38F0:
- mov r0, #0x0
- b _020E3908
-_020E38F8:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3908:
- cmp r0, #0x0
- moveq r5, #0x1000
- beq _020E4104
- cmp r1, #0x30
- bne _020E3960
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- cmp r0, #0x0
- mov r1, r0
- blt _020E394C
- cmp r0, #0x80
- bge _020E394C
- ldr r2, _020E42FC ; =UNK_0210428C
- ldrb r0, [r2, r0]
-_020E394C:
- cmp r0, #0x58
- moveq r5, #0x8000
- moveq r10, #0x1
- movne r5, #0x4
- b _020E4104
-_020E3960:
- mov r5, #0x8
- b _020E4104
-_020E3968:
- cmp r1, #0x30
- movne r5, #0x8
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3990:
- cmp r1, #0x0
- blt _020E39A0
- cmp r1, #0x80
- blt _020E39A8
-_020E39A0:
- mov r0, #0x0
- b _020E39B8
-_020E39A8:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E39B8:
- cmp r0, #0x0
- bne _020E39EC
- cmp r1, #0x2e
- movne r5, #0x40
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r5, #0x20
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E39EC:
- ldrb r2, [sp, #0x84]
- cmp r2, #0x14
- ldrcs r0, [sp, #0x1c]
- addcs r0, r0, #0x1
- strcs r0, [sp, #0x1c]
- bhs _020E3A18
- add r0, r2, #0x1
- strb r0, [sp, #0x84]
- add r0, sp, #0x80
- add r0, r0, r2
- strb r1, [r0, #0x5]
-_020E3A18:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3A34:
- cmp r1, #0x0
- blt _020E3A44
- cmp r1, #0x80
- blt _020E3A4C
-_020E3A44:
- mov r0, #0x0
- b _020E3A5C
-_020E3A4C:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3A5C:
- cmp r0, #0x0
- moveq r5, #0x1000
- movne r5, #0x20
- b _020E4104
-_020E3A6C:
- cmp r1, #0x0
- blt _020E3A7C
- cmp r1, #0x80
- blt _020E3A84
-_020E3A7C:
- mov r0, #0x0
- b _020E3A94
-_020E3A84:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3A94:
- cmp r0, #0x0
- moveq r5, #0x40
- beq _020E4104
- ldrb r3, [sp, #0x84]
- cmp r3, #0x14
- bhs _020E3ADC
- cmp r1, #0x30
- cmpeq r3, #0x0
- beq _020E3AD0
- ldrb r2, [sp, #0x84]
- add r0, sp, #0x80
- add r0, r0, r3
- add r2, r2, #0x1
- strb r2, [sp, #0x84]
- strb r1, [r0, #0x5]
-_020E3AD0:
- ldr r0, [sp, #0x1c]
- sub r0, r0, #0x1
- str r0, [sp, #0x1c]
-_020E3ADC:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3AF8:
- cmp r1, #0x0
- blt _020E3B08
- cmp r1, #0x80
- blt _020E3B10
-_020E3B08:
- mov r0, r1
- b _020E3B18
-_020E3B10:
- ldr r0, _020E42FC ; =UNK_0210428C
- ldrb r0, [r0, r1]
-_020E3B18:
- cmp r0, #0x45
- movne r5, #0x800
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r5, #0x80
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3B44:
- cmp r1, #0x2b
- bne _020E3B68
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E3B90
-_020E3B68:
- cmp r1, #0x2d
- bne _020E3B90
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- mov r0, #0x1
- str r0, [sp, #0x24]
-_020E3B90:
- mov r5, #0x100
- b _020E4104
-_020E3B98:
- cmp r1, #0x0
- blt _020E3BA8
- cmp r1, #0x80
- blt _020E3BB0
-_020E3BA8:
- mov r0, #0x0
- b _020E3BC0
-_020E3BB0:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3BC0:
- cmp r0, #0x0
- moveq r5, #0x1000
- beq _020E4104
- cmp r1, #0x30
- movne r5, #0x400
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r5, #0x200
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3BF8:
- cmp r1, #0x30
- movne r5, #0x400
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3C20:
- cmp r1, #0x0
- blt _020E3C30
- cmp r1, #0x80
- blt _020E3C38
-_020E3C30:
- mov r0, #0x0
- b _020E3C48
-_020E3C38:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E3C48:
- cmp r0, #0x0
- moveq r5, #0x800
- beq _020E4104
- ldr r0, [sp, #0x20]
- sub r2, r1, #0x30
- mov r1, #0xa
- mla r0, r1, r0, r2
- ldr r1, _020E4304 ; =0x00007FFF
- str r0, [sp, #0x20]
- cmp r0, r1
- ldrgt r0, [sp, #0xd0]
- movgt r1, #0x1
- strgt r1, [r0, #0x0]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3C98:
- cmp r10, #0x20
- bgt _020E3CE8
- bge _020E3FBC
- cmp r10, #0x8
- bgt _020E3CDC
- cmp r10, #0x0
- addge pc, pc, r10, lsl #0x2
- b _020E4104
- b _020E4104
- b _020E3D0C
- b _020E3D5C
- b _020E4104
- b _020E3D84
- b _020E4104
- b _020E4104
- b _020E4104
- b _020E3E94
-_020E3CDC:
- cmp r10, #0x10
- beq _020E3F70
- b _020E4104
-_020E3CE8:
- cmp r10, #0x80
- bgt _020E3D00
- bge _020E4064
- cmp r10, #0x40
- beq _020E4004
- b _020E4104
-_020E3D00:
- cmp r10, #0x100
- beq _020E408C
- b _020E4104
-_020E3D0C:
- mov r1, #0x0
- add r0, sp, #0x45
- str r0, [sp, #0x14]
- 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]
- mov r0, r8
- mov r2, r1
- str r1, [sp, #0x8]
- mov r11, r1
- mov r10, #0x2
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3D5C:
- cmp r1, #0x30
- movne r10, #0x4
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3D84:
- cmp r1, #0x0
- blt _020E3D94
- cmp r1, #0x80
- blt _020E3D9C
-_020E3D94:
- mov r0, #0x0
- b _020E3DAC
-_020E3D9C:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x400
-_020E3DAC:
- cmp r0, #0x0
- bne _020E3DE0
- cmp r1, #0x2e
- movne r10, #0x10
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r10, #0x8
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3DE0:
- ldr r2, [sp, #0x8]
- mov r0, #0xe
- cmp r2, r0
- bhs _020E3E78
- mov r0, r2
- add r0, r0, #0x1
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x14]
- add r2, r11, r11, lsr #0x1f
- cmp r1, #0x0
- ldrb r0, [r0, r2, asr #0x1]
- blt _020E3E20
- cmp r1, #0x80
- bge _020E3E20
- ldr r2, _020E42FC ; =UNK_0210428C
- ldrb r1, [r2, r1]
-_020E3E20:
- cmp r1, #0x41
- subge r1, r1, #0x37
- sublt r1, r1, #0x30
- mov r2, r11, lsr #0x1f
- and r3, r1, #0xff
- rsb r1, r2, r11, lsl #0x1f
- adds r1, r2, r1, ror #0x1f
- moveq r1, r3, lsl #0x4
- add r2, r11, r11, lsr #0x1f
- orrne r0, r0, r3
- andeq r1, r1, #0xff
- orreq r0, r0, r1
- ldr r1, [sp, #0x14]
- add r11, r11, #0x1
- strb r0, [r1, r2, asr #0x1]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3E78:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3E94:
- cmp r1, #0x0
- blt _020E3EA4
- cmp r1, #0x80
- blt _020E3EAC
-_020E3EA4:
- mov r0, #0x0
- b _020E3EBC
-_020E3EAC:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x400
-_020E3EBC:
- cmp r0, #0x0
- moveq r10, #0x10
- beq _020E4104
- ldr r2, [sp, #0x8]
- mov r0, #0xe
- cmp r2, r0
- bhs _020E3F54
- ldr r0, [sp, #0x14]
- add r2, r11, r11, lsr #0x1f
- cmp r1, #0x0
- ldrb r0, [r0, r2, asr #0x1]
- blt _020E3EFC
- cmp r1, #0x80
- bge _020E3EFC
- ldr r2, _020E42FC ; =UNK_0210428C
- ldrb r1, [r2, r1]
-_020E3EFC:
- cmp r1, #0x41
- subge r1, r1, #0x37
- sublt r1, r1, #0x30
- mov r2, r11, lsr #0x1f
- and r3, r1, #0xff
- rsb r1, r2, r11, lsl #0x1f
- adds r1, r2, r1, ror #0x1f
- moveq r1, r3, lsl #0x4
- add r2, r11, r11, lsr #0x1f
- orrne r0, r0, r3
- andeq r1, r1, #0xff
- orreq r0, r0, r1
- ldr r1, [sp, #0x14]
- add r11, r11, #0x1
- strb r0, [r1, r2, asr #0x1]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3F54:
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3F70:
- cmp r1, #0x0
- blt _020E3F80
- cmp r1, #0x80
- blt _020E3F88
-_020E3F80:
- mov r0, r1
- b _020E3F90
-_020E3F88:
- ldr r0, _020E42FC ; =UNK_0210428C
- ldrb r0, [r0, r1]
-_020E3F90:
- cmp r0, #0x50
- movne r5, #0x800
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r10, #0x20
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E3FBC:
- cmp r1, #0x2d
- moveq r0, #0x1
- streq r0, [sp, #0xc]
- beq _020E3FE4
- cmp r1, #0x2b
- beq _020E3FE4
- mov r0, r8
- mov r2, #0x1
- blx r9
- sub r4, r4, #0x1
-_020E3FE4:
- mov r10, #0x40
- add r4, r4, #0x1
- mov r0, r8
- mov r1, #0x0
- mov r2, r1
- blx r9
- mov r1, r0
- b _020E4104
-_020E4004:
- cmp r1, #0x0
- blt _020E4014
- cmp r1, #0x80
- blt _020E401C
-_020E4014:
- mov r0, #0x0
- b _020E402C
-_020E401C:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E402C:
- cmp r0, #0x0
- moveq r5, #0x1000
- beq _020E4104
- cmp r1, #0x30
- movne r10, #0x100
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- mov r10, #0x80
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E4064:
- cmp r1, #0x30
- movne r10, #0x100
- bne _020E4104
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- add r4, r4, #0x1
- blx r9
- mov r1, r0
- b _020E4104
-_020E408C:
- cmp r1, #0x0
- blt _020E409C
- cmp r1, #0x80
- blt _020E40A4
-_020E409C:
- mov r0, #0x0
- b _020E40B4
-_020E40A4:
- mov r2, r1, lsl #0x1
- ldr r0, _020E42F8 ; =UNK_0210430C
- ldrh r0, [r0, r2]
- and r0, r0, #0x8
-_020E40B4:
- cmp r0, #0x0
- moveq r5, #0x800
- beq _020E4104
- ldr r0, [sp, #0x10]
- sub r2, r1, #0x30
- mov r1, #0xa
- mla r0, r1, r0, r2
- str r0, [sp, #0x10]
- ldr r1, _020E4304 ; =0x00007FFF
- ldr r0, [sp, #0x20]
- add r4, r4, #0x1
- cmp r0, r1
- ldrgt r0, [sp, #0xd0]
- movgt r1, #0x1
- strgt r1, [r0, #0x0]
- mov r1, #0x0
- mov r0, r8
- mov r2, r1
- blx r9
- mov r1, r0
-_020E4104:
- ldr r0, [sp, #0x0]
- cmp r4, r0
- bgt _020E4124
- mvn r0, #0x0
- cmp r1, r0
- beq _020E4124
- tst r5, #0x1800
- beq _020E3418
-_020E4124:
- cmp r5, #0x8000
- beq _020E4140
- ldr r0, _020E4308 ; =0x00000E2C
- tst r5, r0
- moveq r0, #0x1
- movne r0, #0x0
- b _020E4164
-_020E4140:
- sub r0, r4, #0x1
- cmp r0, #0x2
- ble _020E4158
- ldr r0, _020E430C ; =0x0000018E
- tst r10, r0
- bne _020E4160
-_020E4158:
- mov r0, #0x1
- b _020E4164
-_020E4160:
- mov r0, #0x0
-_020E4164:
- cmp r0, #0x0
- movne r2, #0x0
- ldrne r0, [sp, #0x4]
- bne _020E4184
- ldr r0, [sp, #0x2c]
- sub r2, r4, #0x1
- add r2, r2, r0
- ldr r0, [sp, #0x4]
-_020E4184:
- str r2, [r0, #0x0]
- mov r0, r8
- mov r2, #0x1
- blx r9
- cmp r10, #0x0
- bne _020E4388
- ldr r0, [sp, #0x24]
- ldrb r2, [sp, #0x84]
- cmp r0, #0x0
- ldrne r0, [sp, #0x20]
- rsbne r0, r0, #0x0
- strne r0, [sp, #0x20]
- add r0, sp, #0x85
- add r1, r0, r2
- b _020E41CC
-_020E41C0:
- ldr r0, [sp, #0x1c]
- add r0, r0, #0x1
- str r0, [sp, #0x1c]
-_020E41CC:
- cmp r2, #0x0
- sub r2, r2, #0x1
- beq _020E41E4
- ldrb r0, [r1, #-0x1]!
- cmp r0, #0x30
- beq _020E41C0
-_020E41E4:
- add r0, r2, #0x1
- strb r0, [sp, #0x84]
- ands r2, r0, #0xff
- bne _020E4208
- add r1, r2, #0x1
- strb r1, [sp, #0x84]
- add r0, sp, #0x85
- mov r1, #0x30
- strb r1, [r0, r2]
-_020E4208:
- ldr r1, [sp, #0x20]
- ldr r0, [sp, #0x1c]
- mov r2, #0x8000
- add r0, r1, r0
- rsb r2, r2, #0x0
- str r0, [sp, #0x20]
- cmp r0, r2
- blt _020E4230
- cmp r0, r2, lsr #0x11
- ble _020E423C
-_020E4230:
- ldr r0, [sp, #0xd0]
- mov r1, #0x1
- str r1, [r0, #0x0]
-_020E423C:
- ldr r0, [sp, #0xd0]
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020E4298
- ldr r0, [sp, #0x24]
- cmp r0, #0x0
- movne r0, #0x0
- addne sp, sp, #0xa8
- movne r1, r0
- ldmneia sp!, {r3-r11,pc}
- ldr r0, [sp, #0x28]
- cmp r0, #0x0
- ldreq r1, _020E4310 ; =UNK_02106B7C
- addeq sp, sp, #0xa8
- ldmeqia r1, {r0-r1}
- ldmeqia sp!, {r3-r11,pc}
- ldr r1, _020E4310 ; =UNK_02106B7C
- mov r0, #0x0
- ldmia r1, {r2-r3}
- mov r1, r0
- bl _dsub
- add sp, sp, #0xa8
- ldmia sp!, {r3-r11,pc}
-_020E4298:
- ldr r1, [sp, #0x20]
- add r0, sp, #0x80
- strh r1, [sp, #0x82]
- bl __dec2num
- mov r4, r0
- mov r6, r1
- mov r0, #0x0
- mov r1, r0
- mov r2, r4
- mov r3, r6
- bl _dneq
- beq _020E4318
- mov r0, r4
- mov r1, r6
- mov r2, #0x0
- mov r3, #0x100000
- bl _dls
- bhs _020E4318
- ldr r0, [sp, #0xd0]
- mov r1, #0x1
- str r1, [r0, #0x0]
- b _020E4344
- .balign 4
-_020E42F0: .word UNK_02104439
-_020E42F4: .word UNK_02104434
-_020E42F8: .word UNK_0210430C
-_020E42FC: .word UNK_0210428C
-_020E4300: .word UNK_02106B74
-_020E4304: .word 0x00007FFF
-_020E4308: .word 0x00000E2C
-_020E430C: .word 0x0000018E
-_020E4310: .word UNK_02106B7C
-_020E4314: .word 0x7FEFFFFF
-_020E4318:
- ldr r3, _020E4314 ; =0x7FEFFFFF
- mov r0, r4
- mov r1, r6
- mvn r2, #0x0
- bl _dgr
- bls _020E4344
- ldr r0, [sp, #0xd0]
- mov r2, #0x1
- ldr r1, _020E4310 ; =UNK_02106B7C
- str r2, [r0, #0x0]
- ldmia r1, {r4,r6}
-_020E4344:
- ldr r0, [sp, #0x28]
- cmp r0, #0x0
- beq _020E4378
- ldr r0, _020E4308 ; =0x00000E2C
- tst r5, r0
- beq _020E4378
- mov r0, #0x0
- mov r1, r0
- mov r2, r4
- mov r3, r6
- bl _dsub
- mov r4, r0
- mov r6, r1
-_020E4378:
- add sp, sp, #0xa8
- mov r0, r4
- mov r1, r6
- ldmia sp!, {r3-r11,pc}
-_020E4388:
- ldr r0, [sp, #0xc]
- add r4, sp, #0x38
- cmp r0, #0x0
- ldrne r0, [sp, #0x10]
- ldrb r3, [sp, #0x45]
- rsbne r0, r0, #0x0
- strne r0, [sp, #0x10]
- ldr r1, [sp, #0x10]
- ldr r0, [sp, #0x8]
- mov r2, #0x0
- add r0, r1, r0, lsl #0x2
- str r0, [sp, #0x10]
- mov r1, #0x80
- b _020E43D0
-_020E43C0:
- ldr r0, [sp, #0x10]
- add r2, r2, #0x1
- sub r0, r0, #0x1
- str r0, [sp, #0x10]
-_020E43D0:
- cmp r2, #0x4
- bhs _020E43E0
- tst r3, r1, asr r2
- beq _020E43C0
-_020E43E0:
- adds r5, r2, #0x1
- beq _020E442C
- add r0, sp, #0x4c
- add r3, sp, #0x45
- str r0, [sp, #0x14]
- mov r1, #0x0
- cmp r0, r3
- blo _020E442C
- rsb r6, r5, #0x8
-_020E4404:
- ldr r0, [sp, #0x14]
- ldrb r0, [r0, #0x0]
- orr r2, r1, r0, lsl r5
- mov r1, r0, asr r6
- ldr r0, [sp, #0x14]
- and r1, r1, #0xff
- strb r2, [r0], #-0x1
- str r0, [sp, #0x14]
- cmp r0, r3
- bhs _020E4404
-_020E442C:
- mov r2, #0x0
- mov r6, r2
- strb r2, [r4, #0x0]
- strb r2, [r4, #0x1]
- strb r2, [r4, #0x2]
- strb r2, [r4, #0x3]
- strb r2, [r4, #0x4]
- strb r2, [r4, #0x5]
- strb r2, [r4, #0x6]
- strb r2, [r4, #0x7]
- mov r3, #0xc
- mov r7, #0x1
- mov r0, #0xff
- add r1, sp, #0x45
-_020E4464:
- add r5, r2, #0x8
- cmp r5, #0x34
- ldrb r5, [r1, r6]
- rsbhi r8, r2, #0x34
- and r11, r3, #0x7
- andhi r5, r5, r0, lsl r8
- andhi r5, r5, #0xff
- mov r8, r5, asr r11
- and r9, r8, #0xff
- ldrb r10, [r4, r7]
- rsb r8, r11, #0x8
- mov r5, r5, lsl r8
- orr r9, r10, r9
- strb r9, [r4, r7]
- add r7, r7, #0x1
- add r2, r2, #0x8
- ldrb r8, [r4, r7]
- and r5, r5, #0xff
- cmp r2, #0x34
- orr r5, r8, r5
- strb r5, [r4, r7]
- add r3, r3, #0x8
- add r6, r6, #0x1
- blo _020E4464
- ldr r0, [sp, #0x10]
- mov r1, #0x800
- add r0, r0, #0xfe
- add r2, r0, #0x300
- rsb r1, r1, #0x0
- tst r2, r1
- beq _020E44FC
- ldr r2, [sp, #0xd0]
- mov r3, #0x1
- mov r0, #0x0
- add sp, sp, #0xa8
- mov r1, r0
- str r3, [r2, #0x0]
- ldmia sp!, {r3-r11,pc}
-_020E44FC:
- ldrb r0, [r4, #0x1]
- mov r2, r2, lsl #0x15
- ldrb r1, [r4, #0x0]
- orr r0, r0, r2, lsr #0x11
- strb r0, [r4, #0x1]
- ldr r0, [sp, #0x28]
- orr r1, r1, r2, lsr #0x19
- cmp r0, #0x0
- andne r0, r1, #0xff
- strb r1, [r4, #0x0]
- orrne r0, r0, #0x80
- strneb r0, [r4, #0x0]
- mov r3, #0x0
-_020E4530:
- rsb r1, r3, #0x7
- ldrb r2, [r4, r3]
- ldrb r0, [r4, r1]
- strb r0, [r4, r3]
- add r3, r3, #0x1
- strb r2, [r4, r1]
- cmp r3, #0x4
- blt _020E4530
- ldmia r4, {r0-r1}
- add sp, sp, #0xa8
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start strtold
-strtold: ; 0x020E455C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x14
- mov r7, r0
- mov r0, #0x0
- mov r6, r1
- str r0, [sp, #0x8]
- add r4, sp, #0xc
- str r7, [sp, #0x4]
- ldr r1, _020E4630 ; =__StringRead
- add r2, sp, #0x4
- add r3, sp, #0x10
- sub r0, r0, #0x80000001
- str r4, [sp, #0x0]
- bl __strtold
- mov r5, r1
- mov r4, r0
- cmp r6, #0x0
- ldrne r0, [sp, #0x10]
- mov r1, r5
- addne r0, r7, r0
- strne r0, [r6, #0x0]
- mov r0, r4
- bl fabs
- ldr r2, [sp, #0xc]
- mov r6, r0
- mov r7, r1
- cmp r2, #0x0
- bne _020E4614
- mov r0, #0x0
- mov r1, r0
- mov r2, r4
- mov r3, r5
- bl _dneq
- beq _020E4620
- mov r0, r6
- mov r1, r7
- mov r2, #0x0
- mov r3, #0x100000
- bl _dls
- blo _020E4614
- ldr r3, _020E4634 ; =0x7FEFFFFF
- mov r0, r6
- mov r1, r7
- mvn r2, #0x0
- bl _dgr
- bls _020E4620
-_020E4614:
- ldr r0, _020E4638 ; =UNK_021D74A8
- mov r1, #0x22
- str r1, [r0, #0x0]
-_020E4620:
- mov r0, r4
- mov r1, r5
- add sp, sp, #0x14
- ldmia sp!, {r4-r7,pc}
- .balign 4
-_020E4630: .word __StringRead
-_020E4634: .word 0x7FEFFFFF
-_020E4638: .word UNK_021D74A8
-
- arm_func_start atod
-atod: ; 0x020E463C
- ldr ip, _020E4648 ; =strtold
- mov r1, #0x0
- bx r12
- .balign 4
-_020E4648: .word strtold
-
- arm_func_start __strtoul
-__strtoul:
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xc
- ldr r4, [sp, #0x38]
- movs r9, r0
- ldr r0, [sp, #0x34]
- str r4, [sp, #0x38]
- mov r4, #0x0
- str r0, [sp, #0x34]
- ldr r0, [sp, #0x38]
- str r1, [sp, #0x0]
- str r4, [r0, #0x0]
- mov r0, r4
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x34]
- mov r1, r4
- str r1, [r0, #0x0]
- ldr r0, [sp, #0x30]
- str r4, [sp, #0x8]
- mov r8, r2
- mov r7, r3
- mov r5, r4
- mov r10, r4
- str r0, [sp, #0x30]
- mov r4, #0x1
- bmi _020E46CC
- cmp r9, #0x1
- beq _020E46CC
- cmp r9, #0x24
- bgt _020E46CC
- ldr r0, [sp, #0x0]
- cmp r0, #0x1
- bge _020E46D4
-_020E46CC:
- mov r4, #0x40
- b _020E46F0
-_020E46D4:
- ldr r1, [sp, #0x8]
- mov r0, r7
- mov r3, r1
- mov r2, r1
- add r5, r3, #0x1
- blx r8
- mov r6, r0
-_020E46F0:
- cmp r9, #0x0
- beq _020E4708
- mov r1, r9
- mvn r0, #0x0
- bl _u32_div_f
- str r0, [sp, #0x4]
-_020E4708:
- mvn r11, #0x0
- b _020E49C8
-_020E4710:
- cmp r4, #0x8
- bgt _020E4748
- cmp r4, #0x0
- addge pc, pc, r4, lsl #0x2
- b _020E49C8
- b _020E49C8
- b _020E4754
- b _020E4800
- b _020E49C8
- b _020E483C
- b _020E49C8
- b _020E49C8
- b _020E49C8
- b _020E487C
-_020E4748:
- cmp r4, #0x10
- beq _020E487C
- b _020E49C8
-_020E4754:
- cmp r6, #0x0
- blt _020E4764
- cmp r6, #0x80
- blt _020E476C
-_020E4764:
- mov r0, #0x0
- b _020E477C
-_020E476C:
- ldr r0, _020E4A2C ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x100
-_020E477C:
- cmp r0, #0x0
- beq _020E47A8
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- blx r8
- mov r6, r0
- ldr r0, [sp, #0x8]
- add r0, r0, #0x1
- str r0, [sp, #0x8]
- b _020E49C8
-_020E47A8:
- cmp r6, #0x2b
- bne _020E47CC
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E47F8
-_020E47CC:
- cmp r6, #0x2d
- bne _020E47F8
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- ldr r0, [sp, #0x34]
- mov r1, #0x1
- str r1, [r0, #0x0]
-_020E47F8:
- mov r4, #0x2
- b _020E49C8
-_020E4800:
- cmp r9, #0x0
- cmpne r9, #0x10
- bne _020E4834
- cmp r6, #0x30
- bne _020E4834
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- mov r4, #0x4
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E49C8
-_020E4834:
- mov r4, #0x8
- b _020E49C8
-_020E483C:
- cmp r6, #0x58
- cmpne r6, #0x78
- bne _020E486C
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- mov r9, #0x10
- mov r4, #0x8
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E49C8
-_020E486C:
- cmp r9, #0x0
- moveq r9, #0x8
- mov r4, #0x10
- b _020E49C8
-_020E487C:
- ldr r0, [sp, #0x4]
- cmp r9, #0x0
- moveq r9, #0xa
- cmp r0, #0x0
- bne _020E48A0
- mov r0, r11
- mov r1, r9
- bl _u32_div_f
- str r0, [sp, #0x4]
-_020E48A0:
- cmp r6, #0x0
- blt _020E48B0
- cmp r6, #0x80
- blt _020E48B8
-_020E48B0:
- mov r0, #0x0
- b _020E48C8
-_020E48B8:
- ldr r0, _020E4A2C ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x8
-_020E48C8:
- cmp r0, #0x0
- beq _020E48F0
- sub r6, r6, #0x30
- cmp r6, r9
- blt _020E4978
- cmp r4, #0x10
- moveq r4, #0x20
- movne r4, #0x40
- add r6, r6, #0x30
- b _020E49C8
-_020E48F0:
- cmp r6, #0x0
- blt _020E4900
- cmp r6, #0x80
- blt _020E4908
-_020E4900:
- mov r0, #0x0
- b _020E4918
-_020E4908:
- ldr r0, _020E4A2C ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x1
-_020E4918:
- cmp r0, #0x0
- beq _020E494C
- cmp r6, #0x0
- blt _020E4930
- cmp r6, #0x80
- blt _020E4938
-_020E4930:
- mov r0, r6
- b _020E4940
-_020E4938:
- ldr r0, _020E4A30 ; =UNK_0210428C
- ldrb r0, [r0, r6]
-_020E4940:
- sub r0, r0, #0x37
- cmp r0, r9
- blt _020E495C
-_020E494C:
- cmp r4, #0x10
- moveq r4, #0x20
- movne r4, #0x40
- b _020E49C8
-_020E495C:
- cmp r6, #0x0
- blt _020E4974
- cmp r6, #0x80
- bge _020E4974
- ldr r0, _020E4A30 ; =UNK_0210428C
- ldrb r6, [r0, r6]
-_020E4974:
- sub r6, r6, #0x37
-_020E4978:
- ldr r0, [sp, #0x4]
- mov r4, #0x10
- cmp r10, r0
- ldrhi r0, [sp, #0x38]
- movhi r1, #0x1
- strhi r1, [r0, #0x0]
- mul r0, r10, r9
- mov r10, r0
- sub r0, r11, r0
- cmp r6, r0
- ldrhi r0, [sp, #0x38]
- movhi r1, #0x1
- strhi r1, [r0, #0x0]
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r10, r10, r6
- add r5, r5, #0x1
- blx r8
- mov r6, r0
-_020E49C8:
- ldr r0, [sp, #0x0]
- cmp r5, r0
- bgt _020E49E4
- cmp r6, r11
- beq _020E49E4
- tst r4, #0x60
- beq _020E4710
-_020E49E4:
- tst r4, #0x34
- bne _020E49FC
- ldr r0, [sp, #0x30]
- mov r10, #0x0
- str r10, [r0, #0x0]
- b _020E4A10
-_020E49FC:
- ldr r0, [sp, #0x8]
- sub r1, r5, #0x1
- add r1, r1, r0
- ldr r0, [sp, #0x30]
- str r1, [r0, #0x0]
-_020E4A10:
- mov r0, r7
- mov r1, r6
- mov r2, #0x1
- blx r8
- mov r0, r10
- add sp, sp, #0xc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020E4A2C: .word UNK_0210430C
-_020E4A30: .word UNK_0210428C
-
- arm_func_start __strtoull
-__strtoull: ; 0x020E4A34
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x1c
- ldr r4, [sp, #0x48]
- movs r9, r0
- ldr r0, [sp, #0x44]
- str r4, [sp, #0x48]
- mov r4, #0x0
- str r0, [sp, #0x44]
- ldr r0, [sp, #0x48]
- str r1, [sp, #0x0]
- str r4, [r0, #0x0]
- mov r0, r4
- str r0, [sp, #0xc]
- str r0, [sp, #0x8]
- ldr r0, [sp, #0x44]
- mov r1, r4
- str r1, [r0, #0x0]
- ldr r0, [sp, #0x40]
- str r4, [sp, #0x14]
- mov r8, r2
- mov r7, r3
- mov r5, r4
- mov r10, r4
- mov r11, r4
- str r0, [sp, #0x40]
- mov r4, #0x1
- bmi _020E4ABC
- cmp r9, #0x1
- beq _020E4ABC
- cmp r9, #0x24
- bgt _020E4ABC
- ldr r0, [sp, #0x0]
- cmp r0, #0x1
- bge _020E4AC4
-_020E4ABC:
- mov r4, #0x40
- b _020E4ADC
-_020E4AC4:
- ldr r1, [sp, #0x14]
- mov r0, r7
- mov r2, r1
- add r5, r1, #0x1
- blx r8
- mov r6, r0
-_020E4ADC:
- cmp r9, #0x0
- beq _020E4B00
- mvn r0, #0x0
- mov r1, r0
- mov r3, r9, asr #0x1f
- mov r2, r9
- bl _ll_udiv
- str r0, [sp, #0xc]
- str r1, [sp, #0x8]
-_020E4B00:
- mvn r0, #0x0
- str r0, [sp, #0x18]
- b _020E4E08
-_020E4B0C:
- cmp r4, #0x8
- bgt _020E4B44
- cmp r4, #0x0
- addge pc, pc, r4, lsl #0x2
- b _020E4E08
- b _020E4E08
- b _020E4B50
- b _020E4BFC
- b _020E4E08
- b _020E4C38
- b _020E4E08
- b _020E4E08
- b _020E4E08
- b _020E4C78
-_020E4B44:
- cmp r4, #0x10
- beq _020E4C78
- b _020E4E08
-_020E4B50:
- cmp r6, #0x0
- blt _020E4B60
- cmp r6, #0x80
- blt _020E4B68
-_020E4B60:
- mov r0, #0x0
- b _020E4B78
-_020E4B68:
- ldr r0, _020E4E78 ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x100
-_020E4B78:
- cmp r0, #0x0
- beq _020E4BA4
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- blx r8
- mov r6, r0
- ldr r0, [sp, #0x14]
- add r0, r0, #0x1
- str r0, [sp, #0x14]
- b _020E4E08
-_020E4BA4:
- cmp r6, #0x2b
- bne _020E4BC8
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E4BF4
-_020E4BC8:
- cmp r6, #0x2d
- bne _020E4BF4
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- ldr r0, [sp, #0x44]
- mov r1, #0x1
- str r1, [r0, #0x0]
-_020E4BF4:
- mov r4, #0x2
- b _020E4E08
-_020E4BFC:
- cmp r9, #0x0
- cmpne r9, #0x10
- bne _020E4C30
- cmp r6, #0x30
- bne _020E4C30
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- mov r4, #0x4
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E4E08
-_020E4C30:
- mov r4, #0x8
- b _020E4E08
-_020E4C38:
- cmp r6, #0x58
- cmpne r6, #0x78
- bne _020E4C68
- mov r1, #0x0
- mov r0, r7
- mov r2, r1
- mov r9, #0x10
- mov r4, #0x8
- add r5, r5, #0x1
- blx r8
- mov r6, r0
- b _020E4E08
-_020E4C68:
- cmp r9, #0x0
- moveq r9, #0x8
- mov r4, #0x10
- b _020E4E08
-_020E4C78:
- ldr r1, [sp, #0x8]
- mov r0, #0x0
- cmp r9, #0x0
- moveq r9, #0xa
- cmp r1, r0
- ldr r1, [sp, #0xc]
- cmpeq r1, r0
- bne _020E4CB4
- ldr r0, [sp, #0x18]
- mov r3, r9, asr #0x1f
- mov r1, r0
- mov r2, r9
- bl _ll_udiv
- str r0, [sp, #0xc]
- str r1, [sp, #0x8]
-_020E4CB4:
- cmp r6, #0x0
- blt _020E4CC4
- cmp r6, #0x80
- blt _020E4CCC
-_020E4CC4:
- mov r0, #0x0
- b _020E4CDC
-_020E4CCC:
- ldr r0, _020E4E78 ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x8
-_020E4CDC:
- cmp r0, #0x0
- beq _020E4D04
- sub r6, r6, #0x30
- cmp r6, r9
- blt _020E4D8C
- cmp r4, #0x10
- moveq r4, #0x20
- movne r4, #0x40
- add r6, r6, #0x30
- b _020E4E08
-_020E4D04:
- cmp r6, #0x0
- blt _020E4D14
- cmp r6, #0x80
- blt _020E4D1C
-_020E4D14:
- mov r0, #0x0
- b _020E4D2C
-_020E4D1C:
- ldr r0, _020E4E78 ; =UNK_0210430C
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x1
-_020E4D2C:
- cmp r0, #0x0
- beq _020E4D60
- cmp r6, #0x0
- blt _020E4D44
- cmp r6, #0x80
- blt _020E4D4C
-_020E4D44:
- mov r0, r6
- b _020E4D54
-_020E4D4C:
- ldr r0, _020E4E7C ; =UNK_0210428C
- ldrb r0, [r0, r6]
-_020E4D54:
- sub r0, r0, #0x37
- cmp r0, r9
- blt _020E4D70
-_020E4D60:
- cmp r4, #0x10
- moveq r4, #0x20
- movne r4, #0x40
- b _020E4E08
-_020E4D70:
- cmp r6, #0x0
- blt _020E4D88
- cmp r6, #0x80
- bge _020E4D88
- ldr r0, _020E4E7C ; =UNK_0210428C
- ldrb r6, [r0, r6]
-_020E4D88:
- sub r6, r6, #0x37
-_020E4D8C:
- ldr r0, [sp, #0x8]
- umull r2, r3, r10, r9
- cmp r11, r0
- ldr r0, [sp, #0xc]
- mov r4, #0x10
- cmpeq r10, r0
- ldrhi r0, [sp, #0x48]
- movhi r1, #0x1
- strhi r1, [r0, #0x0]
- mov r1, r9, asr #0x1f
- mla r3, r10, r1, r3
- mla r3, r11, r9, r3
- ldr r1, [sp, #0x18]
- mov r10, r2
- subs r2, r1, r2
- mov r0, r6, asr #0x1f
- sbc r1, r1, r3
- cmp r0, r1
- cmpeq r6, r2
- ldrhi r1, [sp, #0x48]
- movhi r2, #0x1
- strhi r2, [r1, #0x0]
- mov r1, #0x0
- mov r11, r3
- adds r10, r10, r6
- adc r11, r11, r0
- mov r0, r7
- mov r2, r1
- add r5, r5, #0x1
- blx r8
- mov r6, r0
-_020E4E08:
- ldr r0, [sp, #0x0]
- cmp r5, r0
- bgt _020E4E28
- ldr r0, [sp, #0x18]
- cmp r6, r0
- beq _020E4E28
- tst r4, #0x60
- beq _020E4B0C
-_020E4E28:
- tst r4, #0x34
- bne _020E4E44
- ldr r0, [sp, #0x40]
- mov r10, #0x0
- mov r11, r10
- str r10, [r0, #0x0]
- b _020E4E58
-_020E4E44:
- ldr r0, [sp, #0x14]
- sub r1, r5, #0x1
- add r1, r1, r0
- ldr r0, [sp, #0x40]
- str r1, [r0, #0x0]
-_020E4E58:
- mov r0, r7
- mov r1, r6
- mov r2, #0x1
- blx r8
- mov r0, r10
- mov r1, r11
- add sp, sp, #0x1c
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020E4E78: .word UNK_0210430C
-_020E4E7C: .word UNK_0210428C
-
- arm_func_start strtoul
-strtoul: ; 0x020E4E80
- stmdb sp!, {r3-r5,lr}
- sub sp, sp, #0x20
- mov r5, r0
- mov lr, #0x0
- mov r0, r2
- mov r4, r1
- add r2, sp, #0x1c
- str r5, [sp, #0xc]
- str lr, [sp, #0x10]
- str r2, [sp, #0x0]
- add r1, sp, #0x18
- str r1, [sp, #0x4]
- add r12, sp, #0x14
- ldr r2, _020E4F10 ; =__StringRead
- add r3, sp, #0xc
- sub r1, lr, #0x80000001
- str r12, [sp, #0x8]
- bl __strtoul
- cmp r4, #0x0
- ldrne r1, [sp, #0x1c]
- addne r1, r5, r1
- strne r1, [r4, #0x0]
- ldr r1, [sp, #0x14]
- cmp r1, #0x0
- beq _020E4EFC
- ldr r0, _020E4F14 ; =UNK_021D74A8
- mov r1, #0x22
- str r1, [r0, #0x0]
- add sp, sp, #0x20
- mvn r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E4EFC:
- ldr r1, [sp, #0x18]
- cmp r1, #0x0
- rsbne r0, r0, #0x0
- add sp, sp, #0x20
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020E4F10: .word __StringRead
-_020E4F14: .word UNK_021D74A8
-
- arm_func_start strtold2
-strtold2: ; 0x020E4F18
- stmdb sp!, {r3-r5,lr}
- sub sp, sp, #0x20
- mov r5, r0
- mov lr, #0x0
- mov r0, r2
- mov r4, r1
- add r2, sp, #0x1c
- str r5, [sp, #0xc]
- str lr, [sp, #0x10]
- str r2, [sp, #0x0]
- add r1, sp, #0x18
- str r1, [sp, #0x4]
- add r12, sp, #0x14
- ldr r2, _020E4FD8 ; =__StringRead
- add r3, sp, #0xc
- sub r1, lr, #0x80000001
- str r12, [sp, #0x8]
- bl __strtoul
- cmp r4, #0x0
- ldrne r1, [sp, #0x1c]
- addne r1, r5, r1
- strne r1, [r4, #0x0]
- ldr r1, [sp, #0x14]
- cmp r1, #0x0
- bne _020E4FA4
- ldr r2, [sp, #0x18]
- cmp r2, #0x0
- bne _020E4F94
- mvn r1, #0x80000000
- cmp r0, r1
- bhi _020E4FA4
-_020E4F94:
- cmp r2, #0x0
- beq _020E4FC8
- cmp r0, #0x80000000
- bls _020E4FC8
-_020E4FA4:
- ldr r0, [sp, #0x18]
- ldr r1, _020E4FDC ; =UNK_021D74A8
- mov r2, #0x22
- cmp r0, #0x0
- movne r0, #0x80000000
- str r2, [r1, #0x0]
- add sp, sp, #0x20
- mvneq r0, #0x80000000
- ldmia sp!, {r3-r5,pc}
-_020E4FC8:
- cmp r2, #0x0
- rsbne r0, r0, #0x0
- add sp, sp, #0x20
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020E4FD8: .word __StringRead
-_020E4FDC: .word UNK_021D74A8
-
- arm_func_start atol
-atol: ; 0x020E4FE0
- ldr ip, _020E4FF0 ; =strtold
- mov r1, #0x0
- mov r2, #0xa
- bx r12
- .balign 4
-_020E4FF0: .word strtold2
-
- arm_func_start fwide
-fwide:
- cmp r0, #0x0
- beq _020E500C
- ldr r3, [r0, #0x4]
- mov r2, r3, lsl #0x16
- movs r2, r2, lsr #0x1d
- bne _020E5014
-_020E500C:
- mov r0, #0x0
- bx lr
-_020E5014:
- mov r2, r3, lsl #0x14
- movs r2, r2, lsr #0x1e
- beq _020E5034
- cmp r2, #0x1
- beq _020E505C
- cmp r2, #0x2
- moveq r1, #0x1
- b _020E5060
-_020E5034:
- cmp r1, #0x0
- ble _020E504C
- bic r2, r3, #0xc00
- orr r2, r2, #0x800
- str r2, [r0, #0x4]
- b _020E5060
-_020E504C:
- biclt r2, r3, #0xc00
- orrlt r2, r2, #0x400
- strlt r2, [r0, #0x4]
- b _020E5060
-_020E505C:
- mvn r1, #0x0
-_020E5060:
- mov r0, r1
- bx lr
-
- arm_func_start wmemcpy
-wmemcpy: ; 0x020E5068
- ldr ip, _020E5074 ; =memcpy
- mov r2, r2, lsl #0x1
- bx r12
- .balign 4
-_020E5074: .word memcpy
-
- arm_func_start wmemchr
-wmemchr:
- cmp r2, #0x0
- beq _020E5098
-_020E5080:
- ldrh r3, [r0, #0x0]
- cmp r3, r1
- bxeq lr
- add r0, r0, #0x2
- subs r2, r2, #0x1
- bne _020E5080
-_020E5098:
- mov r0, #0x0
- bx lr
-
- arm_func_start parse_format_wprintf
-parse_format_wprintf: ; 0x020E50A0
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- ldrh r3, [r0, #0x2]
- mov r4, #0x0
- mov r5, #0x1
- mov lr, r2
- strb r5, [sp, #0x0]
- strb r4, [sp, #0x1]
- strb r4, [sp, #0x2]
- strb r4, [sp, #0x3]
- strb r4, [sp, #0x4]
- str r4, [sp, #0x8]
- str r4, [sp, #0xc]
- cmp r3, #0x25
- add r12, r0, #0x2
- bne _020E50FC
- add r0, sp, #0x0
- strh r3, [sp, #0x6]
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add sp, sp, #0x10
- add r0, r12, #0x2
- ldmia sp!, {r4-r8,pc}
-_020E50FC:
- mov r2, #0x2
- mov r0, r4
- mov r5, r2
- mov r6, r4
- mov r7, #0x1
-_020E5110:
- mov r8, r7
- cmp r3, #0x2b
- bgt _020E5140
- bge _020E5168
- cmp r3, #0x23
- bgt _020E5198
- cmp r3, #0x20
- blt _020E5198
- beq _020E5170
- cmp r3, #0x23
- beq _020E5180
- b _020E5198
-_020E5140:
- cmp r3, #0x30
- bgt _020E5198
- cmp r3, #0x2d
- blt _020E5198
- beq _020E5160
- cmp r3, #0x30
- beq _020E5188
- b _020E5198
-_020E5160:
- strb r6, [sp, #0x0]
- b _020E519C
-_020E5168:
- strb r7, [sp, #0x1]
- b _020E519C
-_020E5170:
- ldrb r4, [sp, #0x1]
- cmp r4, #0x1
- strneb r5, [sp, #0x1]
- b _020E519C
-_020E5180:
- strb r7, [sp, #0x3]
- b _020E519C
-_020E5188:
- ldrb r4, [sp, #0x0]
- cmp r4, #0x0
- strneb r2, [sp, #0x0]
- b _020E519C
-_020E5198:
- mov r8, r0
-_020E519C:
- cmp r8, #0x0
- ldrneh r3, [r12, #0x2]!
- bne _020E5110
- cmp r3, #0x2a
- bne _020E51E4
- ldr r0, [r1, #0x0]
- add r0, r0, #0x4
- str r0, [r1, #0x0]
- ldr r0, [r0, #-0x4]
- str r0, [sp, #0x8]
- cmp r0, #0x0
- bge _020E51DC
- rsb r0, r0, #0x0
- mov r2, #0x0
- strb r2, [sp, #0x0]
- str r0, [sp, #0x8]
-_020E51DC:
- ldrh r3, [r12, #0x2]!
- b _020E5228
-_020E51E4:
- mov r2, #0x0
- ldr r5, _020E560C ; =UNK_02104544
- mov r0, #0xa
- b _020E5208
-_020E51F4:
- ldr r4, [sp, #0x8]
- sub r3, r3, #0x30
- mla r6, r4, r0, r3
- ldrh r3, [r12, #0x2]!
- str r6, [sp, #0x8]
-_020E5208:
- cmp r3, #0x80
- movcs r4, r2
- bhs _020E5220
- mov r4, r3, lsl #0x1
- ldrh r4, [r5, r4]
- and r4, r4, #0x8
-_020E5220:
- cmp r4, #0x0
- bne _020E51F4
-_020E5228:
- ldr r2, [sp, #0x8]
- ldr r0, _020E5610 ; =0x000001FD
- cmp r2, r0
- ble _020E5258
- ldr r1, _020E5614 ; =0x0000FFFF
- add r0, sp, #0x0
- strh r1, [sp, #0x6]
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add sp, sp, #0x10
- add r0, r12, #0x2
- ldmia sp!, {r4-r8,pc}
-_020E5258:
- cmp r3, #0x2e
- bne _020E52E0
- ldrh r3, [r12, #0x2]!
- mov r0, #0x1
- strb r0, [sp, #0x2]
- cmp r3, #0x2a
- bne _020E529C
- ldr r0, [r1, #0x0]
- add r0, r0, #0x4
- str r0, [r1, #0x0]
- ldr r0, [r0, #-0x4]
- ldrh r3, [r12, #0x2]!
- str r0, [sp, #0xc]
- cmp r0, #0x0
- movlt r0, #0x0
- strltb r0, [sp, #0x2]
- b _020E52E0
-_020E529C:
- mov r1, #0x0
- ldr r4, _020E560C ; =UNK_02104544
- mov r0, #0xa
- b _020E52C0
-_020E52AC:
- ldr r2, [sp, #0xc]
- sub r3, r3, #0x30
- mla r5, r2, r0, r3
- ldrh r3, [r12, #0x2]!
- str r5, [sp, #0xc]
-_020E52C0:
- cmp r3, #0x80
- movcs r2, r1
- bhs _020E52D8
- mov r2, r3, lsl #0x1
- ldrh r2, [r4, r2]
- and r2, r2, #0x8
-_020E52D8:
- cmp r2, #0x0
- bne _020E52AC
-_020E52E0:
- cmp r3, #0x6c
- mov r0, #0x1
- bgt _020E5318
- cmp r3, #0x68
- blt _020E530C
- beq _020E5334
- cmp r3, #0x6a
- beq _020E5380
- cmp r3, #0x6c
- beq _020E5350
- b _020E53A4
-_020E530C:
- cmp r3, #0x4c
- beq _020E5374
- b _020E53A4
-_020E5318:
- cmp r3, #0x74
- bgt _020E5328
- beq _020E538C
- b _020E53A4
-_020E5328:
- cmp r3, #0x7a
- beq _020E5398
- b _020E53A4
-_020E5334:
- ldrh r1, [r12, #0x2]
- mov r2, #0x2
- strb r2, [sp, #0x4]
- cmp r1, #0x68
- streqb r0, [sp, #0x4]
- ldreqh r3, [r12, #0x2]!
- b _020E53A8
-_020E5350:
- ldrh r1, [r12, #0x2]
- mov r2, #0x3
- strb r2, [sp, #0x4]
- cmp r1, #0x6c
- bne _020E53A8
- mov r1, #0x4
- strb r1, [sp, #0x4]
- ldrh r3, [r12, #0x2]!
- b _020E53A8
-_020E5374:
- mov r1, #0x9
- strb r1, [sp, #0x4]
- b _020E53A8
-_020E5380:
- mov r1, #0x6
- strb r1, [sp, #0x4]
- b _020E53A8
-_020E538C:
- mov r1, #0x8
- strb r1, [sp, #0x4]
- b _020E53A8
-_020E5398:
- mov r1, #0x7
- strb r1, [sp, #0x4]
- b _020E53A8
-_020E53A4:
- mov r0, #0x0
-_020E53A8:
- cmp r0, #0x0
- ldrneh r3, [r12, #0x2]!
- strh r3, [sp, #0x6]
- cmp r3, #0x61
- bgt _020E53FC
- bge _020E54E0
- cmp r3, #0x47
- bgt _020E53F0
- subs r0, r3, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020E55EC
- b _020E54E0
- b _020E55EC
- b _020E55EC
- b _020E55EC
- b _020E5528
- b _020E54A8
- b _020E5518
-_020E53F0:
- cmp r3, #0x58
- beq _020E5470
- b _020E55EC
-_020E53FC:
- cmp r3, #0x63
- bgt _020E540C
- beq _020E5588
- b _020E55EC
-_020E540C:
- sub r0, r3, #0x64
- cmp r0, #0x14
- addls pc, pc, r0, lsl #0x2
- b _020E55EC
-_020E541C:
- b _020E5470
-_020E5420:
- b _020E5528
-_020E5424:
- b _020E54A8
-_020E5428:
- b _020E5518
-_020E542C:
- b _020E55EC
-_020E5430:
- b _020E5470
-_020E5434:
- b _020E55EC
-_020E5438:
- b _020E55EC
-_020E543C:
- b _020E55EC
-_020E5440:
- b _020E55EC
-_020E5444:
- b _020E55D8
-_020E5448:
- b _020E5470
-_020E544C:
- b _020E5564
-_020E5450:
- b _020E55EC
-_020E5454:
- b _020E55EC
-_020E5458:
- b _020E55B4
-_020E545C:
- b _020E55EC
-_020E5460:
- b _020E5470
-_020E5464:
- b _020E55EC
-_020E5468:
- b _020E55EC
-_020E546C:
- b _020E5470
-_020E5470:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x9
- moveq r0, #0x4
- streqb r0, [sp, #0x4]
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0xc]
- beq _020E55F4
- ldrb r0, [sp, #0x0]
- cmp r0, #0x2
- moveq r0, #0x1
- streqb r0, [sp, #0x0]
- b _020E55F4
-_020E54A8:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- ldreq r0, _020E5614 ; =0x0000FFFF
- streqh r0, [sp, #0x6]
- beq _020E55F4
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x6
- streq r0, [sp, #0xc]
- b _020E55F4
-_020E54E0:
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0xd
- streq r0, [sp, #0xc]
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- cmpne r0, #0x1
- ldreq r0, _020E5614 ; =0x0000FFFF
- streqh r0, [sp, #0x6]
- b _020E55F4
-_020E5518:
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- moveq r0, #0x1
- streq r0, [sp, #0xc]
-_020E5528:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x2
- cmpne r0, #0x6
- cmpne r0, #0x7
- cmpne r0, #0x8
- cmpne r0, #0x4
- cmpne r0, #0x1
- ldreq r0, _020E5614 ; =0x0000FFFF
- streqh r0, [sp, #0x6]
- beq _020E55F4
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- moveq r0, #0x6
- streq r0, [sp, #0xc]
- b _020E55F4
-_020E5564:
- mov r3, #0x3
- mov r2, #0x1
- mov r1, #0x78
- mov r0, #0x8
- strb r3, [sp, #0x4]
- strb r2, [sp, #0x3]
- strh r1, [sp, #0x6]
- str r0, [sp, #0xc]
- b _020E55F4
-_020E5588:
- ldrb r1, [sp, #0x4]
- cmp r1, #0x3
- moveq r0, #0x5
- streqb r0, [sp, #0x4]
- beq _020E55F4
- ldrb r0, [sp, #0x2]
- cmp r0, #0x0
- cmpeq r1, #0x0
- ldrne r0, _020E5614 ; =0x0000FFFF
- strneh r0, [sp, #0x6]
- b _020E55F4
-_020E55B4:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x3
- moveq r0, #0x5
- streqb r0, [sp, #0x4]
- beq _020E55F4
- cmp r0, #0x0
- ldrne r0, _020E5614 ; =0x0000FFFF
- strneh r0, [sp, #0x6]
- b _020E55F4
-_020E55D8:
- ldrb r0, [sp, #0x4]
- cmp r0, #0x9
- moveq r0, #0x4
- streqb r0, [sp, #0x4]
- b _020E55F4
-_020E55EC:
- ldr r0, _020E5614 ; =0x0000FFFF
- strh r0, [sp, #0x6]
-_020E55F4:
- add r0, sp, #0x0
- ldmia r0, {r0-r3}
- stmia lr, {r0-r3}
- add r0, r12, #0x2
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,pc}
- .balign 4
-_020E560C: .word UNK_02104544
-_020E5610: .word 0x000001FD
-_020E5614: .word 0x0000FFFF
-
- arm_func_start long2str_wide
-long2str_wide: ; 0x020E5618
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x10
- movs r10, r0
- mov r0, #0x0
- mov r5, r1
- str r0, [sp, #0xc]
- ldr r7, [sp, #0x4c]
- mov r6, r0
- strh r0, [r5, #-0x2]!
- ldrb r0, [sp, #0x43]
- str r1, [sp, #0x0]
- ldrh r8, [sp, #0x46]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x48]
- ldrb r11, [sp, #0x41]
- str r0, [sp, #0x8]
- cmpeq r7, #0x0
- bne _020E568C
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020E5678
- cmp r8, #0x6f
- beq _020E568C
-_020E5678:
- add sp, sp, #0x10
- mov r0, r5
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E568C:
- cmp r8, #0x69
- bgt _020E56B4
- bge _020E56E8
- cmp r8, #0x58
- bgt _020E56A8
- beq _020E5714
- b _020E571C
-_020E56A8:
- cmp r8, #0x64
- beq _020E56E8
- b _020E571C
-_020E56B4:
- cmp r8, #0x6f
- bgt _020E56C8
- moveq r4, #0x8
- moveq r11, #0x0
- b _020E571C
-_020E56C8:
- cmp r8, #0x78
- bgt _020E571C
- cmp r8, #0x75
- blt _020E571C
- beq _020E5708
- cmp r8, #0x78
- beq _020E5714
- b _020E571C
-_020E56E8:
- cmp r10, #0x0
- mov r4, #0xa
- bge _020E571C
- mov r0, #0x1
- cmp r10, #0x80000000
- rsbne r10, r10, #0x0
- str r0, [sp, #0xc]
- b _020E571C
-_020E5708:
- mov r4, #0xa
- mov r11, #0x0
- b _020E571C
-_020E5714:
- mov r4, #0x10
- mov r11, #0x0
-_020E571C:
- mov r0, r10
- mov r1, r4
- bl _u32_div_f
- mov r9, r1
- mov r0, r10
- mov r1, r4
- bl _u32_div_f
- cmp r9, #0xa
- mov r10, r0
- addlt r9, r9, #0x30
- blt _020E5754
- cmp r8, #0x78
- addeq r9, r9, #0x57
- addne r9, r9, #0x37
-_020E5754:
- cmp r10, #0x0
- strh r9, [r5, #-0x2]!
- add r6, r6, #0x1
- bne _020E571C
- cmp r4, #0x8
- bne _020E5788
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrneh r0, [r5, #0x0]
- cmpne r0, #0x30
- movne r0, #0x30
- strneh r0, [r5, #-0x2]!
- addne r6, r6, #0x1
-_020E5788:
- ldrb r0, [sp, #0x40]
- cmp r0, #0x2
- bne _020E57BC
- ldr r0, [sp, #0xc]
- ldr r7, [sp, #0x8]
- cmp r0, #0x0
- cmpeq r11, #0x0
- subne r7, r7, #0x1
- cmp r4, #0x10
- bne _020E57BC
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- subne r7, r7, #0x2
-_020E57BC:
- ldr r0, [sp, #0x0]
- ldr r1, _020E5864 ; =0x000001FD
- sub r0, r0, r5
- add r0, r0, r0, lsr #0x1f
- add r0, r7, r0, asr #0x1
- cmp r0, r1
- addgt sp, sp, #0x10
- movgt r0, #0x0
- ldmgtia sp!, {r3-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- cmp r6, r7
- bge _020E5804
- mov r0, #0x30
-_020E57F4:
- add r6, r6, #0x1
- cmp r6, r7
- strh r0, [r5, #-0x2]!
- blt _020E57F4
-_020E5804:
- cmp r4, #0x10
- bne _020E5820
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x30
- strneh r8, [r5, #-0x2]
- strneh r0, [r5, #-0x4]!
-_020E5820:
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- movne r0, #0x2d
- strneh r0, [r5, #-0x2]!
- bne _020E5850
- cmp r11, #0x1
- moveq r0, #0x2b
- streqh r0, [r5, #-0x2]!
- beq _020E5850
- cmp r11, #0x2
- moveq r0, #0x20
- streqh r0, [r5, #-0x2]!
-_020E5850:
- mov r0, r5
- add sp, sp, #0x10
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E5864: .word 0x000001FD
-
- arm_func_start longlong2str_wide
-longlong2str_wide: ; 0x020E5868
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x18
- mov r9, r1
- mov r1, #0x0
- mov r10, r0
- mov r6, r2
- mov r0, r1
- strh r0, [r6, #-0x2]!
- ldr r0, [sp, #0x58]
- cmp r9, #0x0
- str r0, [sp, #0x10]
- ldrb r0, [sp, #0x4f]
- cmpeq r10, #0x0
- str r2, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r0, [sp, #0x54]
- str r1, [sp, #0x14]
- str r0, [sp, #0x8]
- ldrb r0, [sp, #0x4d]
- mov r7, r1
- ldrh r8, [sp, #0x52]
- str r0, [sp, #0xc]
- ldreq r0, [sp, #0x10]
- cmpeq r0, #0x0
- bne _020E58F8
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020E58E4
- cmp r8, #0x6f
- beq _020E58F8
-_020E58E4:
- add sp, sp, #0x18
- mov r0, r6
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E58F8:
- cmp r8, #0x69
- bgt _020E5920
- bge _020E5950
- cmp r8, #0x58
- bgt _020E5914
- beq _020E59A4
- b _020E59B0
-_020E5914:
- cmp r8, #0x64
- beq _020E5950
- b _020E59B0
-_020E5920:
- cmp r8, #0x6f
- bgt _020E5930
- beq _020E5984
- b _020E59B0
-_020E5930:
- cmp r8, #0x78
- bgt _020E59B0
- cmp r8, #0x75
- blt _020E59B0
- beq _020E5994
- cmp r8, #0x78
- beq _020E59A4
- b _020E59B0
-_020E5950:
- subs r0, r10, #0x0
- sbcs r0, r9, #0x0
- mov r11, #0xa
- mov r5, #0x0
- bge _020E59B0
- cmp r9, #0x80000000
- cmpeq r10, r5
- beq _020E5978
- rsbs r10, r10, #0x0
- rsc r9, r9, #0x0
-_020E5978:
- mov r0, #0x1
- str r0, [sp, #0x14]
- b _020E59B0
-_020E5984:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0x8
- b _020E59B0
-_020E5994:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0xa
- b _020E59B0
-_020E59A4:
- mov r5, #0x0
- str r5, [sp, #0xc]
- mov r11, #0x10
-_020E59B0:
- mov r0, r10
- mov r1, r9
- mov r2, r11
- mov r3, r5
- bl _ull_mod
- mov r4, r0
- mov r0, r10
- mov r1, r9
- mov r2, r11
- mov r3, r5
- bl _ll_udiv
- mov r10, r0
- cmp r4, #0xa
- mov r9, r1
- addlt r0, r4, #0x30
- blt _020E59FC
- cmp r8, #0x78
- addeq r0, r4, #0x57
- addne r0, r4, #0x37
-_020E59FC:
- strh r0, [r6, #-0x2]!
- mov r0, #0x0
- cmp r9, r0
- cmpeq r10, r0
- add r7, r7, #0x1
- bne _020E59B0
- cmp r5, #0x0
- cmpeq r11, #0x8
- bne _020E5A3C
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrneh r0, [r6, #0x0]
- cmpne r0, #0x30
- movne r0, #0x30
- strneh r0, [r6, #-0x2]!
- addne r7, r7, #0x1
-_020E5A3C:
- ldrb r0, [sp, #0x4c]
- cmp r0, #0x2
- bne _020E5A8C
- ldr r0, [sp, #0x8]
- str r0, [sp, #0x10]
- ldr r0, [sp, #0x14]
- cmp r0, #0x0
- ldreq r0, [sp, #0xc]
- cmpeq r0, #0x0
- ldrne r0, [sp, #0x10]
- subne r0, r0, #0x1
- strne r0, [sp, #0x10]
- cmp r5, #0x0
- cmpeq r11, #0x10
- bne _020E5A8C
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- ldrne r0, [sp, #0x10]
- subne r0, r0, #0x2
- strne r0, [sp, #0x10]
-_020E5A8C:
- ldr r0, [sp, #0x0]
- ldr r2, _020E5B48 ; =0x000001FD
- sub r0, r0, r6
- add r1, r0, r0, lsr #0x1f
- ldr r0, [sp, #0x10]
- add r0, r0, r1, asr #0x1
- cmp r0, r2
- addgt sp, sp, #0x18
- movgt r0, #0x0
- ldmgtia sp!, {r3-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- ldr r0, [sp, #0x10]
- cmp r7, r0
- bge _020E5AE0
- mov r1, #0x30
-_020E5ACC:
- ldr r0, [sp, #0x10]
- add r7, r7, #0x1
- cmp r7, r0
- strh r1, [r6, #-0x2]!
- blt _020E5ACC
-_020E5AE0:
- cmp r5, #0x0
- cmpeq r11, #0x10
- bne _020E5B00
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x30
- strneh r8, [r6, #-0x2]
- strneh r0, [r6, #-0x4]!
-_020E5B00:
- ldr r0, [sp, #0x14]
- cmp r0, #0x0
- movne r0, #0x2d
- strneh r0, [r6, #-0x2]!
- bne _020E5B34
- ldr r0, [sp, #0xc]
- cmp r0, #0x1
- moveq r0, #0x2b
- streqh r0, [r6, #-0x2]!
- beq _020E5B34
- cmp r0, #0x2
- moveq r0, #0x20
- streqh r0, [r6, #-0x2]!
-_020E5B34:
- mov r0, r6
- add sp, sp, #0x18
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E5B48: .word 0x000001FD
-
- arm_func_start double2hex_wide
-double2hex_wide: ; 0x020E5B4C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r10,lr}
- sub sp, sp, #0x44
- ldr r7, [sp, #0x80]
- ldr r0, _020E5EB8 ; =0x000001FD
- mov r8, r2
- cmp r7, r0
- ldrh r6, [sp, #0x7a]
- ldrb r5, [sp, #0x77]
- ldrb r4, [sp, #0x75]
- ldr r1, [sp, #0x68]
- ldr r2, [sp, #0x6c]
- addgt sp, sp, #0x44
- movgt r0, #0x0
- ldmgtia sp!, {r3-r10,lr}
- addgt sp, sp, #0x10
- bxgt lr
- mov r10, #0x0
- mov r9, #0x20
- add r0, sp, #0x8
- add r3, sp, #0xc
- strb r10, [sp, #0x8]
- strh r9, [sp, #0xa]
- bl __num2dec_internal2
- ldr r0, [sp, #0x68]
- ldr r1, [sp, #0x6c]
- bl fabs
- mov r2, r0
- mov r0, r10
- mov r3, r1
- mov r1, r0
- bl _deq
- bne _020E5BF4
- sub r4, r8, #0xc
- ldr r1, _020E5EBC ; =UNK_02106DE4
- mov r0, r4
- bl wcscpy
- add sp, sp, #0x44
- mov r0, r4
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E5BF4:
- ldrb r0, [sp, #0x11]
- cmp r0, #0x49
- bne _020E5C74
- ldrsb r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020E5C38
- cmp r6, #0x41
- sub r4, r8, #0xa
- bne _020E5C28
- ldr r1, _020E5EC0 ; =UNK_02106DF0
- mov r0, r4
- bl wcscpy
- b _020E5C60
-_020E5C28:
- ldr r1, _020E5EC4 ; =UNK_02106DFC
- mov r0, r4
- bl wcscpy
- b _020E5C60
-_020E5C38:
- cmp r6, #0x41
- sub r4, r8, #0x8
- bne _020E5C54
- ldr r1, _020E5EC8 ; =UNK_02106E08
- mov r0, r4
- bl wcscpy
- b _020E5C60
-_020E5C54:
- ldr r1, _020E5ECC ; =UNK_02106E10
- mov r0, r4
- bl wcscpy
-_020E5C60:
- add sp, sp, #0x44
- mov r0, r4
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E5C74:
- cmp r0, #0x4e
- bne _020E5CF0
- ldrsb r0, [sp, #0xc]
- cmp r0, #0x0
- beq _020E5CB4
- cmp r6, #0x41
- sub r4, r8, #0xa
- bne _020E5CA4
- ldr r1, _020E5ED0 ; =UNK_02106E18
- mov r0, r4
- bl wcscpy
- b _020E5CDC
-_020E5CA4:
- ldr r1, _020E5ED4 ; =UNK_02106E24
- mov r0, r4
- bl wcscpy
- b _020E5CDC
-_020E5CB4:
- cmp r6, #0x41
- sub r4, r8, #0x8
- bne _020E5CD0
- ldr r1, _020E5ED8 ; =UNK_02106E30
- mov r0, r4
- bl wcscpy
- b _020E5CDC
-_020E5CD0:
- ldr r1, _020E5EDC ; =UNK_02106E38
- mov r0, r4
- bl wcscpy
-_020E5CDC:
- add sp, sp, #0x44
- mov r0, r4
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
-_020E5CF0:
- mov r3, r10
- mov r1, #0x1
- mov r0, #0x64
- add r9, sp, #0x68
- strb r1, [sp, #0x34]
- strb r1, [sp, #0x35]
- strb r3, [sp, #0x36]
- strb r3, [sp, #0x37]
- strb r3, [sp, #0x38]
- str r3, [sp, #0x3c]
- str r1, [sp, #0x40]
- strh r0, [sp, #0x3a]
-_020E5D20:
- rsb r1, r3, #0x7
- ldrsb r2, [r9, r3]
- ldrsb r0, [r9, r1]
- strb r0, [r9, r3]
- add r3, r3, #0x1
- strb r2, [r9, r1]
- cmp r3, #0x4
- blt _020E5D20
- ldrb r0, [sp, #0x69]
- ldrb r1, [sp, #0x68]
- ldr sb, _020E5EE0 ; =0x000007FF
- mov r0, r0, lsl #0x11
- orr r1, r0, r1, lsl #0x19
- add r0, sp, #0x34
- and lr, r9, r1, lsr #0x15
- sub r12, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r12, {r0-r3}
- rsb r0, r9, #0x400
- mov r1, r8
- add r0, lr, r0
- ldmia r12, {r2-r3}
- bl long2str_wide
- cmp r6, #0x61
- moveq r1, #0x70
- movne r1, #0x50
- strh r1, [r0, #-0x2]!
- mov r1, r7, lsl #0x2
- mov lr, r7
- cmp r7, #0x1
- add r8, r1, #0xb
- add r12, sp, #0x68
- blt _020E5E30
- mov r9, #0x30
-_020E5DA8:
- cmp r8, #0x40
- bge _020E5E18
- ldrb r1, [r12, r8, asr #0x3]
- and r2, r8, #0x7
- rsb r3, r2, #0x7
- mov r2, r1, asr r3
- sub r10, r8, #0x4
- bic r1, r8, #0x7
- bic r10, r10, #0x7
- cmp r1, r10
- add r10, r12, r8, asr #0x3
- and r1, r2, #0xff
- beq _020E5DEC
- ldrb r2, [r10, #-0x1]
- mov r2, r2, lsl #0x8
- orr r1, r1, r2, asr r3
- and r1, r1, #0xff
-_020E5DEC:
- and r1, r1, #0xf
- cmp r1, #0xa
- addcc r1, r1, #0x30
- andcc r1, r1, #0xff
- blo _020E5E1C
- cmp r6, #0x61
- addeq r1, r1, #0x57
- andeq r1, r1, #0xff
- addne r1, r1, #0x37
- andne r1, r1, #0xff
- b _020E5E1C
-_020E5E18:
- mov r1, r9
-_020E5E1C:
- sub lr, lr, #0x1
- cmp lr, #0x1
- strh r1, [r0, #-0x2]!
- sub r8, r8, #0x4
- bge _020E5DA8
-_020E5E30:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r1, #0x2e
- strneh r1, [r0, #-0x2]!
- mov r1, #0x31
- strh r1, [r0, #-0x2]
- cmp r6, #0x61
- moveq r1, #0x78
- movne r1, #0x58
- strh r1, [r0, #-0x4]!
- mov r1, #0x30
- strh r1, [r0, #-0x2]!
- ldrsb r1, [sp, #0xc]
- cmp r1, #0x0
- movne r1, #0x2d
- strneh r1, [r0, #-0x2]!
- addne sp, sp, #0x44
- ldmneia sp!, {r3-r10,lr}
- addne sp, sp, #0x10
- bxne lr
- cmp r4, #0x1
- moveq r1, #0x2b
- streqh r1, [r0, #-0x2]!
- addeq sp, sp, #0x44
- ldmeqia sp!, {r3-r10,lr}
- addeq sp, sp, #0x10
- bxeq lr
- cmp r4, #0x2
- moveq r1, #0x20
- streqh r1, [r0, #-0x2]!
- add sp, sp, #0x44
- ldmia sp!, {r3-r10,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E5EB8: .word 0x000001FD
-_020E5EBC: .word UNK_02106DE4
-_020E5EC0: .word UNK_02106DF0
-_020E5EC4: .word UNK_02106DFC
-_020E5EC8: .word UNK_02106E08
-_020E5ECC: .word UNK_02106E10
-_020E5ED0: .word UNK_02106E18
-_020E5ED4: .word UNK_02106E24
-_020E5ED8: .word UNK_02106E30
-_020E5EDC: .word UNK_02106E38
-_020E5EE0: .word 0x000007FF
-
- arm_func_start round_decimal_wide
-round_decimal_wide: ; 0x020E5EE4
- stmdb sp!, {r4,lr}
- cmp r1, #0x0
- bge _020E5F0C
-_020E5EF0:
- mov r1, #0x0
- strh r1, [r0, #0x2]
- mov r1, #0x1
- strb r1, [r0, #0x4]
- mov r1, #0x30
- strb r1, [r0, #0x5]
- ldmia sp!, {r4,pc}
-_020E5F0C:
- ldrb lr, [r0, #0x4]
- cmp r1, lr
- ldmgeia sp!, {r4,pc}
- add r12, r0, #0x5
- add r2, r12, r1
- add r2, r2, #0x1
- ldrsb r3, [r2, #-0x1]!
- sub r3, r3, #0x30
- mov r3, r3, lsl #0x18
- mov r3, r3, asr #0x18
- cmp r3, #0x5
- bne _020E5F6C
- add r12, r12, lr
-_020E5F40:
- sub r12, r12, #0x1
- cmp r12, r2
- bls _020E5F58
- ldrsb r3, [r12, #0x0]
- cmp r3, #0x30
- beq _020E5F40
-_020E5F58:
- cmp r12, r2
- ldreqsb r3, [r2, #-0x1]
- andeq r4, r3, #0x1
- movne r4, #0x1
- b _020E5F74
-_020E5F6C:
- movgt r4, #0x1
- movle r4, #0x0
-_020E5F74:
- cmp r1, #0x0
- beq _020E5FD0
- mov r12, #0x0
- mov lr, #0x1
-_020E5F84:
- ldrsb r3, [r2, #-0x1]!
- sub r3, r3, #0x30
- add r3, r3, r4
- mov r3, r3, lsl #0x18
- mov r3, r3, asr #0x18
- cmp r3, #0x9
- movgt r4, lr
- movle r4, r12
- cmp r4, #0x0
- bne _020E5FB4
- cmp r3, #0x0
- bne _020E5FBC
-_020E5FB4:
- sub r1, r1, #0x1
- b _020E5FC8
-_020E5FBC:
- add r3, r3, #0x30
- strb r3, [r2, #0x0]
- b _020E5FD0
-_020E5FC8:
- cmp r1, #0x0
- bne _020E5F84
-_020E5FD0:
- cmp r4, #0x0
- beq _020E5FF8
- ldrsh r3, [r0, #0x2]
- mov r2, #0x1
- mov r1, #0x31
- add r3, r3, #0x1
- strh r3, [r0, #0x2]
- strb r2, [r0, #0x4]
- strb r1, [r0, #0x5]
- ldmia sp!, {r4,pc}
-_020E5FF8:
- cmp r1, #0x0
- beq _020E5EF0
- strb r1, [r0, #0x4]
- ldmia sp!, {r4,pc}
-
- arm_func_start float2str_wide
-float2str_wide: ; 0x020E6008
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x22c
- mov r10, r0
- add r0, sp, #0x250
- ldr r7, [sp, #0x268]
- ldr r3, _020E6628 ; =0x000001FD
- ldrh r6, [r0, #0x12]
- cmp r7, r3
- ldrb r5, [sp, #0x25f]
- ldrb r4, [sp, #0x25d]
- mov r8, r1
- mov r9, r2
- addgt sp, sp, #0x22c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- mov r12, #0x0
- mov r11, #0x20
- add r0, sp, #0x0
- add r3, sp, #0x4
- mov r1, r10
- mov r2, r8
- strb r12, [sp, #0x0]
- strh r11, [sp, #0x2]
- bl __num2dec_internal2
- ldrb r0, [sp, #0x8]
- add r1, sp, #0x9
- add r0, r1, r0
- b _020E609C
-_020E6084:
- ldrb r2, [sp, #0x8]
- ldrsh r1, [sp, #0x6]
- sub r2, r2, #0x1
- add r1, r1, #0x1
- strb r2, [sp, #0x8]
- strh r1, [sp, #0x6]
-_020E609C:
- ldrb r1, [sp, #0x8]
- cmp r1, #0x1
- bls _020E60B4
- ldrsb r1, [r0, #-0x1]!
- cmp r1, #0x30
- beq _020E6084
-_020E60B4:
- ldrb r0, [sp, #0x9]
- cmp r0, #0x30
- beq _020E60D4
- cmp r0, #0x49
- beq _020E60E0
- cmp r0, #0x4e
- beq _020E6198
- b _020E6244
-_020E60D4:
- mov r0, #0x0
- strh r0, [sp, #0x6]
- b _020E6244
-_020E60E0:
- mov r2, #0x0
- mov r0, r10
- mov r1, r8
- mov r3, r2
- bl _dls
- bhs _020E6140
- cmp r6, #0x80
- sub r4, r9, #0xa
- movcs r0, #0x0
- bhs _020E6118
- ldr r0, _020E662C ; =UNK_02104544
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x200
-_020E6118:
- cmp r0, #0x0
- beq _020E6130
- ldr r1, _020E6630 ; =UNK_02106DF0
- mov r0, r4
- bl wcscpy
- b _020E6184
-_020E6130:
- ldr r1, _020E6634 ; =UNK_02106DFC
- mov r0, r4
- bl wcscpy
- b _020E6184
-_020E6140:
- cmp r6, #0x80
- sub r4, r9, #0x8
- movcs r0, #0x0
- bhs _020E6160
- ldr r0, _020E662C ; =UNK_02104544
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x200
-_020E6160:
- cmp r0, #0x0
- beq _020E6178
- ldr r1, _020E6638 ; =UNK_02106E08
- mov r0, r4
- bl wcscpy
- b _020E6184
-_020E6178:
- ldr r1, _020E663C ; =UNK_02106E10
- mov r0, r4
- bl wcscpy
-_020E6184:
- add sp, sp, #0x22c
- mov r0, r4
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E6198:
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- beq _020E61EC
- cmp r6, #0x80
- sub r4, r9, #0xa
- movcs r0, #0x0
- bhs _020E61C4
- ldr r0, _020E662C ; =UNK_02104544
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x200
-_020E61C4:
- cmp r0, #0x0
- beq _020E61DC
- ldr r1, _020E6640 ; =UNK_02106E18
- mov r0, r4
- bl wcscpy
- b _020E6230
-_020E61DC:
- ldr r1, _020E6644 ; =UNK_02106E24
- mov r0, r4
- bl wcscpy
- b _020E6230
-_020E61EC:
- cmp r6, #0x80
- sub r4, r9, #0x8
- movcs r0, #0x0
- bhs _020E620C
- ldr r0, _020E662C ; =UNK_02104544
- mov r1, r6, lsl #0x1
- ldrh r0, [r0, r1]
- and r0, r0, #0x200
-_020E620C:
- cmp r0, #0x0
- beq _020E6224
- ldr r1, _020E6648 ; =UNK_02106E30
- mov r0, r4
- bl wcscpy
- b _020E6230
-_020E6224:
- ldr r1, _020E664C ; =UNK_02106E38
- mov r0, r4
- bl wcscpy
-_020E6230:
- add sp, sp, #0x22c
- mov r0, r4
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E6244:
- ldrb r1, [sp, #0x8]
- ldrsh r2, [sp, #0x6]
- add r0, sp, #0x200
- sub r1, r1, #0x1
- add r0, r0, #0x2a
- add r1, r2, r1
- sub r8, r0, #0x1
- strh r1, [sp, #0x6]
- mov r0, #0x0
- strb r0, [r8, #0x0]
- cmp r6, #0x65
- bgt _020E62A0
- bge _020E632C
- cmp r6, #0x47
- bgt _020E65EC
- cmp r6, #0x45
- blt _020E65EC
- beq _020E632C
- cmp r6, #0x46
- beq _020E6478
- cmp r6, #0x47
- beq _020E62B8
- b _020E65EC
-_020E62A0:
- cmp r6, #0x66
- bgt _020E62B0
- beq _020E6478
- b _020E65EC
-_020E62B0:
- cmp r6, #0x67
- bne _020E65EC
-_020E62B8:
- ldrb r0, [sp, #0x8]
- cmp r0, r7
- ble _020E62D0
- add r0, sp, #0x4
- mov r1, r7
- bl round_decimal_wide
-_020E62D0:
- ldrsh r2, [sp, #0x6]
- mvn r0, #0x3
- cmp r2, r0
- blt _020E62E8
- cmp r2, r7
- blt _020E6308
-_020E62E8:
- cmp r5, #0x0
- ldreqb r0, [sp, #0x8]
- subne r7, r7, #0x1
- subeq r7, r0, #0x1
- cmp r6, #0x67
- moveq r6, #0x65
- movne r6, #0x45
- b _020E632C
-_020E6308:
- cmp r5, #0x0
- addne r0, r2, #0x1
- subne r7, r7, r0
- bne _020E6478
- ldrb r1, [sp, #0x8]
- add r0, r2, #0x1
- subs r7, r1, r0
- movmi r7, #0x0
- b _020E6478
-_020E632C:
- ldrb r0, [sp, #0x8]
- add r1, r7, #0x1
- cmp r0, r1
- ble _020E6344
- add r0, sp, #0x4
- bl round_decimal_wide
-_020E6344:
- ldrsh lr, [sp, #0x6]
- mov r11, #0x2b
- mov r10, #0x0
- cmp lr, #0x0
- rsblt lr, lr, #0x0
- movlt r11, #0x2d
- ldr r3, _020E6650 ; =0x66666667
- mov r0, #0xa
- b _020E6398
-_020E6368:
- mov r1, lr, lsr #0x1f
- smull r2, r12, r3, lr
- add r12, r1, r12, asr #0x2
- smull r1, r2, r0, r12
- sub r12, lr, r1
- add r1, r12, #0x30
- strb r1, [r8, #-0x1]!
- mov r2, lr
- smull r1, lr, r3, r2
- mov r1, r2, lsr #0x1f
- add lr, r1, lr, asr #0x2
- add r10, r10, #0x1
-_020E6398:
- cmp lr, #0x0
- bne _020E6368
- cmp r10, #0x2
- blt _020E6368
- add r0, sp, #0x2a
- strb r11, [r8, #-0x1]
- strb r6, [r8, #-0x2]!
- sub r1, r0, r8
- ldr r0, _020E6628 ; =0x000001FD
- add r1, r1, r7
- cmp r1, r0
- addgt sp, sp, #0x22c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- ldrb r1, [sp, #0x8]
- add r0, r7, #0x1
- cmp r1, r0
- bge _020E6408
- add r0, r7, #0x2
- sub r0, r0, r1
- subs r1, r0, #0x1
- beq _020E6408
- mov r0, #0x30
-_020E63FC:
- strb r0, [r8, #-0x1]!
- subs r1, r1, #0x1
- bne _020E63FC
-_020E6408:
- ldrb r1, [sp, #0x8]
- add r0, sp, #0x9
- add r2, r0, r1
- subs r1, r1, #0x1
- beq _020E642C
-_020E641C:
- ldrsb r0, [r2, #-0x1]!
- subs r1, r1, #0x1
- strb r0, [r8, #-0x1]!
- bne _020E641C
-_020E642C:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r0, #0x2e
- strneb r0, [r8, #-0x1]!
- ldrb r0, [sp, #0x9]
- strb r0, [r8, #-0x1]!
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r8, #-0x1]!
- bne _020E65EC
- cmp r4, #0x1
- moveq r0, #0x2b
- streqb r0, [r8, #-0x1]!
- beq _020E65EC
- cmp r4, #0x2
- moveq r0, #0x20
- streqb r0, [r8, #-0x1]!
- b _020E65EC
-_020E6478:
- ldrsh r3, [sp, #0x6]
- ldrb r2, [sp, #0x8]
- sub r0, r2, r3
- subs r1, r0, #0x1
- movmi r1, #0x0
- cmp r1, r7
- ble _020E64B8
- sub r1, r1, r7
- add r0, sp, #0x4
- sub r1, r2, r1
- bl round_decimal_wide
- ldrsh r3, [sp, #0x6]
- ldrb r2, [sp, #0x8]
- sub r0, r2, r3
- subs r1, r0, #0x1
- movmi r1, #0x0
-_020E64B8:
- adds r0, r3, #0x1
- movmi r0, #0x0
- ldr r3, _020E6628 ; =0x000001FD
- add r6, r0, r1
- cmp r6, r3
- addgt sp, sp, #0x22c
- movgt r0, #0x0
- ldmgtia sp!, {r4-r11,lr}
- addgt sp, sp, #0x10
- bxgt lr
- add r3, sp, #0x9
- sub r6, r7, r1
- cmp r6, #0x0
- add r2, r3, r2
- mov r10, #0x0
- ble _020E650C
- mov r3, #0x30
-_020E64FC:
- add r10, r10, #0x1
- cmp r10, r6
- strb r3, [r8, #-0x1]!
- blt _020E64FC
-_020E650C:
- mov r6, #0x0
- b _020E6520
-_020E6514:
- ldrsb r3, [r2, #-0x1]!
- add r6, r6, #0x1
- strb r3, [r8, #-0x1]!
-_020E6520:
- cmp r6, r1
- ldrltb r3, [sp, #0x8]
- cmplt r6, r3
- blt _020E6514
- cmp r6, r1
- bge _020E654C
- mov r3, #0x30
-_020E653C:
- add r6, r6, #0x1
- cmp r6, r1
- strb r3, [r8, #-0x1]!
- blt _020E653C
-_020E654C:
- cmp r7, #0x0
- cmpeq r5, #0x0
- movne r1, #0x2e
- strneb r1, [r8, #-0x1]!
- cmp r0, #0x0
- beq _020E65B4
- ldrb r1, [sp, #0x8]
- mov r5, #0x0
- sub r1, r0, r1
- cmp r1, #0x0
- ble _020E6594
- mov r3, #0x30
-_020E657C:
- strb r3, [r8, #-0x1]!
- ldrb r1, [sp, #0x8]
- add r5, r5, #0x1
- sub r1, r0, r1
- cmp r5, r1
- blt _020E657C
-_020E6594:
- cmp r5, r0
- bge _020E65BC
-_020E659C:
- ldrsb r1, [r2, #-0x1]!
- add r5, r5, #0x1
- cmp r5, r0
- strb r1, [r8, #-0x1]!
- blt _020E659C
- b _020E65BC
-_020E65B4:
- mov r0, #0x30
- strb r0, [r8, #-0x1]!
-_020E65BC:
- ldrsb r0, [sp, #0x4]
- cmp r0, #0x0
- movne r0, #0x2d
- strneb r0, [r8, #-0x1]!
- bne _020E65EC
- cmp r4, #0x1
- moveq r0, #0x2b
- streqb r0, [r8, #-0x1]!
- beq _020E65EC
- cmp r4, #0x2
- moveq r0, #0x20
- streqb r0, [r8, #-0x1]!
-_020E65EC:
- mov r0, r8
- bl strlen
- sub r1, r9, r0, lsl #0x1
- mov r0, r8
- sub r4, r1, #0x2
- bl strlen
- mov r2, r0
- mov r0, r4
- mov r1, r8
- bl mbstowcs
- mov r0, r4
- add sp, sp, #0x22c
- ldmia sp!, {r4-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E6628: .word 0x000001FD
-_020E662C: .word UNK_02104544
-_020E6630: .word UNK_02106DF0
-_020E6634: .word UNK_02106DFC
-_020E6638: .word UNK_02106E08
-_020E663C: .word UNK_02106E10
-_020E6640: .word UNK_02106E18
-_020E6644: .word UNK_02106E24
-_020E6648: .word UNK_02106E30
-_020E664C: .word UNK_02106E38
-_020E6650: .word 0x66666667
-
- arm_func_start __wpformatter
-__wpformatter:
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x430
- mov r3, #0x20
- mov r11, r2
- strh r3, [sp, #0x1c]
- ldrh r2, [r11, #0x0]
- mov r9, r0
- mov r8, r1
- cmp r2, #0x0
- mov r4, #0x0
- beq _020E6F24
-_020E6684:
- mov r0, r11
- mov r1, #0x25
- bl wcschr
- str r0, [sp, #0xc]
- cmp r0, #0x0
- bne _020E66D8
- mov r0, r11
- bl wcslen
- movs r2, r0
- add r4, r4, r2
- beq _020E6F24
- mov r0, r8
- mov r1, r11
- blx r9
- cmp r0, #0x0
- bne _020E6F24
- add sp, sp, #0x430
- mvn r0, #0x0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E66D8:
- sub r0, r0, r11
- add r0, r0, r0, lsr #0x1f
- movs r2, r0, asr #0x1
- add r4, r4, r2
- beq _020E6710
- mov r0, r8
- mov r1, r11
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E6710:
- add r1, sp, #0x400
- ldr r0, [sp, #0xc]
- add r1, r1, #0x64
- add r2, sp, #0x20
- bl parse_format_wprintf
- ldrh r1, [sp, #0x26]
- mov r11, r0
- cmp r1, #0x61
- bgt _020E6780
- bge _020E6AEC
- cmp r1, #0x47
- bgt _020E6774
- subs r0, r1, #0x41
- addpl pc, pc, r0, lsl #0x2
- b _020E6768
- b _020E6AEC
- b _020E6D90
- b _020E6D90
- b _020E6D90
- b _020E6A7C
- b _020E6A7C
- b _020E6A7C
-_020E6768:
- cmp r1, #0x25
- beq _020E6D7C
- b _020E6D90
-_020E6774:
- cmp r1, #0x58
- beq _020E6940
- b _020E6D90
-_020E6780:
- cmp r1, #0x75
- bgt _020E67E8
- subs r0, r1, #0x64
- addpl pc, pc, r0, lsl #0x2
- b _020E67DC
- b _020E6804
- b _020E6A7C
- b _020E6A7C
- b _020E6A7C
- b _020E6D90
- b _020E6804
- b _020E6D90
- b _020E6D90
- b _020E6D90
- b _020E6D90
- b _020E6C98
- b _020E6940
- b _020E6D90
- b _020E6D90
- b _020E6D90
- b _020E6B5C
- b _020E6D90
- b _020E6940
-_020E67DC:
- cmp r1, #0x63
- beq _020E6D24
- b _020E6D90
-_020E67E8:
- cmp r1, #0x78
- bgt _020E67F8
- beq _020E6940
- b _020E6D90
-_020E67F8:
- ldr r0, _020E6F38 ; =0x0000FFFF
- cmp r1, r0
- b _020E6D90
-_020E6804:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x3
- bne _020E6824
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E68BC
-_020E6824:
- cmp r0, #0x4
- bne _020E684C
- ldr r1, [sp, #0x464]
- add r2, r1, #0x8
- str r2, [sp, #0x464]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E68BC
-_020E684C:
- cmp r0, #0x6
- bne _020E6874
- ldr r1, [sp, #0x464]
- add r2, r1, #0x8
- str r2, [sp, #0x464]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E68BC
-_020E6874:
- cmp r0, #0x7
- bne _020E6890
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E68BC
-_020E6890:
- cmp r0, #0x8
- bne _020E68AC
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E68BC
-_020E68AC:
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
-_020E68BC:
- cmp r0, #0x2
- moveq r1, r10, lsl #0x10
- moveq r10, r1, asr #0x10
- cmp r0, #0x4
- cmpne r0, #0x6
- add r0, sp, #0x20
- bne _020E6904
- sub r5, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- ldr r3, [r5, #0x0]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, sp, #0x430
- bl longlong2str_wide
- movs r6, r0
- beq _020E6D90
- b _020E6928
-_020E6904:
- sub r5, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- add r1, sp, #0x430
- mov r0, r10
- ldmia r5, {r2-r3}
- bl long2str_wide
- movs r6, r0
- beq _020E6D90
-_020E6928:
- add r0, sp, #0x400
- add r0, r0, #0x2e
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6940:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x3
- bne _020E6960
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E69F8
-_020E6960:
- cmp r0, #0x4
- bne _020E6988
- ldr r1, [sp, #0x464]
- add r2, r1, #0x8
- str r2, [sp, #0x464]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E69F8
-_020E6988:
- cmp r0, #0x6
- bne _020E69B0
- ldr r1, [sp, #0x464]
- add r2, r1, #0x8
- str r2, [sp, #0x464]
- ldr r1, [r2, #-0x8]
- str r1, [sp, #0x10]
- ldr r1, [r2, #-0x4]
- str r1, [sp, #0x14]
- b _020E69F8
-_020E69B0:
- cmp r0, #0x7
- bne _020E69CC
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E69F8
-_020E69CC:
- cmp r0, #0x8
- bne _020E69E8
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
- b _020E69F8
-_020E69E8:
- ldr r1, [sp, #0x464]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r10, [r1, #-0x4]
-_020E69F8:
- cmp r0, #0x2
- moveq r1, r10, lsl #0x10
- moveq r10, r1, lsr #0x10
- cmp r0, #0x4
- cmpne r0, #0x6
- add r0, sp, #0x20
- bne _020E6A40
- sub r5, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- ldr r3, [r5, #0x0]
- ldr r0, [sp, #0x10]
- ldr r1, [sp, #0x14]
- add r2, sp, #0x430
- bl longlong2str_wide
- movs r6, r0
- beq _020E6D90
- b _020E6A64
-_020E6A40:
- sub r5, sp, #0x8
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- add r1, sp, #0x430
- mov r0, r10
- ldmia r5, {r2-r3}
- bl long2str_wide
- movs r6, r0
- beq _020E6D90
-_020E6A64:
- add r0, sp, #0x400
- add r0, r0, #0x2e
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6A7C:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x9
- ldrne r0, [sp, #0x464]
- addne r0, r0, #0x8
- strne r0, [sp, #0x464]
- bne _020E6AA0
- ldr r0, [sp, #0x464]
- add r0, r0, #0x8
- str r0, [sp, #0x464]
-_020E6AA0:
- ldr r7, [r0, #-0x8]
- ldr r6, [r0, #-0x4]
- add r0, sp, #0x20
- sub r5, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- ldr r3, [r5, #0x0]
- mov r0, r7
- mov r1, r6
- add r2, sp, #0x430
- bl float2str_wide
- movs r6, r0
- beq _020E6D90
- add r0, sp, #0x400
- add r0, r0, #0x2e
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6AEC:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x9
- ldrne r0, [sp, #0x464]
- addne r0, r0, #0x8
- strne r0, [sp, #0x464]
- bne _020E6B10
- ldr r0, [sp, #0x464]
- add r0, r0, #0x8
- str r0, [sp, #0x464]
-_020E6B10:
- ldr r7, [r0, #-0x8]
- ldr r6, [r0, #-0x4]
- add r0, sp, #0x20
- sub r5, sp, #0x4
- ldmia r0, {r0-r3}
- stmia r5, {r0-r3}
- ldr r3, [r5, #0x0]
- mov r0, r7
- mov r1, r6
- add r2, sp, #0x430
- bl double2hex_wide
- movs r6, r0
- beq _020E6D90
- add r0, sp, #0x400
- add r0, r0, #0x2e
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6B5C:
- ldrb r0, [sp, #0x24]
- cmp r0, #0x5
- bne _020E6BF8
- ldr r0, [sp, #0x464]
- add r0, r0, #0x4
- str r0, [sp, #0x464]
- ldr r6, [r0, #-0x4]
- ldrb r0, [sp, #0x23]
- cmp r6, #0x0
- ldreq r6, _020E6F3C ; =UNK_02106E40
- cmp r0, #0x0
- beq _020E6BB0
- ldrh r1, [r6], #0x2
- ldrb r0, [sp, #0x22]
- and r7, r1, #0xff
- cmp r0, #0x0
- beq _020E6DDC
- ldr r0, [sp, #0x2c]
- cmp r7, r0
- movgt r7, r0
- b _020E6DDC
-_020E6BB0:
- ldrb r0, [sp, #0x22]
- cmp r0, #0x0
- beq _020E6BE8
- ldr r7, [sp, #0x2c]
- mov r0, r6
- mov r2, r7
- mov r1, #0x0
- bl wmemchr
- cmp r0, #0x0
- beq _020E6DDC
- sub r0, r0, r6
- add r0, r0, r0, lsr #0x1f
- mov r7, r0, asr #0x1
- b _020E6DDC
-_020E6BE8:
- mov r0, r6
- bl wcslen
- mov r7, r0
- b _020E6DDC
-_020E6BF8:
- ldr r0, [sp, #0x464]
- add r0, r0, #0x4
- str r0, [sp, #0x464]
- ldr r5, [r0, #-0x4]
- ldrb r0, [sp, #0x23]
- cmp r5, #0x0
- ldreq r5, _020E6F40 ; =UNK_02106E44
- cmp r0, #0x0
- beq _020E6C40
- ldrh r1, [r6, #0x0]
- ldrb r0, [sp, #0x22]
- and r6, r1, #0xff
- cmp r0, #0x0
- beq _020E6C78
- ldr r0, [sp, #0x2c]
- cmp r6, r0
- movgt r6, r0
- b _020E6C78
-_020E6C40:
- ldrb r0, [sp, #0x22]
- cmp r0, #0x0
- beq _020E6C6C
- ldr r6, [sp, #0x2c]
- mov r0, r5
- mov r2, r6
- mov r1, #0x0
- bl memchr
- cmp r0, #0x0
- subne r6, r0, r5
- b _020E6C78
-_020E6C6C:
- mov r0, r5
- bl strlen
- mov r6, r0
-_020E6C78:
- add r0, sp, #0x30
- mov r1, r5
- mov r2, r6
- bl mbstowcs
- movs r7, r0
- bmi _020E6D90
- add r6, sp, #0x30
- b _020E6DDC
-_020E6C98:
- ldr r1, [sp, #0x464]
- ldrb r0, [sp, #0x24]
- add r1, r1, #0x4
- str r1, [sp, #0x464]
- ldr r6, [r1, #-0x4]
- cmp r0, #0x8
- addls pc, pc, r0, lsl #0x2
- b _020E6F18
-_020E6CB8:
- b _020E6CDC
-_020E6CBC:
- b _020E6F18
-_020E6CC0:
- b _020E6CE4
-_020E6CC4:
- b _020E6CEC
-_020E6CC8:
- b _020E6D14
-_020E6CCC:
- b _020E6F18
-_020E6CD0:
- b _020E6CF4
-_020E6CD4:
- b _020E6D04
-_020E6CD8:
- b _020E6D0C
-_020E6CDC:
- str r4, [r6, #0x0]
- b _020E6F18
-_020E6CE4:
- strh r4, [r6, #0x0]
- b _020E6F18
-_020E6CEC:
- str r4, [r6, #0x0]
- b _020E6F18
-_020E6CF4:
- str r4, [r6, #0x0]
- mov r0, r4, asr #0x1f
- str r0, [r6, #0x4]
- b _020E6F18
-_020E6D04:
- str r4, [r6, #0x0]
- b _020E6F18
-_020E6D0C:
- str r4, [r6, #0x0]
- b _020E6F18
-_020E6D14:
- str r4, [r6, #0x0]
- mov r0, r4, asr #0x1f
- str r0, [r6, #0x4]
- b _020E6F18
-_020E6D24:
- ldrb r0, [sp, #0x24]
- add r6, sp, #0x30
- cmp r0, #0x5
- bne _020E6D50
- ldr r0, [sp, #0x464]
- mov r7, #0x1
- add r0, r0, #0x4
- str r0, [sp, #0x464]
- ldr r0, [r0, #-0x4]
- strh r0, [r6, #0x0]
- b _020E6DDC
-_020E6D50:
- ldr r0, [sp, #0x464]
- add r1, sp, #0x18
- add r0, r0, #0x4
- str r0, [sp, #0x464]
- ldr r3, [r0, #-0x4]
- mov r0, r6
- mov r2, #0x1
- strb r3, [sp, #0x18]
- bl mbtowc
- mov r7, r0
- b _020E6DDC
-_020E6D7C:
- mov r0, #0x25
- strh r0, [sp, #0x30]
- add r6, sp, #0x30
- mov r7, #0x1
- b _020E6DDC
-_020E6D90:
- ldr r0, [sp, #0xc]
- bl wcslen
- movs r5, r0
- beq _020E6DC8
- ldr r1, [sp, #0xc]
- mov r0, r8
- mov r2, r5
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E6DC8:
- add sp, sp, #0x430
- add r0, r4, r5
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E6DDC:
- ldrb r0, [sp, #0x20]
- mov r5, r7
- cmp r0, #0x0
- beq _020E6E8C
- cmp r0, #0x2
- moveq r1, #0x30
- movne r1, #0x20
- strh r1, [sp, #0x1c]
- ldrh r0, [r6, #0x0]
- cmp r0, #0x2b
- cmpne r0, #0x2d
- cmpne r0, #0x20
- bne _020E6E48
- cmp r1, #0x30
- bne _020E6E48
- mov r0, r8
- mov r1, r6
- mov r2, #0x1
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- add r6, r6, #0x2
- sub r7, r7, #0x1
-_020E6E48:
- ldr r0, [sp, #0x28]
- cmp r5, r0
- bge _020E6E8C
-_020E6E54:
- mov r0, r8
- add r1, sp, #0x1c
- mov r2, #0x1
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x28]
- add r5, r5, #0x1
- cmp r5, r0
- blt _020E6E54
-_020E6E8C:
- cmp r7, #0x0
- beq _020E6EBC
- mov r0, r8
- mov r1, r6
- mov r2, r7
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
-_020E6EBC:
- ldrb r0, [sp, #0x20]
- cmp r0, #0x0
- bne _020E6F14
- ldr r0, [sp, #0x28]
- cmp r5, r0
- bge _020E6F14
- mov r7, #0x20
-_020E6ED8:
- mov r0, r8
- add r1, sp, #0x1a
- mov r2, #0x1
- strh r7, [sp, #0x1a]
- blx r9
- cmp r0, #0x0
- addeq sp, sp, #0x430
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x28]
- add r5, r5, #0x1
- cmp r5, r0
- blt _020E6ED8
-_020E6F14:
- add r4, r4, r5
-_020E6F18:
- ldrh r0, [r11, #0x0]
- cmp r0, #0x0
- bne _020E6684
-_020E6F24:
- mov r0, r4
- add sp, sp, #0x430
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E6F38: .word 0x0000FFFF
-_020E6F3C: .word UNK_02106E40
-_020E6F40: .word UNK_02106E44
-
- arm_func_start __wStringWrite
-__wStringWrite: ; 0x020E6F44
- stmdb sp!, {r3-r5,lr}
- mov r4, r0
- ldr r3, [r4, #0x8]
- mov r5, r2
- ldr r2, [r4, #0x4]
- add r0, r3, r5
- cmp r0, r2
- ldr r0, [r4, #0x0]
- subhi r5, r2, r3
- mov r2, r5
- add r0, r0, r3, lsl #0x1
- bl wmemcpy
- ldr r1, [r4, #0x8]
- add r1, r1, r5
- str r1, [r4, #0x8]
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start swprintf
-swprintf: ; 0x020E6F84
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3,lr}
- add r3, sp, #0x10
- bic r3, r3, #0x3
- ldr r2, [sp, #0x10]
- add r3, r3, #0x4
- bl vswprintf
- ldmia sp!, {r3,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start vswprintf
-vswprintf: ; 0x020E6FAC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r5, r0
- mov r4, r1
- mov r12, #0x0
- ldr r0, _020E7018 ; =__wStringWrite
- add r1, sp, #0x0
- str r5, [sp, #0x0]
- str r4, [sp, #0x4]
- str r12, [sp, #0x8]
- bl __wpformatter
- cmp r0, #0x0
- addlt sp, sp, #0xc
- ldmltia sp!, {r4-r5,pc}
- cmp r0, r4
- bhs _020E7000
- mov r1, r0, lsl #0x1
- mov r2, #0x0
- add sp, sp, #0xc
- strh r2, [r5, r1]
- ldmia sp!, {r4-r5,pc}
-_020E7000:
- mov r1, #0x0
- add r0, r5, r4, lsl #0x1
- strh r1, [r0, #-0x2]
- sub r0, r1, #0x1
- add sp, sp, #0xc
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020E7018: .word __wStringWrite
-
- arm_func_start wcslen
-wcslen: ; 0x020E701C
- mvn r2, #0x0
-_020E7020:
- ldrh r1, [r0], #0x2
- add r2, r2, #0x1
- cmp r1, #0x0
- bne _020E7020
- mov r0, r2
- bx lr
-
- arm_func_start wcscpy
-wcscpy: ; 0x020E7038
- mov r3, r0
-_020E703C:
- ldrh r2, [r1], #0x2
- mov r12, r3
- strh r2, [r3], #0x2
- ldrh r2, [r12, #0x0]
- cmp r2, #0x0
- bne _020E703C
- bx lr
-
- arm_func_start wcschr
-wcschr: ; 0x020E7058
- ldrh r2, [r0], #0x2
- cmp r2, #0x0
- beq _020E707C
-_020E7064:
- cmp r2, r1
- subeq r0, r0, #0x2
- bxeq lr
- ldrh r2, [r0], #0x2
- cmp r2, #0x0
- bne _020E7064
-_020E707C:
- cmp r1, #0x0
- movne r0, #0x0
- subeq r0, r0, #0x2
- bx lr
-
- arm_func_start __ieee754_pow
-__ieee754_pow: ; 0x020E708C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x80
- ldr r8, [sp, #0xb4]
- ldr r6, [sp, #0xac]
- ldr r0, [sp, #0xb0]
- bic r9, r8, #0x80000000
- orrs r1, r9, r0
- ldr r7, [sp, #0xa8]
- bic r4, r6, #0x80000000
- addeq sp, sp, #0x80
- moveq r0, #0x0
- ldreq r1, _020E7638 ; =0x3FF00000
- ldmeqia sp!, {r3-r11,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r1, _020E763C ; =0x7FF00000
- cmp r4, r1
- bgt _020E70FC
- bne _020E70E4
- cmp r7, #0x0
- bne _020E70FC
-_020E70E4:
- ldr r1, _020E763C ; =0x7FF00000
- cmp r9, r1
- bgt _020E70FC
- bne _020E7120
- cmp r0, #0x0
- beq _020E7120
-_020E70FC:
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- ldr r2, [sp, #0xb0]
- ldr r3, [sp, #0xb4]
- bl _dadd
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7120:
- cmp r6, #0x0
- mov r5, #0x0
- bge _020E7188
- ldr r1, _020E7640 ; =0x43400000
- cmp r9, r1
- movge r5, #0x2
- bge _020E7188
- sub r1, r1, #0x3500000
- cmp r9, r1
- blt _020E7188
- ldr r1, _020E7644 ; =0xFFFFFC01
- add r1, r1, r9, asr #0x14
- cmp r1, #0x14
- ble _020E7170
- rsb r2, r1, #0x34
- mov r1, r0, lsr r2
- cmp r0, r1, lsl r2
- andeq r1, r1, #0x1
- rsbeq r5, r1, #0x2
- b _020E7188
-_020E7170:
- cmp r0, #0x0
- rsbeq r2, r1, #0x14
- moveq r1, r9, asr r2
- cmpeq r9, r1, lsl r2
- andeq r1, r1, #0x1
- rsbeq r5, r1, #0x2
-_020E7188:
- cmp r0, #0x0
- bne _020E72E4
- ldr r1, _020E763C ; =0x7FF00000
- cmp r9, r1
- bne _020E723C
- add r0, r4, #0x100000
- add r0, r0, #0xc0000000
- orrs r0, r0, r7
- bne _020E71D0
- ldr r0, [sp, #0xb0]
- ldr r1, [sp, #0xb4]
- mov r2, r0
- mov r3, r1
- bl _dsub
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E71D0:
- sub r0, r1, #0x40000000
- cmp r4, r0
- blt _020E7200
- cmp r8, #0x0
- ldrge r0, [sp, #0xb0]
- ldrge r1, [sp, #0xb4]
- movlt r0, #0x0
- add sp, sp, #0x80
- movlt r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7200:
- cmp r8, #0x0
- mov r0, #0x0
- addge sp, sp, #0x80
- movge r1, r0
- ldmgeia sp!, {r3-r11,lr}
- addge sp, sp, #0x10
- bxge lr
- ldr r2, [sp, #0xb0]
- ldr r3, [sp, #0xb4]
- mov r1, r0
- bl _dsub
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E723C:
- sub r0, r1, #0x40000000
- cmp r9, r0
- bne _020E7288
- cmp r8, #0x0
- ldrge r0, [sp, #0xa8]
- ldrge r1, [sp, #0xac]
- addge sp, sp, #0x80
- ldmgeia sp!, {r3-r11,lr}
- addge sp, sp, #0x10
- bxge lr
- ldr r2, [sp, #0xa8]
- ldr r3, [sp, #0xac]
- sub r1, r1, #0x40000000
- mov r0, #0x0
- bl _ddiv
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7288:
- cmp r8, #0x40000000
- bne _020E72B4
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- mov r2, r0
- mov r3, r1
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E72B4:
- ldr r0, _020E7648 ; =0x3FE00000
- cmp r8, r0
- bne _020E72E4
- cmp r6, #0x0
- blt _020E72E4
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- bl _dsqrt
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E72E4:
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- bl fabs
- str r0, [sp, #0x70]
- str r1, [sp, #0x74]
- cmp r7, #0x0
- bne _020E73E8
- ldr r0, _020E763C ; =0x7FF00000
- cmp r4, r0
- cmpne r4, #0x0
- subne r0, r0, #0x40000000
- cmpne r4, r0
- bne _020E73E8
- ldr r2, [sp, #0x70]
- ldr r3, [sp, #0x74]
- str r2, [sp, #0x78]
- str r3, [sp, #0x7c]
- cmp r8, #0x0
- bge _020E7344
- ldr r1, _020E7638 ; =0x3FF00000
- mov r0, #0x0
- bl _ddiv
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
-_020E7344:
- cmp r6, #0x0
- bge _020E73D0
- add r0, r4, #0x100000
- add r0, r0, #0xc0000000
- orrs r0, r0, r5
- bne _020E73AC
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- mov r2, r0
- mov r3, r1
- bl _dsub
- mov r4, r0
- mov r5, r1
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- mov r2, r0
- mov r3, r1
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r5
- bl _ddiv
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
- b _020E73D0
-_020E73AC:
- cmp r5, #0x1
- bne _020E73D0
- mov r0, #0x0
- ldr r2, [sp, #0x78]
- ldr r3, [sp, #0x7c]
- mov r1, r0
- bl _dsub
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
-_020E73D0:
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E73E8:
- mov r0, r6, asr #0x1f
- add r7, r0, #0x1
- orrs r0, r7, r5
- bne _020E7420
- ldr r0, _020E764C ; =UNK_02106B78
- ldr r1, _020E7650 ; =UNK_021D74A8
- ldr r0, [r0, #0x0]
- mov r2, #0x21
- str r2, [r1, #0x0]
- bl _f2d
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7420:
- ldr r3, _020E7654 ; =0x41E00000
- cmp r9, r3
- ble _020E7724
- add r0, r3, #0x2100000
- cmp r9, r0
- ble _020E7490
- ldr r1, _020E7658 ; =0x3FEFFFFF
- cmp r4, r1
- bgt _020E7464
- cmp r8, #0x0
- mov r0, #0x0
- addlt r1, r1, #0x40000001
- add sp, sp, #0x80
- movge r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7464:
- add r0, r1, #0x1
- cmp r4, r0
- blt _020E7490
- cmp r8, #0x0
- mov r0, #0x0
- addgt r1, r1, #0x40000001
- add sp, sp, #0x80
- movle r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7490:
- ldr r2, _020E7658 ; =0x3FEFFFFF
- cmp r4, r2
- bge _020E74BC
- cmp r8, #0x0
- mov r0, #0x0
- addlt r1, r2, #0x40000001
- add sp, sp, #0x80
- movge r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E74BC:
- add r0, r2, #0x1
- cmp r4, r0
- ble _020E74E8
- cmp r8, #0x0
- mov r0, #0x0
- addgt r1, r2, #0x40000001
- add sp, sp, #0x80
- movle r1, r0
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E74E8:
- ldr r0, [sp, #0xa8]
- ldr r1, [sp, #0xac]
- add r3, r2, #0x1
- mov r2, #0x0
- bl _dsub
- mov r2, r0
- mov r3, r1
- str r0, [sp, #0x50]
- str r1, [sp, #0x54]
- bl _dmul
- mov r6, r1
- mov r4, r0
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- ldr r1, _020E765C ; =0x3FD00000
- mov r0, #0x0
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7660 ; =0x55555555
- sub r1, r0, #0x15800000
- bl _dsub
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, #0x0
- ldr r1, _020E7648 ; =0x3FE00000
- bl _dsub
- mov r2, r0
- mov r0, r4
- mov r3, r1
- mov r1, r6
- bl _dmul
- mov r6, r0
- mov r8, r1
- mov r0, #0x60000000
- ldr r1, _020E7664 ; =0x3FF71547
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- bl _dmul
- mov r4, r0
- mov r9, r1
- ldr r0, _020E7668 ; =0xF85DDF44
- ldr r1, _020E766C ; =0x3E54AE0B
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- bl _dmul
- mov r11, r0
- mov r10, r1
- ldr r0, _020E7670 ; =0x652B82FE
- ldr r1, _020E7664 ; =0x3FF71547
- mov r2, r6
- mov r3, r8
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r11
- mov r1, r10
- bl _dsub
- mov r6, r0
- mov r8, r1
- mov r0, r4
- mov r1, r9
- mov r2, r6
- mov r3, r8
- bl _dadd
- mov r2, r4
- mov r3, r9
- str r1, [sp, #0x5c]
- mov r0, #0x0
- str r0, [sp, #0x58]
- bl _dsub
- mov r2, r0
- mov r0, r6
- mov r3, r1
- mov r1, r8
- bl _dsub
- mov r4, r0
- mov r8, r1
- b _020E7C80
- .balign 4
-_020E7638: .word 0x3FF00000
-_020E763C: .word 0x7FF00000
-_020E7640: .word 0x43400000
-_020E7644: .word 0xFFFFFC01
-_020E7648: .word 0x3FE00000
-_020E764C: .word UNK_02106B78
-_020E7650: .word UNK_021D74A8
-_020E7654: .word 0x41E00000
-_020E7658: .word 0x3FEFFFFF
-_020E765C: .word 0x3FD00000
-_020E7660: .word 0x55555555
-_020E7664: .word 0x3FF71547
-_020E7668: .word 0xF85DDF44
-_020E766C: .word 0x3E54AE0B
-_020E7670: .word 0x652B82FE
-_020E7674: .word 0x0003988E
-_020E7678: .word 0x000BB67A
-_020E767C: .word UNK_02104754
-_020E7680: .word 0x4A454EEF
-_020E7684: .word 0x3FCA7E28
-_020E7688: .word 0x93C9DB65
-_020E768C: .word 0x3FCD864A
-_020E7690: .word 0xA91D4101
-_020E7694: .word 0x3FD17460
-_020E7698: .word 0x518F264D
-_020E769C: .word 0x3FD55555
-_020E76A0: .word 0xDB6FABFF
-_020E76A4: .word 0x3FDB6DB6
-_020E76A8: .word 0x33333303
-_020E76AC: .word 0x3FE33333
-_020E76B0: .word 0x40080000
-_020E76B4: .word 0x3FEEC709
-_020E76B8: .word 0x145B01F5
-_020E76BC: .word 0xBE3E2FE0
-_020E76C0: .word 0xDC3A03FD
-_020E76C4: .word UNK_02104764
-_020E76C8: .word UNK_02104744
-_020E76CC: .word 0x40900000
-_020E76D0: .word 0x8800759C
-_020E76D4: .word 0x7E37E43C
-_020E76D8: .word 0x3C971547
-_020E76DC: .word 0x3F6F3400
-_020E76E0: .word 0xC2F8F359
-_020E76E4: .word 0x01A56E1F
-_020E76E8: .word 0x3FE62E43
-_020E76EC: .word 0xFEFA39EF
-_020E76F0: .word 0x3FE62E42
-_020E76F4: .word 0x0CA86C39
-_020E76F8: .word 0xBE205C61
-_020E76FC: .word 0x72BEA4D0
-_020E7700: .word 0x3E663769
-_020E7704: .word 0xC5D26BF1
-_020E7708: .word 0xBEBBBD41
-_020E770C: .word 0xAF25DE2C
-_020E7710: .word 0x3F11566A
-_020E7714: .word 0x16BEBD93
-_020E7718: .word 0xBF66C16C
-_020E771C: .word 0x5555553E
-_020E7720: .word 0x3FC55555
-_020E7724:
- cmp r4, #0x100000
- mov r6, #0x0
- bge _020E7754
- ldr r0, [sp, #0x70]
- ldr r1, [sp, #0x74]
- mov r2, r6
- add r3, r3, #0x1600000
- bl _dmul
- mov r4, r1
- str r0, [sp, #0x70]
- str r4, [sp, #0x74]
- sub r6, r6, #0x35
-_020E7754:
- ldr r0, _020E7644 ; =0xFFFFFC01
- ldr r1, _020E7674 ; =0x0003988E
- and r2, r4, r0, lsr #0xc
- add r0, r0, r4, asr #0x14
- orr r9, r2, #0xff00000
- cmp r2, r1
- add r6, r6, r0
- orr r9, r9, #0x30000000
- movle r8, #0x0
- ble _020E7794
- ldr r0, _020E7678 ; =0x000BB67A
- cmp r2, r0
- movlt r8, #0x1
- addge r6, r6, #0x1
- subge r9, r9, #0x100000
- movge r8, #0x0
-_020E7794:
- ldr r2, _020E767C ; =UNK_02104754
- ldr r0, [sp, #0x70]
- add r1, r2, r8, lsl #0x3
- ldr r3, [r1, #0x4]
- ldr r2, [r2, r8, lsl #0x3]
- mov r1, r9
- str r9, [sp, #0x74]
- bl _dsub
- ldr r2, _020E767C ; =UNK_02104754
- mov r10, r0
- add r3, r2, r8, lsl #0x3
- mov r4, r1
- ldr r0, [sp, #0x70]
- ldr r2, [r2, r8, lsl #0x3]
- ldr r3, [r3, #0x4]
- mov r1, r9
- bl _dadd
- mov r3, r1
- mov r2, r0
- ldr r1, _020E7638 ; =0x3FF00000
- mov r0, #0x0
- bl _ddiv
- str r1, [sp, #0x24]
- mov r11, r0
- ldr r3, [sp, #0x24]
- mov r0, r10
- mov r1, r4
- mov r2, r11
- bl _dmul
- mov r2, r9, asr #0x1
- orr r2, r2, #0x20000000
- mov r9, r1
- add r2, r2, #0x80000
- add r1, r2, r8, lsl #0x12
- ldr r2, _020E767C ; =UNK_02104754
- str r0, [sp, #0x28]
- add r3, r2, r8, lsl #0x3
- mov r0, #0x0
- ldr r2, [r2, r8, lsl #0x3]
- ldr r3, [r3, #0x4]
- str r9, [sp, #0x4c]
- str r1, [sp, #0x44]
- str r0, [sp, #0x48]
- str r0, [sp, #0x40]
- bl _dsub
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x70]
- ldr r1, [sp, #0x74]
- bl _dsub
- str r0, [sp, #0x2c]
- str r1, [sp, #0x1c]
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x40]
- ldr r3, [sp, #0x44]
- mov r1, r9
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r10
- mov r1, r4
- bl _dsub
- mov r10, r0
- mov r4, r1
- ldr r2, [sp, #0x2c]
- ldr r3, [sp, #0x1c]
- ldr r0, [sp, #0x48]
- mov r1, r9
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r10
- mov r1, r4
- bl _dsub
- mov r3, r1
- mov r2, r0
- ldr r1, [sp, #0x24]
- mov r0, r11
- bl _dmul
- str r0, [sp, #0x30]
- ldr r0, [sp, #0x28]
- str r1, [sp, #0x14]
- mov r1, r9
- mov r2, r0
- mov r3, r9
- bl _dmul
- mov r4, r0
- mov r10, r1
- mov r2, r4
- mov r3, r10
- bl _dmul
- str r0, [sp, #0x34]
- mov r11, r1
- ldr r0, _020E7680 ; =0x4A454EEF
- ldr r1, _020E7684 ; =0x3FCA7E28
- mov r2, r4
- mov r3, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7688 ; =0x93C9DB65
- ldr r1, _020E768C ; =0x3FCD864A
- bl _dadd
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7690 ; =0xA91D4101
- ldr r1, _020E7694 ; =0x3FD17460
- bl _dadd
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7698 ; =0x518F264D
- ldr r1, _020E769C ; =0x3FD55555
- bl _dadd
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76A0 ; =0xDB6FABFF
- ldr r1, _020E76A4 ; =0x3FDB6DB6
- bl _dadd
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76A8 ; =0x33333303
- ldr r1, _020E76AC ; =0x3FE33333
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x34]
- mov r1, r11
- bl _dmul
- mov r4, r0
- mov r10, r1
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x28]
- mov r1, r9
- mov r3, r9
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x30]
- ldr r1, [sp, #0x14]
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dadd
- mov r4, r0
- ldr r0, [sp, #0x48]
- mov r10, r1
- mov r1, r9
- mov r2, r0
- mov r3, r1
- bl _dmul
- str r1, [sp, #0xc]
- mov r11, r0
- ldr r1, _020E76B0 ; =0x40080000
- ldr r3, [sp, #0xc]
- mov r0, #0x0
- mov r2, r11
- bl _dadd
- mov r2, r4
- mov r3, r10
- bl _dadd
- mov r0, #0x0
- ldr r3, _020E76B0 ; =0x40080000
- mov r2, r0
- str r1, [sp, #0x44]
- str r0, [sp, #0x40]
- bl _dsub
- ldr r3, [sp, #0xc]
- mov r2, r11
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dsub
- str r0, [sp, #0x38]
- str r1, [sp, #0x4]
- ldr r0, [sp, #0x48]
- ldr r2, [sp, #0x40]
- ldr r3, [sp, #0x44]
- mov r1, r9
- bl _dmul
- mov r4, r0
- mov r10, r1
- ldr r0, [sp, #0x30]
- ldr r1, [sp, #0x14]
- ldr r2, [sp, #0x40]
- ldr r3, [sp, #0x44]
- bl _dmul
- str r0, [sp, #0x3c]
- mov r11, r1
- ldr r0, [sp, #0x38]
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0x28]
- mov r3, r9
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x3c]
- mov r1, r11
- bl _dadd
- mov r9, r0
- mov r11, r1
- mov r0, r4
- mov r1, r10
- mov r2, r9
- mov r3, r11
- bl _dadd
- mov r0, #0x0
- mov r2, r4
- mov r3, r10
- str r1, [sp, #0x6c]
- str r0, [sp, #0x68]
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r9
- mov r1, r11
- bl _dsub
- mov r10, r1
- mov r11, r0
- ldr r1, _020E76B4 ; =0x3FEEC709
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- mov r0, #0xe0000000
- bl _dmul
- mov r4, r0
- mov r9, r1
- ldr r0, _020E76B8 ; =0x145B01F5
- ldr r1, _020E76BC ; =0xBE3E2FE0
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- bl _dmul
- mov r2, r11
- mov r3, r10
- mov r11, r0
- mov r10, r1
- ldr r0, _020E76C0 ; =0xDC3A03FD
- ldr r1, _020E76B4 ; =0x3FEEC709
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r11
- mov r1, r10
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76C4 ; =UNK_02104764
- add r1, r0, r8, lsl #0x3
- ldr r0, [r0, r8, lsl #0x3]
- ldr r1, [r1, #0x4]
- bl _dadd
- mov r11, r0
- mov r10, r1
- mov r0, r6
- bl _dflt
- str r0, [sp, #0x50]
- str r1, [sp, #0x54]
- mov r0, r4
- mov r1, r9
- mov r2, r11
- mov r3, r10
- bl _dadd
- ldr r2, _020E76C8 ; =UNK_02104744
- add r3, r2, r8, lsl #0x3
- ldr r2, [r2, r8, lsl #0x3]
- ldr r3, [r3, #0x4]
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dadd
- str r1, [sp, #0x5c]
- mov r0, #0x0
- str r0, [sp, #0x58]
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- bl _dsub
- ldr r2, _020E76C8 ; =UNK_02104744
- add r3, r2, r8, lsl #0x3
- ldr r2, [r2, r8, lsl #0x3]
- ldr r3, [r3, #0x4]
- bl _dsub
- mov r2, r4
- mov r3, r9
- bl _dsub
- mov r2, r0
- mov r0, r11
- mov r3, r1
- mov r1, r10
- bl _dsub
- mov r4, r0
- mov r8, r1
-_020E7C80:
- sub r0, r5, #0x1
- ldr r1, [sp, #0xb4]
- orrs r0, r7, r0
- ldr r5, _020E7638 ; =0x3FF00000
- mov r2, #0x0
- ldr r0, [sp, #0xb0]
- mov r3, r1
- mov r6, #0x0
- subeq r5, r5, #0x80000000
- str r1, [sp, #0x64]
- str r2, [sp, #0x60]
- bl _dsub
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x58]
- ldr r1, [sp, #0x5c]
- bl _dmul
- mov r7, r0
- mov r9, r1
- ldr r0, [sp, #0xb0]
- ldr r1, [sp, #0xb4]
- mov r2, r4
- mov r3, r8
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r7
- mov r1, r9
- bl _dadd
- mov r7, r0
- mov r8, r1
- ldr r0, [sp, #0x60]
- ldr r1, [sp, #0x64]
- ldr r2, [sp, #0x58]
- ldr r3, [sp, #0x5c]
- bl _dmul
- mov r2, r0
- mov r3, r1
- mov r0, r7
- mov r1, r8
- str r2, [sp, #0x68]
- str r3, [sp, #0x6c]
- bl _dadd
- mov r9, r1
- ldr r2, _020E76CC ; =0x40900000
- str r0, [sp, #0x78]
- str r9, [sp, #0x7c]
- cmp r9, r2
- blt _020E7E0C
- add r1, r9, #0xf700000
- add r1, r1, #0xb0000000
- orrs r0, r1, r0
- beq _020E7D8C
- ldr r0, _020E76D0 ; =0x8800759C
- ldr r1, _020E76D4 ; =0x7E37E43C
- mov r2, r6
- mov r3, r5
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76D0 ; =0x8800759C
- ldr r1, _020E76D4 ; =0x7E37E43C
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7D8C:
- ldr r0, _020E7670 ; =0x652B82FE
- ldr r1, _020E76D8 ; =0x3C971547
- mov r2, r7
- mov r3, r8
- bl _dadd
- mov r4, r0
- mov r10, r1
- ldr r0, [sp, #0x78]
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- mov r1, r9
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r10
- bl _dgr
- bls _020E7EC0
- ldr r0, _020E76D0 ; =0x8800759C
- ldr r1, _020E76D4 ; =0x7E37E43C
- mov r2, r6
- mov r3, r5
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76D0 ; =0x8800759C
- ldr r1, _020E76D4 ; =0x7E37E43C
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7E0C:
- bic r3, r9, #0x80000000
- add r2, r2, #0xcc00
- cmp r3, r2
- blt _020E7EC0
- ldr r2, _020E76DC ; =0x3F6F3400
- add r2, r9, r2
- orrs r2, r2, r0
- beq _020E7E64
- ldr r0, _020E76E0 ; =0xC2F8F359
- ldr r1, _020E76E4 ; =0x01A56E1F
- mov r2, r6
- mov r3, r5
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76E0 ; =0xC2F8F359
- ldr r1, _020E76E4 ; =0x01A56E1F
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7E64:
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r7
- mov r1, r8
- bl _dleq
- bhi _020E7EC0
- ldr r0, _020E76E0 ; =0xC2F8F359
- ldr r1, _020E76E4 ; =0x01A56E1F
- mov r2, r6
- mov r3, r5
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76E0 ; =0xC2F8F359
- ldr r1, _020E76E4 ; =0x01A56E1F
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-_020E7EC0:
- ldr r0, _020E7644 ; =0xFFFFFC01
- bic r3, r9, #0x80000000
- ldr r1, _020E7648 ; =0x3FE00000
- add r2, r0, r3, asr #0x14
- cmp r3, r1
- mov r4, #0x0
- ble _020E7F3C
- mov r1, #0x100000
- add r2, r2, #0x1
- add r2, r9, r1, asr r2
- bic r3, r2, #0x80000000
- add r0, r0, r3, asr #0x14
- sub r3, r1, #0x1
- mvn r3, r3, asr r0
- sub r1, r1, #0x1
- and r1, r2, r1
- and r2, r2, r3
- str r2, [sp, #0x54]
- str r4, [sp, #0x50]
- orr r1, r1, #0x100000
- rsb r0, r0, #0x14
- mov r4, r1, asr r0
- cmp r9, #0x0
- ldr r0, [sp, #0x68]
- ldr r1, [sp, #0x6c]
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- rsblt r4, r4, #0x0
- bl _dsub
- str r0, [sp, #0x68]
- str r1, [sp, #0x6c]
-_020E7F3C:
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- mov r0, r7
- mov r1, r8
- bl _dadd
- mov r3, r1
- mov r0, #0x0
- ldr r1, _020E76E8 ; =0x3FE62E43
- mov r2, r0
- str r3, [sp, #0x54]
- str r0, [sp, #0x50]
- bl _dmul
- mov r9, r0
- mov r10, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- ldr r2, [sp, #0x68]
- ldr r3, [sp, #0x6c]
- bl _dsub
- mov r2, r0
- mov r0, r7
- mov r3, r1
- mov r1, r8
- bl _dsub
- mov r2, r0
- mov r3, r1
- ldr r0, _020E76EC ; =0xFEFA39EF
- ldr r1, _020E76F0 ; =0x3FE62E42
- bl _dmul
- mov r7, r0
- mov r8, r1
- ldr r0, _020E76F4 ; =0x0CA86C39
- ldr r1, _020E76F8 ; =0xBE205C61
- ldr r2, [sp, #0x50]
- ldr r3, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r0, r7
- mov r3, r1
- mov r1, r8
- bl _dadd
- mov r7, r0
- mov r8, r1
- mov r0, r9
- mov r1, r10
- mov r2, r7
- mov r3, r8
- bl _dadd
- mov r2, r9
- mov r3, r10
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
- bl _dsub
- mov r2, r0
- mov r3, r1
- mov r0, r7
- mov r1, r8
- bl _dsub
- mov r8, r0
- mov r9, r1
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- mov r2, r0
- mov r3, r1
- bl _dmul
- mov r2, r0
- str r2, [sp, #0x50]
- mov r3, r1
- str r3, [sp, #0x54]
- ldr r0, _020E76FC ; =0x72BEA4D0
- ldr r1, _020E7700 ; =0x3E663769
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7704 ; =0xC5D26BF1
- ldr r1, _020E7708 ; =0xBEBBBD41
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E770C ; =0xAF25DE2C
- ldr r1, _020E7710 ; =0x3F11566A
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E7714 ; =0x16BEBD93
- ldr r1, _020E7718 ; =0xBF66C16C
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, _020E771C ; =0x5555553E
- ldr r1, _020E7720 ; =0x3FC55555
- bl _dadd
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x50]
- ldr r1, [sp, #0x54]
- bl _dmul
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- bl _dsub
- mov r2, r0
- str r2, [sp, #0x58]
- mov r3, r1
- str r3, [sp, #0x5c]
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- bl _dmul
- mov r7, r0
- mov r10, r1
- ldr r0, [sp, #0x58]
- ldr r1, [sp, #0x5c]
- mov r2, #0x0
- mov r3, #0x40000000
- bl _dsub
- mov r2, r0
- mov r0, r7
- mov r3, r1
- mov r1, r10
- bl _ddiv
- mov r7, r0
- mov r10, r1
- ldr r0, [sp, #0x78]
- ldr r1, [sp, #0x7c]
- mov r2, r8
- mov r3, r9
- bl _dmul
- mov r2, r0
- mov r0, r8
- mov r3, r1
- mov r1, r9
- bl _dadd
- mov r2, r0
- mov r0, r7
- mov r3, r1
- mov r1, r10
- bl _dsub
- ldr r2, [sp, #0x78]
- ldr r3, [sp, #0x7c]
- bl _dsub
- mov r3, r1
- mov r2, r0
- ldr r1, _020E7638 ; =0x3FF00000
- mov r0, #0x0
- bl _dsub
- add r3, r1, r4, lsl #0x14
- mov r2, r3, asr #0x14
- str r0, [sp, #0x78]
- cmp r2, #0x0
- str r1, [sp, #0x7c]
- addgt r0, sp, #0x78
- strgt r3, [r0, #0x4]
- bgt _020E81F0
- mov r2, r4
- bl scalbn
- str r0, [sp, #0x78]
- str r1, [sp, #0x7c]
-_020E81F0:
- ldr r2, [sp, #0x78]
- ldr r3, [sp, #0x7c]
- mov r0, r6
- mov r1, r5
- bl _dmul
- add sp, sp, #0x80
- ldmia sp!, {r3-r11,lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start copysign
-copysign: ; 0x020E8214
- stmdb sp!, {r0-r3}
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0xc]
- bic r1, r1, #0x80000000
- and r0, r0, #0x80000000
- orr r1, r1, r0
- ldr r0, [sp, #0x0]
- str r1, [sp, #0x4]
- add sp, sp, #0x10
- bx lr
-
- arm_func_start fabs
-fabs: ; 0x020E823C
- stmdb sp!, {r0-r3}
- add r2, sp, #0x0
- ldr r1, [r2, #0x4]
- ldr r0, [sp, #0x0]
- bic r1, r1, #0x80000000
- str r1, [r2, #0x4]
- add sp, sp, #0x10
- bx lr
-
- arm_func_start frexp
-frexp: ; 0x020E825C
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4,lr}
- ldr r1, [sp, #0xc]
- ldr r0, _020E8308 ; =0x7FF00000
- mov r4, r2
- bic r3, r1, #0x80000000
- mov r2, #0x0
- str r2, [r4, #0x0]
- cmp r3, r0
- ldr r0, [sp, #0x8]
- bge _020E8290
- orrs r0, r3, r0
- bne _020E82A4
-_020E8290:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E82A4:
- cmp r3, #0x100000
- bge _020E82D0
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- ldr r3, _020E830C ; =0x43500000
- bl _dmul
- mvn r2, #0x35
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- str r2, [r4, #0x0]
- bic r3, r1, #0x80000000
-_020E82D0:
- ldr r2, _020E8310 ; =0x800FFFFF
- ldr r0, _020E8314 ; =0xFFFFFC02
- and r1, r1, r2
- orr r1, r1, #0xfe00000
- orr r1, r1, #0x30000000
- ldr r2, [r4, #0x0]
- add r0, r0, r3, asr #0x14
- add r2, r2, r0
- ldr r0, [sp, #0x8]
- str r2, [r4, #0x0]
- str r1, [sp, #0xc]
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E8308: .word 0x7FF00000
-_020E830C: .word 0x43500000
-_020E8310: .word 0x800FFFFF
-_020E8314: .word 0xFFFFFC02
-
- arm_func_start ldexp
-ldexp: ; 0x020E8318
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4,lr}
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- mov r4, r2
- bl __fpclassifyf
- cmp r0, #0x2
- ble _020E8350
- mov r0, #0x0
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- mov r1, r0
- bl _deq
- bne _020E8364
-_020E8350:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E8364:
- ldr r3, [sp, #0xc]
- ldr r0, _020E8538 ; =0x7FF00000
- ldr r1, [sp, #0x8]
- and r0, r3, r0
- movs r12, r0, asr #0x14
- bne _020E83F0
- bic r0, r3, #0x80000000
- orrs r0, r1, r0
- ldreq r0, [sp, #0x8]
- ldreq r1, [sp, #0xc]
- ldmeqia sp!, {r4,lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- ldr r3, _020E853C ; =0x43500000
- mov r2, #0x0
- bl _dmul
- mov r3, r1
- ldr r1, _020E8538 ; =0x7FF00000
- ldr ip, _020E8540 ; =0xFFFF3CB0
- and r1, r3, r1
- mov r2, r0
- mov r0, r1, asr #0x14
- str r2, [sp, #0x8]
- str r3, [sp, #0xc]
- cmp r4, r12
- sub r12, r0, #0x36
- bge _020E83F0
- ldr r0, _020E8544 ; =0xC2F8F359
- ldr r1, _020E8548 ; =0x01A56E1F
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E83F0:
- ldr r0, _020E854C ; =0x000007FF
- cmp r12, r0
- bne _020E841C
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- mov r2, r0
- mov r3, r1
- bl _dadd
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E841C:
- add r2, r12, r4
- sub r0, r0, #0x1
- cmp r2, r0
- ble _020E8460
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- ldr r0, _020E8550 ; =0x8800759C
- ldr r1, _020E8554 ; =0x7E37E43C
- bl copysign
- mov r2, r0
- mov r3, r1
- ldr r0, _020E8550 ; =0x8800759C
- ldr r1, _020E8554 ; =0x7E37E43C
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E8460:
- cmp r2, #0x0
- ble _020E8488
- ldr r1, _020E8558 ; =0x800FFFFF
- ldr r0, [sp, #0x8]
- and r1, r3, r1
- orr r1, r1, r2, lsl #0x14
- str r1, [sp, #0xc]
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E8488:
- mvn r0, #0x35
- cmp r2, r0
- bgt _020E8508
- ldr r0, _020E855C ; =0x0000C350
- cmp r4, r0
- ble _020E84D4
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- ldr r0, _020E8550 ; =0x8800759C
- ldr r1, _020E8554 ; =0x7E37E43C
- bl copysign
- mov r2, r0
- mov r3, r1
- ldr r0, _020E8550 ; =0x8800759C
- ldr r1, _020E8554 ; =0x7E37E43C
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E84D4:
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- ldr r0, _020E8544 ; =0xC2F8F359
- ldr r1, _020E8548 ; =0x01A56E1F
- bl copysign
- mov r2, r0
- mov r3, r1
- ldr r0, _020E8544 ; =0xC2F8F359
- ldr r1, _020E8548 ; =0x01A56E1F
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
-_020E8508:
- ldr r0, _020E8558 ; =0x800FFFFF
- add r1, r2, #0x36
- and r0, r3, r0
- orr r3, r0, r1, lsl #0x14
- ldr r2, [sp, #0x8]
- ldr r1, _020E8560 ; =0x3C900000
- mov r0, #0x0
- str r3, [sp, #0xc]
- bl _dmul
- ldmia sp!, {r4,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E8538: .word 0x7FF00000
-_020E853C: .word 0x43500000
-_020E8540: .word 0xFFFF3CB0
-_020E8544: .word 0xC2F8F359
-_020E8548: .word 0x01A56E1F
-_020E854C: .word 0x000007FF
-_020E8550: .word 0x8800759C
-_020E8554: .word 0x7E37E43C
-_020E8558: .word 0x800FFFFF
-_020E855C: .word 0x0000C350
-_020E8560: .word 0x3C900000
-
- arm_func_start pow
-pow: ; 0x020E8564
- ldr ip, _020E856C ; =__ieee754_pow
- bx r12
- .balign 4
-_020E856C: .word __ieee754_pow
-
- arm_func_start __must_round
-__must_round: ; 0x020E8570
- add r3, r0, #0x5
- ldrb r2, [r3, r1]
- add r12, r3, r1
- cmp r2, #0x5
- movhi r0, #0x1
- bxhi lr
- mvncc r0, #0x0
- bxcc lr
- ldrb r2, [r0, #0x4]
- add r12, r12, #0x1
- add r3, r3, r2
- cmp r12, r3
- bhs _020E85C0
-_020E85A4:
- ldrb r2, [r12, #0x0]
- cmp r2, #0x0
- movne r0, #0x1
- bxne lr
- add r12, r12, #0x1
- cmp r12, r3
- blo _020E85A4
-_020E85C0:
- sub r1, r1, #0x1
- add r0, r0, r1
- ldrb r0, [r0, #0x5]
- tst r0, #0x1
- movne r0, #0x1
- mvneq r0, #0x0
- bx lr
-
- arm_func_start __dorounddecup
-__dorounddecup: ; 0x020E85DC
- add r3, r0, #0x5
- add r1, r3, r1
- sub r12, r1, #0x1
- mov r1, #0x0
-_020E85EC:
- ldrb r2, [r12, #0x0]
- cmp r2, #0x9
- addcc r0, r2, #0x1
- strccb r0, [r12, #0x0]
- bxcc lr
- cmp r12, r3
- bne _020E8620
- mov r1, #0x1
- strb r1, [r12, #0x0]
- ldrsh r1, [r0, #0x2]
- add r1, r1, #0x1
- strh r1, [r0, #0x2]
- bx lr
-_020E8620:
- strb r1, [r12], #-0x1
- b _020E85EC
- bx lr
-
- arm_func_start __rounddec
-__rounddec: ; 0x020E862C
- stmdb sp!, {r3-r5,lr}
- mov r4, r1
- mov r5, r0
- cmp r4, #0x0
- ldmleia sp!, {r3-r5,pc}
- ldrb r2, [r5, #0x4]
- cmp r4, r2
- ldmgeia sp!, {r3-r5,pc}
- bl __must_round
- strb r4, [r5, #0x4]
- cmp r0, #0x0
- ldmltia sp!, {r3-r5,pc}
- mov r0, r5
- mov r1, r4
- bl __dorounddecup
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start __ull2dec
-__ull2dec: ; 0x020E866C
- stmdb sp!, {r3-r11,lr}
- mov r10, r0
- mov r0, #0x0
- mov r8, r2
- strb r0, [r10, #0x0]
- mov r9, r1
- cmp r8, #0x0
- strb r0, [r10, #0x4]
- cmpeq r9, #0x0
- beq _020E86F8
- mov r6, #0xa
- mov r11, r0
- mov r5, r0
- mov r4, r0
-_020E86A4:
- ldrb r1, [r10, #0x4]
- mov r0, r9
- mov r2, r6
- add r3, r1, #0x1
- mov r7, r1
- strb r3, [r10, #0x4]
- mov r1, r8
- mov r3, r11
- bl _ull_mod
- add r1, r10, r7
- strb r0, [r1, #0x5]
- mov r0, r9
- mov r1, r8
- mov r2, #0xa
- mov r3, #0x0
- bl _ll_udiv
- mov r8, r1
- mov r9, r0
- cmp r8, r5
- cmpeq r9, r4
- bne _020E86A4
-_020E86F8:
- ldrb r0, [r10, #0x4]
- add r2, r10, #0x5
- add r0, r2, r0
- sub r3, r0, #0x1
- cmp r2, r3
- bhs _020E8728
-_020E8710:
- ldrb r0, [r3, #0x0]
- ldrb r1, [r2, #0x0]
- strb r0, [r2], #0x1
- strb r1, [r3], #-0x1
- cmp r2, r3
- blo _020E8710
-_020E8728:
- ldrb r0, [r10, #0x4]
- sub r0, r0, #0x1
- strh r0, [r10, #0x2]
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start __timesdec
-__timesdec: ; 0x020E8738
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x40
- ldrb r6, [r1, #0x4]
- ldrb r5, [r2, #0x4]
- mov r4, #0x0
- add r3, sp, #0x0
- add r5, r6, r5
- sub r5, r5, #0x1
- add r3, r3, r5
- add r6, r3, #0x1
- mov r7, r6
- strb r4, [r0, #0x0]
- cmp r5, #0x0
- ble _020E8800
- add lr, r1, #0x5
- add r11, r2, #0x5
-_020E8778:
- ldrb r3, [r2, #0x4]
- sub r10, r3, #0x1
- sub r3, r5, r10
- subs r9, r3, #0x1
- ldrb r3, [r1, #0x4]
- movmi r9, #0x0
- submi r10, r5, #0x1
- add r8, r10, #0x1
- sub r3, r3, r9
- cmp r8, r3
- movgt r8, r3
- add r10, r11, r10
- add r9, lr, r9
- cmp r8, #0x0
- ble _020E87CC
-_020E87B4:
- ldrb r12, [r9], #0x1
- ldrb r3, [r10], #-0x1
- sub r8, r8, #0x1
- cmp r8, #0x0
- mla r4, r12, r3, r4
- bgt _020E87B4
-_020E87CC:
- ldr r3, _020E88B8 ; =0xCCCCCCCD
- sub r5, r5, #0x1
- umull r8, r9, r4, r3
- mov r9, r9, lsr #0x3
- cmp r5, #0x0
- mov r10, #0xa
- umull r8, r9, r10, r9
- sub r9, r4, r8
- strb r9, [r6, #-0x1]!
- mov r8, r4
- umull r3, r4, r8, r3
- mov r4, r4, lsr #0x3
- bgt _020E8778
-_020E8800:
- ldrsh r3, [r1, #0x2]
- ldrsh r1, [r2, #0x2]
- cmp r4, #0x0
- add r1, r3, r1
- strh r1, [r0, #0x2]
- beq _020E8828
- strb r4, [r6, #-0x1]!
- ldrsh r1, [r0, #0x2]
- add r1, r1, #0x1
- strh r1, [r0, #0x2]
-_020E8828:
- mov r3, #0x0
- b _020E8840
-_020E8830:
- ldrb r2, [r6], #0x1
- add r1, r0, r3
- add r3, r3, #0x1
- strb r2, [r1, #0x5]
-_020E8840:
- cmp r3, #0x20
- bge _020E8850
- cmp r6, r7
- blo _020E8830
-_020E8850:
- cmp r6, r7
- addcs sp, sp, #0x40
- strb r3, [r0, #0x4]
- ldmcsia sp!, {r3-r11,pc}
- ldrb r1, [r6, #0x0]
- cmp r1, #0x5
- addcc sp, sp, #0x40
- ldmccia sp!, {r3-r11,pc}
- bne _020E88A8
- add r2, r6, #0x1
- cmp r2, r7
- bhs _020E8898
-_020E8880:
- ldrb r1, [r2, #0x0]
- cmp r1, #0x0
- bne _020E88A8
- add r2, r2, #0x1
- cmp r2, r7
- blo _020E8880
-_020E8898:
- ldrb r1, [r6, #-0x1]
- tst r1, #0x1
- addeq sp, sp, #0x40
- ldmeqia sp!, {r3-r11,pc}
-_020E88A8:
- ldrb r1, [r0, #0x4]
- bl __dorounddecup
- add sp, sp, #0x40
- ldmia sp!, {r3-r11,pc}
- .balign 4
-_020E88B8: .word 0xCCCCCCCD
-
- arm_func_start __str2dec
-__str2dec: ; 0x020E88BC
- stmdb sp!, {r3,lr}
- strh r2, [r0, #0x2]
- mov r12, #0x0
- strb r12, [r0, #0x0]
- b _020E88E4
-_020E88D0:
- ldrsb r3, [r1], #0x1
- add r2, r0, r12
- add r12, r12, #0x1
- sub r3, r3, #0x30
- strb r3, [r2, #0x5]
-_020E88E4:
- cmp r12, #0x20
- bge _020E88F8
- ldrsb r2, [r1, #0x0]
- cmp r2, #0x0
- bne _020E88D0
-_020E88F8:
- strb r12, [r0, #0x4]
- ldrsb r2, [r1, #0x0]
- cmp r2, #0x0
- ldmeqia sp!, {r3,pc}
- cmp r2, #0x5
- ldmltia sp!, {r3,pc}
- bgt _020E894C
- ldrsb r2, [r1, #0x1]
- add r1, r1, #0x1
- cmp r2, #0x0
- beq _020E8938
-_020E8924:
- cmp r2, #0x30
- bne _020E894C
- ldrsb r2, [r1, #0x1]!
- cmp r2, #0x0
- bne _020E8924
-_020E8938:
- sub r1, r12, #0x1
- add r1, r0, r1
- ldrb r1, [r1, #0x5]
- tst r1, #0x1
- ldmeqia sp!, {r3,pc}
-_020E894C:
- ldrb r1, [r0, #0x4]
- bl __dorounddecup
- ldmia sp!, {r3,pc}
-
- arm_func_start __two_exp
-__two_exp: ; 0x020E8958
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4c
- mov r4, r1
- mvn r2, #0x34
- mov r5, r0
- cmp r4, r2
- bgt _020E8988
- bge _020E8A54
- sub r0, r2, #0xb
- cmp r4, r0
- beq _020E8A3C
- b _020E8BE4
-_020E8988:
- add r1, r4, #0x20
- cmp r1, #0x28
- addls pc, pc, r1, lsl #0x2
- b _020E8BE4
-_020E8998:
- b _020E8A68
-_020E899C:
- b _020E8BE4
-_020E89A0:
- b _020E8BE4
-_020E89A4:
- b _020E8BE4
-_020E89A8:
- b _020E8BE4
-_020E89AC:
- b _020E8BE4
-_020E89B0:
- b _020E8BE4
-_020E89B4:
- b _020E8BE4
-_020E89B8:
- b _020E8BE4
-_020E89BC:
- b _020E8BE4
-_020E89C0:
- b _020E8BE4
-_020E89C4:
- b _020E8BE4
-_020E89C8:
- b _020E8BE4
-_020E89CC:
- b _020E8BE4
-_020E89D0:
- b _020E8BE4
-_020E89D4:
- b _020E8BE4
-_020E89D8:
- b _020E8A7C
-_020E89DC:
- b _020E8BE4
-_020E89E0:
- b _020E8BE4
-_020E89E4:
- b _020E8BE4
-_020E89E8:
- b _020E8BE4
-_020E89EC:
- b _020E8BE4
-_020E89F0:
- b _020E8BE4
-_020E89F4:
- b _020E8BE4
-_020E89F8:
- b _020E8A90
-_020E89FC:
- b _020E8AA4
-_020E8A00:
- b _020E8AB8
-_020E8A04:
- b _020E8ACC
-_020E8A08:
- b _020E8AE0
-_020E8A0C:
- b _020E8AF4
-_020E8A10:
- b _020E8B08
-_020E8A14:
- b _020E8B1C
-_020E8A18:
- b _020E8B30
-_020E8A1C:
- b _020E8B44
-_020E8A20:
- b _020E8B58
-_020E8A24:
- b _020E8B6C
-_020E8A28:
- b _020E8B80
-_020E8A2C:
- b _020E8B94
-_020E8A30:
- b _020E8BA8
-_020E8A34:
- b _020E8BBC
-_020E8A38:
- b _020E8BD0
-_020E8A3C:
- ldr r1, _020E8C88 ; =UNK_02106E88
- mov r0, r5
- mvn r2, #0x13
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8A54:
- ldr r1, _020E8C8C ; =UNK_02106EB8
- add r2, r2, #0x25
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8A68:
- ldr r1, _020E8C90 ; =UNK_02106EE0
- add r2, r2, #0x2b
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8A7C:
- ldr r1, _020E8C94 ; =UNK_02106EF8
- add r2, r2, #0x30
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8A90:
- ldr r1, _020E8C98 ; =UNK_02106F08
- add r2, r2, #0x32
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8AA4:
- ldr r1, _020E8C9C ; =UNK_02106F10
- add r2, r2, #0x32
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8AB8:
- ldr r1, _020E8CA0 ; =UNK_02106F18
- add r2, r2, #0x33
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8ACC:
- ldr r1, _020E8CA4 ; =UNK_02106F20
- add r2, r2, #0x33
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8AE0:
- ldr r1, _020E8CA8 ; =UNK_02106F28
- add r2, r2, #0x33
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8AF4:
- ldr r1, _020E8CAC ; =UNK_02106F2C
- add r2, r2, #0x34
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B08:
- ldr r1, _020E8CB0 ; =UNK_02106F30
- add r2, r2, #0x34
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B1C:
- ldr r1, _020E8CB4 ; =UNK_02106F34
- add r2, r2, #0x34
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B30:
- ldr r1, _020E8CB8 ; =UNK_02106F38
- mov r2, #0x0
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B44:
- ldr r1, _020E8CBC ; =UNK_02106F3C
- mov r2, #0x0
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B58:
- ldr r1, _020E8CC0 ; =UNK_02106F40
- mov r2, #0x0
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B6C:
- ldr r1, _020E8CC4 ; =UNK_02106F44
- mov r2, #0x0
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B80:
- ldr r1, _020E8CC8 ; =UNK_02106F48
- mov r2, #0x1
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8B94:
- ldr r1, _020E8CCC ; =UNK_02106F4C
- mov r2, #0x1
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8BA8:
- ldr r1, _020E8CD0 ; =UNK_02106F50
- mov r2, #0x1
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8BBC:
- ldr r1, _020E8CD4 ; =UNK_02106F54
- mov r2, #0x2
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8BD0:
- ldr r1, _020E8CD8 ; =UNK_02106F58
- mov r2, #0x2
- bl __str2dec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
-_020E8BE4:
- and r0, r4, #0x80000000
- add r1, r4, r0, lsr #0x1f
- add r0, sp, #0x26
- mov r1, r1, asr #0x1
- bl __two_exp
- add r1, sp, #0x26
- mov r0, r5
- mov r2, r1
- bl __timesdec
- tst r4, #0x1
- addeq sp, sp, #0x4c
- ldmeqia sp!, {r4-r5,pc}
- add r3, sp, #0x0
- mov r12, r5
- mov r2, #0x9
-_020E8C20:
- ldrh r1, [r12, #0x0]
- ldrh r0, [r12, #0x2]
- add r12, r12, #0x4
- subs r2, r2, #0x1
- strh r1, [r3, #0x0]
- strh r0, [r3, #0x2]
- add r3, r3, #0x4
- bne _020E8C20
- ldrh r0, [r12, #0x0]
- cmp r4, #0x0
- strh r0, [r3, #0x0]
- add r0, sp, #0x26
- ble _020E8C64
- ldr r1, _020E8CBC ; =UNK_02106F3C
- mov r2, #0x0
- bl __str2dec
- b _020E8C70
-_020E8C64:
- ldr r1, _020E8CB4 ; =UNK_02106F34
- mvn r2, #0x0
- bl __str2dec
-_020E8C70:
- add r1, sp, #0x0
- add r2, sp, #0x26
- mov r0, r5
- bl __timesdec
- add sp, sp, #0x4c
- ldmia sp!, {r4-r5,pc}
- .balign 4
-_020E8C88: .word UNK_02106E88
-_020E8C8C: .word UNK_02106EB8
-_020E8C90: .word UNK_02106EE0
-_020E8C94: .word UNK_02106EF8
-_020E8C98: .word UNK_02106F08
-_020E8C9C: .word UNK_02106F10
-_020E8CA0: .word UNK_02106F18
-_020E8CA4: .word UNK_02106F20
-_020E8CA8: .word UNK_02106F28
-_020E8CAC: .word UNK_02106F2C
-_020E8CB0: .word UNK_02106F30
-_020E8CB4: .word UNK_02106F34
-_020E8CB8: .word UNK_02106F38
-_020E8CBC: .word UNK_02106F3C
-_020E8CC0: .word UNK_02106F40
-_020E8CC4: .word UNK_02106F44
-_020E8CC8: .word UNK_02106F48
-_020E8CCC: .word UNK_02106F4C
-_020E8CD0: .word UNK_02106F50
-_020E8CD4: .word UNK_02106F54
-_020E8CD8: .word UNK_02106F58
-
- arm_func_start __equals_dec
-__equals_dec:
- stmdb sp!, {r4,lr}
- ldrb r3, [r0, #0x5]
- cmp r3, #0x0
- bne _020E8D00
- ldrb r0, [r1, #0x5]
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- ldmia sp!, {r4,pc}
-_020E8D00:
- ldrb r2, [r1, #0x5]
- cmp r2, #0x0
- bne _020E8D1C
- cmp r3, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- ldmia sp!, {r4,pc}
-_020E8D1C:
- ldrsh r3, [r0, #0x2]
- ldrsh r2, [r1, #0x2]
- cmp r3, r2
- bne _020E8DB4
- ldrb r4, [r0, #0x4]
- ldrb r2, [r1, #0x4]
- mov r12, #0x0
- mov lr, r4
- cmp r4, r2
- movgt lr, r2
- cmp lr, #0x0
- ble _020E8D74
-_020E8D4C:
- add r3, r0, r12
- add r2, r1, r12
- ldrb r3, [r3, #0x5]
- ldrb r2, [r2, #0x5]
- cmp r3, r2
- movne r0, #0x0
- ldmneia sp!, {r4,pc}
- add r12, r12, #0x1
- cmp r12, lr
- blt _020E8D4C
-_020E8D74:
- cmp lr, r4
- moveq r0, r1
- ldrb r1, [r0, #0x4]
- cmp r12, r1
- bge _020E8DAC
-_020E8D88:
- add r1, r0, r12
- ldrb r1, [r1, #0x5]
- cmp r1, #0x0
- movne r0, #0x0
- ldmneia sp!, {r4,pc}
- ldrb r1, [r0, #0x4]
- add r12, r12, #0x1
- cmp r12, r1
- blt _020E8D88
-_020E8DAC:
- mov r0, #0x1
- ldmia sp!, {r4,pc}
-_020E8DB4:
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-
- arm_func_start __less_dec
-__less_dec:
- stmdb sp!, {r3-r5,lr}
- ldrb r2, [r0, #0x5]
- cmp r2, #0x0
- bne _020E8DE0
- ldrb r0, [r1, #0x5]
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E8DE0:
- ldrb r2, [r1, #0x5]
- cmp r2, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r3-r5,pc}
- ldrsh r3, [r1, #0x2]
- ldrsh r2, [r0, #0x2]
- cmp r2, r3
- bne _020E8E90
- ldrb r5, [r0, #0x4]
- ldrb r4, [r1, #0x4]
- mov r12, #0x0
- mov lr, r5
- cmp r5, r4
- movgt lr, r4
- cmp lr, #0x0
- ble _020E8E54
-_020E8E20:
- add r3, r1, r12
- add r2, r0, r12
- ldrb r3, [r3, #0x5]
- ldrb r2, [r2, #0x5]
- cmp r2, r3
- movcc r0, #0x1
- ldmccia sp!, {r3-r5,pc}
- cmp r3, r2
- movcc r0, #0x0
- ldmccia sp!, {r3-r5,pc}
- add r12, r12, #0x1
- cmp r12, lr
- blt _020E8E20
-_020E8E54:
- cmp lr, r5
- bne _020E8E88
- cmp r12, r4
- bge _020E8E88
-_020E8E64:
- add r0, r1, r12
- ldrb r0, [r0, #0x5]
- cmp r0, #0x0
- movne r0, #0x1
- ldmneia sp!, {r3-r5,pc}
- ldrb r0, [r1, #0x4]
- add r12, r12, #0x1
- cmp r12, r0
- blt _020E8E64
-_020E8E88:
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
-_020E8E90:
- movlt r0, #0x1
- movge r0, #0x0
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start __minus_dec
-__minus_dec: ; 0x020E8E9C
- stmdb sp!, {r3-r7,lr}
- mov r6, r0
- mov r5, #0x9
-_020E8EA8:
- ldrh r4, [r1, #0x0]
- ldrh r3, [r1, #0x2]
- add r1, r1, #0x4
- subs r5, r5, #0x1
- strh r4, [r6, #0x0]
- strh r3, [r6, #0x2]
- add r6, r6, #0x4
- bne _020E8EA8
- ldrh r1, [r1, #0x0]
- strh r1, [r6, #0x0]
- ldrb r1, [r2, #0x5]
- cmp r1, #0x0
- ldmeqia sp!, {r3-r7,pc}
- ldrb r7, [r0, #0x4]
- ldrb r3, [r2, #0x4]
- ldrsh r4, [r0, #0x2]
- mov r1, r7
- cmp r7, r3
- movlt r1, r3
- ldrsh r3, [r2, #0x2]
- sub r6, r4, r3
- add r1, r1, r6
- cmp r1, #0x20
- movgt r1, #0x20
- cmp r7, r1
- bge _020E8F34
- mov r4, #0x0
-_020E8F14:
- ldrb r5, [r0, #0x4]
- add r3, r0, r7
- add r5, r5, #0x1
- strb r5, [r0, #0x4]
- strb r4, [r3, #0x5]
- ldrb r7, [r0, #0x4]
- cmp r7, r1
- blt _020E8F14
-_020E8F34:
- ldrb r4, [r2, #0x4]
- add r3, r0, #0x5
- add r12, r3, r1
- add r4, r4, r6
- cmp r4, r1
- addlt r12, r3, r4
- sub r4, r12, r3
- add r1, r2, #0x5
- sub r4, r4, r6
- add lr, r1, r4
- mov r4, lr
- b _020E8FC8
-_020E8F64:
- ldrb r7, [r12, #-0x1]!
- ldrb r5, [lr, #-0x1]!
- cmp r7, r5
- bhs _020E8FB8
- ldrb r7, [r12, #-0x1]
- sub r5, r12, #0x1
- cmp r7, #0x0
- bne _020E8F90
-_020E8F84:
- ldrb r7, [r5, #-0x1]!
- cmp r7, #0x0
- beq _020E8F84
-_020E8F90:
- cmp r5, r12
- beq _020E8FB8
-_020E8F98:
- ldrb r7, [r5, #0x0]
- sub r7, r7, #0x1
- strb r7, [r5, #0x0]
- ldrb r7, [r5, #0x1]!
- cmp r5, r12
- add r7, r7, #0xa
- strb r7, [r5, #0x0]
- bne _020E8F98
-_020E8FB8:
- ldrb r7, [r12, #0x0]
- ldrb r5, [lr, #0x0]
- sub r5, r7, r5
- strb r5, [r12, #0x0]
-_020E8FC8:
- cmp r12, r3
- cmphi lr, r1
- bhi _020E8F64
- ldrb r5, [r2, #0x4]
- sub lr, r4, r1
- cmp lr, r5
- bge _020E90A4
- ldrb r1, [r4, #0x0]
- mov r7, #0x0
- cmp r1, #0x5
- movcc r7, #0x1
- blo _020E9040
- bne _020E9040
- add r1, r2, #0x5
- add r2, r1, r5
- add r4, r4, #0x1
- cmp r4, r2
- bhs _020E9028
-_020E9010:
- ldrb r1, [r4, #0x0]
- cmp r1, #0x0
- bne _020E90A4
- add r4, r4, #0x1
- cmp r4, r2
- blo _020E9010
-_020E9028:
- add r1, r3, lr
- add r2, r1, r6
- ldrb r1, [r2, #-0x1]
- sub r12, r2, #0x1
- tst r1, #0x1
- movne r7, #0x1
-_020E9040:
- cmp r7, #0x0
- beq _020E90A4
- ldrb r1, [r12, #0x0]
- cmp r1, #0x1
- bhs _020E9098
- ldrb r1, [r12, #-0x1]
- sub r2, r12, #0x1
- cmp r1, #0x0
- bne _020E9070
-_020E9064:
- ldrb r1, [r2, #-0x1]!
- cmp r1, #0x0
- beq _020E9064
-_020E9070:
- cmp r2, r12
- beq _020E9098
-_020E9078:
- ldrb r1, [r2, #0x0]
- sub r1, r1, #0x1
- strb r1, [r2, #0x0]
- ldrb r1, [r2, #0x1]!
- cmp r2, r12
- add r1, r1, #0xa
- strb r1, [r2, #0x0]
- bne _020E9078
-_020E9098:
- ldrb r1, [r12, #0x0]
- sub r1, r1, #0x1
- strb r1, [r12, #0x0]
-_020E90A4:
- ldrb r1, [r3, #0x0]
- mov r5, r3
- cmp r1, #0x0
- bne _020E90C0
-_020E90B4:
- ldrb r1, [r5, #0x1]!
- cmp r1, #0x0
- beq _020E90B4
-_020E90C0:
- cmp r5, r3
- bls _020E9108
- ldrsh r1, [r0, #0x2]
- sub r2, r5, r3
- and r4, r2, #0xff
- sub r1, r1, r4
- strh r1, [r0, #0x2]
- ldrb r1, [r0, #0x4]
- add r2, r3, r1
- cmp r5, r2
- bhs _020E90FC
-_020E90EC:
- ldrb r1, [r5], #0x1
- cmp r5, r2
- strb r1, [r3], #0x1
- blo _020E90EC
-_020E90FC:
- ldrb r1, [r0, #0x4]
- sub r1, r1, r4
- strb r1, [r0, #0x4]
-_020E9108:
- ldrb r1, [r0, #0x4]
- add r2, r0, #0x5
- add r3, r2, r1
- cmp r3, r2
- bls _020E9130
-_020E911C:
- ldrb r1, [r3, #-0x1]!
- cmp r1, #0x0
- bne _020E9130
- cmp r3, r2
- bhi _020E911C
-_020E9130:
- sub r1, r3, r2
- add r1, r1, #0x1
- strb r1, [r0, #0x4]
- ldmia sp!, {r3-r7,pc}
-
- arm_func_start __num2dec_internal
-__num2dec_internal:
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x58
- mov r8, r1
- mov r6, r2
- mov r7, r0
- mov r0, r8
- mov r1, r6
- bl __signbitf
- cmp r0, #0x0
- movne r1, #0x1
- moveq r1, #0x0
- mov r4, r1, lsl #0x18
- mov r0, #0x0
- mov r1, r0
- mov r2, r8
- mov r3, r6
- mov r5, r4, asr #0x18
- bl _deq
- bne _020E91AC
- strb r5, [r7, #0x0]
- mov r1, #0x0
- strh r1, [r7, #0x2]
- mov r0, #0x1
- strb r0, [r7, #0x4]
- add sp, sp, #0x58
- strb r1, [r7, #0x5]
- ldmia sp!, {r4-r8,pc}
-_020E91AC:
- mov r0, r8
- mov r1, r6
- bl __fpclassifyf
- cmp r0, #0x2
- bgt _020E91F8
- strb r5, [r7, #0x0]
- mov r2, #0x0
- strh r2, [r7, #0x2]
- mov r2, #0x1
- mov r0, r8
- mov r1, r6
- strb r2, [r7, #0x4]
- bl __fpclassifyf
- cmp r0, #0x1
- moveq r0, #0x4e
- movne r0, #0x49
- add sp, sp, #0x58
- strb r0, [r7, #0x5]
- ldmia sp!, {r4-r8,pc}
-_020E91F8:
- cmp r5, #0x0
- beq _020E921C
- mov r0, #0x0
- mov r1, r0
- mov r2, r8
- mov r3, r6
- bl _dsub
- mov r8, r0
- mov r6, r1
-_020E921C:
- add r2, sp, #0x8
- mov r0, r8
- mov r1, r6
- bl frexp
- mov r4, r0
- mov r6, r1
- orr r12, r4, #0x0
- rsbs r2, r12, #0x0
- orr r3, r6, #0x100000
- rsc r1, r3, #0x0
- mov r0, #0x0
- and r3, r3, r1
- sub r1, r0, #0x1
- and r12, r12, r2
- mov r2, r1
- adds r0, r12, r1
- adc r1, r3, r2
- str r4, [sp, #0x0]
- str r6, [sp, #0x4]
- bl __msl_generic_count_bits64
- rsb r8, r0, #0x35
- ldr r1, [sp, #0x8]
- add r0, sp, #0xc
- sub r1, r1, r8
- bl __two_exp
- mov r0, r4
- mov r1, r6
- mov r2, r8
- bl ldexp
- bl _ll_ufrom_d
- mov r2, r1
- mov r1, r0
- add r0, sp, #0x32
- bl __ull2dec
- mov r0, r7
- add r1, sp, #0x32
- add r2, sp, #0xc
- bl __timesdec
- strb r5, [r7, #0x0]
- add sp, sp, #0x58
- ldmia sp!, {r4-r8,pc}
-
- arm_func_start __num2dec_internal2
-__num2dec_internal2: ; 0x020E92C0
- stmdb sp!, {r3-r5,lr}
- mov r4, r3
- ldrsh r5, [r0, #0x2]
- mov r0, r4
- bl __num2dec_internal
- ldrb r0, [r4, #0x5]
- cmp r0, #0x9
- ldmhiia sp!, {r3-r5,pc}
- cmp r5, #0x20
- movgt r5, #0x20
- mov r0, r4
- mov r1, r5
- bl __rounddec
- ldrb r0, [r4, #0x4]
- cmp r0, r5
- bge _020E9324
- mov r1, #0x0
-_020E9304:
- ldrb r2, [r4, #0x4]
- add r0, r4, r0
- add r2, r2, #0x1
- strb r2, [r4, #0x4]
- strb r1, [r0, #0x5]
- ldrb r0, [r4, #0x4]
- cmp r0, r5
- blt _020E9304
-_020E9324:
- ldrsh r1, [r4, #0x2]
- sub r0, r0, #0x1
- mov r2, #0x0
- sub r0, r1, r0
- strh r0, [r4, #0x2]
- ldrb r0, [r4, #0x4]
- cmp r0, #0x0
- ldmleia sp!, {r3-r5,pc}
-_020E9344:
- add r1, r4, r2
- ldrb r0, [r1, #0x5]
- add r2, r2, #0x1
- add r0, r0, #0x30
- strb r0, [r1, #0x5]
- ldrb r0, [r4, #0x4]
- cmp r2, r0
- blt _020E9344
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start __dec2num
-__dec2num: ; 0x020E9368
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xfc
- mov r4, r0
- ldrb r0, [r4, #0x4]
- cmp r0, #0x0
- bne _020E93A8
- ldrsb r0, [r4, #0x0]
- mov r2, #0x0
- cmp r0, #0x0
- ldreq r3, _020E996C ; =0x3FF00000
- mov r0, #0x0
- ldrne r3, _020E9970 ; =0xBFF00000
- mov r1, r0
- bl copysign
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E93A8:
- ldrb r0, [r4, #0x5]
- cmp r0, #0x30
- beq _020E93C8
- cmp r0, #0x49
- beq _020E93F0
- cmp r0, #0x4e
- beq _020E9424
- b _020E946C
-_020E93C8:
- ldrsb r0, [r4, #0x0]
- mov r2, #0x0
- cmp r0, #0x0
- ldreq r3, _020E996C ; =0x3FF00000
- mov r0, #0x0
- ldrne r3, _020E9970 ; =0xBFF00000
- mov r1, r0
- bl copysign
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E93F0:
- ldrsb r0, [r4, #0x0]
- mov r5, #0x0
- cmp r0, #0x0
- ldreq r4, _020E996C ; =0x3FF00000
- ldr r0, _020E9974 ; =UNK_02106B74
- ldrne r4, _020E9970 ; =0xBFF00000
- ldr r0, [r0, #0x0]
- bl _f2d
- mov r2, r5
- mov r3, r4
- bl copysign
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E9424:
- ldr r1, _020E9978 ; =0x7FF00000
- add r3, sp, #0x10
- mov r2, #0x0
- str r2, [r3, #0x0]
- str r1, [r3, #0x4]
- ldrsb r0, [r4, #0x0]
- cmp r0, #0x0
- beq _020E9454
- orr r0, r1, #0x80000000
- orr r1, r2, r2
- str r1, [r3, #0x0]
- str r0, [r3, #0x4]
-_020E9454:
- ldmia r3, {r0-r1}
- orr r0, r0, #0x0
- orr r1, r1, #0x80000
- stmia r3, {r0-r1}
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E946C:
- add r3, sp, #0xd6
- mov r5, r4
- mov r2, #0x9
-_020E9478:
- ldrh r1, [r5, #0x0]
- ldrh r0, [r5, #0x2]
- add r5, r5, #0x4
- subs r2, r2, #0x1
- strh r1, [r3, #0x0]
- strh r0, [r3, #0x2]
- add r3, r3, #0x4
- bne _020E9478
- ldrh r0, [r5, #0x0]
- add r1, sp, #0xdb
- strh r0, [r3, #0x0]
- ldrb r0, [sp, #0xda]
- add r5, r1, r0
- cmp r1, r5
- bhs _020E94C8
-_020E94B4:
- ldrb r0, [r1, #0x0]
- sub r0, r0, #0x30
- strb r0, [r1], #0x1
- cmp r1, r5
- blo _020E94B4
-_020E94C8:
- ldrb r1, [sp, #0xda]
- ldrsh r2, [sp, #0xd8]
- add r0, sp, #0xb0
- sub r1, r1, #0x1
- add r1, r2, r1
- strh r1, [sp, #0xd8]
- ldr r1, _020E997C ; =UNK_02106F5C
- mov r2, #0x134
- ldrsh r11, [sp, #0xd8]
- bl __str2dec
- add r0, sp, #0xb0
- add r1, sp, #0xd6
- bl __less_dec
- cmp r0, #0x0
- beq _020E9538
- ldrsb r0, [r4, #0x0]
- mov r5, #0x0
- cmp r0, #0x0
- ldreq r4, _020E996C ; =0x3FF00000
- ldr r0, _020E9974 ; =UNK_02106B74
- ldrne r4, _020E9970 ; =0xBFF00000
- ldr r0, [r0, #0x0]
- bl _f2d
- mov r2, r5
- mov r3, r4
- bl copysign
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
-_020E9538:
- add r1, sp, #0xdb
- ldrb r0, [r1, #0x0]
- add r8, r1, #0x1
- bl _dfltu
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- cmp r8, r5
- bhs _020E9610
-_020E9558:
- sub r0, r5, r8
- mov r1, r0, lsr #0x1f
- rsb r0, r1, r0, lsl #0x1d
- adds r7, r1, r0, ror #0x1d
- moveq r7, #0x8
- mov r6, #0x0
- mov r2, #0x0
- cmp r7, #0x0
- ble _020E9594
- mov r0, #0xa
-_020E9580:
- ldrb r1, [r8], #0x1
- add r2, r2, #0x1
- cmp r2, r7
- mla r6, r0, r6, r1
- blt _020E9580
-_020E9594:
- ldr r0, _020E9980 ; =UNK_02106E48
- ldr r1, [sp, #0xc]
- add r3, r0, r7, lsl #0x3
- ldr r2, [r3, #-0x8]
- ldr r0, [sp, #0x8]
- ldr r3, [r3, #-0x4]
- bl _dmul
- mov r4, r0
- mov r9, r1
- mov r0, r6
- bl _dfltu
- mov r2, r0
- mov r3, r1
- mov r0, r4
- mov r1, r9
- bl _dadd
- cmp r6, #0x0
- mov r6, r0
- mov r10, r1
- beq _020E95FC
- mov r0, r4
- mov r1, r9
- mov r2, r6
- mov r3, r10
- bl _deq
- beq _020E9610
-_020E95FC:
- str r6, [sp, #0x8]
- str r10, [sp, #0xc]
- cmp r8, r5
- sub r11, r11, r7
- blo _020E9558
-_020E9610:
- cmp r11, #0x0
- bge _020E9654
- rsb r0, r11, #0x0
- bl _dflt
- mov r3, r1
- mov r2, r0
- ldr r1, _020E9984 ; =0x40140000
- mov r0, #0x0
- bl pow
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- bl _ddiv
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- b _020E968C
-_020E9654:
- mov r0, r11
- bl _dflt
- mov r3, r1
- mov r2, r0
- ldr r1, _020E9984 ; =0x40140000
- mov r0, #0x0
- bl pow
- mov r2, r0
- mov r3, r1
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- bl _dmul
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
-_020E968C:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- mov r2, r11
- bl ldexp
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
- bl __fpclassifyf
- cmp r0, #0x2
- bne _020E96C0
- ldr r0, _020E9988 ; =0x7FEFFFFF
- mvn r1, #0x0
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
-_020E96C0:
- ldr r1, [sp, #0x8]
- ldr r2, [sp, #0xc]
- add r0, sp, #0x8a
- add r4, sp, #0x0
- mov r5, #0x0
- bl __num2dec_internal
- add r0, sp, #0x8a
- add r1, sp, #0xd6
- bl __equals_dec
- cmp r0, #0x0
- bne _020E9934
- add r0, sp, #0x8a
- add r1, sp, #0xd6
- bl __less_dec
- cmp r0, #0x0
- movne r5, #0x1
- ldr r1, [sp, #0x8]
- ldr r0, [sp, #0xc]
- cmp r5, #0x0
- moveq r6, #0x1
- str r1, [sp, #0x0]
- str r0, [sp, #0x4]
- movne r6, #0x0
-_020E971C:
- cmp r6, #0x0
- bne _020E9744
- ldmia r4, {r0-r1}
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- stmia r4, {r0-r1}
- bl __fpclassifyf
- cmp r0, #0x2
- beq _020E9934
- b _020E975C
-_020E9744:
- ldr r1, [r4, #0x0]
- ldr r0, [r4, #0x4]
- subs r1, r1, #0x1
- sbc r0, r0, #0x0
- str r1, [r4, #0x0]
- str r0, [r4, #0x4]
-_020E975C:
- ldr r1, [sp, #0x0]
- ldr r2, [sp, #0x4]
- add r0, sp, #0x64
- bl __num2dec_internal
- cmp r5, #0x0
- beq _020E9788
- add r0, sp, #0x64
- add r1, sp, #0xd6
- bl __less_dec
- cmp r0, #0x0
- beq _020E98AC
-_020E9788:
- cmp r5, #0x0
- bne _020E9864
- add r0, sp, #0xd6
- add r1, sp, #0x64
- bl __less_dec
- cmp r0, #0x0
- bne _020E9864
- add r3, sp, #0x8a
- add r5, sp, #0x3e
- mov r2, #0x9
-_020E97B0:
- ldrh r1, [r3, #0x0]
- ldrh r0, [r3, #0x2]
- add r3, r3, #0x4
- strh r1, [r5, #0x0]
- strh r0, [r5, #0x2]
- add r5, r5, #0x4
- subs r2, r2, #0x1
- bne _020E97B0
- ldrh r0, [r3, #0x0]
- add r3, sp, #0x64
- add r4, sp, #0x8a
- strh r0, [r5, #0x0]
- mov r2, #0x9
-_020E97E4:
- ldrh r1, [r3, #0x0]
- ldrh r0, [r3, #0x2]
- add r3, r3, #0x4
- strh r1, [r4, #0x0]
- strh r0, [r4, #0x2]
- add r4, r4, #0x4
- subs r2, r2, #0x1
- bne _020E97E4
- ldrh r0, [r3, #0x0]
- add r3, sp, #0x3e
- add r5, sp, #0x64
- strh r0, [r4, #0x0]
- mov r2, #0x9
-_020E9818:
- ldrh r1, [r3, #0x0]
- ldrh r0, [r3, #0x2]
- add r3, r3, #0x4
- strh r1, [r5, #0x0]
- strh r0, [r5, #0x2]
- add r5, r5, #0x4
- subs r2, r2, #0x1
- bne _020E9818
- ldrh r4, [r3, #0x0]
- ldr r3, [sp, #0x8]
- ldr r1, [sp, #0x0]
- ldr r2, [sp, #0xc]
- ldr r0, [sp, #0x4]
- strh r4, [r5, #0x0]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- str r3, [sp, #0x0]
- str r2, [sp, #0x4]
- b _020E98AC
-_020E9864:
- add r7, sp, #0x64
- add r3, sp, #0x8a
- mov r2, #0x9
-_020E9870:
- ldrh r1, [r7, #0x0]
- ldrh r0, [r7, #0x2]
- add r7, r7, #0x4
- strh r1, [r3, #0x0]
- strh r0, [r3, #0x2]
- add r3, r3, #0x4
- subs r2, r2, #0x1
- bne _020E9870
- ldrh r2, [r7, #0x0]
- ldr r1, [sp, #0x0]
- ldr r0, [sp, #0x4]
- strh r2, [r3, #0x0]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- b _020E971C
-_020E98AC:
- add r0, sp, #0x3e
- add r1, sp, #0xd6
- add r2, sp, #0x8a
- bl __minus_dec
- add r0, sp, #0x18
- add r1, sp, #0x64
- add r2, sp, #0xd6
- bl __minus_dec
- add r0, sp, #0x3e
- add r1, sp, #0x18
- bl __equals_dec
- cmp r0, #0x0
- beq _020E9910
- ldr r1, [sp, #0x8]
- ldr r0, [sp, #0xc]
- and r1, r1, #0x1
- and r0, r0, #0x0
- cmp r0, #0x0
- cmpeq r1, #0x0
- beq _020E9934
- ldr r1, [sp, #0x0]
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- b _020E9934
-_020E9910:
- add r0, sp, #0x3e
- add r1, sp, #0x18
- bl __less_dec
- cmp r0, #0x0
- bne _020E9934
- ldr r1, [sp, #0x0]
- ldr r0, [sp, #0x4]
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
-_020E9934:
- ldrsb r0, [sp, #0xd6]
- cmp r0, #0x0
- beq _020E995C
- mov r0, #0x0
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0xc]
- mov r1, r0
- bl _dsub
- str r0, [sp, #0x8]
- str r1, [sp, #0xc]
-_020E995C:
- ldr r0, [sp, #0x8]
- ldr r1, [sp, #0xc]
- add sp, sp, #0xfc
- ldmia sp!, {r4-r11,pc}
- .balign 4
-_020E996C: .word 0x3FF00000
-_020E9970: .word 0xBFF00000
-_020E9974: .word UNK_02106B74
-_020E9978: .word 0x7FF00000
-_020E997C: .word UNK_02106F5C
-_020E9980: .word UNK_02106E48
-_020E9984: .word 0x40140000
-_020E9988: .word 0x7FEFFFFF
-
- arm_func_start __msl_generic_count_bits64
-__msl_generic_count_bits64: ; 0x020E998C
- mov r3, r0, lsr #0x1
- ldr r2, _020E9A14 ; =0x55555555
- orr r3, r3, r1, lsl #0x1f
- and r3, r3, r2
- subs r12, r0, r3
- and r2, r2, r1, lsr #0x1
- ldr r0, _020E9A18 ; =0x33333333
- sbc r3, r1, r2
- mov r1, r12, lsr #0x2
- orr r1, r1, r3, lsl #0x1e
- and r2, r12, r0
- and r1, r1, r0
- adds r2, r2, r1
- and r1, r3, r0
- and r0, r0, r3, lsr #0x2
- adc r1, r1, r0
- mov r0, r2, lsr #0x4
- orr r0, r0, r1, lsl #0x1c
- adds r2, r2, r0
- ldr r0, _020E9A1C ; =0x0F0F0F0F
- adc r1, r1, r1, lsr #0x4
- and r3, r2, r0
- and r2, r1, r0
- mov r0, r3, lsr #0x8
- orr r0, r0, r2, lsl #0x18
- adds r1, r3, r0
- adc r2, r2, r2, lsr #0x8
- mov r0, r1, lsr #0x10
- orr r0, r0, r2, lsl #0x10
- adds r1, r1, r0
- adc r0, r2, r2, lsr #0x10
- adds r0, r1, r0
- and r0, r0, #0xff
- bx lr
- .balign 4
-_020E9A14: .word 0x55555555
-_020E9A18: .word 0x33333333
-_020E9A1C: .word 0x0F0F0F0F
-
- arm_func_start __signbitf
-__signbitf:
- stmdb sp!, {r0-r3}
- ldr r0, [sp, #0x4]
- and r0, r0, #0x80000000
- add sp, sp, #0x10
- bx lr
-
- arm_func_start __fpclassifyf
-__fpclassifyf: ; 0x020E9A34
- stmdb sp!, {r0-r3}
- ldr r2, [sp, #0x4]
- ldr r0, _020E9A9C ; =0x7FF00000
- ands r1, r2, r0
- beq _020E9A70
- cmp r1, r0
- bne _020E9A90
- ldr r0, _020E9AA0 ; =0x000FFFFF
- tst r2, r0
- ldreq r0, [sp, #0x0]
- add sp, sp, #0x10
- cmpeq r0, #0x0
- movne r0, #0x1
- moveq r0, #0x2
- bx lr
-_020E9A70:
- ldr r0, _020E9AA0 ; =0x000FFFFF
- tst r2, r0
- ldreq r0, [sp, #0x0]
- add sp, sp, #0x10
- cmpeq r0, #0x0
- movne r0, #0x5
- moveq r0, #0x3
- bx lr
-_020E9A90:
- mov r0, #0x4
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020E9A9C: .word 0x7FF00000
-_020E9AA0: .word 0x000FFFFF
-
- arm_func_start scalbn
-scalbn: ; 0x020E9AA4
- stmdb sp!, {r3-r4,lr}
- sub sp, sp, #0x4
- mov r4, r2
- add r2, sp, #0x0
- bl frexp
- ldr r2, [sp, #0x0]
- add r2, r2, r4
- str r2, [sp, #0x0]
- bl ldexp
- add sp, sp, #0x4
- ldmia sp!, {r3-r4,pc}
-
- arm_func_start stricmp
-stricmp: ; 0x020E9AD0
- stmdb sp!, {r3,lr}
- ldr r3, _020E9B34 ; =UNK_0210420C
-_020E9AD8:
- ldrb r2, [r0], #0x1
- cmp r2, #0x0
- blt _020E9AF0
- cmp r2, #0x80
- bge _020E9AF0
- ldrb r2, [r3, r2]
-_020E9AF0:
- ldrb lr, [r1], #0x1
- and r12, r2, #0xff
- cmp lr, #0x0
- blt _020E9B0C
- cmp lr, #0x80
- bge _020E9B0C
- ldrb lr, [r3, lr]
-_020E9B0C:
- and r2, lr, #0xff
- cmp r12, r2
- mvncc r0, #0x0
- ldmccia sp!, {r3,pc}
- movhi r0, #0x1
- ldmhiia sp!, {r3,pc}
- cmp r12, #0x0
- bne _020E9AD8
- mov r0, #0x0
- ldmia sp!, {r3,pc}
- .balign 4
-_020E9B34: .word UNK_0210420C
-
- arm_func_start strnicmp
-strnicmp: ; 0x020E9B38
- ldr ip, _020E9B40 ; =stricmp
- bx r12
- .balign 4
-_020E9B40: .word stricmp
-
- .section .exception
- ; 0x020EC710
- .global UNK_020EC710
-UNK_020EC710: ; 0x020EC710
- .byte 0x20, 0xFF, 0x09, 0x60
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC718
-UNK_020EC718: ; 0x020EC718
- .byte 0x00, 0xFF, 0x01, 0xB0
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC720
-UNK_020EC720: ; 0x020EC720
- .byte 0x00, 0xFF, 0x01, 0xD0
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC728
-UNK_020EC728: ; 0x020EC728
- .byte 0x20, 0xFF, 0x09, 0x60
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC730
-UNK_020EC730: ; 0x020EC730
- .byte 0x20, 0xFF, 0x11, 0x68
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC738
-UNK_020EC738: ; 0x020EC738
- .byte 0x20, 0xFF, 0x01, 0xB8
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC740
-UNK_020EC740: ; 0x020EC740
- .byte 0x00, 0xFF, 0x05, 0x20
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EC748
-UNK_020EC748: ; 0x020EC748
- .word abort
- .short 37
- .word 0x00100000
- .word exit
- .short 77
- .word 0x00100100
- .word __exit
- .short 297
- .word 0x00200300
- .word nan
- .short 25
- .word 0x00000000
- .word __flush_line_buffered_output_files
- .short 141
- .word 0x00403F00
- .word __flush_all
- .short 105
- .word 0x00403F00
- .word __msl_assertion_failed
- .short 61
- .word 0x00200100
- .word __load_buffer
- .short 141
- .word 0x00200700
- .word __flush_buffer
- .short 137
- .word 0x00200300
- .word fread
- .short 269
- .word 0x00407F00
- .word __fread
- .short 841
- .word 0x00507F00
- .word __fwrite
- .short 689
- .word 0x0060FF00
- .word fclose
- .short 117
- .word 0x00200300
- .word fflush
- .short 233
- .word 0x00100100
- .word ftell
- .short 285
- .word 0x00300F00
- .word _fseek
- .short 489
- .word 0x00400320
- .word fseek
- .short 301
- .word 0x00403F00
- .word rewind
- .short 37
- .word 0x00100100
- .word mbtowc
- .short 29
- .word 0x00100000
- .word wctomb
- .short 29
- .word 0x00100000
- .word mbstowcs
- .short 137
- .word 0x00301F00
- .word wcstombs
- .short 121
- .word 0x00403F00
- .word memset
- .short 21
- .word 0x00100100
- .word long2str
- .short 589
- .word 0x0090FF20
- .word longlong2str
- .short 737
- .word 0x00A0FF20
- .word double2hex
- .short 1245
- .word 0x00F07F20
- .word float2str
- .short 1893
- .word 0x00C0FF20
- .word __pformatter
- .short 2084
- .word UNK_020EC710
- .word __FileWrite
- .short 45
- .word 0x00200300
- .word __StringWrite
- .short 69
- .word 0x00200300
- .word printf
- .short 281
- .word 0x00300120
- .word vsnprintf
- .short 105
- .word 0x00300300
- .word snprintf
- .short 41
- .word 0x00300020
- .word sprintf
- .short 45
- .word 0x00300020
- .word qsort
- .short 357
- .word 0x0070FF00
- .word __sformatter
- .short 3412
- .word UNK_020EC718
- .word vsscanf
- .short 85
- .word 0x00200000
- .word sscanf
- .short 41
- .word 0x00300020
- .word raise
- .short 305
- .word 0x00200300
- .word __strtold
- .short 4684
- .word UNK_020EC720
- .word strtold
- .short 225
- .word 0x00500F00
- .word atod
- .short 17
- .word 0x00000000
- .word __strtoul
- .short 1001
- .word 0x0060FF00
- .word __strtoull
- .short 1101
- .word 0x0080FF00
- .word strtoul
- .short 153
- .word 0x00600300
- .word strtold2
- .short 201
- .word 0x00600300
- .word atol
- .short 21
- .word 0x00000000
- .word wmemcpy
- .short 17
- .word 0x00000000
- .word long2str_wide
- .short 593
- .word 0x0090FF20
- .word longlong2str_wide
- .short 741
- .word 0x00A0FF20
- .word double2hex_wide
- .short 921
- .word 0x00F07F20
- .word float2str_wide
- .short 1612
- .word UNK_020EC728
- .word __wpformatter
- .short 2288
- .word UNK_020EC730
- .word __wStringWrite
- .short 65
- .word 0x00200300
- .word swprintf
- .short 41
- .word 0x00300020
- .word vswprintf
- .short 113
- .word 0x00300300
- .word __ieee754_pow
- .short 4488
- .word UNK_020EC738
- .word frexp
- .short 189
- .word 0x00300120
- .word ldexp
- .short 589
- .word 0x00300120
- .word pow
- .short 13
- .word 0x00000000
- .word __rounddec
- .short 65
- .word 0x00200300
- .word __ull2dec
- .short 205
- .word 0x0050FF00
- .word __timesdec
- .short 389
- .word 0x00D0FF00
- .word __str2dec
- .short 157
- .word 0x00100000
- .word __two_exp
- .short 901
- .word 0x00B00300
- .word __num2dec_internal
- .short 385
- .word 0x00E01F00
- .word __num2dec_internal2
- .short 169
- .word 0x00200300
- .word __dec2num
- .short 1572
- .word UNK_020EC740
- .word scalbn
- .short 45
diff --git a/arm9/asm/scrcmd_10.s b/arm9/asm/scrcmd_10.s
index 6f417ce9..87337ab8 100644
--- a/arm9/asm/scrcmd_10.s
+++ b/arm9/asm/scrcmd_10.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s
index 25911feb..68f9dca8 100644
--- a/arm9/asm/scrcmd_12.s
+++ b/arm9/asm/scrcmd_12.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/scrcmd_17.s b/arm9/asm/scrcmd_17.s
index 3df4d6e4..794a16de 100644
--- a/arm9/asm/scrcmd_17.s
+++ b/arm9/asm/scrcmd_17.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/scrcmd_18.s b/arm9/asm/scrcmd_18.s
deleted file mode 100644
index 25fe86b8..00000000
--- a/arm9/asm/scrcmd_18.s
+++ /dev/null
@@ -1,1801 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start ScrCmd_GetPartySpecies
-ScrCmd_GetPartySpecies: ; 0x0204434C
- ; getpartyspecies XXXX, YYYY
- ; Sets var YYYY to species of mon in party slot XXXX.
- ; If mon is an egg, the value is SPECIES_NONE.
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r5, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- ldrh r1, [r6, #0x0]
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r5, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _020443A0
- add r0, r5, #0x0
- mov r1, #0x5
- mov r2, #0x0
- bl GetMonData
- b _020443A2
-_020443A0:
- mov r0, #0x0
-_020443A2:
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start ScrCmd_CheckPartyMonOTID
-ScrCmd_CheckPartyMonOTID: ; 0x020443A8
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r0, #0x80
- ldr r5, [r0, #0x0]
- add r0, r5, #0x0
- bl ScriptEnvironment_GetSav2Ptr
- bl Sav2_PlayerData_GetProfileAddr
- add r7, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- ldrh r1, [r6, #0x0]
- bl GetPartyMonByIndex
- mov r1, #0x7
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- add r0, r7, #0x0
- bl PlayerProfile_GetTrainerID
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r5, r0
- bne _0204440C
- mov r0, #0x0
- b _0204440E
-_0204440C:
- mov r0, #0x1
-_0204440E:
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
-
- thumb_func_start ScrCmd_GiveEgg
-ScrCmd_GiveEgg: ; 0x02044414
- push {r4-r7, lr}
- sub sp, #0xc
- add r5, r0, #0x0
- add r0, #0x80
- ldr r4, [r0, #0x0]
- ldr r0, [r4, #0xc]
- bl Sav2_PlayerData_GetProfileAddr
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- str r0, [sp, #0x8]
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- bl SavArray_PlayerParty_get
- add r6, r0, #0x0
- bl GetPartyCount
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x6
- bhs _02044494
- mov r0, #0xb
- bl AllocMonZeroed
- add r4, r0, #0x0
- bl ZeroMonData
- mov r0, #0x1
- add r1, r5, #0x0
- bl FUN_02015CF8
- mov r1, #0x3
- str r1, [sp, #0x0]
- str r0, [sp, #0x4]
- ldr r1, [sp, #0x8]
- add r0, r4, #0x0
- mov r2, #0x1
- add r3, r7, #0x0
- bl MOD05_SetEggStats
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl AddMonToParty
- add r0, r4, #0x0
- bl FreeToHeap
-_02044494:
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_SetPartyMonMove
-ScrCmd_SetPartyMonMove: ; 0x0204449C
- push {r3-r7, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, #0x80
- add r7, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r4, #0x0
- add r2, r6, #0x0
- add r3, r7, #0x0
- bl PartyMonSetMoveInSlot
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_PartyMonHasMove
-ScrCmd_PartyMonHasMove: ; 0x020444F4
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r7, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r4, r0, #0x0
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r4, #0x0
- bl GetPartyMonByIndex
- mov r2, #0x0
- mov r1, #0x4c
- add r4, r0, #0x0
- strh r2, [r6, #0x0]
- bl GetMonData
- cmp r0, #0x0
- beq _02044556
- mov r0, #0x0
- pop {r3-r7, pc}
-_02044556:
- add r0, r4, #0x0
- mov r1, #0x36
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- beq _0204458E
- add r0, r4, #0x0
- mov r1, #0x37
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- beq _0204458E
- add r0, r4, #0x0
- mov r1, #0x38
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- beq _0204458E
- add r0, r4, #0x0
- mov r1, #0x39
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- bne _02044592
-_0204458E:
- mov r0, #0x1
- strh r0, [r6, #0x0]
-_02044592:
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_FindPartyMonWithMove
-ScrCmd_FindPartyMonWithMove: ; 0x02044598
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r1, [r1, #0x0]
- str r1, [sp, #0x4]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r5, r0, #0x0
- ldr r0, [sp, #0x4]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- ldr r1, _02044650 ; =0x00000006
- ldr r0, [sp, #0x0]
- ldr r6, _02044654 ; =0x00000000
- strh r1, [r0, #0x0]
- beq _02044648
-_020445E4:
- ldr r0, [sp, #0x4]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r6, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r4, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _0204463E
- add r0, r4, #0x0
- mov r1, #0x36
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- beq _02044638
- add r0, r4, #0x0
- mov r1, #0x37
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- beq _02044638
- add r0, r4, #0x0
- mov r1, #0x38
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- beq _02044638
- add r0, r4, #0x0
- mov r1, #0x39
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- bne _0204463E
-_02044638:
- ldr r0, [sp, #0x0]
- strh r6, [r0, #0x0]
- b _02044648
-_0204463E:
- add r0, r6, #0x1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- cmp r6, r7
- blo _020445E4
-_02044648:
- mov r0, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
- nop
-_02044650: .word 0x00000006
-_02044654: .word 0x00000000
-
- thumb_func_start ScrCmd_SurvivePsn
-ScrCmd_SurvivePsn: ; 0x02044658
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, #0x80
- add r6, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r6, #0x0
- bl GetPartyMonByIndex
- bl SurvivePoisoning
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start ScrCmd_CountPartyMonsAtOrBelowLevel
-ScrCmd_CountPartyMonsAtOrBelowLevel: ; 0x0204469C
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r7, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- str r0, [sp, #0x0]
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x8]
- mov r4, #0x0
- ldr r0, [sp, #0x4]
- add r5, r4, #0x0
- strh r4, [r0, #0x0]
- ldr r0, [sp, #0x8]
- cmp r0, #0x0
- bls _02044726
-_020446EA:
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r4, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r6, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _0204471A
- add r0, r6, #0x0
- mov r1, #0xa0
- mov r2, #0x0
- bl GetMonData
- ldr r1, [sp, #0x0]
- cmp r0, r1
- bhi _0204471A
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
-_0204471A:
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- ldr r0, [sp, #0x8]
- cmp r4, r0
- blo _020446EA
-_02044726:
- ldr r0, [sp, #0x4]
- strh r5, [r0, #0x0]
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start ScrCmd_GetPartyMonLevel
-ScrCmd_GetPartyMonLevel: ; 0x02044730
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r1, r5, #0x0
- add r1, #0x80
- ldr r6, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- ldr r0, [r6, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r2, #0x0
- mov r1, #0x4c
- add r5, r0, #0x0
- strh r2, [r4, #0x0]
- bl GetMonData
- cmp r0, #0x0
- bne _02044786
- add r0, r5, #0x0
- mov r1, #0xa0
- mov r2, #0x0
- bl GetMonData
- strh r0, [r4, #0x0]
-_02044786:
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start ScrCmd_GetPartyMonNature
-ScrCmd_GetPartyMonNature: ; 0x0204478C
- push {r4-r6, lr}
- add r6, r0, #0x0
- add r1, r6, #0x0
- add r1, #0x80
- ldr r5, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r6, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r6, #0x0
- bl ScriptReadHalfword
- add r6, #0x80
- add r1, r0, #0x0
- ldr r0, [r6, #0x0]
- bl VarGet
- add r6, r0, #0x0
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r6, r0
- blt _020447D2
- mov r0, #0x0
- strh r0, [r4, #0x0]
- pop {r4-r6, pc}
-_020447D2:
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r6, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r5, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _020447F2
- mov r0, #0x0
- strh r0, [r4, #0x0]
- pop {r4-r6, pc}
-_020447F2:
- add r0, r5, #0x0
- bl GetMonNature
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start ScrCmd_FindPartyMonWithNature
-ScrCmd_FindPartyMonWithNature: ; 0x02044800
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r7, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- str r0, [sp, #0x0]
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- ldr r1, _02044884 ; =0x000000FF
- ldr r0, [sp, #0x4]
- ldr r5, _02044888 ; =0x00000000
- strh r1, [r0, #0x0]
- beq _0204487E
-_02044848:
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r4, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _02044874
- add r0, r4, #0x0
- bl GetMonNature
- ldr r1, [sp, #0x0]
- cmp r1, r0
- bne _02044874
- ldr r0, [sp, #0x4]
- strh r5, [r0, #0x0]
- b _0204487E
-_02044874:
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r6
- blo _02044848
-_0204487E:
- mov r0, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-_02044884: .word 0x000000FF
-_02044888: .word 0x00000000
-
- thumb_func_start ScrCmd_GetPartyMonFriendship
-ScrCmd_GetPartyMonFriendship: ; 0x0204488C
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r1, r5, #0x0
- add r1, #0x80
- ldr r4, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x9
- mov r2, #0x0
- bl GetMonData
- strh r0, [r6, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start ScrCmd_Unk01BA
-ScrCmd_Unk01BA: ; 0x020448D4
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r1, r5, #0x0
- add r1, #0x80
- ldr r6, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, #0x80
- str r0, [sp, #0x0]
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0x1c]
- ldr r0, [r0, #0x0]
- bl MapHeader_GetMapSec
- add r7, r0, #0x0
- ldr r0, [r6, #0xc]
- bl SavArray_PlayerParty_get
- ldr r1, [sp, #0x0]
- bl GetPartyMonByIndex
- mov r1, #0x9
- mov r2, #0x0
- add r5, r0, #0x0
- bl GetMonData
- add r1, sp, #0x4
- strh r0, [r1, #0x0]
- cmp r4, #0x0
- beq _02044982
- add r0, r5, #0x0
- mov r1, #0x6
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r1, #0x1
- mov r2, #0xb
- bl GetItemAttr
- cmp r0, #0x34
- bne _0204495A
- mov r0, #0x96
- mul r0, r4
- mov r1, #0x64
- bl _s32_div_f
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
-_0204495A:
- add r0, r5, #0x0
- mov r1, #0x9a
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0xb
- bne _0204496E
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
-_0204496E:
- add r0, r5, #0x0
- mov r1, #0x97
- mov r2, #0x0
- bl GetMonData
- cmp r7, r0
- bne _02044982
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
-_02044982:
- add r0, sp, #0x4
- ldrh r1, [r0, #0x0]
- add r1, r1, r4
- strh r1, [r0, #0x0]
- ldrh r1, [r0, #0x0]
- cmp r1, #0xff
- bls _02044994
- mov r1, #0xff
- strh r1, [r0, #0x0]
-_02044994:
- add r0, r5, #0x0
- mov r1, #0x9
- add r2, sp, #0x4
- bl SetMonData
- mov r0, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start ScrCmd_Unk01BB
-ScrCmd_Unk01BB: ; 0x020449A4
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- add r1, r5, #0x0
- add r1, #0x80
- ldr r6, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- ldr r0, [r6, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x9
- mov r2, #0x0
- add r5, r0, #0x0
- bl GetMonData
- add r1, sp, #0x0
- strh r0, [r1, #0x0]
- ldrh r0, [r1, #0x0]
- cmp r4, r0
- bls _020449F8
- mov r0, #0x0
- b _020449FA
-_020449F8:
- sub r0, r0, r4
-_020449FA:
- strh r0, [r1, #0x0]
- add r0, r5, #0x0
- mov r1, #0x9
- add r2, sp, #0x0
- bl SetMonData
- mov r0, #0x0
- add sp, #0x4
- pop {r3-r6, pc}
-
- thumb_func_start ScrCmd_Unk0281
-ScrCmd_Unk0281: ; 0x02044A0C
- push {r3-r7, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r6, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r7, #0x0
- bl GetPartyMonByIndex
- add r4, #0x13
- add r1, r4, #0x0
- mov r2, #0x0
- bl GetMonData
- strh r0, [r6, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk0247
-ScrCmd_Unk0247: ; 0x02044A6C
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl FUN_02054DEC
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk0248
-ScrCmd_Unk0248: ; 0x02044A94
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r1, r5, #0x0
- add r1, #0x80
- ldr r4, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- add r4, r0, #0x0
- mov r1, #0xb0
- mov r2, #0x0
- bl GetMonData
- strh r0, [r6, #0x0]
- add r0, r4, #0x0
- mov r1, #0xb1
- mov r2, #0x0
- bl GetMonData
- strh r0, [r7, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk0177
-ScrCmd_Unk0177: ; 0x02044B00
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r1, r5, #0x0
- add r1, #0x80
- ldr r4, [r1, #0x0]
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- strh r0, [r5, #0x0]
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk019A
-ScrCmd_Unk019A: ; 0x02044B2C
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r6, [r1, #0x0]
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x0]
- ldr r0, [r6, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- mov r5, #0x0
- add r7, r0, #0x0
- add r4, r5, #0x0
- cmp r7, #0x0
- ble _02044B7A
-_02044B5A:
- ldr r0, [r6, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _02044B74
- add r4, r4, #0x1
-_02044B74:
- add r5, r5, #0x1
- cmp r5, r7
- blt _02044B5A
-_02044B7A:
- ldr r0, [sp, #0x0]
- strh r4, [r0, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk019B
-ScrCmd_Unk019B: ; 0x02044B84
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r7, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- str r0, [sp, #0x0]
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- mov r5, #0x0
- add r4, r5, #0x0
- str r0, [sp, #0x8]
- cmp r0, #0x0
- ble _02044C00
-_02044BC8:
- ldr r0, [sp, #0x0]
- cmp r5, r0
- beq _02044BF8
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r6, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _02044BF8
- add r0, r6, #0x0
- mov r1, #0xa2
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044BF8
- add r4, r4, #0x1
-_02044BF8:
- ldr r0, [sp, #0x8]
- add r5, r5, #0x1
- cmp r5, r0
- blt _02044BC8
-_02044C00:
- ldr r0, [sp, #0x4]
- strh r4, [r0, #0x0]
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk019C
-ScrCmd_Unk019C: ; 0x02044C0C
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r7, [r1, #0x0]
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x0]
- ldr r0, [r7, #0xc]
- bl GetStoragePCPointer
- str r0, [sp, #0x4]
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- mov r5, #0x0
- add r4, r5, #0x0
- str r0, [sp, #0x8]
- cmp r0, #0x0
- ble _02044C76
-_02044C44:
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r6, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _02044C6E
- add r0, r6, #0x0
- mov r1, #0xa2
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044C6E
- add r4, r4, #0x1
-_02044C6E:
- ldr r0, [sp, #0x8]
- add r5, r5, #0x1
- cmp r5, r0
- blt _02044C44
-_02044C76:
- ldr r0, [sp, #0x4]
- bl PCStorage_CountMonsInAllBoxes
- add r1, r4, r0
- ldr r0, [sp, #0x0]
- strh r1, [r0, #0x0]
- mov r0, #0x0
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start ScrCmd_Unk019D
-ScrCmd_Unk019D: ; 0x02044C88
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r6, [r1, #0x0]
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x0]
- ldr r0, [r6, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- mov r5, #0x0
- add r7, r0, #0x0
- add r4, r5, #0x0
- cmp r7, #0x0
- ble _02044CD6
-_02044CB6:
- ldr r0, [r6, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044CD0
- add r4, r4, #0x1
-_02044CD0:
- add r5, r5, #0x1
- cmp r5, r7
- blt _02044CB6
-_02044CD6:
- ldr r0, [sp, #0x0]
- strh r4, [r0, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk0119
-ScrCmd_Unk0119: ; 0x02044CE0
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r5, [r1, #0x0]
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x0]
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- ldr r4, _02044D40 ; =0x00000000
- ldr r0, [sp, #0x0]
- strh r4, [r0, #0x0]
- beq _02044D3C
- mov r7, #0x99
-_02044D12:
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r4, #0x0
- bl GetPartyMonByIndex
- add r1, r7, #0x0
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044D32
- ldr r0, [sp, #0x0]
- mov r1, #0x1
- strh r1, [r0, #0x0]
- b _02044D3C
-_02044D32:
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, r6
- blo _02044D12
-_02044D3C:
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-_02044D40: .word 0x00000000
-
- thumb_func_start ScrCmd_Unk011A
-ScrCmd_Unk011A: ; 0x02044D44
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r6, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x6f
- mov r2, #0x0
- bl GetMonData
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start ScrCmd_Unk01C8
-ScrCmd_Unk01C8: ; 0x02044D8C
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r6, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r5, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r4, r0, #0x0
- ldr r0, [r6, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r4, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r6, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044DDA
- mov r0, #0x0
- strh r0, [r5, #0x0]
- pop {r4-r6, pc}
-_02044DDA:
- mov r4, #0x0
- add r0, r6, #0x0
- mov r1, #0x36
- add r2, r4, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044DF0
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_02044DF0:
- add r0, r6, #0x0
- mov r1, #0x37
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044E04
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_02044E04:
- add r0, r6, #0x0
- mov r1, #0x38
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044E18
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_02044E18:
- add r0, r6, #0x0
- mov r1, #0x39
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02044E2C
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_02044E2C:
- strh r4, [r5, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk01C9
-ScrCmd_Unk01C9: ; 0x02044E34
- push {r4-r6, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r5, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r4, r0, #0x0
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r6, #0x0
- bl GetPartyMonByIndex
- add r1, r4, #0x0
- bl FUN_020699A4
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start ScrCmd_Unk01CA
-ScrCmd_Unk01CA: ; 0x02044E78
- push {r3-r7, lr}
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r5, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r7, r0, #0x0
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- add r4, r0, #0x0
- ldr r0, [r5, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r7, #0x0
- bl GetPartyMonByIndex
- add r4, #0x36
- add r1, r4, #0x0
- mov r2, #0x0
- bl GetMonData
- strh r0, [r6, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk01EE
-ScrCmd_Unk01EE: ; 0x02044ED8
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r1, r5, #0x0
- add r1, #0x80
- ldr r4, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x6
- mov r2, #0x0
- bl GetMonData
- strh r0, [r6, #0x0]
- mov r0, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start ScrCmd_Unk01F0
-ScrCmd_Unk01F0: ; 0x02044F20
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r1, r5, #0x0
- add r1, #0x80
- ldr r4, [r1, #0x0]
- bl ScriptReadHalfword
- add r5, #0x80
- add r1, r0, #0x0
- ldr r0, [r5, #0x0]
- bl VarGet
- add r5, r0, #0x0
- ldr r0, [r4, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r2, #0x0
- add r1, sp, #0x0
- strh r2, [r1, #0x0]
- mov r1, #0x6
- add r2, sp, #0x0
- bl SetMonData
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start ScrCmd_Unk01C0
-ScrCmd_Unk01C0: ; 0x02044F58
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x80
- ldr r7, [r1, #0x0]
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- bl ScriptReadHalfword
- add r4, #0x80
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl VarGet
- str r0, [sp, #0x0]
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- ldr r5, _02044FE4 ; =0x00000000
- ldr r0, [sp, #0x4]
- strh r5, [r0, #0x0]
- beq _02044FDE
-_02044F9E:
- ldr r0, [r7, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r4, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _02044FD4
- add r0, r4, #0x0
- mov r1, #0x5
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- ldr r0, [sp, #0x0]
- cmp r0, r1
- bne _02044FD4
- ldr r0, [sp, #0x4]
- mov r1, #0x1
- strh r1, [r0, #0x0]
- b _02044FDE
-_02044FD4:
- add r0, r5, #0x1
- lsl r0, r0, #0x18
- lsr r5, r0, #0x18
- cmp r5, r6
- blo _02044F9E
-_02044FDE:
- mov r0, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-_02044FE4: .word 0x00000000
-
- thumb_func_start ScrCmd_Unk022E
-ScrCmd_Unk022E: ; 0x02044FE8
- push {r3-r7, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x0]
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, #0x80
- add r4, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r4, #0x0
- bl GetPartyMonByIndex
- mov r4, #0x0
- add r6, r0, #0x0
- add r5, r4, #0x0
- add r7, r4, #0x0
-_0204502A:
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- add r1, r7, #0x0
- bl FUN_0207FC5C
- add r1, r0, #0x0
- add r0, r6, #0x0
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02045048
- add r0, r5, #0x1
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
-_02045048:
- add r0, r4, #0x1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- cmp r4, #0x50
- blo _0204502A
- ldr r0, [sp, #0x0]
- strh r5, [r0, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk022F
-ScrCmd_Unk022F: ; 0x0204505C
- push {r3-r7, lr}
- sub sp, #0x10
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- lsl r0, r0, #0x10
- add r4, #0x80
- lsr r6, r0, #0x10
- ldr r0, [r4, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x8]
- str r0, [sp, #0x4]
-_0204509A:
- mov r5, #0x0
- cmp r6, #0x0
- bls _020450E8
- ldr r0, [sp, #0x8]
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
-_020450A6:
- ldr r0, [sp, #0xc]
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r4, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- bne _020450E8
- add r0, r7, #0x0
- mov r1, #0x0
- bl FUN_0207FC5C
- add r1, r0, #0x0
- add r0, r4, #0x0
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _020450DE
- ldr r0, [sp, #0x4]
- add r0, r0, #0x1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x4]
- b _020450E8
-_020450DE:
- add r0, r5, #0x1
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- cmp r5, r6
- blo _020450A6
-_020450E8:
- ldr r0, [sp, #0x8]
- add r0, r0, #0x1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x8]
- cmp r0, #0x50
- blo _0204509A
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x0]
- strh r1, [r0, #0x0]
- mov r0, #0x0
- add sp, #0x10
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk0230
-ScrCmd_Unk0230: ; 0x02045104
- push {r3-r7, lr}
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r7, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r5, #0x80
- add r6, r0, #0x0
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r7, #0x0
- bl GetPartyMonByIndex
- add r5, r0, #0x0
- lsl r0, r6, #0x18
- lsr r0, r0, #0x18
- mov r1, #0x0
- bl FUN_0207FC5C
- add r1, r0, #0x0
- add r0, r5, #0x0
- mov r2, #0x0
- bl GetMonData
- strh r0, [r4, #0x0]
- mov r0, #0x0
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk0231
-ScrCmd_Unk0231: ; 0x02045170
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl VarGet
- add r4, r0, #0x0
- mov r1, #0x1
- add r0, sp, #0x0
- add r5, #0x80
- strb r1, [r0, #0x0]
- ldr r0, [r5, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r1, r6, #0x0
- bl GetPartyMonByIndex
- add r5, r0, #0x0
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- mov r1, #0x0
- bl FUN_0207FC5C
- add r1, r0, #0x0
- add r0, r5, #0x0
- add r2, sp, #0x0
- bl SetMonData
- mov r0, #0x0
- add sp, #0x4
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk02B7
-ScrCmd_Unk02B7: ; 0x020451D0
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- str r0, [sp, #0x0]
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- bl GetPartyCount
- lsl r0, r0, #0x10
- add r4, #0x80
- lsr r6, r0, #0x10
- ldr r0, [r4, #0x0]
- ldr r0, [r0, #0xc]
- bl SavArray_PlayerParty_get
- add r7, r0, #0x0
- mov r0, #0x0
- str r0, [sp, #0x4]
-_0204520C:
- mov r5, #0x0
- cmp r6, #0x0
- bls _0204524C
-_02045212:
- add r0, r7, #0x0
- add r1, r5, #0x0
- bl GetPartyMonByIndex
- mov r1, #0x4c
- mov r2, #0x0
- add r4, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02045242
- add r0, r4, #0x0
- mov r1, #0x3
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _02045242
- ldr r0, [sp, #0x0]
- mov r1, #0x1
- strh r1, [r0, #0x0]
- add sp, #0x8
- mov r0, #0x0
- pop {r3-r7, pc}
-_02045242:
- add r0, r5, #0x1
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- cmp r5, r6
- blo _02045212
-_0204524C:
- ldr r0, [sp, #0x4]
- add r0, r0, #0x1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x4]
- cmp r0, #0x50
- blo _0204520C
- ldr r1, [sp, #0x0]
- mov r0, #0x0
- strh r0, [r1, #0x0]
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start ScrCmd_Unk00A0
-ScrCmd_Unk00A0: ; 0x02045264
- mov r0, #0x0
- bx lr
diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s
index b0a515ef..918354ff 100644
--- a/arm9/asm/scrcmd_3.s
+++ b/arm9/asm/scrcmd_3.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/scrcmd_5.s b/arm9/asm/scrcmd_5.s
index 2f3bd42c..cfce1cf5 100644
--- a/arm9/asm/scrcmd_5.s
+++ b/arm9/asm/scrcmd_5.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/scrcmd_7.s b/arm9/asm/scrcmd_7.s
index 58f8b6dc..b253dab5 100644
--- a/arm9/asm/scrcmd_7.s
+++ b/arm9/asm/scrcmd_7.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/scrcmd_9.s b/arm9/asm/scrcmd_9.s
index bad1ef47..c3d8c4ba 100644
--- a/arm9/asm/scrcmd_9.s
+++ b/arm9/asm/scrcmd_9.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index af0e7940..ef0c42fa 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F34FC
.extern UNK_020F3538
diff --git a/arm9/asm/stdlibmwcc.s b/arm9/asm/stdlibmwcc.s
deleted file mode 100644
index b7966e40..00000000
--- a/arm9/asm/stdlibmwcc.s
+++ /dev/null
@@ -1,3175 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .extern UNK_021D74A8
-
- .section .bss
-
- .global __global_destructor_chain
-__global_destructor_chain: ; 0x021D74C8
- .space 0x18
-
- .section .text
- .balign 4, 0
-
- arm_func_start _dadd
-_dadd:
- stmdb sp!, {r4,lr}
- eors r12, r1, r3
- eormi r3, r3, #0x80000000
- bmi _020EA5DC
-_020E9B54:
- subs r12, r0, r2
- sbcs lr, r1, r3
- bhs _020E9B70
- adds r2, r2, r12
- adc r3, r3, lr
- subs r0, r0, r12
- sbc r1, r1, lr
-_020E9B70:
- mov lr, #0x80000000
- mov r12, r1, lsr #0x14
- orr r1, lr, r1, lsl #0xb
- orr r1, r1, r0, lsr #0x15
- mov r0, r0, lsl #0xb
- movs r4, r12, lsl #0x15
- cmnne r4, #0x200000
- beq _020E9C6C
- mov r4, r3, lsr #0x14
- orr r3, lr, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs lr, r4, lsl #0x15
- beq _020E9CB4
-_020E9BA8:
- subs r4, r12, r4
- beq _020E9C00
- cmp r4, #0x20
- ble _020E9BE4
- cmp r4, #0x38
- movge r4, #0x3f
- sub r4, r4, #0x20
- rsb lr, r4, #0x20
- orrs lr, r2, r3, lsl lr
- mov r2, r3, lsr r4
- orrne r2, r2, #0x1
- adds r0, r0, r2
- adcs r1, r1, #0x0
- blo _020E9C28
- b _020E9C0C
-_020E9BE4:
- rsb lr, r4, #0x20
- movs lr, r2, lsl lr
- rsb lr, r4, #0x20
- mov r2, r2, lsr r4
- orr r2, r2, r3, lsl lr
- mov r3, r3, lsr r4
- orrne r2, r2, #0x1
-_020E9C00:
- adds r0, r0, r2
- adcs r1, r1, r3
- blo _020E9C28
-_020E9C0C:
- add r12, r12, #0x1
- and r4, r0, #0x1
- movs r1, r1, rrx
- orr r0, r4, r0, rrx
- mov lr, r12, lsl #0x15
- cmn lr, #0x200000
- beq _020E9E38
-_020E9C28:
- movs r2, r0, lsl #0x15
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- mov r1, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- tst r2, #0x80000000
- ldmeqia sp!, {r4,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4,lr}
- bxeq lr
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-_020E9C6C:
- cmp r12, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- bics r12, r12, #0x800
- beq _020E9CD8
- orrs r4, r0, r1, lsl #0x1
- bne _020E9E14
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r4, r4, lsl #0x15
- beq _020E9E00
- cmn r4, #0x200000
- bne _020E9E00
- orrs r4, r2, r3, lsl #0x1
- beq _020E9E00
- b _020E9E14
-_020E9CB4:
- cmp r4, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- bic r12, r12, #0x800
- bics r4, r4, #0x800
- beq _020E9D44
- orrs r4, r2, r3, lsl #0x1
- bne _020E9E14
- b _020E9E00
-_020E9CD8:
- orrs r4, r0, r1, lsl #0x1
- beq _020E9D18
- mov r12, #0x1
- bic r1, r1, #0x80000000
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r4, r4, lsl #0x15
- cmnne r4, #0x200000
- mov r4, r4, lsr #0x15
- orr r4, r4, lr, lsr #0x14
- beq _020E9CB4
- orr r3, r3, #0x80000000
- orr r12, r12, lr, lsr #0x14
- b _020E9BA8
-_020E9D18:
- mov r12, r3, lsr #0x14
- mov r1, r3, lsl #0xb
- orr r1, r1, r2, lsr #0x15
- mov r0, r2, lsl #0xb
- movs r4, r12, lsl #0x15
- beq _020E9DCC
- cmn r4, #0x200000
- bne _020E9DCC
- orrs r4, r0, r1, lsl #0x1
- beq _020E9E00
- b _020E9E18
-_020E9D44:
- orrs r4, r2, r3, lsl #0x1
- beq _020E9DDC
- mov r4, #0x1
- bic r3, r3, #0x80000000
- cmp r1, #0x0
- bpl _020E9D68
- orr r12, r12, lr, lsr #0x14
- orr r4, r4, lr, lsr #0x14
- b _020E9BA8
-_020E9D68:
- adds r0, r0, r2
- adcs r1, r1, r3
- blo _020E9D88
- add r12, r12, #0x1
- and r4, r0, #0x1
- movs r1, r1, rrx
- mov r0, r0, rrx
- orr r0, r0, r4
-_020E9D88:
- cmp r1, #0x0
- subges r12, r12, #0x1
- movs r2, r0, lsl #0x15
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmeqia sp!, {r4,lr}
- bxeq lr
- tst r2, #0x80000000
- ldmeqia sp!, {r4,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4,lr}
- bxeq lr
-_020E9DCC:
- mov r1, r3
- mov r0, r2
- ldmia sp!, {r4,lr}
- bx lr
-_020E9DDC:
- cmp r1, #0x0
- subges r12, r12, #0x1
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmia sp!, {r4,lr}
- bx lr
-_020E9E00:
- ldr r1, _020E9E58 ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-_020E9E14:
- mov r1, r3
-_020E9E18:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4,lr}
- bx lr
-_020E9E28: ; 0x020E9E28
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4,lr}
- bx lr
-_020E9E38:
- cmp r12, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- ldr r1, _020E9E58 ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020E9E58: .word 0x7FF00000
-
- arm_func_start _d2f
-_d2f:
- and r2, r1, #0x80000000
- mov r12, r1, lsr #0x14
- bics r12, r12, #0x800
- beq _020E9ED4
- mov r3, r12, lsl #0x15
- cmn r3, #0x200000
- bhs _020E9EB8
- subs r12, r12, #0x380
- bls _020E9EE4
- cmp r12, #0xff
- bge _020E9F54
- mov r1, r1, lsl #0xc
- orr r3, r2, r1, lsr #0x9
- orr r3, r3, r0, lsr #0x1d
- movs r1, r0, lsl #0x3
- orr r0, r3, r12, lsl #0x17
- bxeq lr
- tst r1, #0x80000000
- bxeq lr
- movs r1, r1, lsl #0x1
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020E9EB8:
- orrs r3, r0, r1, lsl #0xc
- bne _020E9ECC
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020E9ECC:
- mvn r0, #0x80000000
- bx lr
-_020E9ED4:
- orrs r3, r0, r1, lsl #0xc
- bne _020E9F4C
- mov r0, r2
- bx lr
-_020E9EE4:
- cmn r12, #0x17
- beq _020E9F38
- bmi _020E9F4C
- mov r1, r1, lsl #0xb
- orr r1, r1, #0x80000000
- mov r3, r1, lsr #0x8
- orr r3, r3, r0, lsr #0x1d
- rsb r12, r12, #0x1
- movs r1, r0, lsl #0x3
- orr r0, r2, r3, lsr r12
- rsb r12, r12, #0x20
- mov r3, r3, lsl r12
- orrne r3, r3, #0x1
- movs r1, r3
- bxeq lr
- tst r1, #0x80000000
- bxeq lr
- movs r1, r1, lsl #0x1
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020E9F38:
- orr r0, r0, r1, lsl #0xc
- movs r1, r0
- mov r0, r2
- addne r0, r0, #0x1
- bx lr
-_020E9F4C:
- mov r0, r2
- bx lr
-_020E9F54:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-
- arm_func_start _dfix
-_dfix: ; 0x020E9F60
- bic r3, r1, #0x80000000
- ldr r2, _020E9FA8 ; =0x0000041E
- subs r2, r2, r3, lsr #0x14
- ble _020E9F9C
- cmp r2, #0x20
- bge _020E9F94
- mov r3, r1, lsl #0xb
- orr r3, r3, #0x80000000
- orr r3, r3, r0, lsr #0x15
- cmp r1, #0x0
- mov r0, r3, lsr r2
- rsbmi r0, r0, #0x0
- bx lr
-_020E9F94:
- mov r0, #0x0
- bx lr
-_020E9F9C:
- mvn r0, r1, asr #0x1f
- add r0, r0, #0x80000000
- bx lr
- .balign 4
-_020E9FA8: .word 0x0000041E
-
- arm_func_start _ll_ufrom_d
-_ll_ufrom_d: ; 0x020E9FAC
- tst r1, #0x80000000
- bne _020EA010
- ldr r2, _020EA034 ; =0x0000043E
- subs r2, r2, r1, lsr #0x14
- blt _020EA028
- cmp r2, #0x40
- bge _020EA004
- mov r12, r1, lsl #0xb
- orr r12, r12, #0x80000000
- orr r12, r12, r0, lsr #0x15
- cmp r2, #0x20
- ble _020E9FEC
- sub r2, r2, #0x20
- mov r1, #0x0
- mov r0, r12, lsr r2
- bx lr
-_020E9FEC:
- mov r3, r0, lsl #0xb
- mov r1, r12, lsr r2
- mov r0, r3, lsr r2
- rsb r2, r2, #0x20
- orr r0, r0, r12, lsl r2
- bx lr
-_020EA004:
- mov r1, #0x0
- mov r0, #0x0
- bx lr
-_020EA010:
- cmn r1, #0x100000
- cmpeq r0, #0x0
- bhi _020EA028
- mov r1, #0x0
- mov r0, #0x0
- bx lr
-_020EA028:
- mvn r1, #0x0
- mvn r0, #0x0
- bx lr
- .balign 4
-_020EA034: .word 0x0000043E
-
- arm_func_start _dflt
-_dflt: ; 0x020EA038
- ands r2, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r0, #0x0
- mov r1, #0x0
- bxeq lr
- mov r3, #0x400
- add r3, r3, #0x1e
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
- movs r1, r0
- mov r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, r2, r1, lsr #0xc
- orr r1, r1, r3, lsl #0x14
- bx lr
-
- arm_func_start _dfltu
-_dfltu: ; 0x020EA078
- cmp r0, #0x0
- mov r1, #0x0
- bxeq lr
- mov r3, #0x400
- add r3, r3, #0x1e
- bmi _020EA09C
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
-_020EA09C:
- mov r1, r0
- mov r0, r1, lsl #0x15
- add r1, r1, r1
- mov r1, r1, lsr #0xc
- orr r1, r1, r3, lsl #0x14
- bx lr
-
- arm_func_start _dmul
-_dmul: ; 0x020EA0B4
- stmdb sp!, {r4-r7,lr}
- eor lr, r1, r3
- and lr, lr, #0x80000000
- mov r12, r1, lsr #0x14
- mov r1, r1, lsl #0xb
- orr r1, r1, r0, lsr #0x15
- mov r0, r0, lsl #0xb
- movs r6, r12, lsl #0x15
- cmnne r6, #0x200000
- beq _020EA1BC
- orr r1, r1, #0x80000000
- bic r12, r12, #0x800
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r5, r4, lsl #0x15
- cmnne r5, #0x200000
- beq _020EA204
- orr r3, r3, #0x80000000
- bic r4, r4, #0x800
-_020EA108:
- add r12, r4, r12
- umull r5, r4, r0, r2
- umull r7, r6, r0, r3
- adds r4, r7, r4
- adc r6, r6, #0x0
- umull r7, r0, r1, r2
- adds r4, r7, r4
- adcs r0, r0, r6
- umull r7, r2, r1, r3
- adc r1, r2, #0x0
- adds r0, r0, r7
- adc r1, r1, #0x0
- orrs r4, r4, r5
- orrne r0, r0, #0x1
- cmp r1, #0x0
- blt _020EA154
- sub r12, r12, #0x1
- adds r0, r0, r0
- adc r1, r1, r1
-_020EA154:
- add r12, r12, #0x2
- subs r12, r12, #0x400
- bmi _020EA2F0
- beq _020EA2F0
- mov r6, r12, lsl #0x14
- cmn r6, #0x100000
- bmi _020EA3F0
- movs r2, r0, lsl #0x15
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- tst r2, #0x80000000
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA1BC:
- bics r12, r12, #0x800
- beq _020EA218
- orrs r6, r0, r1, lsl #0x1
- bne _020EA3A4
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r5, r4, lsl #0x15
- beq _020EA1F8
- cmn r5, #0x200000
- bne _020EA390
- orrs r5, r2, r3, lsl #0x1
- beq _020EA390
- b _020EA3A4
-_020EA1F8:
- orrs r5, r3, r2
- beq _020EA3B8
- b _020EA390
-_020EA204:
- bics r4, r4, #0x800
- beq _020EA2AC
- orrs r6, r2, r3, lsl #0x1
- bne _020EA3A4
- b _020EA390
-_020EA218:
- orrs r6, r0, r1, lsl #0x1
- beq _020EA280
- mov r12, #0x1
- cmp r1, #0x0
- bne _020EA23C
- sub r12, r12, #0x20
- movs r1, r0
- mov r0, #0x0
- bmi _020EA258
-_020EA23C:
- clz r6, r1
- movs r1, r1, lsl r6
- rsb r6, r6, #0x20
- orr r1, r1, r0, lsr r6
- rsb r6, r6, #0x20
- mov r0, r0, lsl r6
- sub r12, r12, r6
-_020EA258:
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r5, r4, lsl #0x15
- cmnne r5, #0x200000
- beq _020EA204
- orr r3, r3, #0x80000000
- bic r4, r4, #0x800
- b _020EA108
-_020EA280:
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r5, r4, lsl #0x15
- beq _020EA404
- cmn r5, #0x200000
- bne _020EA404
- orrs r6, r2, r3, lsl #0x1
- beq _020EA3B8
- b _020EA3A4
-_020EA2AC:
- orrs r5, r2, r3, lsl #0x1
- beq _020EA404
- mov r4, #0x1
- cmp r3, #0x0
- bne _020EA2D0
- sub r4, r4, #0x20
- movs r3, r2
- mov r2, #0x0
- bmi _020EA108
-_020EA2D0:
- clz r6, r3
- movs r3, r3, lsl r6
- rsb r6, r6, #0x20
- orr r3, r3, r2, lsr r6
- rsb r6, r6, #0x20
- mov r2, r2, lsl r6
- sub r4, r4, r6
- b _020EA108
-_020EA2F0:
- cmn r12, #0x34
- beq _020EA388
- bmi _020EA3E0
- mov r2, r1
- mov r3, r0
- add r4, r12, #0x34
- cmp r4, #0x20
- movge r2, r3
- movge r3, #0x0
- subge r4, r4, #0x20
- rsb r5, r4, #0x20
- mov r2, r2, lsl r4
- orr r2, r2, r3, lsr r5
- movs r3, r3, lsl r4
- orrne r2, r2, #0x1
- rsb r12, r12, #0xc
- cmp r12, #0x20
- movge r0, r1
- movge r1, #0x0
- subge r12, r12, #0x20
- rsb r4, r12, #0x20
- mov r0, r0, lsr r12
- orr r0, r0, r1, lsl r4
- orr r1, lr, r1, lsr r12
- cmp r2, #0x0
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- tst r2, #0x80000000
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4-r7,lr}
- bxeq lr
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA388:
- orr r0, r0, r1, lsl #0x1
- b _020EA3C8
-_020EA390:
- ldr r1, _020EA414 ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3A4:
- mov r1, r3
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3B8:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3C8:
- movs r2, r0
- mov r1, lr
- mov r0, #0x0
- addne r0, r0, #0x1
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3E0:
- mov r1, lr
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA3F0:
- ldr r1, _020EA414 ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020EA404:
- mov r1, lr
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020EA414: .word 0x7FF00000
-
- arm_func_start _dsqrt
-_dsqrt: ; 0x020EA418
- stmdb sp!, {r4-r6,lr}
- ldr r2, _020EA5A8 ; =0x7FF00000
- cmp r1, r2
- bhs _020EA564
- movs r12, r1, lsr #0x14
- beq _020EA510
- bic r1, r1, r2
- orr r1, r1, #0x100000
-_020EA438:
- movs r12, r12, asr #0x1
- bhs _020EA44C
- sub r12, r12, #0x1
- movs r0, r0, lsl #0x1
- adc r1, r1, r1
-_020EA44C:
- movs r3, r0, lsl #0x1
- adc r1, r1, r1
- mov r2, #0x0
- mov r4, #0x0
- mov lr, #0x200000
-_020EA460:
- add r6, r4, lr
- cmp r6, r1
- addle r4, r6, lr
- suble r1, r1, r6
- addle r2, r2, lr
- movs r3, r3, lsl #0x1
- adc r1, r1, r1
- movs lr, lr, lsr #0x1
- bne _020EA460
- mov r0, #0x0
- mov r5, #0x0
- cmp r1, r4
- cmpeq r3, #0x80000000
- blo _020EA4A8
- subs r3, r3, #0x80000000
- sbc r1, r1, r4
- add r4, r4, #0x1
- mov r0, #0x80000000
-_020EA4A8:
- movs r3, r3, lsl #0x1
- adc r1, r1, r1
- mov lr, #0x40000000
-_020EA4B4:
- add r6, r5, lr
- cmp r4, r1
- cmpeq r6, r3
- bhi _020EA4D4
- add r5, r6, lr
- subs r3, r3, r6
- sbc r1, r1, r4
- add r0, r0, lr
-_020EA4D4:
- movs r3, r3, lsl #0x1
- adc r1, r1, r1
- movs lr, lr, lsr #0x1
- bne _020EA4B4
- orrs r1, r1, r3
- biceq r0, r0, #0x1
- movs r1, r2, lsr #0x1
- movs r0, r0, rrx
- adcs r0, r0, #0x0
- adc r1, r1, #0x0
- add r1, r1, #0x20000000
- sub r1, r1, #0x100000
- add r1, r1, r12, lsl #0x14
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EA510:
- cmp r1, #0x0
- bne _020EA540
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- mvn r12, #0x13
- clz r5, r0
- movs r0, r0, lsl r5
- sub r12, r12, r5
- mov r1, r0, lsr #0xb
- mov r0, r0, lsl #0x15
- b _020EA438
-_020EA540:
- clz r2, r1
- movs r1, r1, lsl r2
- rsb r2, r2, #0x2b
- mov r1, r1, lsr #0xb
- orr r1, r1, r0, lsr r2
- rsb r2, r2, #0x20
- mov r0, r0, lsl r2
- rsb r12, r2, #0x1
- b _020EA438
-_020EA564:
- tst r1, #0x80000000
- beq _020EA580
- bics r3, r1, #0x80000000
- cmpeq r0, #0x0
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- b _020EA58C
-_020EA580:
- orrs r2, r0, r1, lsl #0xc
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
-_020EA58C:
- ldr r2, _020EA5AC ; =0x7FF80000
- orr r1, r1, r2
- ldr r3, _020EA5B0 ; =UNK_021D74A8
- mov r4, #0x21
- str r4, [r3, #0x0]
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020EA5A8: .word 0x7FF00000
-_020EA5AC: .word 0x7FF80000
-_020EA5B0: .word UNK_021D74A8
-
- arm_func_start _drsb
-_drsb: ; 0x020EA5B4
- eor r1, r1, r3
- eor r3, r1, r3
- eor r1, r1, r3
- eor r0, r0, r2
- eor r2, r0, r2
- eor r0, r0, r2
-
- arm_func_start _dsub
-_dsub:
- stmdb sp!, {r4,lr}
- eors r12, r1, r3
- eormi r3, r3, #0x80000000
- bmi _020E9B54
-_020EA5DC:
- subs r12, r0, r2
- sbcs lr, r1, r3
- bhs _020EA5FC
- eor lr, lr, #0x80000000
- adds r2, r2, r12
- adc r3, r3, lr
- subs r0, r0, r12
- sbc r1, r1, lr
-_020EA5FC:
- mov lr, #0x80000000
- mov r12, r1, lsr #0x14
- orr r1, lr, r1, lsl #0xb
- orr r1, r1, r0, lsr #0x15
- mov r0, r0, lsl #0xb
- movs r4, r12, lsl #0x15
- cmnne r4, #0x200000
- beq _020EA800
- mov r4, r3, lsr #0x14
- orr r3, lr, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs lr, r4, lsl #0x15
- beq _020EA848
-_020EA634:
- subs r4, r12, r4
- beq _020EA6DC
- cmp r4, #0x20
- ble _020EA670
- cmp r4, #0x38
- movge r4, #0x3f
- sub r4, r4, #0x20
- rsb lr, r4, #0x20
- orrs lr, r2, r3, lsl lr
- mov r2, r3, lsr r4
- orrne r2, r2, #0x1
- subs r0, r0, r2
- sbcs r1, r1, #0x0
- bmi _020EA698
- b _020EA788
-_020EA670:
- rsb lr, r4, #0x20
- movs lr, r2, lsl lr
- rsb lr, r4, #0x20
- mov r2, r2, lsr r4
- orr r2, r2, r3, lsl lr
- mov r3, r3, lsr r4
- orrne r2, r2, #0x1
- subs r0, r0, r2
- sbcs r1, r1, r3
- bpl _020EA788
-_020EA698:
- movs r2, r0, lsl #0x15
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- mov r1, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- tst r2, #0x80000000
- ldmeqia sp!, {r4,lr}
- bxeq lr
- movs r2, r2, lsl #0x1
- andeqs r2, r0, #0x1
- ldmeqia sp!, {r4,lr}
- bxeq lr
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-_020EA6DC:
- subs r0, r0, r2
- sbc r1, r1, r3
- orrs lr, r1, r0
- beq _020EA96C
- mov lr, r12, lsl #0x14
- and lr, lr, #0x80000000
- bic r12, r12, #0x800
- cmp r1, #0x0
- bmi _020EA764
- bne _020EA714
- sub r12, r12, #0x20
- movs r1, r0
- mov r0, #0x0
- bmi _020EA730
-_020EA714:
- clz r4, r1
- movs r1, r1, lsl r4
- rsb r4, r4, #0x20
- orr r1, r1, r0, lsr r4
- rsb r4, r4, #0x20
- mov r0, r0, lsl r4
- sub r12, r12, r4
-_020EA730:
- cmp r12, #0x0
- bgt _020EA76C
- rsb r12, r12, #0xc
- cmp r12, #0x20
- movge r0, r1
- movge r1, #0x0
- subge r12, r12, #0x20
- rsb r4, r12, #0x20
- mov r0, r0, lsr r12
- orr r0, r0, r1, lsl r4
- orr r1, lr, r1, lsr r12
- ldmia sp!, {r4,lr}
- bx lr
-_020EA764:
- cmp r1, #0x0
- subges r12, r12, #0x1
-_020EA76C:
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmia sp!, {r4,lr}
- bx lr
-_020EA788:
- mov lr, r12, lsl #0x14
- and lr, lr, #0x80000000
- bic r12, r12, #0x800
- cmp r1, #0x0
- bne _020EA7AC
- sub r12, r12, #0x20
- movs r1, r0
- mov r0, #0x0
- bmi _020EA7C8
-_020EA7AC:
- clz r4, r1
- movs r1, r1, lsl r4
- rsb r4, r4, #0x20
- orr r1, r1, r0, lsr r4
- rsb r4, r4, #0x20
- mov r0, r0, lsl r4
- sub r12, r12, r4
-_020EA7C8:
- cmp r12, #0x0
- orrgt r12, r12, lr, lsr #0x14
- bgt _020EA698
- rsb r12, r12, #0xc
- cmp r12, #0x20
- movge r0, r1
- movge r1, #0x0
- subge r12, r12, #0x20
- rsb r4, r12, #0x20
- mov r0, r0, lsr r12
- orr r0, r0, r1, lsl r4
- orr r1, lr, r1, lsr r12
- ldmia sp!, {r4,lr}
- bx lr
-_020EA800:
- cmp r12, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- bics r12, r12, #0x800
- beq _020EA86C
- orrs r4, r0, r1, lsl #0x1
- bne _020EA948
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r4, r4, lsl #0x15
- beq _020EA934
- cmn r4, #0x200000
- bne _020EA934
- orrs r4, r2, r3, lsl #0x1
- beq _020EA95C
- b _020EA948
-_020EA848:
- cmp r4, #0x800
- movge lr, #0x80000000
- movlt lr, #0x0
- bic r12, r12, #0x800
- bics r4, r4, #0x800
- beq _020EA8E4
- orrs r4, r2, r3, lsl #0x1
- bne _020EA948
- b _020EA934
-_020EA86C:
- orrs r4, r0, r1, lsl #0x1
- beq _020EA8AC
- mov r12, #0x1
- bic r1, r1, #0x80000000
- mov r4, r3, lsr #0x14
- mov r3, r3, lsl #0xb
- orr r3, r3, r2, lsr #0x15
- mov r2, r2, lsl #0xb
- movs r4, r4, lsl #0x15
- cmnne r4, #0x200000
- mov r4, r4, lsr #0x15
- orr r4, r4, lr, lsr #0x14
- beq _020EA848
- orr r3, r3, #0x80000000
- orr r12, r12, lr, lsr #0x14
- b _020EA634
-_020EA8AC:
- mov r12, r3, lsr #0x14
- mov r1, r3, lsl #0xb
- orr r1, r1, r2, lsr #0x15
- mov r0, r2, lsl #0xb
- movs r4, r12, lsl #0x15
- beq _020EA8D8
- cmn r4, #0x200000
- bne _020EA900
- orrs r4, r0, r1, lsl #0x1
- bne _020EA94C
- b _020EA934
-_020EA8D8:
- orrs r4, r0, r1, lsl #0x1
- beq _020EA96C
- b _020EA900
-_020EA8E4:
- orrs r4, r2, r3, lsl #0x1
- beq _020EA910
- mov r4, #0x1
- bic r3, r3, #0x80000000
- orr r12, r12, lr, lsr #0x14
- orr r4, r4, lr, lsr #0x14
- b _020EA634
-_020EA900:
- mov r1, r3
- mov r0, r2
- ldmia sp!, {r4,lr}
- bx lr
-_020EA910:
- cmp r1, #0x0
- subges r12, r12, #0x1
- mov r0, r0, lsr #0xb
- orr r0, r0, r1, lsl #0x15
- add r1, r1, r1
- orr r1, lr, r1, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- ldmia sp!, {r4,lr}
- bx lr
-_020EA934:
- ldr r1, _020EA97C ; =0x7FF00000
- orr r1, lr, r1
- mov r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-_020EA948:
- mov r1, r3
-_020EA94C:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4,lr}
- bx lr
-_020EA95C:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- ldmia sp!, {r4,lr}
- bx lr
-_020EA96C:
- mov r1, #0x0
- mov r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020EA97C: .word 0x7FF00000
-
- arm_func_start _fadd
-_fadd: ; 0x020EA980
- eors r2, r0, r1
- eormi r1, r1, #0x80000000
- bmi _020EB7BC
-_020EA98C:
- subs r12, r0, r1
- subcc r0, r0, r12
- addcc r1, r1, r12
- mov r2, #0x80000000
- mov r3, r0, lsr #0x17
- orr r0, r2, r0, lsl #0x8
- ands r12, r3, #0xff
- cmpne r12, #0xff
- beq _020EAA20
- mov r12, r1, lsr #0x17
- orr r1, r2, r1, lsl #0x8
- ands r2, r12, #0xff
- beq _020EAA60
-_020EA9C0:
- subs r12, r3, r12
- beq _020EA9D8
- rsb r2, r12, #0x20
- movs r2, r1, lsl r2
- mov r1, r1, lsr r12
- orrne r1, r1, #0x1
-_020EA9D8:
- adds r0, r0, r1
- blo _020EA9F8
- and r1, r0, #0x1
- orr r0, r1, r0, rrx
- add r3, r3, #0x1
- and r2, r3, #0xff
- cmp r2, #0xff
- beq _020EAB68
-_020EA9F8:
- ands r1, r0, #0xff
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- tst r1, #0x80
- bxeq lr
- ands r1, r1, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EAA20:
- cmp r3, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- ands r3, r3, #0xff
- beq _020EAA84
- movs r0, r0, lsl #0x1
- bne _020EAB94
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EAB88
- cmp r12, #0xff
- blt _020EAB88
- cmp r1, #0x0
- beq _020EAB88
- b _020EAB94
-_020EAA60:
- cmp r3, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- and r3, r3, #0xff
- ands r12, r12, #0xff
- beq _020EAAE0
-_020EAA78:
- movs r1, r1, lsl #0x1
- bne _020EAB94
- b _020EAB88
-_020EAA84:
- movs r0, r0, lsl #0x1
- beq _020EAABC
- mov r3, #0x1
- mov r0, r0, lsr #0x1
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x8
- ands r12, r12, #0xff
- beq _020EAAE0
- cmp r12, #0xff
- beq _020EAA78
- orr r1, r1, #0x80000000
- orr r3, r3, r2, lsr #0x17
- orr r12, r12, r2, lsr #0x17
- b _020EA9C0
-_020EAABC:
- mov r3, r1, lsr #0x17
- mov r0, r1, lsl #0x9
- ands r3, r3, #0xff
- beq _020EAB48
- cmp r3, #0xff
- blt _020EAB48
- cmp r0, #0x0
- beq _020EAB88
- b _020EAB80
-_020EAAE0:
- movs r1, r1, lsl #0x1
- beq _020EAB50
- mov r1, r1, lsr #0x1
- mov r12, #0x1
- orr r3, r3, r2, lsr #0x17
- orr r12, r12, r2, lsr #0x17
- cmp r0, #0x0
- bmi _020EA9C0
- adds r0, r0, r1
- blo _020EAB14
- and r1, r0, #0x1
- orr r0, r1, r0, rrx
- add r12, r12, #0x1
-_020EAB14:
- cmp r0, #0x0
- subge r12, r12, #0x1
- ands r1, r0, #0xff
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r12, lsl #0x17
- bxeq lr
- tst r1, #0x80
- bxeq lr
- ands r1, r1, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EAB48:
- mov r0, r1
- bx lr
-_020EAB50:
- cmp r0, #0x0
- subges r3, r3, #0x1
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bx lr
-_020EAB68:
- cmp r3, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EAB80:
- mvn r0, #0x80000000
- bx lr
-_020EAB88:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EAB94:
- mvn r0, #0x80000000
- bx lr
-_020EAB9C: ; 0x020EAB9C
- mvn r0, #0x80000000
- bx lr
-
- arm_func_start _dgr
-_dgr: ; 0x020EABA4
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EAC18
- cmn r12, r3, lsl #0x1
- bhs _020EAC2C
-_020EABB8:
- orrs r12, r3, r1
- bmi _020EABE8
- cmp r1, r3
- cmpeq r0, r2
- movhi r0, #0x1
- movls r0, #0x0
- bx lr
-_020EABD4:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EABE8:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- msr cpsr_f, r12
- bxeq lr
- cmp r3, r1
- cmpeq r2, r0
- movhi r0, #0x1
- movls r0, #0x0
- bx lr
-_020EAC18:
- bne _020EABD4
- cmp r0, #0x0
- bhi _020EABD4
- cmn r12, r3, lsl #0x1
- blo _020EABB8
-_020EAC2C:
- bne _020EABD4
- cmp r2, #0x0
- bhi _020EABD4
- b _020EABB8
-
- arm_func_start _dleq
-_dleq: ; 0x020EAC3C
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EACBC
- cmn r12, r3, lsl #0x1
- bhs _020EACD0
-_020EAC50:
- orrs r12, r3, r1
- bmi _020EAC84
- cmp r1, r3
- cmpeq r0, r2
- movls r0, #0x1
- movhi r0, #0x0
- bx lr
-_020EAC6C:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAC84:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x1
- bne _020EACA8
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- orr r12, r12, #0x40000000
- msr cpsr_f, r12
- bxeq lr
-_020EACA8:
- cmp r3, r1
- cmpeq r2, r0
- movls r0, #0x1
- movhi r0, #0x0
- bx lr
-_020EACBC:
- bne _020EAC6C
- cmp r0, #0x0
- bhi _020EAC6C
- cmn r12, r3, lsl #0x1
- blo _020EAC50
-_020EACD0:
- bne _020EAC6C
- cmp r2, #0x0
- bhi _020EAC6C
- b _020EAC50
-
- arm_func_start _dls
-_dls: ; 0x020EACE0
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EAD58
- cmn r12, r3, lsl #0x1
- bhs _020EAD6C
-_020EACF4:
- orrs r12, r3, r1
- bmi _020EAD24
- cmp r1, r3
- cmpeq r0, r2
- movcc r0, #0x1
- movcs r0, #0x0
- bx lr
-_020EAD10:
- mov r0, #0x0
- mrs r12, cpsr
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAD24:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x0
- bne _020EAD44
- mrs r12, cpsr
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bxeq lr
-_020EAD44:
- cmp r3, r1
- cmpeq r2, r0
- movcc r0, #0x1
- movcs r0, #0x0
- bx lr
-_020EAD58:
- bne _020EAD10
- cmp r0, #0x0
- bhi _020EAD10
- cmn r12, r3, lsl #0x1
- blo _020EACF4
-_020EAD6C:
- bne _020EAD10
- cmp r2, #0x0
- bhi _020EAD10
- b _020EACF4
-
- arm_func_start _deq
-_deq: ; 0x020EAD7C
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EADE4
- cmn r12, r3, lsl #0x1
- bhs _020EADF8
-_020EAD90:
- orrs r12, r3, r1
- bmi _020EADC0
- cmp r1, r3
- cmpeq r0, r2
- moveq r0, #0x1
- movne r0, #0x0
- bx lr
-_020EADAC:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EADC0:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x1
- bxeq lr
- cmp r3, r1
- cmpeq r2, r0
- moveq r0, #0x1
- movne r0, #0x0
- bx lr
-_020EADE4:
- bne _020EADAC
- cmp r0, #0x0
- bhi _020EADAC
- cmn r12, r3, lsl #0x1
- blo _020EAD90
-_020EADF8:
- bne _020EADAC
- cmp r2, #0x0
- bhi _020EADAC
- b _020EAD90
-
- arm_func_start _dneq
-_dneq: ; 0x020EAE08
- mov r12, #0x200000
- cmn r12, r1, lsl #0x1
- bhs _020EAE70
- cmn r12, r3, lsl #0x1
- bhs _020EAE84
-_020EAE1C:
- orrs r12, r3, r1
- bmi _020EAE4C
- cmp r1, r3
- cmpeq r0, r2
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
-_020EAE38:
- mov r0, #0x1
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EAE4C:
- orr r12, r0, r12, lsl #0x1
- orrs r12, r12, r2
- moveq r0, #0x0
- bxeq lr
- cmp r3, r1
- cmpeq r2, r0
- movne r0, #0x1
- moveq r0, #0x0
- bx lr
-_020EAE70:
- bne _020EAE38
- cmp r0, #0x0
- bhi _020EAE38
- cmn r12, r3, lsl #0x1
- blo _020EAE1C
-_020EAE84:
- bne _020EAE38
- cmp r2, #0x0
- bhi _020EAE38
- b _020EAE1C
-
- arm_func_start _fgeq
-_fgeq: ; 0x020EAE94
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- cmpcs r3, r1, lsl #0x1
- blo _020EAEDC
- cmp r0, #0x0
- bicmi r0, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r1, #0x0
- bicmi r1, r1, #0x80000000
- rsbmi r1, r1, #0x0
- cmp r0, r1
- movge r0, #0x1
- movlt r0, #0x0
- mrs r12, cpsr
- biclt r12, r12, #0x20000000
- orrge r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAEDC:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _fgr
-_fgr: ; 0x020EAEF0
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- cmpcs r3, r1, lsl #0x1
- blo _020EAF38
- cmp r0, #0x0
- bicmi r0, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r1, #0x0
- bicmi r1, r1, #0x80000000
- rsbmi r1, r1, #0x0
- cmp r0, r1
- movgt r0, #0x1
- movle r0, #0x0
- mrs r12, cpsr
- bicle r12, r12, #0x20000000
- orrgt r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAF38:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _fleq
-_fleq: ; 0x020EAF4C
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- cmpcs r3, r1, lsl #0x1
- blo _020EAF9C
- cmp r0, #0x0
- bicmi r0, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r1, #0x0
- bicmi r1, r1, #0x80000000
- rsbmi r1, r1, #0x0
- cmp r0, r1
- movle r0, #0x1
- movgt r0, #0x0
- mrs r12, cpsr
- orrgt r12, r12, #0x20000000
- bicgt r12, r12, #0x40000000
- bicle r12, r12, #0x20000000
- orrle r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EAF9C:
- mov r0, #0x0
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _fls
-_fls: ; 0x020EAFB4
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- cmpcs r3, r1, lsl #0x1
- blo _020EAFFC
- cmp r0, #0x0
- bicmi r0, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r1, #0x0
- bicmi r1, r1, #0x80000000
- rsbmi r1, r1, #0x0
- cmp r0, r1
- movlt r0, #0x1
- movge r0, #0x0
- mrs r12, cpsr
- orrge r12, r12, #0x20000000
- biclt r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-_020EAFFC:
- mov r0, #0x0
- mrs r12, cpsr
- orr r12, r12, #0x20000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _feq
-_feq: ; 0x020EB010
- mov r3, #0xff000000
- cmp r3, r0, lsl #0x1
- blo _020EB064
- cmp r3, r1, lsl #0x1
- blo _020EB064
- orr r3, r0, r1
- movs r3, r3, lsl #0x1
- moveq r0, #0x0
- bne _020EB044
- mrs r12, cpsr
- orr r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EB044:
- cmp r0, r1
- movne r0, #0x1
- moveq r0, #0x0
- mrs r12, cpsr
- bicne r12, r12, #0x40000000
- orreq r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-_020EB064:
- mov r0, #0x1
- mrs r12, cpsr
- bic r12, r12, #0x40000000
- msr cpsr_f, r12
- bx lr
-
- arm_func_start _frdiv
-_frdiv: ; 0x020EB078
- eor r0, r0, r1
- eor r1, r0, r1
- eor r0, r0, r1
-
- arm_func_start _fdiv
-_fdiv: ; 0x020EB084
- stmdb sp!, {lr}
- mov r12, #0xff
- ands r3, r12, r0, lsr #0x17
- cmpne r3, #0xff
- beq _020EB258
- ands r12, r12, r1, lsr #0x17
- cmpne r12, #0xff
- beq _020EB294
- orr r1, r1, #0x800000
- orr r0, r0, #0x800000
- bic r2, r0, #0xff000000
- bic lr, r1, #0xff000000
-_020EB0B4:
- cmp r2, lr
- movcc r2, r2, lsl #0x1
- subcc r3, r3, #0x1
- teq r0, r1
- sub r0, pc, #0x94
- ldrb r1, [r0, lr, lsr #0xf]
- rsb lr, lr, #0x0
- mov r0, lr, asr #0x1
- mul r0, r1, r0
- add r0, r0, #0x80000000
- mov r0, r0, lsr #0x6
- mul r0, r1, r0
- mov r0, r0, lsr #0xe
- mul r1, lr, r0
- sub r12, r3, r12
- mov r1, r1, lsr #0xc
- mul r1, r0, r1
- mov r0, r0, lsl #0xe
- add r0, r0, r1, lsr #0xf
- umull r1, r0, r2, r0
- mov r3, r0
- orrmi r0, r0, #0x80000000
- adds r12, r12, #0x7e
- bmi _020EB35C
- cmp r12, #0xfe
- bge _020EB410
- add r0, r0, r12, lsl #0x17
- mov r12, r1, lsr #0x1c
- cmp r12, #0x7
- beq _020EB238
- add r0, r0, r1, lsr #0x1f
- ldmia sp!, {lr}
- bx lr
-_020EB138: ; not code
- .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9
- .byte 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA
- .byte 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE
- .byte 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2
- .byte 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8
- .byte 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF
- .byte 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6
- .byte 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF
- .byte 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7
- .byte 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1
- .byte 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B
- .byte 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95
- .byte 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90
- .byte 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B
- .byte 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86
- .byte 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82
- .byte 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
-_020EB238:
- mov r1, r3, lsl #0x1
- add r1, r1, #0x1
- rsb lr, lr, #0x0
- mul r1, lr, r1
- cmp r1, r2, lsl #0x18
- addmi r0, r0, #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB258:
- eor lr, r0, r1
- and lr, lr, #0x80000000
- cmp r3, #0x0
- beq _020EB2B0
- movs r0, r0, lsl #0x9
- bne _020EB3F8
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB3E8
- cmp r12, #0xff
- blt _020EB3E8
- cmp r1, #0x0
- beq _020EB404
- b _020EB3E0
-_020EB294:
- eor lr, r0, r1
- and lr, lr, #0x80000000
- cmp r12, #0x0
- beq _020EB314
-_020EB2A4:
- movs r1, r1, lsl #0x9
- bne _020EB3E0
- b _020EB430
-_020EB2B0:
- movs r2, r0, lsl #0x9
- beq _020EB2E4
- clz r3, r2
- movs r2, r2, lsl r3
- rsb r3, r3, #0x0
- mov r2, r2, lsr #0x8
- ands r12, r12, r1, lsr #0x17
- beq _020EB33C
- cmp r12, #0xff
- beq _020EB2A4
- orr r1, r1, #0x800000
- bic lr, r1, #0xff000000
- b _020EB0B4
-_020EB2E4:
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB308
- cmp r12, #0xff
- blt _020EB430
- cmp r1, #0x0
- beq _020EB430
- b _020EB3E0
-_020EB308:
- cmp r1, #0x0
- beq _020EB404
- b _020EB430
-_020EB314:
- movs r12, r1, lsl #0x9
- beq _020EB3E8
- mov lr, r12
- clz r12, lr
- movs lr, lr, lsl r12
- rsb r12, r12, #0x0
- mov lr, lr, lsr #0x8
- orr r0, r0, #0x800000
- bic r2, r0, #0xff000000
- b _020EB0B4
-_020EB33C:
- movs r12, r1, lsl #0x9
- beq _020EB3E8
- mov lr, r12
- clz r12, lr
- movs lr, lr, lsl r12
- rsb r12, r12, #0x0
- mov lr, lr, lsr #0x8
- b _020EB0B4
-_020EB35C:
- and r0, r0, #0x80000000
- cmn r12, #0x18
- beq _020EB3D0
- bmi _020EB428
- add r1, r12, #0x17
- mov r2, r2, lsl r1
- rsb r12, r12, #0x0
- mov r3, r3, lsr r12
- orr r0, r0, r3
- rsb lr, lr, #0x0
- mul r1, lr, r3
- cmp r1, r2
- ldmeqia sp!, {lr}
- bxeq lr
- add r1, r1, lr
- cmp r1, r2
- beq _020EB3C4
- addmi r0, r0, #0x1
- subpl r1, r1, lr
- add r1, lr, r1, lsl #0x1
- cmp r1, r2, lsl #0x1
- and r3, r0, #0x1
- addmi r0, r0, #0x1
- addeq r0, r0, r3
- ldmia sp!, {lr}
- bx lr
-_020EB3C4:
- add r0, r0, #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB3D0:
- cmn r2, lr
- addne r0, r0, #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB3E0:
- mov r0, r1
- b _020EB3F8
-_020EB3E8:
- mov r0, #0xff000000
- orr r0, lr, r0, lsr #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB3F8:
- mvn r0, #0x80000000
- ldmia sp!, {lr}
- bx lr
-_020EB404:
- mvn r0, #0x80000000
- ldmia sp!, {lr}
- bx lr
-_020EB410:
- tst r0, #0x80000000
- mov r0, #0xff000000
- movne r0, r0, asr #0x1
- moveq r0, r0, lsr #0x1
- ldmia sp!, {lr}
- bx lr
-_020EB428:
- ldmia sp!, {lr}
- bx lr
-_020EB430:
- mov r0, lr
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start _f2d
-_f2d:
- and r2, r0, #0x80000000
- mov r12, r0, lsr #0x17
- mov r3, r0, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB46C
- cmp r12, #0xff
- beq _020EB498
-_020EB458:
- add r12, r12, #0x380
- mov r0, r3, lsl #0x14
- orr r1, r2, r3, lsr #0xc
- orr r1, r1, r12, lsl #0x14
- bx lr
-_020EB46C:
- cmp r3, #0x0
- bne _020EB480
- mov r1, r2
- mov r0, #0x0
- bx lr
-_020EB480:
- mov r3, r3, lsr #0x1
- clz r12, r3
- movs r3, r3, lsl r12
- rsb r12, r12, #0x1
- add r3, r3, r3
- b _020EB458
-_020EB498:
- cmp r3, #0x0
- bhi _020EB4B0
- ldr r1, _020EB4BC ; =0x7FF00000
- orr r1, r1, r2
- mov r0, #0x0
- bx lr
-_020EB4B0:
- mvn r0, #0x0
- bic r1, r0, #0x80000000
- bx lr
- .balign 4
-_020EB4BC: .word 0x7FF00000
-
- arm_func_start _ffix
-_ffix: ; 0x020EB4C0
- bic r1, r0, #0x80000000
- mov r2, #0x9e
- subs r2, r2, r1, lsr #0x17
- ble _020EB4E8
- mov r1, r1, lsl #0x8
- orr r1, r1, #0x80000000
- cmp r0, #0x0
- mov r0, r1, lsr r2
- rsbmi r0, r0, #0x0
- bx lr
-_020EB4E8:
- mvn r0, r0, asr #0x1f
- add r0, r0, #0x80000000
- bx lr
-
- arm_func_start _ffixu
-_ffixu: ; 0x020EB4F4
- tst r0, #0x80000000
- bne _020EB518
- mov r1, #0x9e
- subs r1, r1, r0, lsr #0x17
- blt _020EB52C
- mov r2, r0, lsl #0x8
- orr r0, r2, #0x80000000
- mov r0, r0, lsr r1
- bx lr
-_020EB518:
- mov r2, #0xff000000
- cmp r2, r0, lsl #0x1
- movcs r0, #0x0
- mvncc r0, #0x0
- bx lr
-_020EB52C:
- mvn r0, #0x0
- bx lr
-
- arm_func_start _fflt
-_fflt: ; 0x020EB534
- ands r2, r0, #0x80000000
- rsbmi r0, r0, #0x0
- cmp r0, #0x0
- bxeq lr
- clz r3, r0
- movs r0, r0, lsl r3
- rsb r3, r3, #0x9e
- ands r1, r0, #0xff
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bxeq lr
- tst r1, #0x80
- bxeq lr
- ands r3, r1, #0x7f
- andeqs r3, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-
- arm_func_start _ffltu
-_ffltu: ; 0x020EB57C
- cmp r0, #0x0
- bxeq lr
- mov r3, #0x9e
- bmi _020EB598
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
-_020EB598:
- ands r2, r0, #0xff
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bxeq lr
- tst r2, #0x80
- bxeq lr
- ands r1, r2, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-
- arm_func_start _fmul
-_fmul: ; 0x020EB5C4
- eor r2, r0, r1
- and r2, r2, #0x80000000
- mov r12, #0xff
- ands r3, r12, r0, lsr #0x17
- mov r0, r0, lsl #0x8
- cmpne r3, #0xff
- beq _020EB640
- orr r0, r0, #0x80000000
- ands r12, r12, r1, lsr #0x17
- mov r1, r1, lsl #0x8
- cmpne r12, #0xff
- beq _020EB680
- orr r1, r1, #0x80000000
-_020EB5F8:
- add r12, r3, r12
- umull r1, r3, r0, r1
- movs r0, r3
- addpl r0, r0, r0
- subpl r12, r12, #0x1
- subs r12, r12, #0x7f
- bmi _020EB70C
- cmp r12, #0xfe
- bge _020EB778
- ands r3, r0, #0xff
- orr r0, r2, r0, lsr #0x8
- add r0, r0, r12, lsl #0x17
- tst r3, #0x80
- bxeq lr
- orrs r1, r1, r3, lsl #0x19
- andeqs r3, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EB640:
- cmp r3, #0x0
- beq _020EB694
- movs r0, r0, lsl #0x1
- bne _020EB768
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB674
- cmp r12, #0xff
- blt _020EB75C
- cmp r1, #0x0
- beq _020EB75C
- b _020EB768
-_020EB674:
- cmp r1, #0x0
- beq _020EB770
- b _020EB75C
-_020EB680:
- cmp r12, #0x0
- beq _020EB6F0
-_020EB688:
- movs r1, r1, lsl #0x1
- bne _020EB768
- b _020EB75C
-_020EB694:
- movs r0, r0, lsl #0x1
- beq _020EB6CC
- mov r0, r0, lsr #0x1
- clz r3, r0
- movs r0, r0, lsl r3
- rsb r3, r3, #0x1
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x8
- ands r12, r12, #0xff
- beq _020EB6F0
- cmp r12, #0xff
- beq _020EB688
- orr r1, r1, #0x80000000
- b _020EB5F8
-_020EB6CC:
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EB79C
- cmp r12, #0xff
- blt _020EB79C
- cmp r1, #0x0
- beq _020EB770
- b _020EB768
-_020EB6F0:
- movs r1, r1, lsl #0x1
- beq _020EB79C
- mov r1, r1, lsr #0x1
- clz r12, r1
- movs r1, r1, lsl r12
- rsb r12, r12, #0x1
- b _020EB5F8
-_020EB70C:
- cmn r12, #0x18
- beq _020EB754
- bmi _020EB794
- cmp r1, #0x0
- orrne r0, r0, #0x1
- mov r3, r0
- mov r0, r0, lsr #0x8
- rsb r12, r12, #0x0
- orr r0, r2, r0, lsr r12
- rsb r12, r12, #0x18
- movs r1, r3, lsl r12
- bxeq lr
- tst r1, #0x80000000
- bxeq lr
- movs r1, r1, lsl #0x1
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EB754:
- mov r0, r0, lsl #0x1
- b _020EB784
-_020EB75C:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EB768:
- mvn r0, #0x80000000
- bx lr
-_020EB770:
- mvn r0, #0x80000000
- bx lr
-_020EB778:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EB784:
- movs r1, r0
- mov r0, r2
- addne r0, r0, #0x1
- bx lr
-_020EB794:
- mov r0, r2
- bx lr
-_020EB79C:
- mov r0, r2
- bx lr
-
- arm_func_start _frsb
-_frsb: ; 0x020EB7A4
- eor r0, r0, r1
- eor r1, r0, r1
- eor r0, r0, r1
-
- arm_func_start _fsub
-_fsub: ; 0x020EB7B0
- eors r2, r0, r1
- eormi r1, r1, #0x80000000
- bmi _020EA98C
-_020EB7BC:
- subs r12, r0, r1
- eorcc r12, r12, #0x80000000
- subcc r0, r0, r12
- addcc r1, r1, r12
- mov r2, #0x80000000
- mov r3, r0, lsr #0x17
- orr r0, r2, r0, lsl #0x8
- ands r12, r3, #0xff
- cmpne r12, #0xff
- beq _020EB8D8
- mov r12, r1, lsr #0x17
- orr r1, r2, r1, lsl #0x8
- ands r2, r12, #0xff
- beq _020EB918
-_020EB7F4:
- subs r12, r3, r12
- beq _020EB83C
- rsb r2, r12, #0x20
- movs r2, r1, lsl r2
- mov r1, r1, lsr r12
- orrne r1, r1, #0x1
- subs r0, r0, r1
- bpl _020EB880
- ands r1, r0, #0xff
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- tst r1, #0x80
- bxeq lr
- ands r1, r1, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EB83C:
- subs r0, r0, r1
- beq _020EB9E4
- mov r2, r3, lsl #0x17
- and r2, r2, #0x80000000
- bic r3, r3, #0x100
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
- cmp r3, #0x0
- bgt _020EB870
- rsb r3, r3, #0x9
- orr r0, r2, r0, lsr r3
- bx lr
-_020EB870:
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bx lr
-_020EB880:
- mov r2, r3, lsl #0x17
- and r2, r2, #0x80000000
- bic r3, r3, #0x100
- clz r12, r0
- movs r0, r0, lsl r12
- sub r3, r3, r12
- cmp r3, #0x0
- bgt _020EB8AC
- rsb r3, r3, #0x9
- orr r0, r2, r0, lsr r3
- bx lr
-_020EB8AC:
- ands r1, r0, #0xff
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bxeq lr
- tst r1, #0x80
- bxeq lr
- ands r1, r1, #0x7f
- andeqs r1, r0, #0x1
- addne r0, r0, #0x1
- bx lr
-_020EB8D8:
- cmp r3, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- ands r3, r3, #0xff
- beq _020EB940
- movs r0, r0, lsl #0x1
- bne _020EBA18
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x9
- ands r12, r12, #0xff
- beq _020EBA0C
- cmp r12, #0xff
- blt _020EBA0C
- cmp r1, #0x0
- beq _020EBA20
- b _020EBA18
-_020EB918:
- cmp r12, #0x100
- movge r2, #0x80000000
- movlt r2, #0x0
- and r3, r3, #0xff
- ands r12, r12, #0xff
- beq _020EB9A8
-_020EB930:
- eor r2, r2, #0x80000000
- movs r1, r1, lsl #0x1
- bne _020EBA18
- b _020EBA0C
-_020EB940:
- movs r0, r0, lsl #0x1
- beq _020EB978
- mov r0, r0, lsr #0x1
- mov r3, #0x1
- mov r12, r1, lsr #0x17
- mov r1, r1, lsl #0x8
- ands r12, r12, #0xff
- beq _020EB9A8
- cmp r12, #0xff
- beq _020EB930
- orr r1, r1, #0x80000000
- orr r3, r3, r2, lsr #0x17
- orr r12, r12, r2, lsr #0x17
- b _020EB7F4
-_020EB978:
- mov r3, r1, lsr #0x17
- mov r0, r1, lsl #0x9
- ands r2, r3, #0xff
- beq _020EB99C
- cmp r2, #0xff
- blt _020EB9C4
- cmp r0, #0x0
- bne _020EBA04
- b _020EBA0C
-_020EB99C:
- cmp r0, #0x0
- beq _020EB9E4
- b _020EB9C4
-_020EB9A8:
- movs r1, r1, lsl #0x1
- beq _020EB9CC
- mov r1, r1, lsr #0x1
- mov r12, #0x1
- orr r12, r12, r2, lsr #0x17
- orr r3, r3, r2, lsr #0x17
- b _020EB7F4
-_020EB9C4:
- mov r0, r1
- bx lr
-_020EB9CC:
- cmp r0, #0x0
- subges r3, r3, #0x1
- add r0, r0, r0
- orr r0, r2, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bx lr
-_020EB9E4:
- mov r0, #0x0
- bx lr
-_020EB9EC: ; 0x020EB9EC
- cmp r0, #0x0
- subges r3, r3, #0x1
- add r0, r0, r0
- mov r0, r0, lsr #0x9
- orr r0, r0, r3, lsl #0x17
- bx lr
-_020EBA04:
- mvn r0, #0x80000000
- bx lr
-_020EBA0C:
- mov r0, #0xff000000
- orr r0, r2, r0, lsr #0x1
- bx lr
-_020EBA18:
- mvn r0, #0x80000000
- bx lr
-_020EBA20:
- mvn r0, #0x80000000
- bx lr
-
- arm_func_start _ll_mod
-_ll_mod: ; 0x020EBA28
- stmdb sp!, {r4-r7,r11-r12,lr}
- mov r4, r1
- orr r4, r4, #0x1
- b _020EBA48
-
- arm_func_start _ll_sdiv
-_ll_sdiv: ; 0x020EBA38
- stmdb sp!, {r4-r7,r11-r12,lr}
- eor r4, r1, r3
- mov r4, r4, asr #0x1
- mov r4, r4, lsl #0x1
-_020EBA48:
- orrs r5, r3, r2
- bne _020EBA58
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBA58:
- mov r5, r0, lsr #0x1f
- add r5, r5, r1
- mov r6, r2, lsr #0x1f
- add r6, r6, r3
- orrs r6, r5, r6
- bne _020EBA8C
- mov r1, r2
- bl _s32_div_f
- ands r4, r4, #0x1
- movne r0, r1
- mov r1, r0, asr #0x1f
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBA8C:
- cmp r1, #0x0
- bge _020EBA9C
- rsbs r0, r0, #0x0
- rsc r1, r1, #0x0
-_020EBA9C:
- cmp r3, #0x0
- bge _020EBAAC
- rsbs r2, r2, #0x0
- rsc r3, r3, #0x0
-_020EBAAC:
- orrs r5, r1, r0
- beq _020EBBD0
- mov r5, #0x0
- mov r6, #0x1
- cmp r3, #0x0
- bmi _020EBAD8
-_020EBAC4:
- add r5, r5, #0x1
- adds r2, r2, r2
- adcs r3, r3, r3
- bpl _020EBAC4
- add r6, r6, r5
-_020EBAD8:
- cmp r1, #0x0
- blt _020EBAF8
-_020EBAE0:
- cmp r6, #0x1
- beq _020EBAF8
- sub r6, r6, #0x1
- adds r0, r0, r0
- adcs r1, r1, r1
- bpl _020EBAE0
-_020EBAF8:
- mov r7, #0x0
- mov r12, #0x0
- mov r11, #0x0
- b _020EBB20
-_020EBB08:
- orr r12, r12, #0x1
- subs r6, r6, #0x1
- beq _020EBB78
- adds r0, r0, r0
- adcs r1, r1, r1
- adcs r7, r7, r7
-_020EBB20:
- subs r0, r0, r2
- sbcs r1, r1, r3
- sbcs r7, r7, #0x0
- adds r12, r12, r12
- adc r11, r11, r11
- cmp r7, #0x0
- bge _020EBB08
-_020EBB3C:
- subs r6, r6, #0x1
- beq _020EBB70
- adds r0, r0, r0
- adcs r1, r1, r1
- adc r7, r7, r7
- adds r0, r0, r2
- adcs r1, r1, r3
- adc r7, r7, #0x0
- adds r12, r12, r12
- adc r11, r11, r11
- cmp r7, #0x0
- bge _020EBB08
- b _020EBB3C
-_020EBB70:
- adds r0, r0, r2
- adc r1, r1, r3
-_020EBB78:
- ands r7, r4, #0x1
- moveq r0, r12
- moveq r1, r11
- beq _020EBBB0
- subs r7, r5, #0x20
- movge r0, r1, lsr r7
- bge _020EBBD4
- rsb r7, r5, #0x20
- mov r0, r0, lsr r5
- orr r0, r0, r1, lsl r7
- mov r1, r1, lsr r5
- b _020EBBB0
-_020EBBA8: ; 0x020EBBA8
- mov r0, r1, lsr r7
- mov r1, #0x0
-_020EBBB0:
- cmp r4, #0x0
- blt _020EBBC0
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBBC0:
- rsbs r0, r0, #0x0
- rsc r1, r1, #0x0
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBBD0:
- mov r0, #0x0
-_020EBBD4:
- mov r1, #0x0
- cmp r4, #0x0
- blt _020EBBC0
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-
- arm_func_start _ll_udiv
-_ll_udiv: ; 0x020EBBE8
- stmdb sp!, {r4-r7,r11-r12,lr}
- mov r4, #0x0
- b _020EBBFC
-
- arm_func_start _ull_mod
-_ull_mod: ; 0x020EBBF4
- stmdb sp!, {r4-r7,r11-r12,lr}
- mov r4, #0x1
-_020EBBFC:
- orrs r5, r3, r2
- bne _020EBC0C
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-_020EBC0C:
- orrs r5, r1, r3
- bne _020EBAAC
- mov r1, r2
- bl _u32_div_not_0_f
- cmp r4, #0x0
- movne r0, r1
- mov r1, #0x0
- ldmia sp!, {r4-r7,r11-r12,lr}
- bx lr
-
- arm_func_start _ll_mul
-_ll_mul: ; 0x020EBC30
- stmdb sp!, {r4-r5,lr}
- umull r5, r4, r0, r2
- mla r4, r0, r3, r4
- mla r4, r2, r1, r4
- mov r1, r4
- mov r0, r5
- ldmia sp!, {r4-r5,lr}
- bx lr
-
- arm_func_start _ll_shl
-_ll_shl: ; 0x020EBC50
- ands r2, r2, #0x3f
- bxeq lr
- subs r3, r2, #0x20
- bge _020EBC74
- rsb r3, r2, #0x20
- mov r1, r1, lsl r2
- orr r1, r1, r0, lsr r3
- mov r0, r0, lsl r2
- bx lr
-_020EBC74:
- mov r1, r0, lsl r3
- mov r0, #0x0
- bx lr
-
- arm_func_start _s32_div_f
-_s32_div_f: ; 0x020EBC80
- eor r12, r0, r1
- and r12, r12, #0x80000000
- cmp r0, #0x0
- rsblt r0, r0, #0x0
- addlt r12, r12, #0x1
- cmp r1, #0x0
- rsblt r1, r1, #0x0
- beq _020EBE78
- cmp r0, r1
- movcc r1, r0
- movcc r0, #0x0
- blo _020EBE78
- mov r2, #0x1c
- mov r3, r0, lsr #0x4
- cmp r1, r3, lsr #0xc
- suble r2, r2, #0x10
- movle r3, r3, lsr #0x10
- cmp r1, r3, lsr #0x4
- suble r2, r2, #0x8
- movle r3, r3, lsr #0x8
- cmp r1, r3
- suble r2, r2, #0x4
- movle r3, r3, lsr #0x4
- mov r0, r0, lsl r2
- rsb r1, r1, #0x0
- adds r0, r0, r0
- add r2, r2, r2, lsl #0x1
- add pc, pc, r2, lsl #0x2
- mov r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- mov r1, r3
-_020EBE78:
- ands r3, r12, #0x80000000
- rsbne r0, r0, #0x0
- ands r3, r12, #0x1
- rsbne r1, r1, #0x0
- bx lr
-
- arm_func_start _u32_div_f
-_u32_div_f: ; 0x020EBE8C
- cmp r1, #0x0
- bxeq lr
-
- arm_func_start _u32_div_not_0_f
-_u32_div_not_0_f:
- cmp r0, r1
- movcc r1, r0
- movcc r0, #0x0
- bxcc lr
- mov r2, #0x1c
- mov r3, r0, lsr #0x4
- cmp r1, r3, lsr #0xc
- suble r2, r2, #0x10
- movle r3, r3, lsr #0x10
- cmp r1, r3, lsr #0x4
- suble r2, r2, #0x8
- movle r3, r3, lsr #0x8
- cmp r1, r3
- suble r2, r2, #0x4
- movle r3, r3, lsr #0x4
- mov r0, r0, lsl r2
- rsb r1, r1, #0x0
- adds r0, r0, r0
- add r2, r2, r2, lsl #0x1
- add pc, pc, r2, lsl #0x2
- mov r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- adcs r3, r1, r3, lsl #0x1
- subcc r3, r3, r1
- adcs r0, r0, r0
- mov r1, r3
- bx lr
-
- arm_func_start _drdiv
-_drdiv: ; 0x020EC070
- eor r1, r1, r3
- eor r3, r1, r3
- eor r1, r1, r3
- eor r0, r0, r2
- eor r2, r0, r2
- eor r0, r0, r2
-
- arm_func_start _ddiv
-_ddiv: ; 0x020EC088
- stmdb sp!, {r4-r6,lr}
- ldr lr, _020EC5C8 ; =0x00000FFE
- eor r4, r1, r3
- ands r12, lr, r1, lsr #0x13
- cmpne r12, lr
- beq _020EC434
- bic r1, r1, lr, lsl #0x14
- orr r1, r1, #0x100000
- add r12, r12, r4, lsr #0x1f
-_020EC0AC:
- ands r4, lr, r3, lsr #0x13
- cmpne r4, lr
- beq _020EC4CC
- bic r3, r3, lr, lsl #0x14
- orr r3, r3, #0x100000
-_020EC0C0:
- sub r12, r12, r4
- cmp r1, r3
- cmpeq r0, r2
- bhs _020EC0DC
- adds r0, r0, r0
- adc r1, r1, r1
- sub r12, r12, #0x2
-_020EC0DC:
- sub r4, pc, #0x24
- ldrb lr, [r4, r3, lsr #0xc]
- rsbs r2, r2, #0x0
- rsc r3, r3, #0x0
- mov r4, #0x20000000
- mla r5, lr, r3, r4
- mov r6, r3, lsl #0xa
- mov r5, r5, lsr #0x7
- mul lr, r5, lr
- orr r6, r6, r2, lsr #0x16
- mov lr, lr, lsr #0xd
- mul r5, lr, r6
- mov r6, r1, lsl #0xa
- orr r6, r6, r0, lsr #0x16
- mov r5, r5, lsr #0x10
- mul r5, lr, r5
- mov lr, lr, lsl #0xe
- add lr, lr, r5, lsr #0x10
- umull r5, r6, lr, r6
- umull r4, r5, r6, r2
- mla r5, r3, r6, r5
- mov r4, r4, lsr #0x1a
- orr r4, r4, r5, lsl #0x6
- add r4, r4, r0, lsl #0x2
- umull lr, r5, r4, lr
- mov r4, #0x0
- adds r5, r5, r6, lsl #0x18
- adc r4, r4, r6, lsr #0x8
- cmp r12, #0x800
- bge _020EC2C0
- add r12, r12, #0x7f0
- adds r12, r12, #0xc
- bmi _020EC2D8
- orr r1, r4, r12, lsl #0x1f
- bic r12, r12, #0x1
- add r1, r1, r12, lsl #0x13
- tst lr, #0x80000000
- bne _020EC1B0
- rsbs r2, r2, #0x0
- mov r4, r4, lsl #0x1
- add r4, r4, r5, lsr #0x1f
- mul lr, r2, r4
- mov r6, #0x0
- mov r4, r5, lsl #0x1
- orr r4, r4, #0x1
- umlal r6, lr, r4, r2
- rsc r3, r3, #0x0
- mla lr, r4, r3, lr
- cmp lr, r0, lsl #0x15
- bmi _020EC1B0
- mov r0, r5
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC1B0:
- adds r0, r5, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC1C0: ; not code
- .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1
- .byte 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4
- .byte 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8
- .byte 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD
- .byte 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3
- .byte 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA
- .byte 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2
- .byte 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB
- .byte 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4
- .byte 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E
- .byte 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98
- .byte 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92
- .byte 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D
- .byte 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89
- .byte 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84
- .byte 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80
-_020EC2C0:
- movs r1, r12, lsl #0x1f
- orr r1, r1, #0x7f000000
- orr r1, r1, #0xf00000
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC2D8:
- mvn r6, r12, asr #0x1
- cmp r6, #0x34
- bgt _020EC424
- beq _020EC400
- cmp r6, #0x14
- bge _020EC320
- rsb r6, r6, #0x13
- mov lr, r0, lsl r6
- rsb r6, r6, #0x14
- mov r0, r5, lsr r6
- rsb r6, r6, #0x20
- orr r0, r0, r4, lsl r6
- rsb r6, r6, #0x20
- mov r4, r4, lsr r6
- orr r1, r4, r12, lsl #0x1f
- mov r12, lr
- mov lr, #0x0
- b _020EC350
-_020EC320:
- rsb r6, r6, #0x33
- mov lr, r1, lsl r6
- mov r1, r12, lsl #0x1f
- rsb r6, r6, #0x20
- orr r12, lr, r0, lsr r6
- rsb r6, r6, #0x20
- mov lr, r0, lsl r6
- mov r5, r5, lsr #0x15
- orr r5, r5, r4, lsl #0xb
- rsb r6, r6, #0x1f
- mov r0, r5, lsr r6
- mov r4, #0x0
-_020EC350:
- rsbs r2, r2, #0x0
- mul r4, r2, r4
- mov r5, #0x0
- umlal r5, r4, r2, r0
- rsc r3, r3, #0x0
- mla r4, r0, r3, r4
- cmp r4, r12
- cmpeq r5, lr
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- adds r5, r5, r2
- adc r4, r4, r3
- cmp r4, r12
- bmi _020EC3F4
- bne _020EC398
- cmp r5, lr
- beq _020EC3E4
- blo _020EC3F4
-_020EC398:
- subs r5, r5, r2
- sbc r4, r4, r3
-_020EC3A0:
- adds r5, r5, r5
- adc r4, r4, r4
- adds r5, r5, r2
- adc r4, r4, r3
- adds lr, lr, lr
- adc r12, r12, r12
- cmp r4, r12
- bmi _020EC3E4
- ldmneia sp!, {r4-r6,lr}
- bxne lr
- cmp r5, lr
- blo _020EC3E4
- ldmneia sp!, {r4-r6,lr}
- bxne lr
- tst r0, #0x1
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
-_020EC3E4:
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC3F4:
- adds r0, r0, #0x1
- adc r1, r1, #0x0
- b _020EC3A0
-_020EC400:
- rsbs r2, r2, #0x0
- rsc r3, r3, #0x0
- cmp r1, r3
- cmpeq r0, r2
- mov r1, r12, lsl #0x1f
- mov r0, #0x0
- movne r0, #0x1
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC424:
- mov r1, r12, lsl #0x1f
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC434:
- orrs r5, r0, r1, lsl #0x1
- beq _020EC558
- cmp r12, lr
- beq _020EC49C
- movs r1, r1, lsl #0xc
- beq _020EC478
- clz r5, r1
- movs r1, r1, lsl r5
- sub r12, r12, r5
- add r5, r12, #0x1f
- mov r1, r1, lsr #0xb
- orr r1, r1, r0, lsr r5
- rsb r5, r5, #0x20
- mov r0, r0, lsl r5
- mov r12, r12, lsl #0x1
- orr r12, r12, r4, lsr #0x1f
- b _020EC0AC
-_020EC478:
- mvn r12, #0x13
- clz r5, r0
- movs r0, r0, lsl r5
- sub r12, r12, r5
- mov r1, r0, lsr #0xb
- mov r0, r0, lsl #0x15
- mov r12, r12, lsl #0x1
- orr r12, r12, r4, lsr #0x1f
- b _020EC0AC
-_020EC49C:
- orrs r5, r0, r1, lsl #0xc
- bne _020EC580
- bic r5, r3, #0x80000000
- cmp r5, lr, lsl #0x13
- bhs _020EC4C0
- and r5, r3, #0x80000000
- eor r1, r5, r1
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC4C0:
- orrs r5, r2, r3, lsl #0xc
- bne _020EC5A0
- b _020EC5B8
-_020EC4CC:
- orrs r5, r2, r3, lsl #0x1
- beq _020EC544
- cmp r4, lr
- beq _020EC52C
- movs r3, r3, lsl #0xc
- beq _020EC50C
- clz r5, r3
- movs r3, r3, lsl r5
- sub r4, r4, r5
- add r5, r4, #0x1f
- mov r3, r3, lsr #0xb
- orr r3, r3, r2, lsr r5
- rsb r5, r5, #0x20
- mov r2, r2, lsl r5
- mov r4, r4, lsl #0x1
- b _020EC0C0
-_020EC50C:
- mvn r4, #0x13
- clz r5, r2
- movs r2, r2, lsl r5
- sub r4, r4, r5
- mov r3, r2, lsr #0xb
- mov r2, r2, lsl #0x15
- mov r4, r4, lsl #0x1
- b _020EC0C0
-_020EC52C:
- orrs r5, r2, r3, lsl #0xc
- bne _020EC5A0
- mov r1, r12, lsl #0x1f
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC544:
- mov r1, r12, lsl #0x1f
- orr r1, r1, lr, lsl #0x13
- mov r0, #0x0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC558:
- orrs r5, r2, r3, lsl #0x1
- beq _020EC5B8
- bic r5, r3, #0x80000000
- cmp r5, lr, lsl #0x13
- cmpeq r2, #0x0
- bhi _020EC5A0
- eor r1, r1, r3
- and r1, r1, #0x80000000
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC580:
- tst r1, #0x80000
- beq _020EC5B8
- bic r5, r3, #0x80000000
- cmp r5, lr, lsl #0x13
- cmpeq r2, #0x0
- bhi _020EC5A0
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC5A0:
- tst r3, #0x80000
- beq _020EC5B8
- mov r1, r3
- mov r0, r2
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020EC5B8:
- orr r1, r1, #0x7f000000
- orr r1, r1, #0xf80000
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020EC5C8: .word 0x00000FFE
-
- arm_func_start _fp_init
-_fp_init: ; 0x020EC5CC
- bx lr
-
- arm_func_start sys_writec
-sys_writec: ; 0x020EC5D0
- str lr, [sp, #-0x4]!
- mov r1, r0
- mov r0, #0x3
- swi 0x123456
- ldr pc, [sp], #0x4
-
- arm_func_start sys_readc
-sys_readc: ; 0x020EC5E4
- str lr, [sp, #-0x4]!
- mov r1, #0x0
- mov r0, #0x7
- swi 0x123456
- ldr pc, [sp], #0x4
-
- arm_func_start sys_exit
-sys_exit: ; 0x020EC5F8
- mov r1, #0x0
- mov r0, #0x18
- swi 0x123456
- mov pc, lr
-
- arm_func_start __read_console
-__read_console: ; 0x020EC608
- stmdb sp!, {r3-r7,lr}
- mov r6, r2
- ldr r5, [r6, #0x0]
- mov r7, r1
- cmp r5, #0x0
- mov r4, #0x0
- bls _020EC650
-_020EC624:
- bl sys_readc
- and r1, r0, #0xff
- cmp r1, #0xd
- strb r0, [r7, r4]
- cmpne r1, #0xa
- addeq r0, r4, #0x1
- streq r0, [r6, #0x0]
- beq _020EC650
- add r4, r4, #0x1
- cmp r4, r5
- blo _020EC624
-_020EC650:
- mov r0, #0x0
- ldmia sp!, {r3-r7,pc}
-
- arm_func_start __write_console
-__write_console: ; 0x020EC658
- stmdb sp!, {r4-r6,lr}
- ldr r5, [r2, #0x0]
- mov r6, r1
- cmp r5, #0x0
- mov r4, #0x0
- bls _020EC684
-_020EC670:
- add r0, r6, r4
- bl sys_writec
- add r4, r4, #0x1
- cmp r4, r5
- blo _020EC670
-_020EC684:
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start __close_console
-__close_console: ; 0x020EC68C
- mov r0, #0x0
- bx lr
-
- .extern __sinit__
- arm_func_start __call_static_initializers
-__call_static_initializers: ; 0x020EC694
- stmdb sp!, {r4,lr}
- ldr r4, _020EC6BC ; =__sinit__
- b _020EC6A8
-_020EC6A0:
- blx r0
- add r4, r4, #0x4
-_020EC6A8:
- cmp r4, #0x0
- ldrne r0, [r4, #0x0]
- cmpne r0, #0x0
- bne _020EC6A0
- ldmia sp!, {r4,pc}
- .balign 4
-_020EC6BC: .word __sinit__
-
- arm_func_start __destroy_global_chain
-__destroy_global_chain: ; 0x020EC6C0
- stmdb sp!, {r3-r5,lr}
- ldr r4, _020EC700 ; =__global_destructor_chain
- ldr r2, [r4, #0x0]
- cmp r2, #0x0
- ldmeqia sp!, {r3-r5,pc}
-_020EC6D4: ; 0x020EC6D4
- mvn r5, #0x0
-_020EC6D8:
- ldr r0, [r2, #0x0]
- mov r1, r5
- str r0, [r4, #0x0]
- ldr r0, [r2, #0x8]
- ldr r2, [r2, #0x4]
- blx r2
- ldr r2, [r4, #0x0]
- cmp r2, #0x0
- bne _020EC6D8
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020EC700: .word __global_destructor_chain
-
- arm_func_start _ExitProcess
-_ExitProcess: ; 0x020EC704
- ldr ip, _020EC70C ; =sys_exit
- bx r12
- .balign 4
-_020EC70C: .word sys_exit
-
- .section .exception
- .word 0x00200100
- .word __read_console
- .short 81
- .word 0x00300F00
- .word __write_console
- .short 53
- .word 0x00200700
- .word __call_static_initializers
- .short 45
- .word 0x00100100
- .word __destroy_global_chain
- .short 69
- .word 0x00200300
- .word _ExitProcess
- .short 13
- .word 0x00000000
diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s
index 18e10da6..5ddfa9ab 100644
--- a/arm9/asm/unk_02001B80.s
+++ b/arm9/asm/unk_02001B80.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -141,7 +141,7 @@ FUN_02001C78: ; 0x02001C78
tst r3, r5
beq _02001C9E
ldr r0, _02001D28 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x15]
ldr r1, [r4, #0x0]
lsl r0, r0, #0x3
@@ -153,7 +153,7 @@ _02001C9E:
tst r3, r2
beq _02001CAE
ldr r0, _02001D28 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
sub r0, r5, #0x3
pop {r3-r5, pc}
_02001CAE:
@@ -237,7 +237,7 @@ FUN_02001D2C: ; 0x02001D2C
tst r6, r3
beq _02001D54
ldr r0, _02001DD8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x15]
ldr r1, [r4, #0x0]
lsl r0, r0, #0x3
@@ -249,7 +249,7 @@ _02001D54:
tst r6, r5
beq _02001D66
ldr r0, _02001DD8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x1
mvn r0, r0
pop {r4-r6, pc}
@@ -338,7 +338,7 @@ _02001DF0: ; jump table (using 16-bit offset)
.short _02001E44 - _02001DF0 - 2; case 5
_02001DFC:
ldr r0, _02001E58 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x15]
ldr r1, [r4, #0x0]
lsl r0, r0, #0x3
@@ -347,7 +347,7 @@ _02001DFC:
pop {r4, pc}
_02001E0E:
ldr r0, _02001E58 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x1
mvn r0, r0
pop {r4, pc}
@@ -433,7 +433,7 @@ _02001E7C:
add r0, r5, #0x0
bl FUN_02002080
add r0, r6, #0x0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x1
add sp, #0xc
pop {r4-r7, pc}
@@ -804,7 +804,7 @@ CreateYesNoMenu: ; 0x020020EC
strb r0, [r3, #0xb]
ldr r2, [sp, #0x8]
add r0, r7, #0x0
- bl FUN_02019150
+ bl AddWindow
ldr r0, [sp, #0x18]
ldr r2, [sp, #0xc]
ldr r3, [sp, #0x10]
@@ -883,7 +883,7 @@ FUN_020021EC: ; 0x020021EC
mov r1, #0x0
bl FUN_0200CCF8
ldr r0, [r5, #0x4]
- bl FUN_02019178
+ bl RemoveWindow
ldr r1, [r5, #0x4]
add r0, r4, #0x0
bl FreeToHeapExplicit
diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s
deleted file mode 100644
index dc304639..00000000
--- a/arm9/asm/unk_020023C0.s
+++ /dev/null
@@ -1,1123 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
-
- .extern gMain
- .extern gMain
-
- .global gTextFlags
-gTextFlags: ; 0x02106FC4
- .space 0x4
-
- .section .rodata
-
- .global UNK_020ECB50
-UNK_020ECB50: ; 0x020ECB50
- .byte 0x00, 0x01, 0x02, 0x01
-
- .text
-
- thumb_func_start RenderText
-RenderText: ; 0x020023C0
- push {r3-r6, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- add r1, r4, #0x0
- add r1, #0x24
- ldrb r1, [r1, #0x0]
- add r6, r4, #0x0
- add r6, #0x1c
- cmp r1, #0x6
- bls _020023D6
- b _02002838
-_020023D6:
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_020023E2: ; jump table (using 16-bit offset)
- .short _020023F0 - _020023E2 - 2; case 0
- .short _02002742 - _020023E2 - 2; case 1
- .short _0200275C - _020023E2 - 2; case 2
- .short _02002786 - _020023E2 - 2; case 3
- .short _020027B6 - _020023E2 - 2; case 4
- .short _0200280C - _020023E2 - 2; case 5
- .short _02002818 - _020023E2 - 2; case 6
-_020023F0:
- ldr r0, _02002658 ; =gMain
- ldr r1, [r0, #0x44]
- mov r0, #0x3
- tst r0, r1
- beq _02002402
- ldrb r0, [r6, #0x0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- bne _02002414
-_02002402:
- ldr r0, _0200265C ; =gMain + 0x40
- ldrh r0, [r0, #0x22]
- cmp r0, #0x0
- beq _02002432
- ldr r0, _02002660 ; =gTextFlags
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- beq _02002432
-_02002414:
- add r0, r4, #0x0
- mov r1, #0x0
- add r0, #0x26
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- add r0, #0x25
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x19
- lsr r0, r0, #0x19
- beq _02002432
- ldr r1, _02002660 ; =gTextFlags
- mov r0, #0x40
- ldrb r2, [r1, #0x0]
- orr r0, r2
- strb r0, [r1, #0x0]
-_02002432:
- add r0, r4, #0x0
- add r0, #0x26
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0200248C
- add r0, r4, #0x0
- add r0, #0x25
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x19
- lsr r0, r0, #0x19
- beq _0200248C
- add r0, r4, #0x0
- add r0, #0x26
- ldrb r0, [r0, #0x0]
- sub r1, r0, #0x1
- add r0, r4, #0x0
- add r0, #0x26
- strb r1, [r0, #0x0]
- ldr r0, _02002660 ; =gTextFlags
- ldrb r0, [r0, #0x0]
- lsl r1, r0, #0x1f
- lsr r1, r1, #0x1f
- beq _02002486
- ldr r1, _02002658 ; =gMain
- ldr r2, [r1, #0x48]
- mov r1, #0x3
- tst r1, r2
- bne _02002478
- ldr r1, _0200265C ; =gMain + 0x40
- ldrh r1, [r1, #0x20]
- cmp r1, #0x0
- beq _02002486
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- beq _02002486
-_02002478:
- ldrb r1, [r6, #0x0]
- mov r0, #0x10
- add r4, #0x26
- orr r0, r1
- strb r0, [r6, #0x0]
- mov r0, #0x0
- strb r0, [r4, #0x0]
-_02002486:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_0200248C:
- add r0, r4, #0x0
- add r0, #0x25
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x19
- lsr r1, r0, #0x19
- add r0, r4, #0x0
- add r0, #0x26
- strb r1, [r0, #0x0]
- ldr r0, [r4, #0x0]
- ldrh r5, [r0, #0x0]
- add r0, r0, #0x2
- str r0, [r4, #0x0]
- mov r0, #0xf1
- lsl r0, r0, #0x8
- cmp r5, r0
- bne _020024B0
- bl GF_AssertFail
-_020024B0:
- ldr r0, _02002664 ; =0x0000F0FD
- cmp r5, r0
- bgt _020024DA
- bge _0200250E
- ldr r1, _02002668 ; =0x000025BD \f
- cmp r5, r1
- bgt _020024D0
- sub r0, r1, #0x1 ; \r
- cmp r5, r0
- blt _020024CE
- bne _020024C8
- b _020026D8
-_020024C8:
- cmp r5, r1
- bne _020024CE
- b _020026EC
-_020024CE:
- b _02002700
-_020024D0:
- mov r0, #0xe
- lsl r0, r0, #0xc
- cmp r5, r0
- beq _020024F2
- b _02002700
-_020024DA:
- ldr r0, _0200266C ; =0x0000FFFE EXT_CTRL_CODE_BEGIN
- cmp r5, r0
- bgt _020024E4
- beq _0200251A
- b _02002700
-_020024E4:
- add r0, r0, #0x1 ; =0x0000FFFF EOS
- cmp r5, r0
- beq _020024EC
- b _02002700
-_020024EC:
- add sp, #0xc
- mov r0, #0x1
- pop {r3-r6, pc}
-_020024F2:
- ldrb r0, [r4, #0xa]
- mov r1, #0x1
- strb r0, [r4, #0xc]
- ldrb r0, [r4, #0x9]
- bl GetFontAttribute
- ldrb r1, [r4, #0xf]
- ldrb r2, [r4, #0xd]
- add sp, #0xc
- add r0, r1, r0
- add r0, r2, r0
- strb r0, [r4, #0xd]
- mov r0, #0x2
- pop {r3-r6, pc}
-_0200250E:
- ldr r0, [r4, #0x0]
- add sp, #0xc
- add r0, r0, #0x2
- str r0, [r4, #0x0]
- mov r0, #0x2
- pop {r3-r6, pc}
-_0200251A:
- ldr r0, [r4, #0x0]
- sub r0, r0, #0x2
- str r0, [r4, #0x0]
- bl MsgArray_GetControlCode
- lsl r0, r0, #0x10
- ldr r1, _02002670 ; =0x0000FE06
- lsr r0, r0, #0x10
- cmp r0, r1
- bgt _02002552
- blt _02002532
- b _02002678
-_02002532:
- mov r1, #0x2
- lsl r1, r1, #0x8
- sub r1, r0, r1
- cmp r1, #0x4
- bhi _0200255C
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02002548: ; jump table (using 16-bit offset)
- .short _020025B4 - _02002548 - 2; case 0x200
- .short _020025DE - _02002548 - 2; case 0x201
- .short _02002600 - _02002548 - 2; case 0x202
- .short _02002618 - _02002548 - 2; case 0x203
- .short _02002624 - _02002548 - 2; case 0x204
-_02002552:
- mov r1, #0xff
- lsl r1, r1, #0x8
- cmp r0, r1
- bgt _0200255E
- beq _02002566
-_0200255C:
- b _020026CA
-_0200255E:
- add r1, r1, #0x1
- cmp r0, r1
- beq _02002630
- b _020026CA
-_02002566:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl MsgArray_ControlCodeGetField
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0xff
- bne _02002596
- ldrb r0, [r4, #0x11]
- ldrb r2, [r4, #0x17]
- sub r1, r0, #0x1
- lsr r0, r1, #0x1f
- add r0, r1, r0
- asr r0, r0, #0x1
- add r0, #0x64
- strb r0, [r4, #0x17]
- cmp r2, #0x64
- blo _02002644
- cmp r2, #0x6b
- bhs _02002644
- sub r2, #0x64
- lsl r0, r2, #0x10
- lsr r0, r0, #0x10
- b _0200259E
-_02002596:
- cmp r0, #0x64
- blo _0200259E
- strb r0, [r4, #0x17]
- b _020026CA
-_0200259E:
- lsl r1, r0, #0x1
- add r0, r1, #0x1
- strb r0, [r4, #0x11]
- add r0, r1, #0x2
- strb r0, [r4, #0x13]
- ldrb r0, [r4, #0x11]
- ldrb r1, [r4, #0x12]
- ldrb r2, [r4, #0x13]
- bl GenerateFontHalfRowLookupTable
- b _020026CA
-_020025B4:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl MsgArray_ControlCodeGetField
- lsl r0, r0, #0x10
- lsr r3, r0, #0x10
- ldrb r1, [r4, #0xc]
- ldrb r2, [r4, #0xd]
- add r0, r4, #0x0
- bl FUN_0201C1EC
- add r0, r4, #0x0
- add r0, #0x25
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1f
- beq _020026CA
- ldr r0, [r4, #0x4]
- bl CopyWindowToVram
- b _020026CA
-_020025DE:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl MsgArray_ControlCodeGetField
- add r1, r4, #0x0
- add r1, #0x26
- strb r0, [r1, #0x0]
- ldr r0, [r4, #0x0]
- bl MsgArray_SkipControlCode
- str r0, [r4, #0x0]
- mov r0, #0x6
- add r4, #0x24
- strb r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002600:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl MsgArray_ControlCodeGetField
- strh r0, [r4, #0x2a]
- ldr r0, [r4, #0x0]
- bl MsgArray_SkipControlCode
- str r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002618:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl MsgArray_ControlCodeGetField
- strb r0, [r4, #0xc]
- b _020026CA
-_02002624:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl MsgArray_ControlCodeGetField
- strb r0, [r4, #0xd]
- b _020026CA
-_02002630:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl MsgArray_ControlCodeGetField
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- cmp r0, #0x64
- beq _02002646
- cmp r0, #0xc8
- beq _0200264E
-_02002644:
- b _020026CA
-_02002646:
- mov r0, #0x0
- strh r0, [r4, #0x14]
- strb r0, [r4, #0x16]
- b _020026CA
-_0200264E:
- ldr r0, _02002674 ; =0x0000FFFC
- strh r0, [r4, #0x14]
- mov r0, #0x0
- strb r0, [r4, #0x16]
- b _020026CA
- .balign 4
-_02002658: .word gMain
-_0200265C: .word gMain + 0x40
-_02002660: .word gTextFlags
-_02002664: .word 0x0000F0FD
-_02002668: .word 0x000025BD
-_0200266C: .word 0x0000FFFE
-_02002670: .word 0x0000FE06
-_02002674: .word 0x0000FFFC
-_02002678:
- ldr r0, [r4, #0x0]
- mov r1, #0x0
- bl MsgArray_ControlCodeGetField
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- mov r0, #0xfe
- lsl r0, r0, #0x8
- cmp r1, r0
- beq _020026AE
- add r0, r0, #0x1
- cmp r1, r0
- bne _020026CA
- add r0, r4, #0x0
- mov r1, #0x2
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_0200284C
- ldr r0, [r4, #0x0]
- bl MsgArray_SkipControlCode
- str r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_020026AE:
- add r0, r4, #0x0
- mov r1, #0x3
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_0200284C
- ldr r0, [r4, #0x0]
- bl MsgArray_SkipControlCode
- str r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_020026CA:
- ldr r0, [r4, #0x0]
- bl MsgArray_SkipControlCode
- str r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x2
- pop {r3-r6, pc}
-_020026D8:
- add r0, r4, #0x0
- mov r1, #0x2
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_0200284C
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_020026EC:
- add r0, r4, #0x0
- mov r1, #0x3
- add r0, #0x24
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_0200284C
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002700:
- ldrb r0, [r6, #0x0]
- add r1, r5, #0x0
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- bl FUN_02002D94
- add r5, r0, #0x0
- ldrb r0, [r4, #0xc]
- add r2, r5, #0x0
- add r3, r5, #0x0
- str r0, [sp, #0x0]
- ldrb r0, [r4, #0xd]
- add r2, #0x80
- add r3, #0x81
- str r0, [sp, #0x4]
- ldrh r0, [r4, #0x14]
- add r1, r5, #0x0
- str r0, [sp, #0x8]
- ldrb r2, [r2, #0x0]
- ldrb r3, [r3, #0x0]
- ldr r0, [r4, #0x4]
- bl FUN_0201974C
- add r5, #0x80
- ldrb r1, [r5, #0x0]
- ldrb r0, [r4, #0xe]
- ldrb r2, [r4, #0xc]
- add sp, #0xc
- add r0, r1, r0
- add r0, r2, r0
- strb r0, [r4, #0xc]
- mov r0, #0x0
- pop {r3-r6, pc}
-_02002742:
- bl FUN_02002B3C
- cmp r0, #0x0
- beq _02002756
- add r0, r4, #0x0
- bl FUN_02002A00
- mov r0, #0x0
- add r4, #0x24
- strb r0, [r4, #0x0]
-_02002756:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_0200275C:
- bl FUN_02002B18
- cmp r0, #0x0
- beq _02002780
- add r0, r4, #0x0
- bl FUN_02002A00
- ldrb r1, [r4, #0x12]
- ldr r0, [r4, #0x4]
- bl FillWindowPixelBuffer
- ldrb r0, [r4, #0xa]
- strb r0, [r4, #0xc]
- ldrb r0, [r4, #0xb]
- strb r0, [r4, #0xd]
- mov r0, #0x0
- add r4, #0x24
- strb r0, [r4, #0x0]
-_02002780:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002786:
- bl FUN_02002B18
- cmp r0, #0x0
- beq _020027B0
- add r0, r4, #0x0
- bl FUN_02002A00
- ldrb r0, [r4, #0x9]
- mov r1, #0x1
- bl GetFontAttribute
- ldrb r1, [r4, #0xf]
- add r1, r1, r0
- add r0, r4, #0x0
- add r0, #0x27
- strb r1, [r0, #0x0]
- ldrb r0, [r4, #0xa]
- strb r0, [r4, #0xc]
- mov r0, #0x4
- add r4, #0x24
- strb r0, [r4, #0x0]
-_020027B0:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_020027B6:
- add r0, #0x27
- ldrb r2, [r0, #0x0]
- cmp r2, #0x0
- beq _02002800
- cmp r2, #0x4
- ldrb r5, [r4, #0x12]
- bge _020027D8
- lsl r3, r5, #0x4
- orr r3, r5
- lsl r3, r3, #0x18
- ldr r0, [r4, #0x4]
- mov r1, #0x0
- lsr r3, r3, #0x18
- bl ScrollWindow
- mov r1, #0x0
- b _020027F2
-_020027D8:
- lsl r3, r5, #0x4
- orr r3, r5
- lsl r3, r3, #0x18
- ldr r0, [r4, #0x4]
- mov r1, #0x0
- mov r2, #0x4
- lsr r3, r3, #0x18
- bl ScrollWindow
- add r0, r4, #0x0
- add r0, #0x27
- ldrb r0, [r0, #0x0]
- sub r1, r0, #0x4
-_020027F2:
- add r0, r4, #0x0
- add r0, #0x27
- strb r1, [r0, #0x0]
- ldr r0, [r4, #0x4]
- bl CopyWindowToVram
- b _02002806
-_02002800:
- mov r0, #0x0
- add r4, #0x24
- strb r0, [r4, #0x0]
-_02002806:
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_0200280C:
- mov r0, #0x0
- add r4, #0x24
- strb r0, [r4, #0x0]
- add sp, #0xc
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002818:
- add r0, #0x26
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- beq _0200282C
- add r0, r4, #0x0
- add r0, #0x26
- ldrb r0, [r0, #0x0]
- add r4, #0x26
- sub r0, r0, #0x1
- b _02002830
-_0200282C:
- mov r0, #0x0
- add r4, #0x24
-_02002830:
- add sp, #0xc
- strb r0, [r4, #0x0]
- mov r0, #0x3
- pop {r3-r6, pc}
-_02002838:
- mov r0, #0x1
- add sp, #0xc
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02002840
-FUN_02002840: ; 0x02002840
- ldr r1, _02002848 ; =gTextFlags
- strh r0, [r1, #0x2]
- bx lr
- nop
-_02002848: .word gTextFlags
-
- thumb_func_start FUN_0200284C
-FUN_0200284C: ; 0x0200284C
- ldr r1, _02002874 ; =gTextFlags
- add r0, #0x1c
- ldrb r1, [r1, #0x0]
- lsl r1, r1, #0x1d
- lsr r1, r1, #0x1f
- beq _02002862
- ldrb r2, [r0, #0x2]
- mov r1, #0xff
- bic r2, r1
- strb r2, [r0, #0x2]
- bx lr
-_02002862:
- ldrb r2, [r0, #0x1]
- mov r1, #0x60
- bic r2, r1
- strb r2, [r0, #0x1]
- ldrb r2, [r0, #0x1]
- mov r1, #0x1f
- bic r2, r1
- strb r2, [r0, #0x1]
- bx lr
- .balign 4
-_02002874: .word gTextFlags
-
- thumb_func_start FUN_02002878
-FUN_02002878: ; 0x02002878
- push {r4-r7, lr}
- sub sp, #0x2c
- add r5, r0, #0x0
- ldr r0, _020029F8 ; =gTextFlags
- add r4, r5, #0x0
- ldrb r0, [r0, #0x0]
- add r4, #0x1c
- lsl r0, r0, #0x1d
- lsr r0, r0, #0x1f
- beq _0200288E
- b _020029F4
-_0200288E:
- ldrb r0, [r4, #0x1]
- lsl r1, r0, #0x1b
- lsr r2, r1, #0x1b
- beq _020028AC
- mov r1, #0x1f
- add r2, #0xff
- bic r0, r1
- lsl r1, r2, #0x18
- lsr r2, r1, #0x18
- mov r1, #0x1f
- and r1, r2
- orr r0, r1
- add sp, #0x2c
- strb r0, [r4, #0x1]
- pop {r4-r7, pc}
-_020028AC:
- ldr r0, [r5, #0x4]
- bl FUN_0201AB08
- str r0, [sp, #0x20]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB14
- str r0, [sp, #0x24]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB18
- str r0, [sp, #0x28]
- ldr r0, [r5, #0x4]
- bl GetWindowWidth
- ldr r1, _020029F8 ; =gTextFlags
- ldrh r6, [r1, #0x2]
- ldr r1, [sp, #0x28]
- add r7, r1, #0x2
- ldr r1, [sp, #0x24]
- add r2, r6, #0x0
- add r0, r1, r0
- str r0, [sp, #0x1c]
- add r0, r0, #0x1
- str r0, [sp, #0x18]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- add r2, #0x12
- mov r12, r2
- ldrb r2, [r4, #0x1]
- ldr r0, [r5, #0x4]
- ldr r1, [sp, #0x20]
- lsl r2, r2, #0x19
- lsr r3, r2, #0x1e
- ldr r2, _020029FC ; =UNK_020ECB50
- ldr r0, [r0, #0x0]
- ldrb r2, [r2, r3]
- mov r3, r12
- lsl r2, r2, #0x2
- add r2, r3, r2
- ldr r3, [sp, #0x18]
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [sp, #0x1c]
- ldr r1, [sp, #0x20]
- add r0, r0, #0x2
- str r0, [sp, #0x10]
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrb r2, [r4, #0x1]
- add r7, r6, #0x0
- ldr r0, [r5, #0x4]
- lsl r2, r2, #0x19
- lsr r3, r2, #0x1e
- ldr r2, _020029FC ; =UNK_020ECB50
- add r7, #0x13
- ldrb r2, [r2, r3]
- ldr r3, [sp, #0x10]
- ldr r0, [r0, #0x0]
- lsl r2, r2, #0x2
- add r2, r7, r2
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [sp, #0x28]
- add r7, r6, #0x0
- add r0, r0, #0x3
- str r0, [sp, #0x14]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrb r2, [r4, #0x1]
- ldr r0, [r5, #0x4]
- add r7, #0x14
- lsl r2, r2, #0x19
- lsr r3, r2, #0x1e
- ldr r2, _020029FC ; =UNK_020ECB50
- ldr r0, [r0, #0x0]
- ldrb r2, [r2, r3]
- ldr r3, [sp, #0x18]
- ldr r1, [sp, #0x20]
- lsl r2, r2, #0x2
- add r2, r7, r2
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [sp, #0x14]
- add r6, #0x15
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldrb r2, [r4, #0x1]
- ldr r0, [r5, #0x4]
- ldr r1, [sp, #0x20]
- lsl r2, r2, #0x19
- lsr r3, r2, #0x1e
- ldr r2, _020029FC ; =UNK_020ECB50
- ldr r0, [r0, #0x0]
- ldrb r2, [r2, r3]
- ldr r3, [sp, #0x10]
- lsl r2, r2, #0x2
- add r2, r6, r2
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [r5, #0x4]
- ldr r1, [sp, #0x20]
- ldr r0, [r0, #0x0]
- bl FUN_02017CD0
- ldrb r1, [r4, #0x1]
- mov r0, #0x1f
- bic r1, r0
- mov r0, #0x8
- orr r0, r1
- strb r0, [r4, #0x1]
- ldrb r2, [r4, #0x1]
- mov r1, #0x60
- add r0, r2, #0x0
- bic r0, r1
- lsl r1, r2, #0x19
- lsr r1, r1, #0x1e
- add r1, r1, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1e
- lsr r1, r1, #0x19
- orr r0, r1
- strb r0, [r4, #0x1]
-_020029F4:
- add sp, #0x2c
- pop {r4-r7, pc}
- .balign 4
-_020029F8: .word gTextFlags
-_020029FC: .word UNK_020ECB50
-
- thumb_func_start FUN_02002A00
-FUN_02002A00: ; 0x02002A00
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- ldr r0, [r5, #0x4]
- bl FUN_0201AB08
- str r0, [sp, #0x10]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB14
- str r0, [sp, #0x14]
- ldr r0, [r5, #0x4]
- bl FUN_0201AB18
- add r6, r0, #0x0
- ldr r0, [r5, #0x4]
- bl GetWindowWidth
- ldr r1, _02002A90 ; =gTextFlags
- add r7, r6, #0x2
- ldrh r4, [r1, #0x2]
- ldr r1, [sp, #0x14]
- add r6, r1, r0
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0x2
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x4]
- add r2, r4, #0x0
- add r2, #0xa
- add r3, r6, #0x1
- lsl r2, r2, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- ldr r1, [sp, #0x10]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- lsl r0, r7, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0x2
- str r0, [sp, #0x8]
- mov r0, #0x10
- str r0, [sp, #0xc]
- ldr r0, [r5, #0x4]
- add r4, #0xb
- add r3, r6, #0x2
- lsl r2, r4, #0x10
- lsl r3, r3, #0x18
- ldr r0, [r0, #0x0]
- ldr r1, [sp, #0x10]
- lsr r2, r2, #0x10
- lsr r3, r3, #0x18
- bl FUN_02018540
- ldr r0, [r5, #0x4]
- ldr r1, [sp, #0x10]
- ldr r0, [r0, #0x0]
- bl FUN_02017CD0
- add sp, #0x18
- pop {r3-r7, pc}
- nop
-_02002A90: .word gTextFlags
-
- thumb_func_start FUN_02002A94
-FUN_02002A94: ; 0x02002A94
- push {r3, lr}
- ldr r0, _02002ACC ; =gMain
- ldr r1, [r0, #0x48]
- mov r0, #0x3
- tst r0, r1
- bne _02002AB2
- ldr r0, _02002AD0 ; =gMain + 0x40
- ldrh r0, [r0, #0x20]
- cmp r0, #0x0
- beq _02002AC6
- ldr r0, _02002AD4 ; =gTextFlags
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1f
- beq _02002AC6
-_02002AB2:
- ldr r0, _02002AD8 ; =0x000005DC
- bl FUN_020054C8
- ldr r1, _02002AD4 ; =gTextFlags
- mov r0, #0x80
- ldrb r2, [r1, #0x0]
- orr r0, r2
- strb r0, [r1, #0x0]
- mov r0, #0x1
- pop {r3, pc}
-_02002AC6:
- mov r0, #0x0
- pop {r3, pc}
- nop
-_02002ACC: .word gMain
-_02002AD0: .word gMain + 0x40
-_02002AD4: .word gTextFlags
-_02002AD8: .word 0x000005DC
-
- thumb_func_start FUN_02002ADC
-FUN_02002ADC: ; 0x02002ADC
- push {r4, lr}
- add r2, r0, #0x0
- add r2, #0x1c
- ldrb r1, [r2, #0x2]
- add r4, r1, #0x0
- cmp r4, #0x64
- bne _02002AEE
- mov r0, #0x1
- pop {r4, pc}
-_02002AEE:
- mov r3, #0xff
- bic r1, r3
- add r3, r4, #0x1
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- orr r1, r3
- strb r1, [r2, #0x2]
- ldr r1, _02002B14 ; =gTextFlags
- ldrb r1, [r1, #0x0]
- lsl r1, r1, #0x1a
- lsr r1, r1, #0x1f
- beq _02002B10
- bl FUN_02002A94
- pop {r4, pc}
-_02002B10:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-_02002B14: .word gTextFlags
-
- thumb_func_start FUN_02002B18
-FUN_02002B18: ; 0x02002B18
- push {r4, lr}
- ldr r1, _02002B38 ; =gTextFlags
- add r4, r0, #0x0
- ldrb r1, [r1, #0x0]
- lsl r1, r1, #0x1d
- lsr r1, r1, #0x1f
- beq _02002B2C
- bl FUN_02002ADC
- pop {r4, pc}
-_02002B2C:
- bl FUN_02002878
- add r0, r4, #0x0
- bl FUN_02002A94
- pop {r4, pc}
- .balign 4
-_02002B38: .word gTextFlags
-
- thumb_func_start FUN_02002B3C
-FUN_02002B3C: ; 0x02002B3C
- push {r3, lr}
- ldr r1, _02002B5C ; =gTextFlags
- ldrb r1, [r1, #0x0]
- lsl r1, r1, #0x1d
- lsr r1, r1, #0x1f
- beq _02002B52
- bl FUN_02002ADC
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, pc}
-_02002B52:
- bl FUN_02002A94
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, pc}
- .balign 4
-_02002B5C: .word gTextFlags
-
- thumb_func_start FUN_02002B60
-FUN_02002B60: ; 0x02002B60
- ldr r2, _02002B78 ; =gTextFlags
- mov r1, #0x1
- ldrb r3, [r2, #0x0]
- lsl r0, r0, #0x18
- bic r3, r1
- lsr r1, r0, #0x18
- mov r0, #0x1
- and r0, r1
- orr r0, r3
- strb r0, [r2, #0x0]
- bx lr
- nop
-_02002B78: .word gTextFlags
-
- thumb_func_start FUN_02002B7C
-FUN_02002B7C: ; 0x02002B7C
- push {r3-r4}
- ldr r1, _02002BB4 ; =gTextFlags
- mov r3, #0x4
- ldrb r2, [r1, #0x0]
- mov r4, #0x1
- bic r2, r3
- add r3, r0, #0x0
- and r3, r4
- lsl r3, r3, #0x18
- lsr r3, r3, #0x18
- lsl r3, r3, #0x1f
- lsr r3, r3, #0x1d
- orr r2, r3
- asr r0, r0, #0x1
- and r0, r4
- strb r2, [r1, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- lsl r0, r0, #0x1f
- ldrb r2, [r1, #0x0]
- mov r3, #0x20
- lsr r0, r0, #0x1a
- bic r2, r3
- orr r0, r2
- strb r0, [r1, #0x0]
- pop {r3-r4}
- bx lr
- nop
-_02002BB4: .word gTextFlags
-
- thumb_func_start FUN_02002BB8
-FUN_02002BB8: ; 0x02002BB8
- ldr r2, _02002BD0 ; =gTextFlags
- lsl r0, r0, #0x18
- ldrb r3, [r2, #0x0]
- lsr r0, r0, #0x18
- mov r1, #0x10
- lsl r0, r0, #0x1f
- bic r3, r1
- lsr r0, r0, #0x1b
- orr r0, r3
- strb r0, [r2, #0x0]
- bx lr
- nop
-_02002BD0: .word gTextFlags
-
- thumb_func_start FUN_02002BD4
-FUN_02002BD4: ; 0x02002BD4
- ldr r0, _02002BE0 ; =gTextFlags
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x19
- lsr r0, r0, #0x1f
- bx lr
- nop
-_02002BE0: .word gTextFlags
-
- thumb_func_start FUN_02002BE4
-FUN_02002BE4: ; 0x02002BE4
- ldr r1, _02002BF0 ; =gTextFlags
- mov r0, #0x40
- ldrb r2, [r1, #0x0]
- bic r2, r0
- strb r2, [r1, #0x0]
- bx lr
- .balign 4
-_02002BF0: .word gTextFlags
-
- thumb_func_start FUN_02002BF4
-FUN_02002BF4: ; 0x02002BF4
- ldr r0, _02002C00 ; =gTextFlags
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1f
- bx lr
- nop
-_02002C00: .word gTextFlags
-
- thumb_func_start FUN_02002C04
-FUN_02002C04: ; 0x02002C04
- ldr r1, _02002C10 ; =gTextFlags
- mov r0, #0x80
- ldrb r2, [r1, #0x0]
- bic r2, r0
- strb r2, [r1, #0x0]
- bx lr
- .balign 4
-_02002C10: .word gTextFlags
diff --git a/arm9/asm/unk_02002C14.s b/arm9/asm/unk_02002C14.s
index 119c68ff..60d27fed 100644
--- a/arm9/asm/unk_02002C14.s
+++ b/arm9/asm/unk_02002C14.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_02002F08.s b/arm9/asm/unk_02002F08.s
index fb6f96ff..10ad89e0 100644
--- a/arm9/asm/unk_02002F08.s
+++ b/arm9/asm/unk_02002F08.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_02106FC8
diff --git a/arm9/asm/unk_020030E8.s b/arm9/asm/unk_020030E8.s
index f9b9de1f..d304b14a 100644
--- a/arm9/asm/unk_020030E8.s
+++ b/arm9/asm/unk_020030E8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .text
diff --git a/arm9/asm/unk_020051F4.s b/arm9/asm/unk_020051F4.s
index c2d91fe9..d6d06005 100644
--- a/arm9/asm/unk_020051F4.s
+++ b/arm9/asm/unk_020051F4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
@@ -331,7 +331,7 @@ FUN_020054A8: ; 0x020054A8
push {r4-r6, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- bl FUN_020054C8
+ bl PlaySE
add r6, r0, #0x0
ldr r1, _020054C4 ; =0x0000FFFF
add r0, r5, #0x0
@@ -342,8 +342,8 @@ FUN_020054A8: ; 0x020054A8
nop
_020054C4: .word 0x0000FFFF
- thumb_func_start FUN_020054C8
-FUN_020054C8: ; 0x020054C8
+ thumb_func_start PlaySE
+PlaySE: ; 0x020054C8
push {r4-r6, lr}
add r5, r0, #0x0
bl FUN_020048D0
diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s
index 7a7010b0..8e521c5c 100644
--- a/arm9/asm/unk_02005CFC.s
+++ b/arm9/asm/unk_02005CFC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s
index 07650c04..526c52c7 100644
--- a/arm9/asm/unk_02006D98.s
+++ b/arm9/asm/unk_02006D98.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020ECD4C
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_02008AA4.s b/arm9/asm/unk_02008AA4.s
index e6b5abcc..0b8d98e7 100644
--- a/arm9/asm/unk_02008AA4.s
+++ b/arm9/asm/unk_02008AA4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02008DEC.s b/arm9/asm/unk_02008DEC.s
index 31aabcc3..f257d2c8 100644
--- a/arm9/asm/unk_02008DEC.s
+++ b/arm9/asm/unk_02008DEC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02009EAC.s b/arm9/asm/unk_02009EAC.s
index 95a1773a..b08b52fd 100644
--- a/arm9/asm/unk_02009EAC.s
+++ b/arm9/asm/unk_02009EAC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s
index 9e8b3189..62bace0d 100644
--- a/arm9/asm/unk_0200CABC.s
+++ b/arm9/asm/unk_0200CABC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -147,7 +147,7 @@ FUN_0200CB6C: ; 0x0200CB6C
add r2, sp, #0x28
ldrh r2, [r2, #0x1c]
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r1, sp, #0x28
ldrh r4, [r1, #0x1c]
lsl r0, r7, #0x18
@@ -164,7 +164,7 @@ FUN_0200CB6C: ; 0x0200CB6C
ldr r1, [sp, #0x14]
ldr r3, [sp, #0x18]
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, sp, #0x28
ldrb r1, [r0, #0x10]
ldr r0, [sp, #0x18]
@@ -185,7 +185,7 @@ FUN_0200CB6C: ; 0x0200CB6C
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
add r2, r4, #0x3
str r0, [sp, #0x0]
@@ -201,7 +201,7 @@ FUN_0200CB6C: ; 0x0200CB6C
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
ldr r3, [sp, #0x20]
str r0, [sp, #0x0]
@@ -218,7 +218,7 @@ FUN_0200CB6C: ; 0x0200CB6C
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, sp, #0x28
ldrb r1, [r0, #0x14]
ldr r0, [sp, #0x1c]
@@ -237,7 +237,7 @@ FUN_0200CB6C: ; 0x0200CB6C
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r7, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -253,7 +253,7 @@ FUN_0200CB6C: ; 0x0200CB6C
ldr r1, [sp, #0x14]
ldr r3, [sp, #0x18]
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r7, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -269,7 +269,7 @@ FUN_0200CB6C: ; 0x0200CB6C
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x24
pop {r4-r7, pc}
.balign 4
@@ -282,13 +282,13 @@ FUN_0200CCA4: ; 0x0200CCA4
add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- bl FUN_0201AB08
+ bl GetWindowBgId
str r0, [sp, #0x10]
add r0, r5, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
str r0, [sp, #0x14]
add r0, r5, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
str r0, [sp, #0x18]
add r0, r5, #0x0
bl GetWindowWidth
@@ -319,13 +319,13 @@ FUN_0200CCF8: ; 0x0200CCF8
sub sp, #0x18
add r5, r0, #0x0
add r4, r1, #0x0
- bl FUN_0201AB08
+ bl GetWindowBgId
str r0, [sp, #0x10]
add r0, r5, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
add r7, r0, #0x0
add r0, r5, #0x0
bl GetWindowWidth
@@ -352,11 +352,11 @@ FUN_0200CCF8: ; 0x0200CCF8
ldr r0, [r5, #0x0]
ldr r1, [sp, #0x10]
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
cmp r4, #0x0
bne _0200CD5A
add r0, r5, #0x0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
_0200CD5A:
add sp, #0x18
pop {r3-r7, pc}
@@ -454,7 +454,7 @@ FUN_0200CDD8: ; 0x0200CDD8
lsl r3, r3, #0x18
ldrh r2, [r2, #0x1c]
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x14]
sub r0, r0, #0x1
str r0, [sp, #0x24]
@@ -475,7 +475,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -491,7 +491,7 @@ FUN_0200CDD8: ; 0x0200CDD8
ldr r3, [sp, #0x14]
add r0, r7, #0x0
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, sp, #0x38
ldrb r1, [r0, #0x10]
ldr r0, [sp, #0x14]
@@ -512,7 +512,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x2c]
add r2, r4, #0x4
add r0, r0, #0x1
@@ -531,7 +531,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x2c]
add r2, r4, #0x5
add r0, r0, #0x2
@@ -550,7 +550,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x18]
ldr r3, [sp, #0x28]
str r0, [sp, #0x0]
@@ -566,7 +566,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x18]
ldr r3, [sp, #0x24]
str r0, [sp, #0x0]
@@ -582,7 +582,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x18]
add r2, r4, #0x0
str r0, [sp, #0x0]
@@ -599,7 +599,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x18]
add r2, r4, #0x0
str r0, [sp, #0x0]
@@ -616,7 +616,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x18]
add r2, r4, #0x0
str r0, [sp, #0x0]
@@ -633,7 +633,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r2, r4, #0x0
ldr r3, [sp, #0x28]
add r2, #0xc
@@ -653,7 +653,7 @@ FUN_0200CDD8: ; 0x0200CDD8
ldr r1, [sp, #0x10]
add r0, r7, #0x0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -670,7 +670,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -687,7 +687,7 @@ FUN_0200CDD8: ; 0x0200CDD8
ldr r3, [sp, #0x14]
add r0, r7, #0x0
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -704,7 +704,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -721,7 +721,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -737,7 +737,7 @@ FUN_0200CDD8: ; 0x0200CDD8
add r0, r7, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x30
pop {r3-r7, pc}
.balign 4
@@ -749,13 +749,13 @@ FUN_0200D06C: ; 0x0200D06C
add r5, r0, #0x0
add r4, r1, #0x0
add r6, r2, #0x0
- bl FUN_0201AB08
+ bl GetWindowBgId
str r0, [sp, #0x10]
add r0, r5, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
str r0, [sp, #0x14]
add r0, r5, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
str r0, [sp, #0x18]
add r0, r5, #0x0
bl GetWindowWidth
@@ -804,13 +804,13 @@ FUN_0200D0E0: ; 0x0200D0E0
sub sp, #0x18
add r5, r0, #0x0
add r4, r1, #0x0
- bl FUN_0201AB08
+ bl GetWindowBgId
str r0, [sp, #0x10]
add r0, r5, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
add r7, r0, #0x0
add r0, r5, #0x0
bl GetWindowWidth
@@ -837,11 +837,11 @@ FUN_0200D0E0: ; 0x0200D0E0
ldr r0, [r5, #0x0]
ldr r1, [sp, #0x10]
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
cmp r4, #0x0
bne _0200D142
add r0, r5, #0x0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
_0200D142:
add sp, #0x18
pop {r3-r7, pc}
@@ -890,10 +890,10 @@ FUN_0200D18C: ; 0x0200D18C
str r1, [sp, #0x24]
str r0, [sp, #0x20]
ldr r0, [r0, #0x0]
- bl FUN_02016BB8
+ bl BgConfig_GetHeapId
add r6, r0, #0x0
ldr r0, [sp, #0x20]
- bl FUN_0201AB08
+ bl GetWindowBgId
mov r1, #0x6
str r0, [sp, #0x28]
add r0, r6, #0x0
@@ -901,7 +901,7 @@ FUN_0200D18C: ; 0x0200D18C
bl AllocFromHeap
add r5, r0, #0x0
ldr r0, [sp, #0x28]
- bl FUN_020187B0
+ bl BgGetCharPtr
add r4, r0, #0x0
str r6, [sp, #0x0]
mov r0, #0x26
@@ -978,7 +978,7 @@ _0200D1E0:
ldr r0, [r0, #0x0]
add r2, r5, #0x0
lsl r3, r3, #0x6
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r0, [sp, #0x24]
bl FUN_02002840
ldr r0, [sp, #0x2c]
@@ -1049,7 +1049,7 @@ _0200D2D2:
ldr r1, [sp, #0x8]
add r2, r4, #0x0
lsl r3, r3, #0x6
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r0, [sp, #0xc]
bl FreeToHeap
add r0, r4, #0x0
@@ -1095,7 +1095,7 @@ FUN_0200D300: ; 0x0200D300
add r0, r6, #0x0
mov r2, #0x20
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
ldr r1, [sp, #0x14]
add r0, r4, #0x0
bl FreeToHeapExplicit
@@ -1176,7 +1176,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldrh r2, [r2, #0x1c]
lsr r3, r3, #0x18
str r0, [sp, #0x10]
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x18]
str r0, [sp, #0x30]
sub r0, #0x8
@@ -1198,7 +1198,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, sp, #0x48
ldrb r0, [r0, #0x10]
add r2, r4, #0x2
@@ -1225,7 +1225,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r2, r4, #0x3
lsl r2, r2, #0x10
ldr r1, [sp, #0x18]
@@ -1245,7 +1245,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x38]
add r2, r4, #0x4
add r0, r0, #0x1
@@ -1264,7 +1264,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x38]
add r0, r0, #0x2
str r0, [sp, #0x28]
@@ -1283,7 +1283,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
ldr r3, [sp, #0x34]
str r0, [sp, #0x0]
@@ -1298,7 +1298,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
ldr r3, [sp, #0x30]
str r0, [sp, #0x0]
@@ -1313,7 +1313,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
add r2, r4, #0x0
str r0, [sp, #0x0]
@@ -1330,7 +1330,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
add r2, r4, #0x0
str r0, [sp, #0x0]
@@ -1346,7 +1346,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
add r2, r4, #0x0
str r0, [sp, #0x0]
@@ -1362,7 +1362,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
add r2, r4, #0x0
str r0, [sp, #0x0]
@@ -1378,7 +1378,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
add r2, r4, #0x0
add r6, r0, r6
@@ -1397,7 +1397,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -1414,7 +1414,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -1434,7 +1434,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -1451,7 +1451,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -1468,7 +1468,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -1484,7 +1484,7 @@ FUN_0200D3B0: ; 0x0200D3B0
ldr r1, [sp, #0x14]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x40
pop {r3-r7, pc}
.balign 4
@@ -1496,16 +1496,16 @@ FUN_0200D678: ; 0x0200D678
str r1, [sp, #0x10]
add r7, r0, #0x0
str r2, [sp, #0x14]
- bl FUN_0201AB08
+ bl GetWindowBgId
str r0, [sp, #0x20]
add r0, r7, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
sub r0, r0, #0x7
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x18]
add r0, r7, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
str r0, [sp, #0x1c]
mov r0, #0x0
str r0, [sp, #0x24]
@@ -1538,7 +1538,7 @@ _0200D6BA:
ldr r1, [sp, #0x20]
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r4, #0x1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
@@ -1562,17 +1562,17 @@ FUN_0200D6F8: ; 0x0200D6F8
str r1, [sp, #0x10]
add r4, r2, #0x0
add r6, r3, #0x0
- bl FUN_0201AB08
+ bl GetWindowBgId
str r0, [sp, #0x14]
add r0, sp, #0x30
ldrb r0, [r0, #0x10]
cmp r0, #0x1
bhi _0200D756
add r0, r5, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
str r0, [sp, #0x18]
add r0, r5, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
str r0, [sp, #0x1c]
add r0, r5, #0x0
bl GetWindowWidth
@@ -1598,10 +1598,10 @@ FUN_0200D6F8: ; 0x0200D6F8
b _0200D788
_0200D756:
add r0, r5, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
str r0, [sp, #0x20]
add r0, r5, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
str r0, [sp, #0x24]
add r0, r5, #0x0
bl GetWindowWidth
@@ -1637,15 +1637,15 @@ FUN_0200D7A0: ; 0x0200D7A0
add r5, r0, #0x0
add r4, r1, #0x0
str r2, [sp, #0x10]
- bl FUN_0201AB08
+ bl GetWindowBgId
str r0, [sp, #0x14]
cmp r4, #0x1
bhi _0200D7FE
add r0, r5, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
add r7, r0, #0x0
add r0, r5, #0x0
bl GetWindowWidth
@@ -1671,14 +1671,14 @@ FUN_0200D7A0: ; 0x0200D7A0
ldr r0, [r5, #0x0]
ldr r1, [sp, #0x14]
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
b _0200D846
_0200D7FE:
add r0, r5, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB18
+ bl GetWindowY
add r6, r0, #0x0
add r0, r5, #0x0
bl GetWindowWidth
@@ -1704,13 +1704,13 @@ _0200D7FE:
ldr r0, [r5, #0x0]
ldr r1, [sp, #0x14]
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
_0200D846:
ldr r0, [sp, #0x10]
cmp r0, #0x0
bne _0200D852
add r0, r5, #0x0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
_0200D852:
add sp, #0x18
pop {r3-r7, pc}
@@ -1723,11 +1723,11 @@ FUN_0200D858: ; 0x0200D858
str r0, [sp, #0x20]
ldr r0, [r0, #0x0]
str r1, [sp, #0x24]
- bl FUN_02016BB8
+ bl BgConfig_GetHeapId
str r0, [sp, #0x28]
ldr r0, [sp, #0x20]
- bl FUN_0201AB08
- bl FUN_020187B0
+ bl GetWindowBgId
+ bl BgGetCharPtr
add r5, r0, #0x0
ldr r0, [sp, #0x28]
ldr r1, _0200D970 ; =0x0000048C
@@ -1854,13 +1854,13 @@ FUN_0200D980: ; 0x0200D980
add r5, r0, #0x0
ldr r0, [r5, #0x0]
add r6, r1, #0x0
- bl FUN_0201AB08
+ bl GetWindowBgId
add r4, r0, #0x0
ldr r0, [r5, #0x0]
- bl FUN_0201AB14
+ bl GetWindowX
str r0, [sp, #0x18]
ldr r0, [r5, #0x0]
- bl FUN_0201AB18
+ bl GetWindowY
str r0, [sp, #0x1c]
ldr r0, [r5, #0x0]
bl GetWindowWidth
@@ -1877,7 +1877,7 @@ FUN_0200D980: ; 0x0200D980
ldr r0, [r5, #0x0]
mov r3, #0x80
ldr r0, [r0, #0x0]
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x18]
add r7, r0, #0x2
@@ -1904,7 +1904,7 @@ FUN_0200D980: ; 0x0200D980
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r7, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -1924,7 +1924,7 @@ FUN_0200D980: ; 0x0200D980
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
ldr r3, [sp, #0x14]
add r7, r0, #0x3
@@ -1946,7 +1946,7 @@ FUN_0200D980: ; 0x0200D980
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r7, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -1965,11 +1965,11 @@ FUN_0200D980: ; 0x0200D980
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r5, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0x0]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x24
pop {r4-r7, pc}
_0200DA8A:
@@ -1988,7 +1988,7 @@ _0200DA8A:
add r2, r2, r3
ldr r0, [r0, #0x0]
mov r3, #0x80
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
cmp r6, #0x0
beq _0200DB72
ldr r0, [sp, #0x1c]
@@ -2017,7 +2017,7 @@ _0200DA8A:
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r7, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -2037,7 +2037,7 @@ _0200DA8A:
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
ldr r3, [sp, #0x10]
add r7, r0, #0x3
@@ -2059,7 +2059,7 @@ _0200DA8A:
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
lsl r0, r7, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
@@ -2078,11 +2078,11 @@ _0200DA8A:
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r5, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0x0]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_0200DB72:
add sp, #0x24
pop {r4-r7, pc}
@@ -2228,7 +2228,7 @@ FUN_0200DC4C: ; 0x0200DC4C
bl FUN_0200DFD8
add r0, r6, #0x0
add r1, r7, #0x0
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _0200DCA0 ; =0x0000016F
add r0, r4, r0
add sp, #0xc
@@ -2266,7 +2266,7 @@ FUN_0200DCA4: ; 0x0200DCA4
bl FUN_0200DFD8
add r0, r6, #0x0
add r1, r7, #0x0
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _0200DCF4 ; =0x0000016F
add r0, r4, r0
add sp, #0xc
@@ -2646,7 +2646,7 @@ FUN_0200DFD8: ; 0x0200DFD8
lsl r3, r3, #0x18
lsr r3, r3, #0x18
add r6, r2, #0x0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r3, _0200E184 ; =0x0000016E
add r2, r6, #0x1
ldrb r0, [r5, r3]
@@ -2667,7 +2667,7 @@ FUN_0200DFD8: ; 0x0200DFD8
ldrb r3, [r5, r3]
ldr r0, [r5, r0]
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r3, _0200E184 ; =0x0000016E
add r2, r6, #0x2
ldrb r0, [r5, r3]
@@ -2690,7 +2690,7 @@ FUN_0200DFD8: ; 0x0200DFD8
lsl r3, r3, #0x18
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r3, _0200E184 ; =0x0000016E
add r2, r6, #0x4
ldrb r0, [r5, r3]
@@ -2707,7 +2707,7 @@ FUN_0200DFD8: ; 0x0200DFD8
ldrb r3, [r5, r3]
ldr r0, [r5, r0]
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r3, _0200E184 ; =0x0000016E
add r2, r6, #0x3
ldrb r0, [r5, r3]
@@ -2728,7 +2728,7 @@ FUN_0200DFD8: ; 0x0200DFD8
lsl r3, r3, #0x18
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r3, _0200E184 ; =0x0000016E
add r2, r6, #0x5
ldrb r0, [r5, r3]
@@ -2749,7 +2749,7 @@ FUN_0200DFD8: ; 0x0200DFD8
lsl r3, r3, #0x18
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r3, _0200E184 ; =0x0000016E
add r2, r6, #0x6
ldrb r0, [r5, r3]
@@ -2772,7 +2772,7 @@ FUN_0200DFD8: ; 0x0200DFD8
lsl r3, r3, #0x18
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r3, _0200E184 ; =0x0000016E
add r2, r6, #0x7
ldrb r0, [r5, r3]
@@ -2793,7 +2793,7 @@ FUN_0200DFD8: ; 0x0200DFD8
ldrb r3, [r5, r3]
ldr r0, [r5, r0]
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r3, _0200E184 ; =0x0000016E
add r6, #0x8
ldrb r0, [r5, r3]
@@ -2816,13 +2816,13 @@ FUN_0200DFD8: ; 0x0200DFD8
lsl r3, r3, #0x18
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r1, #0x5a
lsl r1, r1, #0x2
ldr r0, [r5, r1]
add r1, r1, #0x4
ldrb r1, [r5, r1]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r4-r6, pc}
nop
@@ -2853,13 +2853,13 @@ FUN_0200E188: ; 0x0200E188
sub r3, r3, #0x1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r1, #0x5a
lsl r1, r1, #0x2
ldr r0, [r4, r1]
add r1, r1, #0x4
ldrb r1, [r4, r1]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r4, pc}
.balign 4
diff --git a/arm9/asm/unk_0200E1D0.s b/arm9/asm/unk_0200E1D0.s
index 3690752c..b93e5e74 100644
--- a/arm9/asm/unk_0200E1D0.s
+++ b/arm9/asm/unk_0200E1D0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0200E850.s b/arm9/asm/unk_0200E850.s
index 1919f15d..a464171a 100644
--- a/arm9/asm/unk_0200E850.s
+++ b/arm9/asm/unk_0200E850.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_0201137C.s b/arm9/asm/unk_0201137C.s
index 1a68abb7..65e076bb 100644
--- a/arm9/asm/unk_0201137C.s
+++ b/arm9/asm/unk_0201137C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02011744.s b/arm9/asm/unk_02011744.s
index bc9652c8..0a0ad349 100644
--- a/arm9/asm/unk_02011744.s
+++ b/arm9/asm/unk_02011744.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_02012004.s b/arm9/asm/unk_02012004.s
index 8c38ae93..61d60ec2 100644
--- a/arm9/asm/unk_02012004.s
+++ b/arm9/asm/unk_02012004.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.rodata
diff --git a/arm9/asm/unk_02012944.s b/arm9/asm/unk_02012944.s
index 8b3029f2..789becf0 100644
--- a/arm9/asm/unk_02012944.s
+++ b/arm9/asm/unk_02012944.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02012CC8.s b/arm9/asm/unk_02012CC8.s
index 5f0f01c6..e54565f1 100644
--- a/arm9/asm/unk_02012CC8.s
+++ b/arm9/asm/unk_02012CC8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_G3dGlb
@@ -1565,6 +1565,6 @@ ListMenuUpdateCursorObj: ; 0x020136F8
add r3, r4, #0x0
bl AddTextPrinterParameterized2
add r0, r5, #0x0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4-r6, pc}
diff --git a/arm9/asm/unk_02013CD4.s b/arm9/asm/unk_02013CD4.s
index 8b846678..d6d0116a 100644
--- a/arm9/asm/unk_02013CD4.s
+++ b/arm9/asm/unk_02013CD4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_GfdDefaultFuncAllocPlttVram
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_020142EC.s b/arm9/asm/unk_020142EC.s
index 2e18d984..5526b320 100644
--- a/arm9/asm/unk_020142EC.s
+++ b/arm9/asm/unk_020142EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
@@ -258,7 +258,7 @@ FUN_020144B0: ; 0x020144B0
mov r2, #0x20
lsl r3, r3, #0x15
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
pop {r3, pc}
.balign 4
@@ -272,7 +272,7 @@ FUN_020144C8: ; 0x020144C8
mov r2, #0x20
lsl r3, r3, #0x15
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
pop {r3, pc}
.balign 4
diff --git a/arm9/asm/unk_020144FC.s b/arm9/asm/unk_020144FC.s
index b9dd902f..e3677eca 100644
--- a/arm9/asm/unk_020144FC.s
+++ b/arm9/asm/unk_020144FC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02014590.s b/arm9/asm/unk_02014590.s
index 189206a3..42aad43e 100644
--- a/arm9/asm/unk_02014590.s
+++ b/arm9/asm/unk_02014590.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
@@ -424,7 +424,7 @@ FUN_02014878: ; 0x02014878
add r2, #0x9a
strb r0, [r2, #0x0]
ldr r0, _020148A4 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
_020148A2:
pop {r4, pc}
.balign 4
@@ -557,12 +557,12 @@ FUN_02014970: ; 0x02014970
lsl r1, r1, #0x18
ldr r0, [r6, #0x0]
lsr r1, r1, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r1, [r6, #0x4]
ldr r0, [r6, #0x0]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r4, #0x0
add r5, r6, #0x0
_020149B4:
@@ -742,7 +742,7 @@ FUN_02014AD4: ; 0x02014AD4
ldr r0, [r4, #0x0]
ldr r3, [r3, #0x10]
lsr r1, r1, #0x18
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r5, #0x0
bl FUN_0200CAB4
ldr r0, [r4, #0x8]
@@ -817,11 +817,11 @@ FUN_02014B58: ; 0x02014B58
lsr r2, r2, #0x18
lsr r3, r3, #0x18
add r5, r0, #0x0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
lsl r1, r4, #0x18
add r0, r5, #0x0
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r3-r6, pc}
.balign 4
diff --git a/arm9/asm/unk_02014BF4.s b/arm9/asm/unk_02014BF4.s
index 566b8514..2413b116 100644
--- a/arm9/asm/unk_02014BF4.s
+++ b/arm9/asm/unk_02014BF4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_02015D14.s b/arm9/asm/unk_02015D14.s
index 3b49756a..7a67039f 100644
--- a/arm9/asm/unk_02015D14.s
+++ b/arm9/asm/unk_02015D14.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0201B1A8.s b/arm9/asm/unk_0201B1A8.s
index 359f9bfe..f2b33c29 100644
--- a/arm9/asm/unk_0201B1A8.s
+++ b/arm9/asm/unk_0201B1A8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_G3dGlb
.extern NNS_G3dGlb
@@ -21,7 +21,7 @@ FUN_0201B1A8: ; 0x0201B1A8
push {r3-r5, lr}
add r5, r3, #0x0
add r4, r2, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r5, #0x0]
bl NNS_G3dGetTex
cmp r0, #0x0
diff --git a/arm9/asm/unk_0201B4E8.s b/arm9/asm/unk_0201B4E8.s
index 42074f95..b742fd39 100644
--- a/arm9/asm/unk_0201B4E8.s
+++ b/arm9/asm/unk_0201B4E8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0201B6D0.s b/arm9/asm/unk_0201B6D0.s
index 1d795e17..b66ef8bb 100644
--- a/arm9/asm/unk_0201B6D0.s
+++ b/arm9/asm/unk_0201B6D0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern NNS_G3dGlb
.extern NNS_G3dGlb
diff --git a/arm9/asm/unk_0201C24C.s b/arm9/asm/unk_0201C24C.s
index b0c55e93..35d638b3 100644
--- a/arm9/asm/unk_0201C24C.s
+++ b/arm9/asm/unk_0201C24C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0201C360.s b/arm9/asm/unk_0201C360.s
index 078b3ee3..6560cbc4 100644
--- a/arm9/asm/unk_0201C360.s
+++ b/arm9/asm/unk_0201C360.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0201C620.s b/arm9/asm/unk_0201C620.s
index b1da9325..a4d23899 100644
--- a/arm9/asm/unk_0201C620.s
+++ b/arm9/asm/unk_0201C620.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0201C6B4.s b/arm9/asm/unk_0201C6B4.s
index dea0c864..6ee6910b 100644
--- a/arm9/asm/unk_0201C6B4.s
+++ b/arm9/asm/unk_0201C6B4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0201C7A0.s b/arm9/asm/unk_0201C7A0.s
index aa8bfe83..cbc055af 100644
--- a/arm9/asm/unk_0201C7A0.s
+++ b/arm9/asm/unk_0201C7A0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gSineTable
.extern FX_SinCosTable_
diff --git a/arm9/asm/unk_0201CC08.s b/arm9/asm/unk_0201CC08.s
index 15457b23..30d82af8 100644
--- a/arm9/asm/unk_0201CC08.s
+++ b/arm9/asm/unk_0201CC08.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_0201D040.s b/arm9/asm/unk_0201D040.s
index b41b069c..672b3209 100644
--- a/arm9/asm/unk_0201D040.s
+++ b/arm9/asm/unk_0201D040.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0201E00C.s b/arm9/asm/unk_0201E00C.s
index d46fd5e0..212205fd 100644
--- a/arm9/asm/unk_0201E00C.s
+++ b/arm9/asm/unk_0201E00C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0201E7D8.s b/arm9/asm/unk_0201E7D8.s
index 43dcd254..abc19a78 100644
--- a/arm9/asm/unk_0201E7D8.s
+++ b/arm9/asm/unk_0201E7D8.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern NNS_G3dGlb
.extern NNS_G3dGlb
diff --git a/arm9/asm/unk_0201F06C.s b/arm9/asm/unk_0201F06C.s
index 03e1404e..a00dc10e 100644
--- a/arm9/asm/unk_0201F06C.s
+++ b/arm9/asm/unk_0201F06C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
.extern NNS_GfdDefaultFuncAllocPlttVram
@@ -265,7 +265,7 @@ _0201F1C8:
ldr r0, [r0, #0x0]
ldr r1, [r5, #0x4]
mov r2, #0x4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r0, [r5, #0x0]
ldr r1, [r5, #0x4]
bl FUN_0201C360
@@ -1821,7 +1821,7 @@ _0201FD0C:
str r0, [r4, r1]
ldr r0, [r5, #0x8]
ldr r1, _0201FD54 ; =UNK_02105BBC
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r1, #0x46
lsl r1, r1, #0x2
str r0, [r4, r1]
diff --git a/arm9/asm/unk_020208B8.s b/arm9/asm/unk_020208B8.s
index 11027cff..5e47bc2e 100644
--- a/arm9/asm/unk_020208B8.s
+++ b/arm9/asm/unk_020208B8.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_02020C44.s b/arm9/asm/unk_02020C44.s
index 235543ee..b03750ac 100644
--- a/arm9/asm/unk_02020C44.s
+++ b/arm9/asm/unk_02020C44.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern NNS_GfdDefaultFuncAllocTexVram
.extern NNS_GfdDefaultFuncAllocPlttVram
@@ -146,7 +146,7 @@ _02020D38:
_02020D48:
ldr r0, [sp, #0x0]
add r1, r6, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r4, #0x4]
cmp r0, #0x0
bne _02020D5A
diff --git a/arm9/asm/unk_0202134C.s b/arm9/asm/unk_0202134C.s
index b45f4e91..1c5515c0 100644
--- a/arm9/asm/unk_0202134C.s
+++ b/arm9/asm/unk_0202134C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02021590.s b/arm9/asm/unk_02021590.s
index ee27fc88..a648ab1d 100644
--- a/arm9/asm/unk_02021590.s
+++ b/arm9/asm/unk_02021590.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02022244.s b/arm9/asm/unk_02022244.s
index 02895c8f..07482d25 100644
--- a/arm9/asm/unk_02022244.s
+++ b/arm9/asm/unk_02022244.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02022294.s b/arm9/asm/unk_02022294.s
index 2b3d7a39..c0d13763 100644
--- a/arm9/asm/unk_02022294.s
+++ b/arm9/asm/unk_02022294.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_020222E8.s b/arm9/asm/unk_020222E8.s
index b43507a2..047712a5 100644
--- a/arm9/asm/unk_020222E8.s
+++ b/arm9/asm/unk_020222E8.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02022318.s b/arm9/asm/unk_02022318.s
index 9564742c..5a639179 100644
--- a/arm9/asm/unk_02022318.s
+++ b/arm9/asm/unk_02022318.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02022450.s b/arm9/asm/unk_02022450.s
index 73169e78..fd6aacb5 100644
--- a/arm9/asm/unk_02022450.s
+++ b/arm9/asm/unk_02022450.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02023AC4.s b/arm9/asm/unk_02023AC4.s
index daa3a9a3..a9a5bea2 100644
--- a/arm9/asm/unk_02023AC4.s
+++ b/arm9/asm/unk_02023AC4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .data
diff --git a/arm9/asm/unk_020250A4.s b/arm9/asm/unk_020250A4.s
index 60cd4165..5810a8ac 100644
--- a/arm9/asm/unk_020250A4.s
+++ b/arm9/asm/unk_020250A4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02025954.s b/arm9/asm/unk_02025954.s
index 40c1b236..bbbe5bc9 100644
--- a/arm9/asm/unk_02025954.s
+++ b/arm9/asm/unk_02025954.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_02026CD0.s b/arm9/asm/unk_02026CD0.s
index 28a1f682..da87eac5 100644
--- a/arm9/asm/unk_02026CD0.s
+++ b/arm9/asm/unk_02026CD0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gGameLanguage
diff --git a/arm9/asm/unk_02027E30.s b/arm9/asm/unk_02027E30.s
index 8116a83c..c5efaebd 100644
--- a/arm9/asm/unk_02027E30.s
+++ b/arm9/asm/unk_02027E30.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020281E0.s b/arm9/asm/unk_020281E0.s
index 23822bb1..f8183dc2 100644
--- a/arm9/asm/unk_020281E0.s
+++ b/arm9/asm/unk_020281E0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02028980.s b/arm9/asm/unk_02028980.s
index 664e39e7..8299ea95 100644
--- a/arm9/asm/unk_02028980.s
+++ b/arm9/asm/unk_02028980.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02029A84.s b/arm9/asm/unk_02029A84.s
index c0382834..b9131299 100644
--- a/arm9/asm/unk_02029A84.s
+++ b/arm9/asm/unk_02029A84.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02029AE0.s b/arm9/asm/unk_02029AE0.s
index 3e6f8a2e..68c9a3c8 100644
--- a/arm9/asm/unk_02029AE0.s
+++ b/arm9/asm/unk_02029AE0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02029CEC.s b/arm9/asm/unk_02029CEC.s
index 623b44b9..5f7a1bf2 100644
--- a/arm9/asm/unk_02029CEC.s
+++ b/arm9/asm/unk_02029CEC.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02029FB0.s b/arm9/asm/unk_02029FB0.s
index c98b57b7..2c66522a 100644
--- a/arm9/asm/unk_02029FB0.s
+++ b/arm9/asm/unk_02029FB0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0202A924.s b/arm9/asm/unk_0202A924.s
index f8784153..6bd87ba5 100644
--- a/arm9/asm/unk_0202A924.s
+++ b/arm9/asm/unk_0202A924.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202AC20.s b/arm9/asm/unk_0202AC20.s
index 843845eb..8e86635c 100644
--- a/arm9/asm/unk_0202AC20.s
+++ b/arm9/asm/unk_0202AC20.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0202B374.s b/arm9/asm/unk_0202B374.s
index 2becea26..260bf6f6 100644
--- a/arm9/asm/unk_0202B374.s
+++ b/arm9/asm/unk_0202B374.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202B870.s b/arm9/asm/unk_0202B870.s
index 55229d73..c4dc6cc4 100644
--- a/arm9/asm/unk_0202B870.s
+++ b/arm9/asm/unk_0202B870.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0202BE98.s b/arm9/asm/unk_0202BE98.s
index 52f6b9ad..fb7c35a7 100644
--- a/arm9/asm/unk_0202BE98.s
+++ b/arm9/asm/unk_0202BE98.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202C198.s b/arm9/asm/unk_0202C198.s
index 742b9fb1..4753b23a 100644
--- a/arm9/asm/unk_0202C198.s
+++ b/arm9/asm/unk_0202C198.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .data
diff --git a/arm9/asm/unk_0202D394.s b/arm9/asm/unk_0202D394.s
index ce635a79..8def9e94 100644
--- a/arm9/asm/unk_0202D394.s
+++ b/arm9/asm/unk_0202D394.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202D4C4.s b/arm9/asm/unk_0202D4C4.s
index a809e579..c74b65b6 100644
--- a/arm9/asm/unk_0202D4C4.s
+++ b/arm9/asm/unk_0202D4C4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0202D8D0.s b/arm9/asm/unk_0202D8D0.s
index 13ed76b8..ec2d4a99 100644
--- a/arm9/asm/unk_0202D8D0.s
+++ b/arm9/asm/unk_0202D8D0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0202DB14.s b/arm9/asm/unk_0202DB14.s
index 490da58f..867eb255 100644
--- a/arm9/asm/unk_0202DB14.s
+++ b/arm9/asm/unk_0202DB14.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_020336C0.s b/arm9/asm/unk_020336C0.s
index 4f2d4dc3..a82cee5b 100644
--- a/arm9/asm/unk_020336C0.s
+++ b/arm9/asm/unk_020336C0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02033874.s b/arm9/asm/unk_02033874.s
index dfad7db2..83170809 100644
--- a/arm9/asm/unk_02033874.s
+++ b/arm9/asm/unk_02033874.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02033B68.s b/arm9/asm/unk_02033B68.s
index 9e204377..69021991 100644
--- a/arm9/asm/unk_02033B68.s
+++ b/arm9/asm/unk_02033B68.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
@@ -326,7 +326,7 @@ FUN_02033D3C: ; 0x02033D3C
beq _02033D92
ldr r0, _02033D98 ; =UNK_02105D88
add r1, sp, #0x4
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
@@ -374,11 +374,11 @@ FUN_02033D9C: ; 0x02033D9C
add r1, sp, #0x4
beq _02033DC2
ldr r0, _02033E5C ; =UNK_02105D98
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
b _02033DC8
_02033DC2:
ldr r0, _02033E60 ; =UNK_02105DA8
- bl FUN_020161F8
+ bl OpenAndReadWholeFile
_02033DC8:
mov r1, #0x96
ldr r0, [sp, #0x4]
diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s
index ed33e084..7240c93f 100644
--- a/arm9/asm/unk_02033F50.s
+++ b/arm9/asm/unk_02033F50.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
@@ -110,7 +110,7 @@ _02033FA4:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02034160 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
@@ -132,18 +132,18 @@ _02033FA4:
ldr r0, _02034170 ; =UNK_020EECD0
bl GX_SetBanks
add r0, r4, #0x0
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r6, r0, #0x0
ldr r0, _02034174 ; =UNK_020EECA4
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0x0
ldr r2, _02034178 ; =UNK_020EECB4
add r0, r6, #0x0
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r6, #0x0
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0x0
str r1, [sp, #0x0]
ldr r2, _0203417C ; =0x000001F7
@@ -159,13 +159,13 @@ _02033FA4:
mov r1, #0x20
add r2, r0, #0x0
add r3, r4, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r1, _02034180 ; =0x00006C21
mov r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, _02034180 ; =0x00006C21
mov r0, #0x4
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x1
mov r1, #0x1a
mov r2, #0xc8
@@ -189,7 +189,7 @@ _02033FA4:
ldr r2, _02034184 ; =UNK_020EEC9C
add r0, r6, #0x0
add r1, sp, #0x18
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd0
str r0, [sp, #0x0]
mov r0, #0x90
@@ -241,7 +241,7 @@ _02033FA4:
mov r2, #0x3
bl FUN_0200A274
add r0, sp, #0x18
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [sp, #0x10]
bl DestroyMsgData
add r0, r4, #0x0
diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s
index 08265835..66bb542c 100644
--- a/arm9/asm/unk_02034188.s
+++ b/arm9/asm/unk_02034188.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
@@ -58,7 +58,7 @@ FUN_02034188: ; 0x02034188
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02034370 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
@@ -80,18 +80,18 @@ FUN_02034188: ; 0x02034188
ldr r0, _02034380 ; =UNK_020EED2C
bl GX_SetBanks
add r0, r4, #0x0
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [sp, #0x10]
ldr r0, _02034384 ; =UNK_020EED00
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0x0
ldr r0, [sp, #0x10]
ldr r2, _02034388 ; =UNK_020EED10
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [sp, #0x10]
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0x0
str r1, [sp, #0x0]
ldr r0, [sp, #0x10]
@@ -107,13 +107,13 @@ FUN_02034188: ; 0x02034188
mov r1, #0x20
add r2, r0, #0x0
add r3, r4, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r1, _02034390 ; =0x00006C21
mov r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, _02034390 ; =0x00006C21
mov r0, #0x4
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r2, _02034394 ; =0x00000265
mov r0, #0x1
mov r1, #0x1a
@@ -129,7 +129,7 @@ FUN_02034188: ; 0x02034188
ldr r0, [sp, #0x10]
ldr r2, _02034398 ; =UNK_020EECF8
add r1, sp, #0x14
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd0
str r0, [sp, #0x0]
mov r0, #0x90
@@ -189,36 +189,36 @@ _020342E4:
b _020342E4
_02034308:
add r0, sp, #0x14
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [sp, #0xc]
bl DestroyMsgData
mov r0, #0x0
add r1, r0, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x1
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x2
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x3
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x4
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x5
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x6
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x7
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [sp, #0x10]
mov r1, #0x0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [sp, #0x10]
bl FreeToHeap
add sp, #0x24
diff --git a/arm9/asm/unk_020343A8.s b/arm9/asm/unk_020343A8.s
index a4cac7e7..38e95c4f 100644
--- a/arm9/asm/unk_020343A8.s
+++ b/arm9/asm/unk_020343A8.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02034A28.s b/arm9/asm/unk_02034A28.s
index 19d0db80..be782cd2 100644
--- a/arm9/asm/unk_02034A28.s
+++ b/arm9/asm/unk_02034A28.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02034D7C.s b/arm9/asm/unk_02034D7C.s
index c179bd14..7457d78d 100644
--- a/arm9/asm/unk_02034D7C.s
+++ b/arm9/asm/unk_02034D7C.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02034E84.s b/arm9/asm/unk_02034E84.s
index 45f0b5d0..fd110c04 100644
--- a/arm9/asm/unk_02034E84.s
+++ b/arm9/asm/unk_02034E84.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.rodata
diff --git a/arm9/asm/unk_02034FE4.s b/arm9/asm/unk_02034FE4.s
index 81135415..901bbf19 100644
--- a/arm9/asm/unk_02034FE4.s
+++ b/arm9/asm/unk_02034FE4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index c9df4ca4..f2ef44dc 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern UNK_020F96DC
.section .rodata
@@ -215,7 +215,7 @@ FUN_020351A0: ; 0x020351A0
push {r3-r5, lr}
add r5, r0, #0x0
ldr r0, _0203524C ; =0x000005FD
- bl FUN_020054C8
+ bl PlaySE
bl FUN_02035254
add r4, r0, #0x0
mov r0, #0x71
@@ -552,12 +552,12 @@ _02035440:
mov r1, #0x1
bl FUN_0200CCF8
add r0, r4, #0x0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r6, #0x0
bl FUN_020358A0
ldr r0, [r5, #0x8]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0x0
bl FreeToHeap
ldr r0, [r5, #0x34]
@@ -616,7 +616,7 @@ FUN_0203549C: ; 0x0203549C
ldr r0, [sp, #0x1c]
mov r3, #0x14
ldr r0, [r0, #0x8]
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x1
str r0, [sp, #0x0]
mov r3, #0xb
@@ -773,7 +773,7 @@ _02035614:
bl FUN_02001B8C
str r0, [r4, #0x20]
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x1c]
ldr r0, [r0, #0xc]
bl Sav2_PlayerData_GetProfileAddr
@@ -948,7 +948,7 @@ _0203576C:
ldr r0, [r4, #0x8]
add r1, #0x10
mov r2, #0x3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x1
str r0, [sp, #0x0]
mov r3, #0xb
@@ -1058,7 +1058,7 @@ _0203584C:
bl DestroyMsgData
add r5, #0x10
add r0, r5, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_0203588E:
add sp, #0x20
pop {r3-r7, pc}
@@ -1093,7 +1093,7 @@ _020358CE:
bl FUN_0200CCF8
add r5, #0x10
add r0, r5, #0x0
- bl FUN_02019178
+ bl RemoveWindow
_020358E0:
pop {r3-r5, pc}
.balign 4
@@ -1587,7 +1587,7 @@ FUN_02035CA0: ; 0x02035CA0
add r4, r0, #0x0
bl FUN_02035718
add r0, r4, #0x0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0x0
bl FUN_020358A0
mov r1, #0x72
@@ -2326,9 +2326,9 @@ FUN_020362E4: ; 0x020362E4
bl FUN_0204652C
add r4, r0, #0x0
mov r0, #0xb
- bl BagView_new
+ bl BagView_New
str r0, [sp, #0x8]
- bl FUN_0206E308
+ bl BagView_sizeof
mov r1, #0x7e
lsl r1, r1, #0x2
add r2, r0, #0x0
@@ -2657,9 +2657,9 @@ FUN_020365BC: ; 0x020365BC
bl FUN_0200CCF8
ldrb r1, [r4, #0x4]
ldr r0, [r4, #0x0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0x0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0x0
bl FUN_020358A0
mov r0, #0x4
@@ -2927,9 +2927,9 @@ FUN_020367E8: ; 0x020367E8
bl FUN_0200CCF8
ldrb r1, [r4, #0x4]
ldr r0, [r4, #0x0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0x0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0x0
bl FUN_020358A0
ldr r0, [r6, #0xc]
@@ -3649,7 +3649,7 @@ FUN_02036E08: ; 0x02036E08
mov r0, #0x3
mov r1, #0x49
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r4, #0xc]
bl SavArray_PlayerParty_get
ldrb r1, [r5, #0x0]
@@ -3773,7 +3773,7 @@ FUN_02036F1C: ; 0x02036F1C
ldr r0, [r4, r0]
bl FUN_0206C92C
mov r0, #0x49
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02036F9C ; =0x00000475
mov r1, #0x0
bl FUN_02005350
diff --git a/arm9/asm/unk_02036FA4.s b/arm9/asm/unk_02036FA4.s
index 2ebcc6fe..efbd5713 100644
--- a/arm9/asm/unk_02036FA4.s
+++ b/arm9/asm/unk_02036FA4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02037024.s b/arm9/asm/unk_02037024.s
index 6a0b7ff8..dbd3ae56 100644
--- a/arm9/asm/unk_02037024.s
+++ b/arm9/asm/unk_02037024.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020372D4.s b/arm9/asm/unk_020372D4.s
index 26a50555..88845239 100644
--- a/arm9/asm/unk_020372D4.s
+++ b/arm9/asm/unk_020372D4.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern gMain
@@ -187,16 +187,16 @@ FUN_02037400: ; 0x02037400
mov r0, #0x3
mov r1, #0xb
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x20
mov r0, #0x3
lsl r2, r1, #0x9
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0x3
mov r0, #0x0
mov r1, #0x5b
lsl r2, r2, #0x8
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0xb8
mov r2, #0xb
@@ -282,11 +282,11 @@ FUN_020374B0: ; 0x020374B0
add r0, r5, #0x0
bl OverlayManager_FreeData
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xb
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x20
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3-r5, pc}
thumb_func_start FUN_02037504
diff --git a/arm9/asm/unk_020377B0.s b/arm9/asm/unk_020377B0.s
index 6efca472..ca19378d 100644
--- a/arm9/asm/unk_020377B0.s
+++ b/arm9/asm/unk_020377B0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s
index 1505027c..5ac3b4c2 100644
--- a/arm9/asm/unk_020377F0.s
+++ b/arm9/asm/unk_020377F0.s
@@ -1,5 +1,5 @@
.include "asm/macros.inc"
- .include "global.inc"
+ .include "global.inc"
.extern UNK_020F2A9C
.extern UNK_020F96DC
@@ -1633,7 +1633,7 @@ _020382F6:
mov r0, #0x3
mov r1, #0x1a
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r5, #0xc]
bl Sav2_PlayerData_GetOptionsAddr
str r0, [sp, #0x24]
@@ -1691,7 +1691,7 @@ _02038386:
ldr r0, [r4, #0x60]
bl FUN_0206C92C
mov r0, #0x1a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x7
str r0, [r4, #0x0]
b _020383C8
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index bbed9516..e40bd803 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -147,729 +147,729 @@ UNK_020F3538: ; 0x020F3538
.byte 0x0B, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02
.byte 0x13, 0x02, 0x14, 0x02
- .global gScriptCmdTable
+ .global gScriptCmdTable
gScriptCmdTable: ; 0x020F355C
- .word ScrCmd_Nop
- .word ScrCmd_Dummy
- .word ScrCmd_End
- .word ScrCmd_Wait
- .word ScrCmd_LoadByte
- .word ScrCmd_LoadWord
- .word ScrCmd_LoadByteFromAddr
- .word ScrCmd_WriteByteToAddr
- .word ScrCmd_SetPtrByte
- .word ScrCmd_CopyLocal
- .word ScrCmd_CopyByte
- .word ScrCmd_CompareLocalToLocal
- .word ScrCmd_CompareLocalToValue
- .word ScrCmd_CompareLocalToAddr
- .word ScrCmd_CompareAddrToLocal
- .word ScrCmd_CompareAddrToValue
- .word ScrCmd_CompareAddrToAddr
- .word ScrCmd_CompareVarToValue
- .word ScrCmd_CompareVarToVar
- .word ScrCmd_RunScript
- .word ScrCmd_RunScriptWait
- .word ScrCmd_RestartCurrentScript
- .word ScrCmd_GoTo
- .word ScrCmd_ObjectGoTo
- .word ScrCmd_BgGoTo
- .word ScrCmd_DirectionGoTo
- .word ScrCmd_Call
- .word ScrCmd_Return
- .word ScrCmd_GoToIf
- .word ScrCmd_CallIf
- .word ScrCmd_SetFlag
- .word ScrCmd_ClearFlag
- .word ScrCmd_CheckFlag
- .word ScrCmd_CheckFlagVar
- .word ScrCmd_SetFlagVar
- .word ScrCmd_SetTrainerFlag
- .word ScrCmd_ClearTrainerFlag
- .word ScrCmd_CheckTrainerFlag
- .word ScrCmd_AddVar
- .word ScrCmd_SubVar
- .word ScrCmd_SetVar
- .word ScrCmd_CopyVar
- .word ScrCmd_SetOrCopyVar
- .word ScrCmd_Message
- .word ScrCmd_Unk002C
- .word ScrCmd_Unk002D
- .word ScrCmd_Unk002E
- .word ScrCmd_Unk002F
- .word ScrCmd_WaitButtonAB
- .word ScrCmd_WaitButton
- .word ScrCmd_WaitButtonABPad
- .word ScrCmd_Unk0033
- .word ScrCmd_CloseMessageBox
- .word ScrCmd_Unk0035
- .word ScrCmd_CreateMessageBox
- .word ScrCmd_Unk0037
- .word ScrCmd_Unk0038
- .word ScrCmd_Unk0039
- .word ScrCmd_Unk003A
- .word ScrCmd_Unk003B
- .word ScrCmd_Menu
- .word ScrCmd_ScrollBg
- .word ScrCmd_YesNoMenu
- .word ScrCmd_Unk003F
- .word ScrCmd_Unk0040
- .word ScrCmd_Unk0041
- .word ScrCmd_Unk0042
- .word ScrCmd_Unk0043
- .word ScrCmd_Unk0044
- .word ScrCmd_Unk0045
- .word ScrCmd_Unk0046
- .word ScrCmd_Unk0047
- .word ScrCmd_Unk0048
- .word ScrCmd_PlayFanfare
- .word ScrCmd_StopFanfare
- .word ScrCmd_PlayFanfareWait
- .word ScrCmd_PlayCry
- .word ScrCmd_PlayCryWait
- .word ScrCmd_PlaySound
- .word ScrCmd_PlaySoundWait
- .word ScrCmd_PlayBgm
- .word ScrCmd_StopBgm
- .word ScrCmd_PlayDefaultBgm
- .word ScrCmd_Unk0053
- .word ScrCmd_FadeOutBgm
- .word ScrCmd_FadeInBgm
- .word ScrCmd_Unk0056
- .word ScrCmd_Unk0057
- .word ScrCmd_Unk0058
- .word ScrCmd_CheckChatotCry
- .word ScrCmd_StartChatotRecord
- .word ScrCmd_StopChatotRecord
- .word ScrCmd_SaveChatotCry
- .word ScrCmd_Unk005D
- .word ScrCmd_Unk005E
- .word ScrCmd_Unk005F
- .word ScrCmd_Unk0060
- .word ScrCmd_Unk0061
- .word ScrCmd_Unk0062
- .word ScrCmd_Unk0063
- .word ScrCmd_Unk0064
- .word ScrCmd_Unk0065
- .word ScrCmd_Unk0066
- .word ScrCmd_Unk0067
- .word ScrCmd_Unk0068
- .word ScrCmd_Unk0069
- .word ScrCmd_Unk006A
- .word ScrCmd_Unk006B
- .word ScrCmd_Unk006C
- .word ScrCmd_Unk006D
- .word ScrCmd_Unk006E
- .word ScrCmd_GiveMoney
- .word ScrCmd_TakeMoneyImmediate
- .word ScrCmd_HasEnoughMoneyImmediate
- .word ScrCmd_ShowMoneyBox
- .word ScrCmd_HideMoneyBox
- .word ScrCmd_UpdateMoneyBox
- .word ScrCmd_ShowCoinBox
- .word ScrCmd_HideCoinBox
- .word ScrCmd_UpdateCoinBox
- .word ScrCmd_GetCoins
- .word ScrCmd_GiveCoins
- .word ScrCmd_TakeCoinsImmediate
- .word ScrCmd_GiveItem
- .word ScrCmd_TakeItem
- .word ScrCmd_HasSpaceForItem
- .word ScrCmd_HasItem
- .word ScrCmd_ItemIdIsTMOrHM
- .word ScrCmd_GetItemPocketId
- .word ScrCmd_Unk0081
- .word ScrCmd_Unk0082
- .word ScrCmd_GiveSecretBaseDecoration
- .word ScrCmd_TakeSecretBaseDecoration
- .word ScrCmd_HasSpaceForDecoration
- .word ScrCmd_GetDecorationCount
- .word ScrCmd_GiveUndergroundTrap
- .word ScrCmd_TakeUndergroundTrap
- .word ScrCmd_HasSpaceForTrap
- .word ScrCmd_GetTrapCount
- .word ScrCmd_GiveTreasure
- .word ScrCmd_TakeTreasure
- .word ScrCmd_HasSpaceForTreasure
- .word ScrCmd_GetTreasureCount
- .word ScrCmd_GiveUndergroundSphere
- .word ScrCmd_TakeUndergroundSphere
- .word ScrCmd_HasSpaceForSphere
- .word ScrCmd_GetSphereCount
- .word ScrCmd_Unk0093
- .word ScrCmd_Unk0094
- .word ScrCmd_Unk0095
- .word ScrCmd_GiveMon
- .word ScrCmd_GiveEgg
- .word ScrCmd_SetPartyMonMove
- .word ScrCmd_PartyMonHasMove
- .word ScrCmd_FindPartyMonWithMove
- .word ScrCmd_Unk009B
- .word ScrCmd_Unk009C
- .word ScrCmd_Unk009D
- .word ScrCmd_Unk009E
- .word ScrCmd_Unk009F
- .word ScrCmd_Unk00A0
- .word ScrCmd_Unk00A1
- .word ScrCmd_Unk00A2
- .word ScrCmd_Unk00A3
- .word ScrCmd_Unk00A4
- .word ScrCmd_Unk00A5
- .word ScrCmd_Unk00A6
- .word ScrCmd_Unk00A7
- .word ScrCmd_Unk00A8
- .word ScrCmd_Unk00A9
- .word ScrCmd_Unk00AA
- .word ScrCmd_MonStoragePC
- .word ScrCmd_Unk00AC
- .word ScrCmd_Unk00AD
- .word ScrCmd_Unk00AE
- .word ScrCmd_Unk00AF
- .word ScrCmd_HallOfFame
- .word ScrCmd_Unk00B1
- .word ScrCmd_Unk00B2
- .word ScrCmd_Unk00B3
- .word ScrCmd_Unk00B4
- .word ScrCmd_Unk00B5
- .word ScrCmd_Unk00B6
- .word ScrCmd_Unk00B7
- .word ScrCmd_Unk00B8
- .word ScrCmd_Unk00B9
- .word ScrCmd_Unk00BA
- .word ScrCmd_Unk00BB
- .word ScrCmd_Unk00BC
- .word ScrCmd_Unk00BD
- .word ScrCmd_Unk00BE
- .word ScrCmd_Unk00BF
- .word ScrCmd_Unk00C0
- .word ScrCmd_Unk00C1
- .word ScrCmd_Unk00C2
- .word ScrCmd_Unk00C3
- .word ScrCmd_Unk00C4
- .word ScrCmd_Unk00C5
- .word ScrCmd_Unk00C6
- .word ScrCmd_Unk00C7
- .word ScrCmd_Unk00C8
- .word ScrCmd_Unk00C9
- .word ScrCmd_Unk00CA
- .word ScrCmd_Unk00CB
- .word ScrCmd_Unk00CC
- .word ScrCmd_GetPlayerName
- .word ScrCmd_GetRivalName
- .word ScrCmd_GetFriendName
- .word ScrCmd_GetPokemonName
- .word ScrCmd_GetItemName
- .word ScrCmd_GetPocketName
- .word ScrCmd_GetTMHMMoveName
- .word ScrCmd_GetMoveName
- .word ScrCmd_Unk00D5
- .word ScrCmd_GetPokemonNickname
- .word ScrCmd_GetPoketchAppName
- .word ScrCmd_GetTrainerClassName
- .word ScrCmd_Unk00D9
- .word ScrCmd_Unk00DA
- .word ScrCmd_GetPlayerStarterName
- .word ScrCmd_GetRivalStarterName
- .word ScrCmd_GetCounterpartStarterName
- .word ScrCmd_Unk00DE
- .word ScrCmd_GetDecorationName
- .word ScrCmd_GetUndergroundTrapName
- .word ScrCmd_GetUndergroundItemName
- .word ScrCmd_GetMapName
- .word ScrCmd_Unk00E3
- .word ScrCmd_Unk00E4
- .word ScrCmd_Unk00E5
- .word ScrCmd_Unk00E6
- .word ScrCmd_Unk00E7
- .word ScrCmd_Unk00E8
- .word ScrCmd_Unk00E9
- .word ScrCmd_Unk00EA
- .word ScrCmd_Unk00EB
- .word ScrCmd_Unk00EC
- .word ScrCmd_Unk00ED
- .word ScrCmd_Unk00EE
- .word ScrCmd_Unk00EF
- .word ScrCmd_Unk00F0
- .word ScrCmd_Unk00F1
- .word ScrCmd_Unk00F2
- .word ScrCmd_Unk00F3
- .word ScrCmd_Unk00F4
- .word ScrCmd_Unk00F5
- .word ScrCmd_Unk00F6
- .word ScrCmd_Unk00F7
- .word ScrCmd_Unk00F8
- .word ScrCmd_Unk00F9
- .word ScrCmd_Unk00FA
- .word ScrCmd_Unk00FB
- .word ScrCmd_Unk00FC
- .word ScrCmd_Unk00FD
- .word ScrCmd_Unk00FE
- .word ScrCmd_Unk00FF
- .word ScrCmd_Unk0100
- .word ScrCmd_Unk0101
- .word ScrCmd_Unk0102
- .word ScrCmd_Unk0103
- .word ScrCmd_Unk0104
- .word ScrCmd_Unk0105
- .word ScrCmd_Unk0106
- .word ScrCmd_Unk0107
- .word ScrCmd_Unk0108
- .word ScrCmd_Unk0109
- .word ScrCmd_Unk010A
- .word ScrCmd_Unk010B
- .word ScrCmd_Unk010C
- .word ScrCmd_Unk010D
- .word ScrCmd_Unk010E
- .word ScrCmd_Unk010F
- .word ScrCmd_Unk0110
- .word ScrCmd_Unk0111
- .word ScrCmd_Unk0112
- .word ScrCmd_Unk0113
- .word ScrCmd_Unk0114
- .word ScrCmd_Unk0115
- .word ScrCmd_Unk0116
- .word ScrCmd_Unk0117
- .word ScrCmd_Unk0118
- .word ScrCmd_Unk0119
- .word ScrCmd_Unk011A
- .word ScrCmd_Unk011B
- .word ScrCmd_Unk011C
- .word ScrCmd_Unk011D
- .word ScrCmd_Unk011E
- .word ScrCmd_Unk011F
- .word ScrCmd_Unk0120
- .word ScrCmd_Unk0121
- .word ScrCmd_Unk0122
- .word ScrCmd_Unk0123
- .word ScrCmd_Unk0124
- .word ScrCmd_Unk0125
- .word ScrCmd_Unk0126
- .word ScrCmd_Unk0127
- .word ScrCmd_Unk0128
- .word ScrCmd_Unk0129
- .word ScrCmd_Unk012A
- .word ScrCmd_Unk012B
- .word ScrCmd_Unk012C
- .word ScrCmd_Unk012D
- .word ScrCmd_Unk012E
- .word ScrCmd_Unk012F
- .word ScrCmd_Unk0130
- .word ScrCmd_Unk0131
- .word ScrCmd_Unk0132
- .word ScrCmd_Unk0133
- .word ScrCmd_Unk0134
- .word ScrCmd_Unk0135
- .word ScrCmd_Unk0136
- .word ScrCmd_Unk0137
- .word ScrCmd_Unk0138
- .word ScrCmd_Unk0139
- .word ScrCmd_Unk013A
- .word ScrCmd_Unk013B
- .word ScrCmd_Unk013C
- .word ScrCmd_Unk013D
- .word ScrCmd_Unk013E
- .word ScrCmd_Unk013F
- .word ScrCmd_Unk0140
- .word ScrCmd_Unk0141
- .word ScrCmd_Unk0142
- .word ScrCmd_Unk0143
- .word ScrCmd_Unk0144
- .word ScrCmd_Unk0145
- .word ScrCmd_Unk0146
- .word ScrCmd_NormalMart
- .word ScrCmd_SpecialMart
- .word ScrCmd_GoodsMart
- .word ScrCmd_SealsMart
- .word ScrCmd_Unk014B
- .word ScrCmd_Unk014C
- .word ScrCmd_GetPlayerGender
- .word ScrCmd_HealParty
- .word ScrCmd_Unk014F
- .word ScrCmd_Unk0150
- .word ScrCmd_Unk0151
- .word ScrCmd_Unk0152
- .word ScrCmd_Unk0153
- .word ScrCmd_Unk0154
- .word ScrCmd_Unk0155
- .word ScrCmd_Unk0156
- .word ScrCmd_HasSinnohDex
- .word ScrCmd_GiveSinnohDex
- .word ScrCmd_HasRunningShoes
- .word ScrCmd_GiveRunningShoes
- .word ScrCmd_HasBadge
- .word ScrCmd_GiveBadge
- .word ScrCmd_GetTotalEarnedBadges
- .word ScrCmd_GiveBag
- .word ScrCmd_HasBag
- .word ScrCmd_Unk0160
- .word ScrCmd_Unk0161
- .word ScrCmd_Unk0162
- .word ScrCmd_Unk0163
- .word ScrCmd_Unk0164
- .word ScrCmd_Unk0165
- .word ScrCmd_CheckGameCompleted
- .word ScrCmd_SetGameCompleted
- .word ScrCmd_Unk0168
- .word ScrCmd_Unk0169
- .word ScrCmd_Unk016A
- .word ScrCmd_Unk016B
- .word ScrCmd_Unk016C
- .word ScrCmd_GetDaycarePokemonNames
- .word ScrCmd_GetDaycareStatus
- .word ScrCmd_Unk016F
- .word ScrCmd_Unk0170
- .word ScrCmd_Unk0171
- .word ScrCmd_Unk0172
- .word ScrCmd_Unk0173
- .word ScrCmd_Unk0174
- .word ScrCmd_Unk0175
- .word ScrCmd_Unk0176
- .word ScrCmd_Unk0177
- .word ScrCmd_Unk0178
- .word ScrCmd_Unk0179
- .word ScrCmd_Unk017A
- .word ScrCmd_GetBerryName
- .word ScrCmd_GetNatureName
- .word ScrCmd_GetBerryTreeGrowth
- .word ScrCmd_GetBerryTreeType
- .word ScrCmd_GetBerryTreeMulch
- .word ScrCmd_GetBerryTreeWater
- .word ScrCmd_GetBerryTreeAmount
- .word ScrCmd_SetBerryTreeMulch
- .word ScrCmd_SetBerryTreeType
- .word ScrCmd_Unk0184
- .word ScrCmd_TakeBerryTreeBerries
- .word ScrCmd_Unk0186
- .word ScrCmd_Unk0187
- .word ScrCmd_Unk0188
- .word ScrCmd_Unk0189
- .word ScrCmd_Unk018A
- .word ScrCmd_Unk018B
- .word ScrCmd_Unk018C
- .word ScrCmd_ShowSaveClock
- .word ScrCmd_HideSaveClock
- .word ScrCmd_Unk018F
- .word ScrCmd_WaitButtonABTime
- .word ScrCmd_Unk0191
- .word ScrCmd_Unk0192
- .word ScrCmd_Unk0193
- .word ScrCmd_Unk0194
- .word ScrCmd_Unk0195
- .word ScrCmd_Unk0196
- .word ScrCmd_Unk0197
- .word ScrCmd_GetPartySpecies
- .word ScrCmd_CheckPartyMonOTID
- .word ScrCmd_Unk019A
- .word ScrCmd_Unk019B
- .word ScrCmd_Unk019C
- .word ScrCmd_Unk019D
- .word ScrCmd_Unk019E
- .word ScrCmd_Unk019F
- .word ScrCmd_Unk01A0
- .word ScrCmd_Unk01A1
- .word ScrCmd_Unk01A2
- .word ScrCmd_TakeMoneyAddress
- .word ScrCmd_Unk01A4
- .word ScrCmd_Unk01A5
- .word ScrCmd_Unk01A6
- .word ScrCmd_Unk01A7
- .word ScrCmd_DeleteDaycareEgg
- .word ScrCmd_GiveDaycareEgg
- .word ScrCmd_Unk01AA
- .word ScrCmd_HasEnoughMoneyAddress
- .word ScrCmd_Unk01AC
- .word ScrCmd_Unk01AD
- .word ScrCmd_GetDaycareLevel
- .word ScrCmd_Unk01AF
- .word ScrCmd_Unk01B0
- .word ScrCmd_Unk01B1
- .word ScrCmd_Unk01B2
- .word ScrCmd_Unk01B3
- .word ScrCmd_Unk01B4
- .word ScrCmd_Unk01B5
- .word ScrCmd_Unk01B6
- .word ScrCmd_Unk01B7
- .word ScrCmd_Unk01B8
- .word ScrCmd_GetPartyMonFriendship
- .word ScrCmd_Unk01BA
- .word ScrCmd_Unk01BB
- .word ScrCmd_Unk01BC
- .word ScrCmd_Unk01BD
- .word ScrCmd_Unk01BE
- .word ScrCmd_Unk01BF
- .word ScrCmd_Unk01C0
- .word ScrCmd_Unk01C1
- .word ScrCmd_Unk01C2
- .word ScrCmd_Unk01C3
- .word ScrCmd_Unk01C4
- .word ScrCmd_Unk01C5
- .word ScrCmd_Unk01C6
- .word ScrCmd_Unk01C7
- .word ScrCmd_Unk01C8
- .word ScrCmd_Unk01C9
- .word ScrCmd_Unk01CA
- .word ScrCmd_GetPokemonMoveName
- .word ScrCmd_Unk01CC
- .word ScrCmd_Unk01CD
- .word ScrCmd_Unk01CE
- .word ScrCmd_GetSetStrength
- .word ScrCmd_GetSetFlash
- .word ScrCmd_GetSetDefog
- .word ScrCmd_Unk01D2
- .word ScrCmd_Unk01D3
- .word ScrCmd_Unk01D4
- .word ScrCmd_Unk01D5
- .word ScrCmd_Unk01D6
- .word ScrCmd_Unk01D7
- .word ScrCmd_Unk01D8
- .word ScrCmd_Unk01D9
- .word ScrCmd_Unk01DA
- .word ScrCmd_Unk01DB
- .word ScrCmd_Unk01DC
- .word ScrCmd_Unk01DD
- .word ScrCmd_Unk01DE
- .word ScrCmd_Unk01DF
- .word ScrCmd_Unk01E0
- .word ScrCmd_Unk01E1
- .word ScrCmd_Unk01E2
- .word ScrCmd_Unk01E3
- .word ScrCmd_Unk01E4
- .word ScrCmd_Unk01E5
- .word ScrCmd_Unk01E6
- .word ScrCmd_Unk01E7
- .word ScrCmd_Unk01E8
- .word ScrCmd_Unk01E9
- .word ScrCmd_Unk01EA
- .word ScrCmd_Unk01EB
- .word ScrCmd_Unk01EC
- .word ScrCmd_Unk01ED
- .word ScrCmd_Unk01EE
- .word ScrCmd_Unk01EF
- .word ScrCmd_Unk01F0
- .word ScrCmd_CountFossils
- .word ScrCmd_Unk01F2
- .word ScrCmd_Unk01F3
- .word ScrCmd_GetFossilPokemon
- .word ScrCmd_GetFossilMinimumAmount
- .word ScrCmd_CountPartyMonsAtOrBelowLevel
- .word ScrCmd_SurvivePsn
- .word ScrCmd_Unk01F8
- .word ScrCmd_DebugWatch
- .word ScrCmd_MessageFrom
- .word ScrCmd_MessageFrom2
- .word ScrCmd_Unk01FC
- .word ScrCmd_Unk01FD
- .word ScrCmd_Unk01FE
- .word ScrCmd_Unk01FF
- .word ScrCmd_Unk0200
- .word ScrCmd_Unk0201
- .word ScrCmd_Unk0202
- .word ScrCmd_Unk0203
- .word ScrCmd_Unk0204
- .word ScrCmd_Unk0205
- .word ScrCmd_Unk0206
- .word ScrCmd_Unk0207
- .word ScrCmd_Unk0208
- .word ScrCmd_Unk0209
- .word ScrCmd_Unk020A
- .word ScrCmd_Unk020B
- .word ScrCmd_Unk020C
- .word ScrCmd_Unk020D
- .word ScrCmd_Unk020E
- .word ScrCmd_Unk020F
- .word ScrCmd_Unk0210
- .word ScrCmd_Unk0211
- .word ScrCmd_GetPartyMonNature
- .word ScrCmd_FindPartyMonWithNature
- .word ScrCmd_Unk0214
- .word ScrCmd_Unk0215
- .word ScrCmd_Unk0216
- .word ScrCmd_Unk0217
- .word ScrCmd_Unk0218
- .word ScrCmd_Unk0219
- .word ScrCmd_Unk021A
- .word ScrCmd_Unk021B
- .word ScrCmd_Unk021C
- .word ScrCmd_Unk021D
- .word ScrCmd_Unk021E
- .word ScrCmd_Unk021F
- .word ScrCmd_Unk0220
- .word ScrCmd_Unk0221
- .word ScrCmd_Unk0222
- .word ScrCmd_Unk0223
- .word ScrCmd_Unk0224
- .word ScrCmd_Unk0225
- .word ScrCmd_Unk0226
- .word ScrCmd_Unk0227
- .word ScrCmd_Unk0228
- .word ScrCmd_Unk0229
- .word ScrCmd_Unk022A
- .word ScrCmd_Unk022B
- .word ScrCmd_Unk022C
- .word ScrCmd_Unk022D
- .word ScrCmd_Unk022E
- .word ScrCmd_Unk022F
- .word ScrCmd_Unk0230
- .word ScrCmd_Unk0231
- .word ScrCmd_GetRibbonName
- .word ScrCmd_Unk0233
- .word ScrCmd_Unk0234
- .word ScrCmd_Unk0235
- .word ScrCmd_Unk0236
- .word ScrCmd_Unk0237
- .word ScrCmd_Unk0238
- .word ScrCmd_Unk0239
- .word ScrCmd_Unk023A
- .word ScrCmd_Unk023B
- .word ScrCmd_Unk023C
- .word ScrCmd_Unk023D
- .word ScrCmd_Unk023E
- .word ScrCmd_Unk023F
- .word ScrCmd_Unk0240
- .word ScrCmd_Unk0241
- .word ScrCmd_Unk0242
- .word ScrCmd_Unk0243
- .word ScrCmd_Unk0244
- .word ScrCmd_Unk0245
- .word ScrCmd_GameVersion
- .word ScrCmd_Unk0247
- .word ScrCmd_Unk0248
- .word ScrCmd_GiveWallpaper
- .word ScrCmd_Unk024A
- .word ScrCmd_Unk024B
- .word ScrCmd_Unk024C
- .word ScrCmd_Unk024D
- .word ScrCmd_Unk024E
- .word ScrCmd_Unk024F
- .word ScrCmd_Unk0250
- .word ScrCmd_Unk0251
- .word ScrCmd_PCFreeSpace
- .word ScrCmd_Unk0253
- .word ScrCmd_Unk0254
- .word ScrCmd_Unk0255
- .word ScrCmd_Unk0256
- .word ScrCmd_AccessoriesShop
- .word ScrCmd_Unk0258
- .word ScrCmd_Unk0259
- .word ScrCmd_Unk025A
- .word ScrCmd_Unk025B
- .word ScrCmd_Unk025C
- .word ScrCmd_Unk025D
- .word ScrCmd_Unk025E
- .word ScrCmd_Unk025F
- .word ScrCmd_Unk0260
- .word ScrCmd_GetFashionName
- .word ScrCmd_Unk0262
- .word ScrCmd_Unk0263
- .word ScrCmd_Unk0264
- .word ScrCmd_Unk0265
- .word ScrCmd_Unk0266
- .word ScrCmd_Unk0267
- .word ScrCmd_Unk0268
- .word ScrCmd_Unk0269
- .word ScrCmd_Unk026A
- .word ScrCmd_Unk026B
- .word ScrCmd_Unk026C
- .word ScrCmd_MessageUnown
- .word ScrCmd_Unk026E
- .word ScrCmd_Unk026F
- .word ScrCmd_Unk0270
- .word ScrCmd_Unk0271
- .word ScrCmd_GetWhiteRockInscription
- .word ScrCmd_Unk0273
- .word ScrCmd_HasEnoughCoinsImmediate
- .word ScrCmd_Unk0275
- .word ScrCmd_CanGiveCoins
- .word ScrCmd_Unk0277
- .word ScrCmd_GetPartyMonLevel
- .word ScrCmd_Unk0279
- .word ScrCmd_Unk027A
- .word ScrCmd_Unk027B
- .word ScrCmd_Unk027C
- .word ScrCmd_Unk027D
- .word ScrCmd_Unk027E
- .word ScrCmd_Unk027F
- .word ScrCmd_Unk0280
- .word ScrCmd_Unk0281
- .word ScrCmd_Unk0282
- .word ScrCmd_SetVolume
- .word ScrCmd_Unk0284
- .word ScrCmd_Unk0285
- .word ScrCmd_Unk0286
- .word ScrCmd_Unk0287
- .word ScrCmd_Unk0288
- .word ScrCmd_Unk0289
- .word ScrCmd_Unk028A
- .word ScrCmd_Unk028B
- .word ScrCmd_Unk028C
- .word ScrCmd_Unk028D
- .word ScrCmd_Unk028E
- .word ScrCmd_Unk028F
- .word ScrCmd_Unk0290
- .word ScrCmd_Unk0291
- .word ScrCmd_Unk0292
- .word ScrCmd_Unk0293
- .word ScrCmd_Unk0294
- .word ScrCmd_Unk0295
- .word ScrCmd_Unk0296
- .word ScrCmd_Unk0297
- .word ScrCmd_Unk0298
- .word ScrCmd_Unk0299
- .word ScrCmd_Unk029A
- .word ScrCmd_Unk029B
- .word ScrCmd_Unk029C
- .word ScrCmd_Unk029D
- .word ScrCmd_Unk029E
- .word ScrCmd_Unk029F
- .word ScrCmd_Unk02A0
- .word ScrCmd_Unk02A1
- .word ScrCmd_Unk02A2
- .word ScrCmd_Unk02A3
- .word ScrCmd_Unk02A4
- .word ScrCmd_Unk02A5
- .word ScrCmd_GetPrizeItemIdAndCost
- .word ScrCmd_Unk02A7
- .word ScrCmd_TakeCoinsAddress
- .word ScrCmd_HasEnoughCoinsAddress
- .word ScrCmd_Unk02AA
- .word ScrCmd_Unk02AB
- .word ScrCmd_Unk02AC
- .word ScrCmd_Unk02AD
- .word ScrCmd_Unk02AE
- .word ScrCmd_Unk02AF
- .word ScrCmd_Unk02B0
- .word ScrCmd_Unk02B1
- .word ScrCmd_Unk02B2
- .word ScrCmd_GetSealName
- .word ScrCmd_Unk02B4
- .word ScrCmd_Unk02B5
- .word ScrCmd_Unk02B6
- .word ScrCmd_Unk02B7
- .word ScrCmd_Unk02B8
- .word ScrCmd_Unk02B9
- .word ScrCmd_Unk02BA
- .word ScrCmd_Unk02BB
- .word ScrCmd_Unk02BC
- .word ScrCmd_Unk02BD
- .word ScrCmd_Unk02BE
- .word ScrCmd_Unk02BF
- .word ScrCmd_Unk02C0
- .word ScrCmd_Unk02C1
- .word ScrCmd_Unk02C2
- .word ScrCmd_Unk02C3
- .word ScrCmd_GetItemNameWithIndefArticle
- .word ScrCmd_GetItemNamePlural
- .word ScrCmd_GetDecorationNameWithArticle
- .word ScrCmd_GetUndergroundTrapNameWithArticle
- .word ScrCmd_GetUndergroundItemNameWithArticle
- .word ScrCmd_Unk02C9
- .word ScrCmd_Unk02CA
- .word ScrCmd_GetFashionNameWithArticle
- .word ScrCmd_Unk02CC
- .word ScrCmd_GetSealNamePlural
- .word ScrCmd_CapitalizeFirstChar
- .word ScrCmd_Unk02CF
- .word ScrCmd_Unk02D0
+ .word ScrCmd_Nop
+ .word ScrCmd_Dummy
+ .word ScrCmd_End
+ .word ScrCmd_Wait
+ .word ScrCmd_LoadByte
+ .word ScrCmd_LoadWord
+ .word ScrCmd_LoadByteFromAddr
+ .word ScrCmd_WriteByteToAddr
+ .word ScrCmd_SetPtrByte
+ .word ScrCmd_CopyLocal
+ .word ScrCmd_CopyByte
+ .word ScrCmd_CompareLocalToLocal
+ .word ScrCmd_CompareLocalToValue
+ .word ScrCmd_CompareLocalToAddr
+ .word ScrCmd_CompareAddrToLocal
+ .word ScrCmd_CompareAddrToValue
+ .word ScrCmd_CompareAddrToAddr
+ .word ScrCmd_CompareVarToValue
+ .word ScrCmd_CompareVarToVar
+ .word ScrCmd_RunScript
+ .word ScrCmd_RunScriptWait
+ .word ScrCmd_RestartCurrentScript
+ .word ScrCmd_GoTo
+ .word ScrCmd_ObjectGoTo
+ .word ScrCmd_BgGoTo
+ .word ScrCmd_DirectionGoTo
+ .word ScrCmd_Call
+ .word ScrCmd_Return
+ .word ScrCmd_GoToIf
+ .word ScrCmd_CallIf
+ .word ScrCmd_SetFlag
+ .word ScrCmd_ClearFlag
+ .word ScrCmd_CheckFlag
+ .word ScrCmd_CheckFlagVar
+ .word ScrCmd_SetFlagVar
+ .word ScrCmd_SetTrainerFlag
+ .word ScrCmd_ClearTrainerFlag
+ .word ScrCmd_CheckTrainerFlag
+ .word ScrCmd_AddVar
+ .word ScrCmd_SubVar
+ .word ScrCmd_SetVar
+ .word ScrCmd_CopyVar
+ .word ScrCmd_SetOrCopyVar
+ .word ScrCmd_Message
+ .word ScrCmd_Unk002C
+ .word ScrCmd_Unk002D
+ .word ScrCmd_Unk002E
+ .word ScrCmd_Unk002F
+ .word ScrCmd_WaitButtonAB
+ .word ScrCmd_WaitButton
+ .word ScrCmd_WaitButtonABPad
+ .word ScrCmd_Unk0033
+ .word ScrCmd_CloseMessageBox
+ .word ScrCmd_Unk0035
+ .word ScrCmd_CreateMessageBox
+ .word ScrCmd_Unk0037
+ .word ScrCmd_Unk0038
+ .word ScrCmd_Unk0039
+ .word ScrCmd_Unk003A
+ .word ScrCmd_Unk003B
+ .word ScrCmd_Menu
+ .word ScrCmd_ScrollBg
+ .word ScrCmd_YesNoMenu
+ .word ScrCmd_Unk003F
+ .word ScrCmd_Unk0040
+ .word ScrCmd_Unk0041
+ .word ScrCmd_Unk0042
+ .word ScrCmd_Unk0043
+ .word ScrCmd_Unk0044
+ .word ScrCmd_Unk0045
+ .word ScrCmd_Unk0046
+ .word ScrCmd_Unk0047
+ .word ScrCmd_Unk0048
+ .word ScrCmd_PlayFanfare
+ .word ScrCmd_StopFanfare
+ .word ScrCmd_PlayFanfareWait
+ .word ScrCmd_PlayCry
+ .word ScrCmd_PlayCryWait
+ .word ScrCmd_PlaySound
+ .word ScrCmd_PlaySoundWait
+ .word ScrCmd_PlayBgm
+ .word ScrCmd_StopBgm
+ .word ScrCmd_PlayDefaultBgm
+ .word ScrCmd_Unk0053
+ .word ScrCmd_FadeOutBgm
+ .word ScrCmd_FadeInBgm
+ .word ScrCmd_Unk0056
+ .word ScrCmd_Unk0057
+ .word ScrCmd_Unk0058
+ .word ScrCmd_CheckChatotCry
+ .word ScrCmd_StartChatotRecord
+ .word ScrCmd_StopChatotRecord
+ .word ScrCmd_SaveChatotCry
+ .word ScrCmd_Unk005D
+ .word ScrCmd_Unk005E
+ .word ScrCmd_Unk005F
+ .word ScrCmd_Unk0060
+ .word ScrCmd_Unk0061
+ .word ScrCmd_Unk0062
+ .word ScrCmd_Unk0063
+ .word ScrCmd_Unk0064
+ .word ScrCmd_Unk0065
+ .word ScrCmd_Unk0066
+ .word ScrCmd_Unk0067
+ .word ScrCmd_Unk0068
+ .word ScrCmd_Unk0069
+ .word ScrCmd_Unk006A
+ .word ScrCmd_Unk006B
+ .word ScrCmd_Unk006C
+ .word ScrCmd_Unk006D
+ .word ScrCmd_Unk006E
+ .word ScrCmd_GiveMoney
+ .word ScrCmd_TakeMoneyImmediate
+ .word ScrCmd_HasEnoughMoneyImmediate
+ .word ScrCmd_ShowMoneyBox
+ .word ScrCmd_HideMoneyBox
+ .word ScrCmd_UpdateMoneyBox
+ .word ScrCmd_ShowCoinBox
+ .word ScrCmd_HideCoinBox
+ .word ScrCmd_UpdateCoinBox
+ .word ScrCmd_GetCoins
+ .word ScrCmd_GiveCoins
+ .word ScrCmd_TakeCoinsImmediate
+ .word ScrCmd_GiveItem
+ .word ScrCmd_TakeItem
+ .word ScrCmd_HasSpaceForItem
+ .word ScrCmd_HasItem
+ .word ScrCmd_ItemIdIsTMOrHM
+ .word ScrCmd_GetItemPocketId
+ .word ScrCmd_Unk0081
+ .word ScrCmd_Unk0082
+ .word ScrCmd_GiveSecretBaseDecoration
+ .word ScrCmd_TakeSecretBaseDecoration
+ .word ScrCmd_HasSpaceForDecoration
+ .word ScrCmd_GetDecorationCount
+ .word ScrCmd_GiveUndergroundTrap
+ .word ScrCmd_TakeUndergroundTrap
+ .word ScrCmd_HasSpaceForTrap
+ .word ScrCmd_GetTrapCount
+ .word ScrCmd_GiveTreasure
+ .word ScrCmd_TakeTreasure
+ .word ScrCmd_HasSpaceForTreasure
+ .word ScrCmd_GetTreasureCount
+ .word ScrCmd_GiveUndergroundSphere
+ .word ScrCmd_TakeUndergroundSphere
+ .word ScrCmd_HasSpaceForSphere
+ .word ScrCmd_GetSphereCount
+ .word ScrCmd_Unk0093
+ .word ScrCmd_Unk0094
+ .word ScrCmd_Unk0095
+ .word ScrCmd_GiveMon
+ .word ScrCmd_GiveEgg
+ .word ScrCmd_SetPartyMonMove
+ .word ScrCmd_PartyMonHasMove
+ .word ScrCmd_FindPartyMonWithMove
+ .word ScrCmd_Unk009B
+ .word ScrCmd_Unk009C
+ .word ScrCmd_Unk009D
+ .word ScrCmd_Unk009E
+ .word ScrCmd_Unk009F
+ .word ScrCmd_Unk00A0
+ .word ScrCmd_Unk00A1
+ .word ScrCmd_Unk00A2
+ .word ScrCmd_Unk00A3
+ .word ScrCmd_Unk00A4
+ .word ScrCmd_Unk00A5
+ .word ScrCmd_Unk00A6
+ .word ScrCmd_Unk00A7
+ .word ScrCmd_Unk00A8
+ .word ScrCmd_Unk00A9
+ .word ScrCmd_Unk00AA
+ .word ScrCmd_MonStoragePC
+ .word ScrCmd_Unk00AC
+ .word ScrCmd_Unk00AD
+ .word ScrCmd_Unk00AE
+ .word ScrCmd_Unk00AF
+ .word ScrCmd_HallOfFame
+ .word ScrCmd_Unk00B1
+ .word ScrCmd_Unk00B2
+ .word ScrCmd_Unk00B3
+ .word ScrCmd_Unk00B4
+ .word ScrCmd_Unk00B5
+ .word ScrCmd_Unk00B6
+ .word ScrCmd_Unk00B7
+ .word ScrCmd_Unk00B8
+ .word ScrCmd_Unk00B9
+ .word ScrCmd_Unk00BA
+ .word ScrCmd_Unk00BB
+ .word ScrCmd_Unk00BC
+ .word ScrCmd_Unk00BD
+ .word ScrCmd_Unk00BE
+ .word ScrCmd_Unk00BF
+ .word ScrCmd_Unk00C0
+ .word ScrCmd_Unk00C1
+ .word ScrCmd_Unk00C2
+ .word ScrCmd_Unk00C3
+ .word ScrCmd_Unk00C4
+ .word ScrCmd_Unk00C5
+ .word ScrCmd_Unk00C6
+ .word ScrCmd_Unk00C7
+ .word ScrCmd_Unk00C8
+ .word ScrCmd_Unk00C9
+ .word ScrCmd_Unk00CA
+ .word ScrCmd_Unk00CB
+ .word ScrCmd_Unk00CC
+ .word ScrCmd_GetPlayerName
+ .word ScrCmd_GetRivalName
+ .word ScrCmd_GetFriendName
+ .word ScrCmd_GetPokemonName
+ .word ScrCmd_GetItemName
+ .word ScrCmd_GetPocketName
+ .word ScrCmd_GetTMHMMoveName
+ .word ScrCmd_GetMoveName
+ .word ScrCmd_Unk00D5
+ .word ScrCmd_GetPokemonNickname
+ .word ScrCmd_GetPoketchAppName
+ .word ScrCmd_GetTrainerClassName
+ .word ScrCmd_Unk00D9
+ .word ScrCmd_Unk00DA
+ .word ScrCmd_GetPlayerStarterName
+ .word ScrCmd_GetRivalStarterName
+ .word ScrCmd_GetCounterpartStarterName
+ .word ScrCmd_Unk00DE
+ .word ScrCmd_GetDecorationName
+ .word ScrCmd_GetUndergroundTrapName
+ .word ScrCmd_GetUndergroundItemName
+ .word ScrCmd_GetMapName
+ .word ScrCmd_Unk00E3
+ .word ScrCmd_Unk00E4
+ .word ScrCmd_Unk00E5
+ .word ScrCmd_Unk00E6
+ .word ScrCmd_Unk00E7
+ .word ScrCmd_Unk00E8
+ .word ScrCmd_Unk00E9
+ .word ScrCmd_Unk00EA
+ .word ScrCmd_Unk00EB
+ .word ScrCmd_Unk00EC
+ .word ScrCmd_Unk00ED
+ .word ScrCmd_Unk00EE
+ .word ScrCmd_Unk00EF
+ .word ScrCmd_Unk00F0
+ .word ScrCmd_Unk00F1
+ .word ScrCmd_Unk00F2
+ .word ScrCmd_Unk00F3
+ .word ScrCmd_Unk00F4
+ .word ScrCmd_Unk00F5
+ .word ScrCmd_Unk00F6
+ .word ScrCmd_Unk00F7
+ .word ScrCmd_Unk00F8
+ .word ScrCmd_Unk00F9
+ .word ScrCmd_Unk00FA
+ .word ScrCmd_Unk00FB
+ .word ScrCmd_Unk00FC
+ .word ScrCmd_Unk00FD
+ .word ScrCmd_Unk00FE
+ .word ScrCmd_Unk00FF
+ .word ScrCmd_Unk0100
+ .word ScrCmd_Unk0101
+ .word ScrCmd_Unk0102
+ .word ScrCmd_Unk0103
+ .word ScrCmd_Unk0104
+ .word ScrCmd_Unk0105
+ .word ScrCmd_Unk0106
+ .word ScrCmd_Unk0107
+ .word ScrCmd_Unk0108
+ .word ScrCmd_Unk0109
+ .word ScrCmd_Unk010A
+ .word ScrCmd_Unk010B
+ .word ScrCmd_Unk010C
+ .word ScrCmd_Unk010D
+ .word ScrCmd_Unk010E
+ .word ScrCmd_Unk010F
+ .word ScrCmd_Unk0110
+ .word ScrCmd_Unk0111
+ .word ScrCmd_Unk0112
+ .word ScrCmd_Unk0113
+ .word ScrCmd_Unk0114
+ .word ScrCmd_Unk0115
+ .word ScrCmd_Unk0116
+ .word ScrCmd_Unk0117
+ .word ScrCmd_Unk0118
+ .word ScrCmd_CheckPartyForPokerus
+ .word ScrCmd_GetPartyMonGender
+ .word ScrCmd_Unk011B
+ .word ScrCmd_Unk011C
+ .word ScrCmd_Unk011D
+ .word ScrCmd_Unk011E
+ .word ScrCmd_Unk011F
+ .word ScrCmd_Unk0120
+ .word ScrCmd_Unk0121
+ .word ScrCmd_Unk0122
+ .word ScrCmd_Unk0123
+ .word ScrCmd_Unk0124
+ .word ScrCmd_Unk0125
+ .word ScrCmd_Unk0126
+ .word ScrCmd_Unk0127
+ .word ScrCmd_Unk0128
+ .word ScrCmd_Unk0129
+ .word ScrCmd_Unk012A
+ .word ScrCmd_Unk012B
+ .word ScrCmd_Unk012C
+ .word ScrCmd_Unk012D
+ .word ScrCmd_Unk012E
+ .word ScrCmd_Unk012F
+ .word ScrCmd_Unk0130
+ .word ScrCmd_Unk0131
+ .word ScrCmd_Unk0132
+ .word ScrCmd_Unk0133
+ .word ScrCmd_Unk0134
+ .word ScrCmd_Unk0135
+ .word ScrCmd_Unk0136
+ .word ScrCmd_Unk0137
+ .word ScrCmd_Unk0138
+ .word ScrCmd_Unk0139
+ .word ScrCmd_Unk013A
+ .word ScrCmd_Unk013B
+ .word ScrCmd_Unk013C
+ .word ScrCmd_Unk013D
+ .word ScrCmd_Unk013E
+ .word ScrCmd_Unk013F
+ .word ScrCmd_Unk0140
+ .word ScrCmd_Unk0141
+ .word ScrCmd_Unk0142
+ .word ScrCmd_Unk0143
+ .word ScrCmd_Unk0144
+ .word ScrCmd_Unk0145
+ .word ScrCmd_Unk0146
+ .word ScrCmd_NormalMart
+ .word ScrCmd_SpecialMart
+ .word ScrCmd_GoodsMart
+ .word ScrCmd_SealsMart
+ .word ScrCmd_Unk014B
+ .word ScrCmd_Unk014C
+ .word ScrCmd_GetPlayerGender
+ .word ScrCmd_HealParty
+ .word ScrCmd_Unk014F
+ .word ScrCmd_Unk0150
+ .word ScrCmd_Unk0151
+ .word ScrCmd_Unk0152
+ .word ScrCmd_Unk0153
+ .word ScrCmd_Unk0154
+ .word ScrCmd_Unk0155
+ .word ScrCmd_Unk0156
+ .word ScrCmd_HasSinnohDex
+ .word ScrCmd_GiveSinnohDex
+ .word ScrCmd_HasRunningShoes
+ .word ScrCmd_GiveRunningShoes
+ .word ScrCmd_HasBadge
+ .word ScrCmd_GiveBadge
+ .word ScrCmd_GetTotalEarnedBadges
+ .word ScrCmd_GiveBag
+ .word ScrCmd_HasBag
+ .word ScrCmd_Unk0160
+ .word ScrCmd_Unk0161
+ .word ScrCmd_Unk0162
+ .word ScrCmd_Unk0163
+ .word ScrCmd_Unk0164
+ .word ScrCmd_Unk0165
+ .word ScrCmd_CheckGameCompleted
+ .word ScrCmd_SetGameCompleted
+ .word ScrCmd_Unk0168
+ .word ScrCmd_Unk0169
+ .word ScrCmd_Unk016A
+ .word ScrCmd_Unk016B
+ .word ScrCmd_Unk016C
+ .word ScrCmd_GetDaycarePokemonNames
+ .word ScrCmd_GetDaycareStatus
+ .word ScrCmd_Unk016F
+ .word ScrCmd_Unk0170
+ .word ScrCmd_Unk0171
+ .word ScrCmd_Unk0172
+ .word ScrCmd_Unk0173
+ .word ScrCmd_Unk0174
+ .word ScrCmd_Unk0175
+ .word ScrCmd_Unk0176
+ .word ScrCmd_CountPartyMons
+ .word ScrCmd_Unk0178
+ .word ScrCmd_Unk0179
+ .word ScrCmd_Unk017A
+ .word ScrCmd_GetBerryName
+ .word ScrCmd_GetNatureName
+ .word ScrCmd_GetBerryTreeGrowth
+ .word ScrCmd_GetBerryTreeType
+ .word ScrCmd_GetBerryTreeMulch
+ .word ScrCmd_GetBerryTreeWater
+ .word ScrCmd_GetBerryTreeAmount
+ .word ScrCmd_SetBerryTreeMulch
+ .word ScrCmd_SetBerryTreeType
+ .word ScrCmd_Unk0184
+ .word ScrCmd_TakeBerryTreeBerries
+ .word ScrCmd_Unk0186
+ .word ScrCmd_Unk0187
+ .word ScrCmd_Unk0188
+ .word ScrCmd_Unk0189
+ .word ScrCmd_Unk018A
+ .word ScrCmd_Unk018B
+ .word ScrCmd_Unk018C
+ .word ScrCmd_ShowSaveClock
+ .word ScrCmd_HideSaveClock
+ .word ScrCmd_Unk018F
+ .word ScrCmd_WaitButtonABTime
+ .word ScrCmd_Unk0191
+ .word ScrCmd_Unk0192
+ .word ScrCmd_Unk0193
+ .word ScrCmd_Unk0194
+ .word ScrCmd_Unk0195
+ .word ScrCmd_Unk0196
+ .word ScrCmd_Unk0197
+ .word ScrCmd_GetPartyMonSpecies
+ .word ScrCmd_CheckPartyMonOTID
+ .word ScrCmd_CountPartyMons_OmitEggs
+ .word ScrCmd_CountAvailablePartyMons_IgnoreSlot
+ .word ScrCmd_CountAvailablePartyAndPCMons
+ .word ScrCmd_GetPartyEggCount
+ .word ScrCmd_Unk019E
+ .word ScrCmd_Unk019F
+ .word ScrCmd_Unk01A0
+ .word ScrCmd_Unk01A1
+ .word ScrCmd_Unk01A2
+ .word ScrCmd_TakeMoneyAddress
+ .word ScrCmd_Unk01A4
+ .word ScrCmd_Unk01A5
+ .word ScrCmd_Unk01A6
+ .word ScrCmd_Unk01A7
+ .word ScrCmd_DeleteDaycareEgg
+ .word ScrCmd_GiveDaycareEgg
+ .word ScrCmd_Unk01AA
+ .word ScrCmd_HasEnoughMoneyAddress
+ .word ScrCmd_Unk01AC
+ .word ScrCmd_Unk01AD
+ .word ScrCmd_GetDaycareLevel
+ .word ScrCmd_Unk01AF
+ .word ScrCmd_Unk01B0
+ .word ScrCmd_Unk01B1
+ .word ScrCmd_Unk01B2
+ .word ScrCmd_Unk01B3
+ .word ScrCmd_Unk01B4
+ .word ScrCmd_Unk01B5
+ .word ScrCmd_Unk01B6
+ .word ScrCmd_Unk01B7
+ .word ScrCmd_Unk01B8
+ .word ScrCmd_GetPartyMonFriendship
+ .word ScrCmd_AddPartyMonFriendship
+ .word ScrCmd_SubtractPartyMonFriendship
+ .word ScrCmd_Unk01BC
+ .word ScrCmd_Unk01BD
+ .word ScrCmd_Unk01BE
+ .word ScrCmd_Unk01BF
+ .word ScrCmd_CheckPartyForSpecies
+ .word ScrCmd_Unk01C1
+ .word ScrCmd_Unk01C2
+ .word ScrCmd_Unk01C3
+ .word ScrCmd_Unk01C4
+ .word ScrCmd_Unk01C5
+ .word ScrCmd_Unk01C6
+ .word ScrCmd_Unk01C7
+ .word ScrCmd_CountPartyMonMoves
+ .word ScrCmd_ForgetPartyMonMove
+ .word ScrCmd_GetPartyMonMove
+ .word ScrCmd_GetPokemonMoveName
+ .word ScrCmd_Unk01CC
+ .word ScrCmd_Unk01CD
+ .word ScrCmd_Unk01CE
+ .word ScrCmd_GetSetStrength
+ .word ScrCmd_GetSetFlash
+ .word ScrCmd_GetSetDefog
+ .word ScrCmd_Unk01D2
+ .word ScrCmd_Unk01D3
+ .word ScrCmd_Unk01D4
+ .word ScrCmd_Unk01D5
+ .word ScrCmd_Unk01D6
+ .word ScrCmd_Unk01D7
+ .word ScrCmd_Unk01D8
+ .word ScrCmd_Unk01D9
+ .word ScrCmd_Unk01DA
+ .word ScrCmd_Unk01DB
+ .word ScrCmd_Unk01DC
+ .word ScrCmd_Unk01DD
+ .word ScrCmd_Unk01DE
+ .word ScrCmd_Unk01DF
+ .word ScrCmd_Unk01E0
+ .word ScrCmd_Unk01E1
+ .word ScrCmd_Unk01E2
+ .word ScrCmd_Unk01E3
+ .word ScrCmd_Unk01E4
+ .word ScrCmd_Unk01E5
+ .word ScrCmd_Unk01E6
+ .word ScrCmd_Unk01E7
+ .word ScrCmd_Unk01E8
+ .word ScrCmd_Unk01E9
+ .word ScrCmd_Unk01EA
+ .word ScrCmd_Unk01EB
+ .word ScrCmd_Unk01EC
+ .word ScrCmd_Unk01ED
+ .word ScrCmd_GetPartyMonHeldItem
+ .word ScrCmd_Unk01EF
+ .word ScrCmd_ResetPartyMonHeldItem
+ .word ScrCmd_CountFossils
+ .word ScrCmd_Unk01F2
+ .word ScrCmd_Unk01F3
+ .word ScrCmd_GetFossilPokemon
+ .word ScrCmd_GetFossilMinimumAmount
+ .word ScrCmd_CountPartyMonsAtOrBelowLevel
+ .word ScrCmd_SurvivePsn
+ .word ScrCmd_Unk01F8
+ .word ScrCmd_DebugWatch
+ .word ScrCmd_MessageFrom
+ .word ScrCmd_MessageFrom2
+ .word ScrCmd_Unk01FC
+ .word ScrCmd_Unk01FD
+ .word ScrCmd_Unk01FE
+ .word ScrCmd_Unk01FF
+ .word ScrCmd_Unk0200
+ .word ScrCmd_Unk0201
+ .word ScrCmd_Unk0202
+ .word ScrCmd_Unk0203
+ .word ScrCmd_Unk0204
+ .word ScrCmd_Unk0205
+ .word ScrCmd_Unk0206
+ .word ScrCmd_Unk0207
+ .word ScrCmd_Unk0208
+ .word ScrCmd_Unk0209
+ .word ScrCmd_Unk020A
+ .word ScrCmd_Unk020B
+ .word ScrCmd_Unk020C
+ .word ScrCmd_Unk020D
+ .word ScrCmd_Unk020E
+ .word ScrCmd_Unk020F
+ .word ScrCmd_Unk0210
+ .word ScrCmd_Unk0211
+ .word ScrCmd_GetPartyMonNature
+ .word ScrCmd_FindPartyMonWithNature
+ .word ScrCmd_Unk0214
+ .word ScrCmd_Unk0215
+ .word ScrCmd_Unk0216
+ .word ScrCmd_Unk0217
+ .word ScrCmd_Unk0218
+ .word ScrCmd_Unk0219
+ .word ScrCmd_Unk021A
+ .word ScrCmd_Unk021B
+ .word ScrCmd_Unk021C
+ .word ScrCmd_Unk021D
+ .word ScrCmd_Unk021E
+ .word ScrCmd_Unk021F
+ .word ScrCmd_Unk0220
+ .word ScrCmd_Unk0221
+ .word ScrCmd_Unk0222
+ .word ScrCmd_Unk0223
+ .word ScrCmd_Unk0224
+ .word ScrCmd_Unk0225
+ .word ScrCmd_Unk0226
+ .word ScrCmd_Unk0227
+ .word ScrCmd_Unk0228
+ .word ScrCmd_Unk0229
+ .word ScrCmd_Unk022A
+ .word ScrCmd_Unk022B
+ .word ScrCmd_Unk022C
+ .word ScrCmd_Unk022D
+ .word ScrCmd_CountPartyMonRibbons
+ .word ScrCmd_CountTotalPartyRibbons
+ .word ScrCmd_PartyMonHasRibbon
+ .word ScrCmd_GivePartyMonRibbon
+ .word ScrCmd_GetRibbonName
+ .word ScrCmd_Unk0233
+ .word ScrCmd_Unk0234
+ .word ScrCmd_Unk0235
+ .word ScrCmd_Unk0236
+ .word ScrCmd_Unk0237
+ .word ScrCmd_Unk0238
+ .word ScrCmd_Unk0239
+ .word ScrCmd_Unk023A
+ .word ScrCmd_Unk023B
+ .word ScrCmd_Unk023C
+ .word ScrCmd_Unk023D
+ .word ScrCmd_Unk023E
+ .word ScrCmd_Unk023F
+ .word ScrCmd_Unk0240
+ .word ScrCmd_Unk0241
+ .word ScrCmd_Unk0242
+ .word ScrCmd_Unk0243
+ .word ScrCmd_Unk0244
+ .word ScrCmd_Unk0245
+ .word ScrCmd_GameVersion
+ .word ScrCmd_GetLeadingPartyMonSlot
+ .word ScrCmd_GetPartyMonTypes
+ .word ScrCmd_GiveWallpaper
+ .word ScrCmd_Unk024A
+ .word ScrCmd_Unk024B
+ .word ScrCmd_Unk024C
+ .word ScrCmd_Unk024D
+ .word ScrCmd_Unk024E
+ .word ScrCmd_Unk024F
+ .word ScrCmd_Unk0250
+ .word ScrCmd_Unk0251
+ .word ScrCmd_PCFreeSpace
+ .word ScrCmd_Unk0253
+ .word ScrCmd_Unk0254
+ .word ScrCmd_Unk0255
+ .word ScrCmd_Unk0256
+ .word ScrCmd_AccessoriesShop
+ .word ScrCmd_Unk0258
+ .word ScrCmd_Unk0259
+ .word ScrCmd_Unk025A
+ .word ScrCmd_Unk025B
+ .word ScrCmd_Unk025C
+ .word ScrCmd_Unk025D
+ .word ScrCmd_Unk025E
+ .word ScrCmd_Unk025F
+ .word ScrCmd_Unk0260
+ .word ScrCmd_GetFashionName
+ .word ScrCmd_Unk0262
+ .word ScrCmd_Unk0263
+ .word ScrCmd_Unk0264
+ .word ScrCmd_Unk0265
+ .word ScrCmd_Unk0266
+ .word ScrCmd_Unk0267
+ .word ScrCmd_Unk0268
+ .word ScrCmd_Unk0269
+ .word ScrCmd_Unk026A
+ .word ScrCmd_Unk026B
+ .word ScrCmd_Unk026C
+ .word ScrCmd_MessageUnown
+ .word ScrCmd_Unk026E
+ .word ScrCmd_Unk026F
+ .word ScrCmd_Unk0270
+ .word ScrCmd_Unk0271
+ .word ScrCmd_GetWhiteRockInscription
+ .word ScrCmd_Unk0273
+ .word ScrCmd_HasEnoughCoinsImmediate
+ .word ScrCmd_Unk0275
+ .word ScrCmd_CanGiveCoins
+ .word ScrCmd_Unk0277
+ .word ScrCmd_GetPartyMonLevel
+ .word ScrCmd_Unk0279
+ .word ScrCmd_Unk027A
+ .word ScrCmd_Unk027B
+ .word ScrCmd_Unk027C
+ .word ScrCmd_Unk027D
+ .word ScrCmd_Unk027E
+ .word ScrCmd_Unk027F
+ .word ScrCmd_Unk0280
+ .word ScrCmd_GetPartyMonContestCondition
+ .word ScrCmd_Unk0282
+ .word ScrCmd_SetVolume
+ .word ScrCmd_Unk0284
+ .word ScrCmd_Unk0285
+ .word ScrCmd_Unk0286
+ .word ScrCmd_Unk0287
+ .word ScrCmd_Unk0288
+ .word ScrCmd_Unk0289
+ .word ScrCmd_Unk028A
+ .word ScrCmd_Unk028B
+ .word ScrCmd_Unk028C
+ .word ScrCmd_Unk028D
+ .word ScrCmd_Unk028E
+ .word ScrCmd_Unk028F
+ .word ScrCmd_Unk0290
+ .word ScrCmd_Unk0291
+ .word ScrCmd_Unk0292
+ .word ScrCmd_Unk0293
+ .word ScrCmd_Unk0294
+ .word ScrCmd_Unk0295
+ .word ScrCmd_Unk0296
+ .word ScrCmd_Unk0297
+ .word ScrCmd_Unk0298
+ .word ScrCmd_Unk0299
+ .word ScrCmd_Unk029A
+ .word ScrCmd_Unk029B
+ .word ScrCmd_Unk029C
+ .word ScrCmd_Unk029D
+ .word ScrCmd_Unk029E
+ .word ScrCmd_Unk029F
+ .word ScrCmd_Unk02A0
+ .word ScrCmd_Unk02A1
+ .word ScrCmd_Unk02A2
+ .word ScrCmd_Unk02A3
+ .word ScrCmd_Unk02A4
+ .word ScrCmd_Unk02A5
+ .word ScrCmd_GetPrizeItemIdAndCost
+ .word ScrCmd_Unk02A7
+ .word ScrCmd_TakeCoinsAddress
+ .word ScrCmd_HasEnoughCoinsAddress
+ .word ScrCmd_Unk02AA
+ .word ScrCmd_Unk02AB
+ .word ScrCmd_Unk02AC
+ .word ScrCmd_Unk02AD
+ .word ScrCmd_Unk02AE
+ .word ScrCmd_Unk02AF
+ .word ScrCmd_Unk02B0
+ .word ScrCmd_Unk02B1
+ .word ScrCmd_Unk02B2
+ .word ScrCmd_GetSealName
+ .word ScrCmd_Unk02B4
+ .word ScrCmd_Unk02B5
+ .word ScrCmd_Unk02B6
+ .word ScrCmd_CheckPartyForBadEgg
+ .word ScrCmd_Unk02B8
+ .word ScrCmd_Unk02B9
+ .word ScrCmd_Unk02BA
+ .word ScrCmd_Unk02BB
+ .word ScrCmd_Unk02BC
+ .word ScrCmd_Unk02BD
+ .word ScrCmd_Unk02BE
+ .word ScrCmd_Unk02BF
+ .word ScrCmd_Unk02C0
+ .word ScrCmd_Unk02C1
+ .word ScrCmd_Unk02C2
+ .word ScrCmd_Unk02C3
+ .word ScrCmd_GetItemNameWithIndefArticle
+ .word ScrCmd_GetItemNamePlural
+ .word ScrCmd_GetDecorationNameWithArticle
+ .word ScrCmd_GetUndergroundTrapNameWithArticle
+ .word ScrCmd_GetUndergroundItemNameWithArticle
+ .word ScrCmd_Unk02C9
+ .word ScrCmd_Unk02CA
+ .word ScrCmd_GetFashionNameWithArticle
+ .word ScrCmd_Unk02CC
+ .word ScrCmd_GetSealNamePlural
+ .word ScrCmd_CapitalizeFirstChar
+ .word ScrCmd_Unk02CF
+ .word ScrCmd_Unk02D0
.text
diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s
index 88b5529e..5e124ff5 100644
--- a/arm9/asm/unk_02046030.s
+++ b/arm9/asm/unk_02046030.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -138,7 +138,7 @@ _02046118:
mov r2, #0x11
bl FUN_0204C1B4
ldr r0, _0204620C ; =0x00000679
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
@@ -167,7 +167,7 @@ _02046160:
mov r2, #0x10
bl FUN_0204C1B4
ldr r0, _0204620C ; =0x00000679
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x8]
add r0, r0, #0x1
strb r0, [r4, #0x8]
diff --git a/arm9/asm/unk_0204653C.s b/arm9/asm/unk_0204653C.s
index 4309494e..f3d45372 100644
--- a/arm9/asm/unk_0204653C.s
+++ b/arm9/asm/unk_0204653C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02047500.s b/arm9/asm/unk_02047500.s
index 4a5b00a0..17c3a957 100644
--- a/arm9/asm/unk_02047500.s
+++ b/arm9/asm/unk_02047500.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s
index a06056dd..be2b4770 100644
--- a/arm9/asm/unk_020476CC.s
+++ b/arm9/asm/unk_020476CC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s
index 780c4833..68018241 100644
--- a/arm9/asm/unk_02048120.s
+++ b/arm9/asm/unk_02048120.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -34,12 +34,12 @@ FUN_02048120: ; 0x02048120
ldr r0, _02048158 ; =UNK_020F465C
bl GX_SetBanks
ldr r0, _0204815C ; =UNK_020F4630
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r2, _02048160 ; =UNK_020F4640
add r0, r4, #0x0
mov r1, #0x3
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x20
str r0, [sp, #0x0]
mov r0, #0xb
@@ -77,7 +77,7 @@ _0204817A:
str r0, [r4, #0x0]
str r5, [r4, #0x4]
mov r0, #0xb
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x8]
bl FUN_02048120
mov r2, #0x52
@@ -94,7 +94,7 @@ _0204817A:
ldr r0, [r4, #0x8]
ldr r2, _02048208 ; =UNK_020F4628
add r1, #0xc
- bl FUN_02019150
+ bl AddWindow
add r0, r5, #0x0
bl ScriptEnvironment_GetSav2Ptr
bl Sav2_PlayerData_GetProfileAddr
@@ -221,14 +221,14 @@ _020482B2:
bl FUN_0200D0E0
add r0, r4, #0x0
add r0, #0xc
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x20]
bl ScrStrBufs_delete
ldr r0, [r4, #0x1c]
bl DestroyMsgData
ldr r0, [r4, #0x8]
mov r1, #0x3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x8]
bl FreeToHeap
add r0, r4, #0x0
diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s
index 929f1efa..97e67111 100644
--- a/arm9/asm/unk_020484A8.s
+++ b/arm9/asm/unk_020484A8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -110,7 +110,7 @@ _02048556:
mov r1, #0x4
mov r0, #0x3
lsl r2, r1, #0xf
- bl FUN_0201681C
+ bl CreateHeap
add r0, r6, #0x0
add r1, r5, #0x0
bl FUN_02048764
@@ -183,7 +183,7 @@ _020485F6:
cmp r0, #0x0
beq _02048688
ldr r0, _02048690 ; =0x0000061B
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x12
str r0, [r5, #0x38]
ldr r0, [r4, #0x0]
@@ -240,7 +240,7 @@ _02048666:
add r0, r5, #0x0
bl FreeToHeap
mov r0, #0x4
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
add sp, #0xc
@@ -352,20 +352,20 @@ FUN_02048764: ; 0x02048764
orr r0, r1
strh r0, [r2, #0x0]
ldr r0, _020487DC ; =UNK_020F4684
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r0, #0x3
mov r1, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r0, [r4, #0x8]
ldr r2, _020487E0 ; =UNK_020F4694
mov r1, #0x3
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r1, #0x20
mov r0, #0x3
mov r2, #0x0
add r3, r1, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r2, #0x0
str r2, [sp, #0x0]
mov r0, #0x20
@@ -376,10 +376,10 @@ FUN_02048764: ; 0x02048764
ldr r0, [r4, #0x8]
mov r1, #0x3
add r3, r2, #0x0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r4, #0x8]
mov r1, #0x3
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r4, pc}
nop
@@ -514,15 +514,15 @@ FUN_020488D4: ; 0x020488D4
_020488E4:
add r0, r4, #0x0
add r0, #0x1c
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
beq _020488F8
add r4, #0x1c
add r0, r4, #0x0
- bl FUN_02019178
+ bl RemoveWindow
_020488F8:
ldr r0, [r5, #0x8]
mov r1, #0x3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s
index f926f722..597444e9 100644
--- a/arm9/asm/unk_02048904.s
+++ b/arm9/asm/unk_02048904.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -930,7 +930,7 @@ _0204905C: ; jump table (using 16-bit offset)
.short _020490AE - _0204905C - 2; case 3
_02049064:
ldr r0, _020490BC ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r4, #0x4]
add r0, r6, #0x0
bl FUN_0204AD60
@@ -2064,7 +2064,7 @@ _0204992E:
bl FUN_0200D0E0
add r0, r4, #0x0
add r0, #0x24
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x3
str r0, [r4, #0x0]
b _02049AB2
@@ -2075,7 +2075,7 @@ _02049946:
bl FUN_0200D0E0
add r0, r4, #0x0
add r0, #0x24
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x5
str r0, [r4, #0x0]
b _02049AB2
@@ -2806,7 +2806,7 @@ _02049F34: ; jump table (using 16-bit offset)
.short _02049F86 - _02049F34 - 2; case 3
_02049F3C:
ldr r0, _02049F94 ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r4, #0x4]
add r0, r6, #0x0
bl FUN_0204AD60
diff --git a/arm9/asm/unk_0204A368.s b/arm9/asm/unk_0204A368.s
index f1f19746..4b9f5a98 100644
--- a/arm9/asm/unk_0204A368.s
+++ b/arm9/asm/unk_0204A368.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0204A498.s b/arm9/asm/unk_0204A498.s
index 67863650..3e0580b3 100644
--- a/arm9/asm/unk_0204A498.s
+++ b/arm9/asm/unk_0204A498.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0204AB0C.s b/arm9/asm/unk_0204AB0C.s
index bea4eefa..33dc6126 100644
--- a/arm9/asm/unk_0204AB0C.s
+++ b/arm9/asm/unk_0204AB0C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0204ADE0.s b/arm9/asm/unk_0204ADE0.s
index 74cdb92a..f7eff3cc 100644
--- a/arm9/asm/unk_0204ADE0.s
+++ b/arm9/asm/unk_0204ADE0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0204AF24.s b/arm9/asm/unk_0204AF24.s
index fb084cbc..e0a88f0f 100644
--- a/arm9/asm/unk_0204AF24.s
+++ b/arm9/asm/unk_0204AF24.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0204B34C.s b/arm9/asm/unk_0204B34C.s
index ff93214d..6a2f7c3f 100644
--- a/arm9/asm/unk_0204B34C.s
+++ b/arm9/asm/unk_0204B34C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
diff --git a/arm9/asm/unk_0204B9EC.s b/arm9/asm/unk_0204B9EC.s
index 2511f182..fbf817bd 100644
--- a/arm9/asm/unk_0204B9EC.s
+++ b/arm9/asm/unk_0204B9EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .bss
diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s
index 6efee84e..d330a96d 100644
--- a/arm9/asm/unk_0204C1B4.s
+++ b/arm9/asm/unk_0204C1B4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -375,7 +375,7 @@ FUN_0204C468: ; 0x0204C468
b _0204C49C
_0204C484:
ldr r0, _0204C4A0 ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0x0
bl FUN_0204AFC8
ldr r0, [r4, #0x4]
@@ -577,7 +577,7 @@ _0204C5FE:
b _0204C63C
_0204C61C:
ldr r0, _0204C640 ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x0
bl MOD05_021D7CA4
ldr r0, [r4, #0x4]
diff --git a/arm9/asm/unk_0204CA80.s b/arm9/asm/unk_0204CA80.s
index d892697c..a9c794d3 100644
--- a/arm9/asm/unk_0204CA80.s
+++ b/arm9/asm/unk_0204CA80.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s
index a0dc5ce2..87fb50fc 100644
--- a/arm9/asm/unk_0204CB20.s
+++ b/arm9/asm/unk_0204CB20.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -5212,7 +5212,7 @@ _0204F2AA:
str r3, [sp, #0x4]
bl FUN_02004DCC
ldr r0, _0204F2D4 ; =0x000005F6
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
pop {r4-r6, pc}
nop
@@ -5356,7 +5356,7 @@ _0204F3AC:
mov r2, #0x1
bl MOD18_0224DCB8
ldr r0, _0204F5F0 ; =0x00000625
- bl FUN_020054C8
+ bl PlaySE
b _0204F410
_0204F3FC:
bl FUN_02031190
@@ -5401,7 +5401,7 @@ _0204F41A:
ldr r0, _0204F5F8 ; =0x00000425
bl FUN_0200521C
ldr r0, _0204F5F0 ; =0x00000625
- bl FUN_020054C8
+ bl PlaySE
b _0204F480
_0204F46C:
bl FUN_02031190
@@ -5504,7 +5504,7 @@ _0204F4D2:
_0204F54A:
bl FUN_0204F7E4
ldr r0, _0204F60C ; =0x0000062B
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_020269A0
add r1, sp, #0x8
diff --git a/arm9/asm/unk_0204FBA8.s b/arm9/asm/unk_0204FBA8.s
index f1101a82..16e26d1a 100644
--- a/arm9/asm/unk_0204FBA8.s
+++ b/arm9/asm/unk_0204FBA8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -154,7 +154,7 @@ FUN_0204FC5C: ; 0x0204FC5C
mov r0, #0x3
mov r1, #0x21
lsl r2, r2, #0xa
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, _0204FC9C ; =UNK_021C5A6C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x18]
@@ -2279,7 +2279,7 @@ _02050D66:
bl MOD18_0223E1A4
bl FUN_02031860
mov r0, #0x21
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02050D84 ; =UNK_021C5A6C
mov r1, #0x0
ldr r0, [r0, #0x0]
diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s
index fbe0aed9..ae7380b7 100644
--- a/arm9/asm/unk_02050E48.s
+++ b/arm9/asm/unk_02050E48.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F96DC
.extern gMain
@@ -1201,7 +1201,7 @@ FUN_020517C0: ; 0x020517C0
add r4, #0x14
add r0, r4, #0x0
add r6, r1, #0x0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
bne _020517F2
ldr r0, [r5, #0x24]
@@ -1237,7 +1237,7 @@ FUN_02051810: ; 0x02051810
add r5, r0, #0x0
add r0, #0x14
add r4, r1, #0x0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
beq _02051846
cmp r4, #0x0
@@ -1248,35 +1248,35 @@ FUN_02051810: ; 0x02051810
bl FUN_0200D0E0
add r0, r5, #0x0
add r0, #0x14
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
_02051836:
add r0, r5, #0x0
add r0, #0x14
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0x0
add r0, #0x14
bl InitWindow
_02051846:
add r0, r5, #0x0
add r0, #0x54
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
beq _02051862
add r0, r5, #0x0
add r0, #0x54
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0x0
add r0, #0x54
bl InitWindow
_02051862:
add r0, r5, #0x0
add r0, #0x64
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
beq _0205187E
add r0, r5, #0x0
add r0, #0x64
- bl FUN_02019178
+ bl RemoveWindow
add r5, #0x64
add r0, r5, #0x0
bl InitWindow
@@ -1673,7 +1673,7 @@ FUN_02051B68: ; 0x02051B68
add r0, #0x54
str r1, [sp, #0x14]
str r0, [sp, #0x20]
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
bne _02051C34
ldr r2, _02051C84 ; =0x0000016A
@@ -1698,7 +1698,7 @@ FUN_02051B68: ; 0x02051B68
ldr r0, [r0, #0x8]
mov r2, #0x3
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x4
@@ -1807,7 +1807,7 @@ FUN_02051C88: ; 0x02051C88
add r7, #0x64
add r0, r7, #0x0
str r1, [sp, #0x14]
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
bne _02051D0A
mov r0, #0xb
@@ -1824,7 +1824,7 @@ FUN_02051C88: ; 0x02051C88
ldr r0, [r0, #0x8]
mov r2, #0x3
mov r3, #0x14
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x4
@@ -1946,7 +1946,7 @@ _02051DA2:
tst r1, r0
beq _02051DC8
ldr r0, _02051E20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x81
ldrsb r1, [r4, r0]
add r4, #0x80
@@ -1966,7 +1966,7 @@ _02051DC8:
tst r0, r1
beq _02051DDA
ldr r0, _02051E20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x2
pop {r4, pc}
@@ -1976,7 +1976,7 @@ _02051DDA:
pop {r4, pc}
_02051DE0:
ldr r0, _02051E20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x7c]
mov r1, #0x10
str r1, [sp, #0x0]
@@ -1996,7 +1996,7 @@ _02051DE0:
lsl r3, r3, #0x4
bl ListMenuUpdateCursorObj
ldr r0, [r4, #0x7c]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
mov r0, #0x0
add sp, #0x8
pop {r4, pc}
@@ -2205,7 +2205,7 @@ _02051F7C:
bl FUN_0200D0E0
add r0, r4, #0x0
add r0, #0x8
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x0
bl MOD05_021D7CA4
ldr r0, [r4, #0x28]
diff --git a/arm9/asm/unk_020520AC.s b/arm9/asm/unk_020520AC.s
index 8ff9a9a1..e7815d57 100644
--- a/arm9/asm/unk_020520AC.s
+++ b/arm9/asm/unk_020520AC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -137,7 +137,7 @@ _020520C0:
mov r0, #0x3
mov r1, #0x1f
lsl r2, r2, #0x6
- bl FUN_02016828
+ bl CreateHeapAtEnd
add r0, r4, #0x0
bl FUN_02052110
add r5, r0, #0x0
@@ -625,7 +625,7 @@ FUN_020524A0: ; 0x020524A0
add r0, r4, #0x0
bl FreeToHeap
mov r0, #0x1f
- bl FUN_020168D0
+ bl DestroyHeap
_020524B8:
pop {r4, pc}
.balign 4
diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s
index 0c163fd8..c17a3187 100644
--- a/arm9/asm/unk_02052EE8.s
+++ b/arm9/asm/unk_02052EE8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F58D4
@@ -50,7 +50,7 @@ FUN_02052EE8: ; 0x02052EE8
ldr r0, [r0, #0x38]
str r0, [r4, #0x8]
mov r0, #0xb
- bl FUN_02016828
+ bl CreateHeapAtEnd
mov r0, #0x59
bl FUN_02053618
ldr r1, _02052F6C ; =0x000004DC
@@ -113,7 +113,7 @@ FUN_02052FA4: ; 0x02052FA4
ldr r0, [r4, r0]
bl FUN_0205362C
mov r0, #0x59
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r4, #0x0
bl FreeToHeap
pop {r4, pc}
@@ -646,7 +646,7 @@ FUN_0205339C: ; 0x0205339C
beq _0205343C
_020533CC:
ldr r0, _02053440 ; =0x0000064F
- bl FUN_020054C8
+ bl PlaySE
ldrb r1, [r5, #0x8]
add r0, r4, #0x0
bl FUN_02057634
diff --git a/arm9/asm/unk_0205363C.s b/arm9/asm/unk_0205363C.s
index aa73064c..18c93384 100644
--- a/arm9/asm/unk_0205363C.s
+++ b/arm9/asm/unk_0205363C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s
index 38f594ef..18959ed6 100644
--- a/arm9/asm/unk_02053750.s
+++ b/arm9/asm/unk_02053750.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern FX_SinCosTable_
.section .rodata
@@ -305,7 +305,7 @@ _02053912:
add r1, sp, #0xc
mov r2, #0x2
mov r3, #0x0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #0x1
mov r1, #0x0
bl GX_EngineBToggleLayers
@@ -329,7 +329,7 @@ _02053912:
add r3, r0, #0x0
bl FUN_0200E1D0
ldr r0, _020539F0 ; =0x0000062F
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x5f
mov r1, #0x1
lsl r0, r0, #0x2
@@ -354,7 +354,7 @@ _0205396E:
cmp r0, #0x0
beq _020539EA
ldr r0, _020539F4 ; =0x00000631
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x6
lsl r0, r0, #0x6
ldr r1, [r4, r0]
@@ -464,7 +464,7 @@ _02053A4E:
bl FUN_02053F38
mov r0, #0x63
lsl r0, r0, #0x4
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x5f
mov r1, #0x1
lsl r0, r0, #0x2
@@ -660,7 +660,7 @@ _02053BD6:
cmp r0, #0x0
beq _02053C8C
ldr r0, _02053C94 ; =0x00000632
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x6
lsl r0, r0, #0x6
ldr r1, [r4, r0]
@@ -974,7 +974,7 @@ _02053E24:
bl FUN_02009DAC
ldr r1, _02053E88 ; =UNK_02105F80
mov r0, #0x4
- bl FUN_020161A4
+ bl AllocAndReadFile
ldr r1, [r5, #0x10]
add r4, r0, #0x0
str r1, [sp, #0x0]
@@ -1012,7 +1012,7 @@ FUN_02053E8C: ; 0x02053E8C
add r4, r0, #0x0
mov r0, #0x4
add r1, r6, #0x0
- bl FUN_020161A4
+ bl AllocAndReadFile
add r6, r0, #0x0
add r1, r4, #0x0
mov r2, #0x4
diff --git a/arm9/asm/unk_0205478C.s b/arm9/asm/unk_0205478C.s
index 56ca7610..c0494512 100644
--- a/arm9/asm/unk_0205478C.s
+++ b/arm9/asm/unk_0205478C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02054C14.s b/arm9/asm/unk_02054C14.s
index c8085b1a..8f412090 100644
--- a/arm9/asm/unk_02054C14.s
+++ b/arm9/asm/unk_02054C14.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02055068.s b/arm9/asm/unk_02055068.s
index 61561cbe..c181031e 100644
--- a/arm9/asm/unk_02055068.s
+++ b/arm9/asm/unk_02055068.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s
index 0a5c6e31..b3bd5347 100644
--- a/arm9/asm/unk_020557F4.s
+++ b/arm9/asm/unk_020557F4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -236,21 +236,21 @@ _020559A6:
cmp r0, #0x1
bne _020559B8
ldr r0, _02055A24 ; =0x0000061F
- bl FUN_020054C8
+ bl PlaySE
_020559B8:
add r0, r5, #0x0
bl FUN_02054AF0
cmp r0, #0x1
bne _020559C8
ldr r0, _02055A28 ; =0x00000641
- bl FUN_020054C8
+ bl PlaySE
_020559C8:
add r0, r5, #0x0
bl FUN_0205483C
cmp r0, #0x1
bne _020559D8
ldr r0, _02055A2C ; =0x00000642
- bl FUN_020054C8
+ bl PlaySE
_020559D8:
add r0, r5, #0x0
bl FUN_02054830
@@ -263,7 +263,7 @@ _020559D8:
cmp r0, #0x1
beq _020559F8
ldr r0, _02055A30 ; =0x00000655
- bl FUN_020054C8
+ bl PlaySE
_020559F8:
add r0, r4, #0x0
bl FUN_020586F0
@@ -280,7 +280,7 @@ _020559F8:
bne _02055A20
_02055A1A:
ldr r0, _02055A34 ; =0x00000653
- bl FUN_020054C8
+ bl PlaySE
_02055A20:
pop {r4-r6, pc}
nop
@@ -723,7 +723,7 @@ FUN_02055DAC: ; 0x02055DAC
bl FUN_020584D4
add r4, r0, #0x0
ldr r0, _02055EF4 ; =0x00000654
- bl FUN_020054C8
+ bl PlaySE
cmp r4, #0x0
bne _02055E62
add r0, r5, #0x0
@@ -868,7 +868,7 @@ FUN_02055EF8: ; 0x02055EF8
cmp r0, #0x1
bne _02055F22
ldr r0, _02055F40 ; =0x00000656
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x5f
@@ -903,7 +903,7 @@ FUN_02055F44: ; 0x02055F44
cmp r0, #0x1
bne _02055F6E
ldr r0, _02055F8C ; =0x00000656
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x5e
@@ -1356,7 +1356,7 @@ _020562CA:
tst r0, r4
bne _020562DC
ldr r0, _02056380 ; =0x00000601
- bl FUN_020054C8
+ bl PlaySE
_020562DC:
ldr r1, [sp, #0x0]
add r0, r6, #0x0
@@ -1417,7 +1417,7 @@ _02056356:
tst r0, r4
bne _02056364
ldr r0, _02056380 ; =0x00000601
- bl FUN_020054C8
+ bl PlaySE
_02056364:
ldr r1, [sp, #0x0]
add r0, r6, #0x0
@@ -1513,11 +1513,11 @@ _02056412:
cmp r4, #0x0
bne _02056426
ldr r0, _02056430 ; =0x0000061C
- bl FUN_020054C8
+ bl PlaySE
pop {r3-r5, pc}
_02056426:
ldr r0, _02056434 ; =0x00000619
- bl FUN_020054C8
+ bl PlaySE
_0205642C:
pop {r3-r5, pc}
nop
@@ -1841,7 +1841,7 @@ _02056680:
tst r0, r4
bne _020566A0
ldr r0, _02056700 ; =0x00000601
- bl FUN_020054C8
+ bl PlaySE
_020566A0:
ldr r1, [sp, #0x0]
add r0, r6, #0x0
@@ -1961,7 +1961,7 @@ _0205678C:
tst r0, r4
bne _020567AA
ldr r0, _020567E0 ; =0x00000601
- bl FUN_020054C8
+ bl PlaySE
_020567AA:
add r0, r7, #0x0
add r1, r6, #0x0
@@ -2220,7 +2220,7 @@ _02056994:
tst r0, r4
bne _020569AA
ldr r0, _02056A78 ; =0x00000601
- bl FUN_020054C8
+ bl PlaySE
_020569AA:
add r0, r6, #0x0
add r1, r7, #0x0
@@ -2266,7 +2266,7 @@ _020569EC:
tst r0, r4
bne _02056A14
ldr r0, _02056A78 ; =0x00000601
- bl FUN_020054C8
+ bl PlaySE
_02056A14:
add r0, r6, #0x0
add r1, r7, #0x0
@@ -2388,7 +2388,7 @@ _02056B04:
tst r0, r4
bne _02056B22
ldr r0, _02056B58 ; =0x00000601
- bl FUN_020054C8
+ bl PlaySE
_02056B22:
add r0, r7, #0x0
add r1, r6, #0x0
@@ -3280,7 +3280,7 @@ _020571E8:
tst r0, r1
bne _02057244
ldr r0, _02057250 ; =0x00000601
- bl FUN_020054C8
+ bl PlaySE
b _02057244
_020571FC:
cmp r6, #0x5
diff --git a/arm9/asm/unk_02057380.s b/arm9/asm/unk_02057380.s
index adfa2f07..7195736d 100644
--- a/arm9/asm/unk_02057380.s
+++ b/arm9/asm/unk_02057380.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F6364
diff --git a/arm9/asm/unk_02058EE8.s b/arm9/asm/unk_02058EE8.s
index b021f2bd..105b2203 100644
--- a/arm9/asm/unk_02058EE8.s
+++ b/arm9/asm/unk_02058EE8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02059F04.s b/arm9/asm/unk_02059F04.s
index 26971d97..6f0234b7 100644
--- a/arm9/asm/unk_02059F04.s
+++ b/arm9/asm/unk_02059F04.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F6754
.extern UNK_020F693C
diff --git a/arm9/asm/unk_0205AD98.s b/arm9/asm/unk_0205AD98.s
index b780cf26..1a853e6c 100644
--- a/arm9/asm/unk_0205AD98.s
+++ b/arm9/asm/unk_0205AD98.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_02105F9C
.extern UNK_020F6C84
@@ -1229,7 +1229,7 @@ _0205B5EA:
add r0, r5, #0x0
bl FUN_02058700
ldr r0, _0205B618 ; =0x0000060B
- bl FUN_020054C8
+ bl PlaySE
pop {r3-r7, pc}
nop
_0205B614: .word 0x00010004
@@ -1334,7 +1334,7 @@ _0205B6B8:
add r0, r5, #0x0
bl FUN_02058700
ldr r0, _0205B700 ; =0x00000647
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x1
add sp, #0x18
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_0205BEF8.s b/arm9/asm/unk_0205BEF8.s
index 3df9f7d7..c2fc5d08 100644
--- a/arm9/asm/unk_0205BEF8.s
+++ b/arm9/asm/unk_0205BEF8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205C334.s b/arm9/asm/unk_0205C334.s
index 22bba443..6327651c 100644
--- a/arm9/asm/unk_0205C334.s
+++ b/arm9/asm/unk_0205C334.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s
index b40cf1a7..e27777c1 100644
--- a/arm9/asm/unk_0205C598.s
+++ b/arm9/asm/unk_0205C598.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205CDB4.s b/arm9/asm/unk_0205CDB4.s
index 65a38f16..b1d5723f 100644
--- a/arm9/asm/unk_0205CDB4.s
+++ b/arm9/asm/unk_0205CDB4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s
index 6e6f1f85..ba92a404 100644
--- a/arm9/asm/unk_0205CE48.s
+++ b/arm9/asm/unk_0205CE48.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern UNK_020F96DC
@@ -1471,7 +1471,7 @@ _0205D984:
ldr r0, [r5, #0x34]
bl FUN_020587B0
add r0, r4, #0x0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x10]
bl String_dtor
add r0, r4, #0x0
diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s
index 890feee8..5f01125f 100644
--- a/arm9/asm/unk_0205DD18.s
+++ b/arm9/asm/unk_0205DD18.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205E4EC.s b/arm9/asm/unk_0205E4EC.s
index e109c021..fa9f44fd 100644
--- a/arm9/asm/unk_0205E4EC.s
+++ b/arm9/asm/unk_0205E4EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205EB38.s b/arm9/asm/unk_0205EB38.s
index 6464bf32..77971791 100644
--- a/arm9/asm/unk_0205EB38.s
+++ b/arm9/asm/unk_0205EB38.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205EC84.s b/arm9/asm/unk_0205EC84.s
deleted file mode 100644
index a0c7d147..00000000
--- a/arm9/asm/unk_0205EC84.s
+++ /dev/null
@@ -1,906 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0205EC84
-FUN_0205EC84: ; 0x0205EC84
- ldr r3, _0205EC88 ; =SetFlagInArray
- bx r3
- .balign 4
-_0205EC88: .word SetFlagInArray
-
- thumb_func_start FUN_0205EC8C
-FUN_0205EC8C: ; 0x0205EC8C
- ldr r3, _0205EC90 ; =ClearFlagInArray
- bx r3
- .balign 4
-_0205EC90: .word ClearFlagInArray
-
- thumb_func_start FUN_0205EC94
-FUN_0205EC94: ; 0x0205EC94
- ldr r3, _0205EC98 ; =CheckFlagInArray
- bx r3
- .balign 4
-_0205EC98: .word CheckFlagInArray
-
- thumb_func_start FUN_0205EC9C
-FUN_0205EC9C: ; 0x0205EC9C
- push {r3, lr}
- cmp r1, #0x0
- beq _0205ECB6
- cmp r1, #0x1
- beq _0205ECAC
- cmp r1, #0x2
- beq _0205ECC0
- b _0205ECCA
-_0205ECAC:
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- bl FUN_0205EC84
- b _0205ECCE
-_0205ECB6:
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- bl FUN_0205EC8C
- b _0205ECCE
-_0205ECC0:
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- bl FUN_0205EC94
- pop {r3, pc}
-_0205ECCA:
- bl GF_AssertFail
-_0205ECCE:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0205ECD4
-FUN_0205ECD4: ; 0x0205ECD4
- ldr r3, _0205ECDC ; =FUN_0205EC84
- mov r1, #0x96
- lsl r1, r1, #0x4
- bx r3
- .balign 4
-_0205ECDC: .word FUN_0205EC84
-
- thumb_func_start FUN_0205ECE0
-FUN_0205ECE0: ; 0x0205ECE0
- ldr r3, _0205ECE8 ; =FUN_0205EC94
- mov r1, #0x96
- lsl r1, r1, #0x4
- bx r3
- .balign 4
-_0205ECE8: .word FUN_0205EC94
-
- thumb_func_start FUN_0205ECEC
-FUN_0205ECEC: ; 0x0205ECEC
- ldr r3, _0205ECF4 ; =FUN_0205EC94
- ldr r1, _0205ECF8 ; =0x0000098D
- bx r3
- nop
-_0205ECF4: .word FUN_0205EC94
-_0205ECF8: .word 0x0000098D
-
- thumb_func_start FUN_0205ECFC
-FUN_0205ECFC: ; 0x0205ECFC
- ldr r3, _0205ED04 ; =FUN_0205EC84
- ldr r1, _0205ED08 ; =0x00000964
- bx r3
- nop
-_0205ED04: .word FUN_0205EC84
-_0205ED08: .word 0x00000964
-
- thumb_func_start FUN_0205ED0C
-FUN_0205ED0C: ; 0x0205ED0C
- ldr r3, _0205ED14 ; =FUN_0205EC94
- ldr r1, _0205ED18 ; =0x00000964
- bx r3
- nop
-_0205ED14: .word FUN_0205EC94
-_0205ED18: .word 0x00000964
-
- thumb_func_start FUN_0205ED1C
-FUN_0205ED1C: ; 0x0205ED1C
- ldr r3, _0205ED24 ; =FUN_0205EC84
- ldr r1, _0205ED28 ; =0x00000961
- bx r3
- nop
-_0205ED24: .word FUN_0205EC84
-_0205ED28: .word 0x00000961
-
- thumb_func_start FUN_0205ED2C
-FUN_0205ED2C: ; 0x0205ED2C
- ldr r3, _0205ED34 ; =FUN_0205EC8C
- ldr r1, _0205ED38 ; =0x00000961
- bx r3
- nop
-_0205ED34: .word FUN_0205EC8C
-_0205ED38: .word 0x00000961
-
- thumb_func_start FUN_0205ED3C
-FUN_0205ED3C: ; 0x0205ED3C
- ldr r3, _0205ED44 ; =FUN_0205EC94
- ldr r1, _0205ED48 ; =0x00000961
- bx r3
- nop
-_0205ED44: .word FUN_0205EC94
-_0205ED48: .word 0x00000961
-
- thumb_func_start FUN_0205ED4C
-FUN_0205ED4C: ; 0x0205ED4C
- ldr r3, _0205ED54 ; =FUN_0205EC84
- ldr r1, _0205ED58 ; =0x00000965
- bx r3
- nop
-_0205ED54: .word FUN_0205EC84
-_0205ED58: .word 0x00000965
-
- thumb_func_start FUN_0205ED5C
-FUN_0205ED5C: ; 0x0205ED5C
- ldr r3, _0205ED64 ; =FUN_0205EC8C
- ldr r1, _0205ED68 ; =0x00000965
- bx r3
- nop
-_0205ED64: .word FUN_0205EC8C
-_0205ED68: .word 0x00000965
-
- thumb_func_start FUN_0205ED6C
-FUN_0205ED6C: ; 0x0205ED6C
- ldr r3, _0205ED74 ; =FUN_0205EC94
- ldr r1, _0205ED78 ; =0x00000965
- bx r3
- nop
-_0205ED74: .word FUN_0205EC94
-_0205ED78: .word 0x00000965
-
- thumb_func_start FUN_0205ED7C
-FUN_0205ED7C: ; 0x0205ED7C
- ldr r3, _0205ED84 ; =FUN_0205EC84
- ldr r1, _0205ED88 ; =0x0000096D
- bx r3
- nop
-_0205ED84: .word FUN_0205EC84
-_0205ED88: .word 0x0000096D
-
- thumb_func_start FUN_0205ED8C
-FUN_0205ED8C: ; 0x0205ED8C
- ldr r3, _0205ED94 ; =FUN_0205EC8C
- ldr r1, _0205ED98 ; =0x0000096D
- bx r3
- nop
-_0205ED94: .word FUN_0205EC8C
-_0205ED98: .word 0x0000096D
-
- thumb_func_start FUN_0205ED9C
-FUN_0205ED9C: ; 0x0205ED9C
- ldr r3, _0205EDA4 ; =FUN_0205EC94
- ldr r1, _0205EDA8 ; =0x0000096D
- bx r3
- nop
-_0205EDA4: .word FUN_0205EC94
-_0205EDA8: .word 0x0000096D
-
- thumb_func_start FUN_0205EDAC
-FUN_0205EDAC: ; 0x0205EDAC
- ldr r3, _0205EDB4 ; =FUN_0205EC84
- ldr r1, _0205EDB8 ; =0x0000096E
- bx r3
- nop
-_0205EDB4: .word FUN_0205EC84
-_0205EDB8: .word 0x0000096E
-
- thumb_func_start FUN_0205EDBC
-FUN_0205EDBC: ; 0x0205EDBC
- ldr r3, _0205EDC4 ; =FUN_0205EC84
- ldr r1, _0205EDC8 ; =0x0000096F
- bx r3
- nop
-_0205EDC4: .word FUN_0205EC84
-_0205EDC8: .word 0x0000096F
-
- thumb_func_start FUN_0205EDCC
-FUN_0205EDCC: ; 0x0205EDCC
- ldr r3, _0205EDD4 ; =FUN_0205EC84
- mov r1, #0x97
- lsl r1, r1, #0x4
- bx r3
- .balign 4
-_0205EDD4: .word FUN_0205EC84
-
- thumb_func_start FUN_0205EDD8
-FUN_0205EDD8: ; 0x0205EDD8
- ldr r3, _0205EDE0 ; =FUN_0205EC84
- ldr r1, _0205EDE4 ; =0x00000971
- bx r3
- nop
-_0205EDE0: .word FUN_0205EC84
-_0205EDE4: .word 0x00000971
-
- thumb_func_start FUN_0205EDE8
-FUN_0205EDE8: ; 0x0205EDE8
- ldr r3, _0205EDF0 ; =FUN_0205EC84
- ldr r1, _0205EDF4 ; =0x00000972
- bx r3
- nop
-_0205EDF0: .word FUN_0205EC84
-_0205EDF4: .word 0x00000972
-
- thumb_func_start FUN_0205EDF8
-FUN_0205EDF8: ; 0x0205EDF8
- ldr r3, _0205EE00 ; =FUN_0205EC84
- ldr r1, _0205EE04 ; =0x00000973
- bx r3
- nop
-_0205EE00: .word FUN_0205EC84
-_0205EE04: .word 0x00000973
-
- thumb_func_start FUN_0205EE08
-FUN_0205EE08: ; 0x0205EE08
- push {r3, lr}
- cmp r1, #0x4
- bhi _0205EE4A
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0205EE1A: ; jump table (using 16-bit offset)
- .short _0205EE24 - _0205EE1A - 2; case 0
- .short _0205EE2C - _0205EE1A - 2; case 1
- .short _0205EE34 - _0205EE1A - 2; case 2
- .short _0205EE3C - _0205EE1A - 2; case 3
- .short _0205EE44 - _0205EE1A - 2; case 4
-_0205EE24:
- ldr r1, _0205EE4C ; =0x00000968
- bl FUN_0205EC84
- pop {r3, pc}
-_0205EE2C:
- ldr r1, _0205EE50 ; =0x00000969
- bl FUN_0205EC84
- pop {r3, pc}
-_0205EE34:
- ldr r1, _0205EE54 ; =0x0000096A
- bl FUN_0205EC84
- pop {r3, pc}
-_0205EE3C:
- ldr r1, _0205EE58 ; =0x0000096B
- bl FUN_0205EC84
- pop {r3, pc}
-_0205EE44:
- ldr r1, _0205EE5C ; =0x0000096C
- bl FUN_0205EC84
-_0205EE4A:
- pop {r3, pc}
- .balign 4
-_0205EE4C: .word 0x00000968
-_0205EE50: .word 0x00000969
-_0205EE54: .word 0x0000096A
-_0205EE58: .word 0x0000096B
-_0205EE5C: .word 0x0000096C
-
- thumb_func_start FUN_0205EE60
-FUN_0205EE60: ; 0x0205EE60
- push {r3, lr}
- cmp r1, #0x4
- bhi _0205EEA2
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0205EE72: ; jump table (using 16-bit offset)
- .short _0205EE7C - _0205EE72 - 2; case 0
- .short _0205EE84 - _0205EE72 - 2; case 1
- .short _0205EE8C - _0205EE72 - 2; case 2
- .short _0205EE94 - _0205EE72 - 2; case 3
- .short _0205EE9C - _0205EE72 - 2; case 4
-_0205EE7C:
- ldr r1, _0205EEA4 ; =0x00000968
- bl FUN_0205EC94
- pop {r3, pc}
-_0205EE84:
- ldr r1, _0205EEA8 ; =0x00000969
- bl FUN_0205EC94
- pop {r3, pc}
-_0205EE8C:
- ldr r1, _0205EEAC ; =0x0000096A
- bl FUN_0205EC94
- pop {r3, pc}
-_0205EE94:
- ldr r1, _0205EEB0 ; =0x0000096B
- bl FUN_0205EC94
- pop {r3, pc}
-_0205EE9C:
- ldr r1, _0205EEB4 ; =0x0000096C
- bl FUN_0205EC94
-_0205EEA2:
- pop {r3, pc}
- .balign 4
-_0205EEA4: .word 0x00000968
-_0205EEA8: .word 0x00000969
-_0205EEAC: .word 0x0000096A
-_0205EEB0: .word 0x0000096B
-_0205EEB4: .word 0x0000096C
-
- thumb_func_start FUN_0205EEB8
-FUN_0205EEB8: ; 0x0205EEB8
- push {r3, lr}
- mov r2, #0x0
- cmp r1, #0x5
- bhi _0205EF0A
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0205EECC: ; jump table (using 16-bit offset)
- .short _0205EF0A - _0205EECC - 2; case 0
- .short _0205EED8 - _0205EECC - 2; case 1
- .short _0205EEE2 - _0205EECC - 2; case 2
- .short _0205EEEE - _0205EECC - 2; case 3
- .short _0205EEF8 - _0205EECC - 2; case 4
- .short _0205EF02 - _0205EECC - 2; case 5
-_0205EED8:
- ldr r1, _0205EF10 ; =0x0000097F
- bl FUN_0205EC94
- add r2, r0, #0x0
- b _0205EF0A
-_0205EEE2:
- mov r1, #0x26
- lsl r1, r1, #0x6
- bl FUN_0205EC94
- add r2, r0, #0x0
- b _0205EF0A
-_0205EEEE:
- ldr r1, _0205EF14 ; =0x00000981
- bl FUN_0205EC94
- add r2, r0, #0x0
- b _0205EF0A
-_0205EEF8:
- ldr r1, _0205EF18 ; =0x00000982
- bl FUN_0205EC94
- add r2, r0, #0x0
- b _0205EF0A
-_0205EF02:
- ldr r1, _0205EF1C ; =0x00000983
- bl FUN_0205EC94
- add r2, r0, #0x0
-_0205EF0A:
- add r0, r2, #0x0
- pop {r3, pc}
- nop
-_0205EF10: .word 0x0000097F
-_0205EF14: .word 0x00000981
-_0205EF18: .word 0x00000982
-_0205EF1C: .word 0x00000983
-
- thumb_func_start FUN_0205EF20
-FUN_0205EF20: ; 0x0205EF20
- push {r4-r6, lr}
- add r4, r1, #0x0
- ldr r1, _0205F0E4 ; =0x00000132
- add r6, r0, #0x0
- mov r5, #0x0
- cmp r4, r1
- bgt _0205EF7E
- blt _0205EF32
- b _0205F036
-_0205EF32:
- cmp r4, #0xc9
- bgt _0205EF60
- blt _0205EF3A
- b _0205F084
-_0205EF3A:
- cmp r4, #0x4b
- bgt _0205EF58
- add r1, r4, #0x0
- sub r1, #0x48
- bmi _0205EF5E
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0205EF50: ; jump table (using 16-bit offset)
- .short _0205F06A - _0205EF50 - 2; case 0
- .short _0205F06A - _0205EF50 - 2; case 1
- .short _0205F06A - _0205EF50 - 2; case 2
- .short _0205F06A - _0205EF50 - 2; case 3
-_0205EF58:
- cmp r4, #0xb9
- bne _0205EF5E
- b _0205F0D2
-_0205EF5E:
- b _0205F0E0
-_0205EF60:
- add r2, r1, #0x0
- sub r2, #0x32
- cmp r4, r2
- bgt _0205EF76
- sub r1, #0x32
- cmp r4, r1
- blt _0205EF70
- b _0205F09E
-_0205EF70:
- cmp r4, #0xfb
- beq _0205F018
- b _0205F0E0
-_0205EF76:
- sub r0, r1, #0x1
- cmp r4, r0
- beq _0205F036
- b _0205F0E0
-_0205EF7E:
- add r2, r1, #0x0
- add r2, #0x5d
- cmp r4, r2
- bgt _0205EFC8
- add r2, r1, #0x0
- add r2, #0x5d
- cmp r4, r2
- blt _0205EF90
- b _0205F0B8
-_0205EF90:
- add r2, r1, #0x1
- cmp r4, r2
- bgt _0205EF9E
- add r0, r2, #0x0
- cmp r4, r0
- beq _0205F036
- b _0205F0E0
-_0205EF9E:
- add r1, r1, #0x2
- sub r1, r4, r1
- cmp r1, #0xa
- bhi _0205EFD6
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0205EFB2: ; jump table (using 16-bit offset)
- .short _0205F036 - _0205EFB2 - 2; case 0
- .short _0205F036 - _0205EFB2 - 2; case 1
- .short _0205F036 - _0205EFB2 - 2; case 2
- .short _0205F0E0 - _0205EFB2 - 2; case 3
- .short _0205EFFC - _0205EFB2 - 2; case 4
- .short _0205F0E0 - _0205EFB2 - 2; case 5
- .short _0205EFE0 - _0205EFB2 - 2; case 6
- .short _0205F0E0 - _0205EFB2 - 2; case 7
- .short _0205EFEE - _0205EFB2 - 2; case 8
- .short _0205F0E0 - _0205EFB2 - 2; case 9
- .short _0205F00A - _0205EFB2 - 2; case 10
-_0205EFC8:
- ldr r0, _0205F0E8 ; =0x000001EE
- cmp r4, r0
- bgt _0205EFD8
- bge _0205F036
- sub r0, #0x48
- cmp r4, r0
- beq _0205F026
-_0205EFD6:
- b _0205F0E0
-_0205EFD8:
- add r0, r0, #0x3
- cmp r4, r0
- beq _0205F036
- b _0205F0E0
-_0205EFE0:
- ldr r1, _0205F0EC ; =0x00000984
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- ldr r5, _0205F0F0 ; =0x0000042E
- b _0205F0E0
-_0205EFEE:
- ldr r1, _0205F0EC ; =0x00000984
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- ldr r5, _0205F0F4 ; =0x00000429
- b _0205F0E0
-_0205EFFC:
- ldr r1, _0205F0F8 ; =0x0000098E
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- ldr r5, _0205F0F0 ; =0x0000042E
- b _0205F0E0
-_0205F00A:
- ldr r1, _0205F0FC ; =0x0000098F
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- ldr r5, _0205F0F0 ; =0x0000042E
- b _0205F0E0
-_0205F018:
- ldr r1, _0205F100 ; =0x00000995
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- ldr r5, _0205F104 ; =0x0000042D
- b _0205F0E0
-_0205F026:
- ldr r1, _0205F108 ; =0x00000993
- add r0, r6, #0x0
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- ldr r5, _0205F10C ; =0x0000044A
- b _0205F0E0
-_0205F036:
- ldr r1, _0205F110 ; =0x00000985
- add r0, r6, #0x0
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F054
- bl IsNighttime
- cmp r0, #0x0
- bne _0205F050
- mov r5, #0xfe
- lsl r5, r5, #0x2
- b _0205F0E0
-_0205F050:
- ldr r5, _0205F114 ; =0x00000415
- b _0205F0E0
-_0205F054:
- ldr r0, _0205F118 ; =0x00000131
- cmp r4, r0
- bne _0205F0E0
- ldr r1, _0205F11C ; =0x00000986
- add r0, r6, #0x0
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- ldr r5, _0205F120 ; =0x0000042B
- b _0205F0E0
-_0205F06A:
- ldr r1, _0205F124 ; =0x00000987
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- bl IsNighttime
- cmp r0, #0x0
- bne _0205F080
- ldr r5, _0205F128 ; =0x000003F5
- b _0205F0E0
-_0205F080:
- ldr r5, _0205F12C ; =0x00000412
- b _0205F0E0
-_0205F084:
- ldr r1, _0205F130 ; =0x00000988
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- bl IsNighttime
- cmp r0, #0x0
- bne _0205F09A
- ldr r5, _0205F134 ; =0x000003FF
- b _0205F0E0
-_0205F09A:
- ldr r5, _0205F138 ; =0x0000041C
- b _0205F0E0
-_0205F09E:
- ldr r1, _0205F13C ; =0x00000989
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- bl IsNighttime
- cmp r0, #0x0
- bne _0205F0B4
- ldr r5, _0205F140 ; =0x000003EE
- b _0205F0E0
-_0205F0B4:
- ldr r5, _0205F144 ; =0x0000040B
- b _0205F0E0
-_0205F0B8:
- ldr r1, _0205F148 ; =0x0000098A
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- bl IsNighttime
- cmp r0, #0x0
- bne _0205F0CE
- ldr r5, _0205F140 ; =0x000003EE
- b _0205F0E0
-_0205F0CE:
- ldr r5, _0205F144 ; =0x0000040B
- b _0205F0E0
-_0205F0D2:
- ldr r1, _0205F14C ; =0x0000098B
- add r0, r6, #0x0
- bl FUN_0205EC94
- cmp r0, #0x1
- bne _0205F0E0
- ldr r5, _0205F150 ; =0x000003E9
-_0205F0E0:
- add r0, r5, #0x0
- pop {r4-r6, pc}
- .balign 4
-_0205F0E4: .word 0x00000132
-_0205F0E8: .word 0x000001EE
-_0205F0EC: .word 0x00000984
-_0205F0F0: .word 0x0000042E
-_0205F0F4: .word 0x00000429
-_0205F0F8: .word 0x0000098E
-_0205F0FC: .word 0x0000098F
-_0205F100: .word 0x00000995
-_0205F104: .word 0x0000042D
-_0205F108: .word 0x00000993
-_0205F10C: .word 0x0000044A
-_0205F110: .word 0x00000985
-_0205F114: .word 0x00000415
-_0205F118: .word 0x00000131
-_0205F11C: .word 0x00000986
-_0205F120: .word 0x0000042B
-_0205F124: .word 0x00000987
-_0205F128: .word 0x000003F5
-_0205F12C: .word 0x00000412
-_0205F130: .word 0x00000988
-_0205F134: .word 0x000003FF
-_0205F138: .word 0x0000041C
-_0205F13C: .word 0x00000989
-_0205F140: .word 0x000003EE
-_0205F144: .word 0x0000040B
-_0205F148: .word 0x0000098A
-_0205F14C: .word 0x0000098B
-_0205F150: .word 0x000003E9
-
- thumb_func_start FUN_0205F154
-FUN_0205F154: ; 0x0205F154
- ldr r3, _0205F15C ; =FUN_0205EC84
- ldr r1, _0205F160 ; =0x00000966
- bx r3
- nop
-_0205F15C: .word FUN_0205EC84
-_0205F160: .word 0x00000966
-
- thumb_func_start FUN_0205F164
-FUN_0205F164: ; 0x0205F164
- ldr r3, _0205F16C ; =FUN_0205EC8C
- ldr r1, _0205F170 ; =0x00000966
- bx r3
- nop
-_0205F16C: .word FUN_0205EC8C
-_0205F170: .word 0x00000966
-
- thumb_func_start FUN_0205F174
-FUN_0205F174: ; 0x0205F174
- ldr r3, _0205F17C ; =FUN_0205EC94
- ldr r1, _0205F180 ; =0x00000966
- bx r3
- nop
-_0205F17C: .word FUN_0205EC94
-_0205F180: .word 0x00000966
-
- thumb_func_start FUN_0205F184
-FUN_0205F184: ; 0x0205F184
- ldr r3, _0205F18C ; =FUN_0205EC94
- ldr r1, _0205F190 ; =0x00000978
- bx r3
- nop
-_0205F18C: .word FUN_0205EC94
-_0205F190: .word 0x00000978
-
- thumb_func_start FUN_0205F194
-FUN_0205F194: ; 0x0205F194
- ldr r3, _0205F19C ; =FUN_0205EC94
- ldr r1, _0205F1A0 ; =0x00000992
- bx r3
- nop
-_0205F19C: .word FUN_0205EC94
-_0205F1A0: .word 0x00000992
-
- thumb_func_start FUN_0205F1A4
-FUN_0205F1A4: ; 0x0205F1A4
- ldr r3, _0205F1AC ; =FUN_0205EC94
- ldr r1, _0205F1B0 ; =0x0000097D
- bx r3
- nop
-_0205F1AC: .word FUN_0205EC94
-_0205F1B0: .word 0x0000097D
-
- thumb_func_start FUN_0205F1B4
-FUN_0205F1B4: ; 0x0205F1B4
- ldr r3, _0205F1BC ; =FUN_0205EC94
- ldr r1, _0205F1C0 ; =0x0000097E
- bx r3
- nop
-_0205F1BC: .word FUN_0205EC94
-_0205F1C0: .word 0x0000097E
-
- thumb_func_start FUN_0205F1C4
-FUN_0205F1C4: ; 0x0205F1C4
- ldr r3, _0205F1CC ; =FUN_0205EC84
- ldr r1, _0205F1D0 ; =0x0000097C
- bx r3
- nop
-_0205F1CC: .word FUN_0205EC84
-_0205F1D0: .word 0x0000097C
-
- thumb_func_start FUN_0205F1D4
-FUN_0205F1D4: ; 0x0205F1D4
- ldr r3, _0205F1DC ; =FUN_0205EC8C
- ldr r1, _0205F1E0 ; =0x0000097C
- bx r3
- nop
-_0205F1DC: .word FUN_0205EC8C
-_0205F1E0: .word 0x0000097C
-
- thumb_func_start FUN_0205F1E4
-FUN_0205F1E4: ; 0x0205F1E4
- ldr r3, _0205F1EC ; =FUN_0205EC94
- ldr r1, _0205F1F0 ; =0x0000097C
- bx r3
- nop
-_0205F1EC: .word FUN_0205EC94
-_0205F1F0: .word 0x0000097C
-
- thumb_func_start FUN_0205F1F4
-FUN_0205F1F4: ; 0x0205F1F4
- ldr r3, _0205F1FC ; =FUN_0205EC84
- ldr r1, _0205F200 ; =0x00000967
- bx r3
- nop
-_0205F1FC: .word FUN_0205EC84
-_0205F200: .word 0x00000967
-
- thumb_func_start FUN_0205F204
-FUN_0205F204: ; 0x0205F204
- ldr r3, _0205F20C ; =FUN_0205EC8C
- ldr r1, _0205F210 ; =0x00000967
- bx r3
- nop
-_0205F20C: .word FUN_0205EC8C
-_0205F210: .word 0x00000967
-
- thumb_func_start FUN_0205F214
-FUN_0205F214: ; 0x0205F214
- ldr r3, _0205F21C ; =FUN_0205EC94
- ldr r1, _0205F220 ; =0x00000967
- bx r3
- nop
-_0205F21C: .word FUN_0205EC94
-_0205F220: .word 0x00000967
-
- thumb_func_start FUN_0205F224
-FUN_0205F224: ; 0x0205F224
- ldr r3, _0205F22C ; =FUN_0205EC84
- ldr r1, _0205F230 ; =0x00000979
- bx r3
- nop
-_0205F22C: .word FUN_0205EC84
-_0205F230: .word 0x00000979
-
- thumb_func_start FUN_0205F234
-FUN_0205F234: ; 0x0205F234
- ldr r3, _0205F23C ; =FUN_0205EC8C
- ldr r1, _0205F240 ; =0x00000979
- bx r3
- nop
-_0205F23C: .word FUN_0205EC8C
-_0205F240: .word 0x00000979
-
- thumb_func_start FUN_0205F244
-FUN_0205F244: ; 0x0205F244
- ldr r3, _0205F24C ; =FUN_0205EC94
- ldr r1, _0205F250 ; =0x00000979
- bx r3
- nop
-_0205F24C: .word FUN_0205EC94
-_0205F250: .word 0x00000979
-
- thumb_func_start FUN_0205F254
-FUN_0205F254: ; 0x0205F254
- ldr r3, _0205F25C ; =FUN_0205EC8C
- ldr r1, _0205F260 ; =0x00000994
- bx r3
- nop
-_0205F25C: .word FUN_0205EC8C
-_0205F260: .word 0x00000994
-
- thumb_func_start FUN_0205F264
-FUN_0205F264: ; 0x0205F264
- ldr r3, _0205F26C ; =FUN_0205EC9C
- ldr r2, _0205F270 ; =0x00000962
- bx r3
- nop
-_0205F26C: .word FUN_0205EC9C
-_0205F270: .word 0x00000962
-
- thumb_func_start FUN_0205F274
-FUN_0205F274: ; 0x0205F274
- ldr r3, _0205F27C ; =FUN_0205EC84
- ldr r1, _0205F280 ; =0x0000097A
- bx r3
- nop
-_0205F27C: .word FUN_0205EC84
-_0205F280: .word 0x0000097A
-
- thumb_func_start FUN_0205F284
-FUN_0205F284: ; 0x0205F284
- ldr r3, _0205F28C ; =FUN_0205EC8C
- ldr r1, _0205F290 ; =0x0000097A
- bx r3
- nop
-_0205F28C: .word FUN_0205EC8C
-_0205F290: .word 0x0000097A
-
- thumb_func_start FUN_0205F294
-FUN_0205F294: ; 0x0205F294
- ldr r3, _0205F29C ; =FUN_0205EC94
- ldr r1, _0205F2A0 ; =0x0000097A
- bx r3
- nop
-_0205F29C: .word FUN_0205EC94
-_0205F2A0: .word 0x0000097A
-
- thumb_func_start FUN_0205F2A4
-FUN_0205F2A4: ; 0x0205F2A4
- ldr r3, _0205F2AC ; =FUN_0205EC84
- ldr r1, _0205F2B0 ; =0x0000097B
- bx r3
- nop
-_0205F2AC: .word FUN_0205EC84
-_0205F2B0: .word 0x0000097B
-
- thumb_func_start FUN_0205F2B4
-FUN_0205F2B4: ; 0x0205F2B4
- ldr r3, _0205F2BC ; =FUN_0205EC8C
- ldr r1, _0205F2C0 ; =0x0000097B
- bx r3
- nop
-_0205F2BC: .word FUN_0205EC8C
-_0205F2C0: .word 0x0000097B
-
- thumb_func_start FUN_0205F2C4
-FUN_0205F2C4: ; 0x0205F2C4
- ldr r3, _0205F2CC ; =FUN_0205EC94
- ldr r1, _0205F2D0 ; =0x0000097B
- bx r3
- nop
-_0205F2CC: .word FUN_0205EC94
-_0205F2D0: .word 0x0000097B
-
- thumb_func_start FUN_0205F2D4
-FUN_0205F2D4: ; 0x0205F2D4
- ldr r3, _0205F2DC ; =FUN_0205EC9C
- ldr r2, _0205F2E0 ; =0x00000963
- bx r3
- nop
-_0205F2DC: .word FUN_0205EC9C
-_0205F2E0: .word 0x00000963
-
- thumb_func_start FUN_0205F2E4
-FUN_0205F2E4: ; 0x0205F2E4
- push {r4-r6, lr}
- add r4, r2, #0x0
- add r5, r0, #0x0
- add r6, r1, #0x0
- cmp r4, #0x45
- blo _0205F2F4
- bl GF_AssertFail
-_0205F2F4:
- mov r2, #0x9b
- lsl r2, r2, #0x4
- add r0, r5, #0x0
- add r1, r6, #0x0
- add r2, r4, r2
- bl FUN_0205EC9C
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0205F304
-FUN_0205F304: ; 0x0205F304
- ldr r3, _0205F30C ; =FUN_0205EC84
- ldr r1, _0205F310 ; =0x0000098C
- bx r3
- nop
-_0205F30C: .word FUN_0205EC84
-_0205F310: .word 0x0000098C
diff --git a/arm9/asm/unk_0205F314.s b/arm9/asm/unk_0205F314.s
index 548cd5a4..921bc5b2 100644
--- a/arm9/asm/unk_0205F314.s
+++ b/arm9/asm/unk_0205F314.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0205F7A0.s b/arm9/asm/unk_0205F7A0.s
index 624176f9..60706108 100644
--- a/arm9/asm/unk_0205F7A0.s
+++ b/arm9/asm/unk_0205F7A0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02060344.s b/arm9/asm/unk_02060344.s
index 9dcfde2e..6c09f4a5 100644
--- a/arm9/asm/unk_02060344.s
+++ b/arm9/asm/unk_02060344.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020603B0.s b/arm9/asm/unk_020603B0.s
index d4aa42f5..cb719642 100644
--- a/arm9/asm/unk_020603B0.s
+++ b/arm9/asm/unk_020603B0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020606B0.s b/arm9/asm/unk_020606B0.s
index 013e445c..5040613e 100644
--- a/arm9/asm/unk_020606B0.s
+++ b/arm9/asm/unk_020606B0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s
index 2e2c4e21..d3382d8c 100644
--- a/arm9/asm/unk_020607D4.s
+++ b/arm9/asm/unk_020607D4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -146,7 +146,7 @@ _020608EC:
strb r0, [r4, #0x0]
_020608F0:
ldr r0, _0206091C ; =0x000006DD
- bl FUN_020054C8
+ bl PlaySE
b _0206090A
_020608F8:
bl GF_AssertFail
@@ -298,7 +298,7 @@ _020609EC:
mov r2, #0x0
bl MOD05_021DA4EC
ldr r0, _02060B08 ; =0x000006DE
- bl FUN_020054C8
+ bl PlaySE
b _02060B00
_02060A2C:
ldr r0, [r5, #0x50]
diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s
index 918488c5..e3b93197 100644
--- a/arm9/asm/unk_02060CCC.s
+++ b/arm9/asm/unk_02060CCC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_02105FBC
diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s
index fc235004..2813b999 100644
--- a/arm9/asm/unk_020625EC.s
+++ b/arm9/asm/unk_020625EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -61,7 +61,7 @@ FUN_020625EC: ; 0x020625EC
mov r1, #0x50
lsl r2, r0, #0xd
ldr r6, [r5, #0xc]
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x2d
mov r0, #0x50
lsl r1, r1, #0x4
@@ -194,7 +194,7 @@ _020626FE:
lsl r2, r2, #0x4
bl MI_CpuFill8
add r0, r5, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xc
add sp, #0x8
pop {r3-r7, pc}
@@ -1067,7 +1067,7 @@ FUN_02062DB0: ; 0x02062DB0
mov r0, #0x1
lsl r1, r1, #0x6
mov r2, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r2, #0x0
str r2, [sp, #0x0]
mov r0, #0x20
@@ -1080,33 +1080,33 @@ FUN_02062DB0: ; 0x02062DB0
ldr r0, [r0, #0x0]
mov r1, #0x1
add r3, r2, #0x0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r4, #0x0
add r0, #0xd0
ldr r0, [r0, #0x0]
mov r1, #0x1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #0x1
add r1, r0, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r4, #0x0
add r0, #0xd0
ldr r0, [r0, #0x0]
mov r1, #0x0
- bl FUN_02018884
+ bl GetBgPriority
strh r0, [r4, #0x10]
add r0, r4, #0x0
add r0, #0xd0
ldr r0, [r0, #0x0]
mov r1, #0x1
- bl FUN_02018884
+ bl GetBgPriority
strh r0, [r4, #0x12]
mov r0, #0x0
mov r1, #0x2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0x1
add r1, r0, #0x0
- bl FUN_020178BC
+ bl SetBgPriority
ldrh r0, [r4, #0x1c]
ldr r2, _02062EB8 ; =0x000003E2
mov r1, #0x3
@@ -1169,7 +1169,7 @@ FUN_02062DB0: ; 0x02062DB0
add r1, #0xe4
mov r2, #0x3
mov r3, #0x2
- bl FUN_02019064
+ bl AddWindowParameterized
add r4, #0xe4
add r0, r4, #0x0
mov r1, #0xff
@@ -1191,16 +1191,16 @@ FUN_02062EC4: ; 0x02062EC4
bl FUN_0200D0E0
add r0, r4, #0x0
add r0, #0xe4
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0x0
add r0, #0xe4
- bl FUN_02019178
+ bl RemoveWindow
mov r1, #0xad
ldr r3, [r4, #0x0]
mov r0, #0x1
lsl r1, r1, #0x6
mov r2, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r2, #0x0
str r2, [sp, #0x0]
mov r0, #0x20
@@ -1213,25 +1213,25 @@ FUN_02062EC4: ; 0x02062EC4
ldr r0, [r0, #0x0]
mov r1, #0x1
add r3, r2, #0x0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r4, #0x0
add r0, #0xd0
ldr r0, [r0, #0x0]
mov r1, #0x1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #0x1
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldrh r1, [r4, #0x10]
mov r0, #0x0
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldrh r1, [r4, #0x12]
mov r0, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
add sp, #0x10
pop {r4, pc}
@@ -1381,7 +1381,7 @@ FUN_02063028: ; 0x02063028
ldr r0, [r0, #0x0]
add r1, #0xd4
mov r3, #0x4
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0x0
add r0, #0xd4
mov r1, #0xff
@@ -1494,7 +1494,7 @@ _02063094:
add r5, #0xd0
ldr r0, [r5, #0x0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r4-r7, pc}
.balign 4
@@ -1522,14 +1522,14 @@ FUN_02063178: ; 0x02063178
bl ListMenuItems_dtor
add r0, r4, #0x0
add r0, #0xd4
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0x0
add r0, #0xd4
mov r1, #0x0
bl FUN_0200CCF8
add r0, r4, #0x0
add r0, #0xd4
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xa6
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -1538,7 +1538,7 @@ FUN_02063178: ; 0x02063178
add r4, #0xd0
ldr r0, [r4, #0x0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r4, pc}
thumb_func_start FUN_020631C8
@@ -1866,7 +1866,7 @@ FUN_02063430: ; 0x02063430
ldr r0, [r0, #0x0]
add r1, #0xd4
mov r3, #0x4
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0x0
ldr r2, _020634D0 ; =0x000003D9
add r0, #0xd4
@@ -1897,7 +1897,7 @@ FUN_02063430: ; 0x02063430
add r0, #0xd0
ldr r0, [r0, #0x0]
mov r2, #0x3
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0x0
add r0, #0xf4
mov r1, #0x0
@@ -1916,7 +1916,7 @@ FUN_02063430: ; 0x02063430
add r4, #0xd0
ldr r0, [r4, #0x0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3-r4, pc}
nop
@@ -1929,20 +1929,20 @@ FUN_020634DC: ; 0x020634DC
push {r4, lr}
add r4, r0, #0x0
add r0, #0xd4
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0x0
add r0, #0xd4
mov r1, #0x0
bl FUN_0200CCF8
add r0, r4, #0x0
add r0, #0xd4
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0x0
add r0, #0xf4
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0x0
add r0, #0xf4
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xa6
lsl r0, r0, #0x2
ldr r0, [r4, r0]
diff --git a/arm9/asm/unk_0206367C.s b/arm9/asm/unk_0206367C.s
index 0696b4e4..b475c1e5 100644
--- a/arm9/asm/unk_0206367C.s
+++ b/arm9/asm/unk_0206367C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02063888.s b/arm9/asm/unk_02063888.s
index 19cd07cc..8bff30eb 100644
--- a/arm9/asm/unk_02063888.s
+++ b/arm9/asm/unk_02063888.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02063948.s b/arm9/asm/unk_02063948.s
index b111b655..1b2bc0a5 100644
--- a/arm9/asm/unk_02063948.s
+++ b/arm9/asm/unk_02063948.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020643C0.s b/arm9/asm/unk_020643C0.s
index 9215f816..4602fabf 100644
--- a/arm9/asm/unk_020643C0.s
+++ b/arm9/asm/unk_020643C0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020647A4.s b/arm9/asm/unk_020647A4.s
index 7476df71..8f0d664f 100644
--- a/arm9/asm/unk_020647A4.s
+++ b/arm9/asm/unk_020647A4.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -519,7 +519,7 @@ _02064B2E:
mov r1, #0x1
bl FUN_0205557C
ldr r0, _02064B6C ; =0x0000061A
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
@@ -636,7 +636,7 @@ _02064C24:
mov r1, #0x1
bl FUN_0205557C
ldr r0, _02064C60 ; =0x0000061A
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
@@ -661,11 +661,11 @@ FUN_02064C64: ; 0x02064C64
cmp r0, #0x0
bne _02064C72
ldr r0, _02064C7C ; =0x00000611
- bl FUN_020054C8
+ bl PlaySE
pop {r3, pc}
_02064C72:
ldr r0, _02064C80 ; =0x00000614
- bl FUN_020054C8
+ bl PlaySE
pop {r3, pc}
nop
_02064C7C: .word 0x00000611
diff --git a/arm9/asm/unk_02064CA8.s b/arm9/asm/unk_02064CA8.s
index c81aafec..31c9acf9 100644
--- a/arm9/asm/unk_02064CA8.s
+++ b/arm9/asm/unk_02064CA8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02064E20.s b/arm9/asm/unk_02064E20.s
index 0665d211..19ada5a3 100644
--- a/arm9/asm/unk_02064E20.s
+++ b/arm9/asm/unk_02064E20.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02064E90.s b/arm9/asm/unk_02064E90.s
index ca5edb45..ac7baa5d 100644
--- a/arm9/asm/unk_02064E90.s
+++ b/arm9/asm/unk_02064E90.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s
index df203337..8fa3df67 100644
--- a/arm9/asm/unk_020653EC.s
+++ b/arm9/asm/unk_020653EC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern UNK_020F96DC
@@ -43,7 +43,7 @@ FUN_020653EC: ; 0x020653EC
mov r0, #0x3
mov r1, #0x2b
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x6e
mov r0, #0x2b
lsl r1, r1, #0x2
@@ -111,7 +111,7 @@ FUN_02065474: ; 0x02065474
add r0, r4, #0x0
bl FreeToHeap
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
pop {r4, pc}
.balign 4
@@ -165,14 +165,14 @@ _020654EE:
add r0, r5, #0x0
bl FUN_02065FE4
ldr r0, _02065550 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
pop {r3-r5, pc}
_0206550A:
mov r0, #0x1
tst r0, r1
beq _02065542
ldr r0, _02065550 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0x1
mvn r1, r1
cmp r4, r1
@@ -268,14 +268,14 @@ FUN_020655B0: ; 0x020655B0
add r0, r4, #0x0
bl FUN_02065FE4
ldr r0, _02065644 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
pop {r4-r6, pc}
_020655DE:
mov r1, #0x1
tst r0, r1
beq _02065634
ldr r0, _02065644 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0x2
cmp r0, #0x5
bhi _0206562C
@@ -955,14 +955,14 @@ FUN_02065AF4: ; 0x02065AF4
add r1, r1, #0x4
ldr r2, _02065CD8 ; =UNK_020F7E7C
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r1, #0x17
lsl r1, r1, #0x4
ldr r0, [r5, r1]
add r1, #0x24
ldr r2, _02065CDC ; =UNK_020F7E84
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r5, r0
@@ -1144,7 +1144,7 @@ _02065C64:
lsl r0, r0, #0x4
ldr r0, [r5, r0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r1, _02065CF0 ; =0x0000013B
mov r0, #0xf
ldrb r2, [r5, r1]
@@ -1225,7 +1225,7 @@ FUN_02065D4C: ; 0x02065D4C
cmp r6, #0x0
bne _02065D7E
ldr r0, _02065DD4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02065D7E:
add r0, sp, #0x0
ldrh r0, [r0, #0x2]
@@ -1290,7 +1290,7 @@ FUN_02065DD8: ; 0x02065DD8
ldr r0, [r5, r0]
ldr r2, _02065EC8 ; =UNK_020F7E74
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r5, r0
@@ -1376,7 +1376,7 @@ _02065E14:
lsl r0, r0, #0x4
ldr r0, [r5, r0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r1, _02065EE0 ; =0x0000013B
mov r0, #0xf
ldrb r2, [r5, r1]
@@ -1401,7 +1401,7 @@ FUN_02065EE4: ; 0x02065EE4
cmp r2, #0x0
bne _02065EF0
ldr r0, _02065EF4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02065EF0:
pop {r3, pc}
nop
@@ -1426,7 +1426,7 @@ FUN_02065EF8: ; 0x02065EF8
mov r0, #0x65
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x65
lsl r0, r0, #0x2
add r0, r4, r0
@@ -1435,11 +1435,11 @@ FUN_02065EF8: ; 0x02065EF8
mov r0, #0x65
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r4, r0
@@ -1448,7 +1448,7 @@ FUN_02065EF8: ; 0x02065EF8
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, sp, #0x0
mov r1, #0x4f
ldrh r2, [r0, #0x2]
@@ -1471,7 +1471,7 @@ _02065F7C:
lsl r0, r0, #0x4
ldr r0, [r4, r0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x4
pop {r3-r4, pc}
@@ -1483,7 +1483,7 @@ FUN_02065F8C: ; 0x02065F8C
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r4, r0
@@ -1503,14 +1503,14 @@ FUN_02065F8C: ; 0x02065F8C
mov r0, #0x5d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0x0
bl FUN_020664D8
mov r0, #0x17
lsl r0, r0, #0x4
ldr r0, [r4, r0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x4
pop {r3-r4, pc}
.balign 4
@@ -2001,7 +2001,7 @@ FUN_02066334: ; 0x02066334
add r1, r4, r1
mov r2, #0x3
mov r3, #0x2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x61
lsl r0, r0, #0x2
add r0, r4, r0
@@ -2021,11 +2021,11 @@ FUN_020663D4: ; 0x020663D4
mov r0, #0x61
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x61
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x61
lsl r0, r0, #0x2
add r0, r4, r0
@@ -2068,7 +2068,7 @@ _02066426:
add r3, r2, #0x0
bl FillWindowPixelRect
mov r0, #0x1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0x0
bl FUN_02002B7C
cmp r4, #0x0
@@ -2151,7 +2151,7 @@ FUN_020664D8: ; 0x020664D8
mov r0, #0x61
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
pop {r4, pc}
thumb_func_start FUN_020664F4
diff --git a/arm9/asm/unk_02066840.s b/arm9/asm/unk_02066840.s
index e8495712..149a4d9e 100644
--- a/arm9/asm/unk_02066840.s
+++ b/arm9/asm/unk_02066840.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gGameLanguage
.extern gGameVersion
diff --git a/arm9/asm/unk_0206BB5C.s b/arm9/asm/unk_0206BB5C.s
index afcace47..2e0ebe1b 100644
--- a/arm9/asm/unk_0206BB5C.s
+++ b/arm9/asm/unk_0206BB5C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0206BF90.s b/arm9/asm/unk_0206BF90.s
index acf84738..b57de87c 100644
--- a/arm9/asm/unk_0206BF90.s
+++ b/arm9/asm/unk_0206BF90.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s
index 4ba1b745..e742f202 100644
--- a/arm9/asm/unk_0206C700.s
+++ b/arm9/asm/unk_0206C700.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern UNK_020FA6E8
@@ -113,7 +113,7 @@ FUN_0206C700: ; 0x0206C700
add r3, r5, #0x0
bl FUN_02003008
add r0, r5, #0x0
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x0]
add r0, r5, #0x0
mov r1, #0x1
@@ -144,7 +144,7 @@ FUN_0206C700: ; 0x0206C700
ldr r1, [r4, #0x4]
mov r2, #0x1
mov r3, #0x2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r4, #0x4]
mov r1, #0xff
bl FillWindowPixelBuffer
@@ -238,7 +238,7 @@ FUN_0206C700: ; 0x0206C700
mov r2, #0x0
bl FUN_0200CA44
mov r0, #0x1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
bl FUN_02033E74
add r0, r4, #0x0
add sp, #0x24
@@ -297,7 +297,7 @@ FUN_0206C92C: ; 0x0206C92C
bl Main_SetVBlankIntrCB
ldr r0, [r4, #0x4]
mov r1, #0x1
- bl FUN_020191A4
+ bl WindowArray_dtor
ldr r0, [r4, #0x14]
mov r1, #0x0
bl FUN_02003038
@@ -335,7 +335,7 @@ FUN_0206C92C: ; 0x0206C92C
add r0, r4, #0x0
bl FreeToHeap
mov r0, #0x0
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
pop {r4, pc}
thumb_func_start FUN_0206C9C0
@@ -738,7 +738,7 @@ _0206CCCE:
mov r3, #0x4
bl FUN_02007E68
ldr r0, [r4, #0x5c]
- bl FUN_02016AF8
+ bl GF_ExpHeap_FndGetTotalFreeSize
mov r1, #0x2
lsl r1, r1, #0xe
cmp r0, r1
@@ -746,7 +746,7 @@ _0206CCCE:
bl GF_AssertFail
_0206CD16:
ldr r0, _0206CE24 ; =0x000005F9
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
mov r1, #0x28
add r0, #0x66
@@ -811,7 +811,7 @@ _0206CD5A:
mov r1, #0xb
bl FUN_0206E0AC
ldr r0, _0206CE28 ; =0x000005FA
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
mov r1, #0x10
add r0, #0x70
@@ -892,7 +892,7 @@ _0206CE2C:
add r2, #0xf3
bl FUN_02007558
ldr r0, _0206D1C8 ; =0x000005FB
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
mov r1, #0x0
add r0, #0x70
@@ -968,7 +968,7 @@ _0206CEB0:
mov r3, #0x3
bl FUN_02007E98
ldr r0, _0206D1D4 ; =0x000005FC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
add r0, #0x64
ldrb r0, [r0, #0x0]
@@ -2280,7 +2280,7 @@ _0206D9C6:
ldmia r6!, {r0-r1}
stmia r3!, {r0-r1}
add r0, r2, #0x0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r6, _0206DC30 ; =UNK_020F837C
add r3, sp, #0x64
mov r2, #0xa
@@ -2295,26 +2295,26 @@ _0206DA26:
add r0, r4, #0x0
add r2, sp, #0x64
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0x0
mov r1, #0x2
add r2, sp, #0x80
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0x0
mov r1, #0x3
add r2, sp, #0x9c
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, _0206DC34 ; =0x04000008
mov r0, #0x3
ldrh r2, [r1, #0x0]
@@ -2338,10 +2338,10 @@ _0206DA26:
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r5, #0x2c]
bl Options_GetFrame
add r6, r0, #0x0
@@ -2538,16 +2538,16 @@ FUN_0206DC48: ; 0x0206DC48
bl GX_EngineAToggleLayers
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.balign 4
@@ -2644,7 +2644,7 @@ FUN_0206DD08: ; 0x0206DD08
ldr r0, [r4, #0x14]
bl FUN_0200372C
ldr r0, [r4, #0x0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _0206DD64 ; =0x027E0000
ldr r1, _0206DD68 ; =0x00003FF8
mov r0, #0x1
@@ -2723,7 +2723,7 @@ _0206DDE4:
b _0206DDFA
_0206DDEC:
ldr r0, _0206DE04 ; =0x000005E6
- bl FUN_020054C8
+ bl PlaySE
b _0206DDFA
_0206DDF4:
ldr r0, _0206DE08 ; =0x00000483
diff --git a/arm9/asm/unk_0206DE24.s b/arm9/asm/unk_0206DE24.s
index 3203cc10..46895ddb 100644
--- a/arm9/asm/unk_0206DE24.s
+++ b/arm9/asm/unk_0206DE24.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_GfdDefaultFuncAllocPlttVram
.extern NNS_GfdDefaultFuncAllocTexVram
diff --git a/arm9/asm/unk_0206E0F0.s b/arm9/asm/unk_0206E0F0.s
index d00119f8..909b7381 100644
--- a/arm9/asm/unk_0206E0F0.s
+++ b/arm9/asm/unk_0206E0F0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0206E2F0.s b/arm9/asm/unk_0206E2F0.s
deleted file mode 100644
index a1bf9798..00000000
--- a/arm9/asm/unk_0206E2F0.s
+++ /dev/null
@@ -1,375 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start BagView_new
-BagView_new: ; 0x0206E2F0
- push {r4, lr}
- mov r1, #0x78
- bl AllocFromHeap
- mov r1, #0x0
- mov r2, #0x78
- add r4, r0, #0x0
- bl memset
- add r0, r4, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0206E308
-FUN_0206E308: ; 0x0206E308
- mov r0, #0x78
- bx lr
-
- thumb_func_start FUN_0206E30C
-FUN_0206E30C: ; 0x0206E30C
- add r0, #0x65
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E314
-FUN_0206E314: ; 0x0206E314
- push {r4-r6, lr}
- add r4, r1, #0x0
- add r1, r2, #0x0
- add r5, r0, #0x0
- add r6, r3, #0x0
- bl FUN_0206E30C
- str r4, [r5, #0x0]
- str r6, [r5, #0x6c]
- mov r0, #0x0
- add r5, #0x66
- strh r0, [r5, #0x0]
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start BagView_setitem
-BagView_setitem: ; 0x0206E330
- push {r3-r4}
- mov r4, #0xc
- mul r4, r3
- add r0, r0, r4
- str r1, [r0, #0x4]
- strb r2, [r0, #0xc]
- pop {r3-r4}
- bx lr
-
- thumb_func_start FUN_0206E340
-FUN_0206E340: ; 0x0206E340
- add r1, r0, #0x0
- add r1, #0x76
- ldrh r2, [r1, #0x0]
- mov r1, #0x1
- add r0, #0x76
- bic r2, r1
- mov r1, #0x1
- orr r1, r2
- strh r1, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_0206E354
-FUN_0206E354: ; 0x0206E354
- str r1, [r0, #0x70]
- bx lr
-
- thumb_func_start FUN_0206E358
-FUN_0206E358: ; 0x0206E358
- add r0, #0x74
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E360
-FUN_0206E360: ; 0x0206E360
- add r2, r0, #0x0
- add r2, #0x76
- ldrh r3, [r2, #0x0]
- ldr r2, _0206E378 ; =0xFFFF0001
- lsl r1, r1, #0x11
- and r2, r3
- lsr r1, r1, #0x10
- orr r1, r2
- add r0, #0x76
- strh r1, [r0, #0x0]
- bx lr
- nop
-_0206E378: .word 0xFFFF0001
-
- thumb_func_start FUN_0206E37C
-FUN_0206E37C: ; 0x0206E37C
- add r0, #0x66
- ldrh r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E384
-FUN_0206E384: ; 0x0206E384
- add r0, #0x68
- ldrh r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E38C
-FUN_0206E38C: ; 0x0206E38C
- add r0, #0x74
- ldrb r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E394
-FUN_0206E394: ; 0x0206E394
- add r0, #0x75
- ldrb r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E39C
-FUN_0206E39C: ; 0x0206E39C
- push {r3, lr}
- bl Sav2_PlayerData_GetCoinsAddr
- bl CheckCoins
- pop {r3, pc}
-
- thumb_func_start FUN_0206E3A8
-FUN_0206E3A8: ; 0x0206E3A8
- push {r4-r6, lr}
- bl Sav2_SealCase_get
- add r6, r0, #0x0
- mov r5, #0x0
- mov r4, #0x1
-_0206E3B4:
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl FUN_02029E2C
- add r4, r4, #0x1
- add r5, r5, r0
- cmp r4, #0x50
- bls _0206E3B4
- add r0, r5, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0206E3C8
-FUN_0206E3C8: ; 0x0206E3C8
- push {r3, lr}
- bl FUN_02027E24
- bl FUN_0202708C
- bl FUN_02027168
- pop {r3, pc}
-
- thumb_func_start FUN_0206E3D8
-FUN_0206E3D8: ; 0x0206E3D8
- push {r3, lr}
- bl FUN_02027E24
- bl FUN_0202708C
- bl FUN_02027184
- pop {r3, pc}
-
- thumb_func_start FUN_0206E3E8
-FUN_0206E3E8: ; 0x0206E3E8
- push {r3, lr}
- bl SaveStruct23_GetSubstruct2
- mov r1, #0x0
- add r2, r1, #0x0
- bl SaveStruct23_Substruct2_SetField_0x0
- pop {r3, pc}
-
- thumb_func_start FUN_0206E3F8
-FUN_0206E3F8: ; 0x0206E3F8
- push {r4-r7, lr}
- sub sp, #0xc
- add r7, r0, #0x0
- str r1, [sp, #0x8]
- add r5, r2, #0x0
- add r4, r3, #0x0
- mov r0, #0x0
- mov r1, #0x1a
- mov r2, #0x7
- bl NewMsgDataFromNarc
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScrStrBufs_new
- add r4, r0, #0x0
- cmp r5, #0x0
- bne _0206E428
- add r0, r6, #0x0
- mov r1, #0x63
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- b _0206E4FA
-_0206E428:
- mov r1, #0x1b
- lsl r1, r1, #0x4 ; ITEM_POINT_CARD
- cmp r5, r1
- bne _0206E454
- add r0, r6, #0x0
- mov r1, #0x61
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- add r0, r7, #0x0
- bl FUN_0206E3E8
- mov r1, #0x0
- add r2, r0, #0x0
- str r1, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r3, #0x4
- bl BufferIntegerAsString
- b _0206E4FA
-_0206E454:
- add r2, r1, #0x2 ; ITEM_SEAL_CASE
- cmp r5, r2
- bne _0206E47E
- add r0, r6, #0x0
- mov r1, #0x5c
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- add r0, r7, #0x0
- bl FUN_0206E3A8
- mov r1, #0x0
- add r2, r0, #0x0
- str r1, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r3, #0x4
- bl BufferIntegerAsString
- b _0206E4FA
-_0206E47E:
- add r2, r1, #0x3 ; ITEM_FASHION_CASE
- cmp r5, r2
- bne _0206E4C0
- add r0, r6, #0x0
- mov r1, #0x5d
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- add r0, r7, #0x0
- bl FUN_0206E3C8
- mov r1, #0x0
- add r2, r0, #0x0
- str r1, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r3, #0x3
- bl BufferIntegerAsString
- add r0, r7, #0x0
- bl FUN_0206E3D8
- add r2, r0, #0x0
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r1, #0x1
- add r0, r4, #0x0
- mov r3, #0x2
- str r1, [sp, #0x4]
- bl BufferIntegerAsString
- b _0206E4FA
-_0206E4C0:
- add r1, #0xc ; ITEM_COIN_CASE
- cmp r5, r1
- bne _0206E4EA
- add r0, r6, #0x0
- mov r1, #0x39
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- add r0, r7, #0x0
- bl FUN_0206E39C
- mov r1, #0x0
- add r2, r0, #0x0
- str r1, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r3, #0x5
- bl BufferIntegerAsString
- b _0206E4FA
-_0206E4EA:
- bl ScrStrBufs_delete
- add r0, r6, #0x0
- bl DestroyMsgData
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0206E4FA:
- ldr r1, [sp, #0x8]
- add r0, r4, #0x0
- add r2, r5, #0x0
- bl StringExpandPlaceholders
- add r0, r5, #0x0
- bl String_dtor
- add r0, r4, #0x0
- bl ScrStrBufs_delete
- add r0, r6, #0x0
- bl DestroyMsgData
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0206E51C
-FUN_0206E51C: ; 0x0206E51C
- push {r3-r7, lr}
- add r5, r1, #0x0
- str r0, [sp, #0x0]
- ldr r4, [sp, #0x18]
- cmp r3, #0x1
- beq _0206E52E
- cmp r3, #0x2
- beq _0206E54C
- b _0206E56A
-_0206E52E:
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0x7
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r4, r0, #0x0
- mov r1, #0x38
- add r2, r5, #0x0
- bl ReadMsgDataIntoString
- add r0, r4, #0x0
- bl DestroyMsgData
- pop {r3-r7, pc}
-_0206E54C:
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0x7
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r4, r0, #0x0
- mov r1, #0x6f
- add r2, r5, #0x0
- bl ReadMsgDataIntoString
- add r0, r4, #0x0
- bl DestroyMsgData
- pop {r3-r7, pc}
-_0206E56A:
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0xc7
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r7, r0, #0x0
- add r0, r4, #0x0
- bl ScrStrBufs_new
- add r4, r0, #0x0
- add r0, r7, #0x0
- mov r1, #0x24
- bl NewString_ReadMsgData
- add r6, r0, #0x0
- ldr r2, [sp, #0x0]
- add r0, r4, #0x0
- mov r1, #0x0
- bl BufferPlayersName
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl StringExpandPlaceholders
- add r0, r6, #0x0
- bl String_dtor
- add r0, r4, #0x0
- bl ScrStrBufs_delete
- add r0, r7, #0x0
- bl DestroyMsgData
- pop {r3-r7, pc}
- .balign 4
diff --git a/arm9/asm/unk_0206F1F0.s b/arm9/asm/unk_0206F1F0.s
index cdb5db18..64da364f 100644
--- a/arm9/asm/unk_0206F1F0.s
+++ b/arm9/asm/unk_0206F1F0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -203,7 +203,7 @@ _0206F34A:
ldr r2, _0206F388 ; =0x00040100
mov r0, #0x3
mov r1, #0x36
- bl FUN_0201681C
+ bl CreateHeap
bl FUN_02088878
mov r0, #0x36
bl MOD07_02211E60
diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s
index 17adb2d2..c504af1a 100644
--- a/arm9/asm/unk_0206F3FC.s
+++ b/arm9/asm/unk_0206F3FC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern gMain
@@ -143,12 +143,12 @@ FUN_0206F3FC: ; 0x0206F3FC
strh r1, [r3, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x2
mov r0, #0x3
mov r1, #0xc
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
bl FUN_0206FE74
add r4, r0, #0x0
@@ -774,7 +774,7 @@ _0206F914:
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
ldr r0, _0206F974 ; =0x000006FC
mov r1, #0x0
ldr r0, [r4, r0]
@@ -837,7 +837,7 @@ FUN_0206F9A4: ; 0x0206F9A4
tst r0, r1
beq _0206F9BA
ldr r0, _0206F9C4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x1b
pop {r3, pc}
_0206F9BA:
@@ -1022,7 +1022,7 @@ _0206FB30:
ldr r0, [sp, #0x0]
bl OverlayManager_FreeData
mov r0, #0xc
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r7, pc}
.balign 4
@@ -1037,7 +1037,7 @@ _0206FB54: .word 0x00000B34
FUN_0206FB58: ; 0x0206FB58
push {r3, lr}
ldr r0, [r0, #0x0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
bl FUN_0200BC30
ldr r3, _0206FB78 ; =0x027E0000
@@ -1083,7 +1083,7 @@ FUN_0206FBA0: ; 0x0206FBA0
ldmia r5!, {r0-r1}
stmia r3!, {r0-r1}
add r0, r2, #0x0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _0206FCBC ; =UNK_020F94D4
add r3, sp, #0x8c
ldmia r5!, {r0-r1}
@@ -1098,10 +1098,10 @@ FUN_0206FBA0: ; 0x0206FBA0
str r0, [r3, #0x0]
add r0, r4, #0x0
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0206FCC0 ; =UNK_020F94F0
add r3, sp, #0x70
ldmia r5!, {r0-r1}
@@ -1116,10 +1116,10 @@ FUN_0206FBA0: ; 0x0206FBA0
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0206FCC4 ; =UNK_020F949C
add r3, sp, #0x54
ldmia r5!, {r0-r1}
@@ -1134,10 +1134,10 @@ FUN_0206FBA0: ; 0x0206FBA0
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0206FCC8 ; =UNK_020F9480
add r3, sp, #0x38
ldmia r5!, {r0-r1}
@@ -1152,7 +1152,7 @@ FUN_0206FBA0: ; 0x0206FBA0
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _0206FCCC ; =UNK_020F950C
add r3, sp, #0x1c
ldmia r5!, {r0-r1}
@@ -1167,10 +1167,10 @@ FUN_0206FBA0: ; 0x0206FBA0
add r0, r4, #0x0
mov r1, #0x4
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0206FCD0 ; =UNK_020F9528
add r3, sp, #0x0
ldmia r5!, {r0-r1}
@@ -1185,17 +1185,17 @@ FUN_0206FBA0: ; 0x0206FBA0
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x0
mov r1, #0x20
add r2, r0, #0x0
mov r3, #0xc
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x4
mov r1, #0x20
mov r2, #0x0
mov r3, #0xc
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0xb8
pop {r3-r5, pc}
nop
@@ -1219,22 +1219,22 @@ FUN_0206FCD4: ; 0x0206FCD4
bl GX_EngineBToggleLayers
add r0, r4, #0x0
mov r1, #0x5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0xc
add r1, r4, #0x0
bl FreeToHeapExplicit
@@ -1282,7 +1282,7 @@ FUN_0206FD24: ; 0x0206FD24
mov r3, #0x0
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
ldr r1, [sp, #0x10]
ldr r0, _0206FE6C ; =0x000004A4
ldr r1, [r1, #0xc]
@@ -1382,10 +1382,10 @@ FUN_0206FD24: ; 0x0206FD24
bl FUN_020724D4
mov r0, #0x0
add r1, r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x4
mov r1, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x14
pop {r4-r5, pc}
.balign 4
@@ -1408,7 +1408,7 @@ FUN_0206FE74: ; 0x0206FE74
ldr r1, _0206FF54 ; =0x000005A4
str r0, [r6, r1]
mov r0, #0xc
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r6, #0x0]
ldr r0, _0206FF54 ; =0x000005A4
ldr r1, [r6, r0]
@@ -2090,7 +2090,7 @@ _020703F2:
mov r1, #0x2
add r2, r6, #0x0
add r3, r7, #0x0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
add r0, sp, #0x20
ldrb r0, [r0, #0x10]
cmp r0, #0x0
@@ -2111,7 +2111,7 @@ _020703F2:
mov r1, #0x2
mov r2, #0x17
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
_0207044C:
mov r0, #0x10
str r0, [sp, #0x0]
@@ -2125,7 +2125,7 @@ _0207044C:
mov r1, #0x2
add r2, r6, #0x0
add r3, r7, #0x0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_020709FC
@@ -2185,10 +2185,10 @@ _020704CC:
_020704D2:
ldr r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x0]
mov r1, #0x4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r4, pc}
.balign 4
_020704E4: .word 0x000005A4
@@ -2775,7 +2775,7 @@ FUN_02070988: ; 0x02070988
mov r1, #0x2
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
mov r0, #0x10
str r0, [sp, #0x0]
mov r0, #0x6
@@ -2788,7 +2788,7 @@ FUN_02070988: ; 0x02070988
mov r1, #0x2
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r5, #0x0
add r1, r7, #0x0
mov r2, #0x7
@@ -2868,7 +2868,7 @@ _02070A60:
mov r0, #0x2
mov r2, #0x10
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
pop {r4-r6, pc}
.balign 4
_02070A78: .word 0x000005A4
@@ -3138,7 +3138,7 @@ _02070C6E:
mov r2, #0x1
bl FUN_020713EC
ldr r0, _02070CD8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
cmp r4, #0x6
bhs _02070CA6
add r0, r5, #0x0
@@ -3147,7 +3147,7 @@ _02070C6E:
bl FUN_020717E8
ldr r0, [r5, #0x0]
mov r1, #0x4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_02070CA6:
cmp r4, #0x6
beq _02070CB2
@@ -3338,7 +3338,7 @@ _02070DCC:
add r0, r0, #0x1
strb r1, [r5, r0]
ldr r0, _02070E58 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
cmp r4, #0x6
beq _02070E3C
cmp r4, #0x7
@@ -3433,7 +3433,7 @@ _02070ECC:
bl FUN_020717E8
ldr r0, [r5, #0x0]
mov r1, #0x4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_02070EFE:
add sp, #0x10
pop {r4-r6, pc}
@@ -3480,7 +3480,7 @@ _02070F30:
bl FUN_020717E8
ldr r0, [r4, #0x0]
mov r1, #0x4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #0xb2
lsl r0, r0, #0x4
ldrb r1, [r4, r0]
@@ -3495,7 +3495,7 @@ _02070F70:
bl FUN_020717E8
ldr r0, [r4, #0x0]
mov r1, #0x4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #0xb2
mov r1, #0x0
lsl r0, r0, #0x4
@@ -3525,7 +3525,7 @@ _02070FAE:
cmp r1, #0x7
bne _02070FC6
ldr r0, _020710B4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _020710B8 ; =0x00000B23
ldrb r0, [r4, r0]
lsl r0, r0, #0x18
@@ -3544,7 +3544,7 @@ _02070FC6:
bne _02070FE0
_02070FD6:
ldr r0, _020710B4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x0
pop {r4, pc}
_02070FE0:
@@ -3562,12 +3562,12 @@ _02070FE8:
cmp r0, #0x0
bne _02071002
ldr r0, _020710B4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x0
pop {r4, pc}
_02071002:
ldr r0, _020710C0 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x5
pop {r4, pc}
_0207100C:
@@ -3582,19 +3582,19 @@ _0207100C:
cmp r1, #0x0
bne _02071030
add r0, #0x38
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_020710C4
mov r0, #0x0
pop {r4, pc}
_02071030:
add r0, #0x4e
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x5
pop {r4, pc}
_0207103A:
add r0, #0x38
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_020710C4
mov r0, #0x0
@@ -3611,7 +3611,7 @@ _0207104A:
lsr r0, r0, #0x1f
bne _0207106E
ldr r0, _020710B4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _020710B0 ; =0x00000B25
mov r1, #0x7
strb r1, [r4, r0]
@@ -3645,7 +3645,7 @@ _0207108E:
cmp r1, #0x0
beq _020710AA
ldr r0, _020710C0 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x5
_020710AA:
pop {r4, pc}
@@ -4210,7 +4210,7 @@ FUN_020714D0: ; 0x020714D0
tst r1, r2
beq _0207150C
ldr r0, _02071554 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02071558 ; =0x00000B25
ldrb r1, [r4, r0]
cmp r1, #0x6
@@ -4236,7 +4236,7 @@ _0207150C:
tst r1, r2
beq _02071522
ldr r0, _02071554 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_02074538
mov r0, #0x3
@@ -4348,7 +4348,7 @@ _020715EA:
mov r1, #0x13
strb r1, [r4, r0]
ldr r0, _02071740 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x14
pop {r3-r5, pc}
@@ -4419,7 +4419,7 @@ _02071630:
mov r1, #0x13
strb r1, [r4, r0]
ldr r0, _02071740 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x14
pop {r3-r5, pc}
@@ -4432,7 +4432,7 @@ _02071692:
mov r1, #0x13
strb r1, [r4, r0]
ldr r0, _02071740 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x14
pop {r3-r5, pc}
@@ -4445,7 +4445,7 @@ _020716AE:
mov r1, #0x13
strb r1, [r4, r0]
ldr r0, _02071740 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x14
pop {r3-r5, pc}
@@ -4474,7 +4474,7 @@ _020716EA:
mov r1, #0x13
strb r1, [r4, r0]
ldr r0, _02071740 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x14
pop {r3-r5, pc}
@@ -4487,7 +4487,7 @@ _02071706:
mov r1, #0x13
strb r1, [r4, r0]
ldr r0, _02071740 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x14
pop {r3-r5, pc}
@@ -4498,7 +4498,7 @@ _02071722:
add r0, #0x38
add r1, #0x23
strb r2, [r1, #0x0]
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x1b
add sp, #0x8
pop {r3-r5, pc}
@@ -4602,7 +4602,7 @@ FUN_020717E8: ; 0x020717E8
add r5, r1, #0x0
add r4, r2, #0x0
mov r1, #0x4
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
lsl r1, r5, #0x1
mov r3, #0x19
add r5, r4, #0x0
@@ -4696,7 +4696,7 @@ _02071886:
ldrh r2, [r3, #0x1c]
ldrh r3, [r3, #0x1e]
mov r1, #0x4
- bl FUN_0201AFBC
+ bl DoesPixelAtScreenXYMatchPtrVal
cmp r0, #0x0
bne _020718BA
mov r0, #0x0
@@ -4831,7 +4831,7 @@ _02071994:
cmp r1, #0x6
blo _020719B8
ldr r0, _02071C20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_02074538
add sp, #0x8
@@ -4848,7 +4848,7 @@ _020719B8:
b _02071A26
_020719CA:
ldr r0, _02071C24 ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02071C28 ; =0x000005C8
mov r1, #0x1
ldr r0, [r4, r0]
@@ -4879,7 +4879,7 @@ _020719FA:
b _02071A26
_02071A08:
ldr r0, _02071C20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02071C18 ; =0x00000B2A
mov r1, #0x1
strh r1, [r4, r0]
@@ -4888,7 +4888,7 @@ _02071A08:
pop {r4-r6, pc}
_02071A1A:
ldr r0, _02071C34 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x1a
pop {r4-r6, pc}
@@ -4899,7 +4899,7 @@ _02071A26:
tst r0, r1
beq _02071A42
ldr r0, _02071C20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_02074538
add sp, #0x8
@@ -4936,7 +4936,7 @@ _02071A7A:
b _02071C12
_02071A7C:
ldr r0, _02071C24 ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02071C28 ; =0x000005C8
mov r1, #0x1
ldr r0, [r4, r0]
@@ -4974,7 +4974,7 @@ _02071ABA:
pop {r4-r6, pc}
_02071AC6:
ldr r0, _02071C34 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
mov r0, #0x1a
pop {r4-r6, pc}
@@ -4987,7 +4987,7 @@ _02071AD2:
b _02071C12
_02071ADE:
ldr r0, _02071C20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x89
lsl r0, r0, #0x2
add r0, r4, r0
@@ -5016,7 +5016,7 @@ _02071B0C:
cmp r0, #0x1
bne _02071C12
ldr r0, _02071C24 ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02071C18 ; =0x00000B2A
mov r1, #0x3
strh r1, [r4, r0]
@@ -5107,7 +5107,7 @@ _02071BE0:
tst r0, r1
beq _02071C12
ldr r0, _02071C20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x89
lsl r0, r0, #0x2
add r0, r4, r0
@@ -5284,7 +5284,7 @@ FUN_02071D48: ; 0x02071D48
lsr r0, r0, #0x1f
bne _02071D92
ldr r0, _02071DE8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x3
pop {r4, pc}
_02071D72:
@@ -5297,12 +5297,12 @@ _02071D72:
cmp r0, #0x0
bne _02071D8C
ldr r0, _02071DE8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x0
pop {r4, pc}
_02071D8C:
ldr r0, _02071DEC ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
_02071D92:
mov r0, #0x5
pop {r4, pc}
@@ -5316,7 +5316,7 @@ _02071D96:
lsr r0, r0, #0x1f
bne _02071DB6
ldr r0, _02071DE8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02071DE4 ; =0x00000B25
mov r1, #0x7
strb r1, [r4, r0]
@@ -5340,7 +5340,7 @@ _02071DBA:
cmp r1, #0x0
beq _02071DDE
ldr r0, _02071DEC ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x5
_02071DDE:
pop {r4, pc}
diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s
index a08d279d..92121142 100644
--- a/arm9/asm/unk_02072548.s
+++ b/arm9/asm/unk_02072548.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -81,31 +81,31 @@ FUN_02072548: ; 0x02072548
add r5, r1, #0x0
add r4, r2, #0x0
add r6, r0, #0x0
- bl FUN_02019150
+ bl AddWindow
add r1, r5, #0x0
add r2, r4, #0x0
add r0, r6, #0x0
add r1, #0x10
add r2, #0x8
- bl FUN_02019150
+ bl AddWindow
add r1, r5, #0x0
add r2, r4, #0x0
add r0, r6, #0x0
add r1, #0x20
add r2, #0x10
- bl FUN_02019150
+ bl AddWindow
add r1, r5, #0x0
add r2, r4, #0x0
add r0, r6, #0x0
add r1, #0x30
add r2, #0x18
- bl FUN_02019150
+ bl AddWindow
add r5, #0x40
add r4, #0x20
add r0, r6, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
- bl FUN_02019150
+ bl AddWindow
pop {r4-r6, pc}
.balign 4
@@ -203,7 +203,7 @@ _02072632:
lsl r1, r1, #0x2
ldr r0, [r5, #0x0]
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
b _02072668
_0207265A:
mov r1, #0x7d
@@ -211,44 +211,44 @@ _0207265A:
ldr r0, [r5, #0x0]
ldr r2, _020726D4 ; =UNK_020F9724
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
_02072668:
mov r1, #0x79
lsl r1, r1, #0x2
ldr r0, [r5, #0x0]
ldr r2, _020726D8 ; =UNK_020F972C
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r1, #0x81
lsl r1, r1, #0x2
ldr r0, [r5, #0x0]
ldr r2, _020726DC ; =UNK_020F9734
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r1, #0x85
lsl r1, r1, #0x2
ldr r0, [r5, #0x0]
ldr r2, _020726E0 ; =UNK_020F973C
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r1, #0x89
lsl r1, r1, #0x2
ldr r0, [r5, #0x0]
ldr r2, _020726E4 ; =UNK_020F9744
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r1, #0x8d
lsl r1, r1, #0x2
ldr r0, [r5, #0x0]
ldr r2, _020726E8 ; =UNK_020F974C
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r1, #0x91
lsl r1, r1, #0x2
ldr r0, [r5, #0x0]
ldr r2, _020726EC ; =UNK_020F9754
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
add sp, #0x8
pop {r3-r5, pc}
.balign 4
@@ -274,7 +274,7 @@ FUN_020726F0: ; 0x020726F0
_020726F8:
lsl r0, r5, #0x4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0x1
lsl r0, r0, #0x10
lsr r5, r0, #0x10
@@ -283,11 +283,11 @@ _020726F8:
mov r4, #0x95
lsl r4, r4, #0x2
add r0, r6, r4
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x1
bne _0207271E
add r0, r6, r4
- bl FUN_02019178
+ bl RemoveWindow
_0207271E:
pop {r4-r6, pc}
@@ -450,7 +450,7 @@ FUN_02072844: ; 0x02072844
ldr r0, [r5, #0x0]
add r1, r5, r1
mov r3, #0x13
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [sp, #0x14]
mov r1, #0xc
bl ListMenuItems_ctor
@@ -708,7 +708,7 @@ FUN_02072A54: ; 0x02072A54
cmp r0, #0x1
bne _02072A9C
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3-r7, pc}
_02072A9C:
@@ -766,7 +766,7 @@ _02072ADC:
bl AddTextPrinterParameterized2
_02072B0A:
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3-r7, pc}
.balign 4
@@ -794,7 +794,7 @@ FUN_02072B20: ; 0x02072B20
cmp r1, #0x7
beq _02072B4C
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, pc}
_02072B4C:
@@ -814,7 +814,7 @@ _02072B4C:
mov r3, #0x3
bl FUN_0200BA78
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, pc}
nop
@@ -847,7 +847,7 @@ FUN_02072B7C: ; 0x02072B7C
mov r3, #0x1
bl FUN_0200B9EC
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r4-r5, pc}
.balign 4
@@ -872,7 +872,7 @@ FUN_02072BBC: ; 0x02072BBC
add r3, r1, #0x0
bl FillWindowPixelRect
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x8
pop {r3-r5, pc}
@@ -903,7 +903,7 @@ FUN_02072BE8: ; 0x02072BE8
mov r3, #0x0
bl FUN_0200B9EC
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r4-r5, pc}
.balign 4
@@ -948,7 +948,7 @@ _02072C64: ; jump table (using 16-bit offset)
.short _02072C78 - _02072C64 - 2; case 4
_02072C6E:
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r4-r7, pc}
_02072C78:
@@ -961,7 +961,7 @@ _02072C78:
add r1, r5, r1
mov r2, #0x4
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
b _02072CBE
_02072C90:
ldrb r3, [r4, #0x9]
@@ -973,7 +973,7 @@ _02072C90:
add r1, r5, r1
mov r2, #0x4
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
b _02072CBE
_02072CA8:
ldrb r3, [r4, #0x9]
@@ -985,7 +985,7 @@ _02072CA8:
add r1, r5, r1
mov r2, #0x4
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
_02072CBE:
ldr r0, [sp, #0x8]
ldrh r1, [r7, r6]
@@ -1018,7 +1018,7 @@ _02072CBE:
mov r3, #0x5
bl FillWindowPixelRect
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r4-r7, pc}
.balign 4
@@ -1081,17 +1081,17 @@ FUN_02072D1C: ; 0x02072D1C
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x4]
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x8]
add r0, r7, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x10]
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x14]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3-r7, pc}
_02072DB0:
@@ -1122,22 +1122,22 @@ FUN_02072DDC: ; 0x02072DDC
add r1, r5, #0x4
lsl r0, r4, #0x4
add r0, r1, r0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0x1
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0x2
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0x3
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r3-r5, pc}
thumb_func_start FUN_02072E14
@@ -1149,22 +1149,22 @@ FUN_02072E14: ; 0x02072E14
add r1, r5, #0x4
lsl r0, r4, #0x4
add r0, r1, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x1
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x2
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x3
add r1, r5, #0x4
lsl r0, r0, #0x4
add r0, r1, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
pop {r3-r5, pc}
thumb_func_start FUN_02072E4C
@@ -1501,7 +1501,7 @@ FUN_02073094: ; 0x02073094
mov r0, #0x79
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_020730FE:
mov r0, #0x2
tst r0, r4
@@ -1535,7 +1535,7 @@ _020730FE:
mov r0, #0x7d
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_02073148:
add sp, #0x10
pop {r3-r5, pc}
@@ -1586,7 +1586,7 @@ _02073198:
mov r1, #0x1
bl AddTextPrinterParameterized
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r3-r6, pc}
.balign 4
@@ -1658,7 +1658,7 @@ FUN_0207322C: ; 0x0207322C
sub sp, #0xc
add r4, r0, #0x0
mov r0, #0x1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0x0
bl FUN_02002B7C
ldr r0, _0207326C ; =0x000005A4
@@ -1713,7 +1713,7 @@ _020732A0:
pop {r3, pc}
_020732A6:
ldr r0, _020732C4 ; =0x000005E6
- bl FUN_020054C8
+ bl PlaySE
b _020732BE
_020732AE:
ldr r0, _020732C8 ; =0x00000483
@@ -1797,7 +1797,7 @@ _02073332:
ldr r0, [sp, #0x10]
bl String_dtor
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4-r7, pc}
nop
@@ -1860,7 +1860,7 @@ _020733B4:
ldr r0, [sp, #0x10]
bl String_dtor
add r0, r4, r7
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4-r7, pc}
.balign 4
@@ -1908,7 +1908,7 @@ _02073416:
add r0, r5, #0x0
bl String_dtor
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3-r7, pc}
.balign 4
@@ -1966,7 +1966,7 @@ _02073490:
add r0, r5, #0x0
bl String_dtor
add r0, r4, r7
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3-r7, pc}
.balign 4
@@ -2034,7 +2034,7 @@ FUN_020734C0: ; 0x020734C0
add r1, #0x14
ldr r0, [r5, #0x0]
add r1, r5, r1
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x95
lsl r0, r0, #0x2
mov r1, #0x1
@@ -2133,7 +2133,7 @@ _0207356C:
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x2c
pop {r4-r7, pc}
.balign 4
@@ -2220,7 +2220,7 @@ _0207366E:
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4-r7, pc}
nop
@@ -2240,5 +2240,5 @@ FUN_020736F4: ; 0x020736F4
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
diff --git a/arm9/asm/unk_02073710.s b/arm9/asm/unk_02073710.s
index 8aac6df0..83751041 100644
--- a/arm9/asm/unk_02073710.s
+++ b/arm9/asm/unk_02073710.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s
index 9cac1662..8a959bef 100644
--- a/arm9/asm/unk_02073DA8.s
+++ b/arm9/asm/unk_02073DA8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -39,7 +39,7 @@ FUN_02073DB4: ; 0x02073DB4
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
ldr r0, _02073DEC ; =0x000006FC
mov r1, #0x0
ldr r0, [r4, r0]
@@ -50,7 +50,7 @@ FUN_02073DB4: ; 0x02073DB4
mov r0, #0x95
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
.balign 4
_02073DEC: .word 0x000006FC
@@ -994,11 +994,11 @@ _020745DA:
strb r1, [r6, r0]
ldr r0, [r6, #0x0]
mov r1, #0x2
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
str r0, [sp, #0x14]
ldr r0, [r6, #0x0]
mov r1, #0x1
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r1, _020746B4 ; =0x00000B0C
str r0, [sp, #0x10]
ldrb r3, [r6, r1]
@@ -1127,7 +1127,7 @@ _020746F2: ; jump table (using 16-bit offset)
_020746FC:
mov r0, #0x6a
lsl r0, r0, #0x4
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207482C ; =0x00000305
mov r1, #0x1
strb r1, [r4, r0]
@@ -1155,10 +1155,10 @@ _0207470C:
bl FUN_0207499C
ldr r0, [r5, #0x0]
mov r1, #0x2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x0]
mov r1, #0x1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, _02074838 ; =0x00000306
ldrb r1, [r4, r0]
cmp r1, #0x10
@@ -1171,7 +1171,7 @@ _0207475C:
bl FUN_02074AF4
mov r0, #0x6a
lsl r0, r0, #0x4
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207482C ; =0x00000305
mov r1, #0x3
strb r1, [r4, r0]
@@ -1206,10 +1206,10 @@ _02074770:
bl FUN_0207499C
ldr r0, [r5, #0x0]
mov r1, #0x2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x0]
mov r1, #0x1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, _02074838 ; =0x00000306
ldrb r1, [r4, r0]
cmp r1, #0x0
@@ -1303,7 +1303,7 @@ FUN_02074848: ; 0x02074848
ldr r3, [sp, #0x20]
mov r1, #0x2
mov r2, #0x0
- bl FUN_02018540
+ bl FillBgTilemapRect
str r6, [sp, #0x0]
mov r1, #0x10
str r1, [sp, #0x4]
@@ -1314,7 +1314,7 @@ FUN_02074848: ; 0x02074848
ldr r3, [sp, #0x20]
mov r1, #0x1
mov r2, #0x0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x1c]
add r1, r4, r0
ldr r0, _02074994 ; =0x00000302
@@ -1345,7 +1345,7 @@ FUN_02074848: ; 0x02074848
ldr r2, [sp, #0x20]
mov r1, #0x2
add r3, r6, #0x0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, _02074998 ; =0x00000306
mov r3, #0x10
ldrb r2, [r4, r0]
@@ -1368,7 +1368,7 @@ FUN_02074848: ; 0x02074848
ldr r2, [sp, #0x20]
mov r1, #0x1
add r3, r6, #0x0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
add sp, #0x28
pop {r3-r7, pc}
_02074918:
@@ -1399,7 +1399,7 @@ _02074918:
mov r1, #0x2
lsr r2, r2, #0x18
add r3, r6, #0x0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, _02074998 ; =0x00000306
ldrb r2, [r4, r0]
mov r0, #0x10
@@ -1426,7 +1426,7 @@ _02074918:
mov r1, #0x1
lsr r2, r2, #0x18
add r3, r6, #0x0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
add sp, #0x28
pop {r3-r7, pc}
nop
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index 9e2ab9b0..ee3ba62f 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -1020,7 +1020,7 @@ FUN_02075D20: ; 0x02075D20
mov r2, #0x1
bl FUN_020731E8
ldr r0, _02075DB4 ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _02075DB8 ; =FUN_02075CE4
ldr r0, _02075DBC ; =0x00000B14
str r1, [r5, r0]
@@ -1349,7 +1349,7 @@ _02076062:
ldr r0, _02076098 ; =0x00000B14
str r1, [r5, r0]
ldr r0, _0207609C ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x5
add sp, #0xc
pop {r4-r7, pc}
@@ -1634,7 +1634,7 @@ _02076212:
mov r2, #0x1
bl FUN_02073CB4
ldr r0, _020763FC ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
sub r0, r7, #0x3
ldrb r1, [r4, r0]
add r1, r1, #0x1
@@ -1712,7 +1712,7 @@ _02076360:
tst r0, r1
beq _020763D6
ldr r0, _02076408 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _020763E0 ; =0x00000B25
ldrb r5, [r4, r0]
add r0, r4, #0x0
@@ -2011,7 +2011,7 @@ _02076612:
tst r0, r1
beq _020766A8
ldr r0, _02076874 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_020734C0
ldr r0, _0207686C ; =0x00000B27
@@ -2025,7 +2025,7 @@ _0207663C:
tst r0, r1
beq _020766A8
ldr r0, _02076874 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207363C
ldr r0, _0207686C ; =0x00000B27
@@ -2039,7 +2039,7 @@ _0207665A:
tst r0, r1
beq _020766A8
ldr r0, _02076874 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_020736F4
ldr r0, _0207686C ; =0x00000B27
@@ -2180,7 +2180,7 @@ _02076780:
tst r0, r1
beq _02076868
ldr r0, _02076874 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207686C ; =0x00000B27
mov r1, #0x3
strb r1, [r4, r0]
@@ -3394,7 +3394,7 @@ _0207716A:
ldrh r1, [r1, #0x24]
bl Bag_TakeItem
ldr r0, _0207723C ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
b _02077204
_020771F6:
ldr r2, _02077240 ; =0x0000069C
diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s
index 87e9cab0..cdf9258d 100644
--- a/arm9/asm/unk_020772F0.s
+++ b/arm9/asm/unk_020772F0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -730,7 +730,7 @@ _020772FE:
mov r0, #0x3
mov r1, #0x12
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x5d
add r0, r6, #0x0
lsl r1, r1, #0x4
@@ -742,7 +742,7 @@ _020772FE:
add r4, r0, #0x0
bl memset
mov r0, #0x12
- bl FUN_02016B94
+ bl BgConfig_Alloc
mov r1, #0x16
lsl r1, r1, #0x4
str r0, [r4, r1]
@@ -777,7 +777,7 @@ _020772FE:
str r0, [r4, r1]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl FUN_02077B24
mov r0, #0x16
lsl r0, r0, #0x4
@@ -1050,7 +1050,7 @@ _020775E0:
cmp r0, #0x0
bne _02077636
ldr r0, _020776B8 ; =0x000005E2
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _020776BC ; =0x000004A8
mov r2, #0x0
ldr r0, [r4, r1]
@@ -1191,7 +1191,7 @@ _020776F8:
add r0, #0x3a
bl FUN_0207916C
ldr r0, _020777C4 ; =0x0000069E
- bl FUN_020054C8
+ bl PlaySE
_0207771E:
mov r2, #0x49
lsl r2, r2, #0x4
@@ -1209,7 +1209,7 @@ _0207771E:
add r0, #0x3a
bl FUN_0207916C
ldr r0, _020777C4 ; =0x0000069E
- bl FUN_020054C8
+ bl PlaySE
b _020777B8
_02077746:
mov r2, #0x1
@@ -1526,7 +1526,7 @@ _020779C2:
lsl r0, r0, #0x4
ldr r0, [r4, r0]
mov r1, #0x7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
bl FUN_0201D12C
bl FUN_0201E08C
mov r0, #0x16
@@ -1583,7 +1583,7 @@ _02077A0C:
add r1, r0, #0x0
bl Main_SetVBlankIntrCB
mov r0, #0x12
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02077A80 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
@@ -1716,7 +1716,7 @@ FUN_02077B44: ; 0x02077B44
ldmia r5!, {r0-r1}
stmia r3!, {r0-r1}
add r0, r2, #0x0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _02077C6C ; =UNK_020F9EC0
add r3, sp, #0x54
ldmia r5!, {r0-r1}
@@ -1731,10 +1731,10 @@ FUN_02077B44: ; 0x02077B44
str r0, [r3, #0x0]
add r0, r4, #0x0
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02077C70 ; =UNK_020F9FA0
add r3, sp, #0x38
ldmia r5!, {r0-r1}
@@ -1749,10 +1749,10 @@ FUN_02077B44: ; 0x02077B44
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02077C74 ; =UNK_020FA064
add r3, sp, #0x1c
ldmia r5!, {r0-r1}
@@ -1767,10 +1767,10 @@ FUN_02077B44: ; 0x02077B44
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02077C78 ; =UNK_020F9DFC
add r3, sp, #0x0
ldmia r5!, {r0-r1}
@@ -1785,22 +1785,22 @@ FUN_02077B44: ; 0x02077B44
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x0
bl FUN_02077C84
mov r0, #0x0
mov r1, #0x20
add r2, r0, #0x0
mov r3, #0x12
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x4
mov r1, #0x20
mov r2, #0x0
mov r3, #0x12
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x1
lsl r0, r0, #0x1a
add r4, r0, #0x0
@@ -1911,7 +1911,7 @@ FUN_02077CD4: ; 0x02077CD4
ldr r3, [r3, r5]
lsr r1, r1, #0x18
mov r2, #0x0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r3, [r4, r6]
mov r5, #0xc
mov r0, #0x16
@@ -1924,7 +1924,7 @@ FUN_02077CD4: ; 0x02077CD4
ldr r3, [r3, r6]
lsr r1, r1, #0x18
mov r2, #0x3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r6, _02077E80 ; =0x00000464
mov r0, #0x1
ldr r1, [r4, r6]
@@ -1941,7 +1941,7 @@ FUN_02077CD4: ; 0x02077CD4
ldr r3, [r3, r5]
lsr r1, r1, #0x18
mov r2, #0x0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, [r4, r6]
mov r0, #0x1
add r3, r1, #0x0
@@ -1957,7 +1957,7 @@ FUN_02077CD4: ; 0x02077CD4
ldr r3, [r3, r6]
lsr r1, r1, #0x18
mov r2, #0x3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #0x46
ldr r0, _02077E84 ; =0x0000FFFF
lsl r1, r1, #0x2
@@ -2231,23 +2231,23 @@ FUN_02077FA8: ; 0x02077FA8
mov r4, #0x0
_02077FB0:
add r0, r5, #0x0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #0x1
add r5, #0x10
cmp r4, #0xa
blt _02077FB0
add r0, r6, #0x0
mov r1, #0x4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r6, #0x0
mov r1, #0x2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r6, #0x0
mov r1, #0x1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r6, #0x0
mov r1, #0x0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x12
add r1, r6, #0x0
bl FreeToHeapExplicit
@@ -2281,7 +2281,7 @@ FUN_02077FE8: ; 0x02077FE8
bl GfGfxLoader_GXLoadPal
mov r0, #0x4
mov r1, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x2
@@ -3159,14 +3159,14 @@ _0207873C:
lsr r1, r1, #0x18
mov r2, #0x0
mov r3, #0xee
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #0x3
lsl r1, r6, #0x18
add r3, r2, #0x0
ldr r0, [sp, #0x10]
lsr r1, r1, #0x18
sub r3, #0x53
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r5, #0x0]
add sp, #0x28
add r0, r0, #0x1
@@ -3236,14 +3236,14 @@ _020787D8:
ldr r3, [r4, r3]
lsr r1, r1, #0x18
mov r2, #0x0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x10]
lsl r1, r1, #0x18
ldr r3, [r5, r7]
lsr r1, r1, #0x18
mov r2, #0x3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add sp, #0x28
pop {r3-r7, pc}
_020787FC:
@@ -3275,7 +3275,7 @@ _02078820:
ldr r3, [r4, r3]
lsr r1, r1, #0x18
mov r2, #0x0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, [sp, #0x18]
ldr r3, [sp, #0x20]
lsl r1, r1, #0x18
@@ -3283,7 +3283,7 @@ _02078820:
ldr r3, [r7, r3]
lsr r1, r1, #0x18
mov r2, #0x3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [sp, #0x24]
mov r1, #0xa
ldr r0, [r4, r0]
@@ -3308,7 +3308,7 @@ _02078820:
ldr r0, [sp, #0x10]
bl FUN_02078B88
ldr r0, _02078890 ; =0x0000069B
- bl FUN_020054C8
+ bl PlaySE
_0207887E:
add sp, #0x28
pop {r3-r7, pc}
@@ -3400,7 +3400,7 @@ FUN_0207890C: ; 0x0207890C
add r1, r5, r1
mov r2, #0x0
mov r3, #0x2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r2, #0x1
mov r1, #0xf2
lsl r1, r1, #0x2
@@ -3417,7 +3417,7 @@ FUN_0207890C: ; 0x0207890C
ldr r0, [r5, r0]
add r1, r5, r1
mov r3, #0x2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r5, #0x0]
cmp r0, #0x4
bne _020789AE
@@ -3491,7 +3491,7 @@ _020789D8:
ldr r0, [r5, r0]
add r1, r5, r1
mov r3, #0x7
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, [r5, #0xc]
mov r0, #0xc
add r2, r1, #0x0
@@ -3519,7 +3519,7 @@ _020789D8:
ldr r0, [r5, r0]
add r1, r5, r1
mov r3, #0xa
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xfa
lsl r0, r0, #0x2
add r0, r5, r0
@@ -3544,7 +3544,7 @@ _020789D8:
ldr r0, [r5, r0]
add r1, r5, r1
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02078B74 ; =0x00000438
mov r1, #0x1
add r0, r5, r0
@@ -3577,7 +3577,7 @@ _02078A90:
ldr r0, [r5, r0]
add r1, r5, r1
mov r3, #0x2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02078B78 ; =0x00000448
mov r1, #0xf
add r0, r5, r0
@@ -3637,7 +3637,7 @@ _02078B0E:
add r1, r7, r6
mov r2, #0x2
mov r3, #0x0
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r7, r6
mov r1, #0x0
bl FillWindowPixelBuffer
@@ -3657,7 +3657,7 @@ _02078B0E:
add r0, #0xdc
ldr r0, [r5, r0]
add r1, r5, r1
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02078B84 ; =0x00000428
mov r1, #0x0
add r0, r5, r0
@@ -3680,13 +3680,13 @@ FUN_02078B88: ; 0x02078B88
lsl r0, r4, #0x18
lsr r0, r0, #0x18
mov r1, #0x1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0x1
eor r0, r4
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #0x2
- bl FUN_020178BC
+ bl SetBgPriority
pop {r4, pc}
.balign 4
@@ -3829,7 +3829,7 @@ FUN_02078C98: ; 0x02078C98
tst r0, r1
beq _02078CC0
ldr r0, _02078D74 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r5, r0]
@@ -3844,7 +3844,7 @@ _02078CC0:
tst r0, r1
beq _02078CE0
ldr r0, _02078D74 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r5, r0]
@@ -3859,7 +3859,7 @@ _02078CE0:
tst r0, r1
beq _02078D00
ldr r0, _02078D74 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r5, r0]
@@ -3874,7 +3874,7 @@ _02078D00:
tst r0, r1
beq _02078D20
ldr r0, _02078D74 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r5, r0]
@@ -3889,7 +3889,7 @@ _02078D20:
tst r0, r1
beq _02078D46
ldr r0, _02078D74 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r5, r0]
@@ -4579,7 +4579,7 @@ _0207924A:
str r2, [sp, #0xc]
bl FUN_02078E7C
ldr r0, _02079544 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
b _02079526
_0207927C:
add r0, r4, #0x0
@@ -4615,7 +4615,7 @@ _0207927C:
str r2, [sp, #0xc]
bl FUN_02078E7C
ldr r0, _02079544 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
b _02079526
_020792CA:
mov r3, #0x56
@@ -4653,7 +4653,7 @@ _020792CA:
add r1, r1, #0x1
str r1, [r4, r0]
ldr r0, _02079544 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
b _02079526
_0207931C:
mov r2, #0x46
@@ -4679,7 +4679,7 @@ _0207931C:
add r0, r0, #0x1
str r0, [r2, r1]
ldr r0, _02079548 ; =0x0000069E
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -4765,7 +4765,7 @@ _020793BC:
add r1, r1, #0x1
str r1, [r4, r0]
ldr r0, _02079558 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -4785,7 +4785,7 @@ _0207940E:
cmp r0, #0x0
bne _02079454
ldr r0, _02079560 ; =0x000005E2
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02079564 ; =0x000004A8
ldr r1, [r4, r0]
add r1, r1, #0x1
@@ -4862,7 +4862,7 @@ _02079470:
add r0, r4, r0
bl FUN_02079710
ldr r0, _02079544 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r4, r0]
diff --git a/arm9/asm/unk_020799E8.s b/arm9/asm/unk_020799E8.s
index 9227ca82..f7318276 100644
--- a/arm9/asm/unk_020799E8.s
+++ b/arm9/asm/unk_020799E8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -281,7 +281,7 @@ _02079BAE:
add r0, r6, #0x0
ldr r2, [r2, #0x14]
add r3, r4, #0x0
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
b _02079C36
_02079BC6:
add r0, r7, #0x0
@@ -297,7 +297,7 @@ _02079BDA:
lsl r1, r5, #0x18
add r0, r6, #0x0
lsr r1, r1, #0x18
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
cmp r0, #0x0
beq _02079BF8
ldr r2, [sp, #0xc]
@@ -306,7 +306,7 @@ _02079BDA:
lsr r1, r1, #0x18
add r2, #0xc
add r3, r4, #0x0
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
_02079BF8:
add r0, sp, #0x18
ldrh r0, [r0, #0x20]
@@ -317,7 +317,7 @@ _02079BF8:
add r0, r6, #0x0
add r2, #0xc
add r3, r4, #0x0
- bl FUN_02017CE8
+ bl BgCopyOrUncompressTilemapBufferRangeToVram
b _02079C36
_02079C10:
add r0, r7, #0x0
@@ -337,7 +337,7 @@ _02079C24:
ldr r1, [r1, #0xc]
lsr r0, r0, #0x18
add r2, r4, #0x0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
_02079C36:
add r0, r7, #0x0
bl FreeToHeap
diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s
index 3134a96c..3bbacdab 100644
--- a/arm9/asm/unk_02079C70.s
+++ b/arm9/asm/unk_02079C70.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -87,12 +87,12 @@ FUN_02079C7C: ; 0x02079C7C
strh r2, [r0, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x1
mov r0, #0x3
mov r1, #0x13
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _02079DAC ; =0x0000069C
add r0, r4, #0x0
mov r2, #0x13
@@ -107,7 +107,7 @@ FUN_02079C7C: ; 0x02079C7C
lsl r1, r1, #0x2
str r0, [r5, r1]
mov r0, #0x13
- bl FUN_02016B94
+ bl BgConfig_Alloc
mov r1, #0x1
str r0, [r5, #0x0]
mov r0, #0x13
@@ -339,7 +339,7 @@ FUN_02079ECC: ; 0x02079ECC
add r0, r4, #0x0
bl OverlayManager_FreeData
mov r0, #0x13
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
@@ -350,7 +350,7 @@ FUN_02079F24: ; 0x02079F24
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
mov r0, #0xae
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -400,7 +400,7 @@ FUN_02079F78: ; 0x02079F78
ldmia r5!, {r0-r1}
stmia r3!, {r0-r1}
add r0, r2, #0x0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _0207A078 ; =UNK_020FA650
add r3, sp, #0x70
ldmia r5!, {r0-r1}
@@ -415,10 +415,10 @@ FUN_02079F78: ; 0x02079F78
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0207A07C ; =UNK_020FA66C
add r3, sp, #0x54
ldmia r5!, {r0-r1}
@@ -433,15 +433,15 @@ FUN_02079F78: ; 0x02079F78
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0x0
mov r1, #0x2
mov r2, #0x0
mov r3, #0x88
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r5, _0207A080 ; =UNK_020FA688
add r3, sp, #0x38
ldmia r5!, {r0-r1}
@@ -456,7 +456,7 @@ FUN_02079F78: ; 0x02079F78
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _0207A084 ; =UNK_020FA6A4
add r3, sp, #0x1c
ldmia r5!, {r0-r1}
@@ -471,10 +471,10 @@ FUN_02079F78: ; 0x02079F78
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0207A088 ; =UNK_020FA634
add r3, sp, #0x0
ldmia r5!, {r0-r1}
@@ -489,17 +489,17 @@ FUN_02079F78: ; 0x02079F78
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x1
mov r1, #0x20
mov r2, #0x0
mov r3, #0x13
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x4
mov r1, #0x20
mov r2, #0x0
mov r3, #0x13
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x9c
pop {r4-r5, pc}
nop
@@ -518,19 +518,19 @@ FUN_0207A08C: ; 0x0207A08C
bl GX_DisableEngineBLayers
add r0, r4, #0x0
mov r1, #0x5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x13
add r1, r4, #0x0
bl FreeToHeapExplicit
@@ -864,7 +864,7 @@ _0207A376:
beq _0207A394
sub r3, #0xb2
add r0, r3, #0x0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x93
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -888,7 +888,7 @@ _0207A394:
bne _0207A3BE
sub r3, #0xb2
add r0, r3, #0x0
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207C23C
pop {r4-r6, pc}
@@ -898,7 +898,7 @@ _0207A3BE:
cmp r1, #0x3
bne _0207A3D6
add r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207A444 ; =0x0000068E
mov r1, #0x0
strb r1, [r4, r0]
@@ -908,7 +908,7 @@ _0207A3D6:
cmp r1, #0x5
bne _0207A3EA
add r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207A444 ; =0x0000068E
mov r1, #0x0
strb r1, [r4, r0]
@@ -923,7 +923,7 @@ _0207A3EA:
cmp r1, #0x0
beq _0207A420
sub r0, #0xaf
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207A444 ; =0x0000068E
mov r1, #0x0
strb r1, [r4, r0]
@@ -933,7 +933,7 @@ _0207A408:
cmp r1, #0x7
bne _0207A420
sub r0, #0xaf
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x93
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -1027,7 +1027,7 @@ FUN_0207A498: ; 0x0207A498
cmp r0, #0x1
bne _0207A4BE
ldr r0, _0207A56C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207B8D8
_0207A4BE:
@@ -1042,7 +1042,7 @@ _0207A4C2:
cmp r0, #0x1
bne _0207A4DE
ldr r0, _0207A56C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207B8D8
_0207A4DE:
@@ -1059,7 +1059,7 @@ _0207A4E2:
cmp r1, #0x4
bne _0207A510
add r0, #0xf
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207A574 ; =0x0000068E
mov r1, #0x0
strb r1, [r4, r0]
@@ -1080,7 +1080,7 @@ _0207A510:
cmp r1, #0x1
beq _0207A542
sub r0, #0xb0
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207CBE8
ldr r2, _0207A570 ; =0x0000068D
@@ -1101,7 +1101,7 @@ _0207A542:
tst r0, r2
beq _0207A564
ldr r0, _0207A578 ; =0x0000069C
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207A574 ; =0x0000068E
mov r1, #0x0
strb r1, [r4, r0]
@@ -1139,7 +1139,7 @@ FUN_0207A57C: ; 0x0207A57C
cmp r0, #0x1
bne _0207A5A2
ldr r0, _0207A648 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207B8D8
_0207A5A2:
@@ -1154,7 +1154,7 @@ _0207A5A6:
cmp r0, #0x1
bne _0207A5C2
ldr r0, _0207A648 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207B8D8
_0207A5C2:
@@ -1180,7 +1180,7 @@ _0207A5C6:
cmp r2, r1
beq _0207A618
sub r0, #0xb0
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207B9C0
ldr r1, _0207A64C ; =0x0000068D
@@ -1198,7 +1198,7 @@ _0207A5C6:
b _0207A61E
_0207A618:
ldr r0, _0207A650 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_0207A61E:
mov r0, #0x7
pop {r4, pc}
@@ -1207,7 +1207,7 @@ _0207A622:
tst r0, r2
beq _0207A63E
ldr r0, _0207A650 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x43
lsl r0, r0, #0x4
ldr r0, [r4, r0]
@@ -1256,7 +1256,7 @@ _0207A67E:
cmp r0, #0x1
bne _0207A69C
ldr r0, _0207A754 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207B8D8
_0207A69C:
@@ -1271,7 +1271,7 @@ _0207A6A0:
cmp r0, #0x1
bne _0207A6BC
ldr r0, _0207A754 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0x0
bl FUN_0207B8D8
_0207A6BC:
@@ -1282,7 +1282,7 @@ _0207A6C0:
tst r0, r2
beq _0207A72C
ldr r0, _0207A758 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207A75C ; =0x0000068D
ldrb r0, [r4, r0]
lsl r0, r0, #0x1c
@@ -1333,7 +1333,7 @@ _0207A72C:
tst r0, r2
beq _0207A74C
ldr r0, _0207A758 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x93
lsl r0, r0, #0x2
ldr r1, [r4, r0]
@@ -1441,7 +1441,7 @@ _0207A7F0:
tst r0, r1
beq _0207A808
ldr r0, _0207A810 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0207A814 ; =0x0000068E
mov r1, #0x0
strb r1, [r4, r0]
@@ -2600,10 +2600,10 @@ _0207B0EC:
ldr r0, [r5, #0x0]
mov r1, #0x1
mov r3, #0xe
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r5, #0x0]
mov r1, #0x1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0x0
bl FUN_0207DD88
add r0, r5, #0x0
@@ -2679,7 +2679,7 @@ _0207B1D0:
cmp r4, r0
beq _0207B1F4
ldr r0, _0207B1FC ; =0x000005E1
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0x0
bl FUN_0207FA38
add r0, r5, #0x0
@@ -2760,10 +2760,10 @@ _0207B256:
ldr r0, [r5, #0x0]
mov r1, #0x3
add r2, #0xc
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r0, [r5, #0x0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0x0
bl FreeToHeap
ldr r0, _0207B2AC ; =0x0000068C
@@ -2858,7 +2858,7 @@ _0207B318:
ldr r0, [r6, #0x0]
mov r1, #0x3
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
cmp r4, #0x8
bhs _0207B33E
mov r4, #0x0
@@ -2875,7 +2875,7 @@ _0207B344:
blo _0207B30A
ldr r0, [r6, #0x0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4-r7, pc}
nop
@@ -2936,7 +2936,7 @@ _0207B3AC:
ldr r0, [r6, #0x0]
mov r1, #0x3
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
cmp r4, #0x8
bhs _0207B3D0
mov r4, #0x0
@@ -2953,7 +2953,7 @@ _0207B3D6:
blo _0207B39C
ldr r0, [r6, #0x0]
mov r1, #0x3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r3-r7, pc}
.balign 4
@@ -3301,30 +3301,30 @@ _0207B682:
mov r1, #0x2
mov r2, #0x0
mov r3, #0x88
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r4, #0x0]
mov r1, #0x2
mov r2, #0x3
mov r3, #0x0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207C6F0
mov r0, #0x85
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
add r0, #0x64
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x81
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207CFAC
@@ -3340,14 +3340,14 @@ _0207B682:
_0207B6E2:
ldr r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_02017B48
+ bl Bg_GetXpos
cmp r0, #0x40
ldr r0, [r4, #0x0]
bgt _0207B702
mov r2, #0x0
mov r1, #0x2
add r3, r2, #0x0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, _0207B774 ; =0x0000068E
mov r1, #0x2
strb r1, [r4, r0]
@@ -3356,7 +3356,7 @@ _0207B702:
mov r1, #0x2
add r2, r1, #0x0
mov r3, #0x40
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _0207B76E
_0207B70E:
bl FUN_0207ECDC
@@ -3449,7 +3449,7 @@ _0207B79E:
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207CFAC
@@ -3464,14 +3464,14 @@ _0207B79E:
_0207B7F8:
ldr r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_02017B48
+ bl Bg_GetXpos
cmp r0, #0x80
ldr r0, [r4, #0x0]
blt _0207B818
mov r1, #0x2
mov r2, #0x0
mov r3, #0x88
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, _0207B864 ; =0x0000068E
mov r1, #0x2
strb r1, [r4, r0]
@@ -3480,20 +3480,20 @@ _0207B818:
mov r1, #0x2
mov r2, #0x1
mov r3, #0x40
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _0207B860
_0207B824:
mov r0, #0x85
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0x64
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x81
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
mov r1, #0x81
bl FUN_0207D924
@@ -3788,19 +3788,19 @@ FUN_0207BA74: ; 0x0207BA74
mov r0, #0x85
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
add r0, #0x64
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x81
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r2, #0x0
ldr r0, [r4, #0x0]
mov r1, #0x2
add r3, r2, #0x0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
add r0, r4, #0x0
bl FUN_0207ECDC
add r0, r4, #0x0
@@ -3851,13 +3851,13 @@ _0207BB02:
mov r1, #0x2
mov r2, #0x0
mov r3, #0x88
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r2, #0x3
add r3, r2, #0x0
ldr r0, [r4, #0x0]
mov r1, #0x2
add r3, #0xfd
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r1, #0x0
add r0, r4, #0x0
mvn r1, r1
@@ -3868,18 +3868,18 @@ _0207BB02:
mov r0, #0x85
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
add r0, #0x64
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x81
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207CFAC
@@ -3895,14 +3895,14 @@ _0207BB02:
_0207BB6E:
ldr r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_02017B48
+ bl Bg_GetXpos
cmp r0, #0x40
ldr r0, [r4, #0x0]
bgt _0207BB8E
mov r2, #0x0
mov r1, #0x2
add r3, r2, #0x0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, _0207BBE4 ; =0x0000068E
mov r1, #0x2
strb r1, [r4, r0]
@@ -3911,7 +3911,7 @@ _0207BB8E:
mov r1, #0x2
add r2, r1, #0x0
mov r3, #0x40
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _0207BBDE
_0207BB9A:
bl FUN_0207ECDC
@@ -3980,7 +3980,7 @@ _0207BC06:
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207CFAC
@@ -3995,14 +3995,14 @@ _0207BC06:
_0207BC4E:
ldr r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_02017B48
+ bl Bg_GetXpos
cmp r0, #0x80
ldr r0, [r4, #0x0]
blt _0207BC6E
mov r1, #0x2
mov r2, #0x0
mov r3, #0x88
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, _0207BCBC ; =0x0000068E
mov r1, #0x2
strb r1, [r4, r0]
@@ -4011,20 +4011,20 @@ _0207BC6E:
mov r1, #0x2
mov r2, #0x1
mov r3, #0x40
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _0207BCB6
_0207BC7A:
mov r0, #0x85
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0x64
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x81
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
mov r1, #0x9e
bl FUN_0207D924
@@ -4066,7 +4066,7 @@ FUN_0207BCC8: ; 0x0207BCC8
mov r1, #0x2
add r2, r4, #0x0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x2f
str r0, [sp, #0x0]
mov r0, #0x1
@@ -4082,7 +4082,7 @@ FUN_0207BCC8: ; 0x0207BCC8
mov r1, #0x2
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x30
str r0, [sp, #0x0]
mov r0, #0x1
@@ -4098,7 +4098,7 @@ FUN_0207BCC8: ; 0x0207BCC8
mov r1, #0x2
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x30
str r0, [sp, #0x0]
mov r0, #0x1
@@ -4113,7 +4113,7 @@ FUN_0207BCC8: ; 0x0207BCC8
mov r1, #0x2
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x10
pop {r3-r7, pc}
@@ -4136,7 +4136,7 @@ _0207BD60:
blo _0207BD60
ldr r0, [r5, #0x0]
mov r1, #0x2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r4-r6, pc}
.balign 4
_0207BD80: .word 0x0000012E
@@ -4178,7 +4178,7 @@ _0207BDB6:
_0207BDCC:
ldr r0, [r5, #0x0]
mov r1, #0x2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r3-r7, pc}
.balign 4
@@ -4232,7 +4232,7 @@ _0207BE38:
mov r1, #0x2
mov r2, #0x3
mov r3, #0x0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r4, pc}
_0207BE46:
add r0, r4, #0x0
@@ -4242,7 +4242,7 @@ _0207BE46:
ldr r0, [r4, #0x0]
mov r1, #0x2
add r3, #0xfd
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r4, pc}
.balign 4
_0207BE5C: .word 0x0000068C
@@ -4268,34 +4268,34 @@ _0207BE7E:
ldr r0, [r4, #0x0]
mov r2, #0x0
add r3, #0xfe
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r4, #0x0]
mov r1, #0x2
mov r2, #0x3
mov r3, #0x0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207C6F0
add r0, r4, #0x0
add r0, #0x64
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x81
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x79
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207CFAC
@@ -4311,14 +4311,14 @@ _0207BE7E:
_0207BEEA:
ldr r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_02017B54
+ bl Bg_GetYpos
cmp r0, #0x30
ldr r0, [r4, #0x0]
blt _0207BF0A
mov r1, #0x2
mov r2, #0x3
mov r3, #0x38
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, _0207BF78 ; =0x0000068E
mov r1, #0x2
strb r1, [r4, r0]
@@ -4327,7 +4327,7 @@ _0207BF0A:
mov r1, #0x2
mov r2, #0x4
mov r3, #0x10
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _0207BF74
_0207BF16:
mov r1, #0xb5
@@ -4403,21 +4403,21 @@ _0207BFA6:
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x10
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x20
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x30
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0207CFAC
@@ -4430,14 +4430,14 @@ _0207BFA6:
_0207BFF6:
ldr r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_02017B54
+ bl Bg_GetYpos
cmp r0, #0x8
ldr r0, [r4, #0x0]
bgt _0207C016
mov r1, #0x2
mov r2, #0x3
mov r3, #0x0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, _0207C078 ; =0x0000068E
mov r1, #0x2
strb r1, [r4, r0]
@@ -4446,28 +4446,28 @@ _0207C016:
mov r1, #0x2
mov r2, #0x5
mov r3, #0x10
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _0207C072
_0207C022:
add r0, r4, #0x0
add r0, #0x64
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x81
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x79
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
mov r1, #0xb4
bl FUN_0207D924
@@ -4611,7 +4611,7 @@ _0207C14A:
beq _0207C160
_0207C15A:
ldr r0, _0207C1D4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0207C160:
ldr r1, _0207C1D0 ; =0x00000697
add r0, r5, #0x0
diff --git a/arm9/asm/unk_0207C328.s b/arm9/asm/unk_0207C328.s
index ba0e57e6..38691c40 100644
--- a/arm9/asm/unk_0207C328.s
+++ b/arm9/asm/unk_0207C328.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -1826,7 +1826,7 @@ FUN_0207CFAC: ; 0x0207CFAC
pop {r4, pc}
_0207CFC0:
add r0, r1, #0x0
- bl FUN_0201AB14
+ bl GetWindowX
add r1, r0, #0x0
ldr r0, _0207CFE8 ; =0x000004C4
lsl r1, r1, #0x3
diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s
index 5a814a79..3d3fd3fe 100644
--- a/arm9/asm/unk_0207D5BC.s
+++ b/arm9/asm/unk_0207D5BC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -79,7 +79,7 @@ _0207D5C4:
ldr r0, [r7, #0x0]
add r1, r4, r6
add r2, r2, r3
- bl FUN_02019150
+ bl AddWindow
add r0, r4, r6
mov r1, #0x0
bl FillWindowPixelBuffer
@@ -207,7 +207,7 @@ _0207D6B4:
ldr r0, [r4, #0x0]
add r1, r1, r7
add r2, r5, #0x0
- bl FUN_02019150
+ bl AddWindow
mov r0, #0x92
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -269,7 +269,7 @@ _0207D732:
ldr r1, [r1, r2]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_020191A4
+ bl WindowArray_dtor
_0207D744:
pop {r3, pc}
nop
@@ -284,7 +284,7 @@ FUN_0207D74C: ; 0x0207D74C
add r5, r5, #0x4
_0207D758:
add r0, r5, #0x0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #0x1
add r5, #0x10
cmp r4, #0x24
@@ -354,7 +354,7 @@ _0207D7CA:
bl FUN_0207D998
_0207D7E8:
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3-r5, pc}
nop
@@ -428,7 +428,7 @@ FUN_0207D800: ; 0x0207D800
bl AddTextPrinterParameterized2
_0207D88A:
add r0, r5, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4-r6, pc}
.balign 4
@@ -484,11 +484,11 @@ _0207D8F2:
bl FUN_0207D998
add r0, r5, #0x0
add r0, #0x64
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x81
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r3-r5, pc}
nop
_0207D918: .word 0x0000025E
@@ -515,7 +515,7 @@ FUN_0207D924: ; 0x0207D924
mov r0, #0x8d
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r3-r5, pc}
nop
_0207D954: .word 0x000F0E00
@@ -1039,7 +1039,7 @@ FUN_0207DD88: ; 0x0207DD88
ldr r0, [r4, #0x0]
mov r1, #0x1
add r3, r2, #0x0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x2
str r0, [sp, #0x0]
mov r0, #0x12
@@ -1052,7 +1052,7 @@ FUN_0207DD88: ; 0x0207DD88
mov r1, #0x1
mov r2, #0x0
mov r3, #0xe
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, _0207DE38 ; =0x0000068C
ldrsb r0, [r4, r0]
cmp r0, #0x7
@@ -1122,31 +1122,31 @@ FUN_0207DE3C: ; 0x0207DE3C
sub sp, #0x10
add r4, r0, #0x0
add r0, r4, #0x4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0x74
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0x84
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0x94
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0xa4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0xb4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0xc4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0xd4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0xe4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -1376,32 +1376,32 @@ _0207E058:
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x40
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x50
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3-r5, pc}
.balign 4
@@ -1517,7 +1517,7 @@ FUN_0207E190: ; 0x0207E190
push {r3-r7, lr}
add r5, r0, #0x0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
@@ -1560,7 +1560,7 @@ _0207E1F4:
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r3-r7, pc}
thumb_func_start FUN_0207E200
@@ -1569,34 +1569,34 @@ FUN_0207E200: ; 0x0207E200
sub sp, #0x18
add r4, r0, #0x0
add r0, #0x24
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
add r0, #0xf4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x41
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x45
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x49
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x4d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x51
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x55
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -1803,42 +1803,42 @@ FUN_0207E200: ; 0x0207E200
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x40
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x50
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x60
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x70
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3-r5, pc}
nop
@@ -1856,11 +1856,11 @@ FUN_0207E4A0: ; 0x0207E4A0
sub sp, #0x10
add r4, r0, #0x0
add r0, #0x34
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x59
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x93
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -1919,7 +1919,7 @@ _0207E4C6:
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x93
lsl r0, r0, #0x2
ldr r1, [r4, r0]
@@ -1946,7 +1946,7 @@ _0207E4C6:
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r1, #0x91
lsl r1, r1, #0x2
ldr r1, [r4, r1]
@@ -1966,7 +1966,7 @@ FUN_0207E594: ; 0x0207E594
push {r4, lr}
add r4, r0, #0x0
add r0, #0x44
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x93
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -2025,22 +2025,22 @@ _0207E5BC:
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, pc}
.balign 4
@@ -2049,7 +2049,7 @@ FUN_0207E650: ; 0x0207E650
push {r4, lr}
add r4, r0, #0x0
add r0, #0x54
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x93
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -2108,22 +2108,22 @@ _0207E678:
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, pc}
.balign 4
@@ -2135,11 +2135,11 @@ FUN_0207E70C: ; 0x0207E70C
mov r0, #0x7d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x79
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -2163,7 +2163,7 @@ FUN_0207E70C: ; 0x0207E70C
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _0207E780 ; =0x00000699
ldrb r0, [r4, r0]
cmp r0, #0x0
@@ -2191,7 +2191,7 @@ FUN_0207E788: ; 0x0207E788
mov r0, #0x71
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0x0
mov r1, #0xa1
bl FUN_0207D924
@@ -2258,7 +2258,7 @@ _0207E7BC:
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_0207E82C:
add sp, #0x10
pop {r4, pc}
@@ -2419,7 +2419,7 @@ FUN_0207E840: ; 0x0207E840
lsl r0, r0, #0x2
ldr r0, [r5, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4-r6, pc}
.balign 4
@@ -2486,12 +2486,12 @@ FUN_0207E9A0: ; 0x0207E9A0
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, pc}
.balign 4
_0207EA34: .word 0x0000069A
@@ -2645,15 +2645,15 @@ FUN_0207EB64: ; 0x0207EB64
lsl r0, r0, #0x2
add r0, r5, r0
add r4, r1, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x69
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x6d
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
@@ -2754,17 +2754,17 @@ _0207EC1C:
lsl r0, r0, #0x2
ldr r0, [r5, r0]
add r0, #0x50
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
add r0, #0x60
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
add r0, #0x70
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x4
pop {r3-r6, pc}
.balign 4
@@ -2779,30 +2779,30 @@ FUN_0207EC94: ; 0x0207EC94
mov r0, #0x65
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x69
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x6d
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x50
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x60
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x70
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
pop {r4, pc}
thumb_func_start FUN_0207ECDC
@@ -2827,12 +2827,12 @@ FUN_0207ECDC: ; 0x0207ECDC
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x40
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, pc}
_0207ED0E:
sub r0, #0xc8
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, pc}
thumb_func_start FUN_0207ED18
@@ -2842,10 +2842,10 @@ FUN_0207ED18: ; 0x0207ED18
mov r0, #0x61
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
ldr r0, [r4, #0x0]
mov r1, #0x1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r4, pc}
thumb_func_start FUN_0207ED30
@@ -2895,7 +2895,7 @@ FUN_0207ED30: ; 0x0207ED30
lsr r0, r0, #0x1c
lsl r0, r0, #0x4
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r1, [r4, r0]
@@ -2905,7 +2905,7 @@ FUN_0207ED30: ; 0x0207ED30
lsr r0, r0, #0x1c
lsl r0, r0, #0x4
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, pc}
nop
_0207EDB0: .word 0x0000068D
@@ -2922,17 +2922,17 @@ FUN_0207EDB4: ; 0x0207EDB4
lsl r0, r0, #0x2
ldr r0, [r5, r0]
add r0, #0x50
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
add r0, #0x60
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
add r0, #0x70
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r4, [r5, r0]
@@ -2959,7 +2959,7 @@ _0207EDF6:
mov r3, #0x0
bl FUN_0207D998
add r0, r4, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r3-r5, pc}
.balign 4
_0207EE20: .word 0x0000068C
@@ -3015,12 +3015,12 @@ FUN_0207EE2C: ; 0x0207EE2C
mov r0, #0x75
lsl r0, r0, #0x2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]
add r0, #0x50
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4-r6, pc}
.balign 4
@@ -3033,12 +3033,12 @@ FUN_0207EEB0: ; 0x0207EEB0
mov r0, #0x75
lsl r0, r0, #0x2
add r0, r4, r0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
add r0, #0x50
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
pop {r4, pc}
thumb_func_start FUN_0207EECC
@@ -3119,7 +3119,7 @@ _0207EF10:
mov r1, #0x1
bl AddTextPrinterParameterized2
add r0, r6, #0x0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4-r6, pc}
.balign 4
diff --git a/arm9/asm/unk_0207EF6C.s b/arm9/asm/unk_0207EF6C.s
index e4e29259..2d585edb 100644
--- a/arm9/asm/unk_0207EF6C.s
+++ b/arm9/asm/unk_0207EF6C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_0207F95C.s b/arm9/asm/unk_0207F95C.s
index cface8d1..4934c2fb 100644
--- a/arm9/asm/unk_0207F95C.s
+++ b/arm9/asm/unk_0207F95C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.section .rodata
@@ -92,7 +92,7 @@ _0207F992:
ldr r0, [r4, #0x0]
mov r2, #0x0
add r3, r1, #0x0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _0207F9BA
_0207F9AC:
ldr r1, _0207F9C4 ; =0x0000068F
@@ -116,7 +116,7 @@ FUN_0207F9C8: ; 0x0207F9C8
add r4, r1, #0x0
mov r1, #0x4
add r5, r2, #0x0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r7, r0, #0x0
lsl r0, r5, #0x2
add r1, r5, r0
@@ -200,7 +200,7 @@ _0207FA52:
_0207FA6C:
ldr r0, [r6, #0x0]
mov r1, #0x4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_0207FA74:
pop {r3-r7, pc}
nop
@@ -279,7 +279,7 @@ _0207FADA:
ldrh r2, [r3, #0x1c]
ldrh r3, [r3, #0x1e]
mov r1, #0x4
- bl FUN_0201AFBC
+ bl DoesPixelAtScreenXYMatchPtrVal
cmp r0, #0x0
bne _0207FB12
mov r0, #0x0
@@ -318,7 +318,7 @@ FUN_0207FB28: ; 0x0207FB28
_0207FB4A:
sub r1, #0xab
add r0, r1, #0x0
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0x0
bl FUN_0207FA38
ldr r1, _0207FBFC ; =0x00000696
@@ -330,7 +330,7 @@ _0207FB4A:
bl FUN_0207F9C8
ldr r0, [r5, #0x0]
mov r1, #0x4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r5, #0x0
bl FUN_0207CEDC
ldr r0, _0207FC00 ; =0x00000694
@@ -390,7 +390,7 @@ _0207FBD6:
_0207FBE2:
ldr r0, [r5, #0x0]
mov r1, #0x4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #0x1
pop {r4-r6, pc}
_0207FBEE:
diff --git a/arm9/asm/unk_0207FD00.s b/arm9/asm/unk_0207FD00.s
index e48ad6f9..e920ab0b 100644
--- a/arm9/asm/unk_0207FD00.s
+++ b/arm9/asm/unk_0207FD00.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s
index 3e0d058c..4f43b41e 100644
--- a/arm9/asm/unk_02080C38.s
+++ b/arm9/asm/unk_02080C38.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -807,7 +807,7 @@ FUN_02081214: ; 0x02081214
mov r0, #0xb
mov r1, #0x14
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
bl FUN_020811D8
add r4, r0, #0x0
bl GetLCRNGSeed
@@ -1191,7 +1191,7 @@ _020814FE:
add r0, r7, #0x0
bl FUN_0208120C
mov r0, #0x14
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3-r7, pc}
.balign 4
@@ -3394,7 +3394,7 @@ FUN_0208251C: ; 0x0208251C
mov r3, #0x3f
bl FUN_0200A208
ldr r0, _0208259C ; =0x000005F8
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0xa]
add r0, r0, #0x1
strb r0, [r4, #0xa]
diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s
index a64d7ab7..74c231ea 100644
--- a/arm9/asm/unk_020828BC.s
+++ b/arm9/asm/unk_020828BC.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -1641,7 +1641,7 @@ FUN_020833D4: ; 0x020833D4
cmp r0, #0x0
bne _020833EE
mov r0, #0x1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0x3
bl FUN_02002B7C
mov r0, #0x1
@@ -1651,7 +1651,7 @@ _020833EE:
mov r0, #0x1
bl FUN_02002B7C
mov r0, #0x0
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0x0
bl FUN_02002BB8
pop {r3, pc}
@@ -1661,7 +1661,7 @@ _020833EE:
FUN_02083404: ; 0x02083404
push {r3, lr}
mov r0, #0x0
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0x0
bl FUN_02002B7C
mov r0, #0x0
diff --git a/arm9/asm/unk_020834D0.s b/arm9/asm/unk_020834D0.s
index 88308c6e..61d6b372 100644
--- a/arm9/asm/unk_020834D0.s
+++ b/arm9/asm/unk_020834D0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
.global UNK_020FBED8
diff --git a/arm9/asm/unk_02083B84.s b/arm9/asm/unk_02083B84.s
index 9049ff02..00b03fbd 100644
--- a/arm9/asm/unk_02083B84.s
+++ b/arm9/asm/unk_02083B84.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02083D48.s b/arm9/asm/unk_02083D48.s
index 1974ae4b..5b629bc6 100644
--- a/arm9/asm/unk_02083D48.s
+++ b/arm9/asm/unk_02083D48.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02084098.s b/arm9/asm/unk_02084098.s
index d05c8765..bb06cec2 100644
--- a/arm9/asm/unk_02084098.s
+++ b/arm9/asm/unk_02084098.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -175,7 +175,7 @@ FUN_020840CC: ; 0x020840CC
add r1, r0, #0x0
bl FUN_020334E8
ldr r0, _02084110 ; =0x00000658
- bl FUN_020054C8
+ bl PlaySE
pop {r3-r5, pc}
.balign 4
_0208410C: .word 0x00004A34
diff --git a/arm9/asm/unk_020842D0.s b/arm9/asm/unk_020842D0.s
index 9b2e2af0..2b8e01a0 100644
--- a/arm9/asm/unk_020842D0.s
+++ b/arm9/asm/unk_020842D0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020851B8.s b/arm9/asm/unk_020851B8.s
deleted file mode 100644
index a6ed91ad..00000000
--- a/arm9/asm/unk_020851B8.s
+++ /dev/null
@@ -1,102 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020851B8
-FUN_020851B8: ; 0x020851B8
- push {r3, lr}
- mov r1, #0xc
- 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]
- pop {r3, pc}
-
- thumb_func_start FUN_020851DC
-FUN_020851DC: ; 0x020851DC
- push {r4-r6, lr}
- sub r1, #0x95
- lsl r1, r1, #0x10
- lsr r6, r1, #0x10
- add r1, r6, #0x0
- add r5, r0, #0x0
- add r4, r2, #0x0
- bl FUN_02085200
- cmp r4, #0x1
- bne _020851F4
- strb r6, [r5, #0x8]
-_020851F4:
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020851F8
-FUN_020851F8: ; 0x020851F8
- strb r1, [r0, #0x9]
- strb r2, [r0, #0xa]
- strb r3, [r0, #0xb]
- bx lr
-
- thumb_func_start FUN_02085200
-FUN_02085200: ; 0x02085200
- push {r3-r6}
- lsr r6, r1, #0x1f
- lsl r5, r1, #0x1b
- lsr r2, r1, #0x5
- lsl r4, r2, #0x2
- sub r5, r5, r6
- mov r1, #0x1b
- ror r5, r1
- ldr r3, [r0, r4]
- mov r2, #0x1
- add r1, r6, r5
- lsl r2, r1
- add r1, r3, #0x0
- orr r1, r2
- str r1, [r0, r4]
- pop {r3-r6}
- bx lr
- .balign 4
-
- thumb_func_start FUN_02085224
-FUN_02085224: ; 0x02085224
- push {r4-r5}
- lsr r5, r1, #0x1f
- lsl r4, r1, #0x1b
- lsr r1, r1, #0x5
- lsl r1, r1, #0x2
- sub r4, r4, r5
- mov r3, #0x1b
- ror r4, r3
- mov r2, #0x1
- add r3, r5, r4
- add r4, r2, #0x0
- lsl r4, r3
- ldr r0, [r0, r1]
- tst r0, r4
- bne _02085244
- mov r2, #0x0
-_02085244:
- lsl r0, r2, #0x18
- lsr r0, r0, #0x18
- pop {r4-r5}
- bx lr
-
- thumb_func_start FUN_0208524C
-FUN_0208524C: ; 0x0208524C
- ldrb r3, [r0, #0x9]
- strb r3, [r1, #0x0]
- ldrb r0, [r0, #0xa]
- strb r0, [r2, #0x0]
- bx lr
- .balign 4
diff --git a/arm9/asm/unk_02085338.s b/arm9/asm/unk_02085338.s
deleted file mode 100644
index 08f7d90c..00000000
--- a/arm9/asm/unk_02085338.s
+++ /dev/null
@@ -1,286 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02085338
-FUN_02085338: ; 0x02085338
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r0, r3, #0x0
- mov r1, #0x24
- add r6, r2, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- strb r5, [r4, #0x0]
- strb r7, [r4, #0x1]
- add r0, r6, #0x0
- bl Sav2_Pokedex_get
- str r0, [r4, #0xc]
- add r0, r6, #0x0
- bl FUN_02013B5C
- str r0, [r4, #0x10]
- add r0, r6, #0x0
- bl SavArray_Flags_get
- bl FUN_0205ED0C
- strb r0, [r4, #0x4]
- mov r1, #0x0
- strb r1, [r4, #0x5]
- mov r0, #0x1
- strb r0, [r4, #0x2]
- add r0, r6, #0x0
- strb r1, [r4, #0x3]
- bl Sav2_PlayerData_GetOptionsAddr
- bl Options_GetFrame
- str r0, [r4, #0x8]
- cmp r5, #0x2
- bne _02085390
- add r0, r4, #0x0
- add r0, #0x14
- mov r1, #0x3
- bl MailMsg_init_withBank
- b _020853A0
-_02085390:
- ldr r0, _020853A4 ; =0x0000FFFF
- mov r1, #0x0
- add r2, r4, #0x0
-_02085396:
- add r1, r1, #0x1
- strh r0, [r2, #0x1c]
- add r2, r2, #0x2
- cmp r1, #0x2
- blt _02085396
-_020853A0:
- add r0, r4, #0x0
- pop {r3-r7, pc}
- .balign 4
-_020853A4: .word 0x0000FFFF
-
- thumb_func_start FUN_020853A8
-FUN_020853A8: ; 0x020853A8
- ldr r3, _020853AC ; =FreeToHeap
- bx r3
- .balign 4
-_020853AC: .word FreeToHeap
-
- thumb_func_start FUN_020853B0
-FUN_020853B0: ; 0x020853B0
- strh r1, [r0, #0x1c]
- bx lr
-
- thumb_func_start FUN_020853B4
-FUN_020853B4: ; 0x020853B4
- strh r1, [r0, #0x1c]
- strh r2, [r0, #0x1e]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853BC
-FUN_020853BC: ; 0x020853BC
- ldrh r2, [r1, #0x0]
- strh r2, [r0, #0x14]
- ldrh r2, [r1, #0x2]
- strh r2, [r0, #0x16]
- ldrh r2, [r1, #0x4]
- strh r2, [r0, #0x18]
- ldrh r1, [r1, #0x6]
- strh r1, [r0, #0x1a]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853D0
-FUN_020853D0: ; 0x020853D0
- mov r1, #0x1
- strb r1, [r0, #0x2]
- mov r1, #0x0
- strb r1, [r0, #0x3]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853DC
-FUN_020853DC: ; 0x020853DC
- mov r1, #0x1
- strb r1, [r0, #0x5]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853E4
-FUN_020853E4: ; 0x020853E4
- ldrb r0, [r0, #0x2]
- bx lr
-
- thumb_func_start FUN_020853E8
-FUN_020853E8: ; 0x020853E8
- ldrb r0, [r0, #0x3]
- bx lr
-
- thumb_func_start FUN_020853EC
-FUN_020853EC: ; 0x020853EC
- ldrh r0, [r0, #0x1c]
- bx lr
-
- thumb_func_start FUN_020853F0
-FUN_020853F0: ; 0x020853F0
- ldrh r2, [r0, #0x1c]
- strh r2, [r1, #0x0]
- ldrh r0, [r0, #0x1e]
- strh r0, [r1, #0x2]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853FC
-FUN_020853FC: ; 0x020853FC
- add r2, r0, #0x0
- ldr r3, _02085408 ; =MailMsg_copy
- add r2, #0x14
- add r0, r1, #0x0
- add r1, r2, #0x0
- bx r3
- .balign 4
-_02085408: .word MailMsg_copy
-
- thumb_func_start FUN_0208540C
-FUN_0208540C: ; 0x0208540C
- ldrb r0, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_02085410
-FUN_02085410: ; 0x02085410
- ldrb r0, [r0, #0x1]
- bx lr
-
- thumb_func_start FUN_02085414
-FUN_02085414: ; 0x02085414
- ldr r0, [r0, #0x8]
- bx lr
-
- thumb_func_start FUN_02085418
-FUN_02085418: ; 0x02085418
- ldr r0, [r0, #0xc]
- bx lr
-
- thumb_func_start FUN_0208541C
-FUN_0208541C: ; 0x0208541C
- ldr r0, [r0, #0x10]
- bx lr
-
- thumb_func_start FUN_02085420
-FUN_02085420: ; 0x02085420
- ldrb r0, [r0, #0x4]
- bx lr
-
- thumb_func_start FUN_02085424
-FUN_02085424: ; 0x02085424
- ldrb r0, [r0, #0x5]
- bx lr
-
- thumb_func_start FUN_02085428
-FUN_02085428: ; 0x02085428
- ldrb r3, [r0, #0x0]
- cmp r3, #0x0
- beq _02085438
- cmp r3, #0x1
- beq _0208543E
- cmp r3, #0x2
- beq _02085448
- bx lr
-_02085438:
- ldrh r0, [r0, #0x1c]
- strh r0, [r1, #0x0]
- bx lr
-_0208543E:
- ldrh r2, [r0, #0x1c]
- strh r2, [r1, #0x0]
- ldrh r0, [r0, #0x1e]
- strh r0, [r1, #0x2]
- bx lr
-_02085448:
- ldrh r1, [r0, #0x14]
- strh r1, [r2, #0x0]
- ldrh r1, [r0, #0x16]
- strh r1, [r2, #0x2]
- ldrh r1, [r0, #0x18]
- strh r1, [r2, #0x4]
- ldrh r0, [r0, #0x1a]
- strh r0, [r2, #0x6]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0208545C
-FUN_0208545C: ; 0x0208545C
- push {r3, lr}
- ldrb r3, [r0, #0x0]
- cmp r3, #0x0
- beq _0208546C
- cmp r3, #0x1
- beq _0208547C
- cmp r3, #0x2
- b _02085494
-_0208546C:
- ldrh r1, [r1, #0x0]
- ldrh r0, [r0, #0x1c]
- cmp r1, r0
- bne _02085478
- mov r0, #0x1
- pop {r3, pc}
-_02085478:
- mov r0, #0x0
- pop {r3, pc}
-_0208547C:
- ldrh r3, [r1, #0x0]
- ldrh r2, [r0, #0x1c]
- cmp r3, r2
- bne _02085490
- ldrh r1, [r1, #0x2]
- ldrh r0, [r0, #0x1e]
- cmp r1, r0
- bne _02085490
- mov r0, #0x1
- pop {r3, pc}
-_02085490:
- mov r0, #0x0
- pop {r3, pc}
-_02085494:
- add r0, #0x14
- add r1, r2, #0x0
- bl MailMsg_compare
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020854A0
-FUN_020854A0: ; 0x020854A0
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl FUN_0208545C
- cmp r0, #0x0
- bne _020854B4
- mov r0, #0x1
- b _020854B6
-_020854B4:
- mov r0, #0x0
-_020854B6:
- strb r0, [r5, #0x3]
- mov r1, #0x0
- strb r1, [r5, #0x2]
- add r2, r5, #0x0
-_020854BE:
- ldrh r0, [r4, #0x0]
- add r1, r1, #0x1
- add r4, r4, #0x2
- strh r0, [r2, #0x1c]
- add r2, r2, #0x2
- cmp r1, #0x2
- blt _020854BE
- ldrh r0, [r6, #0x0]
- strh r0, [r5, #0x14]
- ldrh r0, [r6, #0x2]
- strh r0, [r5, #0x16]
- ldrh r0, [r6, #0x4]
- strh r0, [r5, #0x18]
- ldrh r0, [r6, #0x6]
- strh r0, [r5, #0x1a]
- pop {r4-r6, pc}
- .balign 4
diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s
index c19e1a5d..4c77e4ac 100644
--- a/arm9/asm/unk_020854E0.s
+++ b/arm9/asm/unk_020854E0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -418,7 +418,7 @@ FUN_020857F8: ; 0x020857F8
mov r0, #0x3
mov r1, #0x28
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x1c
mov r2, #0x28
@@ -629,6 +629,6 @@ FUN_020859A0: ; 0x020859A0
add r0, r5, #0x0
bl OverlayManager_FreeData
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s
index a2f90e0a..162a8aca 100644
--- a/arm9/asm/unk_020859C0.s
+++ b/arm9/asm/unk_020859C0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F96DC
@@ -184,7 +184,7 @@ FUN_020859C0: ; 0x020859C0
mov r0, #0x3
mov r1, #0x35
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x35
bl MOD62_02230F3C
bl MOD62_0222F7E0
@@ -282,7 +282,7 @@ _02085A9A:
cmp r5, #0x6
blt _02085A7C
mov r0, #0x35
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r1, r4, #0x0
add r1, #0xe4
str r0, [r1, #0x0]
@@ -471,37 +471,37 @@ FUN_02085C08: ; 0x02085C08
add r0, #0xe4
ldr r0, [r0, #0x0]
mov r1, #0x1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
mov r1, #0x2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
mov r1, #0x3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
mov r1, #0x4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
mov r1, #0x5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
mov r1, #0x6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
mov r1, #0x7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
@@ -570,7 +570,7 @@ FUN_02085C08: ; 0x02085C08
bl OverlayManager_FreeData
bl FUN_0201CD04
mov r0, #0x35
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02085D68 ; =SDK_OVERLAY_MODULE_08_ID
bl UnloadOverlayByID
mov r0, #0x1
diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s
index 3a4017d7..d110b7f1 100644
--- a/arm9/asm/unk_02086084.s
+++ b/arm9/asm/unk_02086084.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020FA5FC
@@ -23,7 +23,7 @@ FUN_02086084: ; 0x02086084
mov r0, #0x3
mov r1, #0x47
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x80
mov r2, #0x47
@@ -48,7 +48,7 @@ FUN_02086084: ; 0x02086084
bl FUN_02006D98
str r0, [r4, #0x3c]
mov r0, #0x47
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x4]
mov r0, #0x40
mov r1, #0x47
@@ -197,16 +197,16 @@ FUN_020861DC: ; 0x020861DC
bl FUN_02002FEC
ldr r0, [r4, #0x4]
mov r1, #0x1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x4]
mov r1, #0x2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x4]
mov r1, #0x3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x4]
mov r1, #0x4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x4]
bl FreeToHeap
bl FUN_0201C29C
@@ -219,7 +219,7 @@ FUN_020861DC: ; 0x020861DC
add r0, r5, #0x0
bl OverlayManager_FreeData
mov r0, #0x47
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s
index 54ce0190..f01e84e2 100644
--- a/arm9/asm/unk_02086414.s
+++ b/arm9/asm/unk_02086414.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern NNS_GfdDefaultFuncAllocTexVram
.extern NNS_GfdDefaultFuncAllocPlttVram
@@ -294,7 +294,7 @@ _0208655C:
ldmia r5!, {r0-r1}
stmia r3!, {r0-r1}
add r0, r2, #0x0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _02086658 ; =UNK_020FCF84
add r3, sp, #0x54
mov r2, #0xa
@@ -309,26 +309,26 @@ _020865BC:
add r0, r4, #0x0
add r2, sp, #0x54
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x2
add r2, sp, #0x70
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x3
add r2, sp, #0x8c
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0x0
mov r1, #0x3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, _0208665C ; =0x04000008
mov r0, #0x3
ldrh r2, [r1, #0x0]
@@ -356,10 +356,10 @@ _020865BC:
str r0, [r3, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0xa8
pop {r3-r5, pc}
.balign 4
@@ -380,7 +380,7 @@ FUN_02086664: ; 0x02086664
ldr r0, [r4, #0x8]
bl FUN_0200372C
ldr r0, [r4, #0x4]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _02086690 ; =0x027E0000
ldr r1, _02086694 ; =0x00003FF8
mov r0, #0x1
@@ -544,7 +544,7 @@ FUN_02086784: ; 0x02086784
lsr r0, r0, #0x10
str r0, [sp, #0x10]
add r0, r7, #0x0
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0x0
mov r1, #0x1
mov r2, #0x14
@@ -655,7 +655,7 @@ FUN_02086878: ; 0x02086878
str r0, [sp, #0x10]
add r0, r6, #0x0
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x2
mov r1, #0x47
bl ListMenuItems_ctor
@@ -736,10 +736,10 @@ FUN_02086960: ; 0x02086960
bl FUN_0200CCF8
add r0, r4, #0x0
add r0, #0x28
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0x0
add r0, #0x28
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x48]
mov r1, #0x0
bl FUN_02001C5C
@@ -751,9 +751,9 @@ FUN_02086960: ; 0x02086960
FUN_0208698C: ; 0x0208698C
push {r4, lr}
add r4, r0, #0x0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0x0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
thumb_func_start FUN_0208699C
diff --git a/arm9/asm/unk_02086FA8.s b/arm9/asm/unk_02086FA8.s
index 5e0a8dfa..17c66660 100644
--- a/arm9/asm/unk_02086FA8.s
+++ b/arm9/asm/unk_02086FA8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -644,7 +644,7 @@ _020874BC:
cmp r0, #0x19
blt _020874DC
ldr r0, _020874E0 ; =0x00000714
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x64]
add r0, r0, #0x1
str r0, [r4, #0x64]
@@ -688,7 +688,7 @@ _0208750E:
cmp r0, #0x2
bne _0208754C
ldr r0, _02087550 ; =0x00000714
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x6c]
mov r1, #0x2
bl FUN_0200C61C
@@ -737,7 +737,7 @@ _0208756A:
cmp r5, #0x1
bne _0208758C
ldr r0, _020875A8 ; =0x00000714
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x6c]
mov r1, #0x3
bl FUN_0200C61C
@@ -790,7 +790,7 @@ _020875CE:
cmp r5, #0x1
bne _020875F0
ldr r0, _0208760C ; =0x00000714
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x6c]
mov r1, #0x4
bl FUN_0200C61C
@@ -865,7 +865,7 @@ _02087658:
mov r1, #0x5
bl FUN_0200C61C
ldr r0, _02087818 ; =0x00000707
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x40]
mov r1, #0x2
bl FUN_02086B70
@@ -1121,15 +1121,15 @@ _02087874:
b _0208789A
_02087884:
ldr r0, _02087A0C ; =0x00000806
- bl FUN_020054C8
+ bl PlaySE
b _0208789A
_0208788C:
ldr r0, _02087A10 ; =0x000007AA
- bl FUN_020054C8
+ bl PlaySE
b _0208789A
_02087894:
ldr r0, _02087A14 ; =0x00000815
- bl FUN_020054C8
+ bl PlaySE
_0208789A:
ldr r0, [r4, #0x60]
add r0, r0, #0x1
diff --git a/arm9/asm/unk_02087A6C.s b/arm9/asm/unk_02087A6C.s
index 1ab7b908..fd87dfb0 100644
--- a/arm9/asm/unk_02087A6C.s
+++ b/arm9/asm/unk_02087A6C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02087D00.s b/arm9/asm/unk_02087D00.s
index 65d4db3d..a0d8867a 100644
--- a/arm9/asm/unk_02087D00.s
+++ b/arm9/asm/unk_02087D00.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern UNK_020F96DC
.extern UNK_020FA6E8
@@ -206,7 +206,7 @@ FUN_02087E40: ; 0x02087E40
mov r0, #0x3
mov r1, #0x2c
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x18
mov r2, #0x2c
@@ -294,7 +294,7 @@ FUN_02087EE8: ; 0x02087EE8
add r0, r5, #0x0
bl OverlayManager_FreeData
ldr r0, [r4, #0x0]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/unk_02088320.s b/arm9/asm/unk_02088320.s
index aa080143..6439a5f7 100644
--- a/arm9/asm/unk_02088320.s
+++ b/arm9/asm/unk_02088320.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02088814.s b/arm9/asm/unk_02088814.s
index 1e955a77..7f0efabb 100644
--- a/arm9/asm/unk_02088814.s
+++ b/arm9/asm/unk_02088814.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02088858.s b/arm9/asm/unk_02088858.s
index 5f71517a..b471c877 100644
--- a/arm9/asm/unk_02088858.s
+++ b/arm9/asm/unk_02088858.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
@@ -89,14 +89,14 @@ FUN_020888DC: ; 0x020888DC
mov r0, #0x3
mov r1, #0x31
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
bl OverlayManager_GetField18
ldr r0, [r0, #0x8]
mov r1, #0x31
bl FUN_02088898
mov r0, #0x31
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
mov r0, #0x1
diff --git a/arm9/asm/unk_0208898C.s b/arm9/asm/unk_0208898C.s
index 6fef7584..0599aedb 100644
--- a/arm9/asm/unk_0208898C.s
+++ b/arm9/asm/unk_0208898C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
@@ -33,7 +33,7 @@ FUN_020889B0: ; 0x020889B0
mov r0, #0x3
mov r1, #0x37
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0x0
mov r1, #0x24
mov r2, #0x37
@@ -145,7 +145,7 @@ FUN_02088A78: ; 0x02088A78
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r6, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x1
pop {r4-r6, pc}
.balign 4
diff --git a/arm9/asm/unk_02088AAC.s b/arm9/asm/unk_02088AAC.s
deleted file mode 100644
index 6f47b864..00000000
--- a/arm9/asm/unk_02088AAC.s
+++ /dev/null
@@ -1,345 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020FD6F4
-UNK_020FD6F4: ; 0x020FD6F4
- .byte 0x04, 0xFF, 0x00, 0x00
-
- .global UNK_020FD6F8
-UNK_020FD6F8: ; 0x020FD6F8
- .word MOD75_021E6BA0, MOD75_021E6D6C, MOD75_021E6F00, SDK_OVERLAY_MODULE_75_ID
-
- .global UNK_020FD708
-UNK_020FD708: ; 0x020FD708
- .word MOD73_021D74F0, MOD73_021D758C, MOD73_021D7640, SDK_OVERLAY_MODULE_73_ID
-
- .global UNK_020FD718
-UNK_020FD718: ; 0x020FD718
- .word MOD68_021D74E0, MOD68_021D75D8, MOD68_021D762C, SDK_OVERLAY_MODULE_68_ID
-
- .text
-
- thumb_func_start FUN_02088AAC
-FUN_02088AAC: ; 0x02088AAC
- push {r4, lr}
- add r4, r1, #0x0
- ldr r1, [r4, #0x0]
- cmp r1, #0x5
- bhi _02088AF6
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02088AC2: ; jump table (using 16-bit offset)
- .short _02088ACE - _02088AC2 - 2; case 0
- .short _02088AD6 - _02088AC2 - 2; case 1
- .short _02088ADE - _02088AC2 - 2; case 2
- .short _02088AE6 - _02088AC2 - 2; case 3
- .short _02088AEE - _02088AC2 - 2; case 4
- .short _02088AF2 - _02088AC2 - 2; case 5
-_02088ACE:
- bl FUN_02088B4C
- str r0, [r4, #0x0]
- b _02088AF6
-_02088AD6:
- bl FUN_02088BA8
- str r0, [r4, #0x0]
- b _02088AF6
-_02088ADE:
- bl FUN_02088C3C
- str r0, [r4, #0x0]
- b _02088AF6
-_02088AE6:
- bl FUN_02088CDC
- str r0, [r4, #0x0]
- b _02088AF6
-_02088AEE:
- mov r0, #0x1
- pop {r4, pc}
-_02088AF2:
- mov r0, #0x4
- pop {r4, pc}
-_02088AF6:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02088AFC
-FUN_02088AFC: ; 0x02088AFC
- push {r3-r5, lr}
- sub sp, #0x10
- ldr r5, _02088B24 ; =UNK_020FD708
- add r3, sp, #0x0
- add r4, r0, #0x0
- add r2, r3, #0x0
- ldmia r5!, {r0-r1}
- stmia r3!, {r0-r1}
- ldmia r5!, {r0-r1}
- stmia r3!, {r0-r1}
- add r0, r2, #0x0
- ldr r2, [r4, #0x0]
- add r1, r4, #0x0
- bl OverlayManager_new
- str r0, [r4, #0x1c]
- mov r0, #0x2
- add sp, #0x10
- pop {r3-r5, pc}
- nop
-_02088B24: .word UNK_020FD708
-
- thumb_func_start FUN_02088B28
-FUN_02088B28: ; 0x02088B28
- push {r4, lr}
- add r4, r0, #0x0
- add r0, #0x1c
- bl FUN_0208898C
- cmp r0, #0x0
- bne _02088B3A
- mov r0, #0x2
- pop {r4, pc}
-_02088B3A:
- ldr r0, [r4, #0x20]
- cmp r0, #0x1
- bne _02088B44
- mov r0, #0x0
- pop {r4, pc}
-_02088B44:
- mov r0, #0x3
- pop {r4, pc}
-
- thumb_func_start FUN_02088B48
-FUN_02088B48: ; 0x02088B48
- mov r0, #0x4
- bx lr
-
- thumb_func_start FUN_02088B4C
-FUN_02088B4C: ; 0x02088B4C
- push {r3-r5, lr}
- sub sp, #0x10
- ldr r3, _02088BA0 ; =UNK_020FD6F8
- add r2, sp, #0x0
- add r5, r0, #0x0
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldr r0, [r5, #0x10]
- ldr r1, _02088BA4 ; =UNK_020FD6F4
- ldr r0, [r0, #0x14]
- ldr r2, [r5, #0x0]
- bl CreateBagView
- add r4, r0, #0x0
- ldrh r0, [r5, #0x6]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- cmp r0, #0x1
- bne _02088B7A
- mov r2, #0x5
- b _02088B7C
-_02088B7A:
- mov r2, #0x4
-_02088B7C:
- ldr r1, [r5, #0x10]
- lsl r2, r2, #0x18
- ldr r1, [r1, #0xc]
- ldr r3, [r5, #0xc]
- add r0, r4, #0x0
- lsr r2, r2, #0x18
- bl FUN_0206E314
- ldr r2, [r5, #0x0]
- add r0, sp, #0x0
- add r1, r4, #0x0
- bl OverlayManager_new
- str r0, [r5, #0x1c]
- str r4, [r5, #0x18]
- mov r0, #0x1
- add sp, #0x10
- pop {r3-r5, pc}
- .balign 4
-_02088BA0: .word UNK_020FD6F8
-_02088BA4: .word UNK_020FD6F4
-
- thumb_func_start FUN_02088BA8
-FUN_02088BA8: ; 0x02088BA8
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r0, #0x1c
- bl FUN_0208898C
- cmp r0, #0x0
- bne _02088BBA
- mov r0, #0x1
- pop {r3-r5, pc}
-_02088BBA:
- ldr r0, [r4, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl BagView_new
- add r5, r0, #0x0
- bl FUN_0206E308
- add r2, r0, #0x0
- ldr r1, [r4, #0x18]
- add r0, r5, #0x0
- bl memcpy
- ldr r0, [r4, #0x18]
- bl FreeToHeap
- mov r0, #0x0
- str r0, [r4, #0x18]
- add r0, r5, #0x0
- bl FUN_0206E37C
- str r0, [r4, #0x8]
- add r0, r5, #0x0
- bl FreeToHeap
- add r0, r5, #0x0
- bl FUN_0206E384
- cmp r0, #0x5
- bhi _02088C16
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02088C02: ; jump table (using 16-bit offset)
- .short _02088C1E - _02088C02 - 2; case 0
- .short _02088C0E - _02088C02 - 2; case 1
- .short _02088C1E - _02088C02 - 2; case 2
- .short _02088C1E - _02088C02 - 2; case 3
- .short _02088C1E - _02088C02 - 2; case 4
- .short _02088C12 - _02088C02 - 2; case 5
-_02088C0E:
- mov r0, #0x2
- pop {r3-r5, pc}
-_02088C12:
- mov r0, #0x5
- pop {r3-r5, pc}
-_02088C16:
- bl GF_AssertFail
- mov r0, #0x95
- str r0, [r4, #0x8]
-_02088C1E:
- ldr r0, [r4, #0x10]
- ldr r1, [r4, #0x8]
- ldr r0, [r0, #0x14]
- lsl r1, r1, #0x10
- ldr r3, [r4, #0x0]
- lsr r1, r1, #0x10
- mov r2, #0x1
- bl Bag_TakeItem
- cmp r0, #0x0
- bne _02088C38
- bl GF_AssertFail
-_02088C38:
- mov r0, #0x4
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02088C3C
-FUN_02088C3C: ; 0x02088C3C
- push {r3-r7, lr}
- sub sp, #0x18
- add r5, r0, #0x0
- ldr r0, [r5, #0x10]
- ldr r3, _02088CD8 ; =UNK_020FD718
- ldr r0, [r0, #0x14]
- add r2, sp, #0x8
- str r0, [sp, #0x0]
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r3!, {r0-r1}
- stmia r2!, {r0-r1}
- ldr r0, [r5, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl FUN_020851B8
- str r0, [r5, #0x18]
- ldr r1, [r5, #0x8]
- mov r2, #0x1
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- bl FUN_020851DC
- mov r6, #0x0
- add r4, r6, #0x0
-_02088C70:
- add r0, r4, #0x0
- bl BerryToItemId
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- ldr r0, [sp, #0x0]
- ldr r3, [r5, #0x0]
- add r1, r7, #0x0
- mov r2, #0x1
- bl Bag_HasItem
- cmp r0, #0x1
- bne _02088C9A
- ldr r0, [r5, #0x18]
- add r1, r7, #0x0
- mov r2, #0x0
- bl FUN_020851DC
- add r0, r6, #0x1
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
-_02088C9A:
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x40
- blo _02088C70
- add r3, sp, #0x4
- ldr r0, [r5, #0xc]
- mov r1, #0x4
- add r2, sp, #0x4
- add r3, #0x1
- bl FUN_0206F17C
- add r2, sp, #0x4
- ldrb r1, [r2, #0x1]
- add r3, r6, #0x2
- lsl r3, r3, #0x18
- ldrb r2, [r2, #0x0]
- ldr r0, [r5, #0x18]
- lsr r3, r3, #0x18
- bl FUN_020851F8
- ldr r1, [r5, #0x18]
- ldr r2, [r5, #0x0]
- add r0, sp, #0x8
- bl OverlayManager_new
- str r0, [r5, #0x1c]
- mov r0, #0x3
- add sp, #0x18
- pop {r3-r7, pc}
- nop
-_02088CD8: .word UNK_020FD718
-
- thumb_func_start FUN_02088CDC
-FUN_02088CDC: ; 0x02088CDC
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- add r0, #0x1c
- bl FUN_0208898C
- cmp r0, #0x0
- bne _02088CF2
- add sp, #0x4
- mov r0, #0x3
- pop {r3-r4, pc}
-_02088CF2:
- add r1, sp, #0x0
- ldr r0, [r4, #0x18]
- add r1, #0x1
- add r2, sp, #0x0
- bl FUN_0208524C
- add r3, sp, #0x0
- ldrb r2, [r3, #0x0]
- ldrb r3, [r3, #0x1]
- ldr r0, [r4, #0xc]
- mov r1, #0x4
- bl FUN_0206F190
- ldr r0, [r4, #0x18]
- bl FreeToHeap
- mov r0, #0x0
- str r0, [r4, #0x18]
- add sp, #0x4
- pop {r3-r4, pc}
- .balign 4
diff --git a/arm9/asm/unk_02088D1C.s b/arm9/asm/unk_02088D1C.s
index f82d0498..b5d502ee 100644
--- a/arm9/asm/unk_02088D1C.s
+++ b/arm9/asm/unk_02088D1C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_02088DD8.s b/arm9/asm/unk_02088DD8.s
index 1dda59b0..3df58ffe 100644
--- a/arm9/asm/unk_02088DD8.s
+++ b/arm9/asm/unk_02088DD8.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_02088F0C.s b/arm9/asm/unk_02088F0C.s
index aab23503..fa94ecfc 100644
--- a/arm9/asm/unk_02088F0C.s
+++ b/arm9/asm/unk_02088F0C.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .rodata
diff --git a/arm9/asm/unk_020893E0.s b/arm9/asm/unk_020893E0.s
index 566bab92..5772c051 100644
--- a/arm9/asm/unk_020893E0.s
+++ b/arm9/asm/unk_020893E0.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.section .data
diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s
index 3facd182..b6b6ec25 100644
--- a/arm9/asm/unk_02089498.s
+++ b/arm9/asm/unk_02089498.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -42,7 +42,7 @@ FUN_02089498: ; 0x02089498
mov r0, #0x3
mov r1, #0x58
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x38
mov r2, #0x58
@@ -119,7 +119,7 @@ _020894FC:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0x0
bl FUN_0208961C
add r0, r4, #0x0
@@ -197,7 +197,7 @@ FUN_020895F0: ; 0x020895F0
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r4, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x0
bl OS_ResetSystem
mov r0, #0x1
@@ -209,7 +209,7 @@ FUN_02089610: ; 0x02089610
ldr r0, [r0, #0x14]
bx r3
nop
-_02089618: .word FUN_0201AB60
+_02089618: .word DoScheduledBgGpuUpdates
thumb_func_start FUN_0208961C
FUN_0208961C: ; 0x0208961C
@@ -227,7 +227,7 @@ _02089628:
add r0, sp, #0x34
bl GX_SetBanks
ldr r0, [r4, #0x0]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0x24
ldr r5, _020896CC ; =UNK_020FF314
str r0, [r4, #0x14]
@@ -237,7 +237,7 @@ _02089628:
ldmia r5!, {r0-r1}
stmia r3!, {r0-r1}
add r0, r2, #0x0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _020896D0 ; =UNK_020FF324
add r3, sp, #0x8
ldmia r5!, {r0-r1}
@@ -252,10 +252,10 @@ _02089628:
str r0, [r3, #0x0]
ldr r0, [r4, #0x14]
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x14]
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0x0
str r1, [sp, #0x0]
ldr r0, [r4, #0x0]
@@ -280,13 +280,13 @@ _02089628:
ldr r3, [r4, #0x0]
mov r1, #0x20
add r2, r0, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r1, _020896DC ; =0x00006C21
mov r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, _020896DC ; =0x00006C21
mov r0, #0x4
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x5c
pop {r4-r5, pc}
.balign 4
@@ -303,31 +303,31 @@ FUN_020896E0: ; 0x020896E0
add r4, r0, #0x0
mov r0, #0x0
add r1, r0, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x1
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x2
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x3
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x4
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x5
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x6
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x7
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x14]
mov r1, #0x0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x14]
bl FreeToHeap
pop {r4, pc}
@@ -350,7 +350,7 @@ FUN_02089734: ; 0x02089734
ldr r0, [r4, #0x14]
ldr r2, _02089778 ; =UNK_020FF304
add r1, #0x1c
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd8
str r0, [sp, #0x0]
mov r0, #0x20
@@ -371,7 +371,7 @@ FUN_0208977C: ; 0x0208977C
push {r4, lr}
add r4, r0, #0x0
add r0, #0x1c
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x18]
bl DestroyMsgData
pop {r4, pc}
@@ -502,7 +502,7 @@ _0208986C:
_0208987E:
ldr r0, [r4, #0x14]
add r1, r5, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r5, #0x1
_02089888:
add r0, r5, #0x0
diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s
index 9c06a4ab..7af6109f 100644
--- a/arm9/asm/unk_02089960.s
+++ b/arm9/asm/unk_02089960.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -38,7 +38,7 @@ FUN_02089960: ; 0x02089960
mov r0, #0x3
mov r1, #0x58
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0x0
mov r1, #0x3c
mov r2, #0x58
@@ -101,7 +101,7 @@ _020899B8:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r6, #0x0
bl FUN_02089A6C
add r0, r6, #0x0
@@ -141,7 +141,7 @@ FUN_02089A40: ; 0x02089A40
add r0, r5, #0x0
bl OverlayManager_FreeData
add r0, r4, #0x0
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _02089A64 ; =SDK_OVERLAY_MODULE_83_ID
ldr r1, _02089A68 ; =MOD83_0223A360
bl RegisterMainOverlay
@@ -167,7 +167,7 @@ _02089A78:
add r0, sp, #0x34
bl GX_SetBanks
ldr r0, [r4, #0x0]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0x24
ldr r5, _02089B1C ; =UNK_020FF380
str r0, [r4, #0x18]
@@ -177,7 +177,7 @@ _02089A78:
ldmia r5!, {r0-r1}
stmia r3!, {r0-r1}
add r0, r2, #0x0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _02089B20 ; =UNK_020FF390
add r3, sp, #0x8
ldmia r5!, {r0-r1}
@@ -192,10 +192,10 @@ _02089A78:
str r0, [r3, #0x0]
ldr r0, [r4, #0x18]
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0x0
str r1, [sp, #0x0]
ldr r0, [r4, #0x0]
@@ -220,13 +220,13 @@ _02089A78:
ldr r3, [r4, #0x0]
mov r1, #0x20
add r2, r0, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x0
add r1, r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x4
mov r1, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x5c
pop {r4-r5, pc}
.balign 4
@@ -242,31 +242,31 @@ FUN_02089B2C: ; 0x02089B2C
add r4, r0, #0x0
mov r0, #0x0
add r1, r0, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x1
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x2
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x3
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x4
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x5
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x6
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x7
mov r1, #0x0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x18]
mov r1, #0x0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
bl FreeToHeap
pop {r4, pc}
@@ -289,7 +289,7 @@ FUN_02089B80: ; 0x02089B80
ldr r0, [r4, #0x18]
ldr r2, _02089BC8 ; =UNK_020FF378
add r1, #0x20
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd8
str r0, [sp, #0x0]
mov r0, #0x20
@@ -311,7 +311,7 @@ FUN_02089BCC: ; 0x02089BCC
push {r4, lr}
add r4, r0, #0x0
add r0, #0x20
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x1c]
bl DestroyMsgData
pop {r4, pc}
@@ -373,10 +373,10 @@ _02089C34:
_02089C3C:
ldr r1, _02089CC8 ; =0x00006C21
add r0, r5, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, _02089CC8 ; =0x00006C21
mov r0, #0x4
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x6
mov r1, #0x1
str r0, [sp, #0x0]
@@ -424,10 +424,10 @@ _02089CA2:
bne _02089CC2
add r0, r5, #0x0
add r1, r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x4
add r1, r5, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x5
str r0, [r4, #0x4]
b _02089CC2
diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s
index e7b88272..4ef386dd 100644
--- a/arm9/asm/unk_02089D90.s
+++ b/arm9/asm/unk_02089D90.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -57,7 +57,7 @@ FUN_02089D90: ; 0x02089D90
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _02089EFC ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
@@ -79,18 +79,18 @@ FUN_02089D90: ; 0x02089D90
ldr r0, _02089F0C ; =UNK_020FF418
bl GX_SetBanks
add r0, r4, #0x0
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r5, r0, #0x0
ldr r0, _02089F10 ; =UNK_020FF3EC
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0x0
ldr r2, _02089F14 ; =UNK_020FF3FC
add r0, r5, #0x0
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0x0
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0x0
str r1, [sp, #0x0]
ldr r2, _02089F18 ; =0x000001F7
@@ -106,13 +106,13 @@ FUN_02089D90: ; 0x02089D90
mov r1, #0x20
add r2, r0, #0x0
add r3, r4, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r1, _02089F1C ; =0x00006C21
mov r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, _02089F1C ; =0x00006C21
mov r0, #0x4
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x1
mov r1, #0x1a
mov r2, #0x5
@@ -128,7 +128,7 @@ FUN_02089D90: ; 0x02089D90
ldr r2, _02089F20 ; =UNK_020FF3E4
add r0, r5, #0x0
add r1, sp, #0xc
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd0
str r0, [sp, #0x0]
mov r0, #0x90
diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s
index b5c93a8a..63f6e77a 100644
--- a/arm9/asm/unk_02089F24.s
+++ b/arm9/asm/unk_02089F24.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
.extern UNK_020FF3E4
@@ -61,7 +61,7 @@ FUN_02089F24: ; 0x02089F24
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _0208A090 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
@@ -83,18 +83,18 @@ FUN_02089F24: ; 0x02089F24
ldr r0, _0208A0A0 ; =UNK_020FF418
bl GX_SetBanks
add r0, r4, #0x0
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r5, r0, #0x0
ldr r0, _0208A0A4 ; =UNK_020FF3EC
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0x0
ldr r2, _0208A0A8 ; =UNK_020FF3FC
add r0, r5, #0x0
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0x0
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0x0
str r1, [sp, #0x0]
ldr r2, _0208A0AC ; =0x000001F7
@@ -110,13 +110,13 @@ FUN_02089F24: ; 0x02089F24
mov r1, #0x20
add r2, r0, #0x0
add r3, r4, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r1, _0208A0B0 ; =0x00006C21
mov r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, _0208A0B0 ; =0x00006C21
mov r0, #0x4
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x1
mov r1, #0x1a
mov r2, #0x5
@@ -132,7 +132,7 @@ FUN_02089F24: ; 0x02089F24
ldr r2, _0208A0B4 ; =UNK_020FF3E4
add r0, r5, #0x0
add r1, sp, #0xc
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd0
str r0, [sp, #0x0]
mov r0, #0x90
@@ -230,7 +230,7 @@ _0208A0C8:
str r0, [r2, #0x0]
mov r0, #0x4
mov r1, #0x8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, _0208A230 ; =gMain + 0x60
mov r1, #0x0
strb r1, [r0, #0x5]
@@ -252,18 +252,18 @@ _0208A0C8:
ldr r0, _0208A240 ; =UNK_020FF474
bl GX_SetBanks
add r0, r4, #0x0
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r5, r0, #0x0
ldr r0, _0208A244 ; =UNK_020FF448
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0x0
ldr r2, _0208A248 ; =UNK_020FF458
add r0, r5, #0x0
add r3, r1, #0x0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0x0
mov r1, #0x0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0x0
str r1, [sp, #0x0]
ldr r2, _0208A24C ; =0x000001F7
@@ -279,13 +279,13 @@ _0208A0C8:
mov r1, #0x20
add r2, r0, #0x0
add r3, r4, #0x0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r1, _0208A250 ; =0x00006C21
mov r0, #0x0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, _0208A250 ; =0x00006C21
mov r0, #0x4
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #0x1
mov r1, #0x1a
mov r2, #0x6
@@ -301,7 +301,7 @@ _0208A0C8:
ldr r2, _0208A254 ; =UNK_020FF440
add r0, r5, #0x0
add r1, sp, #0xc
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd0
str r0, [sp, #0x0]
mov r0, #0x90
diff --git a/arm9/asm/unk_0208A258.s b/arm9/asm/unk_0208A258.s
index 21a8f91a..450155ad 100644
--- a/arm9/asm/unk_0208A258.s
+++ b/arm9/asm/unk_0208A258.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.text
diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s
index f96c2e10..8cc2030f 100644
--- a/arm9/asm/unk_0208A338.s
+++ b/arm9/asm/unk_0208A338.s
@@ -1,5 +1,5 @@
- .include "asm/macros.inc"
- .include "global.inc"
+ .include "asm/macros.inc"
+ .include "global.inc"
.extern gMain
@@ -94,36 +94,36 @@ FUN_0208A400: ; 0x0208A400
push {r4, lr}
add r4, r0, #0x0
add r0, #0x18
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
beq _0208A41E
add r0, r4, #0x0
add r0, #0x18
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0x0
add r0, #0x18
bl InitWindow
_0208A41E:
add r0, r4, #0x0
add r0, #0x28
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
beq _0208A43A
add r0, r4, #0x0
add r0, #0x28
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0x0
add r0, #0x28
bl InitWindow
_0208A43A:
add r0, r4, #0x0
add r0, #0x38
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
beq _0208A456
add r0, r4, #0x0
add r0, #0x38
- bl FUN_02019178
+ bl RemoveWindow
add r4, #0x38
add r0, r4, #0x0
bl InitWindow
@@ -455,7 +455,7 @@ _0208A6F4:
bl ReadMsgDataIntoString
_0208A6FA:
add r0, r4, #0x0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
bne _0208A722
ldr r0, [r5, #0x0]
@@ -508,7 +508,7 @@ FUN_0208A760: ; 0x0208A760
add r4, r0, #0x0
add r4, #0x18
add r0, r4, #0x0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
beq _0208A778
add r0, r4, #0x0
@@ -526,7 +526,7 @@ FUN_0208A77C: ; 0x0208A77C
add r7, r5, #0x0
add r7, #0x28
add r0, r7, #0x0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
bne _0208A808
mov r0, #0x0
@@ -553,7 +553,7 @@ FUN_0208A77C: ; 0x0208A77C
ldr r0, [r0, #0x8]
mov r2, #0x3
mov r3, #0x11
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r7, #0x0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -614,7 +614,7 @@ FUN_0208A82C: ; 0x0208A82C
add r7, r5, #0x0
add r7, #0x38
add r0, r7, #0x0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0x0
bne _0208A8B8
mov r0, #0x0
@@ -641,7 +641,7 @@ FUN_0208A82C: ; 0x0208A82C
ldr r0, [r0, #0x8]
mov r2, #0x3
mov r3, #0x19
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r7, #0x0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -742,7 +742,7 @@ _0208A928:
tst r1, r0
beq _0208A93A
ldr r0, _0208A994 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x8
ldr r0, [r4, #0x5c]
pop {r4, pc}
@@ -751,7 +751,7 @@ _0208A93A:
tst r0, r1
beq _0208A94E
ldr r0, _0208A994 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x60]
add sp, #0x8
sub r0, r0, #0x1
@@ -779,9 +779,9 @@ _0208A954:
lsl r3, r3, #0x4
bl ListMenuUpdateCursorObj
ldr r0, [r4, #0x68]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, _0208A994 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x0
mvn r0, r0
add sp, #0x8
diff --git a/arm9/global.inc b/arm9/global.inc
index c513e6b4..fb7fe343 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -220,7 +220,7 @@
.extern FUN_02002218
.extern RenderText
.extern FUN_02002840
-.extern FUN_02002B60
+.extern TextFlags_SetCanABSpeedUpPrint
.extern FUN_02002B7C
.extern FUN_02002BB8
.extern FUN_02002BD4
@@ -350,7 +350,7 @@
.extern FUN_0200541C
.extern FUN_02005454
.extern FUN_020054A8
-.extern FUN_020054C8
+.extern PlaySE
.extern FUN_020054F0
.extern FUN_02005508
.extern FUN_02005514
@@ -1010,116 +1010,116 @@
.extern Main_SetVBlankIntrCB
.extern FUN_02015F1C
.extern FUN_02015F34
-.extern FUN_020161A4
-.extern FUN_020161F8
-.extern FUN_020162FC
-.extern FUN_02016324
-.extern FUN_020163BC
+.extern AllocAndReadFile
+.extern OpenAndReadWholeFile
+.extern ClearFileCache
+.extern OpenFileCached
+.extern InitKeypadAndTouchpad
.extern FUN_02016438
.extern FUN_02016444
.extern FUN_02016454
-.extern FUN_02016464
-.extern FUN_0201669C
-.extern FUN_020166A8
-.extern FUN_020166B8
-.extern FUN_020166C8
-.extern FUN_0201681C
-.extern FUN_02016828
-.extern FUN_020168D0
+.extern ReadKeypadAndTocuhpad
+.extern SetKeyRepeatTimers
+.extern SetSoftResetDisableMask
+.extern ClearSoftResetDisableMask
+.extern InitHeapSystem
+.extern CreateHeap
+.extern CreateHeapAtEnd
+.extern DestroyHeap
.extern AllocFromHeap
.extern AllocFromHeapAtEnd
.extern FreeToHeap
.extern FreeToHeapExplicit
-.extern FUN_02016AF8
-.extern FUN_02016B20
-.extern FUN_02016B44
-.extern FUN_02016B90
-.extern FUN_02016B94
-.extern FUN_02016BB8
-.extern FUN_02016BBC
-.extern FUN_02016BF4
-.extern FUN_02016C18
-.extern FUN_020170F4
-.extern FUN_020178A0
-.extern FUN_020178BC
-.extern FUN_0201797C
-.extern FUN_020179E0
-.extern FUN_02017B48
-.extern FUN_02017B54
-.extern FUN_02017B60
-.extern FUN_02017BD0
-.extern FUN_02017CD0
-.extern FUN_02017CE8
-.extern FUN_02017DFC
-.extern FUN_02017E14
-.extern FUN_02017F18
-.extern FUN_02017F48
-.extern FUN_02017FB4
-.extern FUN_02017FE4
-.extern FUN_02018148
-.extern FUN_02018170
-.extern FUN_020181EC
-.extern FUN_02018540
-.extern FUN_020186B4
-.extern FUN_02018744
-.extern FUN_02018768
-.extern FUN_0201878C
-.extern FUN_020187B0
-.extern FUN_0201886C
-.extern FUN_02018878
-.extern FUN_02018884
+.extern GF_ExpHeap_FndGetTotalFreeSize
+.extern GF_ExpHeap_FndInitAllocator
+.extern ReallocFromHeap
+.extern GF_heap_c_dummy_return_true
+.extern BgConfig_Alloc
+.extern BgConfig_GetHeapId
+.extern SetBothScreensModesAndDisable
+.extern SetScreenModeAndDisable
+.extern InitBgFromTemplate
+.extern SetBgControlParam
+.extern FreeBgTilemapBuffer
+.extern SetBgPriority
+.extern ToggleBgLayer
+.extern BgSetPosTextAndCommit
+.extern Bg_GetXpos
+.extern Bg_GetYpos
+.extern Bg_SetTextDimAndAffineParams
+.extern SetBgAffine
+.extern BgCommitTilemapBufferToVram
+.extern BgCopyOrUncompressTilemapBufferRangeToVram
+.extern BG_LoadScreenTilemapData
+.extern BG_LoadCharTilesData
+.extern BG_ClearCharDataRange
+.extern BG_FillCharDataRange
+.extern BG_LoadPlttData
+.extern BG_SetMaskColor
+.extern LoadRectToBgTilemapRect
+.extern CopyToBgTilemapRect
+.extern CopyRectToBgTilemapRect
+.extern FillBgTilemapRect
+.extern BgTilemapRectChangePalette
+.extern BgClearTilemapBufferAndCommit
+.extern BgFillTilemapBufferAndCommit
+.extern BgFillTilemapBufferAndSchedule
+.extern BgGetCharPtr
+.extern GetBgTilemapBuffer
+.extern GetBgAffineRotation
+.extern GetBgPriority
.extern BlitBitmapRect4Bit
-.extern FUN_02018F4C
+.extern FillBitmapRect8Bit
.extern AllocWindows
.extern InitWindow
-.extern FUN_02019048
-.extern FUN_02019064
-.extern FUN_020190EC
-.extern FUN_02019150
-.extern FUN_02019178
-.extern FUN_020191A4
+.extern WindowIsInUse
+.extern AddWindowParameterized
+.extern AddTextWindowTopLeftCorner
+.extern AddWindow
+.extern RemoveWindow
+.extern WindowArray_dtor
.extern CopyWindowToVram
-.extern FUN_02019220
-.extern FUN_02019270
-.extern FUN_0201928C
-.extern FUN_020192B8
-.extern FUN_020192D4
-.extern FUN_02019358
-.extern FUN_020193B4
-.extern FUN_02019444
-.extern FUN_0201949C
-.extern FUN_020194C8
-.extern FUN_020194E0
-.extern FUN_0201951C
-.extern FUN_02019548
-.extern FUN_02019570
-.extern FUN_0201958C
-.extern FUN_020195A8
-.extern FUN_020195D0
-.extern FUN_020195E4
-.extern FUN_0201960C
+.extern ScheduleWindowCopyToVram
+.extern PutWindowTilemap
+.extern PutWindowTilemapRectAnchoredTopLeft
+.extern ClearWindowTilemap
+.extern PutWindowTilemap_TextMode
+.extern PutWindowTilemap_AffineMode
+.extern ClearWindowTilemapText
+.extern ClearWindowTilemapAffine
+.extern CopyWindowToVram_TextMode
+.extern ScheduleWindowCopyToVram_TextMode
+.extern CopyWindowToVram_AffineMode
+.extern ScheduleWindowCopyToVram_AffineMode
+.extern CopyWindowPixelsToVram_TextMode
+.extern ClearWindowTilemapAndCopyToVram
+.extern ClearWindowTilemapAndScheduleTransfer
+.extern ClearWindowTilemapAndNowCopy_TextMode
+.extern ClearWindowTilemapAndCommit_TextMode
+.extern ClearWindowTilemapAndNowCopy_AffineMode
+.extern ClearWindowTilemapAndCommit_AffineMode
.extern FillWindowPixelBuffer
.extern BlitBitmapRectToWindow
.extern BlitBitmapRect
.extern FillWindowPixelRect
-.extern FUN_0201974C
+.extern CopyGlyphToWindow
.extern ScrollWindow
-.extern FUN_0201AB08
+.extern GetWindowBgId
.extern GetWindowWidth
.extern GetWindowHeight
-.extern FUN_0201AB14
-.extern FUN_0201AB18
-.extern FUN_0201AB1C
-.extern FUN_0201AB20
-.extern FUN_0201AB24
-.extern FUN_0201AB28
-.extern FUN_0201AB44
-.extern FUN_0201AB60
-.extern FUN_0201AC68
-.extern FUN_0201AEE4
-.extern FUN_0201AF08
-.extern FUN_0201AF50
-.extern FUN_0201AFBC
+.extern GetWindowX
+.extern GetWindowY
+.extern MoveWindowX
+.extern MoveWindowY
+.extern SetWindowPaletteNum
+.extern LoadCharacterDataFromFile
+.extern LoadPaletteDataFromFile
+.extern DoScheduledBgGpuUpdates
+.extern ScheduleBgTilemapBufferTransfer
+.extern ScheduleSetBgPosText
+.extern ScheduleSetBgAffineRotation
+.extern ScheduleSetBgAffinePos
+.extern DoesPixelAtScreenXYMatchPtrVal
.extern FUN_0201B21C
.extern FUN_0201B234
.extern FUN_0201B254
@@ -3319,7 +3319,7 @@
.extern ScrCmd_Unk0216
.extern ScrCmd_Unk0217
.extern ScrCmd_GiveMon
-.extern ScrCmd_GetPartySpecies
+.extern ScrCmd_GetPartyMonSpecies
.extern ScrCmd_CheckPartyMonOTID
.extern ScrCmd_GiveEgg
.extern ScrCmd_SetPartyMonMove
@@ -3331,29 +3331,29 @@
.extern ScrCmd_GetPartyMonNature
.extern ScrCmd_FindPartyMonWithNature
.extern ScrCmd_GetPartyMonFriendship
-.extern ScrCmd_Unk01BA
-.extern ScrCmd_Unk01BB
-.extern ScrCmd_Unk0281
-.extern ScrCmd_Unk0247
-.extern ScrCmd_Unk0248
-.extern ScrCmd_Unk0177
-.extern ScrCmd_Unk019A
-.extern ScrCmd_Unk019B
-.extern ScrCmd_Unk019C
-.extern ScrCmd_Unk019D
-.extern ScrCmd_Unk0119
-.extern ScrCmd_Unk011A
-.extern ScrCmd_Unk01C8
-.extern ScrCmd_Unk01C9
-.extern ScrCmd_Unk01CA
-.extern ScrCmd_Unk01EE
-.extern ScrCmd_Unk01F0
-.extern ScrCmd_Unk01C0
-.extern ScrCmd_Unk022E
-.extern ScrCmd_Unk022F
-.extern ScrCmd_Unk0230
-.extern ScrCmd_Unk0231
-.extern ScrCmd_Unk02B7
+.extern ScrCmd_AddPartyMonFriendship
+.extern ScrCmd_SubtractPartyMonFriendship
+.extern ScrCmd_GetPartyMonContestCondition
+.extern ScrCmd_GetLeadingPartyMonSlot
+.extern ScrCmd_GetPartyMonTypes
+.extern ScrCmd_CountPartyMons
+.extern ScrCmd_CountPartyMons_OmitEggs
+.extern ScrCmd_CountAvailablePartyMons_IgnoreSlot
+.extern ScrCmd_CountAvailablePartyAndPCMons
+.extern ScrCmd_GetPartyEggCount
+.extern ScrCmd_CheckPartyForPokerus
+.extern ScrCmd_GetPartyMonGender
+.extern ScrCmd_CountPartyMonMoves
+.extern ScrCmd_ForgetPartyMonMove
+.extern ScrCmd_GetPartyMonMove
+.extern ScrCmd_GetPartyMonHeldItem
+.extern ScrCmd_ResetPartyMonHeldItem
+.extern ScrCmd_CheckPartyForSpecies
+.extern ScrCmd_CountPartyMonRibbons
+.extern ScrCmd_CountTotalPartyRibbons
+.extern ScrCmd_PartyMonHasRibbon
+.extern ScrCmd_GivePartyMonRibbon
+.extern ScrCmd_CheckPartyForBadEgg
.extern ScrCmd_Unk00A0
.extern ScrCmd_CountFossils
.extern ScrCmd_GetFossilPokemon
@@ -4974,10 +4974,10 @@
.extern FUN_0206E2AC
.extern FUN_0206E2E0
.extern FUN_0206E2E8
-.extern BagView_new
-.extern FUN_0206E308
+.extern BagView_New
+.extern BagView_sizeof
.extern FUN_0206E314
-.extern BagView_setitem
+.extern BagView_SetItem
.extern FUN_0206E340
.extern FUN_0206E354
.extern FUN_0206E358
@@ -5798,10 +5798,10 @@
.extern NNS_SndArcPlayerStartSeqEx
.extern NNS_SndArcPlayerStartSeq
.extern NNS_SndArcPlayerSetup
-.extern FUN_020C5D8C
-.extern FUN_020C5E04
-.extern FUN_020C6034
-.extern FUN_020C605C
+.extern GX_GetBankForTex
+.extern GX_DisableBankForSubBG
+.extern GX_ResetBankForSubBGExtPltt
+.extern GX_ResetBankForSubOBJ
.extern CARDi_TryWaitAsync
.extern FUN_020D9564
.extern FX_Atan
@@ -5906,12 +5906,12 @@
.extern GX_DisableBankForClearImage
.extern GX_DisableBankForLCDC
.extern GX_DisableBankForOBJExtPltt
-.extern GX_DisableBankForOBJExtPltt_2
+.extern GX_DisableBankForOBJ
.extern GX_DisableBankForSubBGExtPltt
.extern GX_DisableBankForSubOBJExtPltt
-.extern GX_DisableBankForSubOBJExtPltt_2
+.extern GX_DisableBankForSubOBJ
.extern GX_DisableBankForTexPltt
-.extern GX_DisableBankForTexPltt_2
+.extern GX_DisableBankForTex
.extern GX_DispOff
.extern GX_DispOn
.extern GX_EndLoadBGExtPltt
@@ -5920,12 +5920,12 @@
.extern GX_EndLoadTex
.extern GX_EndLoadTexPltt
.extern GX_GetBankForBGExtPltt
-.extern GX_GetBankForBGExtPltt_2
+.extern GX_GetBankForBG
.extern GX_GetBankForLCDC
.extern GX_GetBankForOBJ
.extern GX_GetBankForOBJExtPltt
.extern GX_GetBankForSubBGExtPltt
-.extern GX_GetBankForSubBGExtPltt_2
+.extern GX_GetBankForSubBG
.extern GX_GetBankForSubOBJ
.extern GX_GetBankForSubOBJExtPltt
.extern GX_GetBankForTexPltt
@@ -5956,7 +5956,7 @@
.extern GX_ResetBankForOBJ
.extern GX_ResetBankForOBJExtPltt
.extern GX_ResetBankForSubBG
-.extern GX_ResetBankForSubOBJ
+.extern GX_ResetBankForSubOBJExtPltt
.extern GX_ResetBankForTex
.extern GX_ResetBankForTexPltt
.extern GX_SendFifo48B
@@ -8228,11 +8228,11 @@
.extern UNK_021C93A0
.extern UNK_021C9520
.extern UNK_021C9EE0
-.extern UNK_021D74A8
+.extern errno
.extern Unk_0210683C
-.extern UNK_0210420C
-.extern UNK_0210428C
-.extern UNK_0210430C
+.extern __lower_mapC
+.extern __upper_mapC
+.extern __msl_digit
.extern Unk_02106840
.extern Unk_02106900
.extern Unk_02106A00
@@ -8403,7 +8403,7 @@
.extern atod
.extern atol
.extern cardi_common
-.extern disableBankForX_
+.extern GX_DisableBankForBG
.extern double2hex
.extern double2hex_wide
.extern exit
@@ -8458,7 +8458,7 @@
.extern strspn
.extern strstr
.extern strtold
-.extern strtold2
+.extern strtol
.extern strtoul
.extern swprintf
.extern sys_exit
@@ -8668,3 +8668,32 @@
.extern NNSi_SndArcLoadSeq
.extern NNSi_SndSeqArcGetSeqInfo
.extern NNSi_SndPlayerFreeSeqPlayer
+.extern OSi_ThreadInfo
+.extern __StringRead
+.extern __console_exit
+.extern __cs
+.extern __cs_id
+.extern __cs_ref
+.extern __double_huge
+.extern __files
+.extern __fill_mem
+.extern __float_huge
+.extern __float_nan
+.extern __flush_all
+.extern __flush_buffer
+.extern __fpclassifyf
+.extern __memrchr
+.extern __msl_digit
+.extern __msl_generic_count_bits64
+.extern __prep_buffer
+.extern __signbitf
+.extern __stdio_exit
+.extern __wctype_mapC
+.extern copysign
+.extern errno
+.extern fabs
+.extern fwide
+.extern memchr
+.extern wcschr
+.extern wcscpy
+.extern wmemchr
diff --git a/arm9/lib/include/GX_bgcnt.h b/arm9/lib/include/GX_bgcnt.h
index a581443e..b64d4432 100644
--- a/arm9/lib/include/GX_bgcnt.h
+++ b/arm9/lib/include/GX_bgcnt.h
@@ -285,6 +285,14 @@ typedef enum
}
GXBGExtPltt;
+typedef enum
+{
+ GX_BG_EXTMODE_256x16PLTT = (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (0 << REG_G2_BG2CNT_COLORMODE_SHIFT),
+ GX_BG_EXTMODE_256BITMAP = (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT),
+ GX_BG_EXTMODE_DCBITMAP = (1 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT)
+}
+GXBGExtMode;
+
//GX_capture
typedef enum
{
@@ -344,4 +352,410 @@ typedef enum
}
GXCaptureMode;
+static inline void G2_SetBG0Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
+{
+ reg_G2_BG0CNT = (u16)((reg_G2_BG0CNT & (REG_G2_BG0CNT_PRIORITY_MASK | REG_G2_BG0CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG0CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG0CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG0CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG0CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2_BG0CNT_BGPLTTSLOT_SHIFT));
+}
+
+static inline void G2S_SetBG0Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
+{
+ reg_G2S_DB_BG0CNT = (u16)((reg_G2S_DB_BG0CNT & (REG_G2S_DB_BG0CNT_PRIORITY_MASK | REG_G2S_DB_BG0CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG0CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG0CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT));
+}
+
+static inline void G2_SetBG1Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
+{
+ reg_G2_BG1CNT = (u16)((reg_G2_BG1CNT & (REG_G2_BG1CNT_PRIORITY_MASK | REG_G2_BG1CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG1CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG1CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG1CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG1CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2_BG1CNT_BGPLTTSLOT_SHIFT));
+}
+
+static inline void G2S_SetBG1Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
+{
+ reg_G2S_DB_BG1CNT = (u16)((reg_G2S_DB_BG1CNT & (REG_G2S_DB_BG1CNT_PRIORITY_MASK | REG_G2S_DB_BG1CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG1CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG1CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT));
+}
+
+static inline void G2_SetBG2ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ((REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG2CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2S_SetBG2ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ((REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG2CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2_SetBG2ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ((REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ((REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG2Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ((REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG3CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2S_SetBG3ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ((REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG3CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT));
+}
+
+static inline void G2_SetBG3ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ((REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ((REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_SetBG3ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2S_SetBG3ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
+}
+
+static inline void G2_BG0Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2_BG0CNT |= REG_G2_BG0CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2_BG0CNT &= ~REG_G2_BG0CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2S_BG0Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2S_DB_BG0CNT |= REG_G2S_DB_BG0CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2S_DB_BG0CNT &= ~REG_G2S_DB_BG0CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2_BG1Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2_BG1CNT |= REG_G2_BG1CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2_BG1CNT &= ~REG_G2_BG1CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2S_BG1Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2S_DB_BG1CNT |= REG_G2S_DB_BG1CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2S_DB_BG1CNT &= ~REG_G2S_DB_BG1CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2_BG2Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2_BG2CNT |= REG_G2_BG2CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2_BG2CNT &= ~REG_G2_BG2CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2S_BG2Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2S_DB_BG2CNT |= REG_G2S_DB_BG2CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2S_DB_BG2CNT &= ~REG_G2S_DB_BG2CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2_BG3Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2_BG3CNT |= REG_G2_BG3CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2_BG3CNT &= ~REG_G2_BG3CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2S_BG3Mosaic(BOOL enable)
+{
+ if (enable)
+ {
+ reg_G2S_DB_BG3CNT |= REG_G2S_DB_BG3CNT_MOSAIC_MASK;
+ }
+ else
+ {
+ reg_G2S_DB_BG3CNT &= ~REG_G2S_DB_BG3CNT_MOSAIC_MASK;
+ }
+}
+
+static inline void G2_SetBG0Priority(int priority)
+{
+ reg_G2_BG0CNT = (u16)((reg_G2_BG0CNT & ~REG_G2_BG0CNT_PRIORITY_MASK) | (priority << REG_G2_BG0CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2S_SetBG0Priority(int priority)
+{
+ reg_G2S_DB_BG0CNT = (u16)((reg_G2S_DB_BG0CNT & ~REG_G2S_DB_BG0CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG0CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2_SetBG1Priority(int priority)
+{
+ reg_G2_BG1CNT = (u16)((reg_G2_BG1CNT & ~REG_G2_BG1CNT_PRIORITY_MASK) | (priority << REG_G2_BG1CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2S_SetBG1Priority(int priority)
+{
+ reg_G2S_DB_BG1CNT = (u16)((reg_G2S_DB_BG1CNT & ~REG_G2S_DB_BG1CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG1CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2_SetBG2Priority(int priority)
+{
+ reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ~REG_G2_BG2CNT_PRIORITY_MASK) | (priority << REG_G2_BG2CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2S_SetBG2Priority(int priority)
+{
+ reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ~REG_G2S_DB_BG2CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG2CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2_SetBG3Priority(int priority)
+{
+ reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ~REG_G2_BG3CNT_PRIORITY_MASK) | (priority << REG_G2_BG3CNT_PRIORITY_SHIFT));
+}
+
+static inline void G2S_SetBG3Priority(int priority)
+{
+ reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ~REG_G2S_DB_BG3CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG3CNT_PRIORITY_SHIFT));
+}
+
+static inline GXBg01Control G2_GetBG0Control(void)
+{
+ return *(volatile GXBg01Control *)&reg_G2_BG0CNT;
+}
+
+static inline GXBg01Control G2S_GetBG0Control(void)
+{
+ return *(volatile GXBg01Control *)&reg_G2S_DB_BG0CNT;
+}
+
+static inline GXBg01Control G2_GetBG1Control(void)
+{
+ return *(volatile GXBg01Control *)&reg_G2_BG1CNT;
+}
+
+static inline GXBg01Control G2S_GetBG1Control(void)
+{
+ return *(volatile GXBg01Control *)&reg_G2S_DB_BG1CNT;
+}
+
+static inline GXBg23ControlText G2_GetBG2ControlText(void)
+{
+ return *(volatile GXBg23ControlText *)&reg_G2_BG2CNT;
+}
+
+static inline GXBg23ControlText G2S_GetBG2ControlText(void)
+{
+ return *(volatile GXBg23ControlText *)&reg_G2S_DB_BG2CNT;
+}
+
+static inline GXBg23ControlAffine G2_GetBG2ControlAffine(void)
+{
+ return *(volatile GXBg23ControlAffine *)&reg_G2_BG2CNT;
+}
+
+static inline GXBg23ControlAffine G2S_GetBG2ControlAffine(void)
+{
+ return *(volatile GXBg23ControlAffine *)&reg_G2S_DB_BG2CNT;
+}
+
+static inline GXBg23Control256x16Pltt G2_GetBG2Control256x16Pltt(void)
+{
+ return *(volatile GXBg23Control256x16Pltt *)&reg_G2_BG2CNT;
+}
+
+static inline GXBg23Control256x16Pltt G2S_GetBG2Control256x16Pltt(void)
+{
+ return *(volatile GXBg23Control256x16Pltt *)&reg_G2S_DB_BG2CNT;
+}
+
+static inline GXBg23Control256Bmp G2_GetBG2Control256Bmp(void)
+{
+ return *(volatile GXBg23Control256Bmp *)&reg_G2_BG2CNT;
+}
+
+static inline GXBg23Control256Bmp G2S_GetBG2Control256Bmp(void)
+{
+ return *(volatile GXBg23Control256Bmp *)&reg_G2S_DB_BG2CNT;
+}
+
+static inline GXBg23ControlDCBmp G2_GetBG2ControlDCBmp(void)
+{
+ return *(volatile GXBg23ControlDCBmp *)&reg_G2_BG2CNT;
+}
+
+static inline GXBg23ControlDCBmp G2S_GetBG2ControlDCBmp(void)
+{
+ return *(volatile GXBg23ControlDCBmp *)&reg_G2S_DB_BG2CNT;
+}
+
+static inline GXBg2ControlLargeBmp G2_GetBG2ControlLargeBmp(void)
+{
+ return *(volatile GXBg2ControlLargeBmp *)&reg_G2_BG2CNT;
+}
+
+static inline GXBg2ControlLargeBmp G2S_GetBG2ControlLargeBmp(void)
+{
+ return *(volatile GXBg2ControlLargeBmp *)&reg_G2S_DB_BG2CNT;
+}
+
+static inline GXBg23ControlText G2_GetBG3ControlText(void)
+{
+ return *(volatile GXBg23ControlText *)&reg_G2_BG3CNT;
+}
+
+static inline GXBg23ControlText G2S_GetBG3ControlText(void)
+{
+ return *(volatile GXBg23ControlText *)&reg_G2S_DB_BG3CNT;
+}
+
+static inline GXBg23ControlAffine G2_GetBG3ControlAffine(void)
+{
+ return *(volatile GXBg23ControlAffine *)&reg_G2_BG3CNT;
+}
+
+static inline GXBg23ControlAffine G2S_GetBG3ControlAffine(void)
+{
+ return *(volatile GXBg23ControlAffine *)&reg_G2S_DB_BG3CNT;
+}
+
+static inline GXBg23Control256x16Pltt G2_GetBG3Control256x16Pltt(void)
+{
+ return *(volatile GXBg23Control256x16Pltt *)&reg_G2_BG3CNT;
+}
+
+static inline GXBg23Control256x16Pltt G2S_GetBG3Control256x16Pltt(void)
+{
+ return *(volatile GXBg23Control256x16Pltt *)&reg_G2S_DB_BG3CNT;
+}
+
+static inline GXBg23Control256Bmp G2_GetBG3Control256Bmp(void)
+{
+ return *(volatile GXBg23Control256Bmp *)&reg_G2_BG3CNT;
+}
+
+static inline GXBg23Control256Bmp G2S_GetBG3Control256Bmp(void)
+{
+ return *(volatile GXBg23Control256Bmp *)&reg_G2S_DB_BG3CNT;
+}
+
+static inline GXBg23ControlDCBmp G2_GetBG3ControlDCBmp(void)
+{
+ return *(volatile GXBg23ControlDCBmp *)&reg_G2_BG3CNT;
+}
+
+static inline GXBg23ControlDCBmp G2S_GetBG3ControlDCBmp(void)
+{
+ return *(volatile GXBg23ControlDCBmp *)&reg_G2S_DB_BG3CNT;
+}
+
#endif //GUARD_GX_BGCNT_H
diff --git a/arm9/lib/include/GX_g2.h b/arm9/lib/include/GX_g2.h
index 372be12b..97fa0e10 100644
--- a/arm9/lib/include/GX_g2.h
+++ b/arm9/lib/include/GX_g2.h
@@ -4,7 +4,7 @@
#include "fx.h"
#include "registers.h"
-void G2x_SetBGyAffine_(u32 *ptr, struct Mtx22 *mtx, fx32 a, fx32 b, fx32 c, fx32 d);
+void G2x_SetBGyAffine_(u32 ptr, const struct Mtx22 *mtx, fx32 a, fx32 b, fx32 c, fx32 d);
void G2x_SetBlendAlpha_(u32 *ptr, fx32 a, fx32 b, fx32 c, fx32 d);
void G2x_SetBlendBrightness_(u16 *ptr, fx32 a, fx32 brightness);
void G2x_SetBlendBrightnessExt_(u16 *ptr, fx32 a, fx32 b, fx32 c, fx32 d, fx32 brightness);
@@ -43,6 +43,84 @@ static inline void G2_SetWndOutsidePlane(int wnd, BOOL effect)
reg_G2_WINOUT = (u16)tmp;
}
+static inline void G2_SetBG0Offset(int hOffset, int vOffset)
+{
+ reg_G2_BG0OFS = (u32)(((hOffset << REG_G2_BG0OFS_HOFFSET_SHIFT) & REG_G2_BG0OFS_HOFFSET_MASK) |
+ ((vOffset << REG_G2_BG0OFS_VOFFSET_SHIFT) & REG_G2_BG0OFS_VOFFSET_MASK));
+}
+
+static inline void G2_SetBG1Offset(int hOffset, int vOffset)
+{
+ reg_G2_BG1OFS = (u32)(((hOffset << REG_G2_BG1OFS_HOFFSET_SHIFT) & REG_G2_BG1OFS_HOFFSET_MASK) |
+ ((vOffset << REG_G2_BG1OFS_VOFFSET_SHIFT) & REG_G2_BG1OFS_VOFFSET_MASK));
+}
+
+static inline void G2_SetBG2Offset(int hOffset, int vOffset)
+{
+ reg_G2_BG2OFS = (u32)(((hOffset << REG_G2_BG2OFS_HOFFSET_SHIFT) & REG_G2_BG2OFS_HOFFSET_MASK) |
+ ((vOffset << REG_G2_BG2OFS_VOFFSET_SHIFT) & REG_G2_BG2OFS_VOFFSET_MASK));
+}
+
+static inline void G2_SetBG3Offset(int hOffset, int vOffset)
+{
+ reg_G2_BG3OFS = (u32)(((hOffset << REG_G2_BG3OFS_HOFFSET_SHIFT) & REG_G2_BG3OFS_HOFFSET_MASK) |
+ ((vOffset << REG_G2_BG3OFS_VOFFSET_SHIFT) & REG_G2_BG3OFS_VOFFSET_MASK));
+}
+
+static inline void G2S_SetBG0Offset(int hOffset, int vOffset)
+{
+ reg_G2S_DB_BG0OFS = (u32)(((hOffset << REG_G2S_DB_BG0OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG0OFS_HOFFSET_MASK) |
+ ((vOffset << REG_G2S_DB_BG0OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG0OFS_VOFFSET_MASK));
+}
+
+static inline void G2S_SetBG1Offset(int hOffset, int vOffset)
+{
+ reg_G2S_DB_BG1OFS = (u32)(((hOffset << REG_G2S_DB_BG1OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG1OFS_HOFFSET_MASK) |
+ ((vOffset << REG_G2S_DB_BG1OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG1OFS_VOFFSET_MASK));
+}
+
+static inline void G2S_SetBG2Offset(int hOffset, int vOffset)
+{
+ reg_G2S_DB_BG2OFS = (u32)(((hOffset << REG_G2S_DB_BG2OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG2OFS_HOFFSET_MASK) |
+ ((vOffset << REG_G2S_DB_BG2OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG2OFS_VOFFSET_MASK));
+}
+
+static inline void G2S_SetBG3Offset(int hOffset, int vOffset)
+{
+ reg_G2S_DB_BG3OFS = (u32)(((hOffset << REG_G2S_DB_BG3OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG3OFS_HOFFSET_MASK) |
+ ((vOffset << REG_G2S_DB_BG3OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG3OFS_VOFFSET_MASK));
+}
+
+static inline void G2_SetBG2Affine(const struct Mtx22 *mtx, int centerX, int centerY, int x1, int y1)
+{
+ G2x_SetBGyAffine_((u32)&reg_G2_BG2PA, mtx, centerX, centerY, x1, y1);
+}
+
+static inline void G2_SetBG3Affine(const struct Mtx22 *mtx, int centerX, int centerY, int x1, int y1)
+{
+ G2x_SetBGyAffine_((u32)&reg_G2_BG3PA, mtx, centerX, centerY, x1, y1);
+}
+
+static inline void G2S_SetBG2Affine(const struct Mtx22 *mtx, int centerX, int centerY, int x1, int y1)
+{
+ G2x_SetBGyAffine_((u32)&reg_G2S_DB_BG2PA, mtx, centerX, centerY, x1, y1);
+}
+
+static inline void G2S_SetBG3Affine(const struct Mtx22 *mtx, int centerX, int centerY, int x1, int y1)
+{
+ G2x_SetBGyAffine_((u32)&reg_G2S_DB_BG3PA, mtx, centerX, centerY, x1, y1);
+}
+
+static inline void G2_BlendNone(void)
+{
+ reg_G2_BLDCNT = 0;
+}
+
+static inline void G2S_BlendNone(void)
+{
+ reg_G2S_DB_BLDCNT = 0;
+}
+
//The g2 and g2_oam headers contain a lot of inline functions and enums that may want to be ported over at some point
#endif //GUARD_GX_G2_H
diff --git a/arm9/lib/include/GX_vramcnt.h b/arm9/lib/include/GX_vramcnt.h
index 6fe677bc..3b82d28c 100644
--- a/arm9/lib/include/GX_vramcnt.h
+++ b/arm9/lib/include/GX_vramcnt.h
@@ -16,7 +16,7 @@ void GX_SetBankForSubBG(s32 subbg);
void GX_SetBankForSubOBJ(s32 subobj);
void GX_SetBankForSubBGExtPltt(s32 subbgextpltt);
void GX_SetBankForSubOBJExtPltt(s32 subobjextpltt);
-u32 FUN_020C6130(u16 *ptr);
+u32 resetBankForX_(u16 *ptr);
u32 GX_ResetBankForBG();
u32 GX_ResetBankForOBJ();
u32 GX_ResetBankForBGExtPltt();
@@ -25,31 +25,31 @@ u32 GX_ResetBankForTex();
u32 GX_ResetBankForTexPltt();
u32 GX_ResetBankForClearImage();
u32 GX_ResetBankForSubBG();
-u32 FUN_020C605C();
-u32 FUN_020C6034();
u32 GX_ResetBankForSubOBJ();
-u32 FUN_020C5F28(u16 *ptr);
-u32 disableBankForX_();
-u32 GX_DisableBankForOBJExtPltt_2();
+u32 GX_ResetBankForSubBGExtPltt();
+u32 GX_ResetBankForSubOBJExtPltt();
+u32 disableBankForX_(u16 *ptr);
+u32 GX_DisableBankForBG();
+u32 GX_DisableBankForOBJ();
u32 GX_DisableBankForBGExtPltt();
u32 GX_DisableBankForOBJExtPltt();
-u32 GX_DisableBankForTexPltt_2();
+u32 GX_DisableBankForTex();
u32 GX_DisableBankForTexPltt();
u32 GX_DisableBankForClearImage();
u32 GX_DisableBankForARM7();
u32 GX_DisableBankForLCDC();
+u32 GX_DisableBankForSubBG();
+u32 GX_DisableBankForSubOBJ();
u32 GX_DisableBankForSubBGExtPltt();
-u32 GX_DisableBankForSubOBJExtPltt_2();
-u32 FUN_020C5E04();
u32 GX_DisableBankForSubOBJExtPltt();
-u32 GX_GetBankForBGExtPltt_2();
+u32 GX_GetBankForBG();
u32 GX_GetBankForOBJ();
u32 GX_GetBankForBGExtPltt();
u32 GX_GetBankForOBJExtPltt();
-u32 FUN_020C5D8C();
+u32 GX_GetBankForTex();
u32 GX_GetBankForTexPltt();
u32 GX_GetBankForLCDC();
-u32 GX_GetBankForSubBGExtPltt_2();
+u32 GX_GetBankForSubBG();
u32 GX_GetBankForSubOBJ();
u32 GX_GetBankForSubBGExtPltt();
u32 GX_GetBankForSubOBJExtPltt();
diff --git a/arm9/lib/include/NNS_FND_allocator.h b/arm9/lib/include/NNS_FND_allocator.h
new file mode 100644
index 00000000..48df282a
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_allocator.h
@@ -0,0 +1,34 @@
+#ifndef GUARD_NNS_FND_ALLOCATOR_H
+#define GUARD_NNS_FND_ALLOCATOR_H
+
+#include "NNS_FND_heapcommon.h"
+
+typedef struct NNSFndAllocator NNSFndAllocator;
+
+typedef void* (*NNSFndFuncAllocatorAlloc)(
+ NNSFndAllocator* pAllocator,
+ u32 size);
+
+typedef void (*NNSFndFuncAllocatorFree)(
+ NNSFndAllocator* pAllocator,
+ void* memBlock);
+
+typedef struct NNSFndAllocatorFunc NNSFndAllocatorFunc;
+
+struct NNSFndAllocatorFunc
+{
+ NNSFndFuncAllocatorAlloc pfAlloc;
+ NNSFndFuncAllocatorFree pfFree;
+};
+
+struct NNSFndAllocator
+{
+ NNSFndAllocatorFunc const * pFunc;
+ void* pHeap;
+ u32 heapParam1;
+ u32 heapParam2;
+};
+
+void NNS_FndInitAllocatorForExpHeap(NNSFndAllocator * pAllocator, NNSFndHeapHandle heap, int alignment);
+
+#endif //GUARD_NNS_FND_ALLOCATOR_H
diff --git a/arm9/lib/include/NNS_FND_expheap.h b/arm9/lib/include/NNS_FND_expheap.h
new file mode 100644
index 00000000..c0008f28
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_expheap.h
@@ -0,0 +1,55 @@
+#ifndef GUARD_NNS_FND_EXPHEAP_H
+#define GUARD_NNS_FND_EXPHEAP_H
+
+#include "NNS_FND_heapcommon.h"
+
+typedef struct NNSiFndExpHeapMBlockHead NNSiFndExpHeapMBlockHead;
+
+struct NNSiFndExpHeapMBlockHead
+{
+ u16 signature; // Signature
+ u16 attribute; // Attribute
+ // [8:groupID]
+ // [7:alignment]
+ // [1:temporary flag]
+
+ u32 blockSize; // Block size (data area only)
+
+ NNSiFndExpHeapMBlockHead* pMBHeadPrev; // Previous block
+ NNSiFndExpHeapMBlockHead* pMBHeadNext; // Next block
+};
+
+typedef struct NNSiFndExpMBlockList NNSiFndExpMBlockList;
+
+struct NNSiFndExpMBlockList
+{
+ NNSiFndExpHeapMBlockHead* head; // Pointer for memory block linked to header
+ NNSiFndExpHeapMBlockHead* tail; // Pointer to the memory block linked to the tail of the expanded heap
+};
+
+typedef struct NNSiFndExpHeapHead NNSiFndExpHeapHead;
+
+struct NNSiFndExpHeapHead
+{
+ NNSiFndExpMBlockList mbFreeList; // Free list
+ NNSiFndExpMBlockList mbUsedList; // Used list
+
+ u16 groupID; // Current group ID (lower 8 bits only)
+ u16 feature; // Attribute
+};
+
+NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u32 optFlag);
+void *NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle heap, u32 size, int alignment);
+void NNS_FndDestroyExpHeap(NNSFndHeapHandle heap);
+void NNS_FndFreeToExpHeap(NNSFndHeapHandle heap, void *memBlock);
+u32 NNS_FndGetTotalFreeSizeForExpHeap(NNSFndHeapHandle heap);
+u32 NNS_FndGetSizeForMBlockExpHeap(const void *memBlock);
+void NNS_FndResizeForMBlockExpHeap(NNSFndHeapHandle heap, void *memBlock, u32 size);
+
+#define NNS_FndCreateExpHeap(startAddress, size) \
+ NNS_FndCreateExpHeapEx(startAddress, size, 0)
+#define NNS_FndAllocFromExpHeap(heap, size) \
+ NNS_FndAllocFromExpHeapEx(heap, size, NNS_FND_HEAP_DEFAULT_ALIGNMENT)
+
+
+#endif //GUARD_NNS_FND_EXPHEAP_H
diff --git a/arm9/lib/include/NNS_FND_heapcommon.h b/arm9/lib/include/NNS_FND_heapcommon.h
new file mode 100644
index 00000000..eb6f1bdb
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_heapcommon.h
@@ -0,0 +1,26 @@
+#ifndef GUARD_NNS_FND_HEAPCOMMON_H
+#define GUARD_NNS_FND_HEAPCOMMON_H
+
+#include "NNS_FND_list.h"
+
+#define NNS_FND_HEAP_DEFAULT_ALIGNMENT 4
+
+typedef struct NNSiFndHeapHead NNSiFndHeapHead;
+
+struct NNSiFndHeapHead
+{
+ u32 signature;
+
+ NNSFndLink link;
+ NNSFndList childList;
+
+ void* heapStart; // Heap start address
+ void* heapEnd; // Heap end (+1) address
+
+ u32 attribute; // Attribute
+ // [8:Option flag]
+};
+
+typedef NNSiFndHeapHead* NNSFndHeapHandle; // Type to represent heap handle
+
+#endif //GUARD_NNS_FND_HEAPCOMMON_H
diff --git a/arm9/lib/include/NNS_FND_list.h b/arm9/lib/include/NNS_FND_list.h
new file mode 100644
index 00000000..5df01e5f
--- /dev/null
+++ b/arm9/lib/include/NNS_FND_list.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_NNS_FND_LIST_H
+#define GUARD_NNS_FND_LIST_H
+
+typedef struct
+{
+ void* prevObject; // Pointer to the previous linked object.
+ void* nextObject; // Pointer to the next linked object.
+
+} NNSFndLink;
+
+typedef struct
+{
+ void* headObject; // Pointer for the object linked to the top of the list.
+ void* tailObject; // Pointer for the object linked to the end of the list.
+ u16 numObjects; // Number of objects linked in the list.
+ u16 offset; // Offset for NNSFndLink type structure member.
+
+} NNSFndList;
+
+#endif //GUARD_NNS_FND_LIST_H
diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h
index d063b817..130ad2de 100644
--- a/arm9/lib/include/OS_interrupt.h
+++ b/arm9/lib/include/OS_interrupt.h
@@ -12,6 +12,8 @@
#define OS_IE_V_COUNT (1UL << REG_OS_IE_VE_SHIFT)
#define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT)
#define OS_IE_TIMER1 (1UL << REG_OS_IE_T1_SHIFT)
+#define OS_IE_TIMER2 (1UL << REG_OS_IE_T2_SHIFT)
+#define OS_IE_TIMER3 (1UL << REG_OS_IE_T3_SHIFT)
#define OS_IE_SPFIFO_RECV (1UL << REG_OS_IE_IFN_SHIFT)
#define OS_IE_CARD_DATA (1UL << REG_OS_IE_MC_SHIFT)
diff --git a/arm9/lib/include/OS_irqHandler.h b/arm9/lib/include/OS_irqHandler.h
index f052016d..ea12a0ad 100644
--- a/arm9/lib/include/OS_irqHandler.h
+++ b/arm9/lib/include/OS_irqHandler.h
@@ -16,6 +16,6 @@ static inline OSIrqMask OS_GetIrqCheckFlag(void)
void OS_IrqHandler(void);
void OS_IrqHandler_ThreadSwitch(void);
-void OS_WaitIrq(BOOL param1, u32 param2);
+void OS_WaitIrq(BOOL clear, OSIrqMask irqFlags);
#endif //POKEDIAMOND_OS_IRQHANDLER_H
diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h
index a41f22ae..1ad79b93 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/include/consts.h
@@ -52,6 +52,7 @@
#define OSi_TCM_REGION_BASE_MASK 0xfffff000
#define OS_IE_V_BLANK (1UL << 0)
+#define OS_IE_H_BLANK (1UL << 1)
#define HW_CPU_CLOCK_ARM9 67027964
diff --git a/arm9/lib/include/fx.h b/arm9/lib/include/fx.h
index 4a844872..38506194 100644
--- a/arm9/lib/include/fx.h
+++ b/arm9/lib/include/fx.h
@@ -65,6 +65,9 @@ typedef s64 fx64c;
#define FX16_CONST(x) FX_F32_TO_FX16(x)
#define FX32_CONST(x) FX_F32_TO_FX32(x)
+#define FX16_ONE ((fx16)0x1000)
+#define FX32_ONE ((fx32)0x00001000L)
+
struct Vecx32
{
fx32 x;
diff --git a/arm9/lib/include/gx.h b/arm9/lib/include/gx.h
index 11081942..7e6606fa 100644
--- a/arm9/lib/include/gx.h
+++ b/arm9/lib/include/gx.h
@@ -27,15 +27,6 @@ void GXi_NopClearFifo128_(void *);
#include "GX_g3imm.h"
#include "GX_dma.h"
-void GX_Init();
-u32 GX_HBlankIntr(u32 enable);
-u32 GX_VBlankIntr(u32 enable);
-void GX_DispOff();
-void GX_DispOn();
-void GX_SetGraphicsMode(u32 mode1, u32 mode2, u32 mode3);
-void GXS_SetGraphicsMode(u32 mode);
-void GXx_SetMasterBrightness_(vu16 *dst, s32 brightness);
-
typedef union
{
u32 raw;
@@ -181,4 +172,63 @@ typedef enum
}
GXOBJVRamModeChar;
+void GX_Init();
+u32 GX_HBlankIntr(u32 enable);
+u32 GX_VBlankIntr(u32 enable);
+void GX_DispOff();
+void GX_DispOn();
+void GX_SetGraphicsMode(GXDispMode dispMode, GXBGMode bgMode, GXBG0As bg0_2d3d);
+void GXS_SetGraphicsMode(GXBGMode mode);
+void GXx_SetMasterBrightness_(vu16 *dst, s32 brightness);
+
+static inline void GX_SetMasterBrightness(int brightness)
+{
+ GXx_SetMasterBrightness_(&reg_GX_MASTER_BRIGHT, brightness);
+}
+
+static inline void GX_SetVisiblePlane(int plane)
+{
+ reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_DISPLAY_MASK) | (plane << REG_GX_DISPCNT_DISPLAY_SHIFT));
+}
+
+static inline void GXS_SetVisiblePlane(int plane)
+{
+ reg_GXS_DB_DISPCNT = (u32)((reg_GXS_DB_DISPCNT & ~REG_GXS_DB_DISPCNT_DISPLAY_MASK) | (plane << REG_GXS_DB_DISPCNT_DISPLAY_SHIFT));
+}
+
+static inline void GXS_DispOn(void)
+{
+ reg_GXS_DB_DISPCNT |= REG_GXS_DB_DISPCNT_MODE_MASK;
+}
+
+static inline void GX_SetDispSelect(GXDispSelect sel)
+{
+ reg_GX_POWCNT = (u16)((reg_GX_POWCNT & ~REG_GX_POWCNT_DSEL_MASK) | (sel << REG_GX_POWCNT_DSEL_SHIFT));
+}
+
+static inline void GX_SetBGScrOffset(GXBGScrOffset offset)
+{
+ reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_BGSCREENOFFSET_MASK) | (offset << REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT));
+}
+
+static inline void GX_SetBGCharOffset(GXBGCharOffset offset)
+{
+ reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_BGCHAROFFSET_MASK) | (offset << REG_GX_DISPCNT_BGCHAROFFSET_SHIFT));
+}
+
+static inline void GX_SetVisibleWnd(int window)
+{
+ reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~(REG_GX_DISPCNT_W0_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_OW_MASK)) | (window << REG_GX_DISPCNT_W0_SHIFT));
+}
+
+static inline void GXS_SetVisibleWnd(int window)
+{
+ reg_GXS_DB_DISPCNT = (u32)((reg_GXS_DB_DISPCNT & ~(REG_GXS_DB_DISPCNT_W0_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_OW_MASK)) | (window << REG_GXS_DB_DISPCNT_W0_SHIFT));
+}
+
+static inline void GXS_SetOBJVRamModeChar(GXOBJVRamModeChar mode)
+{
+ reg_GXS_DB_DISPCNT = (u32)(reg_GXS_DB_DISPCNT & ~(REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK | REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK) | mode);
+}
+
#endif //GUARD_GX_H
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index 7a0155da..b4fd8ce7 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -350,12 +350,11 @@
#define REG_OS_IE_VE_SHIFT 2
#define REG_OS_IE_T0_SHIFT 3
#define REG_OS_IE_T1_SHIFT 4
+#define REG_OS_IE_T2_SHIFT 5
+#define REG_OS_IE_T3_SHIFT 6
#define REG_OS_IE_IFN_SHIFT 18
#define REG_OS_IE_MC_SHIFT 19
-#define REG_OS_TM0CNT_H_I_MASK 0x0040
-#define REG_OS_TM0CNT_H_E_MASK 0x0080
-
#define REG_PAD_KEYINPUT_L_SHIFT 9
#define REG_PAD_KEYINPUT_L_SIZE 1
#define REG_PAD_KEYINPUT_L_MASK 0x0200
@@ -659,4 +658,412 @@
#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SIZE 2
#define REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK 0x00300000
+// MASTER BRIGHT
+#define REG_GX_MASTER_BRIGHT_E_MOD_SHIFT 14
+#define REG_GX_MASTER_BRIGHT_E_MOD_SIZE 2
+#define REG_GX_MASTER_BRIGHT_E_MOD_MASK 0xc000
+
+#define REG_GX_MASTER_BRIGHT_E_VALUE_SHIFT 0
+#define REG_GX_MASTER_BRIGHT_E_VALUE_SIZE 5
+#define REG_GX_MASTER_BRIGHT_E_VALUE_MASK 0x001f
+
+// DISPSTAT
+#define REG_GX_DISPSTAT_VCOUNTER_SHIFT 7
+#define REG_GX_DISPSTAT_VCOUNTER_SIZE 9
+#define REG_GX_DISPSTAT_VCOUNTER_MASK 0xff80
+
+#define REG_GX_DISPSTAT_VQI_SHIFT 5
+#define REG_GX_DISPSTAT_VQI_SIZE 1
+#define REG_GX_DISPSTAT_VQI_MASK 0x0020
+
+#define REG_GX_DISPSTAT_HBI_SHIFT 4
+#define REG_GX_DISPSTAT_HBI_SIZE 1
+#define REG_GX_DISPSTAT_HBI_MASK 0x0010
+
+#define REG_GX_DISPSTAT_VBI_SHIFT 3
+#define REG_GX_DISPSTAT_VBI_SIZE 1
+#define REG_GX_DISPSTAT_VBI_MASK 0x0008
+
+#define REG_GX_DISPSTAT_LYC_SHIFT 2
+#define REG_GX_DISPSTAT_LYC_SIZE 1
+#define REG_GX_DISPSTAT_LYC_MASK 0x0004
+
+#define REG_GX_DISPSTAT_HBLK_SHIFT 1
+#define REG_GX_DISPSTAT_HBLK_SIZE 1
+#define REG_GX_DISPSTAT_HBLK_MASK 0x0002
+
+#define REG_GX_DISPSTAT_VBLK_SHIFT 0
+#define REG_GX_DISPSTAT_VBLK_SIZE 1
+#define REG_GX_DISPSTAT_VBLK_MASK 0x0001
+
+// G2_BG0CNT
+#define REG_G2_BG0CNT_SCREENSIZE_SHIFT 14
+#define REG_G2_BG0CNT_SCREENSIZE_SIZE 2
+#define REG_G2_BG0CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2_BG0CNT_BGPLTTSLOT_SHIFT 13
+#define REG_G2_BG0CNT_BGPLTTSLOT_SIZE 1
+#define REG_G2_BG0CNT_BGPLTTSLOT_MASK 0x2000
+
+#define REG_G2_BG0CNT_SCREENBASE_SHIFT 8
+#define REG_G2_BG0CNT_SCREENBASE_SIZE 5
+#define REG_G2_BG0CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2_BG0CNT_COLORMODE_SHIFT 7
+#define REG_G2_BG0CNT_COLORMODE_SIZE 1
+#define REG_G2_BG0CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2_BG0CNT_MOSAIC_SHIFT 6
+#define REG_G2_BG0CNT_MOSAIC_SIZE 1
+#define REG_G2_BG0CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2_BG0CNT_CHARBASE_SHIFT 2
+#define REG_G2_BG0CNT_CHARBASE_SIZE 4
+#define REG_G2_BG0CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2_BG0CNT_PRIORITY_SHIFT 0
+#define REG_G2_BG0CNT_PRIORITY_SIZE 2
+#define REG_G2_BG0CNT_PRIORITY_MASK 0x0003
+
+// G2_BG1CNT
+#define REG_G2_BG1CNT_SCREENSIZE_SHIFT 14
+#define REG_G2_BG1CNT_SCREENSIZE_SIZE 2
+#define REG_G2_BG1CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2_BG1CNT_BGPLTTSLOT_SHIFT 13
+#define REG_G2_BG1CNT_BGPLTTSLOT_SIZE 1
+#define REG_G2_BG1CNT_BGPLTTSLOT_MASK 0x2000
+
+#define REG_G2_BG1CNT_SCREENBASE_SHIFT 8
+#define REG_G2_BG1CNT_SCREENBASE_SIZE 5
+#define REG_G2_BG1CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2_BG1CNT_COLORMODE_SHIFT 7
+#define REG_G2_BG1CNT_COLORMODE_SIZE 1
+#define REG_G2_BG1CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2_BG1CNT_MOSAIC_SHIFT 6
+#define REG_G2_BG1CNT_MOSAIC_SIZE 1
+#define REG_G2_BG1CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2_BG1CNT_CHARBASE_SHIFT 2
+#define REG_G2_BG1CNT_CHARBASE_SIZE 4
+#define REG_G2_BG1CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2_BG1CNT_PRIORITY_SHIFT 0
+#define REG_G2_BG1CNT_PRIORITY_SIZE 2
+#define REG_G2_BG1CNT_PRIORITY_MASK 0x0003
+
+// G2_BG2CNT
+#define REG_G2_BG2CNT_SCREENSIZE_SHIFT 14
+#define REG_G2_BG2CNT_SCREENSIZE_SIZE 2
+#define REG_G2_BG2CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2_BG2CNT_AREAOVER_SHIFT 13
+#define REG_G2_BG2CNT_AREAOVER_SIZE 1
+#define REG_G2_BG2CNT_AREAOVER_MASK 0x2000
+
+#define REG_G2_BG2CNT_SCREENBASE_SHIFT 8
+#define REG_G2_BG2CNT_SCREENBASE_SIZE 5
+#define REG_G2_BG2CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2_BG2CNT_COLORMODE_SHIFT 7
+#define REG_G2_BG2CNT_COLORMODE_SIZE 1
+#define REG_G2_BG2CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2_BG2CNT_MOSAIC_SHIFT 6
+#define REG_G2_BG2CNT_MOSAIC_SIZE 1
+#define REG_G2_BG2CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2_BG2CNT_CHARBASE_SHIFT 2
+#define REG_G2_BG2CNT_CHARBASE_SIZE 4
+#define REG_G2_BG2CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2_BG2CNT_PRIORITY_SHIFT 0
+#define REG_G2_BG2CNT_PRIORITY_SIZE 2
+#define REG_G2_BG2CNT_PRIORITY_MASK 0x0003
+
+// G2_BG3CNT
+#define REG_G2_BG3CNT_SCREENSIZE_SHIFT 14
+#define REG_G2_BG3CNT_SCREENSIZE_SIZE 2
+#define REG_G2_BG3CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2_BG3CNT_AREAOVER_SHIFT 13
+#define REG_G2_BG3CNT_AREAOVER_SIZE 1
+#define REG_G2_BG3CNT_AREAOVER_MASK 0x2000
+
+#define REG_G2_BG3CNT_SCREENBASE_SHIFT 8
+#define REG_G2_BG3CNT_SCREENBASE_SIZE 5
+#define REG_G2_BG3CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2_BG3CNT_COLORMODE_SHIFT 7
+#define REG_G2_BG3CNT_COLORMODE_SIZE 1
+#define REG_G2_BG3CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2_BG3CNT_MOSAIC_SHIFT 6
+#define REG_G2_BG3CNT_MOSAIC_SIZE 1
+#define REG_G2_BG3CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2_BG3CNT_CHARBASE_SHIFT 2
+#define REG_G2_BG3CNT_CHARBASE_SIZE 4
+#define REG_G2_BG3CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2_BG3CNT_PRIORITY_SHIFT 0
+#define REG_G2_BG3CNT_PRIORITY_SIZE 2
+#define REG_G2_BG3CNT_PRIORITY_MASK 0x0003
+
+// G2S_DB_BG0CNT
+#define REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT 14
+#define REG_G2S_DB_BG0CNT_SCREENSIZE_SIZE 2
+#define REG_G2S_DB_BG0CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT 13
+#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_SIZE 1
+#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_MASK 0x2000
+
+#define REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT 8
+#define REG_G2S_DB_BG0CNT_SCREENBASE_SIZE 5
+#define REG_G2S_DB_BG0CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2S_DB_BG0CNT_COLORMODE_SHIFT 7
+#define REG_G2S_DB_BG0CNT_COLORMODE_SIZE 1
+#define REG_G2S_DB_BG0CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2S_DB_BG0CNT_MOSAIC_SHIFT 6
+#define REG_G2S_DB_BG0CNT_MOSAIC_SIZE 1
+#define REG_G2S_DB_BG0CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2S_DB_BG0CNT_CHARBASE_SHIFT 2
+#define REG_G2S_DB_BG0CNT_CHARBASE_SIZE 4
+#define REG_G2S_DB_BG0CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2S_DB_BG0CNT_PRIORITY_SHIFT 0
+#define REG_G2S_DB_BG0CNT_PRIORITY_SIZE 2
+#define REG_G2S_DB_BG0CNT_PRIORITY_MASK 0x0003
+
+// G2S_DB_BG1CNT
+#define REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT 14
+#define REG_G2S_DB_BG1CNT_SCREENSIZE_SIZE 2
+#define REG_G2S_DB_BG1CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT 13
+#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_SIZE 1
+#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_MASK 0x2000
+
+#define REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT 8
+#define REG_G2S_DB_BG1CNT_SCREENBASE_SIZE 5
+#define REG_G2S_DB_BG1CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2S_DB_BG1CNT_COLORMODE_SHIFT 7
+#define REG_G2S_DB_BG1CNT_COLORMODE_SIZE 1
+#define REG_G2S_DB_BG1CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2S_DB_BG1CNT_MOSAIC_SHIFT 6
+#define REG_G2S_DB_BG1CNT_MOSAIC_SIZE 1
+#define REG_G2S_DB_BG1CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2S_DB_BG1CNT_CHARBASE_SHIFT 2
+#define REG_G2S_DB_BG1CNT_CHARBASE_SIZE 4
+#define REG_G2S_DB_BG1CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2S_DB_BG1CNT_PRIORITY_SHIFT 0
+#define REG_G2S_DB_BG1CNT_PRIORITY_SIZE 2
+#define REG_G2S_DB_BG1CNT_PRIORITY_MASK 0x0003
+
+// G2S_DB_BG2CNT
+#define REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT 14
+#define REG_G2S_DB_BG2CNT_SCREENSIZE_SIZE 2
+#define REG_G2S_DB_BG2CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2S_DB_BG2CNT_AREAOVER_SHIFT 13
+#define REG_G2S_DB_BG2CNT_AREAOVER_SIZE 1
+#define REG_G2S_DB_BG2CNT_AREAOVER_MASK 0x2000
+
+#define REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT 8
+#define REG_G2S_DB_BG2CNT_SCREENBASE_SIZE 5
+#define REG_G2S_DB_BG2CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2S_DB_BG2CNT_COLORMODE_SHIFT 7
+#define REG_G2S_DB_BG2CNT_COLORMODE_SIZE 1
+#define REG_G2S_DB_BG2CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2S_DB_BG2CNT_MOSAIC_SHIFT 6
+#define REG_G2S_DB_BG2CNT_MOSAIC_SIZE 1
+#define REG_G2S_DB_BG2CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2S_DB_BG2CNT_CHARBASE_SHIFT 2
+#define REG_G2S_DB_BG2CNT_CHARBASE_SIZE 4
+#define REG_G2S_DB_BG2CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2S_DB_BG2CNT_PRIORITY_SHIFT 0
+#define REG_G2S_DB_BG2CNT_PRIORITY_SIZE 2
+#define REG_G2S_DB_BG2CNT_PRIORITY_MASK 0x0003
+
+// G2S_DB_BG3CNT
+#define REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT 14
+#define REG_G2S_DB_BG3CNT_SCREENSIZE_SIZE 2
+#define REG_G2S_DB_BG3CNT_SCREENSIZE_MASK 0xc000
+
+#define REG_G2S_DB_BG3CNT_AREAOVER_SHIFT 13
+#define REG_G2S_DB_BG3CNT_AREAOVER_SIZE 1
+#define REG_G2S_DB_BG3CNT_AREAOVER_MASK 0x2000
+
+#define REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT 8
+#define REG_G2S_DB_BG3CNT_SCREENBASE_SIZE 5
+#define REG_G2S_DB_BG3CNT_SCREENBASE_MASK 0x1f00
+
+#define REG_G2S_DB_BG3CNT_COLORMODE_SHIFT 7
+#define REG_G2S_DB_BG3CNT_COLORMODE_SIZE 1
+#define REG_G2S_DB_BG3CNT_COLORMODE_MASK 0x0080
+
+#define REG_G2S_DB_BG3CNT_MOSAIC_SHIFT 6
+#define REG_G2S_DB_BG3CNT_MOSAIC_SIZE 1
+#define REG_G2S_DB_BG3CNT_MOSAIC_MASK 0x0040
+
+#define REG_G2S_DB_BG3CNT_CHARBASE_SHIFT 2
+#define REG_G2S_DB_BG3CNT_CHARBASE_SIZE 4
+#define REG_G2S_DB_BG3CNT_CHARBASE_MASK 0x003c
+
+#define REG_G2S_DB_BG3CNT_PRIORITY_SHIFT 0
+#define REG_G2S_DB_BG3CNT_PRIORITY_SIZE 2
+#define REG_G2S_DB_BG3CNT_PRIORITY_MASK 0x0003
+
+// G2_BG0OFS
+#define REG_G2_BG0OFS_VOFFSET_SHIFT 16
+#define REG_G2_BG0OFS_VOFFSET_SIZE 9
+#define REG_G2_BG0OFS_VOFFSET_MASK 0x01ff0000
+
+#define REG_G2_BG0OFS_HOFFSET_SHIFT 0
+#define REG_G2_BG0OFS_HOFFSET_SIZE 9
+#define REG_G2_BG0OFS_HOFFSET_MASK 0x000001ff
+
+// G2_BG1OFS
+#define REG_G2_BG1OFS_VOFFSET_SHIFT 16
+#define REG_G2_BG1OFS_VOFFSET_SIZE 9
+#define REG_G2_BG1OFS_VOFFSET_MASK 0x01ff0000
+
+#define REG_G2_BG1OFS_HOFFSET_SHIFT 0
+#define REG_G2_BG1OFS_HOFFSET_SIZE 9
+#define REG_G2_BG1OFS_HOFFSET_MASK 0x000001ff
+
+// G2_BG2OFS
+#define REG_G2_BG2OFS_VOFFSET_SHIFT 16
+#define REG_G2_BG2OFS_VOFFSET_SIZE 9
+#define REG_G2_BG2OFS_VOFFSET_MASK 0x01ff0000
+
+#define REG_G2_BG2OFS_HOFFSET_SHIFT 0
+#define REG_G2_BG2OFS_HOFFSET_SIZE 9
+#define REG_G2_BG2OFS_HOFFSET_MASK 0x000001ff
+
+// G2_BG3OFS
+#define REG_G2_BG3OFS_VOFFSET_SHIFT 16
+#define REG_G2_BG3OFS_VOFFSET_SIZE 9
+#define REG_G2_BG3OFS_VOFFSET_MASK 0x01ff0000
+
+#define REG_G2_BG3OFS_HOFFSET_SHIFT 0
+#define REG_G2_BG3OFS_HOFFSET_SIZE 9
+#define REG_G2_BG3OFS_HOFFSET_MASK 0x000001ff
+
+// G2S_DB_BG0OFS
+#define REG_G2S_DB_BG0OFS_VOFFSET_SHIFT 16
+#define REG_G2S_DB_BG0OFS_VOFFSET_SIZE 9
+#define REG_G2S_DB_BG0OFS_VOFFSET_MASK 0x01ff0000
+
+#define REG_G2S_DB_BG0OFS_HOFFSET_SHIFT 0
+#define REG_G2S_DB_BG0OFS_HOFFSET_SIZE 9
+#define REG_G2S_DB_BG0OFS_HOFFSET_MASK 0x000001ff
+
+// G2S_DB_BG1OFS
+#define REG_G2S_DB_BG1OFS_VOFFSET_SHIFT 16
+#define REG_G2S_DB_BG1OFS_VOFFSET_SIZE 9
+#define REG_G2S_DB_BG1OFS_VOFFSET_MASK 0x01ff0000
+
+#define REG_G2S_DB_BG1OFS_HOFFSET_SHIFT 0
+#define REG_G2S_DB_BG1OFS_HOFFSET_SIZE 9
+#define REG_G2S_DB_BG1OFS_HOFFSET_MASK 0x000001ff
+
+// G2S_DB_BG2OFS
+#define REG_G2S_DB_BG2OFS_VOFFSET_SHIFT 16
+#define REG_G2S_DB_BG2OFS_VOFFSET_SIZE 9
+#define REG_G2S_DB_BG2OFS_VOFFSET_MASK 0x01ff0000
+
+#define REG_G2S_DB_BG2OFS_HOFFSET_SHIFT 0
+#define REG_G2S_DB_BG2OFS_HOFFSET_SIZE 9
+#define REG_G2S_DB_BG2OFS_HOFFSET_MASK 0x000001ff
+
+// G2S_DB_BG3OFS
+#define REG_G2S_DB_BG3OFS_VOFFSET_SHIFT 16
+#define REG_G2S_DB_BG3OFS_VOFFSET_SIZE 9
+#define REG_G2S_DB_BG3OFS_VOFFSET_MASK 0x01ff0000
+
+#define REG_G2S_DB_BG3OFS_HOFFSET_SHIFT 0
+#define REG_G2S_DB_BG3OFS_HOFFSET_SIZE 9
+#define REG_G2S_DB_BG3OFS_HOFFSET_MASK 0x000001ff
+
+// Timer control
+
+#define REG_OS_TM0CNT_L_TIMER0CNT_SHIFT 0
+#define REG_OS_TM0CNT_L_TIMER0CNT_SIZE 16
+#define REG_OS_TM0CNT_L_TIMER0CNT_MASK 0xffff
+
+#define REG_OS_TM0CNT_H_E_SHIFT 7
+#define REG_OS_TM0CNT_H_E_SIZE 1
+#define REG_OS_TM0CNT_H_E_MASK 0x0080
+
+#define REG_OS_TM0CNT_H_I_SHIFT 6
+#define REG_OS_TM0CNT_H_I_SIZE 1
+#define REG_OS_TM0CNT_H_I_MASK 0x0040
+
+#define REG_OS_TM0CNT_H_PS_SHIFT 0
+#define REG_OS_TM0CNT_H_PS_SIZE 2
+#define REG_OS_TM0CNT_H_PS_MASK 0x0003
+
+#define REG_OS_TM1CNT_L_TIMER0CNT_SHIFT 0
+#define REG_OS_TM1CNT_L_TIMER0CNT_SIZE 16
+#define REG_OS_TM1CNT_L_TIMER0CNT_MASK 0xffff
+
+#define REG_OS_TM1CNT_H_E_SHIFT 7
+#define REG_OS_TM1CNT_H_E_SIZE 1
+#define REG_OS_TM1CNT_H_E_MASK 0x0080
+
+#define REG_OS_TM1CNT_H_I_SHIFT 6
+#define REG_OS_TM1CNT_H_I_SIZE 1
+#define REG_OS_TM1CNT_H_I_MASK 0x0040
+
+#define REG_OS_TM1CNT_H_PS_SHIFT 0
+#define REG_OS_TM1CNT_H_PS_SIZE 2
+#define REG_OS_TM1CNT_H_PS_MASK 0x0003
+
+#define REG_OS_TM2CNT_L_TIMER0CNT_SHIFT 0
+#define REG_OS_TM2CNT_L_TIMER0CNT_SIZE 16
+#define REG_OS_TM2CNT_L_TIMER0CNT_MASK 0xffff
+
+#define REG_OS_TM2CNT_H_E_SHIFT 7
+#define REG_OS_TM2CNT_H_E_SIZE 1
+#define REG_OS_TM2CNT_H_E_MASK 0x0080
+
+#define REG_OS_TM2CNT_H_I_SHIFT 6
+#define REG_OS_TM2CNT_H_I_SIZE 1
+#define REG_OS_TM2CNT_H_I_MASK 0x0040
+
+#define REG_OS_TM2CNT_H_PS_SHIFT 0
+#define REG_OS_TM2CNT_H_PS_SIZE 2
+#define REG_OS_TM2CNT_H_PS_MASK 0x0003
+
+#define REG_OS_TM3CNT_L_TIMER0CNT_SHIFT 0
+#define REG_OS_TM3CNT_L_TIMER0CNT_SIZE 16
+#define REG_OS_TM3CNT_L_TIMER0CNT_MASK 0xffff
+
+#define REG_OS_TM3CNT_H_E_SHIFT 7
+#define REG_OS_TM3CNT_H_E_SIZE 1
+#define REG_OS_TM3CNT_H_E_MASK 0x0080
+
+#define REG_OS_TM3CNT_H_I_SHIFT 6
+#define REG_OS_TM3CNT_H_I_SIZE 1
+#define REG_OS_TM3CNT_H_I_MASK 0x0040
+
+#define REG_OS_TM3CNT_H_PS_SHIFT 0
+#define REG_OS_TM3CNT_H_PS_SIZE 2
+#define REG_OS_TM3CNT_H_PS_MASK 0x0003
+
#endif //POKEDIAMOND_ARM9_REGISTERS_H
diff --git a/arm9/lib/include/tp.h b/arm9/lib/include/tp.h
index d2687545..dc762f10 100644
--- a/arm9/lib/include/tp.h
+++ b/arm9/lib/include/tp.h
@@ -1,6 +1,14 @@
#ifndef NITRO_TP_H_
#define NITRO_TP_H_
+#define TP_TOUCH_OFF 0 // Not being touched
+#define TP_TOUCH_ON 1 // Being touched
+
+#define TP_VALIDITY_VALID 0 // Valid
+#define TP_VALIDITY_INVALID_X 1 // Data with invalid X coordinate
+#define TP_VALIDITY_INVALID_Y 2 // Data with invalid Y coordinate
+#define TP_VALIDITY_INVALID_XY (TP_VALIDITY_INVALID_X | TP_VALIDITY_INVALID_Y) // Data with invalid X and Y coordinates
+
// Touch panel input structure
typedef struct
{
diff --git a/arm9/lib/src/GX.c b/arm9/lib/src/GX.c
index 69ad8718..688e41b7 100644
--- a/arm9/lib/src/GX.c
+++ b/arm9/lib/src/GX.c
@@ -7,16 +7,18 @@ vu16 GXi_VRamLockId = 0;
static u16 sDispMode = 0;
static u16 sIsDispOn = TRUE;
+#define _powcnt_init_mask (REG_GX_POWCNT_E2DGB_MASK | REG_GX_POWCNT_E2DG_MASK | REG_GX_POWCNT_RE_MASK | REG_GX_POWCNT_GE_MASK)
+
ARM_FUNC void GX_Init(){
- reg_GX_POWCNT |= 0x8000;
- reg_GX_POWCNT = (u16)((reg_GX_POWCNT & ~0x20E) | 0x20E);
- reg_GX_POWCNT = (u16)(reg_GX_POWCNT | 0x1);
+ reg_GX_POWCNT |= REG_GX_POWCNT_DSEL_MASK;
+ reg_GX_POWCNT = (u16)((reg_GX_POWCNT & ~_powcnt_init_mask) | _powcnt_init_mask);
+ reg_GX_POWCNT = (u16)(reg_GX_POWCNT | REG_GX_POWCNT_LCD_MASK);
GX_InitGXState();
s32 temp;
while (GXi_VRamLockId == 0)
{
temp = OS_GetLockID();
- if (temp == -3)
+ if (temp == OS_LOCK_ID_ERROR)
{
OS_Terminate();
}
@@ -47,62 +49,62 @@ ARM_FUNC void GX_Init(){
}
ARM_FUNC u32 GX_HBlankIntr(u32 enable){
- u32 temp = (u32)(reg_GX_DISPSTAT & 0x10);
+ u32 temp = (u32)(reg_GX_DISPSTAT & REG_GX_DISPSTAT_HBI_MASK);
if (enable)
{
- reg_GX_DISPSTAT |= 0x10;
+ reg_GX_DISPSTAT |= REG_GX_DISPSTAT_HBI_MASK;
}
else
{
- reg_GX_DISPSTAT &= ~0x10;
+ reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_HBI_MASK;
}
return temp;
}
ARM_FUNC u32 GX_VBlankIntr(u32 enable){
- u32 temp = (u32)(reg_GX_DISPSTAT & 0x8);
+ u32 temp = (u32)(reg_GX_DISPSTAT & REG_GX_DISPSTAT_VBI_MASK);
if (enable)
{
- reg_GX_DISPSTAT |= 0x8;
+ reg_GX_DISPSTAT |= REG_GX_DISPSTAT_VBI_MASK;
}
else
{
- reg_GX_DISPSTAT &= ~0x8;
+ reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_VBI_MASK;
}
return temp;
}
ARM_FUNC void GX_DispOff(){
u32 temp = reg_GX_DISPCNT;
- sIsDispOn = 0x0;
- sDispMode = (u16)((temp & 0x30000) >> 0x10);
- reg_GX_DISPCNT = temp & ~0x30000;
+ sIsDispOn = FALSE;
+ sDispMode = (u16)((temp & REG_GX_DISPCNT_MODE_MASK) >> REG_GX_DISPCNT_MODE_SHIFT);
+ reg_GX_DISPCNT = temp & ~REG_GX_DISPCNT_MODE_MASK;
}
ARM_FUNC void GX_DispOn(){
- sIsDispOn = 0x1;
+ sIsDispOn = TRUE;
if (sDispMode)
{
- reg_GX_DISPCNT = (reg_GX_DISPCNT & ~0x30000) | (sDispMode << 0x10);
+ reg_GX_DISPCNT = (reg_GX_DISPCNT & ~REG_GX_DISPCNT_MODE_MASK) | (sDispMode << REG_GX_DISPCNT_MODE_SHIFT);
}
else
{
- reg_GX_DISPCNT = reg_GX_DISPCNT | 0x10000;
+ reg_GX_DISPCNT = reg_GX_DISPCNT | (GX_DISPMODE_GRAPHICS << REG_GX_DISPCNT_MODE_SHIFT);
}
}
-ARM_FUNC void GX_SetGraphicsMode(u32 mode1, u32 mode2, u32 mode3){
+ARM_FUNC void GX_SetGraphicsMode(GXDispMode dispMode, GXBGMode bgMode, GXBG0As bg0_2d3d){
u32 temp2 = reg_GX_DISPCNT;
- sDispMode = (u16)mode1;
+ sDispMode = (u16)dispMode;
if (!sIsDispOn)
- mode1 = 0;
- reg_GX_DISPCNT = (mode2 | ((temp2 & 0xFFF0FFF0) | (mode1 << 0x10))) | (mode3 << 0x3);
+ dispMode = 0;
+ reg_GX_DISPCNT = ((bgMode << REG_GX_DISPCNT_BGMODE_SHIFT) | ((temp2 & ~(REG_GX_DISPCNT_BGMODE_MASK | REG_GX_DISPCNT_MODE_MASK | REG_GX_DISPCNT_BG02D3D_MASK | REG_GX_DISPCNT_VRAM_MASK)) | (dispMode << REG_GX_DISPCNT_MODE_SHIFT))) | (bg0_2d3d << REG_GX_DISPCNT_BG02D3D_SHIFT);
if (!sDispMode)
- sIsDispOn = 0x0;
+ sIsDispOn = FALSE;
}
-ARM_FUNC void GXS_SetGraphicsMode(u32 mode){
- reg_GXS_DB_DISPCNT = (reg_GXS_DB_DISPCNT & ~0x7) | mode;
+ARM_FUNC void GXS_SetGraphicsMode(GXBGMode mode){
+ reg_GXS_DB_DISPCNT = (reg_GXS_DB_DISPCNT & ~REG_GXS_DB_DISPCNT_BGMODE_MASK) | mode;
}
ARM_FUNC void GXx_SetMasterBrightness_(vu16 *dst, s32 brightness){
@@ -112,10 +114,10 @@ ARM_FUNC void GXx_SetMasterBrightness_(vu16 *dst, s32 brightness){
}
else if (brightness > 0)
{
- *dst = (u16)(0x4000 | brightness);
+ *dst = (u16)((1 << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT) | brightness);
}
else
{
- *dst = (u16)(0x8000 | -brightness);
+ *dst = (u16)((2 << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT) | -brightness);
}
}
diff --git a/arm9/lib/src/GX_g2.c b/arm9/lib/src/GX_g2.c
index 99ba0e26..39b8bff4 100644
--- a/arm9/lib/src/GX_g2.c
+++ b/arm9/lib/src/GX_g2.c
@@ -1,16 +1,16 @@
#include "global.h"
#include "gx.h"
-ARM_FUNC void G2x_SetBGyAffine_(u32 *ptr, struct Mtx22 *mtx, fx32 a, fx32 b, fx32 c, fx32 d){
+ARM_FUNC void G2x_SetBGyAffine_(u32 ptr, const struct Mtx22 *mtx, fx32 a, fx32 b, fx32 c, fx32 d){
fx32 temp0, temp1, temp2, temp3;
- ptr[0] = (u32)((u16)(fx16)(mtx->_[0] >> 4) | (u16)(fx16)(mtx->_[1] >> 4)<< 0x10);
- ptr[1] = (u32)((u16)(fx16)(mtx->_[2] >> 4) | (u16)(fx16)(mtx->_[3] >> 4)<< 0x10);
+ *((vu32 *)ptr + 0) = (u32)((u16)(fx16)(mtx->_[0] >> 4) | (u16)(fx16)(mtx->_[1] >> 4)<< 0x10);
+ *((vu32 *)ptr + 1) = (u32)((u16)(fx16)(mtx->_[2] >> 4) | (u16)(fx16)(mtx->_[3] >> 4)<< 0x10);
temp0 = c - a;
temp1 = d - b;
temp2 = mtx->_[0] * temp0 + mtx->_[1] * temp1 + (a << 0xC);
temp3 = mtx->_[2] * temp0 + mtx->_[3] * temp1 + (b << 0xC);
- ptr[2] = (u32)(temp2 >> 4);
- ptr[3] = (u32)(temp3 >> 4);
+ *((vu32 *)ptr + 2) = (u32)(temp2 >> 4);
+ *((vu32 *)ptr + 3) = (u32)(temp3 >> 4);
}
ARM_FUNC void G2x_SetBlendAlpha_(u32 *ptr, fx32 a, fx32 b, fx32 c, fx32 d){
diff --git a/arm9/lib/src/GX_load2d.c b/arm9/lib/src/GX_load2d.c
index 132de9ee..6bff54be 100644
--- a/arm9/lib/src/GX_load2d.c
+++ b/arm9/lib/src/GX_load2d.c
@@ -195,7 +195,7 @@ ARM_FUNC void GX_EndLoadOBJExtPltt(){
}
ARM_FUNC void GXS_BeginLoadBGExtPltt(){
- sSubBGExtPltt = (s32)FUN_020C6034();
+ sSubBGExtPltt = (s32)GX_ResetBankForSubBGExtPltt();
}
ARM_FUNC void GXS_LoadBGExtPltt(void *src, u32 offset, u32 size){
@@ -209,7 +209,7 @@ ARM_FUNC void GXS_EndLoadBGExtPltt(){
}
ARM_FUNC void GXS_BeginLoadOBJExtPltt(){
- sSubOBJExtPltt = (s32)GX_ResetBankForSubOBJ();
+ sSubOBJExtPltt = (s32)GX_ResetBankForSubOBJExtPltt();
}
ARM_FUNC void GXS_LoadOBJExtPltt(void *src, u32 offset, u32 size){
diff --git a/arm9/lib/src/GX_vramcnt.c b/arm9/lib/src/GX_vramcnt.c
index c9d5a1bd..abfcd77e 100644
--- a/arm9/lib/src/GX_vramcnt.c
+++ b/arm9/lib/src/GX_vramcnt.c
@@ -396,7 +396,7 @@ ARM_FUNC void GX_SetBankForSubOBJExtPltt(s32 subobjextpltt){
GX_VRAMCNT_SetLCDC_(gGXState.lcdc);
}
-ARM_FUNC u32 FUN_020C6130(u16 *ptr){
+ARM_FUNC u32 resetBankForX_(u16 *ptr){
u16 temp = *ptr;
*ptr = 0;
gGXState.lcdc |= temp;
@@ -405,54 +405,54 @@ ARM_FUNC u32 FUN_020C6130(u16 *ptr){
}
ARM_FUNC u32 GX_ResetBankForBG(){
- return FUN_020C6130(&gGXState.bg);
+ return resetBankForX_(&gGXState.bg);
}
ARM_FUNC u32 GX_ResetBankForOBJ(){
- return FUN_020C6130(&gGXState.obj);
+ return resetBankForX_(&gGXState.obj);
}
ARM_FUNC u32 GX_ResetBankForBGExtPltt(){
reg_GX_DISPCNT &= ~0x40000000;
- return FUN_020C6130(&gGXState.bgExtPltt);
+ return resetBankForX_(&gGXState.bgExtPltt);
}
ARM_FUNC u32 GX_ResetBankForOBJExtPltt(){
reg_GX_DISPCNT &= ~0x80000000;
- return FUN_020C6130(&gGXState.objExtPltt);
+ return resetBankForX_(&gGXState.objExtPltt);
}
ARM_FUNC u32 GX_ResetBankForTex(){
- return FUN_020C6130(&gGXState.tex);
+ return resetBankForX_(&gGXState.tex);
}
ARM_FUNC u32 GX_ResetBankForTexPltt(){
- return FUN_020C6130(&gGXState.texPltt);
+ return resetBankForX_(&gGXState.texPltt);
}
ARM_FUNC u32 GX_ResetBankForClearImage(){
- return FUN_020C6130(&gGXState.clrImg);
+ return resetBankForX_(&gGXState.clrImg);
}
ARM_FUNC u32 GX_ResetBankForSubBG(){
- return FUN_020C6130(&gGXState.sub_bg);
+ return resetBankForX_(&gGXState.sub_bg);
}
-ARM_FUNC u32 FUN_020C605C(){
- return FUN_020C6130(&gGXState.sub_obj);
+ARM_FUNC u32 GX_ResetBankForSubOBJ(){
+ return resetBankForX_(&gGXState.sub_obj);
}
-ARM_FUNC u32 FUN_020C6034(){
- reg_GXS_DB_DISPCNT &= ~0x40000000;
- return FUN_020C6130(&gGXState.sub_bgExtPltt);
+ARM_FUNC u32 GX_ResetBankForSubBGExtPltt(){
+ reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_BG_MASK;
+ return resetBankForX_(&gGXState.sub_bgExtPltt);
}
-ARM_FUNC u32 GX_ResetBankForSubOBJ(){
- reg_GXS_DB_DISPCNT &= ~0x80000000;
- return FUN_020C6130(&gGXState.sub_objExtPltt);
+ARM_FUNC u32 GX_ResetBankForSubOBJExtPltt(){
+ reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_O_MASK;
+ return resetBankForX_(&gGXState.sub_objExtPltt);
}
-ARM_FUNC u32 FUN_020C5F28(u16 *ptr){
+ARM_FUNC u32 disableBankForX_(u16 *ptr){
u32 temp = *ptr;
*ptr = 0;
if (temp & (0x1 << 0))
@@ -477,63 +477,63 @@ ARM_FUNC u32 FUN_020C5F28(u16 *ptr){
return temp;
}
-ARM_FUNC u32 disableBankForX_(){
- return FUN_020C5F28(&gGXState.bg);
+ARM_FUNC u32 GX_DisableBankForBG(){
+ return disableBankForX_(&gGXState.bg);
}
-ARM_FUNC u32 GX_DisableBankForOBJExtPltt_2(){
- return FUN_020C5F28(&gGXState.obj);
+ARM_FUNC u32 GX_DisableBankForOBJ(){
+ return disableBankForX_(&gGXState.obj);
}
ARM_FUNC u32 GX_DisableBankForBGExtPltt(){
- reg_GX_DISPCNT &= ~0x40000000;
- return FUN_020C5F28(&gGXState.bgExtPltt);
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_BG_MASK;
+ return disableBankForX_(&gGXState.bgExtPltt);
}
ARM_FUNC u32 GX_DisableBankForOBJExtPltt(){
- reg_GX_DISPCNT &= ~0x80000000;
- return FUN_020C5F28(&gGXState.objExtPltt);
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_O_MASK;
+ return disableBankForX_(&gGXState.objExtPltt);
}
-ARM_FUNC u32 GX_DisableBankForTexPltt_2(){
- return FUN_020C5F28(&gGXState.tex);
+ARM_FUNC u32 GX_DisableBankForTex(){
+ return disableBankForX_(&gGXState.tex);
}
ARM_FUNC u32 GX_DisableBankForTexPltt(){
- return FUN_020C5F28(&gGXState.texPltt);
+ return disableBankForX_(&gGXState.texPltt);
}
ARM_FUNC u32 GX_DisableBankForClearImage(){
- return FUN_020C5F28(&gGXState.clrImg);
+ return disableBankForX_(&gGXState.clrImg);
}
ARM_FUNC u32 GX_DisableBankForARM7(){
- return FUN_020C5F28(&gGXState.arm7);
+ return disableBankForX_(&gGXState.arm7);
}
ARM_FUNC u32 GX_DisableBankForLCDC(){
- return FUN_020C5F28(&gGXState.lcdc);
+ return disableBankForX_(&gGXState.lcdc);
}
-ARM_FUNC u32 GX_DisableBankForSubBGExtPltt(){
- return FUN_020C5F28(&gGXState.sub_bg);
+ARM_FUNC u32 GX_DisableBankForSubBG(){
+ return disableBankForX_(&gGXState.sub_bg);
}
-ARM_FUNC u32 GX_DisableBankForSubOBJExtPltt_2(){
- return FUN_020C5F28(&gGXState.sub_obj);
+ARM_FUNC u32 GX_DisableBankForSubOBJ(){
+ return disableBankForX_(&gGXState.sub_obj);
}
-ARM_FUNC u32 FUN_020C5E04(){
- reg_GXS_DB_DISPCNT &= ~0x40000000;
- return FUN_020C5F28(&gGXState.sub_bgExtPltt);
+ARM_FUNC u32 GX_DisableBankForSubBGExtPltt(){
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_BG_MASK;
+ return disableBankForX_(&gGXState.sub_bgExtPltt);
}
ARM_FUNC u32 GX_DisableBankForSubOBJExtPltt(){
- reg_GXS_DB_DISPCNT &= ~0x80000000;
- return FUN_020C5F28(&gGXState.sub_objExtPltt);
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_O_MASK;
+ return disableBankForX_(&gGXState.sub_objExtPltt);
}
-ARM_FUNC u32 GX_GetBankForBGExtPltt_2(){
+ARM_FUNC u32 GX_GetBankForBG(){
return gGXState.bg;
}
@@ -549,7 +549,7 @@ ARM_FUNC u32 GX_GetBankForOBJExtPltt(){
return gGXState.objExtPltt;
}
-ARM_FUNC u32 FUN_020C5D8C(){
+ARM_FUNC u32 GX_GetBankForTex(){
return gGXState.tex;
}
@@ -561,7 +561,7 @@ ARM_FUNC u32 GX_GetBankForLCDC(){
return gGXState.lcdc;
}
-ARM_FUNC u32 GX_GetBankForSubBGExtPltt_2(){
+ARM_FUNC u32 GX_GetBankForSubBG(){
return gGXState.sub_bg;
}
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 49201028..259f9f52 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -161,7 +161,7 @@ _021D8F40:
ldr r0, _021D91BC ; =UNK04_02210468
mov r2, #0
ldr r1, [r0]
- ldr r0, _021D91C4 ; =UNK_021D74A8
+ ldr r0, _021D91C4 ; =errno
str r2, [sp]
str r2, [r0]
add r0, r1, #0x1000
@@ -169,7 +169,7 @@ _021D8F40:
ldr r1, _021D91C8 ; =UNK04_0220BF3C
bl MOD04_021DA388
bl atol
- ldr r1, _021D91C4 ; =UNK_021D74A8
+ ldr r1, _021D91C4 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021D8F9C
@@ -220,7 +220,7 @@ _021D9014:
add r1, sp, #0
add r0, r2, r0
mov r2, #0xa
- bl strtold2
+ bl strtol
ldr r2, _021D91BC ; =UNK04_02210468
ldr r1, _021D91D4 ; =0x0000100C
ldr r5, [r2]
@@ -324,7 +324,7 @@ _021D91B0:
.align 2, 0
_021D91BC: .word UNK04_02210468
_021D91C0: .word UNK04_0220BF34
-_021D91C4: .word UNK_021D74A8
+_021D91C4: .word errno
_021D91C8: .word UNK04_0220BF3C
_021D91CC: .word 0x00004E85
_021D91D0: .word 0x000059D8
@@ -3164,7 +3164,7 @@ _021DB970:
bl MOD04_021DA388
bl atol
mov sl, r0
- ldr r0, _021DC690 ; =UNK_021D74A8
+ ldr r0, _021DC690 ; =errno
ldr r0, [r0]
cmp r0, #0x22
bne _021DB9A0
@@ -3653,7 +3653,7 @@ _021DC080:
bl MOD04_021DA388
bl atol
mov sl, r0
- ldr r0, _021DC690 ; =UNK_021D74A8
+ ldr r0, _021DC690 ; =errno
ldr r0, [r0]
cmp r0, #0x22
bne _021DC0BC
@@ -3705,7 +3705,7 @@ _021DC118:
_021DC14C:
add r0, sp, #0x64
bl atol
- ldr r1, _021DC690 ; =UNK_021D74A8
+ ldr r1, _021DC690 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021DC17C
@@ -3873,7 +3873,7 @@ _021DC3B4:
strb r2, [r1, r0]
mov r0, r1
bl atol
- ldr r1, _021DC690 ; =UNK_021D74A8
+ ldr r1, _021DC690 ; =errno
ldr r1, [r1]
cmp r1, #0x22
bne _021DC3F0
@@ -4067,7 +4067,7 @@ _021DC680: .word UNK04_0220C36C
_021DC684: .word OSi_ThreadInfo
_021DC688: .word 0x00001B34
_021DC68C: .word UNK04_0220C418
-_021DC690: .word UNK_021D74A8
+_021DC690: .word errno
_021DC694: .word 0x0000012E
_021DC698: .word UNK04_0221048C
_021DC69C: .word UNK04_0220BEB4
@@ -4408,7 +4408,7 @@ MOD04_021DCA84: ; 0x021DCA84
mov r1, r6
bl strcpy
mov r2, #0
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
add r0, sp, #0x28
strb r2, [sp, #0x23]
strb r2, [sp, #0x27]
@@ -4418,7 +4418,7 @@ MOD04_021DCA84: ; 0x021DCA84
strb r2, [sp, #0x35]
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp]
ldr r1, [r1]
cmp r1, #0x22
@@ -4445,12 +4445,12 @@ _021DCBC4:
ldr r0, [sp, #4]
cmp r0, #0xc
bhi _021DCCA8
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
mov r2, #0
add r0, sp, #0x21
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #8]
ldr r0, [r1]
cmp r0, #0x22
@@ -4459,7 +4459,7 @@ _021DCBC4:
add r0, sp, #0x2d
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x10]
ldr r0, [r1]
cmp r0, #0x22
@@ -4468,7 +4468,7 @@ _021DCBC4:
add r0, sp, #0x30
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x14]
ldr r0, [r1]
cmp r0, #0x22
@@ -4477,7 +4477,7 @@ _021DCBC4:
add r0, sp, #0x33
str r2, [r1]
bl atol
- ldr r1, _021DCCB8 ; =UNK_021D74A8
+ ldr r1, _021DCCB8 ; =errno
str r0, [sp, #0x18]
ldr r0, [r1]
cmp r0, #0x22
@@ -4505,7 +4505,7 @@ _021DCCA8:
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021DCCB4: .word UNK04_0220C580
-_021DCCB8: .word UNK_021D74A8
+_021DCCB8: .word errno
_021DCCBC: .word UNK04_0220C550
_021DCCC0: .word UNK04_022104FC
_021DCCC4: .word UNK04_022104F8
@@ -4550,7 +4550,7 @@ _021DCD20:
ldmia sp!, {r4, pc}
_021DCD4C:
bl atol
- ldr r1, _021DCEE4 ; =UNK_021D74A8
+ ldr r1, _021DCEE4 ; =errno
mov r2, r0
ldr r0, [r1]
cmp r0, #0x22
@@ -4588,7 +4588,7 @@ _021DCDA0:
_021DCDD4:
add r0, sp, #0
bl atol
- ldr r1, _021DCEE4 ; =UNK_021D74A8
+ ldr r1, _021DCEE4 ; =errno
mov r2, r0
ldr r0, [r1]
cmp r0, #0x22
@@ -4659,7 +4659,7 @@ _021DCED4: .word UNK04_02210504
_021DCED8: .word 0xFFFF9DF3
_021DCEDC: .word UNK04_0220C5A0
_021DCEE0: .word UNK04_0220C5A8
-_021DCEE4: .word UNK_021D74A8
+_021DCEE4: .word errno
_021DCEE8: .word 0xFFFF9E58
_021DCEEC: .word UNK04_0220C5B4
_021DCEF0: .word 0xFFFFA240
@@ -27563,7 +27563,7 @@ MOD04_021F01C4: ; 0x021F01C4
mov r2, r0
cmp r3, #0
beq _021F01FC
- ldr r1, _021F0204 ; =UNK_0210420C
+ ldr r1, _021F0204 ; =__lower_mapC
_021F01D8:
cmp r3, #0
blt _021F01EC
@@ -27579,7 +27579,7 @@ _021F01FC:
mov r0, r2
bx lr
.align 2, 0
-_021F0204: .word UNK_0210420C
+_021F0204: .word __lower_mapC
arm_func_end MOD04_021F01C4
arm_func_start MOD04_021F0208
@@ -33471,7 +33471,7 @@ _021F5418:
blt _021F5434
cmp r1, #0x80
bge _021F5434
- ldr r0, _021F5844 ; =UNK_0210428C
+ ldr r0, _021F5844 ; =__upper_mapC
ldrb r1, [r0, r1]
_021F5434:
mov r0, r1, lsl #0x18
@@ -33758,7 +33758,7 @@ _021F5834: .word UNK04_0220E2B8
_021F5838: .word UNK04_0220E2C4
_021F583C: .word UNK04_0220E2D0
_021F5840: .word UNK04_0220E2E8
-_021F5844: .word UNK_0210428C
+_021F5844: .word __upper_mapC
_021F5848: .word UNK04_0220E2F8
_021F584C: .word UNK04_0220E2FC
_021F5850: .word UNK04_0220E300
@@ -45849,7 +45849,7 @@ _021FFDB8:
add r3, r4, #1
cmp r0, #0
beq _021FFE10
- ldr r1, _021FFEA8 ; =UNK_0210430C
+ ldr r1, _021FFEA8 ; =__msl_digit
mov r2, #0
_021FFDD0:
cmp r0, #0
@@ -45915,7 +45915,7 @@ _021FFE84:
.align 2, 0
_021FFEA0: .word UNK04_0220EFD8
_021FFEA4: .word UNK04_0220EFF8
-_021FFEA8: .word UNK_0210430C
+_021FFEA8: .word __msl_digit
_021FFEAC: .word 0x0000FFFF
arm_func_end MOD04_021FFD28
@@ -49986,7 +49986,7 @@ MOD04_022034F4: ; 0x022034F4
mov ip, #0
cmp lr, #0
beq _02203538
- ldr r3, _0220354C ; =UNK_0210420C
+ ldr r3, _0220354C ; =__lower_mapC
ldr r2, _02203550 ; =0x9CCF9319
_02203514:
cmp lr, #0
@@ -50006,7 +50006,7 @@ _02203538:
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
-_0220354C: .word UNK_0210420C
+_0220354C: .word __lower_mapC
_02203550: .word 0x9CCF9319
arm_func_end MOD04_022034F4
@@ -50366,7 +50366,7 @@ _022039A8:
mov r1, #0
b _022039C0
_022039B0:
- ldr r1, _022039DC ; =UNK_0210430C
+ ldr r1, _022039DC ; =__msl_digit
mov r2, r2, lsl #1
ldrh r1, [r1, r2]
and r1, r1, #8
@@ -50381,7 +50381,7 @@ _022039D0:
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022039D8: .word UNK04_0220F7E0
-_022039DC: .word UNK_0210430C
+_022039DC: .word __msl_digit
arm_func_end MOD04_0220394C
arm_func_start MOD04_022039E0
@@ -53297,7 +53297,7 @@ MOD04_02206124: ; 0x02206124
mov ip, #0
cmp lr, #0
beq _02206168
- ldr r3, _0220617C ; =UNK_0210420C
+ ldr r3, _0220617C ; =__lower_mapC
ldr r2, _02206180 ; =0x9CCF9319
_02206144:
cmp lr, #0
@@ -53317,7 +53317,7 @@ _02206168:
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
-_0220617C: .word UNK_0210420C
+_0220617C: .word __lower_mapC
_02206180: .word 0x9CCF9319
arm_func_end MOD04_02206124
diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s
index 730bfc00..9cea7a32 100644
--- a/arm9/modules/05/asm/mod05_021D74E0.s
+++ b/arm9/modules/05/asm/mod05_021D74E0.s
@@ -8,7 +8,7 @@ MOD05_021D74E0: ; 0x021D74E0
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #8]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
bl FUN_02009F80
ldr r0, [r4, #0x34]
@@ -69,7 +69,7 @@ _021D7564:
mov r0, #3
ldr r2, [r2, #4]
mov r1, #4
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r4, #4]
cmp r0, #0
beq _021D757A
@@ -101,7 +101,7 @@ _021D757A:
bl MOD05_021D7B38
bl GX_SwapDisplay
mov r0, #4
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #8]
bl MOD05_021D7A30
mov r0, #0
@@ -361,7 +361,7 @@ _021D7806:
mov r0, #0
str r0, [r4, #4]
mov r0, #4
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [r4, #0x70]
ldr r0, [r0]
lsl r0, r0, #8
@@ -617,7 +617,7 @@ MOD05_021D7A30: ; 0x021D7A30
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D7B04 ; =UNK05_021F6468
add r3, sp, #0x3c
ldmia r5!, {r0, r1}
@@ -632,15 +632,15 @@ MOD05_021D7A30: ; 0x021D7A30
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7B08 ; =UNK05_021F644C
add r3, sp, #0x20
ldmia r5!, {r0, r1}
@@ -655,15 +655,15 @@ MOD05_021D7A30: ; 0x021D7A30
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7B0C ; =UNK05_021F6484
add r3, sp, #4
ldmia r5!, {r0, r1}
@@ -678,15 +678,15 @@ MOD05_021D7A30: ; 0x021D7A30
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
add r1, sp, #0
strh r0, [r1]
@@ -713,13 +713,13 @@ MOD05_021D7B10: ; 0x021D7B10
bl GX_EngineAToggleLayers
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.balign 4, 0
diff --git a/arm9/modules/05/asm/mod05_021D80E8.s b/arm9/modules/05/asm/mod05_021D80E8.s
index e228ee0a..bda94277 100644
--- a/arm9/modules/05/asm/mod05_021D80E8.s
+++ b/arm9/modules/05/asm/mod05_021D80E8.s
@@ -575,7 +575,7 @@ _021D856A:
cmp r0, #1
bne _021D858E
ldr r0, _021D8598 ; =0x000005FD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl FUN_02035080
add sp, #8
@@ -770,7 +770,7 @@ _021D8710:
lsr r0, r0, #0x1f
beq _021D8726
ldr r0, _021D8730 ; =0x000005FD
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl FUN_0203515C
mov r0, #1
@@ -881,7 +881,7 @@ _021D87F4:
lsr r0, r0, #0x1f
beq _021D8816
ldr r0, _021D881C ; =0x000005FD
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl FUN_02035118
mov r0, #4
@@ -1027,7 +1027,7 @@ _021D892C:
lsr r0, r0, #0x1f
beq _021D8946
ldr r0, _021D8950 ; =0x000005FD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl FUN_02035080
add sp, #4
diff --git a/arm9/modules/05/asm/mod05_021D9320.s b/arm9/modules/05/asm/mod05_021D9320.s
index ec304548..419b92fd 100644
--- a/arm9/modules/05/asm/mod05_021D9320.s
+++ b/arm9/modules/05/asm/mod05_021D9320.s
@@ -53,7 +53,7 @@ _021D9374:
str r0, [sp, #0x20]
ldr r1, [r6]
add r0, r4, #0
- bl FUN_020161A4
+ bl AllocAndReadFile
ldr r1, [sp, #0x20]
str r0, [sp, #0x24]
add r2, r4, #0
@@ -161,7 +161,7 @@ _021D944A:
ldr r1, [sp, #0x10]
add r0, r4, #0
ldr r1, [r1, #0x18]
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r3, #0x4e
lsl r3, r3, #2
ldr r1, [r5, r3]
diff --git a/arm9/modules/05/asm/mod05_021D9A48.s b/arm9/modules/05/asm/mod05_021D9A48.s
index ee169f98..442bfb26 100644
--- a/arm9/modules/05/asm/mod05_021D9A48.s
+++ b/arm9/modules/05/asm/mod05_021D9A48.s
@@ -199,7 +199,7 @@ _021D9B98:
mov r1, #4
add r0, r7, #0
add r2, r1, #0
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r0, #0x6e
mov r1, #4
bl NARC_ctor
@@ -1564,7 +1564,7 @@ _021DA526:
beq _021DA542
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
_021DA542:
add r0, r5, #0
mov r1, #0
diff --git a/arm9/modules/05/asm/mod05_021DA5B8.s b/arm9/modules/05/asm/mod05_021DA5B8.s
index b4648ab3..eb8560b0 100644
--- a/arm9/modules/05/asm/mod05_021DA5B8.s
+++ b/arm9/modules/05/asm/mod05_021DA5B8.s
@@ -1489,7 +1489,7 @@ _021DB164:
str r0, [r5, #8]
strb r0, [r5, #4]
ldr r0, _021DB1C8 ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -1552,7 +1552,7 @@ _021DB1F0:
str r0, [r4, #8]
strb r0, [r4, #4]
ldr r0, _021DB24C ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0
str r1, [sp]
mov r0, #6
diff --git a/arm9/modules/05/asm/mod05_021DB44C.s b/arm9/modules/05/asm/mod05_021DB44C.s
index eaee32f8..bba92897 100644
--- a/arm9/modules/05/asm/mod05_021DB44C.s
+++ b/arm9/modules/05/asm/mod05_021DB44C.s
@@ -255,7 +255,7 @@ MOD05_021DB61C: ; 0x021DB61C
str r1, [sp]
mov r0, #4
add r1, r2, #0
- bl FUN_020161A4
+ bl AllocAndReadFile
mov r1, #0
str r0, [sp, #0x14]
str r1, [sp, #8]
diff --git a/arm9/modules/05/asm/mod05_021DBEF4.s b/arm9/modules/05/asm/mod05_021DBEF4.s
index f65de9d8..ae93e2a3 100644
--- a/arm9/modules/05/asm/mod05_021DBEF4.s
+++ b/arm9/modules/05/asm/mod05_021DBEF4.s
@@ -120,7 +120,7 @@ _021DBFA8:
add r7, #0x10
mov r0, #4
add r1, sp, #0xc
- bl FUN_020161A4
+ bl AllocAndReadFile
str r0, [r7, r5]
add r0, r6, #0
str r0, [sp, #8]
@@ -128,7 +128,7 @@ _021DBFA8:
str r0, [sp, #8]
ldr r0, [r7, r5]
mov r1, #4
- bl FUN_02016324
+ bl OpenFileCached
ldr r1, [sp, #8]
str r0, [r1, r5]
add r0, r1, #0
diff --git a/arm9/modules/05/asm/mod05_021DC0B8.s b/arm9/modules/05/asm/mod05_021DC0B8.s
index 7b1e767f..0e77cb4b 100644
--- a/arm9/modules/05/asm/mod05_021DC0B8.s
+++ b/arm9/modules/05/asm/mod05_021DC0B8.s
@@ -1903,7 +1903,7 @@ MOD05_021DCECC: ; 0x021DCECC
ldr r1, [r1, #0xc]
mov r2, #0x20
mov r3, #0xc0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
ldr r0, [sp]
bl FreeToHeap
mov r0, #0
@@ -1945,7 +1945,7 @@ MOD05_021DCF14: ; 0x021DCF14
ldr r0, [r0, #8]
ldr r3, [r3, #0x10]
mov r1, #2
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r0, [sp, #8]
bl FreeToHeap
mov r0, #0
@@ -1997,7 +1997,7 @@ _021DCFA0:
ldr r0, [r0, #8]
mov r1, #2
add r2, #0xc
- bl FUN_02017CE8
+ bl BgCopyOrUncompressTilemapBufferRangeToVram
mov r0, #0x41
lsl r0, r0, #2
ldr r3, [sp, #0x18]
@@ -2007,7 +2007,7 @@ _021DCFA0:
ldr r3, [r3, #8]
mov r1, #2
add r2, #0xc
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
mov r0, #0x20
str r0, [sp]
str r0, [sp, #4]
@@ -2019,13 +2019,13 @@ _021DCFA0:
ldr r0, [r0, #8]
mov r1, #2
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
mov r0, #0x41
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #2
ldr r0, [r0, #8]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, [sp, #0x14]
bl FreeToHeap
mov r0, #0
@@ -8960,13 +8960,13 @@ _021E060E:
mov r0, #0x24
str r0, [r4, #8]
ldr r0, _021E06F4 ; =0x0000063D
- bl FUN_020054C8
+ bl PlaySE
b _021E06CC
_021E0644:
mov r0, #0xc8
str r0, [r4, #8]
ldr r0, _021E06F8 ; =0x0000063C
- bl FUN_020054C8
+ bl PlaySE
b _021E06CC
_021E0650:
ldr r0, [r4, #0x14]
@@ -10156,7 +10156,7 @@ _021E0FB6:
lsr r0, r0, #0x10
add r1, r1, #4
strh r0, [r5, r1]
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
nop
_021E0FCC: .word 0x00000F5C
diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s
index 0e1a6b44..f3c8709a 100644
--- a/arm9/modules/05/asm/mod05_021E1374.s
+++ b/arm9/modules/05/asm/mod05_021E1374.s
@@ -118,7 +118,7 @@ _021E1442:
_021E1456:
mov r0, #0x62
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #8]
mov r1, #0
bl FUN_0205F42C
diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s
index 22b26c5d..20fc2752 100644
--- a/arm9/modules/05/asm/mod05_021E1AD8.s
+++ b/arm9/modules/05/asm/mod05_021E1AD8.s
@@ -274,7 +274,7 @@ _021E1CA8:
ldr r0, [r0, #8]
add r1, #8
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r0, #4
@@ -531,7 +531,7 @@ MOD05_021E1ECC: ; 0x021E1ECC
push {r4, r5, r6, lr}
add r6, r0, #0
ldr r0, _021E1F30 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r6, #0
add r0, #0xb0
ldr r0, [r0]
@@ -545,7 +545,7 @@ MOD05_021E1ECC: ; 0x021E1ECC
add r0, r6, #0
add r0, #0xa8
ldr r0, [r0]
- bl FUN_02019178
+ bl RemoveWindow
mov r4, #0
add r5, r6, #0
_021E1EFC:
@@ -685,7 +685,7 @@ _021E1FC8:
ldr r0, [r0, #8]
add r1, #8
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
b _021E2032
_021E2002:
add r1, r4, #0
@@ -710,7 +710,7 @@ _021E2002:
ldr r0, [r0, #8]
add r1, #8
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
_021E2032:
mov r0, #0
str r0, [sp]
@@ -1061,7 +1061,7 @@ _021E22B8:
cmp r6, r0
beq _021E22EE
ldr r0, _021E235C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021E22EE:
ldr r0, _021E2360 ; =gMain
mov r1, #0x40
@@ -1098,7 +1098,7 @@ _021E2320:
cmp r0, #1
bne _021E235A
ldr r0, _021E235C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0xa0
ldr r1, _021E2364 ; =0x0000FFFE
@@ -1109,7 +1109,7 @@ _021E2320:
pop {r4, r5, r6, pc}
_021E2346:
ldr r0, _021E235C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0xa0
ldr r0, [r0]
@@ -1128,7 +1128,7 @@ MOD05_021E2368: ; 0x021E2368
push {r4, r5, r6, lr}
add r6, r0, #0
ldr r0, _021E23CC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x6d
lsl r0, r0, #2
mov r1, #0
@@ -1142,7 +1142,7 @@ MOD05_021E2368: ; 0x021E2368
bl FUN_0200CCF8
add r0, r6, #0
add r0, #8
- bl FUN_02019178
+ bl RemoveWindow
mov r4, #0
add r5, r6, #0
_021E2398:
@@ -1291,7 +1291,7 @@ _021E2496:
ldr r0, [r0, #8]
add r1, #8
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r0, #4
@@ -1411,7 +1411,7 @@ MOD05_021E25A4: ; 0x021E25A4
add r0, r6, #0
add r0, #0xa8
ldr r0, [r0]
- bl FUN_02019178
+ bl RemoveWindow
mov r4, #0
add r5, r6, #0
_021E25D0:
@@ -1626,7 +1626,7 @@ _021E270A:
ldr r0, [r0, #8]
add r1, #8
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r0, #4
@@ -1733,7 +1733,7 @@ MOD05_021E27E8: ; 0x021E27E8
add r1, r4, #0
mov r2, #3
add r3, r7, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r0, #4
@@ -1791,7 +1791,7 @@ MOD05_021E288C: ; 0x021E288C
bl FUN_0200CCF8
add r0, r4, #0
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
pop {r4, pc}
thumb_func_start MOD05_021E28A0
@@ -1865,7 +1865,7 @@ MOD05_021E28A0: ; 0x021E28A0
ldr r0, [sp, #0xc]
bl DestroyMsgData
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
@@ -1893,7 +1893,7 @@ MOD05_021E2950: ; 0x021E2950
add r1, r4, #0
mov r2, #3
add r3, r7, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r0, #4
@@ -1925,7 +1925,7 @@ MOD05_021E29B4: ; 0x021E29B4
bl FUN_0200CCF8
add r0, r4, #0
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
pop {r4, pc}
thumb_func_start MOD05_021E29C8
@@ -1992,7 +1992,7 @@ MOD05_021E29C8: ; 0x021E29C8
add r0, r7, #0
bl DestroyMsgData
ldr r0, [sp, #0xc]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
@@ -2022,7 +2022,7 @@ MOD05_021E2A70: ; 0x021E2A70
add r1, r4, #0
mov r2, #3
add r3, r7, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r0, #4
@@ -2112,7 +2112,7 @@ MOD05_021E2AD4: ; 0x021E2AD4
add r0, r7, #0
bl DestroyMsgData
ldr r0, [sp, #0xc]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
diff --git a/arm9/modules/05/asm/mod05_021E2E88.s b/arm9/modules/05/asm/mod05_021E2E88.s
index a81ba2f1..9a7c0b1f 100644
--- a/arm9/modules/05/asm/mod05_021E2E88.s
+++ b/arm9/modules/05/asm/mod05_021E2E88.s
@@ -36,7 +36,7 @@ MOD05_021E2EA4: ; 0x021E2EA4
add r1, #0x20
str r0, [sp, #0x10]
ldr r0, [r4, #0x1c]
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
ldr r2, _021E2EE0 ; =0x000003CF
@@ -61,7 +61,7 @@ MOD05_021E2EE4: ; 0x021E2EE4
add r0, #0x38
mov r1, #4
add r7, r3, #0
- bl FUN_0201AB28
+ bl LoadCharacterDataFromFile
str r0, [r5, #0x34]
add r3, r0, #0
str r4, [sp]
@@ -69,11 +69,11 @@ MOD05_021E2EE4: ; 0x021E2EE4
ldr r0, [r5, #0x1c]
ldr r3, [r3, #0x10]
add r1, r6, #0
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r2, _021E2F30 ; =UNK05_021FD62C
add r0, sp, #4
mov r1, #4
- bl FUN_0201AB44
+ bl LoadPaletteDataFromFile
ldr r0, [r0, #0xc]
mov r1, #1
add r2, r7, #0
@@ -367,7 +367,7 @@ _021E314E:
ldr r0, [r4, #0x1c]
ldr r3, [r4, #0xc]
add r2, r1, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0xc]
cmp r0, #0
bne _021E31D0
@@ -401,7 +401,7 @@ _021E318E:
ldr r0, [r4, #0x1c]
ldr r3, [r4, #0xc]
add r2, r1, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0xc]
cmp r0, #0x26
bne _021E31D0
@@ -498,7 +498,7 @@ MOD05_021E3248: ; 0x021E3248
bl DestroyMsgData
add r0, r4, #0
add r0, #0x20
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x40]
bl String_dtor
ldr r0, [r4, #0x38]
@@ -522,7 +522,7 @@ MOD05_021E3270: ; 0x021E3270
ldr r0, [r4, #0x1c]
add r2, r1, #0
mov r3, #0x26
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0x26
str r0, [r4, #0xc]
ldr r0, _021E32EC ; =MOD05_021E3124
@@ -584,12 +584,12 @@ MOD05_021E32F0: ; 0x021E32F0
_021E32FE:
add r0, r4, #0
add r0, #0x20
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r1, #3
ldr r0, [r4, #0x1c]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, [r4, #0x1c]
add r0, r4, #0
bl MOD05_021E3114
diff --git a/arm9/modules/05/asm/mod05_021E3444.s b/arm9/modules/05/asm/mod05_021E3444.s
index 42f9037e..9bd14da2 100644
--- a/arm9/modules/05/asm/mod05_021E3444.s
+++ b/arm9/modules/05/asm/mod05_021E3444.s
@@ -1055,7 +1055,7 @@ MOD05_021E3C14: ; 0x021E3C14
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -1071,20 +1071,20 @@ MOD05_021E3C14: ; 0x021E3C14
mov r1, #1
str r0, [r2]
add r0, r4, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
add r2, sp, #0x38
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #2
mov r1, #0
bl GX_EngineAToggleLayers
@@ -1100,20 +1100,20 @@ MOD05_021E3C14: ; 0x021E3C14
mov r1, #2
str r0, [r2]
add r0, r4, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
add r2, sp, #0x1c
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #4
mov r1, #1
bl GX_EngineAToggleLayers
@@ -1129,20 +1129,20 @@ MOD05_021E3C14: ; 0x021E3C14
str r0, [r2]
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
add r2, sp, #0
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #8
mov r1, #0
bl GX_EngineAToggleLayers
@@ -1214,7 +1214,7 @@ MOD05_021E3D70: ; 0x021E3D70
lsl r1, r1, #0x18
ldr r3, [r3, #0x20]
lsr r1, r1, #0x18
- bl FUN_02017B60
+ bl Bg_SetTextDimAndAffineParams
add r0, r4, #0
bl FUN_0200CAB4
add sp, #0xc
diff --git a/arm9/modules/05/asm/mod05_021E4AE4.s b/arm9/modules/05/asm/mod05_021E4AE4.s
index 98146a9c..09f66fe5 100644
--- a/arm9/modules/05/asm/mod05_021E4AE4.s
+++ b/arm9/modules/05/asm/mod05_021E4AE4.s
@@ -1093,7 +1093,7 @@ MOD05_021E5294: ; 0x021E5294
add r1, r0, #0
add r0, r4, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
pop {r4, pc}
.section .rodata
diff --git a/arm9/modules/05/asm/mod05_021E5AB4.s b/arm9/modules/05/asm/mod05_021E5AB4.s
index 3b0d6a5f..eebf0d96 100644
--- a/arm9/modules/05/asm/mod05_021E5AB4.s
+++ b/arm9/modules/05/asm/mod05_021E5AB4.s
@@ -99,7 +99,7 @@ MOD05_021E5B30: ; 0x021E5B30
mov r3, #0
bl MOD05_021E4DC4
ldr r0, _021E5B7C ; =0x00000609
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x1c
pop {r4, r5, pc}
nop
diff --git a/arm9/modules/05/asm/mod05_021E5FD8.s b/arm9/modules/05/asm/mod05_021E5FD8.s
index f341dfd8..6064c13b 100644
--- a/arm9/modules/05/asm/mod05_021E5FD8.s
+++ b/arm9/modules/05/asm/mod05_021E5FD8.s
@@ -92,7 +92,7 @@ _021E6088:
mov r1, #0
bl FUN_02055450
ldr r0, _021E6098 ; =0x00000618
- bl FUN_020054C8
+ bl PlaySE
pop {r4, pc}
.balign 4, 0
_021E6098: .word 0x00000618
@@ -474,7 +474,7 @@ _021E636C:
add r0, r6, #0
bl FUN_0205ADDC
ldr r0, _021E63D0 ; =0x00000627
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1011,7 +1011,7 @@ MOD05_021E67C0: ; 0x021E67C0
b _021E68C6
_021E67E4:
ldr r0, _021E68CC ; =0x00000651
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1029,7 +1029,7 @@ _021E6804:
cmp r0, #5
blt _021E6824
ldr r0, _021E68D0 ; =0x00000652
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0xc]
mov r1, #1
bl FUN_0205574C
@@ -1177,7 +1177,7 @@ _021E6938:
add r0, r4, #0
bl FUN_02057654
ldr r0, _021E6950 ; =0x0000065B
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
pop {r4, pc}
nop
@@ -1352,7 +1352,7 @@ MOD05_021E6A58: ; 0x021E6A58
bl MOD06_0224F0BC
str r0, [r5, #0x2c]
ldr r0, _021E6AA8 ; =0x00000627
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -1631,7 +1631,7 @@ MOD05_021E6CA0: ; 0x021E6CA0
cmp r0, #1
bne _021E6CBA
ldr r0, _021E6CC0 ; =0x0000064D
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1862,7 +1862,7 @@ MOD05_021E6E6C: ; 0x021E6E6C
cmp r0, #1
bne _021E6E86
ldr r0, _021E6E8C ; =0x0000064D
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
diff --git a/arm9/modules/05/asm/mod05_021E7504.s b/arm9/modules/05/asm/mod05_021E7504.s
index d7f960b2..dc029b32 100644
--- a/arm9/modules/05/asm/mod05_021E7504.s
+++ b/arm9/modules/05/asm/mod05_021E7504.s
@@ -65,7 +65,7 @@ _021E7564:
mov r0, #1
str r0, [r5, #8]
ldr r0, _021E760C ; =0x0000064F
- bl FUN_020054C8
+ bl PlaySE
_021E756E:
ldr r0, [r5, #0xc]
lsr r2, r0, #0x1f
@@ -192,7 +192,7 @@ _021E763C:
add r0, r4, #0
bl MOD05_021F1D8C
ldr r0, _021E774C ; =0x0000064F
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
str r0, [r5, #8]
_021E7694:
diff --git a/arm9/modules/05/asm/mod05_021E779C.s b/arm9/modules/05/asm/mod05_021E779C.s
index 7c09387c..012dbb1d 100644
--- a/arm9/modules/05/asm/mod05_021E779C.s
+++ b/arm9/modules/05/asm/mod05_021E779C.s
@@ -340,7 +340,7 @@ MOD05_021E79A8: ; 0x021E79A8
cmp r0, #1
bne _021E79FC
ldr r0, _021E7A04 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E79FC:
mov r0, #1
add sp, #0xc
@@ -523,7 +523,7 @@ MOD05_021E7B08: ; 0x021E7B08
cmp r0, #1
bne _021E7B6C
ldr r0, _021E7B74 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E7B6C:
mov r0, #1
add sp, #0xc
diff --git a/arm9/modules/05/asm/mod05_021E80F8.s b/arm9/modules/05/asm/mod05_021E80F8.s
index 82fd7a02..3d6303b2 100644
--- a/arm9/modules/05/asm/mod05_021E80F8.s
+++ b/arm9/modules/05/asm/mod05_021E80F8.s
@@ -26,7 +26,7 @@ MOD05_021E8110: ; 0x021E8110
lsl r1, r1, #0x18
lsr r1, r1, #0x1f
beq _021E8120
- bl FUN_02019178
+ bl RemoveWindow
_021E8120:
add r0, r4, #0
bl FreeToHeap
@@ -147,7 +147,7 @@ MOD05_021E81D0: ; 0x021E81D0
ldr r0, [r4, #8]
add r2, r1, #0
sub r3, #0x33
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, [r4, #0x60]
ldrb r0, [r1, #0x13]
lsl r0, r0, #0x18
@@ -179,7 +179,7 @@ MOD05_021E820C: ; 0x021E820C
lsl r1, r1, #0x18
lsr r1, r1, #0x1f
beq _021E825A
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x12
str r0, [sp]
mov r0, #0x20
@@ -192,15 +192,15 @@ MOD05_021E820C: ; 0x021E820C
ldr r0, [r4, #8]
mov r1, #3
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r4, #8]
mov r1, #3
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r1, #3
ldr r0, [r4, #8]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r2, [r4, #0x60]
mov r0, #0x80
ldrb r1, [r2, #0x13]
@@ -217,7 +217,7 @@ MOD05_021E8260: ; 0x021E8260
add r4, r0, #0
ldr r0, [r4, #8]
mov r1, #3
- bl FUN_02017B54
+ bl Bg_GetYpos
cmp r0, #0
bne _021E8274
mov r0, #1
@@ -235,13 +235,13 @@ _021E8280:
ldr r0, [r4, #8]
add r2, r1, #0
sub r3, #0x33
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_021E828E:
ldr r0, [r4, #8]
mov r1, #3
mov r2, #4
mov r3, #0x10
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0
pop {r4, pc}
.balign 4, 0
@@ -253,7 +253,7 @@ MOD05_021E82A0: ; 0x021E82A0
add r4, r0, #0
ldr r0, [r4, #8]
mov r1, #3
- bl FUN_02017B54
+ bl Bg_GetYpos
mov r1, #0x2f
mvn r1, r1
cmp r0, r1
@@ -270,15 +270,15 @@ MOD05_021E82A0: ; 0x021E82A0
ldr r0, [r4, #8]
mov r1, #3
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r4, #8]
mov r1, #3
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r1, #3
ldr r0, [r4, #8]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add sp, #0x10
mov r0, #1
pop {r4, pc}
@@ -291,13 +291,13 @@ _021E82F2:
ldr r0, [r4, #8]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_021E82FE:
ldr r0, [r4, #8]
mov r1, #3
mov r2, #5
mov r3, #0x10
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0
add sp, #0x10
pop {r4, pc}
diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s
index 5bf27853..6c9c422b 100644
--- a/arm9/modules/05/asm/mod05_021E8310.s
+++ b/arm9/modules/05/asm/mod05_021E8310.s
@@ -264,7 +264,7 @@ MOD05_021E84F4: ; 0x021E84F4
ldrb r2, [r4, #8]
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
ldr r0, [r4, #4]
@@ -301,7 +301,7 @@ MOD05_021E856C: ; 0x021E856C
mov r1, #0
bl FUN_0200CCF8
ldr r0, [r4, #0x10]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x10]
bl FreeToHeap
pop {r4, pc}
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 006e8bb1..0157aedb 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -2753,7 +2753,7 @@ _021E9C02:
ldr r0, [r0, #0x10]
mov r2, #3
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
mov r1, #0
add r0, sp, #0x28
strh r1, [r0]
@@ -2761,7 +2761,7 @@ _021E9C02:
add r1, sp, #0x28
mov r2, #2
mov r3, #0x1e
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #0x83
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2770,7 +2770,7 @@ _021E9C02:
mov r0, #0x83
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x1c]
ldr r0, [r0]
add r1, r0, #1
@@ -3160,26 +3160,26 @@ _021E9FA4:
mov r0, #0x83
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x83
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x83
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [sp, #0x1c]
mov r1, #3
ldr r0, [r0, #0x10]
ldr r0, [r0, #8]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, [sp, #0x1c]
mov r0, #4
ldr r1, [r1, #0xc]
@@ -3275,7 +3275,7 @@ _021EA0B0:
mov r0, #0x83
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x1c]
ldr r0, [r0]
cmp r0, #7
@@ -3725,7 +3725,7 @@ _021EA430:
ldr r0, [r0, #0x10]
mov r2, #3
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
mov r1, #0
add r0, sp, #0x28
strh r1, [r0]
@@ -3733,7 +3733,7 @@ _021EA430:
add r1, sp, #0x28
mov r2, #2
mov r3, #0x1e
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
@@ -3742,7 +3742,7 @@ _021EA430:
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #4
bl MOD05_021E4394
mov r1, #0x81
@@ -4030,7 +4030,7 @@ _021EA6FA:
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x83
lsl r0, r0, #2
add r0, r4, r0
@@ -4093,26 +4093,26 @@ _021EA76C:
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [sp, #0x18]
mov r1, #3
ldr r0, [r0, #0x10]
ldr r0, [r0, #8]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, [sp, #0x18]
mov r0, #4
ldr r1, [r1, #0xc]
@@ -5393,7 +5393,7 @@ _021EB18E:
ldr r1, [r4]
ldr r0, [r0, #8]
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r1, #0
add r0, sp, #0x14
strh r1, [r0]
@@ -5401,12 +5401,12 @@ _021EB18E:
add r1, sp, #0x14
mov r2, #2
mov r3, #0x1e
- bl FUN_02017FB4
+ bl BG_LoadPlttData
ldr r0, [r4]
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r4]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -5535,7 +5535,7 @@ _021EB344:
str r0, [r5]
_021EB36C:
ldr r0, [r4]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
b _021EB3F2
_021EB374:
mov r0, #0
@@ -5566,21 +5566,21 @@ _021EB394:
add r0, #8
bl MOD05_021E3E44
ldr r0, [r4]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, [r4]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r5, #0x10]
mov r1, #3
ldr r0, [r0, #8]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, _021EB410 ; =0x0400004D
mov r1, #0
strb r1, [r0]
@@ -13882,7 +13882,7 @@ MOD05_021EF4F8: ; 0x021EF4F8
MOD05_021EF514: ; 0x021EF514
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
- bl FUN_020162FC
+ bl ClearFileCache
bl NNS_GfdResetLnkTexVramState
bl NNS_GfdResetLnkPlttVramState
mov r4, #0
@@ -15215,7 +15215,7 @@ MOD05_021EFEDC: ; 0x021EFEDC
ldr r0, [r0, #8]
mov r2, #3
mov r3, #0x13
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _021EFFBC ; =0x000003D9
add r0, #0x20
@@ -15311,7 +15311,7 @@ MOD05_021EFFC8: ; 0x021EFFC8
pop {r3, r4, r5, r6, r7, pc}
_021EFFE6:
ldr r0, _021F007C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0x8c
ldr r0, [r0]
@@ -15328,7 +15328,7 @@ _021EFFE6:
b _021F0056
_021F000E:
ldr r0, _021F007C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0x90
str r4, [r0]
@@ -15362,7 +15362,7 @@ _021F0056:
bl FUN_0200CCF8
add r0, r5, #0
add r0, #0x20
- bl FUN_02019178
+ bl RemoveWindow
mov r1, #0
ldr r0, [r5, #4]
add r2, r1, #0
@@ -15565,12 +15565,12 @@ MOD05_021F01EC: ; 0x021F01EC
add r4, r0, #0
add r0, #0x10
add r5, r1, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021F0204
add r0, r4, #0
add r0, #0x10
- bl FUN_02019178
+ bl RemoveWindow
_021F0204:
ldr r0, [r4, #0x3c]
ldr r2, [r4, #8]
@@ -15648,12 +15648,12 @@ MOD05_021F0290: ; 0x021F0290
bl String_dtor
add r0, r4, #0
add r0, #0x10
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021F02C0
add r4, #0x10
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_021F02C0:
pop {r4, pc}
.balign 4, 0
@@ -15695,7 +15695,7 @@ MOD05_021F0304: ; 0x021F0304
cmp r2, #0
bne _021F0310
ldr r0, _021F0314 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021F0310:
pop {r3, pc}
nop
@@ -24673,7 +24673,7 @@ _021F4732:
str r0, [r4, #8]
mov r0, #0x61
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
pop {r4, pc}
.balign 4, 0
_021F47A4: .word MOD05_021F48CC
@@ -24929,7 +24929,7 @@ MOD05_021F4968: ; 0x021F4968
sub r1, r1, r0
bx r3
nop
-_021F4974: .word FUN_02016B44
+_021F4974: .word ReallocFromHeap
thumb_func_start MOD05_021F4978
MOD05_021F4978: ; 0x021F4978
@@ -26506,12 +26506,12 @@ MOD05_021F5518: ; 0x021F5518
bl G2x_SetBlendAlpha_
mov r0, #2
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #4
mov r1, #1
bl GX_EngineAToggleLayers
ldr r0, _021F5560 ; =0x00000648
- bl FUN_020054C8
+ bl PlaySE
add sp, #4
pop {r3, r4, pc}
.balign 4, 0
@@ -26629,7 +26629,7 @@ MOD05_021F5608: ; 0x021F5608
add r1, sp, #4
add r2, r0, #0
mov r3, #0xc2
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #4
mov r1, #0x20
bl AllocFromHeap
@@ -26643,13 +26643,13 @@ MOD05_021F5608: ; 0x021F5608
mov r1, #2
add r2, r4, #0
mov r3, #0x20
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r4, #0
bl FreeToHeap
ldr r2, _021F565C ; =0x00006001
add r0, r5, #0
mov r1, #2
- bl FUN_02018768
+ bl BgFillTilemapBufferAndCommit
add sp, #8
pop {r3, r4, r5, pc}
nop
@@ -26694,21 +26694,21 @@ _021F5696:
thumb_func_start MOD05_021F569C
MOD05_021F569C: ; 0x021F569C
- ldr r3, _021F56A4 ; =FUN_02017FE4
+ ldr r3, _021F56A4 ; =BG_SetMaskColor
mov r0, #2
mov r1, #0
bx r3
.balign 4, 0
-_021F56A4: .word FUN_02017FE4
+_021F56A4: .word BG_SetMaskColor
thumb_func_start MOD05_021F56A8
MOD05_021F56A8: ; 0x021F56A8
- ldr r3, _021F56B0 ; =FUN_02017FE4
+ ldr r3, _021F56B0 ; =BG_SetMaskColor
mov r0, #2
ldr r1, _021F56B4 ; =0x00007FFF
bx r3
.balign 4, 0
-_021F56B0: .word FUN_02017FE4
+_021F56B0: .word BG_SetMaskColor
_021F56B4: .word 0x00007FFF
thumb_func_start MOD05_021F56B8
@@ -26733,17 +26733,17 @@ MOD05_021F56B8: ; 0x021F56B8
mov r0, #2
add r1, sp, #4
add r2, r0, #0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r1, #2
str r1, [sp]
ldr r0, [r4, #8]
add r2, r1, #0
mov r3, #1
- bl FUN_02017F48
+ bl BG_FillCharDataRange
ldr r0, [r4, #8]
ldr r2, _021F5718 ; =0x00006002
mov r1, #2
- bl FUN_02018768
+ bl BgFillTilemapBufferAndCommit
mov r0, #4
mov r1, #1
bl GX_EngineAToggleLayers
@@ -26777,17 +26777,17 @@ MOD05_021F571C: ; 0x021F571C
strh r2, [r1]
add r1, sp, #4
mov r2, #2
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r2, #2
str r2, [sp]
ldr r0, [r4, #8]
mov r1, #3
mov r3, #1
- bl FUN_02017F48
+ bl BG_FillCharDataRange
ldr r0, [r4, #8]
ldr r2, _021F577C ; =0x00006002
mov r1, #3
- bl FUN_02018768
+ bl BgFillTilemapBufferAndCommit
mov r0, #8
mov r1, #1
bl GX_EngineAToggleLayers
@@ -26928,7 +26928,7 @@ _021F5856:
mov r0, #2
mov r1, #0
strh r0, [r4, #8]
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #4
mov r1, #1
bl GX_EngineAToggleLayers
@@ -27007,7 +27007,7 @@ _021F58EE:
strh r1, [r0]
mov r0, #2
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #8
strh r0, [r4, #8]
b _021F5980
@@ -27084,7 +27084,7 @@ MOD05_021F5990: ; 0x021F5990
str r0, [sp]
add r7, r1, #0
str r3, [sp, #4]
- bl FUN_0201681C
+ bl CreateHeap
cmp r0, #1
beq _021F59B2
bl GF_AssertFail
@@ -27142,7 +27142,7 @@ _021F5A0E:
add r0, r6, #0
bl FreeToHeap
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
pop {r4, r5, r6, pc}
.balign 4, 0
@@ -27686,7 +27686,7 @@ MOD05_021F5DF8: ; 0x021F5DF8
bne _021F5E0E
mov r0, #0x65
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
_021F5E0E:
ldr r0, [r4, #0x10]
cmp r0, #0x22
@@ -28181,7 +28181,7 @@ MOD05_021F617C: ; 0x021F617C
bl FUN_0200D0E0
add r4, #0x38
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #1
pop {r4, pc}
_021F61AA:
diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c
index 73fddb7e..686dfdf9 100644
--- a/arm9/modules/05/src/mod05_021E72FC.c
+++ b/arm9/modules/05/src/mod05_021E72FC.c
@@ -3,7 +3,7 @@
#include "heap.h"
-extern void FUN_020054C8(u32 param0);
+extern void PlaySE(u32 param0);
extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2);
extern u32 FUN_020553A0(u32 param0);
extern u32 FUN_02058720(u32 param0);
@@ -57,7 +57,7 @@ THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2)
res->Unk0C = param0;
res->Unk10 = param1;
res->Unk00 = param2;
- FUN_020054C8(1624);
+ PlaySE(1624);
FUN_020463CC(param0, MOD05_021E73B4, res);
}
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index d258860d..0701bc8c 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -90,11 +90,11 @@ MOD06_02239728: ; 0x02239728
MOD06_0223972C: ; 0x0223972C
push {r4, lr}
add r4, r0, #0
- bl GX_GetBankForBGExtPltt_2
+ bl GX_GetBankForBG
str r0, [r4]
bl GX_GetBankForBGExtPltt
str r0, [r4, #4]
- bl GX_GetBankForSubBGExtPltt_2
+ bl GX_GetBankForSubBG
str r0, [r4, #8]
bl GX_GetBankForSubBGExtPltt
str r0, [r4, #0xc]
@@ -106,7 +106,7 @@ MOD06_0223972C: ; 0x0223972C
str r0, [r4, #0x18]
bl GX_GetBankForSubOBJExtPltt
str r0, [r4, #0x1c]
- bl FUN_020C5D8C
+ bl GX_GetBankForTex
str r0, [r4, #0x20]
bl GX_GetBankForTexPltt
str r0, [r4, #0x24]
@@ -145,7 +145,7 @@ MOD06_02239790: ; 0x02239790
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -163,15 +163,15 @@ MOD06_02239790: ; 0x02239790
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x2c
pop {r4, r5, pc}
nop
@@ -477,7 +477,7 @@ _02239A1E:
add r0, r0, #1
str r0, [r4, #0xc]
ldr r0, _02239AA8 ; =0x0000065C
- bl FUN_020054C8
+ bl PlaySE
b _02239AA4
_02239A36:
ldr r0, [r4]
@@ -1907,7 +1907,7 @@ MOD06_0223A460: ; 0x0223A460
ldr r0, [sp, #0x28]
str r0, [r5, #0x48]
ldr r0, _0223A4DC ; =0x000006D5
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -2183,7 +2183,7 @@ _0223A69A:
bl FUN_0200CA98
str r0, [r5, #0x20]
ldr r0, _0223A6D8 ; =0x000006D4
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
nop
_0223A6D0: .word 0x0400006C
@@ -2285,7 +2285,7 @@ MOD06_0223A75C: ; 0x0223A75C
add r0, r4, r0
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
pop {r3, r4, r5, pc}
@@ -2964,7 +2964,7 @@ MOD06_0223AC78: ; 0x0223AC78
add r0, r4, r0
add r1, r5, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r2, #0x4f
lsl r2, r2, #2
add r0, r4, #0
@@ -3517,7 +3517,7 @@ _0223B0B2:
cmp r0, #0
bge _0223B162
ldr r0, _0223B164 ; =0x000006D2
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x48
add r0, #0xf0
@@ -3540,7 +3540,7 @@ _0223B0E0:
cmp r0, #0
bge _0223B162
ldr r0, _0223B168 ; =0x000006D3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x4b
lsl r1, r1, #2
@@ -3564,7 +3564,7 @@ _0223B110:
cmp r0, #0
bge _0223B162
ldr r0, _0223B16C ; =0x000006D6
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x84
add r0, #0xf0
@@ -3587,7 +3587,7 @@ _0223B13E:
cmp r0, #0
bge _0223B162
ldr r0, _0223B170 ; =0x000006D7
- bl FUN_020054C8
+ bl PlaySE
mov r0, #4
add r4, #0xf4
str r0, [r4]
@@ -4020,7 +4020,7 @@ MOD06_0223B458: ; 0x0223B458
add r0, #0xc4
add r1, r7, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r6, #0
add r0, #0x78
mov r1, #0x62
@@ -4587,7 +4587,7 @@ MOD06_0223B828: ; 0x0223B828
add r0, #0xdc
add r1, r7, #0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r6, #0
add r0, #0x78
mov r1, #0x62
@@ -4684,7 +4684,7 @@ MOD06_0223B8EC: ; 0x0223B8EC
mov r1, #1
bl MOD06_0223A408
ldr r0, _0223B920 ; =0x000006D8
- bl FUN_020054C8
+ bl PlaySE
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
@@ -5151,13 +5151,13 @@ _0223BCDA:
str r0, [sp, #0x10]
_0223BCDE:
mov r0, #4
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223BCEC
bl GF_AssertFail
_0223BCEC:
mov r0, #0xb
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223BCFA
bl GF_AssertFail
@@ -5864,13 +5864,13 @@ _0223C2DC:
str r0, [sp, #0x10]
_0223C2E4:
mov r0, #4
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223C2F2
bl GF_AssertFail
_0223C2F2:
mov r0, #0xb
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _0223C300
bl GF_AssertFail
@@ -8472,7 +8472,7 @@ MOD06_0223D63C: ; 0x0223D63C
ldr r0, [r5]
add r1, #8
add r2, r4, #0
- bl FUN_02019064
+ bl AddWindowParameterized
b _0223D710
_0223D6B8:
mov r4, #2
@@ -8514,7 +8514,7 @@ _0223D6B8:
ldr r0, [r5]
add r1, #8
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
_0223D710:
add r0, r5, #0
add r0, #0x84
@@ -8609,7 +8609,7 @@ MOD06_0223D7B8: ; 0x0223D7B8
bl FUN_0200CCF8
add r0, r4, #0
add r0, #8
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x80
ldr r0, [r0]
@@ -8621,7 +8621,7 @@ MOD06_0223D7B8: ; 0x0223D7B8
bl ListMenuItems_dtor
add r4, #8
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
thumb_func_start MOD06_0223D7EC
@@ -8649,7 +8649,7 @@ _0223D804:
bl FUN_0200D0E0
add r0, r4, #0
add r0, #0x18
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x88
ldr r0, [r0]
@@ -8780,7 +8780,7 @@ MOD06_0223D918: ; 0x0223D918
ldr r0, [r4]
mov r1, #3
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r4, #0
bl MOD06_0223D7B8
add r0, r4, #0
@@ -8825,13 +8825,13 @@ _0223D984:
ldr r0, [r5]
ldr r2, _0223D9BC ; =0x0224F350
add r1, r4, #0
- bl FUN_02019150
+ bl AddWindow
b _0223D9A6
_0223D99C:
ldr r0, [r5]
add r1, r4, #0
add r2, r7, #0
- bl FUN_02019150
+ bl AddWindow
_0223D9A6:
add r6, r6, #1
add r4, #0x10
@@ -8855,9 +8855,9 @@ MOD06_0223D9C0: ; 0x0223D9C0
add r5, #8
_0223D9D0:
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #6
@@ -8955,37 +8955,37 @@ MOD06_0223DA8C: ; 0x0223DA8C
str r0, [r4, r1]
ldr r0, [r4]
mov r1, #0
- bl FUN_02018884
+ bl GetBgPriority
mov r1, #0x8d
lsl r1, r1, #2
strb r0, [r4, r1]
ldr r0, [r4]
mov r1, #1
- bl FUN_02018884
+ bl GetBgPriority
ldr r1, _0223DB10 ; =0x00000235
strb r0, [r4, r1]
ldr r0, [r4]
mov r1, #2
- bl FUN_02018884
+ bl GetBgPriority
ldr r1, _0223DB14 ; =0x00000236
strb r0, [r4, r1]
ldr r0, [r4]
mov r1, #3
- bl FUN_02018884
+ bl GetBgPriority
ldr r1, _0223DB18 ; =0x00000237
strb r0, [r4, r1]
mov r0, #0
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0
mov r1, #1
bl GX_EngineAToggleLayers
@@ -9012,19 +9012,19 @@ MOD06_0223DB1C: ; 0x0223DB1C
lsl r1, r1, #2
ldrb r1, [r4, r1]
mov r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r1, _0223DB58 ; =0x00000235
mov r0, #1
ldrb r1, [r4, r1]
- bl FUN_020178BC
+ bl SetBgPriority
ldr r1, _0223DB5C ; =0x00000236
mov r0, #2
ldrb r1, [r4, r1]
- bl FUN_020178BC
+ bl SetBgPriority
ldr r1, _0223DB60 ; =0x00000237
mov r0, #3
ldrb r1, [r4, r1]
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0x8e
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -9241,7 +9241,7 @@ MOD06_0223DCF0: ; 0x0223DCF0
cmp r6, #1
beq _0223DD0C
ldr r0, _0223DE28 ; =0x00000638
- bl FUN_020054C8
+ bl PlaySE
_0223DD0C:
add r0, r4, #0
add r0, #0x18
@@ -9323,7 +9323,7 @@ _0223DDB2:
_0223DDBA:
add r0, r4, #0
add r0, #0x18
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r1, sp, #0x14
ldr r0, [sp, #0x10]
add r1, #2
@@ -9546,7 +9546,7 @@ _0223DF30:
bl String_dtor
add r5, #0x28
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -9604,9 +9604,9 @@ _0223E006:
bl MOD06_0223DB1C
ldr r0, [r5]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, _0223E188 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xc
pop {r3, r4, r5, pc}
_0223E034:
@@ -9640,7 +9640,7 @@ _0223E034:
bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x18
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
add r0, #0x58
mov r1, #0
@@ -9702,7 +9702,7 @@ _0223E0FC:
cmp r2, #1
bne _0223E112
ldr r0, _0223E188 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD06_0223E384
pop {r3, r4, r5, pc}
@@ -9753,7 +9753,7 @@ _0223E124:
mov r1, #1
bl MOD06_0223EBF8
ldr r0, _0223E188 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #5
pop {r3, r4, r5, pc}
_0223E182:
@@ -9881,7 +9881,7 @@ _0223E214:
bl String_dtor
add r5, #0x48
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
@@ -9900,7 +9900,7 @@ MOD06_0223E29C: ; 0x0223E29C
cmp r0, #0
beq _0223E2C4
ldr r0, _0223E378 ; =0x00000638
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #1
bl MOD06_0223E4E8
@@ -9936,7 +9936,7 @@ _0223E2C4:
mov r1, #0xf
bl FillWindowPixelBuffer
ldr r0, _0223E380 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD06_0223E384
pop {r4, pc}
@@ -9975,9 +9975,9 @@ _0223E314:
bl MOD06_0223ECC8
add r4, #0x18
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _0223E380 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #4
pop {r4, pc}
_0223E374:
@@ -10268,7 +10268,7 @@ _0223E50A:
bl String_dtor
add r5, #0x38
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -10443,7 +10443,7 @@ _0223E704:
lsl r1, r1, #2
strb r0, [r5, r1]
ldr r0, _0223E798 ; =0x00000644
- bl FUN_020054C8
+ bl PlaySE
mov r0, #9
pop {r3, r4, r5, pc}
_0223E74A:
@@ -10471,7 +10471,7 @@ _0223E74A:
bl MOD06_0223ECC8
add r5, #0x18
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #4
pop {r3, r4, r5, pc}
_0223E78C:
@@ -10684,7 +10684,7 @@ _0223E902:
bl MOD06_0223ECC8
add r5, #0x18
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #4
pop {r3, r4, r5, pc}
_0223E944:
@@ -10736,7 +10736,7 @@ _0223E966:
bl MOD06_0223ECC8
add r4, #0x18
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #4
pop {r4, pc}
_0223E9B2:
@@ -10917,7 +10917,7 @@ MOD06_0223EB04: ; 0x0223EB04
_0223EB1A:
add r0, r4, #0
add r0, #0x18
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
bl MOD06_0223D63C
mov r0, #1
@@ -11285,7 +11285,7 @@ _0223EE16:
ldr r0, _0223EE70 ; =0x02252420
ldr r0, [r0]
add r0, #0x40
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0223EE34
ldr r0, _0223EE70 ; =0x02252420
@@ -11333,7 +11333,7 @@ MOD06_0223EE74: ; 0x0223EE74
ldr r0, _0223EF10 ; =0x02252420
ldr r0, [r0]
add r0, #0x20
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0223EEB8
ldr r0, _0223EF10 ; =0x02252420
@@ -11358,7 +11358,7 @@ MOD06_0223EE74: ; 0x0223EE74
ldr r0, [r1, #0x68]
add r1, #0x20
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
_0223EEB8:
ldr r0, _0223EF10 ; =0x02252420
ldr r2, _0223EF14 ; =0x000003D9
@@ -11570,7 +11570,7 @@ _0223F060:
cmp r1, #0
beq _0223F07A
add r0, #0x40
- bl FUN_02019178
+ bl RemoveWindow
_0223F07A:
ldr r0, _0223F08C ; =0x02252420
ldr r0, [r0]
@@ -11606,7 +11606,7 @@ MOD06_0223F0A8: ; 0x0223F0A8
cmp r2, #0
bne _0223F0BE
ldr r0, _0223F0C4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0223F0BE:
pop {r3, pc}
.align 2, 0
@@ -11820,7 +11820,7 @@ MOD06_0223F270: ; 0x0223F270
ldr r0, _0223F330 ; =0x02252420
ldr r0, [r0]
add r0, #0x30
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0223F2AA
ldr r0, _0223F330 ; =0x02252420
@@ -11840,7 +11840,7 @@ MOD06_0223F270: ; 0x0223F270
add r1, #0x30
ldr r0, [r0, #8]
mov r3, #0x17
- bl FUN_02019064
+ bl AddWindowParameterized
_0223F2AA:
ldr r0, _0223F330 ; =0x02252420
ldr r2, _0223F334 ; =0x000003D9
@@ -12088,7 +12088,7 @@ _0223F4A4:
pop {r3, r4, r5, pc}
_0223F4BA:
ldr r0, _0223F51C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0223F518 ; =0x02252420
mov r1, #1
ldr r0, [r0]
@@ -12101,7 +12101,7 @@ _0223F4BA:
pop {r3, r4, r5, pc}
_0223F4D8:
ldr r0, _0223F51C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r1, r4, #0
ldr r0, [r4, #0x5c]
add r1, #0x8e
@@ -12578,7 +12578,7 @@ MOD06_0223F8C8: ; 0x0223F8C8
ldr r0, _0223F950 ; =0x02252420
ldr r0, [r0]
add r0, #0x30
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0223F910
ldr r0, _0223F950 ; =0x02252420
@@ -12598,7 +12598,7 @@ MOD06_0223F8C8: ; 0x0223F8C8
add r1, #0x30
ldr r0, [r0, #8]
mov r3, #0x16
- bl FUN_02019064
+ bl AddWindowParameterized
_0223F910:
ldr r0, _0223F950 ; =0x02252420
ldr r2, _0223F954 ; =0x000003D9
@@ -13005,7 +13005,7 @@ _0223FC32:
add r1, #0x95
strb r0, [r1]
ldr r0, _0223FCF4 ; =0x0000060D
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [sp, #4]
ldr r1, [sp, #4]
add r0, #0x95
@@ -13856,10 +13856,10 @@ MOD06_02240364: ; 0x02240364
bl DestroyListMenu
add r0, r4, #0
add r0, #0x20
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x20
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x97
ldrb r0, [r0]
@@ -13873,11 +13873,11 @@ MOD06_02240364: ; 0x02240364
ldr r0, _022403DC ; =0x02252420
ldr r0, [r0]
add r0, #0x30
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, _022403DC ; =0x02252420
ldr r0, [r0]
add r0, #0x30
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0
add r4, #0x97
strb r0, [r4]
@@ -14468,7 +14468,7 @@ MOD06_02240864: ; 0x02240864
add r5, r0, #0
add r0, #0x54
add r4, r1, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0224089E
add r0, r5, #0
@@ -14524,11 +14524,11 @@ MOD06_022408D4: ; 0x022408D4
bl FUN_0200D0E0
add r0, r4, #0
add r0, #0x54
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
_022408EC:
add r4, #0x54
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
.align 2, 0
@@ -14572,7 +14572,7 @@ MOD06_02240924: ; 0x02240924
add r6, r6, #1
_02240940:
add r0, r4, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _022409D2
add r0, r6, #2
@@ -14594,7 +14594,7 @@ _02240940:
add r1, r4, #0
ldr r0, [r0, #8]
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _02240A20 ; =0x000003D9
add r0, #0x34
@@ -14695,10 +14695,10 @@ MOD06_02240A28: ; 0x02240A28
add r1, #0x38
ldrb r1, [r1]
ldr r0, [r4, #0x34]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0
add r0, #0x34
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #8]
bl ListMenuItems_dtor
mov r0, #0
@@ -14731,7 +14731,7 @@ MOD06_02240A64: ; 0x02240A64
cmp r6, r0
beq _02240A9C
ldr r0, _02240B00 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02240A9C:
mov r0, #1
mvn r0, r0
@@ -14748,7 +14748,7 @@ _02240AB0:
pop {r4, r5, r6, pc}
_02240AB4:
ldr r0, _02240B00 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x10]
mov r1, #0
add r0, #0xac
@@ -14759,7 +14759,7 @@ _02240AB4:
pop {r4, r5, r6, pc}
_02240ACC:
ldr r0, _02240B00 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x10]
mov r1, #0
add r0, #0xac
@@ -14771,7 +14771,7 @@ _02240ACC:
pop {r4, r5, r6, pc}
_02240AE6:
ldr r0, _02240B00 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x10]
add r1, r4, #0
ldr r0, [r0, #0xc]
@@ -14810,7 +14810,7 @@ MOD06_02240B04: ; 0x02240B04
ldr r0, [r0, #8]
mov r2, #3
mov r3, #0x16
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _02240BB0 ; =0x000003D9
add r0, #0x44
@@ -14893,7 +14893,7 @@ MOD06_02240BB8: ; 0x02240BB8
cmp r6, r0
beq _02240BF0
ldr r0, _02240C54 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02240BF0:
mov r0, #1
mvn r0, r0
@@ -14906,13 +14906,13 @@ _02240BF0:
pop {r4, r5, r6, pc}
_02240C02:
ldr r0, _02240C54 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r4, #0
mvn r4, r4
b _02240C1A
_02240C0E:
ldr r0, _02240C54 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD06_02240A28
_02240C1A:
@@ -14930,10 +14930,10 @@ _02240C1A:
add r1, #0x48
ldrb r1, [r1]
ldr r0, [r5, #0x44]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r5, #0
add r0, #0x44
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r5, #0xc]
bl ListMenuItems_dtor
mov r0, #0
@@ -14984,7 +14984,7 @@ MOD06_02240C58: ; 0x02240C58
ldr r0, [r0, #0x10]
mov r3, #4
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [sp, #0x24]
ldr r2, _02240F00 ; =0x000003D9
mov r1, #1
@@ -15286,10 +15286,10 @@ MOD06_02240F1C: ; 0x02240F1C
add r1, #0x28
ldrb r1, [r1]
ldr r0, [r4, #0x24]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r4, #0x24
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
.align 2, 0
@@ -15320,7 +15320,7 @@ _02240F6A:
pop {r4, pc}
_02240F70:
ldr r0, _02240FE8 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r1, r4, #0
add r1, #0x78
ldrh r1, [r1]
@@ -15345,7 +15345,7 @@ _02240F70:
b _02240FE2
_02240FAA:
ldr r0, _02240FE8 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r1, r4, #0
add r1, #0x78
ldrh r1, [r1]
@@ -16402,7 +16402,7 @@ _022417F4:
add r0, r4, #0
bl MOD05_021DA0E0
ldr r0, _02241868 ; =0x0000065A
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02241868: .word 0x0000065A
@@ -16559,7 +16559,7 @@ _022419A2:
mov r1, #0
bl FUN_02055560
ldr r0, _02241A38 ; =0x00000611
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -16610,7 +16610,7 @@ _02241A02:
mov r1, #1
bl FUN_0205557C
ldr r0, _02241A40 ; =0x0000061A
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -16658,7 +16658,7 @@ _02241A72:
mov r1, #0
bl FUN_02055560
ldr r0, _02241B04 ; =0x00000611
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -16706,7 +16706,7 @@ _02241ACE:
mov r1, #1
bl FUN_0205557C
ldr r0, _02241B0C ; =0x0000061A
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -17168,7 +17168,7 @@ _02241E8A:
mov r1, #0
bl FUN_02055560
ldr r0, _02241F70 ; =0x00000611
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -17258,7 +17258,7 @@ _02241F48:
mov r1, #1
bl FUN_0205557C
ldr r0, _02241F78 ; =0x0000061A
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -17317,7 +17317,7 @@ _02241FBA:
mov r1, #0x49
bl FUN_0205ADDC
ldr r0, _022420C4 ; =0x00000611
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -17417,7 +17417,7 @@ _02242092:
add r0, r6, #0
bl FUN_0205AE50
ldr r0, _022420C8 ; =0x0000061A
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -17477,7 +17477,7 @@ _02242112:
mov r1, #0x49
bl FUN_0205ADDC
ldr r0, _0224221C ; =0x00000611
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -17580,7 +17580,7 @@ _022421E4:
add r0, r5, #0
bl FUN_0205AE50
ldr r0, _02242220 ; =0x0000061A
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -18283,7 +18283,7 @@ _02242776: ; jump table
.short _0224282E - _02242776 - 2 ; case 3
_0224277E:
ldr r0, _02242840 ; =0x00000616
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x24]
cmp r0, #4
bne _02242794
@@ -18725,7 +18725,7 @@ _02242ACE:
str r0, [r6]
strb r0, [r4, #0x13]
ldr r0, _02242AE4 ; =0x0000063F
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r7, #0x10]
ldr r1, _02242AE8 ; =MOD06_02242AEC
ldr r2, [sp]
@@ -18878,7 +18878,7 @@ MOD06_02242BE0: ; 0x02242BE0
bl FUN_02046528
add r7, r0, #0
ldr r0, _02242C70 ; =0x0000067C
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0x11
mov r0, #4
lsl r1, r1, #4
@@ -19005,7 +19005,7 @@ MOD06_02242CDC: ; 0x02242CDC
add r1, r4, #4
mov r2, #3
add r3, r6, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r0, #4
@@ -19426,14 +19426,14 @@ MOD06_02243024: ; 0x02243024
push {r4, r5, r6, lr}
add r6, r0, #0
ldr r0, _0224307C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r6, #0
add r0, #0x14
mov r1, #0
bl FUN_0200D0E0
add r0, r6, #0
add r0, #0x14
- bl FUN_02019178
+ bl RemoveWindow
add r0, r6, #0
add r0, #0x88
mov r1, #0
@@ -19444,7 +19444,7 @@ MOD06_02243024: ; 0x02243024
mov r1, #0
bl FUN_0200CCF8
add r0, r6, #4
- bl FUN_02019178
+ bl RemoveWindow
mov r4, #0
add r5, r6, #0
_02243060:
@@ -20061,7 +20061,7 @@ MOD06_022434D0: ; 0x022434D0
mov r0, #3
mov r1, #0x3b
lsl r2, r2, #0xe
- bl FUN_02016828
+ bl CreateHeapAtEnd
ldr r1, _02243684 ; =0x000008CC
mov r0, #0x3b
bl AllocFromHeap
@@ -20275,7 +20275,7 @@ _022436A6:
add r0, r4, #0
bl FreeToHeap
add r0, r5, #0
- bl FUN_020168D0
+ bl DestroyHeap
_022436BE:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -24074,7 +24074,7 @@ _022453F0:
cmp r0, #4
bne _022453FC
ldr r0, _02245474 ; =0x000006DB
- bl FUN_020054C8
+ bl PlaySE
_022453FC:
ldrb r0, [r4, #5]
add r0, r0, #1
@@ -24179,7 +24179,7 @@ MOD06_02245478: ; 0x02245478
cmp r2, #0
bne _022454CC
ldr r0, _02245540 ; =0x000006DA
- bl FUN_020054C8
+ bl PlaySE
_022454CC:
ldrb r0, [r5, #6]
add r0, r0, #1
@@ -24220,7 +24220,7 @@ _022454D8:
cmp r2, #0
bne _0224551C
ldr r0, _02245540 ; =0x000006DA
- bl FUN_020054C8
+ bl PlaySE
_0224551C:
ldrb r0, [r5, #6]
add r0, r0, #1
@@ -24294,7 +24294,7 @@ _02245578:
cmp r0, #0
bne _022455B4
ldr r0, _0224564C ; =0x000006D9
- bl FUN_020054C8
+ bl PlaySE
_022455B4:
ldrb r0, [r4, #6]
add r0, r0, #1
@@ -24312,7 +24312,7 @@ _022455BC:
cmp r0, #6
bne _022455D8
ldr r0, _02245650 ; =0x000006DA
- bl FUN_020054C8
+ bl PlaySE
_022455D8:
ldrb r0, [r4, #6]
sub r0, r0, #1
@@ -24341,7 +24341,7 @@ _022455E0:
cmp r0, #0
bne _02245616
ldr r0, _0224564C ; =0x000006D9
- bl FUN_020054C8
+ bl PlaySE
_02245616:
ldrb r0, [r4, #6]
add r0, r0, #1
@@ -24359,7 +24359,7 @@ _0224561E:
cmp r0, #6
bne _0224563A
ldr r0, _02245650 ; =0x000006DA
- bl FUN_020054C8
+ bl PlaySE
_0224563A:
ldrb r0, [r4, #6]
sub r0, r0, #1
@@ -27300,7 +27300,7 @@ MOD06_02246C08: ; 0x02246C08
pop {r4, pc}
_02246C18:
ldr r0, _02246C34 ; =0x00000649
- bl FUN_020054C8
+ bl PlaySE
mov r0, #2
lsl r0, r0, #0xa
str r0, [r4, #0x54]
@@ -27719,12 +27719,12 @@ MOD06_02246F0C: ; 0x02246F0C
ldr r0, [r5, #0x60]
mov r1, #0
ldr r0, [r0, #8]
- bl FUN_02018884
+ bl GetBgPriority
strh r0, [r5, #0x24]
ldr r0, [r5, #0x60]
mov r1, #3
ldr r0, [r0, #8]
- bl FUN_02018884
+ bl GetBgPriority
strh r0, [r5, #0x26]
ldr r2, _02246FB4 ; =0x0400000A
mov r1, #3
@@ -28496,7 +28496,7 @@ MOD06_02247544: ; 0x02247544
ldr r1, [r1, #0xc]
mov r2, #0x20
lsl r3, r0, #7
- bl FUN_02017FB4
+ bl BG_LoadPlttData
add r0, r4, #0
bl FreeToHeap
pop {r3, r4, r5, pc}
@@ -28521,7 +28521,7 @@ MOD06_0224756C: ; 0x0224756C
ldr r3, [r3, #0x10]
add r0, r5, #0
mov r1, #3
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r6, #0
bl FreeToHeap
add sp, #4
@@ -28539,12 +28539,12 @@ MOD06_022475A4: ; 0x022475A4
mov r1, #3
add r3, r2, #0
add r5, r0, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #3
add r0, r5, #0
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r6, #0
add r1, r7, #0
mov r2, #4
@@ -28558,7 +28558,7 @@ MOD06_022475A4: ; 0x022475A4
ldr r3, [r3, #8]
mov r1, #3
add r2, #0xc
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
mov r0, #0x20
str r0, [sp]
str r0, [sp, #4]
@@ -28568,10 +28568,10 @@ MOD06_022475A4: ; 0x022475A4
add r0, r5, #0
mov r1, #3
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r5, #0
mov r1, #3
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r6, #0
bl FreeToHeap
add sp, #0xc
@@ -28579,11 +28579,11 @@ MOD06_022475A4: ; 0x022475A4
thumb_func_start MOD06_02247610
MOD06_02247610: ; 0x02247610
- ldr r3, _02247618 ; =FUN_02018744
+ ldr r3, _02247618 ; =BgClearTilemapBufferAndCommit
mov r1, #3
bx r3
nop
-_02247618: .word FUN_02018744
+_02247618: .word BgClearTilemapBufferAndCommit
thumb_func_start MOD06_0224761C
MOD06_0224761C: ; 0x0224761C
@@ -38707,7 +38707,7 @@ _0224C3C2:
add r0, r0, r1
str r0, [sp, #0x34]
ldr r0, _0224C518 ; =0x000005FE
- bl FUN_020054C8
+ bl PlaySE
add r0, sp, #0x20
str r0, [sp]
ldr r0, [r5, #0x4c]
@@ -38956,7 +38956,7 @@ _0224C604:
mov r1, #1
bl MOD05_021DA4EC
ldr r0, _0224C670 ; =0x00000612
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #2]
add r0, r0, #1
strb r0, [r4, #2]
@@ -38971,7 +38971,7 @@ _0224C61C:
mov r1, #0
bl FUN_020054F0
ldr r0, _0224C674 ; =0x000005F1
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
mov r2, #1
@@ -39151,15 +39151,15 @@ MOD06_0224C75C: ; 0x0224C75C
b _0224C7AA
_0224C794:
ldr r0, _0224C7B8 ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
b _0224C7AA
_0224C79C:
ldr r0, _0224C7B8 ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
b _0224C7AA
_0224C7A4:
ldr r0, _0224C7BC ; =0x0000064E
- bl FUN_020054C8
+ bl PlaySE
_0224C7AA:
mov r0, #0
pop {r4, pc}
@@ -40876,7 +40876,7 @@ MOD06_0224D46C: ; 0x0224D46C
add r0, r5, #0
add r1, r4, #0
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r3, #0xb
@@ -41093,9 +41093,9 @@ MOD06_0224D6A4: ; 0x0224D6A4
mov r1, #1
bl FUN_0200CCF8
add r0, r4, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x10]
bl DestroyMsgData
ldr r0, [r4, #0x14]
@@ -41381,7 +41381,7 @@ _0224D8DC:
ldr r0, [r4, #0x14]
mov r1, #3
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x61
lsl r0, r0, #2
add r0, r4, r0
@@ -41403,7 +41403,7 @@ _0224D8DC:
mov r0, #5
str r0, [r4, #4]
ldr r0, _0224DB64 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0224DB9A
_0224D942:
mov r1, #1
@@ -41431,7 +41431,7 @@ _0224D94C:
mov r0, #0xc
str r0, [r4, #4]
ldr r0, _0224DB64 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0224DB9A
_0224D97E:
mov r0, #0xb9
@@ -41746,7 +41746,7 @@ MOD06_0224DBCC: ; 0x0224DBCC
bl FUN_02002ED0
ldr r0, [r4, #0x14]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #8
pop {r4, pc}
.align 2, 0
@@ -41756,7 +41756,7 @@ MOD06_0224DC28: ; 0x0224DC28
push {r3, lr}
ldr r0, [r0, #0x14]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #1
bl FUN_02054590
@@ -41810,7 +41810,7 @@ MOD06_0224DC5C: ; 0x0224DC5C
add r0, r4, #0
mov r2, #3
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r5, #4]
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -41834,12 +41834,12 @@ MOD06_0224DCB4: ; 0x0224DCB4
cmp r0, #0
beq _0224DCD6
ldr r0, [r4, #4]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, [r4, #4]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
mov r0, #0
str r0, [r4]
_0224DCD6:
@@ -42055,7 +42055,7 @@ MOD06_0224DE60: ; 0x0224DE60
add r0, r4, #0
mov r2, #3
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [sp, #0x14]
bl ScrStrBufs_new
str r0, [r6, #8]
@@ -42106,12 +42106,12 @@ _0224DEE6:
ldr r0, [r6, #8]
bl ScrStrBufs_delete
ldr r0, [r6, #4]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, [r6, #4]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r6, #4]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
mov r0, #0
str r0, [r6]
_0224DF18:
@@ -42230,7 +42230,7 @@ _0224DFC0:
add r0, r4, #0
mov r2, #3
mov r3, #0x11
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [sp, #0x14]
bl ScrStrBufs_new
mov r1, #0x49
@@ -42447,12 +42447,12 @@ _0224E1C0:
add r2, r1, #0
bl DestroyListMenu
ldr r0, [r6, #4]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, [r6, #4]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r6, #4]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
mov r0, #1
str r0, [r6]
_0224E1E2:
@@ -42487,7 +42487,7 @@ MOD06_0224E1E4: ; 0x0224E1E4
ldr r2, [r5, r2]
blx r2
ldr r0, _0224E248 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD06_0224E39C
b _0224E242
@@ -42780,10 +42780,10 @@ _0224E448:
ldr r0, [r5, #4]
mov r1, #3
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r5, #4]
mov r1, #3
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r3, r4, r5, pc}
@@ -43590,7 +43590,7 @@ MOD06_0224EA64: ; 0x0224EA64
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r1, #3
@@ -43603,7 +43603,7 @@ MOD06_0224EA64: ; 0x0224EA64
add r1, r4, #0
bl MOD06_0224E8C4
ldr r0, _0224EAA8 ; =0x0000064B
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
add r4, #0xec
str r0, [r4]
@@ -43704,7 +43704,7 @@ MOD06_0224EB30: ; 0x0224EB30
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r2, #4
@@ -43717,7 +43717,7 @@ MOD06_0224EB30: ; 0x0224EB30
add r1, r4, #0
bl MOD06_0224E8C4
ldr r0, _0224EB74 ; =0x0000064A
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
add r4, #0xec
str r0, [r4]
@@ -43738,7 +43738,7 @@ MOD06_0224EB78: ; 0x0224EB78
add r0, #0xdc
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
add r0, #0xdc
mov r2, #4
@@ -43752,7 +43752,7 @@ MOD06_0224EB78: ; 0x0224EB78
add r2, r4, #0
bl MOD06_0224E858
ldr r0, _0224EBC0 ; =0x0000064A
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
add r4, #0xec
str r0, [r4]
@@ -43878,7 +43878,7 @@ MOD06_0224EC5C: ; 0x0224EC5C
add r0, r0, r1
mov r1, #4
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r5, [sp, #8]
mov r1, #0x6e
add r4, sp, #0x10
@@ -43912,7 +43912,7 @@ _0224ECA8:
add r0, #0xdc
bl MOD05_021F54CC
ldr r0, _0224ECF0 ; =0x0000064D
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0x72
ldr r0, [sp, #8]
mov r2, #0
@@ -44074,7 +44074,7 @@ _0224EDF0:
mov r1, #1
bl MOD05_021F54CC
ldr r0, _0224EE14 ; =0x00000627
- bl FUN_020054C8
+ bl PlaySE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
@@ -44299,7 +44299,7 @@ MOD06_0224EF98: ; 0x0224EF98
mov r1, #4
add r0, r5, r0
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r5, #0
mov r1, #0x8d
mov r2, #8
@@ -46245,4 +46245,3 @@ MOD6_02252420: ; 0x02252420
.global MOD6_02252424
MOD6_02252424: ; 0x02252424
.space 0x1C
-
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index 80472fdf..234e29fe 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -146,7 +146,7 @@ MOD07_02211F34: ; 0x02211F34
bl MOD07_02211F14
ldr r0, [r4]
ldr r0, [r0, #0x24]
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0xc]
ldr r0, [r4]
ldr r0, [r0, #0x24]
@@ -423,7 +423,7 @@ MOD07_022121AC: ; 0x022121AC
add r4, r0, #0
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_02017B48
+ bl Bg_GetXpos
cmp r0, #0x18
bgt _02212248
ldr r1, _02212370 ; =0x00000B82
@@ -437,13 +437,13 @@ MOD07_022121AC: ; 0x022121AC
ldr r0, [r4, #0xc]
mov r1, #3
mov r3, #0x18
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r2, #0
add r3, r2, #0
ldr r0, [r4, #0xc]
mov r1, #2
sub r3, #0x18
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r1, #0
add r0, r4, #0
add r2, r1, #0
@@ -492,13 +492,13 @@ _02212248:
ldr r3, [r4, r3]
mov r1, #3
mov r2, #2
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r3, _02212374 ; =0x00000B74
ldr r0, [r4, #0xc]
ldr r3, [r4, r3]
mov r1, #2
mov r2, #1
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r3, _02212370 ; =0x00000B82
mov r1, #0
ldrb r0, [r4, r3]
@@ -655,11 +655,11 @@ _02212394:
cmp r0, #1
bne _022123AE
ldr r0, _02212578 ; =0x00000715
- bl FUN_020054C8
+ bl PlaySE
b _022123B4
_022123AE:
ldr r0, _0221257C ; =0x00000852
- bl FUN_020054C8
+ bl PlaySE
_022123B4:
ldr r0, _02212574 ; =0x00000B82
ldrb r1, [r5, r0]
@@ -669,23 +669,23 @@ _022123B4:
mov r1, #3
mov r2, #0
mov r3, #0x18
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r2, #0
add r3, r2, #0
ldr r0, [r5, #0xc]
mov r1, #2
sub r3, #0x18
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r1, #3
ldr r0, [r5, #0xc]
add r2, r1, #0
mov r3, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5, #0xc]
mov r1, #2
mov r2, #3
mov r3, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r1, #0
add r0, r5, #0
add r2, r1, #0
@@ -798,23 +798,23 @@ _022124CC:
mov r1, #3
mov r2, #0
add r3, #0x18
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
add r3, r6, #0
ldr r0, [r5, #0xc]
mov r1, #2
mov r2, #0
sub r3, #0x18
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r1, #3
ldr r0, [r5, #0xc]
add r2, r1, #0
add r3, r4, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5, #0xc]
mov r1, #2
mov r2, #3
add r3, r4, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
add r0, r5, #0
mov r1, #0
add r2, r6, #0
@@ -915,18 +915,18 @@ _022125D0:
cmp r0, #0
bne _022125DE
ldr r0, _022126B0 ; =0x00000719
- bl FUN_020054C8
+ bl PlaySE
_022125DE:
ldr r0, [r4, #0xc]
mov r1, #3
mov r2, #1
mov r3, #0x10
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r1, #2
ldr r0, [r4, #0xc]
add r2, r1, #0
mov r3, #0x10
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r2, _022126A4 ; =0x00000B82
mov r1, #0
ldrb r0, [r4, r2]
@@ -1086,7 +1086,7 @@ MOD07_02212720: ; 0x02212720
ldr r3, _02212818 ; =0x02214960
add r2, r1, #0
ldrb r3, [r3, r5]
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r3, _02212814 ; =0x00000B82
ldr r0, [r4, #0xc]
ldrb r3, [r4, r3]
@@ -1095,7 +1095,7 @@ MOD07_02212720: ; 0x02212720
lsl r5, r3, #1
ldr r3, _02212818 ; =0x02214960
ldrb r3, [r3, r5]
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r2, _02212814 ; =0x00000B82
mov r1, #0
ldrb r2, [r4, r2]
@@ -1173,7 +1173,7 @@ MOD07_02212720: ; 0x02212720
cmp r0, #0
bne _022127FA
ldr r0, _02212820 ; =0x00000853
- bl FUN_020054C8
+ bl PlaySE
_022127FA:
ldr r0, _02212814 ; =0x00000B82
ldrb r1, [r4, r0]
@@ -1206,7 +1206,7 @@ MOD07_02212824: ; 0x02212824
ldr r3, _0221294C ; =0x02214960
mov r2, #1
ldrb r3, [r3, r5]
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r3, _02212948 ; =0x00000B82
ldr r0, [r4, #0xc]
ldrb r3, [r4, r3]
@@ -1215,7 +1215,7 @@ MOD07_02212824: ; 0x02212824
lsl r5, r3, #1
ldr r3, _0221294C ; =0x02214960
ldrb r3, [r3, r5]
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r2, _02212948 ; =0x00000B82
mov r1, #0
ldrb r2, [r4, r2]
@@ -1317,7 +1317,7 @@ MOD07_02212824: ; 0x02212824
cmp r0, #0
bne _0221292E
ldr r0, _02212954 ; =0x00000853
- bl FUN_020054C8
+ bl PlaySE
_0221292E:
ldr r0, _02212948 ; =0x00000B82
ldrb r1, [r4, r0]
@@ -1429,7 +1429,7 @@ MOD07_022129FC: ; 0x022129FC
push {r4, lr}
add r4, r0, #0
ldr r0, _02212A34 ; =0x0000071A
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x72
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -1459,7 +1459,7 @@ MOD07_02212A3C: ; 0x02212A3C
push {r4, lr}
add r4, r0, #0
ldr r0, _02212A5C ; =0x0000071A
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x72
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -1535,7 +1535,7 @@ _02212AC6:
bl FUN_02003210
_02212ADA:
ldr r0, _02212AEC ; =0x0000071B
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02212AF0 ; =0x00000B81
mov r1, #0x40
strb r1, [r4, r0]
@@ -1555,7 +1555,7 @@ MOD07_02212AF4: ; 0x02212AF4
cmp r0, #0
bne _02212B06
ldr r0, _02212B44 ; =0x00000719
- bl FUN_020054C8
+ bl PlaySE
_02212B06:
ldr r1, _02212B40 ; =0x00000B82
ldrb r0, [r4, r1]
@@ -1868,7 +1868,7 @@ MOD07_02212D68: ; 0x02212D68
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r0, [r4, #8]
bl FUN_0200372C
bl FUN_0201C30C
@@ -1897,7 +1897,7 @@ MOD07_02212D98: ; 0x02212D98
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _02212E58 ; =0x02214A2C
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -1912,16 +1912,16 @@ MOD07_02212D98: ; 0x02212D98
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #3
add r3, r1, #0
ldr r0, [r4, #0xc]
mov r2, #0
add r3, #0xfd
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r5, _02212E5C ; =0x02214A48
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -1936,16 +1936,16 @@ MOD07_02212D98: ; 0x02212D98
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r3, #0xff
ldr r0, [r4, #0xc]
mov r1, #2
mov r2, #0
mvn r3, r3
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r5, _02212E60 ; =0x02214A64
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -1960,10 +1960,10 @@ MOD07_02212D98: ; 0x02212D98
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #2
mov r1, #0
bl GX_EngineAToggleLayers
@@ -1984,13 +1984,13 @@ MOD07_02212E64: ; 0x02212E64
bl GX_EngineAToggleLayers
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
bl FreeToHeap
pop {r4, pc}
@@ -2063,7 +2063,7 @@ MOD07_02212E90: ; 0x02212E90
bl FUN_02003108
ldr r1, _02212F28 ; =0x000018C6
mov r0, #1
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -2452,7 +2452,7 @@ MOD07_02213220: ; 0x02213220
add r1, r5, #0
mov r2, #8
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -2508,7 +2508,7 @@ MOD07_02213220: ; 0x02213220
mov r1, #0
bl FUN_02011A60
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -3203,7 +3203,7 @@ MOD07_02213858: ; 0x02213858
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _022138EC ; =0x02214A9C
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -3218,10 +3218,10 @@ MOD07_02213858: ; 0x02213858
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _022138F0 ; =0x02214A10
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -3236,10 +3236,10 @@ MOD07_02213858: ; 0x02213858
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _022138F4 ; =0x02214A80
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -3254,7 +3254,7 @@ MOD07_02213858: ; 0x02213858
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add sp, #0x64
pop {r4, r5, pc}
nop
@@ -3272,13 +3272,13 @@ MOD07_022138F8: ; 0x022138F8
bl GX_EngineAToggleLayers
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
bl FreeToHeap
pop {r4, pc}
@@ -3327,7 +3327,7 @@ MOD07_02213924: ; 0x02213924
mov r3, #0
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
ldr r1, [sp, #0x10]
ldr r0, _022139B4 ; =0x000004E4
ldr r1, [r1, #0xc]
@@ -3401,7 +3401,7 @@ _022139EE:
ldrb r3, [r6, #1]
ldr r0, [r5, #0xc]
mov r1, #2
- bl FUN_02018170
+ bl CopyToBgTilemapRect
mov r0, #0x86
lsl r0, r0, #2
ldrh r0, [r7, r0]
@@ -3419,7 +3419,7 @@ _022139EE:
ldrb r3, [r6, #1]
ldr r0, [r5, #0xc]
mov r1, #2
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
cmp r4, #3
bhs _02213A46
ldr r0, [r5]
@@ -3443,7 +3443,7 @@ _02213A54:
add r1, r5, r1
mov r2, #0x20
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
b _02213A7A
_02213A68:
ldr r1, _02213A9C ; =0x000004E4
@@ -3453,7 +3453,7 @@ _02213A68:
add r1, r5, r1
mov r2, #0x20
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
_02213A7A:
add r4, r4, #1
add r7, #0x18
@@ -3462,7 +3462,7 @@ _02213A7A:
blo _022139C8
ldr r0, [r5, #0xc]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -3478,7 +3478,7 @@ MOD07_02213AA0: ; 0x02213AA0
ldr r0, [r4, #0xc]
str r1, [sp]
add r1, r2, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r6, r0, #0
ldr r0, [r4]
add r0, #0x29
@@ -3527,10 +3527,10 @@ MOD07_02213AEC: ; 0x02213AEC
bl MOD07_02213AA0
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r4, pc}
.align 2, 0
_02213B18: .word 0x00000544
@@ -3565,7 +3565,7 @@ MOD07_02213B20: ; 0x02213B20
ldr r0, [r5, #0xc]
mov r1, #1
lsr r2, r2, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, _02213BE8 ; =0x00000844
lsl r2, r6, #0x18
str r4, [sp]
@@ -3582,7 +3582,7 @@ MOD07_02213B20: ; 0x02213B20
ldr r0, [r5, #0xc]
mov r1, #2
lsr r2, r2, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
b _02213BCE
_02213B80:
ldr r2, _02213BE4 ; =0x00000544
@@ -3603,7 +3603,7 @@ _02213B80:
ldr r0, [r5, #0xc]
mov r1, #1
add r3, r2, #0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r1, _02213BE8 ; =0x00000844
mov r2, #0
str r4, [sp]
@@ -3621,14 +3621,14 @@ _02213B80:
ldr r0, [r5, #0xc]
mov r1, #2
add r3, r2, #0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
_02213BCE:
ldr r0, [r5, #0xc]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0xc]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r3, r4, r5, r6, pc}
nop
@@ -4445,7 +4445,7 @@ _02214258:
ldr r0, [r7, #0xc]
add r1, r5, #0
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r6, r6, #1
add r4, #8
add r5, #0x10
@@ -4463,7 +4463,7 @@ MOD07_02214274: ; 0x02214274
add r5, #0x10
_0221427C:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0x18
@@ -4817,7 +4817,7 @@ _02214558:
add r1, r5, r1
mov r2, #4
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
b _0221459E
_02214570:
ldrb r3, [r4, #9]
@@ -4829,7 +4829,7 @@ _02214570:
add r1, r5, r1
mov r2, #4
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
b _0221459E
_02214588:
ldrb r3, [r4, #9]
@@ -4841,7 +4841,7 @@ _02214588:
add r1, r5, r1
mov r2, #4
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
_0221459E:
ldr r0, [sp, #8]
ldrh r1, [r7, r6]
@@ -4941,16 +4941,16 @@ MOD07_02214600: ; 0x02214600
add r1, r6, #0
bl MOD07_02214510
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, r4
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, r4
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, r4
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s
index a02c3f48..4a0a6d1c 100644
--- a/arm9/modules/08/asm/module_08.s
+++ b/arm9/modules/08/asm/module_08.s
@@ -616,7 +616,7 @@ _022122C6:
add r0, #0xc4
ldr r0, [r0]
mov r1, #0
- bl FUN_02018884
+ bl GetBgPriority
mov r1, #0x1a
lsl r1, r1, #4
strb r0, [r4, r1]
@@ -624,21 +624,21 @@ _022122C6:
add r0, #0xc4
ldr r0, [r0]
mov r1, #1
- bl FUN_02018884
+ bl GetBgPriority
ldr r1, _02212374 ; =0x000001A1
strb r0, [r4, r1]
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
mov r1, #2
- bl FUN_02018884
+ bl GetBgPriority
ldr r1, _02212378 ; =0x000001A2
strb r0, [r4, r1]
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
mov r1, #3
- bl FUN_02018884
+ bl GetBgPriority
ldr r1, _0221237C ; =0x000001A3
mov r3, #0
strb r0, [r4, r1]
@@ -1139,7 +1139,7 @@ _02212638:
sub r0, r0, #1
strb r0, [r5, #0x18]
ldrh r0, [r5, #0x1a]
- bl FUN_020054C8
+ bl PlaySE
ldrh r0, [r5, #0x1a]
ldr r1, _02212660 ; =0x0000FFFF
ldr r2, [r5, #0x14]
@@ -1165,7 +1165,7 @@ MOD08_02212664: ; 0x02212664
cmp r2, #0
bne _02212686
ldrh r0, [r4, #0x1a]
- bl FUN_020054C8
+ bl PlaySE
ldrh r0, [r4, #0x1a]
ldr r1, _02212688 ; =0x0000FFFF
ldr r2, [r4, #0x14]
@@ -1816,7 +1816,7 @@ _02212AE8:
lsr r0, r0, #0x18
lsl r1, r1, #0xe
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
bl MOD08_02212490
add r4, r0, #0
@@ -1827,10 +1827,10 @@ _02212AE8:
lsl r1, r1, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
b _02212B40
_02212B3C:
bl MOD12_02233560
@@ -1839,47 +1839,47 @@ _02212B40:
lsl r1, r1, #4
ldrb r1, [r5, r1]
mov r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r1, _02212BB8 ; =0x000001A1
mov r0, #1
ldrb r1, [r5, r1]
- bl FUN_020178BC
+ bl SetBgPriority
ldr r1, _02212BBC ; =0x000001A2
mov r0, #2
ldrb r1, [r5, r1]
- bl FUN_020178BC
+ bl SetBgPriority
ldr r1, _02212BC0 ; =0x000001A3
mov r0, #3
ldrb r1, [r5, r1]
- bl FUN_020178BC
+ bl SetBgPriority
add r0, r5, #0
add r0, #0xc4
mov r2, #0
ldr r0, [r0]
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
add r0, #0xc4
ldr r0, [r0]
mov r1, #2
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
add r0, #0xc4
mov r2, #0
ldr r0, [r0]
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
add r0, #0xc4
mov r1, #3
ldr r0, [r0]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0
str r0, [r5, #0x10]
pop {r3, r4, r5, r6, r7, pc}
@@ -3052,13 +3052,13 @@ _02213410:
mov r1, #2
mov r2, #0
neg r3, r6
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
sub r4, #0x28
ldr r0, [r5]
mov r1, #2
mov r2, #3
neg r3, r4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_02213452:
pop {r4, r5, r6, pc}
@@ -3156,14 +3156,14 @@ _022134FE:
mov r7, #0xc8
_02213500:
mov r0, #2
- bl FUN_020187B0
+ bl BgGetCharPtr
mov r2, #0x19
mov r1, #0
lsl r2, r2, #8
bl MI_CpuFill8
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0
str r0, [sp]
add r0, r5, #0
@@ -3173,7 +3173,7 @@ _02213500:
ldr r2, [sp, #0x18]
mov r1, #2
lsl r3, r3, #6
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3262,7 +3262,7 @@ _022135AC:
mov r1, #2
mov r2, #0
neg r3, r7
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
add r0, #0xc4
sub r4, #0x28
@@ -3270,17 +3270,17 @@ _022135AC:
mov r1, #2
mov r2, #3
neg r3, r4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r5, #0
bl MOD08_02215574
add r1, r0, #0
lsl r1, r1, #0x18
mov r0, #2
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
@@ -3296,7 +3296,7 @@ MOD08_02213630: ; 0x02213630
add r0, r0, #4
str r0, [r4, #0x18]
mov r0, #2
- bl FUN_020187B0
+ bl BgGetCharPtr
mov r2, #0x19
mov r1, #0
lsl r2, r2, #8
@@ -4166,7 +4166,7 @@ MOD08_02213C94: ; 0x02213C94
lsl r1, r4, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
mov r6, #2
bl MOD08_02212004
@@ -4364,14 +4364,14 @@ _02213E50:
lsl r1, r4, #0x18
mov r0, #3
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
lsl r1, r4, #0x18
mov r0, #2
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
ldrb r0, [r5, #5]
add r0, r0, #1
strb r0, [r5, #5]
@@ -4383,7 +4383,7 @@ _02213E8E:
ldr r0, [r0]
mov r2, #2
add r3, r1, #0
- bl FUN_020170F4
+ bl SetBgControlParam
ldr r0, [r5, #0x48]
bl MOD08_02212004
cmp r0, #1
@@ -4394,7 +4394,7 @@ _02213E8E:
ldr r0, [r0]
mov r1, #3
add r3, r2, #0
- bl FUN_020170F4
+ bl SetBgControlParam
_02213EB8:
ldr r1, [r5, #0x48]
ldr r3, [r5, #0x10]
@@ -4491,7 +4491,7 @@ _02213F56: ; jump table
_02213F60:
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
ldrb r0, [r4, #5]
add r0, r0, #1
strb r0, [r4, #5]
@@ -4506,11 +4506,11 @@ _02213F6E:
lsl r1, r5, #0x18
mov r0, #3
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
lsl r1, r5, #0x18
mov r0, #2
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldrb r0, [r4, #0xa]
mov r1, #4
mov r2, #8
@@ -4591,21 +4591,21 @@ _0221401E:
ldr r0, [r0]
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x48]
mov r1, #3
add r0, #0xc4
ldr r0, [r0]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x48]
mov r1, #3
add r0, #0xc4
ldr r0, [r0]
mov r2, #2
mov r3, #4
- bl FUN_020170F4
+ bl SetBgControlParam
ldr r0, [r4, #0x48]
bl MOD08_02212004
cmp r0, #0
@@ -4616,7 +4616,7 @@ _0221401E:
ldr r0, [r0]
mov r2, #0
mov r3, #1
- bl FUN_020170F4
+ bl SetBgControlParam
ldr r0, [r4, #0x48]
mov r1, #3
bl MOD08_02215638
@@ -4800,7 +4800,7 @@ _022141BE:
ldr r0, [r0]
mov r1, #3
add r3, r2, #0
- bl FUN_020170F4
+ bl SetBgControlParam
ldr r1, [r4, #0x48]
ldr r3, [r4, #0x10]
add r0, r4, #0
@@ -4981,7 +4981,7 @@ _02214324:
_02214338:
mov r0, #3
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x48]
bl MOD08_02212004
cmp r0, #0
@@ -4992,7 +4992,7 @@ _02214338:
ldr r0, [r0]
mov r2, #0
mov r3, #1
- bl FUN_020170F4
+ bl SetBgControlParam
ldr r0, [r4, #0x48]
mov r1, #3
bl MOD08_02215638
@@ -5060,7 +5060,7 @@ _022143BE:
bl GfGfxLoader_LoadScrnData
mov r0, #3
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
ldrb r0, [r4, #5]
add r0, r0, #1
strb r0, [r4, #5]
@@ -5071,14 +5071,14 @@ _022143F0:
ldr r0, [r0]
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x48]
mov r1, #3
add r0, #0xc4
ldr r0, [r0]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldrb r0, [r4, #0xd]
ldr r2, [r4, #0x48]
cmp r0, #0
@@ -5208,7 +5208,7 @@ _022144DA:
ldr r0, [r4]
lsr r1, r1, #0x18
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_02214508:
mov r0, #0xa
ldrsh r0, [r4, r0]
@@ -5221,7 +5221,7 @@ _02214508:
ldr r0, [r4]
lsr r1, r1, #0x18
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_02214522:
pop {r3, r4, r5, pc}
@@ -5546,11 +5546,11 @@ MOD08_0221477C: ; 0x0221477C
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
lsl r0, r4, #0x18
lsr r0, r0, #0x18
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r5, #0
bl MOD08_02212004
cmp r0, #1
@@ -5562,7 +5562,7 @@ MOD08_0221477C: ; 0x0221477C
lsr r1, r1, #0x18
mov r2, #2
mov r3, #4
- bl FUN_020170F4
+ bl SetBgControlParam
b _022147E4
_022147C0:
add r0, r5, #0
@@ -5572,7 +5572,7 @@ _022147C0:
lsr r1, r1, #0x18
mov r2, #0
mov r3, #1
- bl FUN_020170F4
+ bl SetBgControlParam
add r0, r5, #0
add r0, #0xc4
lsl r1, r4, #0x18
@@ -5580,14 +5580,14 @@ _022147C0:
lsr r1, r1, #0x18
mov r2, #2
mov r3, #4
- bl FUN_020170F4
+ bl SetBgControlParam
_022147E4:
add r0, r5, #0
add r0, #0xc4
lsl r1, r4, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
bl MOD08_02212004
cmp r0, #1
@@ -5646,7 +5646,7 @@ MOD08_02214850: ; 0x02214850
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
add r0, r5, #0
bl MOD08_02212004
cmp r0, #1
@@ -5658,7 +5658,7 @@ MOD08_02214850: ; 0x02214850
lsr r1, r1, #0x18
mov r2, #2
mov r3, #3
- bl FUN_020170F4
+ bl SetBgControlParam
b _022148AC
_02214888:
add r0, r5, #0
@@ -5668,7 +5668,7 @@ _02214888:
ldr r0, [r0]
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_020170F4
+ bl SetBgControlParam
add r0, r5, #0
add r0, #0xc4
lsl r1, r4, #0x18
@@ -5676,13 +5676,13 @@ _02214888:
lsr r1, r1, #0x18
mov r2, #2
mov r3, #3
- bl FUN_020170F4
+ bl SetBgControlParam
_022148AC:
add r5, #0xc4
lsl r1, r4, #0x18
ldr r0, [r5]
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
pop {r3, r4, r5, pc}
.align 2, 0
@@ -6040,7 +6040,7 @@ MOD08_02214B38: ; 0x02214B38
thumb_func_start MOD08_02214B3C
MOD08_02214B3C: ; 0x02214B3C
ldr r1, [r0, #0x18]
- ldr r3, _02214B50 ; =FUN_020054C8
+ ldr r3, _02214B50 ; =PlaySE
add r1, r1, #4
str r1, [r0, #0x18]
ldr r2, [r1]
@@ -6050,7 +6050,7 @@ MOD08_02214B3C: ; 0x02214B3C
lsr r0, r0, #0x10
bx r3
.align 2, 0
-_02214B50: .word FUN_020054C8
+_02214B50: .word PlaySE
thumb_func_start MOD08_02214B54
MOD08_02214B54: ; 0x02214B54
@@ -6087,7 +6087,7 @@ MOD08_02214B70: ; 0x02214B70
bl MOD08_02215354
add r5, r0, #0
add r0, r4, #0
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _02214BA4 ; =0x0000FFFF
add r0, r4, #0
add r2, r5, #0
@@ -6174,7 +6174,7 @@ MOD08_02214BC4: ; 0x02214BC4
bl MOD08_0221540C
str r0, [r4, #0x10]
ldrh r0, [r4, #0x1a]
- bl FUN_020054C8
+ bl PlaySE
ldrh r0, [r4, #0x1a]
ldr r1, _02214C60 ; =0x0000FFFF
ldr r2, [r4, #8]
@@ -6232,7 +6232,7 @@ MOD08_02214C64: ; 0x02214C64
add r0, r0, #4
str r0, [r5, #0x18]
ldrh r0, [r4, #0x1a]
- bl FUN_020054C8
+ bl PlaySE
ldrh r0, [r4, #0x1a]
ldr r1, _02214CD8 ; =0x0000FFFF
ldr r2, [r4, #8]
@@ -6308,7 +6308,7 @@ MOD08_02214CDC: ; 0x02214CDC
bl MOD08_02215354
str r0, [r4, #0x10]
ldrh r0, [r4, #0x1a]
- bl FUN_020054C8
+ bl PlaySE
ldrh r0, [r4, #0x1a]
ldr r1, _02214D7C ; =0x0000FFFF
ldr r2, [r4, #8]
@@ -7555,7 +7555,7 @@ MOD08_02215638: ; 0x02215638
ldr r0, [r0]
lsr r1, r1, #0x18
lsl r3, r3, #0x10
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
pop {r3, pc}
.align 2, 0
@@ -15184,7 +15184,7 @@ _02218F32:
ldr r0, [r5, #0x18]
mov r1, #3
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, r4, r5, r6, r7, pc}
_02218F4E:
ldr r0, [r5, #8]
@@ -15287,7 +15287,7 @@ _02219008:
bl G2x_SetBlendAlpha_
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
ldrb r0, [r4, #0x1c]
add r0, r0, #1
strb r0, [r4, #0x1c]
@@ -15377,7 +15377,7 @@ _022190A4:
_022190B2:
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x20]
add r1, r5, #0
bl MOD08_02212438
@@ -15453,13 +15453,13 @@ _02219136:
ldr r0, [r4, #0x30]
mov r1, #2
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0xc
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x30]
mov r1, #2
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, r4, r5, pc}
.align 2, 0
_02219154: .word 0x04000050
@@ -15565,7 +15565,7 @@ _02219228:
strh r0, [r4, #0x18]
mov r0, #2
str r1, [r4, #4]
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r5, #0
mov r1, #0
bl MOD08_02212498
@@ -15605,7 +15605,7 @@ _02219228:
bl FUN_020030E8
ldr r0, [r4, #0x30]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
mov r6, #2
bl MOD08_02212004
@@ -15645,13 +15645,13 @@ _022192BC:
ldr r0, [r4, #0x30]
mov r1, #2
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0xc
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x30]
mov r1, #2
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x20]
ldr r1, _02219310 ; =MOD08_02218FE8
add r2, r4, #0
@@ -15690,7 +15690,7 @@ _02219334:
bl G2x_SetBlendAlpha_
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
ldrb r0, [r4, #0x1c]
add r0, r0, #1
strb r0, [r4, #0x1c]
@@ -15778,7 +15778,7 @@ _022193CC:
_022193DA:
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x20]
add r1, r5, #0
bl MOD08_02212438
@@ -15854,13 +15854,13 @@ _0221945E:
ldr r0, [r4, #0x30]
mov r1, #2
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0xc
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x30]
mov r1, #2
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, r4, r5, pc}
.align 2, 0
_0221947C: .word 0x04000050
@@ -15969,7 +15969,7 @@ _02219550:
strh r0, [r4, #0x18]
mov r0, #2
str r1, [r4, #4]
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r5, #0
mov r1, #0
bl MOD08_02212498
@@ -16009,7 +16009,7 @@ _02219550:
bl FUN_020030E8
ldr r0, [r4, #0x30]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
mov r6, #2
bl MOD08_02212004
@@ -16049,13 +16049,13 @@ _022195EA:
ldr r0, [r4, #0x30]
mov r1, #2
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0xc
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x30]
mov r1, #2
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x20]
ldr r1, _0221963C ; =MOD08_02219314
add r2, r4, #0
@@ -20509,7 +20509,7 @@ _0221BA38:
ldr r0, [r4, #0x28]
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_0221BA50:
ldr r0, [r4, #0x24]
cmp r0, #0
@@ -20520,7 +20520,7 @@ _0221BA50:
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_0221BA66:
ldrb r0, [r4, #1]
add sp, #4
@@ -20540,7 +20540,7 @@ _0221BA70:
ldr r0, [r4, #0x28]
lsr r1, r1, #0x18
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_0221BA8C:
mov r3, #0xd6
ldrsh r0, [r4, r3]
@@ -20554,7 +20554,7 @@ _0221BA8C:
ldr r0, [r4, #0x28]
lsr r1, r1, #0x18
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add sp, #4
pop {r3, r4, pc}
_0221BAAC:
@@ -26110,7 +26110,7 @@ _0221E84C:
ldr r0, [r4, #8]
mov r1, #3
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_0221E866:
@@ -26622,13 +26622,13 @@ _0221EC7A:
ldr r0, [r5, #0x14]
mov r1, #3
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x4e
mov r1, #3
ldrsh r3, [r5, r3]
ldr r0, [r5, #0x14]
add r2, r1, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, r4, r5, r6, r7, pc}
_0221ECA0:
ldr r0, [r5, #4]
@@ -29589,7 +29589,7 @@ MOD08_0222042C: ; 0x0222042C
bl MOD08_0221477C
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #8]
ldr r1, _022204C8 ; =MOD08_02220304
add r2, r4, #0
@@ -31969,7 +31969,7 @@ _022218B0:
lsl r1, r1, #0x18
mov r0, #2
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
_022218C4:
ldr r0, [r4, #0x1c]
mov r1, #0
@@ -33520,7 +33520,7 @@ _0222255E:
mov r1, #2
mov r2, #0
neg r3, r3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4]
bl MOD08_02212490
mov r3, #0x12
@@ -33528,7 +33528,7 @@ _0222255E:
mov r1, #2
mov r2, #3
neg r3, r3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
@@ -33578,14 +33578,14 @@ _022225CE:
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
bl MOD08_02215574
add r1, r0, #0
lsl r1, r1, #0x18
mov r0, #0
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
mov r1, #1
bl MOD08_02215588
@@ -33598,7 +33598,7 @@ _022225CE:
lsr r0, r0, #0x18
lsl r1, r1, #0xe
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4]
bl MOD08_02212490
add r5, r0, #0
@@ -33609,7 +33609,7 @@ _022225CE:
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4]
add r1, r6, #0
bl MOD08_02212438
@@ -33762,7 +33762,7 @@ _022226FC:
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
bl MOD08_02215574
add r1, r0, #0
@@ -33770,7 +33770,7 @@ _022226FC:
lsl r1, r1, #0x18
mov r0, #0
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
_022227AE:
ldr r0, [sp, #0x14]
add r1, r4, #0
@@ -34338,14 +34338,14 @@ _02222C3E:
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
bl MOD08_02215574
add r1, r0, #0
lsl r1, r1, #0x18
mov r0, #0
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4, #0x10]
mov r1, #6
mov r2, #0
@@ -34362,7 +34362,7 @@ _02222C3E:
lsr r0, r0, #0x18
lsl r1, r1, #0xe
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4]
bl MOD08_02212490
add r5, r0, #0
@@ -34373,7 +34373,7 @@ _02222C3E:
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4]
add r1, r6, #0
bl MOD08_02212438
@@ -34466,7 +34466,7 @@ _02222D6A:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
bl MOD08_02215574
add r1, r0, #0
@@ -34474,7 +34474,7 @@ _02222D6A:
lsl r1, r1, #0x18
mov r0, #0
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4, #0x48]
mov r1, #0
bl FUN_0200C644
@@ -40527,14 +40527,14 @@ _02225E68:
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
bl MOD08_02215574
add r1, r0, #0
lsl r1, r1, #0x18
mov r0, #0
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
mov r1, #1
bl MOD08_02215588
@@ -40547,7 +40547,7 @@ _02225E68:
lsr r0, r0, #0x18
lsl r1, r1, #0xe
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4]
bl MOD08_02212490
add r5, r0, #0
@@ -40558,7 +40558,7 @@ _02225E68:
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
bl FreeToHeap
ldr r0, [r4]
@@ -40647,7 +40647,7 @@ MOD08_02225EFC: ; 0x02225EFC
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
bl MOD08_02215574
add r1, r0, #0
@@ -40655,7 +40655,7 @@ MOD08_02225EFC: ; 0x02225EFC
lsl r1, r1, #0x18
mov r0, #0
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
_02225FD0:
ldr r0, [r4]
ldr r1, _02225FDC ; =MOD08_02225E14
@@ -42728,7 +42728,7 @@ MOD08_02227068: ; 0x02227068
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -42760,7 +42760,7 @@ MOD08_02227068: ; 0x02227068
lsl r1, r4, #0x18
ldr r0, [r5, #0x2c]
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -42860,7 +42860,7 @@ _02227180:
bne _022271B2
ldr r0, [r4, #0x2c]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0x34]
mov r1, #0
bl FUN_0200C644
@@ -42899,12 +42899,12 @@ _022271C0:
ldr r0, [r4, #0x2c]
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x2c]
mov r1, #2
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
@@ -42934,13 +42934,13 @@ _0222720E:
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x2c]
mov r1, #2
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x12
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x2c]
mov r1, #2
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x34]
bl FUN_0200C5A8
ldr r0, [r4, #0x38]
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 003e2dc8..07d0fa04 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -425,7 +425,7 @@ _022121B6:
cmp r0, #1
beq _0221220E
ldr r0, _02212214 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD09_022181C8
@@ -433,7 +433,7 @@ _022121B6:
pop {r4, pc}
_022121E2:
ldr r0, _02212214 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r4]
add r0, r4, #0
ldrb r1, [r1, #0x11]
@@ -642,7 +642,7 @@ _02212384: ; jump table
.short _022123F6 - _02212384 - 2 ; case 3
_0221238C:
ldr r0, _02212414 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #7
bl MOD09_022181C8
@@ -664,7 +664,7 @@ _022123B2:
cmp r0, #1
beq _0221240E
ldr r0, _02212414 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #8
bl MOD09_022181C8
@@ -679,7 +679,7 @@ _022123D4:
cmp r0, #1
beq _0221240E
ldr r0, _02212414 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xa
bl MOD09_022181C8
@@ -690,7 +690,7 @@ _022123D4:
pop {r4, pc}
_022123F6:
ldr r0, _02212414 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD09_022181C8
@@ -736,7 +736,7 @@ _0221243C:
ldr r1, [r4]
strb r0, [r1, #0x11]
ldr r0, _022124D0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xc
bl MOD09_022181C8
@@ -756,7 +756,7 @@ _0221246A:
ldr r1, [r4]
strb r0, [r1, #0x11]
ldr r0, _022124D0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xd
bl MOD09_022181C8
@@ -767,7 +767,7 @@ _0221246A:
pop {r4, pc}
_02212496:
ldr r0, _022124D0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xb
bl MOD09_022181C8
@@ -778,7 +778,7 @@ _02212496:
pop {r4, pc}
_022124AE:
ldr r0, _022124D0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD09_022181C8
@@ -833,7 +833,7 @@ _02212506:
cmp r0, #0
beq _022125CE
ldr r0, _022125D4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r1, r5, #0
add r1, #0xe
lsl r1, r1, #0x18
@@ -860,7 +860,7 @@ _0221253E:
ldr r1, [r4]
strb r0, [r1, #0x11]
ldr r0, _022125D4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xc
bl MOD09_022181C8
@@ -880,7 +880,7 @@ _0221256C:
ldr r1, [r4]
strb r0, [r1, #0x11]
ldr r0, _022125D4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xd
bl MOD09_022181C8
@@ -891,7 +891,7 @@ _0221256C:
pop {r3, r4, r5, pc}
_02212598:
ldr r0, _022125D4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #9
bl MOD09_022181C8
@@ -902,7 +902,7 @@ _02212598:
pop {r3, r4, r5, pc}
_022125B0:
ldr r0, _022125D4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD09_022181C8
@@ -960,7 +960,7 @@ _02212604:
beq _0221264A
_02212622:
ldr r0, _02212650 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, #0x34
strb r5, [r0]
@@ -968,7 +968,7 @@ _02212622:
pop {r3, r4, r5, pc}
_02212632:
ldr r0, _02212650 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD09_022181C8
@@ -1034,7 +1034,7 @@ _022126A6:
ldr r0, _0221273C ; =0x0000208D
strb r1, [r4, r0]
ldr r0, _02212740 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r5, #0x17
lsl r1, r5, #0x18
add r0, r4, #0
@@ -1067,7 +1067,7 @@ _022126D0:
add r0, #0x16
strb r5, [r4, r0]
ldr r0, _02212740 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x12
bl MOD09_022181C8
@@ -1082,7 +1082,7 @@ _02212710:
add r0, #0x34
strb r1, [r0]
ldr r0, _02212740 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD09_022181C8
@@ -1136,7 +1136,7 @@ _0221277C:
b _0221284A
_0221278A:
ldr r0, _02212858 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0221285C ; =0x00002077
ldrb r0, [r5, r0]
lsl r0, r0, #0x1c
@@ -1187,7 +1187,7 @@ _022127E6:
lsr r0, r0, #0x1c
beq _0221284A
ldr r0, _02212858 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0x12
bl MOD09_022181C8
@@ -1216,7 +1216,7 @@ _022127E6:
pop {r3, r4, r5, pc}
_0221282C:
ldr r0, _02212858 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #6
bl MOD09_022181C8
@@ -1294,7 +1294,7 @@ _022128B6:
add r0, #0x34
strb r5, [r0]
ldr r0, _0221295C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r1, r5, #0
add r1, #0x13
lsl r1, r1, #0x18
@@ -1342,7 +1342,7 @@ _0221290E:
pop {r3, r4, r5, r6, pc}
_02212934:
ldr r0, _0221295C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD09_022181C8
@@ -1694,7 +1694,7 @@ _02212BAA:
strb r2, [r4, r0]
_02212BC6:
ldr r0, _02212C88 ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
b _02212C78
_02212BCE:
ldrb r1, [r5, #0x11]
@@ -1854,7 +1854,7 @@ _02212CF4:
add r0, r5, #0
bl MOD09_02216378
ldr r0, _02212DB0 ; =0x000005EC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02212DAC ; =0x0000207C
mov r1, #1
strb r1, [r5, r0]
@@ -2027,7 +2027,7 @@ MOD09_02212E4C: ; 0x02212E4C
stmia r3!, {r0, r1}
add r0, r2, #0
mov r1, #1
- bl FUN_02016BF4
+ bl SetScreenModeAndDisable
ldr r5, _02212F4C ; =0x0221AF48
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -2044,7 +2044,7 @@ MOD09_02212E4C: ; 0x02212E4C
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _02212F50 ; =0x0221AF80
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -2061,7 +2061,7 @@ MOD09_02212E4C: ; 0x02212E4C
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _02212F54 ; =0x0221AF9C
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -2078,12 +2078,12 @@ MOD09_02212E4C: ; 0x02212E4C
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02212F58 ; =0x0221AF64
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -2100,34 +2100,34 @@ MOD09_02212E4C: ; 0x02212E4C
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r3, [r4]
mov r0, #5
ldr r3, [r3, #0xc]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [r4]
mov r0, #4
ldr r3, [r3, #0xc]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x80
pop {r3, r4, r5, pc}
.align 2, 0
@@ -2146,16 +2146,16 @@ MOD09_02212F5C: ; 0x02212F5C
bl GX_EngineBToggleLayers
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
@@ -3156,7 +3156,7 @@ _02213778:
lsl r0, r0, #2
ldr r0, [r6, r0]
mov r1, #7
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_0221378E:
pop {r3, r4, r5, r6, r7, pc}
@@ -3181,7 +3181,7 @@ MOD09_02213790: ; 0x02213790
mov r1, #7
add r2, r5, #0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -3208,7 +3208,7 @@ MOD09_022137C0: ; 0x022137C0
mov r1, #7
add r2, r4, #0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0xe
str r0, [sp]
mov r0, #1
@@ -3226,7 +3226,7 @@ MOD09_022137C0: ; 0x022137C0
mov r1, #7
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0xf
str r0, [sp]
mov r0, #1
@@ -3244,7 +3244,7 @@ MOD09_022137C0: ; 0x022137C0
mov r1, #7
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0xf
str r0, [sp]
mov r0, #1
@@ -3261,7 +3261,7 @@ MOD09_022137C0: ; 0x022137C0
mov r1, #7
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
@@ -3338,7 +3338,7 @@ _022138E2:
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #7
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_022138EE:
pop {r3, r4, r5, r6, r7, pc}
@@ -3353,13 +3353,13 @@ MOD09_022138F0: ; 0x022138F0
ldr r0, [r5, r0]
mov r1, #4
mov r2, #0
- bl FUN_0201878C
+ bl BgFillTilemapBufferAndSchedule
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #5
mov r2, #0
- bl FUN_0201878C
+ bl BgFillTilemapBufferAndSchedule
add r0, r5, #0
add r1, r4, #0
bl MOD09_02216D80
@@ -3425,14 +3425,14 @@ _02213976:
lsr r1, r1, #0x18
add r2, #0xc
mov r3, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
mov r0, #0x79
lsl r0, r0, #2
add r1, r4, #6
lsl r1, r1, #0x18
ldr r0, [r5, r0]
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r7, #0
bl FreeToHeap
add r4, r4, #1
@@ -3758,15 +3758,15 @@ MOD09_02213C34: ; 0x02213C34
ldr r0, _02213C68 ; =0x00002070
ldr r0, [r4, r0]
add r0, #0xa0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
ldr r0, _02213C68 ; =0x00002070
ldr r0, [r4, r0]
add r0, #0x60
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
ldr r0, _02213C68 ; =0x00002070
ldr r0, [r4, r0]
add r0, #0x70
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
pop {r4, pc}
nop
_02213C64: .word 0x00002020
@@ -3781,7 +3781,7 @@ MOD09_02213C6C: ; 0x02213C6C
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #7
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r4, pc}
.align 2, 0
@@ -3825,7 +3825,7 @@ _02213CC4:
ldr r0, [r7, r0]
add r1, r5, #0
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r6, r6, #1
add r4, #8
add r5, #0x10
@@ -3941,7 +3941,7 @@ _02213D90:
lsl r2, r5, #3
ldr r0, [r4, r0]
add r2, r6, r2
- bl FUN_02019150
+ bl AddWindow
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
@@ -3974,7 +3974,7 @@ MOD09_02213DE0: ; 0x02213DE0
bx r3
nop
_02213DF0: .word 0x00002070
-_02213DF4: .word FUN_020191A4
+_02213DF4: .word WindowArray_dtor
thumb_func_start MOD09_02213DF8
MOD09_02213DF8: ; 0x02213DF8
@@ -3984,13 +3984,13 @@ MOD09_02213DF8: ; 0x02213DF8
ldr r0, [r5, r1]
add r1, r1, #4
ldrb r1, [r5, r1]
- bl FUN_020191A4
+ bl WindowArray_dtor
ldr r0, _02213E24 ; =0x00002050
mov r4, #0
add r5, r5, r0
_02213E0E:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #2
@@ -4235,7 +4235,7 @@ _02214002:
bl String_dtor
_02214008:
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -4280,7 +4280,7 @@ MOD09_02214038: ; 0x02214038
ldr r0, _0221407C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -4340,7 +4340,7 @@ MOD09_02214080: ; 0x02214080
ldr r0, _022140F8 ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -4388,7 +4388,7 @@ _02214144:
ldr r0, [sp, #8]
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_02214156:
@@ -4451,7 +4451,7 @@ _0221415E:
ldr r0, _022141D4 ; =0x00002070
ldr r0, [r4, r0]
add r0, r0, r5
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -4508,7 +4508,7 @@ MOD09_022141D8: ; 0x022141D8
ldr r0, _0221425C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -4579,7 +4579,7 @@ _022142BA:
ldr r0, _022142F8 ; =0x00002070
ldr r0, [r4, r0]
add r0, r0, r5
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -4655,7 +4655,7 @@ _02214362:
add r0, r7, #0
bl String_dtor
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -4695,7 +4695,7 @@ MOD09_022143A0: ; 0x022143A0
ldr r0, _022143F4 ; =0x00002070
ldr r0, [r4, r0]
add r0, r0, r5
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
@@ -4740,7 +4740,7 @@ MOD09_022143F8: ; 0x022143F8
bl String_dtor
ldr r0, _02214450 ; =0x00002050
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -4786,7 +4786,7 @@ MOD09_0221445C: ; 0x0221445C
add r0, r7, #0
bl String_dtor
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -4975,21 +4975,21 @@ _022145F4:
mov r0, #0x13
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02214684 ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r7
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02214684 ; =0x00002070
ldr r1, [r5, r0]
mov r0, #5
lsl r0, r0, #6
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02214684 ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x24
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -5094,11 +5094,11 @@ MOD09_02214694: ; 0x02214694
ldr r0, _02214780 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0xe0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02214780 ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
@@ -5203,11 +5203,11 @@ MOD09_02214790: ; 0x02214790
ldr r0, _0221487C ; =0x00002070
ldr r0, [r5, r0]
add r0, #0xf0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _0221487C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
@@ -5315,11 +5315,11 @@ MOD09_0221488C: ; 0x0221488C
mov r0, #1
lsl r0, r0, #8
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _0221497C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -5427,11 +5427,11 @@ MOD09_0221498C: ; 0x0221498C
mov r0, #0x11
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02214A7C ; =0x00002070
ldr r0, [r4, r0]
add r0, r0, r5
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -5539,11 +5539,11 @@ MOD09_02214A8C: ; 0x02214A8C
mov r0, #0x12
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02214B7C ; =0x00002070
ldr r0, [r4, r0]
add r0, r0, r5
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -5716,11 +5716,11 @@ MOD09_02214B8C: ; 0x02214B8C
ldr r0, _02214D14 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0xd0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02214D14 ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -5777,7 +5777,7 @@ MOD09_02214D24: ; 0x02214D24
ldr r0, _02214D9C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -5812,7 +5812,7 @@ MOD09_02214DA0: ; 0x02214DA0
add r0, r6, #0
bl String_dtor
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, r5, r6, pc}
nop
@@ -5914,7 +5914,7 @@ _02214E42:
bl String_dtor
_02214EB8:
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -5948,7 +5948,7 @@ MOD09_02214ED0: ; 0x02214ED0
add r0, r6, #0
bl String_dtor
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, r5, r6, pc}
nop
@@ -6050,7 +6050,7 @@ _02214F72:
bl String_dtor
_02214FE8:
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -6093,7 +6093,7 @@ MOD09_02215000: ; 0x02215000
add r0, r7, #0
bl DestroyMsgData
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -6140,7 +6140,7 @@ MOD09_02215060: ; 0x02215060
ldr r0, [sp, #0x10]
bl DestroyMsgData
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -6186,7 +6186,7 @@ MOD09_022150C8: ; 0x022150C8
add r0, r7, #0
bl String_dtor
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -6247,7 +6247,7 @@ _0221516C:
add r0, r6, #0
bl String_dtor
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, r5, r6, pc}
.align 2, 0
@@ -6378,7 +6378,7 @@ MOD09_022151A8: ; 0x022151A8
ldr r0, [sp, #0x2c]
bl String_dtor
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -6434,7 +6434,7 @@ _02215306:
add r0, r6, #0
bl String_dtor
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -6481,7 +6481,7 @@ _02215368:
add r0, r4, #0
bl String_dtor
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -6625,7 +6625,7 @@ MOD09_022153B0: ; 0x022153B0
add r0, r7, #0
bl String_dtor
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -6717,7 +6717,7 @@ MOD09_022154FC: ; 0x022154FC
ldr r0, [sp, #0x14]
bl String_dtor
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
@@ -6930,11 +6930,11 @@ _0221576A:
ldr r0, _02215780 ; =0x00002070
ldr r0, [r4, r0]
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02215780 ; =0x00002070
ldr r0, [r4, r0]
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, pc}
.align 2, 0
_02215780: .word 0x00002070
@@ -7094,7 +7094,7 @@ _022158C0:
bl String_dtor
_022158C6:
ldr r0, [sp, #0x18]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -7224,22 +7224,22 @@ _022159C8:
ldr r1, [r5, r0]
ldr r0, [sp, #0x18]
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02215A20 ; =0x00002070
ldr r1, [r5, r0]
ldr r0, [sp, #0x14]
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02215A20 ; =0x00002070
ldr r1, [r5, r0]
ldr r0, [sp, #0x10]
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02215A20 ; =0x00002070
ldr r1, [r5, r0]
ldr r0, [sp, #0xc]
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r1, _02215A1C ; =0x00002075
mov r0, #1
ldrb r2, [r5, r1]
@@ -7753,23 +7753,23 @@ _02215E4C:
ldr r0, _02215EC4 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02215EC4 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02215EC4 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02215EC4 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02215EC4 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x50
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
@@ -8066,19 +8066,19 @@ _02216156:
ldr r0, _02216184 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02216184 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x20
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02216184 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x30
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _02216184 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
@@ -8184,7 +8184,7 @@ MOD09_022161B0: ; 0x022161B0
ldr r0, _02216304 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r1, [r5]
add r0, r1, #0
add r0, #0x34
@@ -8288,7 +8288,7 @@ MOD09_0221633C: ; 0x0221633C
sub sp, #0xc
add r4, r0, #0
mov r0, #1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
ldr r0, [r4]
ldr r0, [r0, #8]
bl MOD11_02230E54
@@ -11750,12 +11750,12 @@ MOD09_02217F88: ; 0x02217F88
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #6
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
mov r0, #0x79
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #6
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp, #0x18]
bl FreeToHeap
add sp, #0x1c
@@ -11824,7 +11824,7 @@ _0221803C:
ldrb r1, [r6, r1]
lsl r1, r1, #4
add r0, r0, r1
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r3, r4, r5, r6, r7, pc}
_02218070:
mov r4, #0
@@ -11845,7 +11845,7 @@ _02218072:
ldrb r0, [r6, r4]
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
@@ -12988,7 +12988,7 @@ _022189AA: ; jump table
.short _02218A06 - _022189AA - 2 ; case 5
_022189B6:
ldr r0, _02218A2C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
lsl r0, r5, #0x18
lsr r1, r0, #0x18
ldr r0, _02218A30 ; =0x0000114D
@@ -13007,7 +13007,7 @@ _022189D6:
cmp r0, #0
beq _02218A24
ldr r0, _02218A2C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
ldrb r1, [r0, #0x1f]
ldr r0, _02218A30 ; =0x0000114D
@@ -13025,7 +13025,7 @@ _022189D6:
pop {r3, r4, r5, pc}
_02218A06:
ldr r0, _02218A2C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
mov r2, #0
strh r2, [r0, #0x1c]
@@ -13094,7 +13094,7 @@ _02218A84:
cmp r0, #0
beq _02218B30
ldr r0, _02218B38 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02218B3C ; =0x0000114D
ldr r2, [r4]
ldrb r1, [r4, r0]
@@ -13121,7 +13121,7 @@ _02218ABA:
cmp r0, #0
beq _02218B30
ldr r0, _02218B38 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02218B40 ; =0x0000114B
mov r1, #7
strb r1, [r4, r0]
@@ -13143,7 +13143,7 @@ _02218AE8:
cmp r0, #0
beq _02218B30
ldr r0, _02218B38 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02218B40 ; =0x0000114B
mov r1, #7
strb r1, [r4, r0]
@@ -13158,7 +13158,7 @@ _02218AE8:
pop {r3, r4, r5, pc}
_02218B16:
ldr r0, _02218B38 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02218B40 ; =0x0000114B
mov r1, #4
strb r1, [r4, r0]
@@ -13268,7 +13268,7 @@ _02218BEA:
b _02218C44
_02218BF4:
ldr r0, _02218C4C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _02218C50 ; =0x0000114D
ldr r2, [r5]
ldrb r1, [r5, r1]
@@ -13292,7 +13292,7 @@ _02218BF4:
pop {r3, r4, r5, pc}
_02218C2A:
ldr r0, _02218C4C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02218C54 ; =0x0000114B
mov r1, #5
strb r1, [r5, r0]
@@ -13744,7 +13744,7 @@ _02218FC2:
cmp r0, #1
bne _02218FFA
ldr r0, _022190C0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _022190C4 ; =0x0000114D
mov r1, #2
strb r1, [r4, r0]
@@ -13784,7 +13784,7 @@ _02219014:
cmp r0, #1
bne _02219054
ldr r0, _022190C0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _022190C4 ; =0x0000114D
ldr r3, [r4]
ldrb r1, [r4, r0]
@@ -13828,7 +13828,7 @@ _0221906E:
cmp r0, #1
bne _022190AE
ldr r0, _022190C0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _022190C4 ; =0x0000114D
ldr r2, [r4]
ldrb r1, [r4, r1]
@@ -13878,7 +13878,7 @@ MOD09_022190CC: ; 0x022190CC
stmia r3!, {r0, r1}
add r0, r2, #0
mov r1, #1
- bl FUN_02016BF4
+ bl SetScreenModeAndDisable
ldr r5, _0221918C ; =0x0221BBCC
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -13893,7 +13893,7 @@ MOD09_022190CC: ; 0x022190CC
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _02219190 ; =0x0221BBB0
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -13908,10 +13908,10 @@ MOD09_022190CC: ; 0x022190CC
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02219194 ; =0x0221BB94
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -13926,28 +13926,28 @@ MOD09_022190CC: ; 0x022190CC
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r3, [r4]
mov r0, #5
ldr r3, [r3, #0xc]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [r4]
mov r0, #4
ldr r3, [r3, #0xc]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4, #4]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #4]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x64
pop {r4, r5, pc}
.align 2, 0
@@ -13965,13 +13965,13 @@ MOD09_02219198: ; 0x02219198
bl GX_EngineBToggleLayers
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
@@ -14141,12 +14141,12 @@ _02219316:
ldr r0, [r4, #4]
mov r1, #6
add r3, r2, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r4, #4]
mov r1, #6
mov r2, #3
mov r3, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r4, pc}
_02219330:
mov r1, #6
@@ -14154,25 +14154,25 @@ _02219330:
ldr r0, [r4, #4]
mov r2, #0
add r3, #0xfa
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r4, #4]
mov r1, #6
mov r2, #3
mov r3, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r4, pc}
_0221934C:
mov r2, #0
ldr r0, [r4, #4]
mov r1, #6
add r3, r2, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r2, #3
add r3, r2, #0
ldr r0, [r4, #4]
mov r1, #6
add r3, #0xfd
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r4, pc}
thumb_func_start MOD09_02219368
@@ -14196,7 +14196,7 @@ MOD09_02219368: ; 0x02219368
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r4, #4]
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
mov r0, #0x1c
str r0, [sp]
mov r0, #8
@@ -14211,7 +14211,7 @@ MOD09_02219368: ; 0x02219368
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r4, #4]
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
_022193B2:
add sp, #0xc
pop {r3, r4, pc}
@@ -14230,11 +14230,11 @@ MOD09_022193BC: ; 0x022193BC
ldr r0, [r5, #4]
mov r1, #4
mov r2, #0
- bl FUN_0201878C
+ bl BgFillTilemapBufferAndSchedule
ldr r0, [r5, #4]
mov r1, #5
mov r2, #0
- bl FUN_0201878C
+ bl BgFillTilemapBufferAndSchedule
add r0, r5, #0
bl MOD09_02219510
add r0, r5, #0
@@ -14311,7 +14311,7 @@ MOD09_02219474: ; 0x02219474
ldr r0, [r4, #4]
ldr r2, _02219490 ; =0x0221BC2C
add r1, #0x1c
- bl FUN_02019150
+ bl AddWindow
ldr r1, _02219494 ; =0x0000114C
add r0, r4, #0
ldrb r1, [r4, r1]
@@ -14370,7 +14370,7 @@ _022194E2:
lsl r2, r4, #3
ldr r0, [r5, #4]
add r2, r6, r2
- bl FUN_02019150
+ bl AddWindow
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
@@ -14395,7 +14395,7 @@ MOD09_02219510: ; 0x02219510
ldrb r1, [r1]
bx r3
.align 2, 0
-_0221951C: .word FUN_020191A4
+_0221951C: .word WindowArray_dtor
thumb_func_start MOD09_02219520
MOD09_02219520: ; 0x02219520
@@ -14405,10 +14405,10 @@ MOD09_02219520: ; 0x02219520
add r1, #0x30
ldrb r1, [r1]
ldr r0, [r4, #0x2c]
- bl FUN_020191A4
+ bl WindowArray_dtor
add r4, #0x1c
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
.align 2, 0
@@ -14469,7 +14469,7 @@ MOD09_02219560: ; 0x02219560
ldr r0, [sp, #0x10]
bl String_dtor
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -14570,7 +14570,7 @@ _022195C4:
bl String_dtor
ldr r0, [r5, #0x2c]
add r0, #0x40
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_0221968A:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
@@ -14646,7 +14646,7 @@ MOD09_02219694: ; 0x02219694
bl String_dtor
_02219726:
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -14716,7 +14716,7 @@ MOD09_02219738: ; 0x02219738
bl String_dtor
_022197BA:
add r0, r4, r7
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -14795,7 +14795,7 @@ MOD09_0221983C: ; 0x0221983C
ldr r0, [r4, #4]
mov r1, #5
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r5, #0
_0221985E:
add r0, r4, #0
@@ -14945,7 +14945,7 @@ MOD09_02219884: ; 0x02219884
mov r0, #0x19
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -15104,7 +15104,7 @@ MOD09_02219A8C: ; 0x02219A8C
add r0, r7, #0
bl String_dtor
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -15151,7 +15151,7 @@ MOD09_02219AFC: ; 0x02219AFC
add r0, r7, #0
bl String_dtor
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -15243,7 +15243,7 @@ MOD09_02219C08: ; 0x02219C08
sub sp, #0xc
add r4, r0, #0
mov r0, #1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
ldr r0, [r4]
ldr r0, [r0]
bl MOD11_02230E54
@@ -16848,10 +16848,10 @@ MOD09_0221A884: ; 0x0221A884
str r7, [sp, #8]
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp, #0x18]
bl FreeToHeap
add sp, #0x1c
@@ -16918,7 +16918,7 @@ _0221A93C:
ldr r1, [r6, #0x2c]
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #1
lsl r0, r0, #0x10
lsr r5, r0, #0x10
@@ -17391,7 +17391,7 @@ _0221ACA8:
ldr r0, [r0]
bl MOD11_0225D5DC
ldr r0, _0221ACE0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0221ACD4:
mov r0, #0
add sp, #4
@@ -17624,7 +17624,7 @@ _0221AE70:
ldr r0, [r5]
bl MOD11_0225D5DC
ldr r0, _0221AEC0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0221AE8A:
mov r0, #0
add sp, #0x14
@@ -17644,7 +17644,7 @@ _0221AEA2:
tst r1, r0
beq _0221AEB6
ldr r0, _0221AEC4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
add sp, #0x14
mvn r0, r0
diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s
index 2a6bb196..23f0a76c 100644
--- a/arm9/modules/11/asm/module_11_thumb1.s
+++ b/arm9/modules/11/asm/module_11_thumb1.s
@@ -42,7 +42,7 @@ _0222D600:
mov r0, #3
mov r1, #5
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, [r5]
mov r0, #4
tst r0, r1
@@ -175,7 +175,7 @@ _0222D704:
b _0222D7EA
_0222D714:
mov r0, #5
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xd
str r0, [r4]
b _0222D7EA
@@ -187,7 +187,7 @@ _0222D720:
ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
bl UnloadOverlayByID
mov r0, #5
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3e
bl FUN_02031588
mov r0, #0xc
@@ -210,7 +210,7 @@ _0222D752:
mov r0, #3
mov r1, #0x49
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r0, [r5, #4]
ldr r1, [sp, #0x24]
bl GetPartyMonByIndex
@@ -266,7 +266,7 @@ _0222D7C2:
add r0, r5, #0
bl FUN_0206C92C
mov r0, #0x49
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xd
str r0, [r4]
b _0222D7EA
@@ -325,7 +325,7 @@ MOD11_0222D840: ; 0x0222D840
ldr r0, [r4, r0]
bl MOD11_02258658
ldr r0, [r4, #8]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #4]
bl MOD11_0222E4E8
add r0, r4, #0
@@ -424,7 +424,7 @@ MOD11_0222D944: ; 0x0222D944
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #8]
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #1
mov r1, #0
bl GX_EngineAToggleLayers
@@ -433,13 +433,13 @@ MOD11_0222D944: ; 0x0222D944
bl GX_EngineAToggleLayers
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD11_02231410
pop {r4, pc}
@@ -471,26 +471,26 @@ _0222D99A:
ldr r0, [r5, #4]
add r2, sp, #0x14
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r5, #4]
mov r1, #2
add r2, sp, #0x30
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r5, #4]
mov r1, #3
add r2, sp, #0x4c
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, _0222DB40 ; =0x04000008
mov r0, #3
ldrh r2, [r1]
@@ -630,7 +630,7 @@ _0222D99A:
str r0, [sp, #0x10]
ldr r0, [r5, #4]
ldr r1, [r5, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r5, #8]
mov r1, #0xff
bl FillWindowPixelBuffer
@@ -742,7 +742,7 @@ MOD11_0222DB50: ; 0x0222DB50
mov r3, #5
bl FUN_02003008
mov r0, #5
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
mov r0, #5
mov r1, #3
@@ -792,7 +792,7 @@ _0222DC42:
ldr r1, [r4, #8]
mov r2, #1
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r4, #8]
mov r1, #0xff
bl FillWindowPixelBuffer
@@ -1348,14 +1348,14 @@ _0222E194:
bl MOD11_0222D840
_0222E1AC:
mov r0, #0
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0
bl FUN_02002B7C
mov r0, #0
bl FUN_02002BB8
ldr r0, [r4, #8]
mov r1, #3
- bl FUN_020191A4
+ bl WindowArray_dtor
ldr r0, [r4, #4]
bl FreeToHeap
mov r0, #0x87
@@ -1467,7 +1467,7 @@ _0222E282:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r1, _0222E458 ; =0x000023FB
mov r0, #1
ldrb r2, [r5, r1]
@@ -1489,26 +1489,26 @@ _0222E2F0:
add r0, r4, #0
add r2, sp, #0x48
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #2
add r2, sp, #0x64
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #3
add r2, sp, #0x80
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, _0222E460 ; =0x04000008
mov r0, #3
ldrh r2, [r1]
@@ -1712,13 +1712,13 @@ MOD11_0222E4E8: ; 0x0222E4E8
bl GX_EngineAToggleLayers
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD11_022584AC
pop {r4, pc}
@@ -3157,7 +3157,7 @@ _0222F088:
ldr r0, [r4, #0x28]
bl FUN_0200372C
ldr r0, [r4, #4]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _0222F0CC ; =0x027E0000
ldr r1, _0222F0D0 ; =0x00003FF8
mov r0, #1
@@ -3183,7 +3183,7 @@ MOD11_0222F0D4: ; 0x0222F0D4
bl FUN_0200372C
bl FUN_0201C30C
ldr r0, [r4, #4]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _0222F0F8 ; =0x027E0000
ldr r1, _0222F0FC ; =0x00003FF8
mov r0, #1
@@ -3302,7 +3302,7 @@ _0222F1D0:
cmp r0, #0
bne _0222F1F6
ldr r0, _0222F250 ; =0x00000704
- bl FUN_020054C8
+ bl PlaySE
add r0, r6, #0
mov r1, #1
bl MOD11_02231484
@@ -3338,7 +3338,7 @@ _0222F214:
sub r1, r4, #1
bne _0222F244
ldr r0, _0222F250 ; =0x00000704
- bl FUN_020054C8
+ bl PlaySE
add r0, r6, #0
mov r1, #4
bl MOD11_022314B0
@@ -3366,7 +3366,7 @@ MOD11_0222F254: ; 0x0222F254
ldr r0, [r4, #4]
ldr r3, [r4, r3]
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, _0222F280 ; =0x00002434
ldr r0, [r4, r0]
cmp r0, #0
diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s
index 451daa87..9b184cfc 100644
--- a/arm9/modules/11/asm/module_11_thumb2.s
+++ b/arm9/modules/11/asm/module_11_thumb2.s
@@ -41,7 +41,7 @@ MOD11_0222F29C: ; 0x0222F29C
add r3, r1, #0
bl FUN_02003914
mov r0, #5
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r5, #4]
mov r0, #5
mov r1, #1
@@ -98,7 +98,7 @@ _0222F30E:
ldmia r6!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r6, _0222F4D0 ; =MOD11_0225DA04
add r3, sp, #0x14
ldmia r6!, {r0, r1}
@@ -113,10 +113,10 @@ _0222F30E:
str r0, [r3]
ldr r0, [r5, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x13
lsl r0, r0, #4
ldr r0, [r4, r0]
@@ -183,7 +183,7 @@ _0222F30E:
ldr r1, [r5, #8]
mov r2, #1
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r5, #8]
mov r1, #0xff
bl FillWindowPixelBuffer
@@ -810,13 +810,13 @@ MOD11_0222F93C: ; 0x0222F93C
bl FUN_02002FEC
ldr r0, [r4, #8]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
mov r0, #2
mov r1, #0
bl GX_EngineAToggleLayers
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
bl FreeToHeap
add r0, r4, #0
@@ -1478,7 +1478,7 @@ _0222FEA6:
mov r0, #3
bl FUN_02002B7C
mov r0, #1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #1
bl FUN_02002BB8
pop {r3, pc}
@@ -4128,7 +4128,7 @@ _022311D0:
ldr r2, [r4, r2]
mov r1, #3
lsl r3, r3, #5
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
mov r0, #0x5f
lsl r0, r0, #2
add r0, r4, r0
@@ -6262,7 +6262,7 @@ _0223223C:
b _02232252
_02232244:
ldr r0, _0223225C ; =0x000005E6
- bl FUN_020054C8
+ bl PlaySE
b _02232252
_0223224C:
ldr r0, _02232260 ; =0x00000483
@@ -23819,10 +23819,10 @@ _0223AC50:
strh r1, [r0]
mov r0, #1
add r1, r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
mov r1, #2
bl MOD11_02231564
@@ -23859,7 +23859,7 @@ _0223AC50:
add r1, r5, #0
mov r2, #2
mov r3, #0x11
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0xff
bl FillWindowPixelBuffer
@@ -24041,7 +24041,7 @@ _0223AE3C:
beq _0223AEDC
_0223AE4E:
ldr r0, _0223AF70 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x28]
add sp, #0xd4
add r0, r0, #1
@@ -24055,7 +24055,7 @@ _0223AE5E:
mov r1, #0
bl FUN_0200CCF8
add r0, r6, #0
- bl FUN_02019178
+ bl RemoveWindow
ldr r1, _0223AF50 ; =0x04000008
mov r0, #3
ldrh r2, [r1]
@@ -24064,10 +24064,10 @@ _0223AE5E:
orr r2, r0
strh r2, [r1]
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
mov r1, #0
bl MOD11_02231564
@@ -24931,7 +24931,7 @@ _0223B57C:
mov r0, #1
str r0, [r4, #0x28]
ldr r0, _0223B7F8 ; =0x0000070A
- bl FUN_020054C8
+ bl PlaySE
ldr r2, [r4]
ldr r0, _0223B7FC ; =0x0000241E
ldrh r1, [r2, r0]
@@ -24962,7 +24962,7 @@ _0223B5A4:
mov r0, #1
str r0, [r4, #0x28]
ldr r0, _0223B7F8 ; =0x0000070A
- bl FUN_020054C8
+ bl PlaySE
ldr r2, [r4]
ldr r0, _0223B7FC ; =0x0000241E
ldrh r1, [r2, r0]
@@ -25410,7 +25410,7 @@ _0223B9AA:
cmp r0, #0
beq _0223B9BC
ldr r0, _0223BBE4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xe
str r0, [r4, #0x28]
_0223B9BC:
@@ -28107,7 +28107,7 @@ _0223CF5C:
add r1, sp, #0x68
mov r2, #0xc
mov r3, #4
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -28167,7 +28167,7 @@ _0223CF5C:
ldr r0, [r5, #0x14]
bl FUN_02011AC0
add r0, sp, #0x68
- bl FUN_02019178
+ bl RemoveWindow
add sp, #0x78
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -62296,7 +62296,7 @@ MOD11_0224D518: ; 0x0224D518
mov r1, #0xff
bl FillWindowPixelBuffer
add r0, r6, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
mov r1, #0x65
lsl r1, r1, #2
ldrb r1, [r4, r1]
@@ -63233,7 +63233,7 @@ _0224DCAE:
mov r1, #3
mov r2, #2
mov r3, #0x84
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_0224DCBE:
ldr r0, _0224DCE0 ; =MOD11_02250060
add r1, r4, #0
@@ -67678,7 +67678,7 @@ _02250086:
mov r1, #3
mov r2, #1
mov r3, #4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x20]
add r0, r0, #1
str r0, [r4, #0x20]
@@ -68574,7 +68574,7 @@ _0225073C:
cmp r0, #3
beq _022507E2
ldr r0, _022508A0 ; =0x0000070A
- bl FUN_020054C8
+ bl PlaySE
_022507E2:
cmp r5, #4
bne _0225088A
@@ -69325,7 +69325,7 @@ _02250DD0:
mov r0, #0xa
strb r0, [r4, #0xb]
ldr r0, _02250E9C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #6
add sp, #0x4c
strb r0, [r4, #0xa]
@@ -69707,7 +69707,7 @@ _02251114:
cmp r0, r1
beq _022511B6
ldr r0, _022511C0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0x20
ldrb r0, [r0]
@@ -69990,7 +69990,7 @@ _02251366:
cmp r0, r1
beq _02251418
ldr r0, _0225141C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0xf]
add sp, #0x2c
add r0, r0, #1
@@ -71659,7 +71659,7 @@ _022520D2:
mov r1, #0xff
bl FillWindowPixelBuffer
add r0, r6, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4]
bl MOD11_02230094
bl MOD11_0225C76C
@@ -72355,7 +72355,7 @@ _0225267E:
cmp r0, r1
beq _0225270A
ldr r0, _02252710 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #3
add sp, #0x2c
strb r0, [r4, #0xe]
@@ -72853,7 +72853,7 @@ _02252A86:
add r0, #0x4e
strb r1, [r0]
ldr r0, _02252B2C ; =0x0000070B
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r4, #0x40]
add r0, r4, #0
bl MOD11_022571B8
@@ -73522,7 +73522,7 @@ _02252FCE:
add r1, #0xb
bl MOD11_0225805C
ldr r0, _02253004 ; =0x0000070C
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0xa]
add r0, r0, #1
strb r0, [r4, #0xa]
@@ -73694,7 +73694,7 @@ _02253104:
ldr r0, [r4, #8]
bl MOD08_0222A1DC
ldr r0, _022533E0 ; =0x0000084F
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x14]
add sp, #0x18
add r0, r0, #1
@@ -73738,7 +73738,7 @@ _0225318C:
bne _0225319A
mov r0, #0x85
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
_0225319A:
ldrb r0, [r4, #0x15]
cmp r0, #0x1c
@@ -82482,7 +82482,7 @@ MOD11_022574F0: ; 0x022574F0
add r1, sp, #0x24
mov r2, #8
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -82570,7 +82570,7 @@ MOD11_022574F0: ; 0x022574F0
ldrh r2, [r3, r2]
bl MIi_CpuCopy16
add r0, sp, #0x24
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [sp, #0x18]
bl String_dtor
ldr r0, [sp, #0x1c]
@@ -83055,7 +83055,7 @@ _02257A26:
add r1, sp, #0x18
mov r2, #0xd
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -83116,7 +83116,7 @@ _02257A26:
mov r2, #0xe0
bl MIi_CpuCopy16
add r0, sp, #0x18
- bl FUN_02019178
+ bl RemoveWindow
add r0, r7, #0
bl String_dtor
add sp, #0x28
@@ -83181,7 +83181,7 @@ _02257B1E:
add r1, sp, #0x24
mov r2, #0xd
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r1, #0
str r1, [sp]
mov r0, #0xff
@@ -83241,7 +83241,7 @@ _02257B1E:
mov r2, #0xe0
bl MIi_CpuCopy16
add r0, sp, #0x24
- bl FUN_02019178
+ bl RemoveWindow
add r0, r6, #0
bl String_dtor
ldr r0, [sp, #0x18]
@@ -84398,27 +84398,27 @@ _0225845A:
lsr r1, r1, #0x18
add r2, r6, #0
add r3, r7, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r1, r4, #4
lsl r1, r1, #0x18
ldr r2, _022584A8 ; =0x000002FF
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_02018768
+ bl BgFillTilemapBufferAndCommit
add r1, r4, #4
lsl r1, r1, #0x18
mov r2, #0
add r0, r5, #0
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r4, r4, #1
add r6, #0x1c
cmp r4, #4
@@ -84439,12 +84439,12 @@ _022584B4:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r6, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r4, r4, #1
cmp r4, #4
blo _022584B4
@@ -84905,12 +84905,12 @@ _022588AE:
ldr r2, [r2, #0x3c]
lsr r1, r1, #0x18
lsl r3, r3, #0xa
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
add r1, r4, #4
lsl r1, r1, #0x18
ldr r0, [sp, #0x28]
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_022588D0:
add r4, r4, #1
add r6, r6, #2
@@ -85968,7 +85968,7 @@ _0225910E:
mov r1, #6
mov r2, #0
asr r3, r6, #8
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
bl MOD11_0225902C
cmp r4, #1
@@ -85976,13 +85976,13 @@ _0225910E:
ldr r2, _02259160 ; =0x000002FF
add r0, r7, #0
mov r1, #7
- bl FUN_02018768
+ bl BgFillTilemapBufferAndCommit
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r2, _02259164 ; =0x04001000
ldr r0, _02259168 ; =0xFFFF1FFF
ldr r1, [r2]
@@ -86080,7 +86080,7 @@ MOD11_0225916C: ; 0x0225916C
bl _s32_div_f
strh r0, [r4, #0xe]
ldr r0, _0225925C ; =0x0000070E
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02259260 ; =MOD11_0225B438
ldr r2, _02259264 ; =0x000004BA
add r1, r4, #0
@@ -86408,10 +86408,10 @@ MOD11_022594DC: ; 0x022594DC
add r4, r0, #0
mov r1, #4
mov r3, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r4, #0
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #0x4e
lsl r0, r0, #4
ldr r0, [r5, r0]
@@ -86463,7 +86463,7 @@ MOD11_02259554: ; 0x02259554
mov r1, #4
mov r3, #0
add r4, r0, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x10
str r0, [sp]
mov r0, #0xa
@@ -86476,10 +86476,10 @@ MOD11_02259554: ; 0x02259554
add r0, r4, #0
mov r1, #4
mov r3, #0x16
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r4, #0
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #0x4e
lsl r0, r0, #4
ldr r0, [r5, r0]
@@ -87845,10 +87845,10 @@ _0225A116:
ldr r2, _0225A15C ; =0x000002FF
add r6, r0, #0
mov r1, #5
- bl FUN_02018768
+ bl BgFillTilemapBufferAndCommit
add r0, r6, #0
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0
add r1, r5, #0
bl MOD11_0225ADD0
@@ -88290,7 +88290,7 @@ _0225A49C:
add r1, sp, #0x3c
lsr r2, r2, #0x18
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -88374,7 +88374,7 @@ _0225A50A:
cmp r4, #0
bne _0225A570
add r0, sp, #0x3c
- bl FUN_02019178
+ bl RemoveWindow
_0225A570:
str r7, [r5]
add r3, sp, #0x30
@@ -88427,7 +88427,7 @@ MOD11_0225A5C0: ; 0x0225A5C0
ldr r0, [r7]
bl MOD11_0222FF68
mov r1, #5
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r4, r0, #0
add r0, r7, #0
add r1, sp, #4
@@ -88591,7 +88591,7 @@ _0225A6E4:
cmp r0, #0
beq _0225A6FE
add r0, r7, #0
- bl FUN_02019178
+ bl RemoveWindow
_0225A6FE:
add r0, r4, #0
add r0, #0xec
@@ -88599,7 +88599,7 @@ _0225A6FE:
cmp r0, #0
beq _0225A70E
add r0, r6, #0
- bl FUN_02019178
+ bl RemoveWindow
_0225A70E:
mov r0, #0x4f
lsl r0, r0, #2
@@ -88607,7 +88607,7 @@ _0225A70E:
cmp r0, #0
beq _0225A71E
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
_0225A71E:
ldr r0, [sp, #4]
add r4, #0x14
@@ -88911,7 +88911,7 @@ MOD11_0225A968: ; 0x0225A968
cmp r0, #0
beq _0225A994
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_0225A994:
add r0, r4, #0
bl InitWindow
@@ -88925,7 +88925,7 @@ _0225A994:
lsl r2, r2, #0x18
lsr r2, r2, #0x18
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -89218,7 +89218,7 @@ MOD11_0225ABA4: ; 0x0225ABA4
bl FUN_02003054
add r0, r6, #0
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, _0225AC58 ; =MOD11_0225F71C
lsl r1, r4, #2
ldrb r2, [r0, r1]
@@ -89244,10 +89244,10 @@ MOD11_0225ABA4: ; 0x0225ABA4
ldrb r3, [r3, #2]
ldr r2, _0225AC5C ; =0x000002FF
add r0, r6, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r6, #0
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
@@ -89269,13 +89269,13 @@ _0225AC68:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r4, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
b _0225AC84
_0225AC7A:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r6, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
_0225AC84:
add r5, r5, #1
cmp r5, #4
@@ -89482,7 +89482,7 @@ MOD11_0225ADD8: ; 0x0225ADD8
bl MOD11_0222FF68
mov r1, #4
str r0, [sp, #4]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
lsl r0, r7, #2
add r0, r5, r0
@@ -89528,7 +89528,7 @@ _0225AE36:
_0225AE40:
ldr r0, [sp, #4]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
@@ -90373,22 +90373,22 @@ _0225B4D6:
add r0, r4, #0
mov r1, #4
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #4
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #5
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #5
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r5]
mov r1, #1
ldr r0, [r0]
@@ -90427,7 +90427,7 @@ _0225B55A:
add r0, r6, #0
mov r1, #4
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0xc
ldrsh r4, [r5, r3]
mov r3, #0xff
@@ -90435,7 +90435,7 @@ _0225B55A:
mov r1, #5
mov r2, #0
sub r3, r3, r4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #8
ldrsh r0, [r5, r0]
mov r1, #0x64
@@ -90453,13 +90453,13 @@ _0225B590:
add r0, r6, #0
mov r1, #4
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0xc
ldrsh r3, [r5, r3]
add r0, r6, #0
mov r1, #5
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #8
ldrsh r0, [r5, r0]
mov r1, #0x64
@@ -90471,12 +90471,12 @@ _0225B5B6:
mov r1, #4
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r6, #0
mov r1, #5
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
@@ -90556,24 +90556,24 @@ MOD11_0225B644: ; 0x0225B644
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x10
ldrsh r3, [r4, r3]
add r0, r5, #0
mov r1, #4
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #0
add r0, r5, #0
mov r1, #5
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x10
ldrsh r3, [r4, r3]
add r0, r5, #0
mov r1, #5
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r4, r5, r6, pc}
_0225B68E:
cmp r0, #0xc0
@@ -90591,7 +90591,7 @@ _0225B68E:
mov r1, #4
mov r2, #0
sub r3, r3, r6
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0xc
ldrsh r4, [r4, r3]
mov r3, #0xff
@@ -90599,31 +90599,31 @@ _0225B68E:
mov r1, #5
mov r2, #0
sub r3, r3, r4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _0225B6E0
_0225B6C6:
mov r3, #0xc
ldrsh r3, [r4, r3]
mov r1, #4
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0xc
ldrsh r3, [r4, r3]
add r0, r5, #0
mov r1, #5
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_0225B6E0:
add r0, r5, #0
mov r1, #4
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
mov r1, #5
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_0225B6F8:
pop {r4, r5, r6, pc}
nop
@@ -90650,14 +90650,14 @@ _0225B716:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
b _0225B736
_0225B72A:
add r0, r4, #4
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
_0225B736:
add r4, r4, #1
add r5, r5, #2
@@ -90671,7 +90671,7 @@ _0225B740:
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
add r4, r4, #1
add r6, r6, #2
cmp r4, #4
@@ -90888,7 +90888,7 @@ _0225B8EC:
cmp r0, #0
bne _0225B8F6
ldr r0, _0225B920 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0225B8F6:
mov r1, #1
ldr r0, _0225B924 ; =0x000006F4
@@ -91032,7 +91032,7 @@ _0225B9EC:
mov r0, #1
strb r0, [r4, #1]
ldr r0, _0225BAFC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r5, #0x20
b _0225BA34
_0225BA1E:
@@ -91044,7 +91044,7 @@ _0225BA1E:
mov r0, #1
strb r0, [r4, #1]
ldr r0, _0225BAFC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r5, #0x10
_0225BA34:
cmp r5, #0x20
@@ -92834,7 +92834,7 @@ _0225C738:
beq _0225C754
_0225C74C:
ldr r0, _0225C768 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0225C75E
_0225C754:
mov r0, #0xf0
@@ -93398,7 +93398,7 @@ _0225CB80:
bl FUN_0200CA44
str r0, [r5, #4]
ldr r0, _0225CBB8 ; =0x00000711
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
nop
_0225CBA8: .word MOD11_0225FE48
@@ -93863,7 +93863,7 @@ _0225CF22:
bgt _0225CF50
str r0, [r4, #0x1c]
ldrh r0, [r4, #0x2a]
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0x2c
ldrb r0, [r0]
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index effb333a..5cb61425 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -40,7 +40,7 @@ MOD12_0222D5C0: ; 0x0222D5C0
mov r0, #3
mov r1, #0x15
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D868 ; =0x00001658
add r0, r5, #0
mov r2, #0x15
@@ -95,14 +95,14 @@ MOD12_0222D5C0: ; 0x0222D5C0
mov r3, #0x15
bl FUN_02003008
mov r0, #0x15
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x30]
mov r0, #0x40
mov r1, #0x15
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0x23
add r1, r4, #0
lsl r2, r2, #4
@@ -445,7 +445,7 @@ MOD12_0222D9B0: ; 0x0222D9B0
bl MOD12_0222E0FC
add r0, r4, #0
add r0, #0x34
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #1
mov r1, #0
bl GX_EngineAToggleLayers
@@ -454,13 +454,13 @@ MOD12_0222D9B0: ; 0x0222D9B0
bl GX_EngineAToggleLayers
ldr r0, [r4, #0x30]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x30]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x30]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x30]
bl MOD12_022319FC
ldr r0, _0222DAD8 ; =0x0000081C
@@ -521,7 +521,7 @@ MOD12_0222D9B0: ; 0x0222D9B0
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x15
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _0222DADC ; =SDK_OVERLAY_MODULE_08_ID
@@ -546,7 +546,7 @@ MOD12_0222DAE4: ; 0x0222DAE4
ldr r0, [r4, #0x5c]
bl FUN_0200372C
ldr r0, [r4, #0x30]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _0222DB10 ; =0x027E0000
ldr r1, _0222DB14 ; =0x00003FF8
mov r0, #1
@@ -632,7 +632,7 @@ _0222DB60:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _0222DC78 ; =MOD12_02244A50
add r3, sp, #0x38
mov r2, #0xa
@@ -647,56 +647,56 @@ _0222DBC0:
add r0, r4, #0
add r2, sp, #0x38
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #1
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #1
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #2
add r2, sp, #0x54
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #2
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #3
add r2, sp, #0x70
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #3
add r0, r4, #0
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, _0222DC7C ; =0x04000008
mov r0, #3
ldrh r2, [r1]
@@ -737,7 +737,7 @@ MOD12_0222DC80: ; 0x0222DC80
add r1, #0x34
mov r2, #1
mov r3, #0xb
- bl FUN_02019064
+ bl AddWindowParameterized
add sp, #0x14
pop {pc}
@@ -1069,10 +1069,10 @@ MOD12_0222DF30: ; 0x0222DF30
bl GfGfxLoader_LoadScrnData
mov r0, #1
add r1, r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
add r0, r5, #0
bl MOD12_022335B0
cmp r4, #1
@@ -1087,16 +1087,16 @@ _0222DF9A:
lsl r1, r0, #0xd
mov r2, #0
mov r3, #0x15
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r5, #0x30]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #1
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
_0222DFBE:
add sp, #0x10
pop {r3, r4, r5, pc}
@@ -3175,7 +3175,7 @@ MOD12_0222EF04: ; 0x0222EF04
mov r0, #3
mov r1, #0x16
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222F168 ; =0x00000F68
add r0, r4, #0
mov r2, #0x16
@@ -3230,14 +3230,14 @@ MOD12_0222EF04: ; 0x0222EF04
mov r3, #0x16
bl FUN_02003008
mov r0, #0x16
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r5, #0x30]
mov r0, #0x40
mov r1, #0x16
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, [r5, #0x30]
bl MOD12_0222F548
bl FUN_0201CC08
@@ -3378,7 +3378,7 @@ MOD12_0222EF04: ; 0x0222EF04
add r1, r5, #0
bl Main_SetVBlankIntrCB
ldr r0, _0222F198 ; =0x00000605
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
add sp, #0xc
pop {r4, r5, pc}
@@ -3470,7 +3470,7 @@ _0222F1CA:
mov r3, #6
bl FUN_02003210
ldr r0, _0222F308 ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
str r0, [r5]
b _0222F2FA
@@ -3601,7 +3601,7 @@ MOD12_0222F324: ; 0x0222F324
bl MOD12_0222F98C
add r0, r4, #0
add r0, #0x34
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #1
mov r1, #0
bl GX_EngineAToggleLayers
@@ -3610,19 +3610,19 @@ MOD12_0222F324: ; 0x0222F324
bl GX_EngineAToggleLayers
ldr r0, [r4, #0x30]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x30]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x30]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x30]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x2c]
bl FUN_0200C398
@@ -3686,7 +3686,7 @@ _0222F3AE:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x16
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _0222F450 ; =SDK_OVERLAY_MODULE_08_ID
@@ -3759,7 +3759,7 @@ _0222F4BA:
ldr r0, [r6, #0x50]
bl FUN_0200372C
ldr r0, [r6, #0x30]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _0222F4EC ; =0x027E0000
ldr r1, _0222F4F0 ; =0x00003FF8
mov r0, #1
@@ -3861,7 +3861,7 @@ _0222F558:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _0222F6A8 ; =MOD12_02244B70
add r3, sp, #0x54
mov r2, #0xa
@@ -3876,56 +3876,56 @@ _0222F5B8:
add r0, r4, #0
add r2, sp, #0x54
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #1
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #1
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #2
add r2, sp, #0x70
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #2
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #3
add r2, sp, #0x8c
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #3
add r0, r4, #0
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, _0222F6AC ; =0x04000008
mov r0, #3
ldrh r2, [r1]
@@ -3949,20 +3949,20 @@ _0222F5B8:
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #4
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #4
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add sp, #0xa8
pop {r3, r4, r5, pc}
.align 2, 0
@@ -3991,7 +3991,7 @@ MOD12_0222F6B4: ; 0x0222F6B4
add r1, #0x34
mov r2, #1
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
add sp, #0x14
pop {pc}
.align 2, 0
@@ -4200,7 +4200,7 @@ MOD12_0222F834: ; 0x0222F834
bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #0x30]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -5015,7 +5015,7 @@ MOD12_0222FE4C: ; 0x0222FE4C
mov r0, #3
mov r1, #0x17
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022300EC ; =0x00001BF4
add r0, r4, #0
mov r2, #0x17
@@ -5092,14 +5092,14 @@ MOD12_0222FE4C: ; 0x0222FE4C
mov r1, #1
bl MOD12_0223EC7C
mov r0, #0x17
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r5, #0x74]
mov r0, #0x40
mov r1, #0x17
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r1, r5, #0
ldr r0, [r5]
add r1, #0x14
@@ -5240,7 +5240,7 @@ MOD12_0222FE4C: ; 0x0222FE4C
sub r2, #0x3f
bl G2x_SetBlendBrightness_
ldr r0, _02230120 ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02230124 ; =MOD12_022303C0
add r1, r5, #0
bl Main_SetVBlankIntrCB
@@ -5435,7 +5435,7 @@ _02230254:
add r5, #0x78
_02230296:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r6, r6, #1
add r5, #0x10
cmp r6, #2
@@ -5448,13 +5448,13 @@ _02230296:
bl GX_EngineAToggleLayers
ldr r0, [r4, #0x74]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x74]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x74]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x74]
bl MOD12_0223B474
ldr r0, _022303B0 ; =0x00001130
@@ -5530,7 +5530,7 @@ _02230296:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x17
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
ldr r0, _022303B8 ; =SDK_OVERLAY_MODULE_08_ID
@@ -5642,7 +5642,7 @@ _02230464:
ldr r0, [r0]
bl FUN_0200372C
ldr r0, [r4, #0x74]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _022304A8 ; =0x027E0000
ldr r1, _022304AC ; =0x00003FF8
mov r0, #1
@@ -5807,7 +5807,7 @@ _02230584:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _0223069C ; =MOD12_02244C94
add r3, sp, #0x38
mov r2, #0xa
@@ -5822,56 +5822,56 @@ _022305E4:
add r0, r4, #0
add r2, sp, #0x38
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #1
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #1
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #2
add r2, sp, #0x54
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #2
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #3
add r2, sp, #0x70
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #3
add r0, r4, #0
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, _022306A0 ; =0x04000008
mov r0, #3
ldrh r2, [r1]
@@ -5912,7 +5912,7 @@ MOD12_022306A4: ; 0x022306A4
add r1, #0x78
mov r2, #1
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xb
str r0, [sp]
mov r0, #0x1b
@@ -5927,7 +5927,7 @@ MOD12_022306A4: ; 0x022306A4
add r4, #0x88
add r1, r4, #0
mov r2, #1
- bl FUN_02019064
+ bl AddWindowParameterized
add sp, #0x14
pop {r3, r4, pc}
@@ -7577,7 +7577,7 @@ _022313B0:
add r1, sp, #0x34
lsr r2, r2, #0x18
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -7648,7 +7648,7 @@ _02231454:
sub r2, #8
bl FUN_020118C4
add r0, sp, #0x34
- bl FUN_02019178
+ bl RemoveWindow
str r6, [r5]
add r3, sp, #0x28
ldmia r3!, {r0, r1}
@@ -8288,7 +8288,7 @@ MOD12_0223190C: ; 0x0223190C
mov r3, #0x3f
bl FUN_0200A208
ldr r0, _02231978 ; =0x000005F8
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
str r0, [r4, #8]
ldrb r0, [r4, #0x11]
@@ -8354,27 +8354,27 @@ _022319AE:
lsr r1, r1, #0x18
add r2, r6, #0
add r3, r7, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #0
- bl FUN_02018768
+ bl BgFillTilemapBufferAndCommit
add r1, r4, #4
lsl r1, r1, #0x18
mov r2, #0
add r0, r5, #0
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r4, r4, #1
add r6, #0x1c
cmp r4, #4
@@ -8394,12 +8394,12 @@ _02231A04:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r6, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r4, r4, #1
cmp r4, #4
blo _02231A04
@@ -8590,7 +8590,7 @@ _02231B90:
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
add r4, r4, #1
add r5, r5, #2
cmp r4, #4
@@ -8632,12 +8632,12 @@ _02231BDE:
ldr r2, [r2, #0x20]
lsr r1, r1, #0x18
lsl r3, r3, #0xa
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
add r1, r5, #4
lsl r1, r1, #0x18
ldr r0, [sp, #0xc]
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_02231C00:
add r5, r5, #1
add r6, r6, #2
@@ -9550,7 +9550,7 @@ _022322FE:
add r1, sp, #0x3c
lsr r2, r2, #0x18
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -9633,7 +9633,7 @@ _0223236C:
cmp r4, #0
bne _022323D0
add r0, sp, #0x3c
- bl FUN_02019178
+ bl RemoveWindow
_022323D0:
str r7, [r5]
add r3, sp, #0x30
@@ -9846,7 +9846,7 @@ MOD12_02232538: ; 0x02232538
mov r1, #4
add r4, r2, #0
str r0, [sp, #4]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
lsl r0, r7, #2
add r0, r5, r0
@@ -9892,7 +9892,7 @@ _02232594:
_0223259E:
ldr r0, [sp, #4]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -10680,7 +10680,7 @@ _02232B9A:
cmp r0, #0
beq _02232BAA
ldr r0, [sp]
- bl FUN_02019178
+ bl RemoveWindow
_02232BAA:
mov r0, #2
lsl r0, r0, #8
@@ -10688,7 +10688,7 @@ _02232BAA:
cmp r0, #0
beq _02232BBA
add r0, r7, #0
- bl FUN_02019178
+ bl RemoveWindow
_02232BBA:
mov r0, #0x25
lsl r0, r0, #4
@@ -10696,7 +10696,7 @@ _02232BBA:
cmp r0, #0
beq _02232BCA
add r0, r6, #0
- bl FUN_02019178
+ bl RemoveWindow
_02232BCA:
ldr r0, [sp]
add r4, #0x14
@@ -10720,7 +10720,7 @@ _02232BEC:
cmp r0, #0
beq _02232BF8
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_02232BF8:
add r6, r6, #1
add r5, #0x14
@@ -10925,7 +10925,7 @@ MOD12_02232D7C: ; 0x02232D7C
cmp r0, #0
beq _02232DA8
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_02232DA8:
add r0, r4, #0
bl InitWindow
@@ -10939,7 +10939,7 @@ _02232DA8:
add r1, r4, #0
lsr r2, r2, #0x18
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -11020,7 +11020,7 @@ _02232E54:
cmp r0, #0
bne _02232E5E
ldr r0, _02232E88 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02232E5E:
mov r1, #1
mov r0, #0xc7
@@ -11707,7 +11707,7 @@ _02233338:
beq _02233354
_0223334C:
ldr r0, _02233368 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0223335E
_02233354:
mov r0, #0xf0
@@ -11738,7 +11738,7 @@ MOD12_0223336C: ; 0x0223336C
ldr r2, [r2, #0x14]
mov r1, #4
lsl r3, r3, #0xc
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
mov r0, #0xb6
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -11774,14 +11774,14 @@ _022333C0:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r7, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
b _022333E0
_022333D4:
add r0, r4, #4
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
_022333E0:
add r4, r4, #1
add r5, r5, #2
@@ -11991,7 +11991,7 @@ MOD12_0223356C: ; 0x0223356C
add r5, r1, #0
mov r1, #2
add r4, r2, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r1, #0xc0
mul r1, r5
lsl r1, r1, #1
@@ -12042,7 +12042,7 @@ _022335CC:
blt _022335BC
ldr r0, [r5, #0x30]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r3, r4, r5, r6, r7, pc}
nop
_022335DC: .word MOD12_022451D0
@@ -12862,19 +12862,19 @@ _02233C36: ; jump table
.short _02233C56 - _02233C36 - 2 ; case 3
_02233C3E:
ldr r0, _02233C68 ; =0x000006E1
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_02233C46:
ldr r0, _02233C6C ; =0x000006DF
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_02233C4E:
ldr r0, _02233C70 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_02233C56:
ldr r0, _02233C70 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_02233C5C:
pop {r4, r5, r6, pc}
nop
@@ -13533,7 +13533,7 @@ _02234170:
cmp r4, r0
bgt _022340EE
ldr r0, _02234194 ; =0x000006E1
- bl FUN_020054C8
+ bl PlaySE
ldr r2, [sp, #8]
ldr r0, _02234194 ; =0x000006E1
sub r2, r2, #1
@@ -14070,7 +14070,7 @@ _022345AC:
bl FUN_0200C644
mov r0, #0x6e
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl FreeToHeap
add r0, r5, #0
@@ -15298,7 +15298,7 @@ _02234F42:
_02234F96:
ldr r0, [r5, #0x30]
mov r1, #1
- bl FUN_02017B48
+ bl Bg_GetXpos
add r0, r6, #0
bl String_dtor
add sp, #0x10
@@ -15804,7 +15804,7 @@ _02235354:
pop {r3, r4, r5, pc}
_02235362:
ldr r0, _02235468 ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02235468 ; =0x000006E5
ldr r1, [r4, #4]
bl FUN_0200488C
@@ -16320,7 +16320,7 @@ _02235778:
mov r1, #0
bl FUN_0200C644
ldr r0, _022357AC ; =0x000005E1
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #4]
bl MOD12_02233638
ldr r1, [r5, #0xc]
@@ -16509,7 +16509,7 @@ _022358CE:
lsl r0, r0, #8
str r0, [r5, #0x20]
ldr r0, _02235A84 ; =0x000007F9
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r5, #0xe]
add r0, r0, #1
strb r0, [r5, #0xe]
@@ -16649,7 +16649,7 @@ _022359F6:
str r0, [r5, #0x18]
_02235A16:
ldr r0, _02235A90 ; =0x000006EA
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r5, #0xe]
add sp, #8
add r0, r0, #1
@@ -16689,7 +16689,7 @@ _02235A5E:
mov r1, #0
bl FUN_0200C644
ldr r0, _02235A94 ; =0x000005E1
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r5, #8]
ldrb r0, [r1]
sub r0, r0, #1
@@ -17436,7 +17436,7 @@ _02235F98:
bl MOD12_02234FB0
_02235FAA:
ldr r0, _0223603C ; =0x000006F9
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0xc]
add sp, #8
add r0, r0, #1
@@ -17665,7 +17665,7 @@ _02236162:
cmp r2, r0
bne _02236176
ldr r0, _02236204 ; =0x000006F8
- bl FUN_020054C8
+ bl PlaySE
_02236176:
ldrb r0, [r4, #0x14]
add r0, r0, #1
@@ -18972,7 +18972,7 @@ _02236B70:
cmp r0, #0
bne _02236BA0
ldr r0, _02236CEC ; =0x000006F6
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0xe]
add r0, r0, #1
strb r0, [r4, #0xe]
@@ -19013,7 +19013,7 @@ _02236BD0:
bl GetMonData
strh r0, [r4, #0x10]
ldr r0, _02236CF0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0xc]
add sp, #0xc
add r0, r0, #1
@@ -19077,7 +19077,7 @@ _02236C52:
beq _02236CE4
strh r0, [r4, #0x12]
ldr r0, _02236CF0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0xc]
add sp, #0xc
add r0, r0, #1
@@ -19591,7 +19591,7 @@ _0223700E:
add r6, r6, #1
bl MOD12_02234628
ldr r0, _022370F8 ; =0x000006DF
- bl FUN_020054C8
+ bl PlaySE
_02237036:
add r5, r5, #1
cmp r5, #3
@@ -19664,7 +19664,7 @@ _022370A6:
lsr r2, r2, #0x1e
bl MOD12_02235200
ldr r0, _02237100 ; =0x000006E2
- bl FUN_020054C8
+ bl PlaySE
_022370BC:
add r5, r5, #1
cmp r5, #4
@@ -20194,7 +20194,7 @@ _02237484:
add r0, #0xc
bl MOD12_02234628
ldr r0, _02237650 ; =0x000006DF
- bl FUN_020054C8
+ bl PlaySE
_022374A6:
ldrb r0, [r4, #0xc]
add sp, #8
@@ -20754,27 +20754,27 @@ _022378B4:
mov r0, #0x6f
lsl r0, r0, #4
mov r6, #4
- bl FUN_020054C8
+ bl PlaySE
b _022378F0
_022378C6:
cmp r0, #1
bne _022378D4
ldr r0, _02237A94 ; =0x000006EF
mov r6, #5
- bl FUN_020054C8
+ bl PlaySE
b _022378F0
_022378D4:
cmp r0, #2
bne _022378E2
ldr r0, _02237A98 ; =0x000006EE
mov r6, #6
- bl FUN_020054C8
+ bl PlaySE
b _022378F0
_022378E2:
mov r0, #3
strb r0, [r4, #0xc]
ldr r0, _02237A9C ; =0x000006DF
- bl FUN_020054C8
+ bl PlaySE
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_022378F0:
@@ -25300,7 +25300,7 @@ _0223993C:
add r1, r4, #0
bl FUN_0200CA44
ldr r0, _0223997C ; =0x000006E1
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
nop
_0223996C: .word MOD12_02245F14
@@ -25931,7 +25931,7 @@ _02239E14:
mov r1, #2
bl FUN_02003A64
ldr r0, _02239E94 ; =0x000006EC
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x10]
add r0, r0, #1
strb r0, [r4, #0x10]
@@ -26255,7 +26255,7 @@ _0223A0D4:
b _0223A248
_0223A0D6:
ldr r0, _0223A264 ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xf
strb r0, [r5, #0x11]
ldrb r0, [r5, #0x10]
@@ -26269,7 +26269,7 @@ _0223A0E6:
mov r0, #0
strb r0, [r5, #0x11]
ldr r0, _0223A264 ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r5, #0x10]
add sp, #8
add r0, r0, #1
@@ -26691,7 +26691,7 @@ _0223A418:
ldr r0, [r0]
mov r1, #2
ldr r0, [r0, #0x30]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r0, #0
str r0, [sp, #8]
@@ -26791,7 +26791,7 @@ _0223A4D2:
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp]
ldrb r0, [r0, #0x12]
add r1, r0, #1
@@ -26921,7 +26921,7 @@ _0223A5CC:
ldr r0, [r0]
mov r1, #2
ldr r0, [r0, #0x30]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r0, #0
str r0, [sp, #8]
@@ -27041,7 +27041,7 @@ _0223A6AE:
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp]
ldrb r0, [r0, #0x12]
add r1, r0, #1
@@ -27517,7 +27517,7 @@ _0223AA5C:
cmp r0, #1
bne _0223AAA2
ldr r0, _0223AABC ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r5, #0x10]
add sp, #0x10
add r0, r0, #1
@@ -28094,7 +28094,7 @@ _0223AED6:
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r2, r4, #0
ldrb r1, [r4, #0x17]
ldr r0, [r4]
@@ -28140,7 +28140,7 @@ _0223AF34:
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldrb r0, [r4, #0x10]
add r0, r0, #1
strb r0, [r4, #0x10]
@@ -28471,7 +28471,7 @@ _0223B1C6:
cmp r0, #1
bne _0223B1DE
ldr r0, _0223B350 ; =0x000006ED
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [sp]
mov r1, #0
strb r1, [r0, #0x15]
@@ -28480,7 +28480,7 @@ _0223B1DE:
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #0x30]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r0, #0
str r0, [sp, #8]
@@ -28580,7 +28580,7 @@ _0223B294:
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp]
mov r1, #0xc
ldrb r0, [r0, #0x12]
@@ -28711,7 +28711,7 @@ MOD12_0223B37C: ; 0x0223B37C
ldr r0, [sp]
str r6, [r4, #0xc]
ldrh r0, [r0, #0x10]
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0223B3C0 ; =MOD12_0223B3C8
ldr r2, _0223B3C4 ; =0x00007530
add r1, r4, #0
@@ -28778,27 +28778,27 @@ _0223B426:
lsr r1, r1, #0x18
add r2, r6, #0
add r3, r7, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #0
- bl FUN_02018768
+ bl BgFillTilemapBufferAndCommit
add r1, r4, #4
lsl r1, r1, #0x18
mov r2, #0
add r0, r5, #0
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r4, r4, #1
add r6, #0x1c
cmp r4, #4
@@ -28818,12 +28818,12 @@ _0223B47C:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r6, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r4, r4, #1
cmp r4, #4
blo _0223B47C
@@ -29192,7 +29192,7 @@ _0223B794:
lsl r1, r1, #0x18
lsr r0, r0, #0x18
lsr r1, r1, #0x18
- bl FUN_020178BC
+ bl SetBgPriority
add r4, r4, #1
add r5, r5, #2
cmp r4, #4
@@ -29256,12 +29256,12 @@ _0223B80A:
ldr r2, [r2]
lsr r1, r1, #0x18
lsl r3, r3, #0xa
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
add r1, r5, #4
lsl r1, r1, #0x18
ldr r0, [sp, #0xc]
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_0223B82E:
add r5, r5, #1
add r4, r4, #2
@@ -29760,7 +29760,7 @@ _0223BBEC:
strh r0, [r4, #0x1a]
lsl r0, r7, #0x18
lsr r0, r0, #0x18
- bl FUN_020187B0
+ bl BgGetCharPtr
str r0, [r4, #4]
add r0, r4, #0
pop {r3, r4, r5, r6, r7, pc}
@@ -29914,7 +29914,7 @@ _0223BD1C:
add r1, sp, #0x38
lsr r2, r2, #0x18
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -29982,7 +29982,7 @@ _0223BD74:
add r2, #0xf8
bl FUN_020118C4
add r0, sp, #0x38
- bl FUN_02019178
+ bl RemoveWindow
str r6, [r5]
add r3, sp, #0x2c
ldmia r3!, {r0, r1}
@@ -30475,14 +30475,14 @@ _0223C162:
lsl r0, r0, #0x18
lsr r0, r0, #0x18
add r1, r7, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
b _0223C182
_0223C176:
add r0, r4, #4
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
_0223C182:
add r4, r4, #1
add r5, r5, #2
@@ -30517,7 +30517,7 @@ MOD12_0223C19C: ; 0x0223C19C
ldr r2, [r2]
mov r1, #4
lsl r3, r3, #0xc
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r0, _0223C1D8 ; =0x0000FFFF
add r4, #0x94
strh r0, [r4]
@@ -30738,7 +30738,7 @@ _0223C338:
ldr r0, [sp]
mov r1, #3
ldr r0, [r0, #0x60]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r2, r0, #0
mov r1, #0
cmp r4, #0
@@ -30851,7 +30851,7 @@ _0223C410:
ldr r0, [sp]
mov r1, #3
ldr r0, [r0, #0x60]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -32903,11 +32903,11 @@ _0223D3F2:
cmp r0, #1
bne _0223D404
ldr r0, _0223D4C4 ; =0x000006F5
- bl FUN_020054C8
+ bl PlaySE
b _0223D40A
_0223D404:
ldr r0, _0223D4C8 ; =0x000006F4
- bl FUN_020054C8
+ bl PlaySE
_0223D40A:
ldr r0, _0223D4CC ; =0x00000ACC
ldrb r0, [r5, r0]
@@ -32944,7 +32944,7 @@ _0223D438:
bne _0223D454
mov r0, #0x6f
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_0223D454:
@@ -32952,17 +32952,17 @@ _0223D454:
cmp r0, r1
bne _0223D464
ldr r0, _0223D4D4 ; =0x000006EF
- bl FUN_020054C8
+ bl PlaySE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_0223D464:
ldr r0, _0223D4D8 ; =0x000006EE
- bl FUN_020054C8
+ bl PlaySE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_0223D46E:
ldr r0, _0223D4DC ; =0x000006F1
- bl FUN_020054C8
+ bl PlaySE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_0223D478:
@@ -32972,12 +32972,12 @@ _0223D478:
cmp r0, #1
bne _0223D48C
ldr r0, _0223D4E0 ; =0x000006F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_0223D48C:
ldr r0, _0223D4E4 ; =0x000005F6
- bl FUN_020054C8
+ bl PlaySE
_0223D492:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -35079,7 +35079,7 @@ _0223E49A:
bl FUN_0200D0BC
ldr r0, [r5, #0x74]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r5, #0
add r0, #0x98
ldr r1, _0223E520 ; =MOD12_02246224
@@ -35138,7 +35138,7 @@ MOD12_0223E528: ; 0x0223E528
bl FUN_0200D0E0
ldr r0, [r4, #0x74]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, _0223E544 ; =0x00001BF1
mov r1, #0
strb r1, [r4, r0]
@@ -35629,7 +35629,7 @@ _0223E8D2:
lsl r0, r0, #8
strh r0, [r4, #8]
ldr r0, _0223E8E8 ; =0x000006F8
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
nop
_0223E8E8: .word 0x000006F8
@@ -36006,7 +36006,7 @@ _0223EBAC:
lsl r2, r2, #2
bl FUN_0200CA44
ldr r0, _0223EC24 ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
@@ -36105,7 +36105,7 @@ _0223ECB4:
cmp r4, #4
blt _0223EC9E
ldr r0, _0223ECCC ; =0x000006EC
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0223ECC4: .word 0x00007FFF
@@ -36487,7 +36487,7 @@ _0223EF78:
ldr r0, [r0]
mov r1, #2
ldr r0, [r0, #0x74]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r0, #0
str r0, [sp, #8]
@@ -36587,7 +36587,7 @@ _0223F032:
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #0x74]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp]
ldrb r0, [r0, #0x12]
add r1, r0, #1
@@ -36724,7 +36724,7 @@ _0223F140:
ldr r0, [r0]
mov r1, #2
ldr r0, [r0, #0x74]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r0, #0
str r0, [sp, #8]
@@ -36844,7 +36844,7 @@ _0223F222:
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #0x74]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp]
ldrb r0, [r0, #0x12]
add r1, r0, #1
@@ -36982,7 +36982,7 @@ _0223F328:
add r0, #0x14
bl MOD12_0223CC9C
ldr r0, _0223F3AC ; =0x000006EC
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x10]
add r0, r0, #1
strb r0, [r4, #0x10]
@@ -38606,7 +38606,7 @@ _0223FF86:
bl MOD12_0223E488
_0223FF8C:
ldr r0, _02240040 ; =0x000006F7
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x10]
add sp, #0x18
add r0, r0, #1
@@ -39313,7 +39313,7 @@ _02240522:
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x74]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r2, r4, #0
ldrb r1, [r4, #0x1a]
ldr r0, [r4]
@@ -39359,7 +39359,7 @@ _02240580:
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x74]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldrb r0, [r4, #0x10]
add r0, r0, #1
strb r0, [r4, #0x10]
@@ -39582,7 +39582,7 @@ _02240734:
ldr r0, _0224076C ; =0x0000046F
bl FUN_0200521C
ldr r0, _02240770 ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0x50
ldrb r0, [r0]
@@ -41102,7 +41102,7 @@ MOD12_02241210: ; 0x02241210
mov r0, #3
mov r1, #0x18
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x4a
add r0, r4, #0
lsl r1, r1, #6
@@ -41175,14 +41175,14 @@ MOD12_02241210: ; 0x02241210
mov r3, #0x18
bl FUN_02003008
mov r0, #0x18
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r5, #0x30]
mov r0, #0x40
mov r1, #0x18
bl FUN_0201C24C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
ldr r0, [r5, #0x30]
bl MOD12_02241864
bl FUN_0201CC08
@@ -41300,7 +41300,7 @@ MOD12_02241210: ; 0x02241210
bl FUN_0200CA60
str r0, [r5, #8]
ldr r0, _0224148C ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
add sp, #0xc
pop {r4, r5, pc}
@@ -41472,7 +41472,7 @@ MOD12_022415A8: ; 0x022415A8
add r5, #0x34
_022415D4:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r6, r6, #1
add r5, #0x10
cmp r6, #9
@@ -41485,19 +41485,19 @@ _022415D4:
bl GX_EngineAToggleLayers
ldr r0, [r4, #0x30]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x30]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x30]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x30]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x28]
ldr r1, [r4, #0x2c]
bl FUN_0200C398
@@ -41577,7 +41577,7 @@ _022415D4:
bl Main_SetVBlankIntrCB
bl FUN_02015F1C
mov r0, #0x18
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
mov r1, #5
mov r2, #2
@@ -41665,7 +41665,7 @@ MOD12_02241754: ; 0x02241754
ldr r0, [r0]
bl FUN_0200372C
ldr r0, [r4, #0x30]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _022417D4 ; =0x027E0000
ldr r1, _022417D8 ; =0x00003FF8
mov r0, #1
@@ -41694,14 +41694,14 @@ MOD12_022417DC: ; 0x022417DC
bgt _022417FC
mov r0, #1
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
pop {r3, pc}
_022417FC:
cmp r0, #0x90
bge _02241808
mov r0, #1
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
_02241808:
pop {r3, pc}
nop
@@ -41717,7 +41717,7 @@ MOD12_02241814: ; 0x02241814
bne _02241826
mov r0, #1
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
_02241826:
pop {r3, pc}
.align 2, 0
@@ -41797,7 +41797,7 @@ _02241874:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _022419C4 ; =MOD12_022465C0
add r3, sp, #0x54
mov r2, #0xa
@@ -41812,56 +41812,56 @@ _022418D4:
add r0, r4, #0
add r2, sp, #0x54
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #1
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #1
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #2
add r2, sp, #0x70
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #2
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #3
add r2, sp, #0x8c
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #3
add r0, r4, #0
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, _022419C8 ; =0x04000008
mov r0, #3
ldrh r2, [r1]
@@ -41885,20 +41885,20 @@ _022418D4:
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
add r0, r4, #0
mov r1, #4
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #4
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add sp, #0xa8
pop {r3, r4, r5, pc}
.align 2, 0
@@ -41928,7 +41928,7 @@ MOD12_022419D0: ; 0x022419D0
add r1, #0x34
mov r2, #1
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r2, #1
add r1, r4, #0
str r2, [sp]
@@ -41943,7 +41943,7 @@ MOD12_022419D0: ; 0x022419D0
ldr r0, [r4, #0x30]
add r1, #0x44
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #5
str r0, [sp]
mov r0, #8
@@ -41959,7 +41959,7 @@ MOD12_022419D0: ; 0x022419D0
add r1, #0x54
mov r2, #1
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #9
str r0, [sp]
mov r0, #8
@@ -41975,7 +41975,7 @@ MOD12_022419D0: ; 0x022419D0
add r1, #0x64
mov r2, #1
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
mov r1, #0xd
str r1, [sp]
mov r0, #8
@@ -41990,7 +41990,7 @@ MOD12_022419D0: ; 0x022419D0
add r1, #0x74
mov r2, #1
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
mov r2, #1
add r1, r4, #0
str r2, [sp]
@@ -42005,7 +42005,7 @@ MOD12_022419D0: ; 0x022419D0
ldr r0, [r4, #0x30]
add r1, #0x84
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #5
str r0, [sp]
mov r0, #8
@@ -42021,7 +42021,7 @@ MOD12_022419D0: ; 0x022419D0
add r1, #0x94
mov r2, #1
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #9
str r0, [sp]
mov r0, #8
@@ -42037,7 +42037,7 @@ MOD12_022419D0: ; 0x022419D0
add r1, #0xa4
mov r2, #1
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r1, #0xd
str r1, [sp]
mov r0, #8
@@ -42052,7 +42052,7 @@ MOD12_022419D0: ; 0x022419D0
add r1, r4, #0
mov r2, #1
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
add sp, #0x14
pop {r3, r4, pc}
.align 2, 0
@@ -43645,7 +43645,7 @@ MOD12_022426BC: ; 0x022426BC
bl GfGfxLoader_LoadScrnData
ldr r0, [r5, #0x30]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -43702,7 +43702,7 @@ MOD12_022426BC: ; 0x022426BC
bl FUN_020030E8
ldr r0, [r5, #0x30]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x10
pop {r3, r4, r5, pc}
nop
@@ -43815,7 +43815,7 @@ MOD12_02242804: ; 0x02242804
bl GfGfxLoader_LoadScrnData
ldr r0, [r6, #0x30]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -44728,7 +44728,7 @@ MOD12_02242FD0: ; 0x02242FD0
mov r1, #1
bl FUN_0200C644
ldr r0, _02242FF4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
nop
_02242FF4: .word 0x000005DD
@@ -46285,7 +46285,7 @@ _02243B98:
ldr r0, [r0]
mov r1, #2
ldr r0, [r0, #0x30]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r0, #0
str r0, [sp, #8]
@@ -46385,7 +46385,7 @@ _02243C52:
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp]
ldrb r0, [r0, #0x12]
add r1, r0, #1
@@ -46515,7 +46515,7 @@ _02243D4C:
ldr r0, [r0]
mov r1, #2
ldr r0, [r0, #0x30]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r0, #0
str r0, [sp, #8]
@@ -46635,7 +46635,7 @@ _02243E2E:
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [sp]
ldrb r0, [r0, #0x12]
add r1, r0, #1
@@ -46799,7 +46799,7 @@ _02243F56:
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_02243F7A:
ldrb r1, [r4, #0x1a]
add r2, r4, #0
@@ -46846,7 +46846,7 @@ _02243FBA:
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x30]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldrb r0, [r4, #0x10]
add r0, r0, #1
strb r0, [r4, #0x10]
@@ -47304,7 +47304,7 @@ _02244348:
ldr r0, _02244430 ; =0x0000049E
bl FUN_0200521C
ldr r0, _02244434 ; =0x000006E5
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x10]
add sp, #0xc
add r0, r0, #1
@@ -47535,7 +47535,7 @@ _02244510: ; jump table
.short _022445E8 - _02244510 - 2 ; case 5
_0224451C:
ldr r0, _02244604 ; =0x000006FA
- bl FUN_020054C8
+ bl PlaySE
ldrb r0, [r4, #0x10]
add r0, r0, #1
strb r0, [r4, #0x10]
@@ -47563,7 +47563,7 @@ _0224454A:
cmp r1, #0
ble _02244558
ldr r0, _02244608 ; =0x000006FB
- bl FUN_020054C8
+ bl PlaySE
b _02244560
_02244558:
add r2, r2, #1
@@ -47629,7 +47629,7 @@ _022445C2:
cmp r1, #0
ble _022445D0
ldr r0, _0224460C ; =0x000006F9
- bl FUN_020054C8
+ bl PlaySE
b _022445D8
_022445D0:
add r3, r3, #1
diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s
index 5aee0b46..36288367 100644
--- a/arm9/modules/13/asm/module_13_arm2.s
+++ b/arm9/modules/13/asm/module_13_arm2.s
@@ -35163,10 +35163,10 @@ _0223BEA4: .word 0x05000400
MOD13_0223BEA8: ; 0x0223BEA8
stmdb sp!, {lr}
sub sp, sp, #4
- bl disableBankForX_
- bl GX_DisableBankForOBJExtPltt_2
- bl GX_DisableBankForSubBGExtPltt
- bl GX_DisableBankForSubOBJExtPltt_2
+ bl GX_DisableBankForBG
+ bl GX_DisableBankForOBJ
+ bl GX_DisableBankForSubBG
+ bl GX_DisableBankForSubOBJ
bl MOD13_0223BE1C
ldr r0, _0223BFB8 ; =0x022431D8
ldr r0, [r0]
@@ -35246,10 +35246,10 @@ _0223BFE0: .word 0x0400101C
MOD13_0223BFE4: ; 0x0223BFE4
stmdb sp!, {lr}
sub sp, sp, #4
- bl disableBankForX_
+ bl GX_DisableBankForBG
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1]
- bl GX_DisableBankForOBJExtPltt_2
+ bl GX_DisableBankForOBJ
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #4]
bl GX_DisableBankForBGExtPltt
@@ -35258,7 +35258,7 @@ MOD13_0223BFE4: ; 0x0223BFE4
bl GX_DisableBankForOBJExtPltt
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0xc]
- bl GX_DisableBankForTexPltt_2
+ bl GX_DisableBankForTex
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x10]
bl GX_DisableBankForTexPltt
@@ -35267,13 +35267,13 @@ MOD13_0223BFE4: ; 0x0223BFE4
bl GX_DisableBankForClearImage
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x18]
- bl GX_DisableBankForSubBGExtPltt
+ bl GX_DisableBankForSubBG
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x1c]
- bl GX_DisableBankForSubOBJExtPltt_2
+ bl GX_DisableBankForSubOBJ
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x20]
- bl FUN_020C5E04
+ bl GX_DisableBankForSubBGExtPltt
ldr r1, _0223C09C ; =0x022431D8
str r0, [r1, #0x24]
bl GX_DisableBankForSubOBJExtPltt
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index bdfed5b1..e1acb188 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -11,12 +11,12 @@ StoragePC_Overlay_Init: ; 0x021D74E0
mov r0, #3
mov r1, #9
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0xf
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x87
add r0, r5, #0
lsl r1, r1, #2
@@ -132,9 +132,9 @@ _021D75DE:
add r0, r4, #0
bl MOD14_021DB398
mov r0, #9
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
@@ -459,7 +459,7 @@ _021D7846:
b _021D792E
_021D785A:
ldr r0, _021D7990 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D792E
_021D7862:
mov r0, #0x61
@@ -482,7 +482,7 @@ _021D7876:
cmp r0, #1
bne _021D78BC
ldr r0, _021D7994 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -503,7 +503,7 @@ _021D7876:
b _021D7930
_021D78BC:
ldr r0, _021D7990 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D792E
_021D78C4:
add r0, r4, #0
@@ -515,7 +515,7 @@ _021D78C4:
cmp r0, #1
bne _021D790A
ldr r0, _021D7994 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -536,11 +536,11 @@ _021D78C4:
b _021D7930
_021D790A:
ldr r0, _021D7990 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D792E
_021D7912:
ldr r0, _021D7994 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC180
mov r0, #0x45
@@ -774,7 +774,7 @@ _021D7ADC:
b _021D7BC4
_021D7AF0:
ldr r0, _021D7D14 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D7BC4
_021D7AF8:
mov r0, #0x61
@@ -797,7 +797,7 @@ _021D7B0C:
cmp r0, #1
bne _021D7B52
ldr r0, _021D7D18 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -818,7 +818,7 @@ _021D7B0C:
b _021D7BC6
_021D7B52:
ldr r0, _021D7D14 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D7BC4
_021D7B5A:
add r0, r4, #0
@@ -830,7 +830,7 @@ _021D7B5A:
cmp r0, #1
bne _021D7BA0
ldr r0, _021D7D18 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -851,11 +851,11 @@ _021D7B5A:
b _021D7BC6
_021D7BA0:
ldr r0, _021D7D14 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D7BC4
_021D7BA8:
ldr r0, _021D7D18 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC180
mov r0, #0x45
@@ -913,7 +913,7 @@ _021D7C08:
cmp r0, #0
beq _021D7C42
ldr r0, _021D7D14 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [sp]
add r0, r4, #0
bl MOD14_021DBA44
@@ -1137,7 +1137,7 @@ _021D7DEA:
b _021D7EE8
_021D7DFE:
ldr r0, _021D7F04 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D7EE8
_021D7E06:
mov r0, #0x61
@@ -1160,7 +1160,7 @@ _021D7E1A:
cmp r0, #1
bne _021D7E5E
ldr r0, _021D7F08 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -1180,7 +1180,7 @@ _021D7E1A:
b _021D7EE8
_021D7E5E:
ldr r0, _021D7F04 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D7EE8
_021D7E66:
add r0, r4, #0
@@ -1192,7 +1192,7 @@ _021D7E66:
cmp r0, #1
bne _021D7EAA
ldr r0, _021D7F08 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -1212,11 +1212,11 @@ _021D7E66:
b _021D7EE8
_021D7EAA:
ldr r0, _021D7F04 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D7EE8
_021D7EB2:
ldr r0, _021D7F08 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC180
mov r0, #0x45
@@ -1365,7 +1365,7 @@ _021D7FDC:
b _021D80F2
_021D7FF0:
ldr r0, _021D8110 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D80F2
_021D7FF8:
mov r0, #0x61
@@ -1388,7 +1388,7 @@ _021D800C:
cmp r0, #1
bne _021D8050
ldr r0, _021D8114 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -1408,7 +1408,7 @@ _021D800C:
b _021D80F2
_021D8050:
ldr r0, _021D8110 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D80F2
_021D8058:
add r0, r4, #0
@@ -1420,7 +1420,7 @@ _021D8058:
cmp r0, #1
bne _021D809C
ldr r0, _021D8114 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -1440,11 +1440,11 @@ _021D8058:
b _021D80F2
_021D809C:
ldr r0, _021D8110 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D80F2
_021D80A4:
ldr r0, _021D8114 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC180
mov r0, #0x45
@@ -1533,7 +1533,7 @@ _021D813E:
b _021D83C4
_021D8166:
ldr r0, _021D83CC ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x12
bl MOD14_021DBA44
@@ -1635,7 +1635,7 @@ _021D822C:
b _021D83C4
_021D8240:
ldr r0, _021D83CC ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D83C4
_021D8248:
mov r0, #0x61
@@ -1658,7 +1658,7 @@ _021D825C:
cmp r0, #1
bne _021D82A0
ldr r0, _021D83E0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -1678,7 +1678,7 @@ _021D825C:
b _021D83C4
_021D82A0:
ldr r0, _021D83CC ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D83C4
_021D82A8:
add r0, r4, #0
@@ -1690,7 +1690,7 @@ _021D82A8:
cmp r0, #1
bne _021D82EC
ldr r0, _021D83E0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC170
ldr r1, [r4, #8]
@@ -1710,11 +1710,11 @@ _021D82A8:
b _021D83C4
_021D82EC:
ldr r0, _021D83CC ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _021D83C4
_021D82F4:
ldr r0, _021D83E0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021DC180
mov r0, #0x45
@@ -2038,7 +2038,7 @@ _021D8590:
cmp r0, #1
beq _021D85BA
ldr r0, _021D86AC ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x11
bl MOD14_021DBA44
@@ -2068,7 +2068,7 @@ _021D85CC:
cmp r0, #0
beq _021D86A6
ldr r0, _021D86B0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xb
bl MOD14_021DBA44
@@ -2112,7 +2112,7 @@ _021D862A:
pop {r3, r4, r5, pc}
_021D8638:
ldr r0, _021D86B0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2199,7 +2199,7 @@ _021D86E2:
cmp r0, #1
beq _021D870A
ldr r0, _021D87F0 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x11
bl MOD14_021DBA44
@@ -2226,7 +2226,7 @@ _021D870A:
pop {r3, r4, r5, pc}
_021D8728:
ldr r0, _021D87F8 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xc
bl MOD14_021DBA44
@@ -2375,7 +2375,7 @@ _021D8828:
pop {r3, r4, r5, pc}
_021D8864:
ldr r0, _021D8A38 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2427,7 +2427,7 @@ _021D88C0:
pop {r3, r4, r5, pc}
_021D88CC:
ldr r0, _021D8A38 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2572,7 +2572,7 @@ _021D89CA:
mov r1, #6
bl MOD14_021DCB2C
ldr r0, _021D8A38 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #5
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -2676,7 +2676,7 @@ _021D8AD8:
cmp r0, #0
beq _021D8B08
ldr r0, _021D8D58 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x22
bl MOD14_021DBA44
@@ -2703,7 +2703,7 @@ _021D8B08:
pop {r3, r4, r5, pc}
_021D8B24:
ldr r0, _021D8D5C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2755,7 +2755,7 @@ _021D8B80:
pop {r3, r4, r5, pc}
_021D8B8C:
ldr r0, _021D8D5C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -2766,7 +2766,7 @@ _021D8B8C:
pop {r3, r4, r5, pc}
_021D8BA4:
ldr r0, _021D8D5C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #3
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -2810,7 +2810,7 @@ _021D8BD4:
mov r1, #0x14
bl MOD14_021DCB2C
ldr r0, _021D8D5C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #5
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -2827,7 +2827,7 @@ _021D8C12:
cmp r0, #0
beq _021D8C42
ldr r0, _021D8D58 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x18
bl MOD14_021DBA44
@@ -2856,7 +2856,7 @@ _021D8C42:
mov r1, #0x13
bl MOD14_021DCB2C
ldr r0, _021D8D5C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #5
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -2872,7 +2872,7 @@ _021D8C7C:
cmp r0, #0
beq _021D8CAC
ldr r0, _021D8D58 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x18
bl MOD14_021DBA44
@@ -2899,7 +2899,7 @@ _021D8CAC:
mov r1, #0x15
bl MOD14_021DCB2C
ldr r0, _021D8D5C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #5
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -3006,7 +3006,7 @@ _021D8D9A:
cmp r0, #0
ldr r0, _021D8EB4 ; =0x000005DD
beq _021D8DC8
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD14_021E6220
mov r1, #0x6e
@@ -3016,7 +3016,7 @@ _021D8D9A:
str r0, [r5]
pop {r3, r4, r5, pc}
_021D8DC8:
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -3610,7 +3610,7 @@ _021D9254:
mov r1, #0x2c
bl MOD14_021DCB2C
ldr r0, _021D945C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -3640,7 +3640,7 @@ _021D9284:
cmp r2, r0
bne _021D9342
ldr r0, _021D9464 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021D92B6:
add r0, r4, #0
@@ -3687,7 +3687,7 @@ _021D9306:
mov r1, #0x2f
bl MOD14_021DCB2C
ldr r0, _021D9468 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
mov r0, #2
str r0, [r5]
pop {r3, r4, r5, pc}
@@ -3729,7 +3729,7 @@ _021D935A:
cmp r2, r0
bne _021D9454
ldr r0, _021D9464 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021D9372:
mov r0, #0x45
@@ -3798,20 +3798,20 @@ _021D93E2:
mov r1, #0xa
bl MOD14_021DCB2C
ldr r0, _021D946C ; =0x000005EA
- bl FUN_020054C8
+ bl PlaySE
mov r0, #4
str r0, [r5]
pop {r3, r4, r5, pc}
_021D9416:
ldr r0, _021D9464 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021D941E:
mov r0, #2
tst r0, r1
beq _021D9454
ldr r0, _021D9464 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021D942C:
mov r0, #0x45
@@ -3911,7 +3911,7 @@ _021D94DC:
cmp r0, #0
bne _021D950E
ldr r0, _021D95A8 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r1, r4, #0
bl MOD14_021DBA5C
@@ -3925,7 +3925,7 @@ _021D94DC:
pop {r3, r4, r5, pc}
_021D950E:
ldr r0, _021D95AC ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD14_021DBA44
@@ -3939,7 +3939,7 @@ _021D950E:
pop {r3, r4, r5, pc}
_021D952E:
ldr r0, _021D95A8 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r1, r4, #0
bl MOD14_021DBA5C
@@ -4020,7 +4020,7 @@ _021D95CA:
mov r1, #0xa
bl MOD14_021DCB2C
ldr r0, _021D9664 ; =0x000005EA
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD14_021DC3CC
cmp r0, #1
@@ -4138,7 +4138,7 @@ _021D96C6:
cmp r0, #0
beq _021D96F0
ldr r0, _021D9764 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [sp]
add r0, r5, #0
bl MOD14_021DBA44
@@ -4155,7 +4155,7 @@ _021D96F0:
add r1, r5, #0
bl MOD14_021DBD34
ldr r0, _021D9768 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -4260,7 +4260,7 @@ _021D979C:
pop {r3, r4, r5, pc}
_021D97D2:
ldr r0, _021D992C ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r1, r4, #0
bl MOD14_021DBA5C
@@ -4450,7 +4450,7 @@ _021D995A:
cmp r0, #1
bne _021D9998
ldr r0, _021D9B78 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #6
bl MOD14_021DBA44
@@ -4474,7 +4474,7 @@ _021D9998:
cmp r0, #0
beq _021D99D0
ldr r0, _021D9B78 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [sp]
add r0, r4, #0
bl MOD14_021DBA44
@@ -4582,7 +4582,7 @@ _021D9A62:
pop {r3, r4, r5, pc}
_021D9A92:
ldr r0, _021D9B78 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xd
bl MOD14_021DBA44
@@ -4875,7 +4875,7 @@ _021D9CC4:
pop {r3, r4, r5, pc}
_021D9CF0:
ldr r0, _021D9F78 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [sp]
add r0, r4, #0
bl MOD14_021DBA44
@@ -5546,7 +5546,7 @@ _021DA1FE:
ldr r0, [r4, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x12
lsl r0, r0, #4
ldr r0, [r4, r0]
@@ -5592,7 +5592,7 @@ _021DA256:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0x12
lsl r2, r2, #4
ldr r0, [r4, r2]
@@ -5658,7 +5658,7 @@ _021DA2F2:
ldr r0, [r5, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r5, #0
bl MOD14_021D83E4
mov r1, #0x4b
@@ -5693,7 +5693,7 @@ _021DA334:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
bl MOD14_021DC3F4
cmp r0, #1
@@ -5803,7 +5803,7 @@ _021DA41E:
ldr r0, [r4, r0]
bl MOD14_021DCA38
mov r0, #0xa
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x47
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -5889,7 +5889,7 @@ _021DA4F4:
mov r0, #3
mov r1, #0xa
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x45
lsl r0, r0, #2
add r0, r4, r0
@@ -5969,7 +5969,7 @@ _021DA58E:
tst r0, r1
beq _021DA5D6
ldr r0, _021DA5EC ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -6029,7 +6029,7 @@ _021DA614:
cmp r0, #0
beq _021DA648
ldr r0, _021DA7B8 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x18
bl MOD14_021DBA44
@@ -6193,7 +6193,7 @@ _021DA76C:
tst r0, r1
beq _021DA7B2
ldr r0, _021DA7C0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -6251,7 +6251,7 @@ _021DA7EA:
cmp r0, #0
beq _021DA81E
ldr r0, _021DA9C4 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x18
bl MOD14_021DBA44
@@ -6441,7 +6441,7 @@ _021DA978:
tst r0, r1
beq _021DA9BE
ldr r0, _021DA9CC ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -6725,7 +6725,7 @@ _021DABB6:
tst r1, r0
beq _021DABC6
ldr r0, _021DABE4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, r4, r5, pc}
_021DABC6:
@@ -6733,7 +6733,7 @@ _021DABC6:
tst r0, r1
beq _021DABDC
ldr r0, _021DABE4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
mvn r0, r0
strb r0, [r4, #5]
@@ -6842,7 +6842,7 @@ _021DAC98: ; jump table
.short _021DAF4A - _021DAC98 - 2 ; case 5
_021DACA4:
ldr r0, _021DAF60 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #1
bl MOD14_021DC350
@@ -6904,7 +6904,7 @@ _021DAD04:
pop {r3, r4, r5, r6, r7, pc}
_021DAD2C:
ldr r0, _021DAF68 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
_021DAD34:
ldr r0, _021DAF6C ; =gMain
@@ -6913,7 +6913,7 @@ _021DAD34:
tst r0, r1
beq _021DAD6C
ldr r0, _021DAF70 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
bl MOD14_021DC350
@@ -7052,7 +7052,7 @@ _021DAE4A:
mov r1, #0x29
bl MOD14_021DCB2C
ldr r0, _021DAF74 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #2
str r0, [r5]
pop {r3, r4, r5, r6, r7, pc}
@@ -7202,7 +7202,7 @@ _021DAF92: ; jump table
.short _021DB19C - _021DAF92 - 2 ; case 3
_021DAF9A:
ldr r0, _021DB1B4 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #2
bl MOD14_021DC350
@@ -7268,7 +7268,7 @@ _021DB01E:
tst r0, r1
beq _021DB046
ldr r0, _021DB1C0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
bl MOD14_021DC350
@@ -7285,7 +7285,7 @@ _021DB046:
cmp r0, #0
beq _021DB072
ldr r0, _021DB1C0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -7371,7 +7371,7 @@ _021DB0DE:
mov r1, #0x29
bl MOD14_021DCB2C
ldr r0, _021DB1C4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #2
add sp, #8
str r0, [r6]
@@ -10480,7 +10480,7 @@ MOD14_021DC76C: ; 0x021DC76C
lsl r0, r0, #4
str r5, [r4, r0]
mov r0, #0xa
- bl FUN_02016B94
+ bl BgConfig_Alloc
mov r1, #0x57
lsl r1, r1, #2
str r0, [r4, r1]
@@ -10829,22 +10829,22 @@ MOD14_021DCA38: ; 0x021DCA38
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x56
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -11076,7 +11076,7 @@ MOD14_021DCCA0: ; 0x021DCCA0
pop {r3, r4, pc}
_021DCCB4:
ldr r0, _021DCCFC ; =0x0000060D
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xa
str r0, [sp]
ldr r0, _021DCD00 ; =0x04000050
@@ -11262,7 +11262,7 @@ _021DCDF0:
add r2, r7, #0
bl MOD14_021DE2E8
ldr r0, _021DCE64 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldrh r0, [r4, #6]
add r0, r0, #1
strh r0, [r4, #6]
@@ -11306,7 +11306,7 @@ MOD14_021DCE68: ; 0x021DCE68
pop {r3, r4, r5, pc}
_021DCE7A:
ldr r0, _021DCEB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021DCEBC ; =0x00005DC0
add r0, r4, r0
bl MOD14_021DF484
@@ -12074,7 +12074,7 @@ MOD14_021DD460: ; 0x021DD460
lsl r0, r0, #4
ldr r5, [r4, r0]
ldr r0, _021DD488 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021DD48C ; =0x000065F4
add r5, #0x74
add r0, r4, r0
@@ -12096,7 +12096,7 @@ MOD14_021DD490: ; 0x021DD490
lsl r0, r0, #4
ldr r5, [r4, r0]
ldr r0, _021DD4B8 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021DD4BC ; =0x000065F4
add r5, #0x74
add r0, r4, r0
@@ -12154,7 +12154,7 @@ MOD14_021DD4FC: ; 0x021DD4FC
pop {r3, r4, r5, pc}
_021DD50E:
ldr r0, _021DD52C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021DD530 ; =0x0000662C
add r0, r4, r0
bl MOD14_021E1FC0
@@ -12259,7 +12259,7 @@ _021DD5CA: ; jump table
.short _021DD64C - _021DD5CA - 2 ; case 3
_021DD5D2:
ldr r0, _021DD660 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021DD664 ; =0x00005DC0
add r0, r5, r0
bl MOD14_021DFBB8
@@ -12344,7 +12344,7 @@ MOD14_021DD66C: ; 0x021DD66C
pop {r3, r4, r5, pc}
_021DD67E:
ldr r0, _021DD6B0 ; =0x00000633
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021DD6B4 ; =0x00005DC0
add r0, r4, r0
bl MOD14_021DFF1C
@@ -12407,7 +12407,7 @@ _021DD6EA:
strh r0, [r4, #6]
_021DD6FC:
ldr r0, _021DD734 ; =0x00000634
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021DD738 ; =0x0000B22C
add r0, r5, r0
bl MOD14_021E2BB0
@@ -12800,7 +12800,7 @@ MOD14_021DD9E4: ; 0x021DD9E4
pop {r3, r4, pc}
_021DD9F8:
ldr r0, _021DDA34 ; =0x0000060E
- bl FUN_020054C8
+ bl PlaySE
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -12846,28 +12846,28 @@ MOD14_021DDA38: ; 0x021DDA38
add r2, r0, #0
bl GX_SetGraphicsMode
ldr r0, _021DDB28 ; =MOD14_021E627C
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB2C ; =MOD14_021E6350
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB30 ; =MOD14_021E6334
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB34 ; =MOD14_021E62FC
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
bl MOD14_021DC3C4
cmp r0, #4
@@ -12878,28 +12878,28 @@ MOD14_021DDA38: ; 0x021DDA38
ldr r2, _021DDB38 ; =MOD14_021E6318
mov r1, #4
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB3C ; =MOD14_021E62E0
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB40 ; =MOD14_021E62C4
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB44 ; =MOD14_021E62A8
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
b _021DDB1A
_021DDADA:
mov r0, #0x57
@@ -12908,28 +12908,28 @@ _021DDADA:
ldr r2, _021DDB38 ; =MOD14_021E6318
mov r1, #4
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB48 ; =MOD14_021E6388
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB4C ; =MOD14_021E628C
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
ldr r2, _021DDB44 ; =MOD14_021E62A8
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
_021DDB1A:
bl MOD14_021DDC78
pop {r3, r4, r5, pc}
@@ -12978,12 +12978,12 @@ MOD14_021DDB50: ; 0x021DDB50
ldr r0, [r5, r0]
mov r1, #1
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -13584,7 +13584,7 @@ MOD14_021DE014: ; 0x021DE014
ldr r0, _021DE060 ; =0x00005984
mov r1, #3
ldr r0, [r4, r0]
- bl FUN_02017B48
+ bl Bg_GetXpos
ldr r1, _021DE064 ; =0x0000585C
str r0, [r4, #0xc]
ldr r1, [r4, r1]
@@ -13597,7 +13597,7 @@ MOD14_021DE014: ; 0x021DE014
ldr r0, _021DE060 ; =0x00005984
str r3, [r4, #0xc]
ldr r0, [r4, r0]
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0
str r3, [sp]
mov r0, #0x40
@@ -13610,7 +13610,7 @@ MOD14_021DE014: ; 0x021DE014
mov r1, #3
ldr r0, [r4, r0]
mov r2, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -13862,7 +13862,7 @@ _021DE250:
ldr r0, [r6, r0]
ldr r3, [r3, #0x10]
mov r1, #3
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
_021DE262:
ldr r0, [sp, #0x10]
bl FreeToHeap
@@ -13899,7 +13899,7 @@ MOD14_021DE278: ; 0x021DE278
ldr r0, _021DE2E4 ; =0x00005984
mov r1, #3
ldr r0, [r5, r0]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r7, r0, #0
beq _021DE2C2
ldr r1, [sp, #0x20]
@@ -13920,7 +13920,7 @@ _021DE2C2:
mov r1, #3
add r2, r7, #0
lsl r3, r3, #0xc
- bl FUN_02017CE8
+ bl BgCopyOrUncompressTilemapBufferRangeToVram
_021DE2DC:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -13937,7 +13937,7 @@ MOD14_021DE2E8: ; 0x021DE2E8
ldr r0, [r5, r0]
mov r1, #3
add r6, r2, #0
- bl FUN_02017B48
+ bl Bg_GetXpos
lsl r0, r0, #0x17
lsr r1, r0, #0xb
mov r0, #0xb8
@@ -14105,7 +14105,7 @@ MOD14_021DE3E4: ; 0x021DE3E4
ldr r3, [r5, #0xc]
ldr r0, [r5, r0]
mov r1, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r5, #4]
sub r0, r0, #1
str r0, [r5, #4]
@@ -14116,7 +14116,7 @@ _021DE45C:
ldr r0, [r5, r0]
mov r1, #3
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r1, _021DE480 ; =0x00000618
add r0, r5, #0
add r5, #0xa8
@@ -19503,7 +19503,7 @@ MOD14_021E0E44: ; 0x021E0E44
_021E0E58:
ldr r0, [r5, #4]
add r0, r0, r4
- bl FUN_02019178
+ bl RemoveWindow
add r6, r6, #1
add r4, #0x10
cmp r6, #4
@@ -19646,18 +19646,18 @@ _021E0F5E:
ldr r0, [r5, #8]
add r1, r1, r4
add r2, r6, #0
- bl FUN_02019150
+ bl AddWindow
cmp r7, #3
ldr r0, [r5, #4]
beq _021E0F78
add r0, r0, r4
- bl FUN_02019270
+ bl PutWindowTilemap
b _021E0F82
_021E0F78:
add r0, r0, r4
mov r1, #0xc
mov r2, #2
- bl FUN_0201928C
+ bl PutWindowTilemapRectAnchoredTopLeft
_021E0F82:
add r7, r7, #1
add r6, #8
@@ -19666,7 +19666,7 @@ _021E0F82:
blt _021E0F5E
ldr r0, [r5, #8]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_021E0F94:
add r0, r5, #0
bl MOD14_021E0FA8
@@ -19931,7 +19931,7 @@ _021E1190:
bl MOD14_021E12B8
ldr r0, [r5, #4]
add r0, #0x30
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
mov r0, #0
strh r0, [r4, #4]
mov r0, #2
@@ -19968,7 +19968,7 @@ _021E11CE:
bl ScrollWindow
ldr r0, [r5, #4]
add r0, #0x30
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldrh r0, [r4, #6]
cmp r0, #0x10
blo _021E1220
@@ -20254,16 +20254,16 @@ MOD14_021E13F0: ; 0x021E13F0
bl MOD14_021E153C
_021E1430:
ldr r0, [r4, #4]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x10
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x20
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x30
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
_021E144E:
pop {r4, pc}
@@ -20309,16 +20309,16 @@ _021E14A0:
bl MOD14_021E16A0
_021E14A8:
ldr r0, [r4, #4]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x10
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x20
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x30
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl MOD14_021E1114
_021E14CC:
@@ -20358,16 +20358,16 @@ _021E150E:
mov r1, #0
bl MOD14_021E16A0
ldr r0, [r4, #4]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x10
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x20
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #4]
add r0, #0x30
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl MOD14_021E1140
_021E153A:
@@ -20555,7 +20555,7 @@ MOD14_021E16A0: ; 0x021E16A0
add r4, r1, #0
ldr r0, [r0, #8]
mov r1, #2
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
add r2, r0, #0
mov r0, #1
@@ -20595,7 +20595,7 @@ _021E16DC:
ldr r0, [r0, #8]
mov r1, #2
mov r3, #0xc
- bl FUN_02017CE8
+ bl BgCopyOrUncompressTilemapBufferRangeToVram
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -20711,7 +20711,7 @@ MOD14_021E17C4: ; 0x021E17C4
_021E17D2:
ldr r0, [r5, #0x18]
add r0, r0, r4
- bl FUN_02019178
+ bl RemoveWindow
add r6, r6, #1
add r4, #0x10
cmp r6, #2
@@ -20763,7 +20763,7 @@ _021E1832:
ldr r0, [r6]
add r1, r1, r5
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r7, r7, #1
add r4, #8
add r5, #0x10
@@ -20815,7 +20815,7 @@ MOD14_021E189C: ; 0x021E189C
add r5, r0, #0
ldr r0, [r5, #0x18]
add r4, r1, #0
- bl FUN_02019270
+ bl PutWindowTilemap
ldr r3, [r5, #0x18]
ldrb r0, [r3, #7]
str r0, [sp]
@@ -20847,10 +20847,10 @@ MOD14_021E189C: ; 0x021E189C
mov r1, #1
bl AddTextPrinterParameterized
ldr r0, [r5, #0x18]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r5]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #1
strh r0, [r5, #0x1c]
add sp, #0xc
@@ -20866,7 +20866,7 @@ MOD14_021E1908: ; 0x021E1908
add r6, r2, #0
ldr r4, [sp, #0x18]
ldr r5, [sp, #0x1c]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
sub r1, r7, #1
sub r2, r6, #2
lsl r1, r1, #5
@@ -21039,10 +21039,10 @@ _021E1A5C:
ldrb r1, [r1]
bl MOD14_021E1AD8
ldr r0, [sp, #0x14]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r5]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #1
strh r0, [r5, #0x1e]
add sp, #0x18
@@ -21100,7 +21100,7 @@ MOD14_021E1AD8: ; 0x021E1AD8
add r5, r1, #0
ldr r0, [r0]
mov r1, #1
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r2, #8
sub r2, r2, r5
mov ip, r2
@@ -21175,7 +21175,7 @@ _021E1B5A:
_021E1B6E:
ldr r0, [r4]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
pop {r4, pc}
thumb_func_start MOD14_021E1B78
@@ -21194,7 +21194,7 @@ MOD14_021E1B78: ; 0x021E1B78
_021E1B90:
ldr r0, [r4]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
pop {r4, pc}
.align 2, 0
@@ -21230,7 +21230,7 @@ MOD14_021E1B9C: ; 0x021E1B9C
add r2, r5, r2
bl FUN_02002218
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #8
pop {r4, r5, r6, pc}
@@ -21254,7 +21254,7 @@ _021E1BF0:
cmp r5, #6
blt _021E1BF0
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -21267,7 +21267,7 @@ MOD14_021E1C10: ; 0x021E1C10
add r6, r2, #0
ldr r5, [sp, #0x18]
ldr r4, [sp, #0x1c]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
sub r1, r7, #1
sub r2, r6, #1
lsl r1, r1, #5
@@ -21339,7 +21339,7 @@ MOD14_021E1CA0: ; 0x021E1CA0
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
ldrb r1, [r4, #4]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldrb r1, [r4, #5]
mov r5, #0
sub r2, r1, #1
@@ -21383,7 +21383,7 @@ MOD14_021E1CEC: ; 0x021E1CEC
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
ldrb r1, [r4, #4]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldrb r1, [r4, #5]
mov r5, #0
sub r2, r1, #2
@@ -21643,7 +21643,7 @@ _021E1F04:
ldr r0, [r7, #4]
add r1, r1, r5
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r6, r6, #1
add r4, #8
add r5, #0x10
@@ -21703,7 +21703,7 @@ _021E1F6E:
_021E1F78:
ldr r0, [r5, #0x10]
add r0, r0, r4
- bl FUN_02019178
+ bl RemoveWindow
add r6, r6, #1
add r4, #0x10
cmp r6, #3
@@ -21795,7 +21795,7 @@ MOD14_021E1FF8: ; 0x021E1FF8
mov r1, #9
mov r2, #0xa
mov r3, #0xe
- bl FUN_02018F4C
+ bl FillBitmapRect8Bit
mov r4, #0
mov r0, #0xc
str r4, [sp, #0x20]
@@ -21872,7 +21872,7 @@ _021E20AA:
lsl r1, r6, #0x10
ldr r0, [sp, #0x2c]
lsr r1, r1, #0x10
- bl FUN_02018F4C
+ bl FillBitmapRect8Bit
_021E20C8:
ldr r1, [sp, #0x1c]
add r0, r5, #0
@@ -22275,7 +22275,7 @@ MOD14_021E2394: ; 0x021E2394
sub r3, r3, r5
bl AddTextPrinterParameterized2
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, r5, r6, pc}
nop
@@ -22290,7 +22290,7 @@ MOD14_021E23F8: ; 0x021E23F8
add r0, r4, #0
bl FillWindowPixelBuffer
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r4, pc}
thumb_func_start MOD14_021E240C
@@ -22333,7 +22333,7 @@ _021E2450:
cmp r6, #7
blt _021E242C
ldr r0, [sp, #0xc]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -22347,7 +22347,7 @@ MOD14_021E2464: ; 0x021E2464
add r0, r4, #0
bl FillWindowPixelBuffer
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r4, pc}
.align 2, 0
@@ -22454,7 +22454,7 @@ _021E250C:
mov r1, #1
add r2, #0xc
mov r3, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldrb r6, [r4, #5]
mov r0, #0x20
mov r3, #0xa
@@ -22473,7 +22473,7 @@ _021E250C:
str r3, [sp, #0x18]
ldr r0, [r5, #4]
mov r1, #1
- bl FUN_02018170
+ bl CopyToBgTilemapRect
b _021E2582
_021E2562:
mov r0, #5
@@ -22487,14 +22487,14 @@ _021E2562:
mov r1, #1
add r2, #0xc
mov r3, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldrb r0, [r4, #4]
add r0, r0, #1
strb r0, [r4, #4]
_021E2582:
ldr r0, [r5, #4]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #7
add sp, #0x1c
strb r0, [r4, #5]
@@ -22538,17 +22538,17 @@ _021E25C2:
cmp r0, #0
bne _021E260E
ldr r0, [r5, #0x10]
- bl FUN_02019270
+ bl PutWindowTilemap
ldr r0, [r5, #0x10]
add r0, #0x10
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
bl MOD14_021E2394
add r0, r5, #0
bl MOD14_021E240C
ldr r0, [r5, #4]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldrb r0, [r4, #4]
add sp, #0x1c
add r0, r0, #1
@@ -22601,7 +22601,7 @@ _021E264A:
ldr r0, [r4, #4]
mov r1, #1
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldrb r0, [r5, #5]
add r0, r0, #1
strb r0, [r5, #5]
@@ -22625,7 +22625,7 @@ _021E264A:
mov r1, #1
add r2, #0xc
mov r3, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldrb r1, [r5, #5]
mov r2, #5
mov r0, #0x20
@@ -22648,7 +22648,7 @@ _021E264A:
str r3, [sp, #0x18]
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_02018170
+ bl CopyToBgTilemapRect
b _021E26D0
_021E26CA:
ldrb r0, [r5, #4]
@@ -22657,7 +22657,7 @@ _021E26CA:
_021E26D0:
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x1c
pop {r4, r5, pc}
_021E26DC:
@@ -22682,7 +22682,7 @@ MOD14_021E26E4: ; 0x021E26E4
mov r1, #1
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0x18
str r0, [sp]
mov r0, #0x20
@@ -22694,7 +22694,7 @@ MOD14_021E26E4: ; 0x021E26E4
mov r1, #1
add r2, #0xc
mov r3, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r0, [r5, #0x10]
mov r1, #4
add r0, #0x20
@@ -22803,7 +22803,7 @@ _021E27DC:
ldr r0, [r4, #4]
mov r1, #1
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #0xe
ldr r2, [r4, #8]
lsl r1, r1, #0x10
@@ -22817,7 +22817,7 @@ _021E280A:
mov r1, #1
mov r2, #3
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #0xe
ldr r2, [r4, #0xc]
lsl r1, r1, #0x10
@@ -22882,7 +22882,7 @@ MOD14_021E2884: ; 0x021E2884
mov r1, #1
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
bl MOD14_021E2A28
mov r0, #1
@@ -22918,7 +22918,7 @@ MOD14_021E28B4: ; 0x021E28B4
ldr r0, [r4, #4]
mov r1, #1
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #0xe
ldr r2, [r4, #8]
lsl r1, r1, #0x10
@@ -22933,7 +22933,7 @@ _021E28EC:
mov r1, #1
mov r2, #3
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #0xe
ldr r2, [r4, #0xc]
lsl r1, r1, #0x10
@@ -22950,10 +22950,10 @@ _021E28EC:
ldr r0, [r4, #4]
mov r1, #1
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _021E293C ; =MOD14_021E28AC
ldr r2, [r4]
add r0, r4, #0
@@ -23194,7 +23194,7 @@ MOD14_021E2AE8: ; 0x021E2AE8
bl MOD14_021E32F8
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
pop {r4, pc}
thumb_func_start MOD14_021E2B10
@@ -23266,7 +23266,7 @@ _021E2B72:
bl MOD14_021E31A4
ldr r0, [r5, #4]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
add r1, r4, #0
bl MOD14_021E3290
@@ -23368,7 +23368,7 @@ _021E2C0A:
mov r1, #2
mov r2, #0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
_021E2C46:
add r1, r5, #0
add r1, #0x2b
@@ -23377,7 +23377,7 @@ _021E2C46:
bl MOD14_021E31A4
ldr r0, [r5, #4]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
add r1, r4, #0
bl MOD14_021E3290
@@ -24121,7 +24121,7 @@ _021E31CC:
mov r1, #2
add r2, r4, r2
lsr r3, r3, #0x18
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
_021E31F0:
add sp, #0xc
pop {r3, r4, pc}
@@ -24509,7 +24509,7 @@ MOD14_021E34C0: ; 0x021E34C0
add r6, r0, #0
beq _021E3558
add r0, #0x88
- bl FUN_02019178
+ bl RemoveWindow
add r0, r6, #0
add r0, #0x98
ldr r0, [r0]
@@ -24644,7 +24644,7 @@ MOD14_021E355C: ; 0x021E355C
ldr r0, [r4, #8]
mov r1, #4
mov r3, #1
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -24655,10 +24655,10 @@ MOD14_021E355C: ; 0x021E355C
ldr r0, [r4, #8]
mov r1, #4
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r4, #8]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r3, [r4, #0x10]
ldr r0, [r4, #8]
lsl r5, r3, #2
@@ -24666,7 +24666,7 @@ MOD14_021E355C: ; 0x021E355C
mov r1, #5
ldr r3, [r3, r5]
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0
add r1, r4, #0
str r3, [sp]
@@ -24680,7 +24680,7 @@ MOD14_021E355C: ; 0x021E355C
ldr r0, [r4, #8]
add r1, #0x88
mov r2, #4
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
add r0, #0x88
mov r1, #0
@@ -24961,7 +24961,7 @@ _021E3852:
str r6, [r5, #0x10]
ldr r0, [r5, #8]
mov r1, #5
- bl FUN_02017B48
+ bl Bg_GetXpos
lsl r0, r0, #0xc
ldr r1, _021E3898 ; =MOD14_021E6674
lsl r2, r6, #2
@@ -25042,7 +25042,7 @@ _021E38DE:
ldr r0, [r5, #8]
mov r1, #5
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldrh r0, [r4, #0xc]
sub r0, r0, #1
strh r0, [r4, #0xc]
@@ -25052,7 +25052,7 @@ _021E3900:
ldr r3, [r4, #0x18]
mov r1, #5
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0x10
str r0, [sp]
ldr r0, _021E3978 ; =0x04001050
@@ -25072,7 +25072,7 @@ _021E3924:
mov r1, #6
ldr r3, [r3, r5]
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0
strh r0, [r4, #0xe]
ldr r0, [r4, #4]
@@ -25176,7 +25176,7 @@ _021E39CE:
mov r1, #6
ldr r3, [r3, r5]
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
@@ -25193,7 +25193,7 @@ _021E3A0C:
ldr r0, [r5, #8]
mov r1, #5
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldrh r0, [r4, #0xc]
sub r0, r0, #1
strh r0, [r4, #0xc]
@@ -25203,7 +25203,7 @@ _021E3A2E:
ldr r3, [r4, #0x18]
mov r1, #5
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0x10
str r0, [sp]
ldr r0, _021E3AA4 ; =0x04001050
@@ -25223,7 +25223,7 @@ _021E3A52:
mov r1, #6
ldr r3, [r3, r5]
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0
strh r0, [r4, #0xe]
ldr r0, [r4, #4]
@@ -25309,7 +25309,7 @@ _021E3ADA:
ldr r0, [r0, #8]
mov r1, #6
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
@@ -25326,7 +25326,7 @@ _021E3B12:
mov r1, #5
mov r2, #0
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldrh r0, [r4, #0xc]
sub r0, r0, #1
strh r0, [r4, #0xc]
@@ -25336,7 +25336,7 @@ _021E3B34:
ldr r3, [r4, #0x18]
mov r1, #5
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
@@ -27001,12 +27001,12 @@ _021E4762:
thumb_func_start MOD14_021E4764
MOD14_021E4764: ; 0x021E4764
- ldr r3, _021E476C ; =FUN_0201797C
+ ldr r3, _021E476C ; =ToggleBgLayer
mov r0, #4
mov r1, #0
bx r3
.align 2, 0
-_021E476C: .word FUN_0201797C
+_021E476C: .word ToggleBgLayer
thumb_func_start MOD14_021E4770
MOD14_021E4770: ; 0x021E4770
@@ -27020,7 +27020,7 @@ MOD14_021E4770: ; 0x021E4770
bl G2x_SetBlendAlpha_
mov r0, #4
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
pop {r3, pc}
.align 2, 0
_021E478C: .word 0x04001050
@@ -27090,7 +27090,7 @@ _021E4800:
blo _021E47AE
add r0, r6, #0
add r0, #0x88
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r6, #0
bl MOD14_021E4770
add sp, #0x14
@@ -28336,7 +28336,7 @@ MOD14_021E5128: ; 0x021E5128
mov r1, #0x20
mov r2, #0
mov r3, #0xa
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -28347,7 +28347,7 @@ MOD14_021E5128: ; 0x021E5128
ldr r0, [r4, #0xc]
mov r1, #4
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r4, #0
bl MOD14_021E539C
add r0, r4, #0
@@ -28359,7 +28359,7 @@ MOD14_021E5128: ; 0x021E5128
str r0, [r4, r1]
ldr r0, [r4, #0xc]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r4, #0
bl MOD14_021E5A08
_021E5210:
@@ -28469,7 +28469,7 @@ MOD14_021E52C0: ; 0x021E52C0
bl MOD14_021E5504
ldr r0, [r4, #0xc]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_021E52DE:
pop {r4, pc}
@@ -28502,7 +28502,7 @@ _021E530A:
bl MOD14_021E549C
ldr r0, [r4, #0xc]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #0xdf
lsl r0, r0, #2
ldr r1, [r4, r0]
@@ -28550,7 +28550,7 @@ _021E534A:
ldr r0, [r5, #0xc]
mov r1, #2
add r3, r2, #0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
mov r0, #6
str r0, [sp]
mov r0, #0x20
@@ -28565,10 +28565,10 @@ _021E534A:
str r0, [sp, #0x18]
ldr r0, [r5, #0xc]
mov r1, #2
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, [r5, #0xc]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x1c
pop {r4, r5, pc}
@@ -28587,35 +28587,35 @@ MOD14_021E539C: ; 0x021E539C
_021E53B2:
mov r0, #5
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
pop {r3, pc}
_021E53CC:
mov r0, #6
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
pop {r3, pc}
_021E53E6:
mov r0, #7
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
pop {r3, pc}
thumb_func_start MOD14_021E5400
@@ -28640,9 +28640,9 @@ _021E541E:
ldr r0, [r7, #0xc]
add r1, r4, #0
add r2, r6, #0
- bl FUN_02019150
+ bl AddWindow
add r0, r4, #0
- bl FUN_02019270
+ bl PutWindowTilemap
add r5, r5, #1
add r6, #8
add r4, #0x10
@@ -28663,7 +28663,7 @@ _021E541E:
add r4, #0x78
_021E5458:
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r5, r5, #1
add r4, #0x10
cmp r5, #3
@@ -28688,7 +28688,7 @@ _021E547E:
cmp r0, #0
beq _021E548E
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_021E548E:
add r6, r6, #1
add r5, #0x10
@@ -28792,9 +28792,9 @@ _021E554C:
add r1, r5, r4
ldr r0, [r0, #0xc]
add r2, r7, #0
- bl FUN_02019150
+ bl AddWindow
add r0, r5, r4
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, r4
mov r1, #0
bl FillWindowPixelBuffer
@@ -28823,9 +28823,9 @@ _021E5588:
cmp r0, #0
beq _021E55A4
add r0, r5, #0
- bl FUN_020192B8
+ bl ClearWindowTilemap
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x84
str r7, [r0]
@@ -28978,9 +28978,9 @@ _021E56B4:
add r1, r5, r4
ldr r0, [r0, #0xc]
add r2, r7, #0
- bl FUN_02019150
+ bl AddWindow
add r0, r5, r4
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, r4
mov r1, #0
bl FillWindowPixelBuffer
@@ -29009,9 +29009,9 @@ _021E56F0:
cmp r0, #0
beq _021E570C
add r0, r5, #0
- bl FUN_020192B8
+ bl ClearWindowTilemap
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x84
str r7, [r0]
@@ -29102,7 +29102,7 @@ _021E5786:
bl AddTextPrinterParameterized2
_021E57B8:
add r0, r7, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
@@ -29118,7 +29118,7 @@ MOD14_021E57CC: ; 0x021E57CC
mov r1, #0
bl FillWindowPixelBuffer
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r4, pc}
.align 2, 0
@@ -29259,7 +29259,7 @@ _021E58C8:
blt _021E58C8
_021E58FA:
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -29386,7 +29386,7 @@ _021E59C6:
blt _021E59C6
_021E59F8:
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -29782,7 +29782,7 @@ MOD14_021E5CFC: ; 0x021E5CFC
bl AddTextPrinterParameterized2
_021E5D56:
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, r5, r6, pc}
.align 2, 0
@@ -30355,7 +30355,7 @@ _021E61D8:
tst r0, r1
beq _021E61EA
ldr r0, _021E620C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
mvn r0, r0
pop {r3, r4, r5, pc}
@@ -30364,7 +30364,7 @@ _021E61EA:
tst r1, r0
beq _021E6202
ldr r0, _021E620C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0x20
ldrb r0, [r0]
@@ -30719,4 +30719,3 @@ MOD14_021E6B94: ; 0x021E6B94
.global MOD14_021E6B98
MOD14_021E6B98: ; 0x021E6B98
.space 0x4
-
diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s
index 97282c02..173d4fd6 100644
--- a/arm9/modules/15/asm/module_15.s
+++ b/arm9/modules/15/asm/module_15.s
@@ -23,12 +23,12 @@ _021D74F2:
mov r0, #3
mov r1, #0x22
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #0xa
mov r0, #3
mov r1, #0x23
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
bl MOD15_021D7628
ldr r0, [r0, #0x14]
@@ -170,9 +170,9 @@ MOD15_021D7608: ; 0x021D7608
add r1, r4, #0
bl MOD15_021D7774
mov r0, #0x22
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x23
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
@@ -419,7 +419,7 @@ _021D77F6:
tst r1, r0
beq _021D7818
ldr r0, _021D7880 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0
add r0, #0x4c
@@ -435,7 +435,7 @@ _021D7818:
tst r1, r0
beq _021D782E
ldr r0, _021D7880 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _021D7884 ; =MOD15_021D851C
add r0, r5, #0
bl MOD15_021D83AC
@@ -445,7 +445,7 @@ _021D782E:
tst r0, r1
beq _021D7876
ldr r0, _021D7880 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0
add r0, #0x50
@@ -528,7 +528,7 @@ _021D78D6:
tst r1, r0
beq _021D78F8
ldr r0, _021D79B0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0
add r0, #0x4c
@@ -549,7 +549,7 @@ _021D78F8:
cmp r0, #0
beq _021D79A6
ldr r0, _021D79B0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0
add r0, #0x4e
@@ -568,7 +568,7 @@ _021D7920:
cmp r0, #0
bne _021D79A6
ldr r0, _021D79B0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #1
add r0, #0x4e
@@ -582,7 +582,7 @@ _021D7948:
tst r1, r0
beq _021D795E
ldr r0, _021D79B0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _021D79B4 ; =MOD15_021D851C
add r0, r5, #0
bl MOD15_021D83AC
@@ -592,7 +592,7 @@ _021D795E:
tst r0, r1
beq _021D79A6
ldr r0, _021D79B0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0
add r0, #0x50
@@ -703,7 +703,7 @@ _021D7A3C:
b _021D7BAE
_021D7A3E:
ldr r0, _021D7BB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0x4e
ldrh r0, [r0]
@@ -720,7 +720,7 @@ _021D7A5C:
tst r0, r1
beq _021D7AAC
ldr r0, _021D7BB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0x64
ldrb r2, [r0]
@@ -770,7 +770,7 @@ _021D7AAC:
bne _021D7AE2
_021D7AC6:
ldr r0, _021D7BB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
add r0, #0x4c
@@ -787,7 +787,7 @@ _021D7AE2:
tst r3, r0
beq _021D7B12
ldr r0, _021D7BB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
add r0, #0x4e
@@ -808,7 +808,7 @@ _021D7B12:
tst r0, r3
beq _021D7B40
ldr r0, _021D7BB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
add r0, #0x4e
@@ -829,7 +829,7 @@ _021D7B40:
tst r0, r1
beq _021D7B56
ldr r0, _021D7BB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _021D7BBC ; =MOD15_021D851C
add r0, r4, #0
bl MOD15_021D83AC
@@ -838,7 +838,7 @@ _021D7B56:
cmp r2, #0
beq _021D7BAE
ldr r0, _021D7BB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
add r0, #0x50
@@ -944,7 +944,7 @@ _021D7C28:
tst r1, r0
beq _021D7C4E
ldr r0, _021D7CF0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0x4c
ldrh r1, [r0]
@@ -962,7 +962,7 @@ _021D7C4E:
tst r1, r0
beq _021D7C6C
ldr r0, _021D7CF0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
add r0, #0x4c
@@ -976,7 +976,7 @@ _021D7C6C:
tst r1, r0
beq _021D7C86
ldr r0, _021D7CF0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #5
bl MOD15_021D8900
@@ -988,7 +988,7 @@ _021D7C86:
tst r1, r0
beq _021D7CA6
ldr r0, _021D7CF0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r4, #0x4c
ldrh r0, [r4]
cmp r0, #0
@@ -1005,7 +1005,7 @@ _021D7CA6:
tst r0, r1
beq _021D7CE8
ldr r0, _021D7CF0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #2
str r0, [r5]
b _021D7CE8
@@ -1089,7 +1089,7 @@ _021D7D44:
beq _021D7D78
_021D7D4C:
ldr r0, _021D7E34 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0x65
ldrb r1, [r0]
@@ -1113,7 +1113,7 @@ _021D7D78:
tst r1, r0
beq _021D7D96
ldr r0, _021D7E38 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x14]
mov r1, #7
bl MOD15_021D8900
@@ -1132,7 +1132,7 @@ _021D7D96:
cmp r0, #0xfe
bne _021D7DBE
ldr r0, _021D7E38 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x14]
mov r1, #7
bl MOD15_021D8900
@@ -1147,7 +1147,7 @@ _021D7DBE:
cmp r0, #0
beq _021D7DEA
ldr r0, _021D7E38 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0x54
add r1, r5, #0
@@ -1162,7 +1162,7 @@ _021D7DBE:
b _021D7E30
_021D7DEA:
ldr r0, _021D7E44 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
b _021D7E30
_021D7DF2:
add r0, r5, #0
@@ -1170,7 +1170,7 @@ _021D7DF2:
cmp r0, #0
beq _021D7E30
ldr r0, _021D7E38 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x14]
mov r1, #0xe
bl MOD15_021D8900
@@ -1533,7 +1533,7 @@ _021D8084:
beq _021D80BC
_021D808C:
ldr r0, _021D81B8 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
add r0, #0x50
@@ -1583,7 +1583,7 @@ _021D80E2:
b _021D812E
_021D80F0:
ldr r0, _021D81C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #0xf
bl MOD15_021D8900
@@ -1591,7 +1591,7 @@ _021D80F0:
pop {r3, r4, r5, pc}
_021D8102:
ldr r0, _021D81C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #0x10
bl MOD15_021D8900
@@ -1601,7 +1601,7 @@ _021D8102:
pop {r3, r4, r5, pc}
_021D8118:
ldr r0, _021D81C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #0x10
bl MOD15_021D8900
@@ -1615,7 +1615,7 @@ _021D812E:
tst r0, r1
beq _021D814E
ldr r0, _021D81C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #9
bl MOD15_021D8900
@@ -1629,7 +1629,7 @@ _021D814E:
tst r0, r1
beq _021D81B4
ldr r0, _021D81C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD15_021D8310
ldr r0, _021D81C4 ; =MOD15_021D779C
@@ -2080,14 +2080,14 @@ _021D8488: ; jump table
.short _021D84A2 - _021D8488 - 2 ; case 4
_021D8492:
ldr r0, _021D8514 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #0x15
bl MOD15_021D8900
pop {r3, r4, r5, pc}
_021D84A2:
ldr r0, _021D8514 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #0x16
bl MOD15_021D8900
@@ -2096,7 +2096,7 @@ _021D84A2:
pop {r3, r4, r5, pc}
_021D84B6:
ldr r0, _021D8514 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #4]
cmp r0, #2
bne _021D84CA
@@ -2193,14 +2193,14 @@ _021D8574: ; jump table
.short _021D858E - _021D8574 - 2 ; case 4
_021D857E:
ldr r0, _021D85C8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #0x15
bl MOD15_021D8900
pop {r3, r4, r5, pc}
_021D858E:
ldr r0, _021D85C8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x14]
mov r1, #0x16
bl MOD15_021D8900
@@ -2209,7 +2209,7 @@ _021D858E:
pop {r3, r4, r5, pc}
_021D85A2:
ldr r0, _021D85C8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _021D85CC ; =MOD15_021D8378
add r0, r4, #0
bl MOD15_021D7794
@@ -2368,7 +2368,7 @@ MOD15_021D8698: ; 0x021D8698
pop {r3, r4, r5, pc}
_021D86AA:
ldr r0, _021D86E0 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0x65
ldrb r1, [r0]
@@ -2611,7 +2611,7 @@ MOD15_021D87F8: ; 0x021D87F8
bl FUN_02008C9C
str r0, [r4, #0x24]
mov r0, #0x23
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x20]
ldr r0, _021D8880 ; =MOD15_021D88D8
add r1, r4, #0
@@ -3076,19 +3076,19 @@ _021D8BF4:
blt _021D8BD8
ldr r0, [r7, #0x20]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7, #0x20]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7, #0x20]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7, #0x20]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7, #0x20]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r6, #0
bl MOD15_021D8998
_021D8C2A:
@@ -3112,32 +3112,32 @@ MOD15_021D8C30: ; 0x021D8C30
ldr r0, _021D8C98 ; =0x021DB964
bl GX_SetBanks
ldr r0, _021D8C9C ; =0x021DB8C8
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0
ldr r0, [r4, #0x20]
ldr r2, _021D8CA0 ; =0x021DB910
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x20]
ldr r2, _021D8CA4 ; =0x021DB8D8
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x20]
ldr r2, _021D8CA8 ; =0x021DB948
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x20]
ldr r2, _021D8CAC ; =0x021DB8F4
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x20]
ldr r2, _021D8CB0 ; =0x021DB92C
mov r1, #4
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
pop {r4, pc}
nop
_021D8C94: .word 0x04000304
@@ -4388,13 +4388,13 @@ _021D966A:
_021D9674:
add r0, r4, #0
add r0, #0xc
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x1c
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x2c
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -4446,7 +4446,7 @@ MOD15_021D9694: ; 0x021D9694
add r0, r6, #0
add r1, #0xc
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x15
str r0, [sp]
mov r0, #0x1b
@@ -4464,7 +4464,7 @@ MOD15_021D9694: ; 0x021D9694
add r0, r6, #0
add r1, #0x1c
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xf
str r0, [sp]
mov r0, #8
@@ -4483,7 +4483,7 @@ MOD15_021D9694: ; 0x021D9694
add r1, #0x2c
mov r2, #0
mov r3, #0x17
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
add r0, #0xc2
str r0, [sp]
@@ -4532,10 +4532,10 @@ MOD15_021D9694: ; 0x021D9694
bl FUN_0200D06C
add r0, r5, #0
add r0, #0xc
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
add r0, #0x1c
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
bl MOD15_021D9868
add r0, r5, #0
@@ -4547,7 +4547,7 @@ MOD15_021D9694: ; 0x021D9694
bl MOD15_021D98C0
add r0, r6, #0
mov r1, #0
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x14
pop {r3, r4, r5, r6, pc}
@@ -4815,7 +4815,7 @@ _021D99FA:
_021D9A02:
add r4, #0xc
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r4, pc}
thumb_func_start MOD15_021D9A0C
@@ -5306,7 +5306,7 @@ _021D9D8C:
_021D9DB0:
add r4, #0x1c
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, r5, r6, pc}
.align 2, 0
@@ -5552,7 +5552,7 @@ MOD15_021D9F88: ; 0x021D9F88
bl FUN_0200CCF8
add r4, #0x2c
add r0, r4, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
pop {r4, pc}
.align 2, 0
@@ -5630,7 +5630,7 @@ MOD15_021D9FD4: ; 0x021D9FD4
bl MOD15_021DA0B8
add r0, r4, #0
mov r1, #3
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -5645,9 +5645,9 @@ MOD15_021DA044: ; 0x021DA044
add r4, r2, #0
add r1, sp, #0x10
add r2, r5, #0
- bl FUN_02019150
+ bl AddWindow
add r0, sp, #0x10
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, sp, #0x10
mov r1, #0xe
bl FillWindowPixelBuffer
@@ -5676,11 +5676,11 @@ MOD15_021DA044: ; 0x021DA044
str r1, [sp, #0xc]
bl AddTextPrinterParameterized2
add r0, sp, #0x10
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl String_dtor
add r0, sp, #0x10
- bl FUN_02019178
+ bl RemoveWindow
add sp, #0x20
pop {r3, r4, r5, pc}
nop
@@ -5794,7 +5794,7 @@ MOD15_021DA164: ; 0x021DA164
mov r1, #3
add r2, r1, #0
mov r3, #0x40
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, pc}
thumb_func_start MOD15_021DA178
@@ -5805,7 +5805,7 @@ MOD15_021DA178: ; 0x021DA178
mov r1, #3
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, pc}
thumb_func_start MOD15_021DA18C
@@ -5892,12 +5892,12 @@ MOD15_021DA1D0: ; 0x021DA1D0
add r0, r4, #0
mov r1, #1
sub r3, r2, #4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #1
mov r2, #3
mov r3, #2
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
bl MOD15_021DA54C
mov r1, #2
@@ -5936,7 +5936,7 @@ MOD15_021DA1D0: ; 0x021DA1D0
str r0, [r3]
add r0, r4, #0
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r3, r4, r5, pc}
nop
@@ -6018,7 +6018,7 @@ _021DA31A:
add r1, sp, #0x28
mov r2, #1
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, sp, #0x28
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -6042,13 +6042,13 @@ _021DA31A:
add r2, r5, #0
bl AddTextPrinterParameterized2
add r0, sp, #0x28
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, sp, #0x28
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r5, #0
bl String_dtor
add r0, sp, #0x28
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r6, #0x12
add r7, #0xa
@@ -6095,7 +6095,7 @@ _021DA3CC:
add r0, r4, #0
mov r2, #1
mov r3, #0x22
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #4
mov r1, #0x23
bl String_ctor
@@ -6143,13 +6143,13 @@ _021DA430:
blo _021DA40C
_021DA452:
add r0, sp, #0x20
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, sp, #0x20
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r4, #0
bl String_dtor
add r0, sp, #0x20
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [sp, #0x14]
add r0, #0xc8
str r0, [sp, #0x14]
@@ -6212,7 +6212,7 @@ _021DA4C2:
ldr r0, [sp, #0x14]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r6, #0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -6230,11 +6230,11 @@ _021DA4C2:
mov r1, #0
bl AddTextPrinterParameterized2
add r0, r6, #0
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r6, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r6, #0
- bl FUN_02019178
+ bl RemoveWindow
add r7, r7, #1
add r5, #0x10
add r4, r4, #4
@@ -6495,7 +6495,7 @@ MOD15_021DA710: ; 0x021DA710
mov r1, #1
mov r2, #3
mov r3, #2
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, pc}
thumb_func_start MOD15_021DA720
@@ -6545,7 +6545,7 @@ MOD15_021DA760: ; 0x021DA760
beq _021DA778
mov r0, #1
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
pop {r3, pc}
_021DA778:
@@ -6566,7 +6566,7 @@ MOD15_021DA77C: ; 0x021DA77C
bl G2x_SetBlendAlpha_
mov r0, #1
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x7c
str r0, [sp]
mov r0, #0xc
@@ -6607,7 +6607,7 @@ _021DA7DA:
ldr r0, [r4, #0xc]
mov r1, #1
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r4, pc}
.align 2, 0
@@ -6684,7 +6684,7 @@ MOD15_021DA828: ; 0x021DA828
add r1, #0x10
mov r2, #2
mov r3, #4
- bl FUN_02019064
+ bl AddWindowParameterized
mov r3, #0
str r3, [sp]
mov r1, #0xc
@@ -6698,7 +6698,7 @@ MOD15_021DA828: ; 0x021DA828
ldr r0, [r4, #0xc]
add r1, #0x20
mov r2, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [r4, #0x30]
str r0, [r4, #0x34]
@@ -6734,10 +6734,10 @@ _021DA8C6:
_021DA8D0:
add r0, r4, #0
add r0, #0x20
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x10
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -6754,7 +6754,7 @@ MOD15_021DA8E8: ; 0x021DA8E8
mov r1, #0x20
mov r2, #0
mov r3, #0x23
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -6765,25 +6765,25 @@ MOD15_021DA8E8: ; 0x021DA8E8
add r0, r4, #0
mov r1, #2
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r5, #0
add r0, #0x10
mov r1, #0
bl FillWindowPixelBuffer
add r0, r5, #0
add r0, #0x10
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
add r0, #0x10
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD15_021DA950
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -6885,7 +6885,7 @@ _021DAA12:
_021DAA18:
add r6, #0x10
add r0, r6, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -6903,7 +6903,7 @@ MOD15_021DAA24: ; 0x021DAA24
bl G2x_SetBlendAlpha_
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r1, _021DAAC0 ; =0x04000048
ldr r0, _021DAAC4 ; =0xFFFFC0FF
ldrh r2, [r1]
@@ -7027,7 +7027,7 @@ MOD15_021DAB18: ; 0x021DAB18
beq _021DAB74
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, _021DAB78 ; =0x0400004A
ldrh r2, [r0]
mov r0, #0x3f
@@ -7210,7 +7210,7 @@ _021DAC84:
str r0, [r1]
add r0, r7, #0
add r0, #0x10
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [sp, #8]
mov r2, #2
str r0, [sp]
@@ -7337,7 +7337,7 @@ MOD15_021DAD78: ; 0x021DAD78
ldr r0, [r0, #0xc]
mov r1, #2
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, pc}
.align 2, 0
@@ -7531,7 +7531,7 @@ MOD15_021DAEB4: ; 0x021DAEB4
ldr r0, [r4, #0xc]
mov r1, #4
add r3, r2, #0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
mov r2, #0xb
mov r0, #0xa5
lsl r0, r0, #2
@@ -7549,7 +7549,7 @@ MOD15_021DAEB4: ; 0x021DAEB4
mov r1, #4
mov r2, #3
mov r3, #0xe
- bl FUN_02018170
+ bl CopyToBgTilemapRect
b _021DAF92
_021DAF4A:
mov r2, #0xb
@@ -7568,7 +7568,7 @@ _021DAF4A:
ldr r0, [r4, #0xc]
mov r1, #4
add r3, r2, #0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
mov r2, #0xb
ldr r0, _021DAFA8 ; =0x00000462
str r2, [sp]
@@ -7585,13 +7585,13 @@ _021DAF4A:
mov r1, #4
mov r2, #3
mov r3, #0xe
- bl FUN_02018170
+ bl CopyToBgTilemapRect
_021DAF92:
add r0, r4, #0
bl MOD15_021DB154
ldr r0, [r4, #0xc]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x1c
pop {r3, r4, pc}
.align 2, 0
@@ -7732,7 +7732,7 @@ MOD15_021DAFF8: ; 0x021DAFF8
ldr r0, [r5, #0xc]
ldr r3, [r3, #0x10]
mov r1, #4
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r0, [sp, #8]
bl FreeToHeap
_021DB0D4:
@@ -8105,7 +8105,7 @@ _021DB390:
lsl r3, r3, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r3, [r4]
mov r2, #0xb
add r0, r3, #0
@@ -8131,11 +8131,11 @@ _021DB390:
lsl r3, r3, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, [r4]
mov r1, #4
ldr r0, [r0, #0xc]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldrh r0, [r4, #0xa]
add sp, #0x1c
add r0, r0, #1
@@ -8176,11 +8176,11 @@ _021DB416:
lsl r3, r3, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, [r4]
mov r1, #4
ldr r0, [r0, #0xc]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #0
strh r0, [r4, #8]
ldrh r0, [r4, #0xa]
@@ -8223,11 +8223,11 @@ _021DB476:
lsl r3, r3, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, [r4]
mov r1, #4
ldr r0, [r0, #0xc]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, [r4, #4]
add sp, #0x1c
add r0, r0, #1
@@ -8322,14 +8322,14 @@ MOD15_021DB564: ; 0x021DB564
bne _021DB57E
add r0, r1, #0
add r1, r2, #0
- bl FUN_02017B48
+ bl Bg_GetXpos
str r0, [r4, #0xc]
mov r0, #0
b _021DB58A
_021DB57E:
add r0, r1, #0
add r1, r2, #0
- bl FUN_02017B54
+ bl Bg_GetYpos
str r0, [r4, #0xc]
mov r0, #3
_021DB58A:
@@ -8416,7 +8416,7 @@ MOD15_021DB604: ; 0x021DB604
lsr r1, r1, #0x18
lsr r2, r2, #0x18
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldrh r0, [r4, #0x18]
sub r0, r0, #1
strh r0, [r4, #0x18]
@@ -8430,7 +8430,7 @@ _021DB632:
ldr r3, [r4, #0x10]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r4, pc}
thumb_func_start MOD15_021DB648
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index e9eedca1..480aa929 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -16,7 +16,7 @@ MOD16_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x25
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #4
mov r2, #0x25
@@ -168,7 +168,7 @@ _021D7630:
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x25
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
mov r1, #0x7f
bl FUN_020051EC
@@ -1065,7 +1065,7 @@ MOD16_021D7CC8: ; 0x021D7CC8
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r1, [r5, #0x14]
ldr r6, [r5, #0x1c]
add r0, r1, #0
@@ -1106,7 +1106,7 @@ MOD16_021D7CC8: ; 0x021D7CC8
lsl r1, r1, #0x18
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
_021D7D4C:
mov r0, #0x20
sub r3, r0, r4
@@ -1130,13 +1130,13 @@ _021D7D4C:
ldr r0, [r5]
lsr r1, r1, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
_021D7D7C:
ldr r1, [r5, #8]
ldr r0, [r5]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x1c]
add sp, #0x1c
add r0, r0, #1
@@ -2153,7 +2153,7 @@ MOD16_021D8534: ; 0x021D8534
lsl r1, r1, #2
str r0, [r5, r1]
add r0, r4, #0
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r5]
mov r1, #1
mov r0, #0
@@ -2162,7 +2162,7 @@ MOD16_021D8534: ; 0x021D8534
str r1, [sp, #0x18]
str r1, [sp, #0x1c]
add r0, sp, #0x10
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r5]
add r1, r4, #0
bl MOD16_021D8DC0
@@ -2330,7 +2330,7 @@ MOD16_021D86DC: ; 0x021D86DC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
mov r0, #0x55
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -3198,7 +3198,7 @@ _021D8CDC:
ldr r2, [r2, #0x14]
lsr r1, r1, #0x18
add r3, r4, #0
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
_021D8CF0:
add r0, r7, #0
bl FreeToHeap
@@ -3335,15 +3335,15 @@ MOD16_021D8DC0: ; 0x021D8DC0
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r6, _021D8F18 ; =0x021FF4F4
add r3, sp, #0x70
ldmia r6!, {r0, r1}
@@ -3358,18 +3358,18 @@ MOD16_021D8DC0: ; 0x021D8DC0
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -3387,15 +3387,15 @@ MOD16_021D8DC0: ; 0x021D8DC0
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r6, _021D8F20 ; =0x021FF4BC
add r3, sp, #0x38
ldmia r6!, {r0, r1}
@@ -3410,15 +3410,15 @@ MOD16_021D8DC0: ; 0x021D8DC0
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #5
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r6, _021D8F24 ; =0x021FF4A0
add r3, sp, #0x1c
ldmia r6!, {r0, r1}
@@ -3433,15 +3433,15 @@ MOD16_021D8DC0: ; 0x021D8DC0
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #6
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #6
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r6, _021D8F28 ; =0x021FF52C
add r3, sp, #0
ldmia r6!, {r0, r1}
@@ -3456,15 +3456,15 @@ MOD16_021D8DC0: ; 0x021D8DC0
str r0, [r3]
add r0, r5, #0
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #7
mov r1, #0x40
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0xa8
pop {r4, r5, r6, pc}
.align 2, 0
@@ -3481,22 +3481,22 @@ MOD16_021D8F2C: ; 0x021D8F2C
push {r4, lr}
add r4, r0, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD16_021D8F2C
@@ -3515,7 +3515,7 @@ MOD16_021D8F60: ; 0x021D8F60
ldr r0, [r4]
add r1, r4, #4
mov r2, #1
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #4
mov r1, #0
bl FillWindowPixelBuffer
@@ -3531,7 +3531,7 @@ MOD16_021D8F90: ; 0x021D8F90
add r0, r0, #4
bx r3
nop
-_021D8F98: .word FUN_02019178
+_021D8F98: .word RemoveWindow
thumb_func_end MOD16_021D8F90
thumb_func_start MOD16_021D8F9C
@@ -8445,7 +8445,7 @@ MOD16_021DB388: ; 0x021DB388
add r1, r7, #0
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
add r0, r7, #0
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
@@ -8457,7 +8457,7 @@ MOD16_021DB3BC: ; 0x021DB3BC
mov r1, #1
bx r3
nop
-_021DB3C4: .word FUN_020191A4
+_021DB3C4: .word WindowArray_dtor
thumb_func_end MOD16_021DB3BC
thumb_func_start MOD16_021DB3C8
@@ -11072,7 +11072,7 @@ MOD16_021DC598: ; 0x021DC598
beq _021DC5B4
bl MOD16_021DD9C8
ldr r0, _021DC618 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r4, r5, r6, pc}
_021DC5B4:
@@ -11082,7 +11082,7 @@ _021DC5B4:
add r1, r4, #0
bl MOD16_021DDAB4
ldr r0, _021DC618 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r4, r5, r6, pc}
_021DC5CA:
@@ -11101,7 +11101,7 @@ _021DC5CA:
add r1, r5, #0
bl MOD16_021DD9E0
ldr r0, _021DC618 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r4, r5, r6, pc}
_021DC5F6:
@@ -11429,7 +11429,7 @@ MOD16_021DC860: ; 0x021DC860
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r5]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -11454,12 +11454,12 @@ MOD16_021DC860: ; 0x021DC860
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r5]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD16_021DC860
@@ -11607,7 +11607,7 @@ MOD16_021DC958: ; 0x021DC958
bl DestroyMsgData
ldr r0, [r5]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -11669,7 +11669,7 @@ MOD16_021DCA2C: ; 0x021DCA2C
bl DestroyMsgData
ldr r0, [r5]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -13026,7 +13026,7 @@ MOD16_021DD530: ; 0x021DD530
add r5, r2, #0
str r1, [sp, #0x18]
add r4, r3, #0
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x10]
cmp r0, #0
bne _021DD576
@@ -13043,7 +13043,7 @@ MOD16_021DD530: ; 0x021DD530
str r4, [sp, #0x1c]
mov r7, #0xe
mov r5, #4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _021DD594
_021DD568:
mov r0, #3
@@ -13130,7 +13130,7 @@ _021DD5FE:
mov r1, #1
ldr r0, [r0]
mov r2, #3
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
_021DD60A:
add r0, r6, #0
pop {r4, r5, r6, pc}
@@ -13150,7 +13150,7 @@ MOD16_021DD610: ; 0x021DD610
ldr r0, [r0]
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_021DD62A:
mov r2, #1
lsl r2, r2, #0x1a
@@ -13354,7 +13354,7 @@ _021DD77E:
ldr r0, [r5]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
_021DD7B0:
add r0, r5, #0
add r1, r4, #0
@@ -13509,7 +13509,7 @@ _021DD8A8:
ldr r0, [r5]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
b _021DD8F6
_021DD8E0:
add r0, r7, #0
@@ -13688,7 +13688,7 @@ MOD16_021DD9F8: ; 0x021DD9F8
mov r1, #2
str r1, [r0, #0x20]
ldr r0, _021DDA28 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, pc}
_021DDA24:
@@ -13731,7 +13731,7 @@ _021DDA54:
add r1, r4, #0
bl MOD16_021D9CEC
ldr r0, _021DDAB0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -13832,7 +13832,7 @@ MOD16_021DDB0C: ; 0x021DDB0C
mov r0, #1
str r0, [r4, #0x20]
ldr r0, _021DDB54 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021DDB3C:
mov r0, #0
@@ -13873,7 +13873,7 @@ MOD16_021DDB58: ; 0x021DDB58
mov r0, #1
str r0, [r4, #0x20]
ldr r0, _021DDC28 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021DDB8C:
add r0, r4, #0
@@ -13898,7 +13898,7 @@ _021DDB9A:
mov r0, #1
str r0, [r4, #0x20]
ldr r0, _021DDC28 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021DDBC2:
add r0, r4, #0
@@ -14753,7 +14753,7 @@ MOD16_021DE1E0: ; 0x021DE1E0
bl MOD16_021DE594
mov r0, #7
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD16_021DE1E0
@@ -14774,7 +14774,7 @@ MOD16_021DE228: ; 0x021DE228
bl MOD16_021DE808
mov r0, #7
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
pop {r4, r5, r6, pc}
thumb_func_end MOD16_021DE228
@@ -14854,12 +14854,12 @@ _021DE2AC:
lsr r0, r0, #0x18
str r0, [sp, #8]
add r0, r6, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
add r0, r6, #0
mov r1, #6
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -15438,23 +15438,23 @@ MOD16_021DE788: ; 0x021DE788
lsr r0, r0, #0x18
str r0, [sp, #8]
add r0, r4, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
add r0, r4, #0
mov r1, #7
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r2, #0
add r3, r2, #0
add r0, r4, #0
mov r1, #7
sub r3, #0x78
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #7
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add sp, #0x14
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -15469,10 +15469,10 @@ MOD16_021DE808: ; 0x021DE808
mov r0, #7
mov r1, #0x40
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
pop {r4, pc}
thumb_func_end MOD16_021DE808
@@ -15502,7 +15502,7 @@ _021DE84C:
lsl r1, r1, #6
str r1, [r0, #0xc]
ldr r0, _021DE89C ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
b _021DE860
_021DE85C:
mov r0, #0
@@ -15606,19 +15606,19 @@ MOD16_021DE8D0: ; 0x021DE8D0
mov r1, #7
add r2, r6, #0
lsr r3, r3, #0x10
- bl FUN_0201AF08
+ bl ScheduleSetBgAffineRotation
ldr r0, [r4]
mov r1, #7
ldr r0, [r0]
mov r2, #9
mov r3, #0x80
- bl FUN_0201AF50
+ bl ScheduleSetBgAffinePos
ldr r0, [r4]
mov r1, #7
ldr r0, [r0]
mov r2, #0xc
mov r3, #0x68
- bl FUN_0201AF50
+ bl ScheduleSetBgAffinePos
ldrh r0, [r5, #0x28]
strh r0, [r5, #0x2a]
pop {r4, r5, r6, pc}
@@ -15658,19 +15658,19 @@ _021DE95E:
mov r1, #7
mov r2, #0
lsr r3, r3, #0x10
- bl FUN_0201AF08
+ bl ScheduleSetBgAffineRotation
ldr r0, [r4]
mov r1, #7
ldr r0, [r0]
mov r2, #9
mov r3, #0x80
- bl FUN_0201AF50
+ bl ScheduleSetBgAffinePos
ldr r0, [r4]
mov r1, #7
ldr r0, [r0]
mov r2, #0xc
mov r3, #0x68
- bl FUN_0201AF50
+ bl ScheduleSetBgAffinePos
ldr r0, [r7, #0x1c]
ldr r0, [r0, #0xc]
cmp r0, #0
@@ -16364,7 +16364,7 @@ _021DEDF2:
mov r0, #0x20
str r0, [r4, #0x34]
ldr r0, _021DEEA0 ; =0x000005FF
- bl FUN_020054C8
+ bl PlaySE
b _021DEE9A
_021DEE10:
ldr r0, [r4, #0x34]
@@ -16645,11 +16645,11 @@ MOD16_021DEFF8: ; 0x021DEFF8
ldr r0, [r0]
add r4, r2, #0
ldr r6, [sp, #0x18]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r5]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r5]
mov r1, #0
add r0, r0, #4
@@ -16657,7 +16657,7 @@ MOD16_021DEFF8: ; 0x021DEFF8
ldr r0, [r5]
mov r1, #7
add r0, r0, #4
- bl FUN_0201AB24
+ bl SetWindowPaletteNum
add r0, r5, #0
bl MOD16_021DF17C
add r0, r5, #0
@@ -16710,10 +16710,10 @@ MOD16_021DEFF8: ; 0x021DEFF8
bl MOD16_021DF7C8
mov r0, #1
add r1, r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end MOD16_021DEFF8
@@ -16733,7 +16733,7 @@ MOD16_021DF0BC: ; 0x021DF0BC
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
@@ -16741,13 +16741,13 @@ MOD16_021DF0BC: ; 0x021DF0BC
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_0201AB24
+ bl SetWindowPaletteNum
mov r0, #1
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD16_021DF0BC
@@ -17304,7 +17304,7 @@ MOD16_021DF514: ; 0x021DF514
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r0, [sp, #0x10]
bl FreeToHeap
cmp r7, #3
@@ -17361,13 +17361,13 @@ _021DF584:
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #3
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD16_021DF514
@@ -17855,7 +17855,7 @@ _021DF92E:
bl FillWindowPixelBuffer
ldr r0, [r4]
add r0, r0, #4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_021DF94C:
ldr r2, [r6, #0x34]
mov r1, #4
@@ -17903,10 +17903,10 @@ MOD16_021DF970: ; 0x021DF970
bl String_dtor
mov r0, #1
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -17921,10 +17921,10 @@ MOD16_021DF9C0: ; 0x021DF9C0
add r4, r1, #0
add r1, r0, #0
add r6, r2, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r5]
mov r1, #0
add r0, r0, #4
@@ -18761,13 +18761,13 @@ MOD16_021DFFE0: ; 0x021DFFE0
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #6
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -24474,7 +24474,7 @@ _021E28EA:
mov r1, #0
bl MOD16_021DEC40
ldr r0, _021E298C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _021E2982
_021E28FA:
ldr r0, [r4, #8]
@@ -24485,7 +24485,7 @@ _021E28FA:
mov r1, #0
bl MOD16_021DEBA4
ldr r0, _021E298C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _021E2982
_021E2914:
ldr r0, [r4, #8]
@@ -24496,7 +24496,7 @@ _021E2914:
mov r1, #1
bl MOD16_021DEBA4
ldr r0, _021E298C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _021E2982
_021E292E:
ldr r0, [r4, #8]
@@ -24507,7 +24507,7 @@ _021E292E:
mov r1, #2
bl MOD16_021DEBA4
ldr r0, _021E298C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0
add r0, #0x88
@@ -24522,7 +24522,7 @@ _021E2950:
mov r1, #3
bl MOD16_021DEBA4
ldr r0, _021E298C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _021E2982
_021E296A:
add r0, r5, #0
@@ -24534,7 +24534,7 @@ _021E296A:
mov r1, #1
bl MOD16_021DEC40
ldr r0, _021E298C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E2982:
ldr r0, _021E2990 ; =0x0000FFFF
add r5, #0x80
@@ -24593,7 +24593,7 @@ _021E29D2:
cmp r4, r0
beq _021E29EE
ldr r0, _021E29F8 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r6, #8]
add r1, r4, #0
bl MOD16_021DEBC0
@@ -24671,7 +24671,7 @@ _021E2A56:
cmp r4, r0
beq _021E2A72
ldr r0, _021E2A7C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r6, #8]
add r1, r4, #0
bl MOD16_021DEBDC
@@ -24747,7 +24747,7 @@ _021E2ADE:
mov r0, #1
str r0, [r5, #0x20]
ldr r0, _021E2B00 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E2AE8:
cmp r4, #0x64
beq _021E2AF6
@@ -24823,7 +24823,7 @@ _021E2B5C:
mov r0, #0
str r0, [r5, #0x20]
ldr r0, _021E2B7C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E2B66:
cmp r4, #0x64
beq _021E2B74
@@ -24884,7 +24884,7 @@ MOD16_021E2B84: ; 0x021E2B84
add r0, r2, r1
str r0, [r5]
ldr r0, _021E2C24 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E2BE4:
mov r1, #0
@@ -24896,7 +24896,7 @@ _021E2BE4:
mov r2, #0
bl MOD16_021DEBF8
ldr r0, _021E2C24 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _021E2C1A
_021E2C00:
mov r1, #1
@@ -24908,7 +24908,7 @@ _021E2C00:
mov r2, #1
bl MOD16_021DEBF8
ldr r0, _021E2C24 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E2C1A:
mov r0, #0
add r5, #0x88
@@ -25003,7 +25003,7 @@ _021E2C9C:
cmp r4, r0
beq _021E2CB8
ldr r0, _021E2CC0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r6, #8]
add r1, r4, #0
bl MOD16_021DEC24
@@ -25958,7 +25958,7 @@ MOD16_021E3348: ; 0x021E3348
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r7, #0
bl FreeToHeap
ldr r1, [r6]
@@ -25989,7 +25989,7 @@ MOD16_021E3348: ; 0x021E3348
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r7, #0
bl FreeToHeap
_021E33E6:
@@ -26021,7 +26021,7 @@ _021E33E6:
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r7, #0
bl FreeToHeap
_021E342A:
@@ -26053,7 +26053,7 @@ _021E342A:
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r7, #0
bl FreeToHeap
_021E346E:
@@ -26085,14 +26085,14 @@ _021E346E:
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
_021E34B2:
ldr r0, [r5]
mov r1, #3
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -26968,7 +26968,7 @@ MOD16_021E3B70: ; 0x021E3B70
ldr r0, [r4]
mov r1, #8
add r0, r0, #4
- bl FUN_0201AB24
+ bl SetWindowPaletteNum
add sp, #4
pop {r3, r4, r5, r6, pc}
nop
@@ -26989,7 +26989,7 @@ MOD16_021E3BC8: ; 0x021E3BC8
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, _021E3C10 ; =0x000007F4
ldr r0, [r5, r0]
bl FreeToHeap
@@ -27008,7 +27008,7 @@ MOD16_021E3BC8: ; 0x021E3BC8
str r1, [r5, r0]
ldr r0, [r4]
add r0, r0, #4
- bl FUN_0201AB24
+ bl SetWindowPaletteNum
pop {r3, r4, r5, pc}
.align 2, 0
_021E3C10: .word 0x000007F4
@@ -28428,13 +28428,13 @@ MOD16_021E4634: ; 0x021E4634
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #6
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -28792,7 +28792,7 @@ MOD16_021E4938: ; 0x021E4938
cmp r1, #0
bne _021E495C
ldr r0, _021E4960 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
str r0, [r4, #0x20]
ldr r0, _021E4964 ; =gMain + 0x40
@@ -29605,7 +29605,7 @@ MOD16_021E4EE4: ; 0x021E4EE4
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD16_021E4EE4
@@ -29649,7 +29649,7 @@ MOD16_021E4F1C: ; 0x021E4F1C
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -29674,7 +29674,7 @@ MOD16_021E4F1C: ; 0x021E4F1C
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -29700,7 +29700,7 @@ MOD16_021E4F1C: ; 0x021E4F1C
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -29726,13 +29726,13 @@ MOD16_021E4F1C: ; 0x021E4F1C
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #3
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -31637,7 +31637,7 @@ _021E5E30:
mov r0, #1
str r0, [r5, #4]
ldr r0, _021E5ED0 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -31837,13 +31837,13 @@ MOD16_021E5FA4: ; 0x021E5FA4
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #3
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -34314,7 +34314,7 @@ MOD16_021E71A8: ; 0x021E71A8
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
pop {r3, r4, r5, pc}
thumb_func_end MOD16_021E71A8
@@ -34357,7 +34357,7 @@ MOD16_021E71D0: ; 0x021E71D0
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -34382,7 +34382,7 @@ MOD16_021E71D0: ; 0x021E71D0
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -34408,7 +34408,7 @@ MOD16_021E71D0: ; 0x021E71D0
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -34434,13 +34434,13 @@ MOD16_021E71D0: ; 0x021E71D0
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #3
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -36326,7 +36326,7 @@ _021E80FA:
mov r3, #0
bl MOD16_021E89D4
ldr r0, _021E8224 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021E8112:
ldr r1, [r4, #0x38]
@@ -36355,7 +36355,7 @@ _021E8132:
mov r3, #1
bl MOD16_021E89D4
ldr r0, _021E8224 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021E814A:
ldr r1, [r4, #0x38]
@@ -36381,7 +36381,7 @@ _021E8168:
mov r3, #2
bl MOD16_021E89D4
ldr r0, _021E8224 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021E8180:
ldr r1, [r4, #0x38]
@@ -36407,7 +36407,7 @@ _021E819E:
mov r3, #3
bl MOD16_021E89D4
ldr r0, _021E8224 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021E81B6:
ldr r1, [r4, #0x38]
@@ -36433,7 +36433,7 @@ _021E81D4:
mov r3, #4
bl MOD16_021E89D4
ldr r0, _021E8224 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021E81EC:
ldr r1, [r4, #0x38]
@@ -36459,7 +36459,7 @@ _021E820A:
mov r3, #5
bl MOD16_021E89D4
ldr r0, _021E8224 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
_021E8220:
pop {r3, r4, r5, pc}
nop
@@ -36577,7 +36577,7 @@ MOD16_021E82B8: ; 0x021E82B8
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -36603,7 +36603,7 @@ MOD16_021E82B8: ; 0x021E82B8
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -36629,13 +36629,13 @@ MOD16_021E82B8: ; 0x021E82B8
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #6
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -37558,7 +37558,7 @@ _021E8A9A:
add r1, r4, #0
bl MOD16_021E8B7C
ldr r0, _021E8AB8 ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
_021E8AB6:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -38663,7 +38663,7 @@ MOD16_021E92D0: ; 0x021E92D0
ldr r0, [r5]
mov r1, #2
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
pop {r3, r4, r5, pc}
.align 2, 0
thumb_func_end MOD16_021E92D0
@@ -38728,13 +38728,13 @@ _021E932E:
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #2
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD16_021E92F8
@@ -39650,7 +39650,7 @@ _021E9A12:
add r0, r4, #0
bl MOD16_021E9014
ldr r0, _021E9AF8 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9A20:
ldr r2, [r4, #8]
@@ -39663,7 +39663,7 @@ _021E9A20:
add r1, r6, #0
bl MOD16_021EA08C
ldr r0, _021E9AFC ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9A3E:
ldr r2, [r4, #8]
@@ -39676,7 +39676,7 @@ _021E9A3E:
add r1, r6, #0
bl MOD16_021EA08C
ldr r0, _021E9AFC ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9A5C:
ldr r2, [r4, #8]
@@ -39689,7 +39689,7 @@ _021E9A5C:
add r1, r6, #0
bl MOD16_021EA08C
ldr r0, _021E9AFC ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9A7A:
ldr r2, [r4, #8]
@@ -39704,7 +39704,7 @@ _021E9A7A:
add r1, r6, #0
bl MOD16_021EA08C
ldr r0, _021E9AFC ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9A9C:
ldr r0, [r5, #0x10]
@@ -39714,7 +39714,7 @@ _021E9A9C:
cmp r0, #2
beq _021E9AAE
ldr r0, _021E9AF8 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E9AAE:
mov r0, #1
str r0, [r5, #0x10]
@@ -39732,7 +39732,7 @@ _021E9AB4:
add r1, r6, #0
bl MOD16_021EA08C
ldr r0, _021E9AFC ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9AD6:
ldr r0, [r5, #0x10]
@@ -39746,7 +39746,7 @@ _021E9AD6:
cmp r0, #2
beq _021E9AF2
ldr r0, _021E9AF8 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E9AF2:
mov r0, #0
str r0, [r5, #0x10]
@@ -39800,7 +39800,7 @@ MOD16_021E9B3C: ; 0x021E9B3C
ldr r0, [r4]
mov r1, #5
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
pop {r3, r4, r5, pc}
thumb_func_end MOD16_021E9B3C
@@ -39868,13 +39868,13 @@ _021E9B9E:
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #5
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD16_021E9B60
@@ -40205,7 +40205,7 @@ MOD16_021E9E34: ; 0x021E9E34
mov r0, #1
str r0, [r5, #0x2c]
ldr r0, _021E9E60 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021E9E58:
pop {r3, r4, r5, pc}
nop
@@ -40390,7 +40390,7 @@ _021E9FAC:
mov r0, #2
str r0, [r4, #0xc]
ldr r0, _021EA06C ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9FC6:
ldr r2, [r5, #8]
@@ -40402,7 +40402,7 @@ _021E9FC6:
mov r0, #2
str r0, [r4, #0x10]
ldr r0, _021EA06C ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9FE0:
ldr r2, [r5, #8]
@@ -40414,7 +40414,7 @@ _021E9FE0:
mov r0, #2
str r0, [r4, #0x14]
ldr r0, _021EA06C ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021E9FFA:
ldr r2, [r5, #8]
@@ -40428,14 +40428,14 @@ _021E9FFA:
mov r0, #2
str r0, [r4, #0x18]
ldr r0, _021EA06C ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021EA018:
ldr r0, [r5, #8]
cmp r0, #2
beq _021EA066
ldr r0, _021EA070 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021EA026:
ldr r2, [r5, #8]
@@ -40449,14 +40449,14 @@ _021EA026:
mov r0, #2
str r0, [r4, #0x1c]
ldr r0, _021EA06C ; =0x0000068B
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021EA044:
ldr r0, [r5, #8]
cmp r0, #2
beq _021EA066
ldr r0, _021EA070 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_021EA052:
add r0, r5, #0
@@ -40466,7 +40466,7 @@ _021EA052:
mov r0, #2
str r0, [r4, #0x20]
ldr r0, _021EA070 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021EA066:
pop {r4, r5, r6, pc}
.align 2, 0
@@ -41560,13 +41560,13 @@ MOD16_021EA7F0: ; 0x021EA7F0
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #3
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -41582,7 +41582,7 @@ MOD16_021EA858: ; 0x021EA858
ldr r0, [r0]
mov r1, #1
add r3, r2, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r1, #0
mov r0, #1
lsl r0, r0, #8
@@ -41597,11 +41597,11 @@ MOD16_021EA858: ; 0x021EA858
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4]
mov r1, #0
add r0, r0, #4
- bl FUN_0201AB24
+ bl SetWindowPaletteNum
add sp, #8
pop {r4, pc}
thumb_func_end MOD16_021EA858
@@ -42135,10 +42135,10 @@ _021EAC8A:
ldr r3, [r5, r3]
mov r1, #1
mov r2, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r4]
add r0, r0, #4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0xcb
ldr r1, [r6, #4]
lsl r0, r0, #2
@@ -42156,7 +42156,7 @@ MOD16_021EACB0: ; 0x021EACB0
ldr r0, [r4]
mov r1, #9
add r0, r0, #4
- bl FUN_0201AB24
+ bl SetWindowPaletteNum
mov r0, #0xca
mov r2, #0x97
lsl r0, r0, #2
@@ -43255,7 +43255,7 @@ _021EB4DC:
eor r1, r2
bl MOD16_021EC060
ldr r0, _021EB4F4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021EB4F0:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -43352,7 +43352,7 @@ _021EB57A:
ldrh r0, [r1, #0x1c]
str r0, [r4, #0x38]
ldr r0, _021EB640 ; =0x000005F7
- bl FUN_020054C8
+ bl PlaySE
pop {r4, pc}
_021EB5A2:
mov r0, #0xb
@@ -43364,7 +43364,7 @@ _021EB5A2:
ldrh r0, [r1, #0x1c]
str r0, [r4, #0x38]
ldr r0, _021EB640 ; =0x000005F7
- bl FUN_020054C8
+ bl PlaySE
pop {r4, pc}
_021EB5BA:
ldr r0, [r4, #0x4c]
@@ -43594,13 +43594,13 @@ MOD16_021EB724: ; 0x021EB724
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #6
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5]
mov r1, #0
str r1, [sp]
@@ -43634,30 +43634,30 @@ MOD16_021EB724: ; 0x021EB724
str r0, [sp, #8]
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #7
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5]
mov r2, #0
add r3, r2, #0
ldr r0, [r0]
mov r1, #7
sub r3, #0x30
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r5]
mov r2, #3
add r3, r2, #0
ldr r0, [r0]
mov r1, #7
sub r3, #0x13
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #7
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
add sp, #0x14
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD16_021EB724
@@ -43669,14 +43669,14 @@ MOD16_021EB80C: ; 0x021EB80C
ldr r0, [r4]
mov r1, #6
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4]
mov r1, #7
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #7
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
pop {r4, pc}
.align 2, 0
thumb_func_end MOD16_021EB80C
@@ -44241,7 +44241,7 @@ MOD16_021EBC98: ; 0x021EBC98
cmp r1, r0
beq _021EBCBE
ldr r0, _021EBCC0 ; =0x000005F7
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r4, #0x5c]
asr r0, r1, #1
lsr r0, r0, #0x1e
@@ -44379,19 +44379,19 @@ _021EBD70:
mov r1, #7
mov r2, #0
lsr r3, r3, #0x10
- bl FUN_0201AF08
+ bl ScheduleSetBgAffineRotation
ldr r0, [r4]
mov r1, #7
ldr r0, [r0]
mov r2, #9
mov r3, #0x83
- bl FUN_0201AF50
+ bl ScheduleSetBgAffinePos
ldr r0, [r4]
mov r1, #7
ldr r0, [r0]
mov r2, #0xc
mov r3, #0x63
- bl FUN_0201AF50
+ bl ScheduleSetBgAffinePos
str r6, [r5, #0x48]
pop {r4, r5, r6, pc}
thumb_func_end MOD16_021EBD58
@@ -45517,7 +45517,7 @@ MOD16_021EC574: ; 0x021EC574
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
bl MOD16_021ECA2C
pop {r3, r4, r5, pc}
@@ -45562,13 +45562,13 @@ MOD16_021EC5A8: ; 0x021EC5A8
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #3
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -46884,7 +46884,7 @@ _021ED006:
cmp r0, #0
beq _021ED03C
ldr r0, _021ED040 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
str r0, [r4, #4]
ldr r2, [r4]
@@ -46898,7 +46898,7 @@ _021ED022:
cmp r0, #1
beq _021ED03C
ldr r0, _021ED040 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
str r0, [r4, #4]
ldr r2, [r4]
@@ -47021,13 +47021,13 @@ MOD16_021ED0D0: ; 0x021ED0D0
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #6
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -47524,7 +47524,7 @@ _021ED4EC:
str r1, [r0, #0x14]
_021ED4FA:
ldr r0, _021ED508 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021ED500:
pop {r3, pc}
nop
@@ -48269,7 +48269,7 @@ MOD16_021EDA3C: ; 0x021EDA3C
ldr r0, [r4]
mov r1, #1
ldr r0, [r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0xc]
mov r1, #0
bl FUN_02013EB0
@@ -48319,13 +48319,13 @@ MOD16_021EDA7C: ; 0x021EDA7C
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #3
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -50510,13 +50510,13 @@ MOD16_021EEB50: ; 0x021EEB50
str r0, [sp, #8]
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4]
mov r1, #6
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -51352,20 +51352,20 @@ MOD16_021EF218: ; 0x021EF218
mov r1, #1
str r0, [r2]
add r0, r5, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
mov r1, #1
add r2, sp, #0x38
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r3, _021EF2F4 ; =0x021FF770
add r2, sp, #0x1c
ldmia r3!, {r0, r1}
@@ -51378,29 +51378,29 @@ MOD16_021EF218: ; 0x021EF218
mov r1, #2
str r0, [r2]
add r0, r5, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
mov r1, #2
add r2, sp, #0x1c
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
add r1, r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
add r0, r5, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r3, _021EF2F8 ; =0x021FF7A8
add r2, sp, #0
ldmia r3!, {r0, r1}
@@ -51413,20 +51413,20 @@ MOD16_021EF218: ; 0x021EF218
mov r1, #3
str r0, [r2]
add r0, r5, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
mov r1, #3
add r2, sp, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x54
pop {r4, r5, pc}
.align 2, 0
@@ -51440,13 +51440,13 @@ MOD16_021EF2FC: ; 0x021EF2FC
push {r4, lr}
add r4, r0, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD16_021EF2FC
@@ -51470,7 +51470,7 @@ MOD16_021EF318: ; 0x021EF318
add r1, r4, #0
mov r2, #1
str r3, [sp, #0x10]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -51486,12 +51486,12 @@ MOD16_021EF318: ; 0x021EF318
MOD16_021EF358: ; 0x021EF358
push {r4, lr}
add r4, r0, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
pop {r4, pc}
thumb_func_end MOD16_021EF358
@@ -52092,7 +52092,7 @@ MOD16_021EF790: ; 0x021EF790
lsr r0, r0, #0x18
str r0, [sp, #8]
add r0, r5, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -52116,7 +52116,7 @@ MOD16_021EF790: ; 0x021EF790
lsr r0, r0, #0x18
str r0, [sp, #8]
add r0, r5, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -52141,7 +52141,7 @@ MOD16_021EF790: ; 0x021EF790
lsr r0, r0, #0x18
str r0, [sp, #8]
add r0, r5, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r6, #0
bl FreeToHeap
str r4, [sp]
@@ -52166,12 +52166,12 @@ MOD16_021EF790: ; 0x021EF790
lsr r0, r0, #0x18
str r0, [sp, #8]
add r0, r5, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
add r0, r5, #0
mov r1, #3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD16_021EF790
@@ -52214,12 +52214,12 @@ MOD16_021EF8A8: ; 0x021EF8A8
lsr r0, r0, #0x18
str r0, [sp, #8]
add r0, r4, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
bl FreeToHeap
add r0, r4, #0
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index 955741b3..7e32e1c9 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -464,7 +464,7 @@ MOD17_021D77D4: ; 0x021D77D4
add r0, r4, #0
bl MOD17_021D80CC
mov r0, #0xe
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x38]
add r0, r4, #0
bl MOD17_021D7F34
@@ -860,7 +860,7 @@ MOD17_021D7AE4: ; 0x021D7AE4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x38]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r0, [r4, #0x20]
bl FUN_020081C4
bl FUN_02009F80
@@ -973,20 +973,20 @@ MOD17_021D7B94: ; 0x021D7B94
mov r1, #2
str r0, [r2]
ldr r0, [r5, #0x38]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r5, #0x38]
mov r1, #2
add r2, sp, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r5, #0x38]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x1c
pop {r4, r5, pc}
nop
@@ -1016,12 +1016,12 @@ MOD17_021D7BE4: ; 0x021D7BE4
thumb_func_start MOD17_021D7C10
MOD17_021D7C10: ; 0x021D7C10
- ldr r3, _021D7C18 ; =FUN_020178A0
+ ldr r3, _021D7C18 ; =FreeBgTilemapBuffer
ldr r0, [r0, #0x38]
mov r1, #2
bx r3
.align 2, 0
-_021D7C18: .word FUN_020178A0
+_021D7C18: .word FreeBgTilemapBuffer
thumb_func_end MOD17_021D7C10
thumb_func_start MOD17_021D7C1C
@@ -1112,7 +1112,7 @@ MOD17_021D7CC0: ; 0x021D7CC0
add r4, r0, #0
bl MOD17_021D80CC
mov r0, #0xe
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x38]
add r0, r4, #0
bl MOD17_021D7F34
@@ -1136,7 +1136,7 @@ MOD17_021D7CD8: ; 0x021D7CD8
MOD17_021D7CF0: ; 0x021D7CF0
push {r3, lr}
ldr r0, [r0, #0x38]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
bl FUN_02009F80
pop {r3, pc}
.align 2, 0
@@ -1244,7 +1244,7 @@ MOD17_021D7DB0: ; 0x021D7DB0
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
@@ -1466,15 +1466,15 @@ MOD17_021D7F34: ; 0x021D7F34
str r0, [r3]
ldr r0, [r4, #0x38]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0xe
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4, #0x38]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D8048 ; =0x021DE2BC
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -1489,15 +1489,15 @@ MOD17_021D7F34: ; 0x021D7F34
str r0, [r3]
ldr r0, [r4, #0x38]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0xe
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4, #0x38]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D804C ; =0x021DE2F4
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -1512,15 +1512,15 @@ MOD17_021D7F34: ; 0x021D7F34
str r0, [r3]
ldr r0, [r4, #0x38]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #0xe
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4, #0x38]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D8050 ; =0x021DE284
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -1535,15 +1535,15 @@ MOD17_021D7F34: ; 0x021D7F34
str r0, [r3]
ldr r0, [r4, #0x38]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0xe
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4, #0x38]
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D8054 ; =0x021DE310
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -1558,15 +1558,15 @@ MOD17_021D7F34: ; 0x021D7F34
str r0, [r3]
ldr r0, [r4, #0x38]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #5
mov r1, #0x20
mov r2, #0
mov r3, #0xe
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4, #0x38]
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x8c
pop {r4, r5, pc}
nop
@@ -1583,19 +1583,19 @@ MOD17_021D8058: ; 0x021D8058
add r4, r0, #0
ldr r0, [r4, #0x38]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x38]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x38]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x38]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x38]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021D8058
@@ -2042,12 +2042,12 @@ MOD17_021D83E4: ; 0x021D83E4
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D84D8 ; =0x000006D8
add r0, r4, #0
mov r2, #0xd
@@ -2472,7 +2472,7 @@ _021D8780:
ldr r0, _021D8810 ; =0x000006A8
mov r1, #1
ldr r0, [r4, r0]
- bl FUN_020191A4
+ bl WindowArray_dtor
add r0, r4, #0
bl MOD17_021D92AC
ldr r0, _021D8814 ; =0x0000048C
@@ -2511,9 +2511,9 @@ _021D87F0:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
nop
@@ -2532,12 +2532,12 @@ MOD17_021D8818: ; 0x021D8818
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D897C ; =0x000006D8
add r0, r5, #0
mov r2, #0xd
@@ -2878,7 +2878,7 @@ _021D8B04:
_021D8B0A:
bl MOD17_021D9800
ldr r0, _021D8C7C ; =0x00000643
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -2947,7 +2947,7 @@ _021D8B86:
str r0, [r4]
mov r0, #0x1a
lsl r0, r0, #6
- bl FUN_020054C8
+ bl PlaySE
_021D8B9E:
ldr r0, _021D8C90 ; =0x0000048C
add r0, r5, r0
@@ -2970,7 +2970,7 @@ _021D8BBC:
str r0, [r4]
mov r0, #0x1a
lsl r0, r0, #6
- bl FUN_020054C8
+ bl PlaySE
_021D8BD4:
add r0, r5, #0
bl MOD17_021D9BE8
@@ -3009,7 +3009,7 @@ _021D8C04:
add r3, r6, #0
bl FUN_0200E1D0
ldr r0, _021D8C94 ; =0x00000684
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -3080,7 +3080,7 @@ MOD17_021D8C9C: ; 0x021D8C9C
ldr r0, _021D8D58 ; =0x000006A8
mov r1, #1
ldr r0, [r4, r0]
- bl FUN_020191A4
+ bl WindowArray_dtor
add r0, r4, #0
bl MOD17_021D92AC
ldr r0, _021D8D5C ; =0x0000048C
@@ -3119,9 +3119,9 @@ _021D8D30:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
bl FUN_02083404
bl FUN_02033ED0
mov r0, #1
@@ -3428,7 +3428,7 @@ MOD17_021D8F64: ; 0x021D8F64
ldr r0, [r4, #0x38]
add r2, r1, #0
sub r3, #0x13
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
@@ -3993,7 +3993,7 @@ _021D93C4:
ldr r0, [r0, #0x38]
mov r2, #3
mov r3, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r4]
bl MOD17_021D9848
ldr r0, [r4, #0xc]
@@ -4125,7 +4125,7 @@ _021D94B2:
ldr r0, [r0, #0x38]
mov r1, #1
sub r3, #0x2b
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r4, #0xc]
add sp, #4
add r0, r0, #1
@@ -4424,25 +4424,25 @@ _021D9728:
ldr r0, [r0, #0x38]
add r2, r1, #0
add r3, r4, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5]
mov r1, #1
ldr r0, [r0, #0x38]
mov r2, #2
add r3, r4, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5]
mov r1, #2
ldr r0, [r0, #0x38]
mov r2, #5
add r3, r6, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5]
mov r1, #1
ldr r0, [r0, #0x38]
mov r2, #5
add r3, r6, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
_021D9766:
ldr r0, [r5, #8]
add r0, r0, #1
@@ -4462,17 +4462,17 @@ MOD17_021D9778: ; 0x021D9778
add r4, r0, #0
ldr r0, [r4, #0x38]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
ldr r0, [r4, #0x38]
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #3
ldr r0, [r4, #0x38]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
mov r1, #0
bl MOD17_021D9B74
@@ -4524,7 +4524,7 @@ MOD17_021D9800: ; 0x021D9800
bl MOD17_021D9BCC
ldr r0, [r4, #0x38]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
bl MOD17_021D8F64
mov r0, #0
@@ -4555,17 +4555,17 @@ MOD17_021D9848: ; 0x021D9848
add r4, r0, #0
ldr r0, [r4, #0x38]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #0
ldr r0, [r4, #0x38]
mov r1, #3
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #3
ldr r0, [r4, #0x38]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x38]
mov r1, #0x19
str r0, [sp]
@@ -4624,7 +4624,7 @@ MOD17_021D98D0: ; 0x021D98D0
bl MOD17_021D9B6C
ldr r0, [r4, #0x38]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
pop {r4, pc}
.align 2, 0
_021D98EC: .word 0x000006A4
@@ -4687,7 +4687,7 @@ MOD17_021D9918: ; 0x021D9918
str r0, [sp, #0x10]
ldr r0, [r5, #0x38]
ldr r1, [r5, r1]
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _021D99D4 ; =0x000006A8
mov r1, #0xf
ldr r0, [r5, r0]
@@ -4903,10 +4903,10 @@ MOD17_021D9B30: ; 0x021D9B30
add r4, r0, #0
ldr r0, _021D9B48 ; =0x000006A8
ldr r0, [r4, r0]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, _021D9B48 ; =0x000006A8
ldr r0, [r4, r0]
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
nop
_021D9B48: .word 0x000006A8
@@ -8146,7 +8146,7 @@ _021DB192:
_021DB19A:
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD17_021DB680
_021DB1A8:
@@ -8257,7 +8257,7 @@ _021DB220:
ldrsh r0, [r4, r0]
str r0, [sp, #8]
ldr r0, _021DB394 ; =0x00000683
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0xc]
ldr r2, _021DB398 ; =0x00000151
mov r1, #0x1a
@@ -8283,7 +8283,7 @@ _021DB2AC:
mov r0, #0
str r0, [r4, #0x30]
ldr r0, _021DB39C ; =0x000005EA
- bl FUN_020054C8
+ bl PlaySE
b _021DB388
_021DB2C2:
ldr r0, [r4, #0x10]
@@ -8340,7 +8340,7 @@ _021DB32C:
str r0, [sp, #8]
_021DB338:
ldr r0, _021DB394 ; =0x00000683
- bl FUN_020054C8
+ bl PlaySE
b _021DB350
_021DB340:
ldr r0, [r4, #0x10]
@@ -8348,7 +8348,7 @@ _021DB340:
add r2, sp, #8
bl MOD17_021DBBB8
ldr r0, _021DB3A0 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
_021DB350:
add r0, r4, #0
add r0, #0x20
@@ -8431,7 +8431,7 @@ MOD17_021DB3D4: ; 0x021DB3D4
mov r0, #0
str r0, [r4, #0x30]
ldr r0, _021DB400 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD17_021DB534
_021DB3FE:
@@ -9758,7 +9758,7 @@ MOD17_021DBD4C: ; 0x021DBD4C
ldr r0, [r4]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #0
mov r2, #0x2c
@@ -9919,11 +9919,11 @@ _021DBE62:
str r0, [r4, #0x40]
ldr r0, [r6]
ldr r1, [r6, #0x1c]
- bl FUN_02017B48
+ bl Bg_GetXpos
str r0, [r4, #0x44]
ldr r0, [r6]
ldr r1, [r6, #0x1c]
- bl FUN_02017B54
+ bl Bg_GetYpos
str r0, [r4, #0x48]
mov r0, #0x80
str r0, [r5, #0x28]
@@ -10076,7 +10076,7 @@ MOD17_021DBF94: ; 0x021DBF94
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #2
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r1, [r4]
ldr r3, [r4, #0x40]
ldr r0, [r1]
@@ -10084,7 +10084,7 @@ MOD17_021DBF94: ; 0x021DBF94
mov r2, #5
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r3, r4, r5, pc}
_021DBFC8:
ldr r0, [r1]
@@ -10093,7 +10093,7 @@ _021DBFC8:
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r1, [r4]
ldr r3, [r4, #0x48]
ldr r0, [r1]
@@ -10101,7 +10101,7 @@ _021DBFC8:
mov r2, #3
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r4]
add r1, r4, #4
bl MOD17_021DBD04
@@ -10150,7 +10150,7 @@ MOD17_021DC004: ; 0x021DC004
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
lsl r0, r6, #0x18
lsr r0, r0, #0x18
str r0, [sp]
@@ -10171,11 +10171,11 @@ MOD17_021DC004: ; 0x021DC004
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
lsl r1, r5, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD17_021DC004
@@ -10278,7 +10278,7 @@ MOD17_021DC11C: ; 0x021DC11C
ldr r0, [r4]
ldr r3, [r3, #0x10]
lsr r1, r1, #0x18
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r5, #0
bl FUN_0200CAB4
ldr r0, [r4, #8]
@@ -10466,7 +10466,7 @@ _021DC28C:
add r0, r5, #0
bl MOD17_021DC2F8
ldr r0, _021DC2BC ; =0x0000067D
- bl FUN_020054C8
+ bl PlaySE
b _021DC2B0
_021DC29E:
cmp r6, #2
@@ -11241,7 +11241,7 @@ MOD17_021DC870: ; 0x021DC870
bne _021DC87E
lsl r0, r1, #0x10
lsr r0, r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
_021DC87E:
pop {r3, pc}
thumb_func_end MOD17_021DC870
@@ -11279,7 +11279,7 @@ _021DC898:
add r1, r4, #0
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -11308,7 +11308,7 @@ MOD17_021DC8F8: ; 0x021DC8F8
mov r1, #1
bx r3
nop
-_021DC900: .word FUN_020191A4
+_021DC900: .word WindowArray_dtor
thumb_func_end MOD17_021DC8F8
thumb_func_start MOD17_021DC904
@@ -11814,7 +11814,7 @@ MOD17_021DCC68: ; 0x021DCC68
str r0, [sp, #0x10]
ldr r1, [r5]
add r0, r7, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r5]
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -11848,7 +11848,7 @@ MOD17_021DCCE0: ; 0x021DCCE0
mov r1, #1
bx r3
nop
-_021DCCE8: .word FUN_020191A4
+_021DCCE8: .word WindowArray_dtor
thumb_func_end MOD17_021DCCE0
thumb_func_start MOD17_021DCCEC
@@ -12495,7 +12495,7 @@ MOD17_021DD1DC: ; 0x021DD1DC
add r1, #0x30
bl MOD17_021DD2E0
ldr r0, _021DD200 ; =0x00000683
- bl FUN_020054C8
+ bl PlaySE
_021DD1FC:
pop {r3, pc}
nop
@@ -13038,13 +13038,13 @@ MOD17_021DD5A0: ; 0x021DD5A0
mov r1, #2
mov r2, #0
sub r3, r3, r4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x10
ldr r0, [r5, #0x38]
mov r1, #2
mov r2, #3
sub r3, r3, r6
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_021DD5E8:
mov r0, #0x23
lsl r0, r0, #4
@@ -13780,12 +13780,12 @@ MOD17_021DDB58: ; 0x021DDB58
mov r0, #3
mov r1, #0xd
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #1
mov r0, #3
mov r1, #0xe
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x65
add r0, r5, #0
lsl r1, r1, #2
@@ -13990,9 +13990,9 @@ MOD17_021DDCF4: ; 0x021DDCF4
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0xd
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0xe
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -14066,7 +14066,7 @@ _021DDD96:
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r5, #0x4c]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r1, [sp, #0x10]
mov r2, #0
ldrh r0, [r1]
@@ -14083,12 +14083,12 @@ _021DDD96:
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r5, #0x4c]
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r6, #0
bl FreeToHeap
ldr r0, [r5, #0x4c]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD17_021DDD54
@@ -14260,25 +14260,25 @@ MOD17_021DDF1C: ; 0x021DDF1C
ldr r1, [r4, r1]
mov r2, #3
mov r3, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
mov r1, #0xa0
mov r2, #0xe
bl FUN_02002ED0
mov r0, #3
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
add r1, r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r1, #3
ldr r0, [r4, #0x4c]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add sp, #0x14
pop {r3, r4, pc}
.align 2, 0
@@ -14291,16 +14291,16 @@ MOD17_021DDF84: ; 0x021DDF84
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x19
lsl r0, r0, #4
ldr r0, [r4, r0]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
pop {r4, pc}
.align 2, 0
thumb_func_end MOD17_021DDF84
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 9b2fdf67..074ed1e0 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -1476,7 +1476,7 @@ _0223A194:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _0223A2AC ; =0x02250010
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -1491,15 +1491,15 @@ _0223A194:
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x1d
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0223A2B0 ; =0x0225002C
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -1514,15 +1514,15 @@ _0223A194:
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0x1d
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0223A2B4 ; =0x02250048
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -1537,15 +1537,15 @@ _0223A194:
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0x1d
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0223A2B8 ; =0x02250064
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -1560,25 +1560,25 @@ _0223A194:
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #0x1d
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x1d
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x1d
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0xa8
pop {r3, r4, r5, pc}
nop
@@ -1627,7 +1627,7 @@ _0223A2EE:
mov r1, #2
bl FUN_02020130
ldr r0, _0223A3C8 ; =0x000006A4
- bl FUN_020054C8
+ bl PlaySE
b _0223A33C
_0223A30A:
cmp r4, #0
@@ -1640,7 +1640,7 @@ _0223A30A:
mov r1, #3
bl FUN_02020130
ldr r0, _0223A3CC ; =0x000006A2
- bl FUN_020054C8
+ bl PlaySE
b _0223A33C
_0223A326:
ldr r0, _0223A3C4 ; =0x02251380
@@ -1651,7 +1651,7 @@ _0223A326:
mov r1, #4
bl FUN_02020130
ldr r0, _0223A3D0 ; =0x000006A3
- bl FUN_020054C8
+ bl PlaySE
_0223A33C:
ldr r0, _0223A3C4 ; =0x02251380
ldr r1, [r0]
@@ -1747,9 +1747,9 @@ MOD18_0223A3D4: ; 0x0223A3D4
mov r0, #3
mov r1, #0x1d
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #0x1d
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r4, r0, #0
ldr r0, _0223A4CC ; =0x02251380
add r1, r4, #0
@@ -1764,13 +1764,13 @@ MOD18_0223A3D4: ; 0x0223A3D4
bl MOD18_0223A188
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
str r0, [sp]
mov r0, #0x1d
@@ -1843,7 +1843,7 @@ MOD18_0223A4D8: ; 0x0223A4D8
mov r1, #1
ldr r0, [r0]
ldr r0, [r0, #4]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _0223A55C ; =0x02251380
ldr r0, [r0]
ldr r0, [r0, #4]
@@ -1868,16 +1868,16 @@ MOD18_0223A4D8: ; 0x0223A4D8
bl MOD18_0223B6A4
mov r0, #0
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
bl MOD18_0223C37C
bl MOD18_0223C570
ldr r0, _0223A55C ; =0x02251380
@@ -1898,22 +1898,22 @@ MOD18_0223A560: ; 0x0223A560
mov r1, #0
ldr r0, [r0]
ldr r0, [r0, #4]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _0223A648 ; =0x02251380
mov r1, #1
ldr r0, [r0]
ldr r0, [r0, #4]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _0223A648 ; =0x02251380
mov r1, #2
ldr r0, [r0]
ldr r0, [r0, #4]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _0223A648 ; =0x02251380
mov r1, #3
ldr r0, [r0]
ldr r0, [r0, #4]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _0223A648 ; =0x02251380
ldr r1, [r0]
mov r0, #0x57
@@ -1984,7 +1984,7 @@ _0223A5F8:
ldr r0, [r0]
str r1, [r0, #4]
mov r0, #0x1d
- bl FUN_020168D0
+ bl DestroyHeap
bl MOD18_0223D638
ldr r1, _0223A648 ; =0x02251380
ldr r1, [r1]
@@ -2150,7 +2150,7 @@ _0223A780:
mov r0, #0
str r0, [r4, #8]
ldr r0, _0223AB00 ; =0x00000621
- bl FUN_020054C8
+ bl PlaySE
mov r0, #8
add sp, #0xc
str r0, [r4]
@@ -2301,7 +2301,7 @@ _0223A8A2:
lsl r1, r1, #4
str r0, [r2, r1]
ldr r0, _0223AB10 ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x3c
str r0, [r4, #0x4c]
mov r0, #0xf
@@ -2586,7 +2586,7 @@ _0223AB28:
mov r3, #0
bl FUN_0200E1D0
ldr r0, _0223AC18 ; =0x000006A1
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x18
add sp, #0xc
str r0, [r4]
@@ -3460,7 +3460,7 @@ MOD18_0223B1A8: ; 0x0223B1A8
mov r1, #1
str r2, [sp, #0x14]
str r3, [sp, #0x18]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r1, [r5, r6]
str r0, [sp, #0x34]
ldr r0, [sp, #0x38]
@@ -3612,7 +3612,7 @@ _0223B2E6:
cmp r0, #1
bne _0223B3DA
ldr r0, _0223B440 ; =0x000006A7
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
mov r4, #0
str r4, [sp, #0x18]
@@ -4109,7 +4109,7 @@ MOD18_0223B6A4: ; 0x0223B6A4
sub sp, #0xc
mov r1, #2
str r0, [sp]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
str r0, [sp, #8]
mov r2, #0
mov r0, #4
@@ -4167,7 +4167,7 @@ _0223B6C0:
blt _0223B6BA
ldr r0, [sp]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0xc
pop {r4, r5, r6, r7, pc}
nop
@@ -4536,7 +4536,7 @@ MOD18_0223B9BC: ; 0x0223B9BC
ldr r3, [r3]
sub r2, r2, #2
strb r1, [r3, r2]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r1, _0223B9E8 ; =0x02250874
mov r2, #0x30
mov r3, #0x36
@@ -4593,7 +4593,7 @@ _0223BA26:
_0223BA36:
add r0, r5, #0
mov r1, #1
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r1, _0223BB40 ; =0x02251380
add r6, r0, #0
ldr r2, [r1]
@@ -4617,7 +4617,7 @@ _0223BA52:
mov r3, #0x36
bl MOD18_0223B948
ldr r0, _0223BB50 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0223BA82
_0223BA74:
cmp r4, #3
@@ -4670,7 +4670,7 @@ _0223BAC4:
mov r3, #0x36
bl MOD18_0223B948
ldr r0, _0223BB50 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0223BAF4
_0223BAE6:
cmp r4, #3
@@ -4712,7 +4712,7 @@ _0223BAF4:
_0223BB34:
add r0, r5, #0
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_0223BB3C:
add sp, #0xc
pop {r3, r4, r5, r6, pc}
@@ -4757,7 +4757,7 @@ MOD18_0223BB7C: ; 0x0223BB7C
ldr r1, _0223BC48 ; =0x000009E7
ldrb r4, [r2, r1]
mov r1, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r5, r0, #0
asr r0, r4, #1
lsr r0, r0, #0x1e
@@ -4842,7 +4842,7 @@ _0223BBD8:
_0223BC38:
ldr r0, [sp]
mov r1, #0
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -5554,7 +5554,7 @@ _0223C1B4:
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
lsl r1, r4, #0x18
ldr r6, [r7]
ldr r3, _0223C1EC ; =0x000009EA
@@ -5562,7 +5562,7 @@ _0223C1B4:
ldrsb r3, [r6, r3]
lsr r1, r1, #0x18
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r4, r4, #1
cmp r4, #3
blt _0223C1B4
@@ -5670,7 +5670,7 @@ _0223C29A:
str r0, [r5, #0x14]
bne _0223C2AC
ldr r0, _0223C350 ; =0x000006A5
- bl FUN_020054C8
+ bl PlaySE
_0223C2AC:
ldr r0, _0223C338 ; =0x02251380
ldr r2, _0223C340 ; =gMain + 0x40
@@ -6173,7 +6173,7 @@ MOD18_0223C6CC: ; 0x0223C6CC
add r4, r0, #0
bl MOD18_0223C188
add r0, r4, #0
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
bl FUN_02009F80
pop {r4, pc}
@@ -6308,7 +6308,7 @@ MOD18_0223C7B0: ; 0x0223C7B0
cmp r1, #0x53
bls _0223C7CE
add r0, #0x43
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0223C7D0 ; =0x000005DE
mov r1, #0
strh r1, [r4, r0]
@@ -7254,7 +7254,7 @@ MOD18_0223CE68: ; 0x0223CE68
ldr r0, _0223CF24 ; =0x000004CC
strb r2, [r1, r0]
ldr r0, _0223CF28 ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
ldrb r1, [r4, #4]
ldrb r0, [r4, #5]
mov r5, #0x63
@@ -7504,7 +7504,7 @@ _0223D07E:
ldr r0, [sp]
bl MOD18_02249E98
ldr r0, _0223D0E4 ; =0x00000631
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0223D0DC ; =0x02251384
ldr r1, [r0]
ldr r0, _0223D0E0 ; =0x000004C8
@@ -7812,7 +7812,7 @@ MOD18_0223D2EC: ; 0x0223D2EC
cmp r0, #0x64
bls _0223D306
ldr r0, _0223D308 ; =0x00000621
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
strh r0, [r4, #2]
_0223D306:
@@ -12090,7 +12090,7 @@ MOD18_0223F360: ; 0x0223F360
mov r2, #1
bl MOD18_0224DCB8
ldr r0, _0223F400 ; =0x00000623
- bl FUN_020054C8
+ bl PlaySE
pop {r4, pc}
_0223F3A4:
cmp r0, #4
@@ -12474,7 +12474,7 @@ _0223F662:
strh r1, [r3, r0]
_0223F674:
ldr r0, _0223F6F4 ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
bl MOD18_0223D638
add r5, r0, #0
ldrb r0, [r4, #7]
@@ -12821,7 +12821,7 @@ _0223F926:
bl FUN_02026CB4
add r6, r0, #0
ldr r0, _0223FA64 ; =0x00000622
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _0223FA60 ; =0x022513A0
add r0, r4, #0
ldr r2, [r1, #4]
@@ -13338,7 +13338,7 @@ _0223FD12:
mov r0, #0x10
bl FUN_0204F774
ldr r0, _0223FD50 ; =0x00000609
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0223FD44 ; =0x022513A0
mov r2, #0
ldr r1, [r0, #4]
@@ -13997,7 +13997,7 @@ _02240190:
ldr r2, [r4, #0x18]
bl FUN_0204E214
ldr r0, _0224020C ; =0x0000065F
- bl FUN_020054C8
+ bl PlaySE
mov r0, #5
add sp, #8
str r0, [r4]
@@ -14341,7 +14341,7 @@ _02240442:
cmp r0, #0
bne _02240456
ldr r0, _0224045C ; =0x00000629
- bl FUN_020054C8
+ bl PlaySE
_02240456:
add sp, #0x24
pop {r4, r5, r6, r7, pc}
@@ -14378,7 +14378,7 @@ _02240480:
ldr r0, [r0, #4]
ldr r0, [r0, #0x40]
ldr r0, [r0, #8]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r3, #0
mov r1, #2
add r2, r3, #0
@@ -14390,7 +14390,7 @@ _022404A4:
blt _022404A4
mov r0, #2
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #4
mov r1, #0
bl GX_EngineAToggleLayers
@@ -14430,7 +14430,7 @@ MOD18_022404F4: ; 0x022404F4
mov r1, #2
add r6, r2, #0
mov r4, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r5, r0, #0
bne _02240512
add sp, #8
@@ -14450,7 +14450,7 @@ _02240512:
bl MOD18_02240388
ldr r0, [sp, #4]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_02240532:
ldrh r0, [r7]
mov r2, #0
@@ -14764,16 +14764,16 @@ _0224072E:
_02240774:
mov r0, #0
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r4]
add sp, #0x1c
add r0, r0, #1
@@ -14804,7 +14804,7 @@ _0224079E:
mov r0, #0
str r0, [r4, #0x1c]
ldr r0, _02240890 ; =0x00000661
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x1c
pop {r3, r4, pc}
_022407DE:
@@ -15289,7 +15289,7 @@ MOD18_02240B90: ; 0x02240B90
cmp r0, #0xa0
bls _02240BAE
ldr r0, _02240BB4 ; =0x00000621
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02240BB0 ; =0x000001E2
mov r1, #0
strh r1, [r4, r0]
@@ -15879,7 +15879,7 @@ MOD18_02241008: ; 0x02241008
mov r0, #0xe
str r0, [r1]
ldr r0, _02241034 ; =0x0000060B
- bl FUN_020054C8
+ bl PlaySE
_0224102C:
pop {r4, pc}
nop
@@ -16069,7 +16069,7 @@ _0224118C:
cmp r0, r5
beq _022411A6
ldr r0, _02241284 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
_022411A6:
str r5, [r4, #0x18]
mov r0, #0
@@ -17996,7 +17996,7 @@ _0224205A:
str r1, [r4, r0]
mov r0, #0x66
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
add sp, #0x10
pop {r4, pc}
_0224209A:
@@ -18485,7 +18485,7 @@ _0224240A:
cmp r1, r0
ble _022424B6
ldr r0, _0224258C ; =0x00000626
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02242590 ; =0x022513A0
lsl r4, r5, #2
ldr r0, [r0, #4]
@@ -19226,7 +19226,7 @@ _02242A20:
add r1, #0x11
strb r0, [r4, r1]
ldr r0, _02242D6C ; =0x0000065E
- bl FUN_020054C8
+ bl PlaySE
b _02242E6C
_02242A68:
sub r1, r0, #1
@@ -19282,7 +19282,7 @@ _02242A98:
add r0, r1, #5
strb r2, [r4, r0]
ldr r0, _02242D70 ; =0x0000065D
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02242D68 ; =0x022513A0
ldr r1, [r0, #4]
ldr r0, _02242D74 ; =0x00000B3B
@@ -19373,7 +19373,7 @@ _02242B22:
lsl r0, r0, #2
str r1, [r4, r0]
ldr r0, _02242D7C ; =0x00000627
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x46
lsl r0, r0, #2
ldr r1, [r4, r0]
@@ -19525,7 +19525,7 @@ _02242CAA:
b _02242DD2
_02242CB4:
ldr r0, _02242D80 ; =0x0000062A
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x11
add r0, #0xf8
@@ -20480,7 +20480,7 @@ _0224343A:
add r0, r0, #1
str r0, [r5, #0x24]
ldr r0, _02243538 ; =0x00000628
- bl FUN_020054C8
+ bl PlaySE
b _0224345C
_02243454:
add r0, r5, #0
@@ -21627,7 +21627,7 @@ _02243D2C:
bl GXx_SetMasterBrightness_
bl FUN_0204F7E4
ldr r0, _02243E0C ; =0x00000621
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _02243E10 ; =0x022513A0
mov r0, #0x20
ldr r1, [r1, #4]
@@ -22188,7 +22188,7 @@ _0224418A:
b _022442CA
_0224418C:
ldr r0, _02244314 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, sp, #0xc
ldrh r1, [r0, #2]
ldrh r0, [r0]
@@ -22328,7 +22328,7 @@ _0224428C:
tst r0, r1
beq _022442CA
ldr r0, _02244314 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, sp, #0xc
ldrh r3, [r0, #2]
ldrh r1, [r0]
@@ -22366,7 +22366,7 @@ _022442CA:
cmp r6, r0
beq _022442EA
ldr r0, _02244314 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_022442EA:
mov r0, #1
mvn r0, r0
@@ -22378,11 +22378,11 @@ _022442EA:
b _02244302
_022442FA:
ldr r0, _02244314 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02244308
_02244302:
ldr r0, _02244314 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02244308:
add r0, r4, #0
add sp, #0x10
@@ -22606,7 +22606,7 @@ _022444AC:
bl GX_EngineBToggleLayers
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r0, [r4]
add sp, #0x60
add r0, r0, #1
@@ -22711,10 +22711,10 @@ _02244588:
mov r0, #0x39
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [sp, #0x2c]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [sp, #0x2c]
bl MOD18_02244858
mov r0, #0xeb
@@ -23066,10 +23066,10 @@ MOD18_02244858: ; 0x02244858
push {r4, lr}
add r4, r0, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD18_02244858
@@ -23098,7 +23098,7 @@ MOD18_0224486C: ; 0x0224486C
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0
bl GX_EngineBToggleLayers
@@ -23116,7 +23116,7 @@ MOD18_0224486C: ; 0x0224486C
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0
bl GX_EngineBToggleLayers
@@ -23134,13 +23134,13 @@ MOD18_0224486C: ; 0x0224486C
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #8
mov r1, #0
bl GX_EngineBToggleLayers
add r0, r5, #0
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x40
mov r1, #0
str r0, [sp]
@@ -23180,7 +23180,7 @@ MOD18_0224486C: ; 0x0224486C
mov r1, #0x20
mov r2, #0
mov r3, #4
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
add r1, r4, #0
mov r2, #7
@@ -25585,7 +25585,7 @@ MOD18_02245B1C: ; 0x02245B1C
strb r0, [r3, #0xb]
add r0, r6, #0
add r2, r7, #0
- bl FUN_02019150
+ bl AddWindow
ldr r0, [sp, #0x14]
ldr r2, [sp, #8]
ldr r3, [sp, #0xc]
@@ -26866,7 +26866,7 @@ _02246580:
ldr r0, [r5, #0x68]
bl MOD18_0224484C
ldr r0, _02246850 ; =0x00000603
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0xc]
add r0, r0, #1
str r0, [r4, #0xc]
@@ -27078,7 +27078,7 @@ _0224672E:
add r3, r2, #0
bl MOD18_0224DCB8
ldr r0, _02246860 ; =0x00000604
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xc
str r0, [r4, #0xc]
b _02246848
@@ -27260,7 +27260,7 @@ _022468CC:
mov r1, #0x21
bl MOD18_0224DDE8
ldr r0, _02246AD0 ; =0x0000061E
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x38]
bl FUN_020553A0
add r1, r7, #0
@@ -28575,7 +28575,7 @@ _0224735C:
add r3, r2, #0
bl MOD18_0224DCB8
ldr r0, _0224740C ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
add sp, #0xc
str r0, [r4]
@@ -29508,7 +29508,7 @@ MOD18_02247A34: ; 0x02247A34
add r0, #0x28
strb r1, [r0]
ldr r0, _02247A9C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
bl MOD18_022479E4
@@ -29549,7 +29549,7 @@ MOD18_02247AA8: ; 0x02247AA8
add r1, #0xc
ldr r0, [r0, #8]
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _02247B54 ; =0x000003D9
add r0, #0xc
@@ -29675,7 +29675,7 @@ MOD18_02247BB8: ; 0x02247BB8
add r1, #0xc
ldr r0, [r0, #8]
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _02247C8C ; =0x000003D9
add r0, #0xc
@@ -29797,7 +29797,7 @@ _02247CDA:
pop {r3, r4, r5, r6, pc}
_02247CE0:
ldr r0, _02247D18 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, sp, #0
strb r4, [r0]
ldrh r1, [r5, #0x30]
@@ -29848,7 +29848,7 @@ MOD18_02247D1C: ; 0x02247D1C
add r1, #0xc
ldr r0, [r0, #8]
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _02247DCC ; =0x000003D9
add r0, #0xc
@@ -29949,7 +29949,7 @@ _02247E18:
pop {r3, r4, r5, r6, pc}
_02247E1E:
ldr r0, _02247E9C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r6, #0
add r1, r5, #0
bl MOD18_02247FC0
@@ -30036,7 +30036,7 @@ MOD18_02247EA0: ; 0x02247EA0
ldrb r0, [r4]
bl MOD18_022493A4
ldr r0, _02247EF4 ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
nop
_02247EF4: .word 0x000005E3
@@ -30123,7 +30123,7 @@ _02247F7C:
pop {r4, r5, r6, pc}
_02247F8E:
ldr r0, _02247FBC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD18_0224865C
add r0, r6, #0
@@ -30132,7 +30132,7 @@ _02247F8E:
b _02247FB6
_02247FA4:
ldr r0, _02247FBC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
blx r4
add r0, r6, #0
@@ -30162,10 +30162,10 @@ MOD18_02247FC0: ; 0x02247FC0
bl DestroyListMenu
add r0, r4, #0
add r0, #0xc
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0xc
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x1c]
bl ListMenuItems_dtor
mov r0, #0
@@ -31045,7 +31045,7 @@ MOD18_022486B8: ; 0x022486B8
bl FUN_02026CB4
bl FUN_02026B90
ldr r0, _0224873C ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x16
bl MOD18_022479BC
@@ -31138,10 +31138,10 @@ MOD18_02248784: ; 0x02248784
bl DestroyListMenu
add r0, r4, #0
add r0, #8
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #8
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x18]
bl ListMenuItems_dtor
mov r0, #0
@@ -31219,7 +31219,7 @@ MOD18_02248820: ; 0x02248820
ldr r0, [r5, #4]
mov r2, #3
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _022488E4 ; =0x000003D9
add r0, #8
@@ -31309,7 +31309,7 @@ MOD18_022488F0: ; 0x022488F0
cmp r6, r0
beq _02248916
ldr r0, _022489C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02248916:
bl FUN_020311F0
cmp r0, #0
@@ -31330,7 +31330,7 @@ _02248934:
mov r4, #0x33
_02248936:
ldr r0, _022489C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r7, #0
add r1, r5, #0
bl MOD18_02248784
@@ -32218,7 +32218,7 @@ MOD18_02248FEC: ; 0x02248FEC
cmp r4, r0
beq _02249008
ldr r0, _0224900C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02249008:
pop {r3, r4, r5, pc}
nop
@@ -32867,7 +32867,7 @@ MOD18_022494C8: ; 0x022494C8
add r5, r0, #0
ldr r0, _02249534 ; =0x000005FD
add r6, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #2
bl MOD18_0223E56C
mov r1, #0x25
@@ -32961,7 +32961,7 @@ MOD18_02249564: ; 0x02249564
ldr r0, [r0, #8]
mov r2, #3
mov r3, #0x14
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _02249678 ; =0x000003D9
add r0, #0x10
@@ -33051,7 +33051,7 @@ _022495EE:
str r0, [r5, #0x48]
add r0, r5, #0
add r0, #0x10
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
add r1, sp, #0x18
mov r2, #7
@@ -33399,7 +33399,7 @@ _02249916:
_02249936:
add r0, r4, #0
add r0, #0x10
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02249968
add r0, r4, #0
@@ -33408,10 +33408,10 @@ _02249936:
bl FUN_0200CCF8
ldrb r1, [r4, #0x14]
ldr r0, [r4, #0x10]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0
add r0, #0x10
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x40]
bl ListMenuItems_dtor
add r0, r4, #0
@@ -33480,7 +33480,7 @@ _022499A2:
add r1, #0x20
mov r2, #3
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _02249A5C ; =0x000003D9
add r0, #0x20
@@ -33557,7 +33557,7 @@ MOD18_02249A64: ; 0x02249A64
add r1, #0x24
ldrb r1, [r1]
ldr r0, [r4, #0x20]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x44]
bl ListMenuItems_dtor
mov r0, #0
@@ -33565,7 +33565,7 @@ MOD18_02249A64: ; 0x02249A64
_02249A8C:
add r0, r4, #0
add r0, #0x20
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02249AAA
add r0, r4, #0
@@ -33574,7 +33574,7 @@ _02249A8C:
bl FUN_0200CCF8
add r4, #0x20
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_02249AAA:
pop {r4, pc}
thumb_func_end MOD18_02249A64
@@ -33746,7 +33746,7 @@ MOD18_02249BA8: ; 0x02249BA8
ldr r0, [r5, #0xc]
mov r3, #0x13
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _02249CB8 ; =0x000003D9
add r0, #0x10
@@ -33971,7 +33971,7 @@ MOD18_02249DB8: ; 0x02249DB8
cmp r6, r0
beq _02249DE2
ldr r0, _02249E80 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02249DE2:
mov r0, #1
mvn r0, r0
@@ -33984,7 +33984,7 @@ _02249DE2:
pop {r4, r5, r6, pc}
_02249DF4:
ldr r0, _02249E80 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD18_02249A64
add r0, r5, #0
@@ -34007,7 +34007,7 @@ _02249E0E:
lsr r0, r0, #0x18
bl MOD18_0223EF60
ldr r0, _02249E8C ; =0x00000631
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02249E84 ; =0x00000246
mov r1, #3
strb r1, [r5, r0]
@@ -34016,7 +34016,7 @@ _02249E3A:
cmp r4, #2
bne _02249E7C
ldr r0, _02249E80 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02249E88 ; =0x022513F8
ldr r0, [r0]
ldrb r0, [r0, #5]
@@ -34213,7 +34213,7 @@ MOD18_02249F8C: ; 0x02249F8C
ldr r0, [r5, #0xc]
mov r3, #0x13
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224A0DC ; =0x000003D9
add r0, #0x10
@@ -34448,7 +34448,7 @@ MOD18_0224A1C0: ; 0x0224A1C0
cmp r6, r0
beq _0224A1EA
ldr r0, _0224A2A0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0224A1EA:
mov r0, #1
mvn r0, r0
@@ -34461,7 +34461,7 @@ _0224A1EA:
pop {r4, r5, r6, pc}
_0224A1FC:
ldr r0, _0224A2A0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD18_02249A64
add r0, r5, #0
@@ -34501,7 +34501,7 @@ _0224A25A:
cmp r4, #2
bne _0224A28C
ldr r0, _0224A2A0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224A2A8 ; =0x022513F8
ldr r0, [r0]
ldrb r0, [r0, #5]
@@ -34662,7 +34662,7 @@ MOD18_0224A360: ; 0x0224A360
ldr r0, [r5, #0xc]
mov r3, #0x13
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224A46C ; =0x000003D9
add r0, #0x10
@@ -34872,7 +34872,7 @@ MOD18_0224A550: ; 0x0224A550
cmp r6, r0
beq _0224A57A
ldr r0, _0224A694 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0224A57A:
mov r0, #1
mvn r0, r0
@@ -34885,7 +34885,7 @@ _0224A57A:
pop {r4, r5, r6, pc}
_0224A58C:
ldr r0, _0224A694 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD18_02249A64
add r0, r5, #0
@@ -34909,7 +34909,7 @@ _0224A5A6:
bl Sav2_Bag_get
add r6, r0, #0
ldr r0, _0224A694 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
lsl r1, r4, #0x10
add r0, r6, #0
lsr r1, r1, #0x10
@@ -34967,7 +34967,7 @@ _0224A64A:
cmp r4, #2
bne _0224A67E
ldr r0, _0224A694 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224A69C ; =0x022513F8
ldr r1, [r0]
ldr r0, [r1]
@@ -35600,7 +35600,7 @@ MOD18_0224AB08: ; 0x0224AB08
ldr r0, [r5, #0xc]
mov r3, #0x13
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224AC14 ; =0x000003D9
add r0, #0x10
@@ -35745,7 +35745,7 @@ _0224AC78:
pop {r3, r4, r5, pc}
_0224AC8A:
ldr r0, _0224ACF8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD18_02249AAC
b _0224ACF2
@@ -35814,7 +35814,7 @@ MOD18_0224AD04: ; 0x0224AD04
cmp r6, r0
beq _0224AD2E
ldr r0, _0224ADA8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0224AD2E:
mov r0, #1
mvn r0, r0
@@ -35827,7 +35827,7 @@ _0224AD2E:
pop {r4, r5, r6, pc}
_0224AD40:
ldr r0, _0224ADA8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD18_02249A64
add r0, r5, #0
@@ -35842,7 +35842,7 @@ _0224AD5A:
cmp r4, #2
bne _0224AD94
ldr r0, _0224ADA8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224ADB0 ; =0x022513F8
ldr r1, [r0]
ldr r0, [r1]
@@ -36347,7 +36347,7 @@ MOD18_0224B128: ; 0x0224B128
cmp r1, r0
bne _0224B15C
ldr r0, _0224B184 ; =0x0000060C
- bl FUN_020054C8
+ bl PlaySE
bl FUN_0204F7E4
add r0, r4, #0
bl MOD18_0224BD54
@@ -36528,7 +36528,7 @@ _0224B29E:
pop {r3, r4, r5, pc}
_0224B2AA:
ldr r0, _0224B344 ; =0x0000060E
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224B348 ; =0x00000246
mov r1, #2
strb r1, [r4, r0]
@@ -36570,28 +36570,28 @@ _0224B2F2:
b _0224B33E
_0224B308:
ldr r0, _0224B34C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224B348 ; =0x00000246
mov r1, #8
strb r1, [r4, r0]
b _0224B33E
_0224B316:
ldr r0, _0224B34C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224B348 ; =0x00000246
mov r1, #6
strb r1, [r4, r0]
b _0224B33E
_0224B324:
ldr r0, _0224B34C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224B348 ; =0x00000246
mov r1, #0x11
strb r1, [r4, r0]
b _0224B33E
_0224B332:
ldr r0, _0224B34C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224B348 ; =0x00000246
mov r1, #0x14
strb r1, [r4, r0]
@@ -36646,7 +36646,7 @@ _0224B374:
ldr r0, [r5, #0xc]
mov r3, #0x11
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224B460 ; =0x000003D9
add r0, #0x10
@@ -36769,7 +36769,7 @@ MOD18_0224B464: ; 0x0224B464
str r0, [sp, #0x10]
ldr r0, [r5, #0xc]
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224B55C ; =0x000003D9
add r0, #0x10
@@ -36898,7 +36898,7 @@ _0224B5A6:
pop {r3, r4, r5, pc}
_0224B5B0:
ldr r0, _0224B60C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224B610 ; =0x00000246
mov r1, #0
strb r1, [r5, r0]
@@ -37247,7 +37247,7 @@ _0224B874: ; jump table
.short _0224B946 - _0224B874 - 2 ; case 5
_0224B880:
ldr r0, _0224B978 ; =0x0000060D
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0
mov r0, #6
str r0, [sp]
@@ -37297,7 +37297,7 @@ _0224B8D8:
b _0224B970
_0224B8EE:
ldr r0, _0224B97C ; =0x0000060E
- bl FUN_020054C8
+ bl PlaySE
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -38073,7 +38073,7 @@ MOD18_0224BF84: ; 0x0224BF84
cmp r4, r0
beq _0224BFA2
ldr r0, _0224BFA8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0224BFA2:
pop {r3, r4, r5, pc}
.align 2, 0
@@ -38480,7 +38480,7 @@ _0224C288:
ldr r0, [r5, #0xc]
mov r3, #0x13
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224C414 ; =0x000003D9
add r0, #0x10
@@ -39102,7 +39102,7 @@ MOD18_0224C7D4: ; 0x0224C7D4
ldr r0, [r5, #0xc]
mov r3, #0x13
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224C934 ; =0x000003D9
add r0, #0x10
@@ -39250,7 +39250,7 @@ MOD18_0224C94C: ; 0x0224C94C
push {r4, lr}
add r4, r0, #0
add r0, #0x20
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _0224C96C
add r0, r4, #0
@@ -39259,7 +39259,7 @@ MOD18_0224C94C: ; 0x0224C94C
bl FUN_0200CCF8
add r0, r4, #0
add r0, #0x20
- bl FUN_02019178
+ bl RemoveWindow
_0224C96C:
add r0, r4, #0
bl MOD18_022498EC
@@ -39462,7 +39462,7 @@ MOD18_0224CADC: ; 0x0224CADC
sub sp, #0x14
add r4, r0, #0
add r0, #0x20
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0224CB1A
mov r0, #0xc
@@ -39479,7 +39479,7 @@ MOD18_0224CADC: ; 0x0224CADC
ldr r0, [r0, #8]
add r1, #0x20
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
ldr r2, _0224CB30 ; =0x000003D9
add r0, #0x20
@@ -39521,7 +39521,7 @@ MOD18_0224CB34: ; 0x0224CB34
ldr r0, [r0, #8]
add r1, #0x30
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224CBA8 ; =0x000003D9
add r0, #0x30
@@ -39560,7 +39560,7 @@ MOD18_0224CBAC: ; 0x0224CBAC
push {r4, lr}
add r4, r0, #0
add r0, #0x30
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _0224CBCC
add r0, r4, #0
@@ -39569,7 +39569,7 @@ MOD18_0224CBAC: ; 0x0224CBAC
bl FUN_0200CCF8
add r4, #0x30
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_0224CBCC:
pop {r4, pc}
.align 2, 0
@@ -39702,7 +39702,7 @@ _0224CC8E:
cmp r6, r0
beq _0224CCC8
ldr r0, _0224CF58 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0224CCC8:
mov r0, #1
mvn r0, r0
@@ -39717,7 +39717,7 @@ _0224CCD8:
b _0224CCF2
_0224CCDA:
ldr r0, _0224CF58 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
bl MOD18_0224C94C
@@ -39746,14 +39746,14 @@ _0224CD0C:
cmp r5, #0
ldr r0, _0224CF58 ; =0x000005DC
bne _0224CD24
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224CF50 ; =0x00000246
mov r1, #4
add sp, #8
strb r1, [r4, r0]
pop {r4, r5, r6, pc}
_0224CD24:
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224CF50 ; =0x00000246
mov r1, #0xb
add sp, #8
@@ -39798,7 +39798,7 @@ _0224CD48:
cmp r6, r0
beq _0224CD8C
ldr r0, _0224CF58 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0224CD8C:
mov r0, #1
mvn r0, r0
@@ -39823,7 +39823,7 @@ _0224CDA6:
b _0224CDCE
_0224CDB6:
ldr r0, _0224CF58 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #1
bl MOD18_0224C94C
@@ -39834,7 +39834,7 @@ _0224CDB6:
pop {r4, r5, r6, pc}
_0224CDCE:
ldr r0, _0224CF58 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224CF50 ; =0x00000246
mov r1, #0x12
strb r1, [r4, r0]
@@ -40051,7 +40051,7 @@ _0224CF92:
mov r0, #6
bl MOD18_0224CA58
ldr r0, _0224D1D4 ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224D1D8 ; =0x00000246
mov r1, #9
add sp, #8
@@ -40273,7 +40273,7 @@ _0224D14E:
mov r0, #7
bl MOD18_0224CA58
ldr r0, _0224D1D4 ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224D1D8 ; =0x00000246
mov r1, #9
add sp, #8
@@ -40374,7 +40374,7 @@ MOD18_0224D1F8: ; 0x0224D1F8
mov r1, #0
strb r1, [r6, r0]
ldr r0, _0224D2E0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224D2E4 ; =MOD18_0224CC04
ldr r2, _0224D2E8 ; =0x00002710
add r1, r6, #0
@@ -40739,10 +40739,10 @@ MOD18_0224D56C: ; 0x0224D56C
bl FUN_0200CCF8
add r0, r4, #0
add r0, #8
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #8
- bl FUN_02019178
+ bl RemoveWindow
ldr r1, [r4]
cmp r1, #0
beq _0224D596
@@ -40811,7 +40811,7 @@ MOD18_0224D5CC: ; 0x0224D5CC
add r1, #8
mov r2, #3
mov r3, #4
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
ldr r2, _0224D684 ; =0x000003D9
add r0, #8
@@ -40847,9 +40847,9 @@ _0224D64A:
bl MOD18_0224D364
add r0, r4, #0
add r0, #8
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _0224D690 ; =0x000005FD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224D694 ; =MOD18_0224D5B4
add r1, r4, #0
mov r2, #0xa
@@ -41315,7 +41315,7 @@ MOD18_0224DA00: ; 0x0224DA00
add r1, #8
mov r2, #3
mov r3, #4
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224DA9C ; =0x000003D9
add r0, #8
@@ -41343,10 +41343,10 @@ MOD18_0224DA00: ; 0x0224DA00
add r1, r4, #0
bl MOD18_0224D814
ldr r0, _0224DAA4 ; =0x000005FD
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #8
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
bl DestroyMsgData
add r0, r5, #0
@@ -41367,10 +41367,10 @@ MOD18_0224DAA8: ; 0x0224DAA8
bl FUN_0200CCF8
add r0, r4, #0
add r0, #8
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #8
- bl FUN_02019178
+ bl RemoveWindow
ldr r1, [r4]
cmp r1, #0
beq _0224DACE
@@ -41568,7 +41568,7 @@ MOD18_0224DC08: ; 0x0224DC08
bl MOD18_0223D688
add r0, r5, #0
add r0, #8
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0224DC4C
mov r0, #0x13
@@ -41586,7 +41586,7 @@ MOD18_0224DC08: ; 0x0224DC08
add r1, #8
mov r2, #3
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
_0224DC4C:
add r0, r5, #0
add r0, #8
@@ -41732,10 +41732,10 @@ _0224DD4C:
bl FUN_0200D0E0
add r0, r5, #0
add r0, #8
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
add r0, #8
- bl FUN_02019178
+ bl RemoveWindow
b _0224DD76
_0224DD6C:
add r0, r5, #0
@@ -42303,7 +42303,7 @@ MOD18_0224E0CC: ; 0x0224E0CC
ldr r0, [r5]
mov r3, #0x13
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
mov r3, #1
add r1, r5, #0
str r3, [sp]
@@ -42319,7 +42319,7 @@ MOD18_0224E0CC: ; 0x0224E0CC
ldr r0, [r5]
mov r2, #3
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r2, _0224E1FC ; =0x000003D9
add r0, r5, #4
mov r1, #1
@@ -42449,23 +42449,23 @@ _0224E22A:
pop {r3, r4, r5, pc}
_0224E23A:
ldr r0, _0224E268 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
str r4, [r5, #0x3c]
mov r0, #2
add r5, #0x38
strb r0, [r5]
ldr r0, _0224E268 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_0224E250:
ldr r0, _0224E268 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
str r4, [r5, #0x3c]
mov r0, #2
add r5, #0x38
strb r0, [r5]
ldr r0, _0224E268 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
nop
_0224E268: .word 0x000005DC
@@ -42490,12 +42490,12 @@ MOD18_0224E26C: ; 0x0224E26C
bl FUN_0200CCF8
ldrb r1, [r4, #8]
ldr r0, [r4, #4]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #4
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x14
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x24]
bl ListMenuItems_dtor
pop {r4, pc}
@@ -42673,7 +42673,7 @@ _0224E3CC:
add r5, #0x42
strb r0, [r5]
ldr r0, _0224E3EC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
_0224E3DC:
str r4, [r5, #0x44]
@@ -42681,7 +42681,7 @@ _0224E3DC:
add r5, #0x42
strb r0, [r5]
ldr r0, _0224E3EC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0224E3EC: .word 0x000005DC
@@ -42761,7 +42761,7 @@ _0224E454:
ldr r0, [r5]
mov r3, #0x13
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
mov r3, #1
add r1, r5, #0
str r3, [sp]
@@ -42777,7 +42777,7 @@ _0224E454:
ldr r0, [r5]
mov r2, #3
ldr r0, [r0, #8]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
ldr r2, _0224E688 ; =0x000003D9
add r0, #8
@@ -43018,13 +43018,13 @@ MOD18_0224E6A8: ; 0x0224E6A8
bl FUN_0200CCF8
ldrb r1, [r4, #0xc]
ldr r0, [r4, #8]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r4, #0
add r0, #8
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x18
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x28]
bl ListMenuItems_dtor
ldr r0, [r4, #4]
@@ -43085,7 +43085,7 @@ MOD18_0224E73C: ; 0x0224E73C
cmp r4, r0
beq _0224E75C
ldr r0, _0224E760 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0224E75C:
pop {r3, r4, r5, pc}
nop
@@ -43226,7 +43226,7 @@ _0224E848: ; jump table
_0224E858:
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD18_0224E01C
ldr r3, _0224E940 ; =0x00000504
add r1, r6, #0
@@ -43775,7 +43775,7 @@ _0224ECB6:
add r2, r7, #0
bl FUN_02025EDC
ldr r0, _0224EDD0 ; =0x000005FE
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x50]
bl MOD18_02247138
mov r0, #0xb
@@ -43797,7 +43797,7 @@ _0224ECB6:
b _0224EDBA
_0224ED26:
ldr r0, _0224EDD8 ; =0x00000602
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xc
bl MOD18_02247118
str r0, [r4, #8]
@@ -43973,7 +43973,7 @@ _0224EE52:
beq _0224EEB4
add r1, #0xe9
add r0, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
lsl r0, r0, #0x10
sub r6, r6, r0
@@ -43990,7 +43990,7 @@ _0224EEB4:
beq _0224EED6
add r1, #0xe9
add r0, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
lsl r0, r0, #0x10
add r6, r6, r0
@@ -44007,7 +44007,7 @@ _0224EED6:
beq _0224EEF8
add r1, #0xe9
add r0, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
lsl r0, r0, #0x10
sub r5, r5, r0
@@ -44024,7 +44024,7 @@ _0224EEF8:
beq _0224EF1A
add r1, #0xe9
add r0, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
lsl r0, r0, #0x10
add r5, r5, r0
@@ -44203,7 +44203,7 @@ _0224F04E:
_0224F06E:
mov r0, #0x19
lsl r0, r0, #6
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xe
bl MOD18_02247118
str r0, [r4, #8]
@@ -44231,7 +44231,7 @@ _0224F09E:
bl FUN_02026CC4
add r5, r0, #0
ldr r0, _0224F15C ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [sp, #4]
add r0, r5, #0
bl FUN_02025F30
@@ -44520,7 +44520,7 @@ _0224F2BE:
beq _0224F320
add r1, #0xe9
add r0, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
lsl r0, r0, #0x10
sub r6, r6, r0
@@ -44537,7 +44537,7 @@ _0224F320:
beq _0224F342
add r1, #0xe9
add r0, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
lsl r0, r0, #0x10
add r6, r6, r0
@@ -44554,7 +44554,7 @@ _0224F342:
beq _0224F364
add r1, #0xe9
add r0, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
lsl r0, r0, #0x10
sub r4, r4, r0
@@ -44571,7 +44571,7 @@ _0224F364:
beq _0224F386
add r1, #0xe9
add r0, r1, #0
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
lsl r0, r0, #0x10
add r4, r4, r0
@@ -44729,7 +44729,7 @@ _0224F4A2:
add r1, #0x5c
bl MOD18_0224F8CC
ldr r0, _0224F524 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0224F51C ; =0x000004FC
ldr r0, [r5, r0]
bl MOD18_0224FBF8
@@ -44977,7 +44977,7 @@ _0224F692:
add r2, #0x5c
bl MOD18_0224F890
ldr r0, _0224F764 ; =0x000005FE
- bl FUN_020054C8
+ bl PlaySE
ldr r2, _0224F768 ; =0x000004FC
ldr r0, [r4, #0x3c]
ldr r1, [r4, #0x40]
@@ -44996,7 +44996,7 @@ _0224F692:
b _0224F750
_0224F6E0:
ldr r0, _0224F76C ; =0x00000602
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xc
bl MOD18_02247118
str r0, [r4, #8]
@@ -47317,4 +47317,3 @@ MOD18_022513F8: ; 0x022513F8
.global MOD18_022513FC
MOD18_022513FC: ; 0x022513FC
.space 0x4
-
diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s
deleted file mode 100644
index 8f3a28ce..00000000
--- a/arm9/modules/19/asm/module_19.s
+++ /dev/null
@@ -1,111 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .text
- .balign 4, 0
-
- thumb_func_start MOD19_02252440
-MOD19_02252440: ; 0x02252440
- push {r4, lr}
- sub sp, #0x10
- add r4, r0, #0
- mov r0, #3
- mov r1, #8
- lsl r2, r0, #0xf
- bl FUN_0201681C
- mov r0, #0
- bl GXS_SetGraphicsMode
- mov r0, #0x80
- bl GX_SetBankForSubBG
- mov r0, #1
- lsl r0, r0, #8
- bl GX_SetBankForSubOBJ
- ldr r2, _022524E0 ; =0x04001000
- ldr r0, _022524E4 ; =0xFFCFFFEF
- ldr r1, [r2]
- mov r3, #0
- and r1, r0
- mov r0, #0x10
- orr r0, r1
- str r0, [r2]
- ldr r2, _022524E8 ; =0x02252508
- add r0, r4, #0
- mov r1, #4
- bl FUN_02016C18
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- mov r0, #1
- str r0, [sp, #8]
- mov r0, #8
- str r0, [sp, #0xc]
- mov r0, #0xc
- mov r1, #0xa
- add r2, r4, #0
- mov r3, #4
- bl GfGfxLoader_LoadCharData
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- mov r0, #1
- str r0, [sp, #8]
- mov r0, #8
- str r0, [sp, #0xc]
- mov r0, #0xc
- mov r1, #0xb
- add r2, r4, #0
- mov r3, #4
- bl GfGfxLoader_LoadScrnData
- mov r0, #0x20
- str r0, [sp]
- mov r0, #8
- str r0, [sp, #4]
- mov r0, #0xc
- add r1, r0, #0
- mov r2, #4
- mov r3, #0
- bl GfGfxLoader_GXLoadPal
- ldr r2, _022524E0 ; =0x04001000
- ldr r0, _022524EC ; =0xFFFF1FFF
- ldr r1, [r2]
- and r0, r1
- str r0, [r2]
- ldr r1, [r2]
- ldr r0, _022524F0 ; =0xFFFFE0FF
- and r1, r0
- lsr r0, r2, #0x12
- orr r0, r1
- str r0, [r2]
- add sp, #0x10
- pop {r4, pc}
- .align 2, 0
-_022524E0: .word 0x04001000
-_022524E4: .word 0xFFCFFFEF
-_022524E8: .word MOD19_02252508
-_022524EC: .word 0xFFFF1FFF
-_022524F0: .word 0xFFFFE0FF
- thumb_func_end MOD19_02252440
-
- thumb_func_start MOD19_022524F4
-MOD19_022524F4: ; 0x022524F4
- push {r3, lr}
- mov r1, #4
- bl FUN_020178A0
- mov r0, #8
- bl FUN_020168D0
- pop {r3, pc}
- thumb_func_end MOD19_022524F4
-
- thumb_func_start MOD19_02252504
-MOD19_02252504: ; 0x02252504
- mov r0, #1
- bx lr
- thumb_func_end MOD19_02252504
-
- .rodata
- .global MOD19_02252508
-MOD19_02252508: ; 0x02252508
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .data
- .bss
diff --git a/arm9/modules/19/src/module_19.c b/arm9/modules/19/src/module_19.c
new file mode 100644
index 00000000..1fc6197e
--- /dev/null
+++ b/arm9/modules/19/src/module_19.c
@@ -0,0 +1,47 @@
+#include "global.h"
+#include "heap.h"
+#include "gx.h"
+#include "gf_gfx_loader.h"
+#include "bg_window.h"
+#include "graphic/poketch.naix"
+
+const struct BgTemplate MOD19_02252508 = {
+ .x = 0,
+ .y = 0,
+ .bufferSize = 0x800,
+ .baseTile = 0x000,
+ .size = GF_BG_SCR_SIZE_256x256,
+ .colorMode = GF_BG_CLR_4BPP,
+ .screenBase = 12,
+ .charBase = 0,
+ .priority = 0,
+ .areaOver = 0,
+ .mosaic = 0
+};
+
+THUMB_FUNC void MOD19_02252440(struct BgConfig * bgConfig)
+{
+ CreateHeap(3, 8, 0x18000);
+ GXS_SetGraphicsMode(GX_BGMODE_0);
+ GX_SetBankForSubBG(0x80);
+ GX_SetBankForSubOBJ(0x100);
+ GXS_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_1D_32K);
+ InitBgFromTemplate(bgConfig, GF_BG_LYR_SUB_0, &MOD19_02252508, GF_BG_TYPE_TEXT);
+ GfGfxLoader_LoadCharData(NARC_GRAPHIC_POKETCH, NARC_poketch_narc_0010_NCGR_lz, bgConfig, GF_BG_LYR_SUB_0, 0, 0, TRUE, 8);
+ GfGfxLoader_LoadScrnData(NARC_GRAPHIC_POKETCH, NARC_poketch_narc_0011_NSCR_lz, bgConfig, GF_BG_LYR_SUB_0, 0, 0, TRUE, 8);
+ GfGfxLoader_GXLoadPal(NARC_GRAPHIC_POKETCH, NARC_poketch_narc_0012_NCLR, GF_BG_LYR_SUB_0, 0x00, 0x20, 8);
+ GXS_SetVisibleWnd(GX_WNDMASK_NONE);
+ GXS_SetVisiblePlane(GX_PLANEMASK_BG0);
+}
+
+THUMB_FUNC void MOD19_022524F4(struct BgConfig * bgConfig)
+{
+ FreeBgTilemapBuffer(bgConfig, GF_BG_LYR_SUB_0);
+ DestroyHeap(8);
+}
+
+THUMB_FUNC BOOL MOD19_02252504(struct BgConfig * bgConfig)
+{
+#pragma unused(bgConfig)
+ return TRUE;
+}
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
index a77f95fc..c957045f 100644
--- a/arm9/modules/20/asm/module_20.s
+++ b/arm9/modules/20/asm/module_20.s
@@ -21,11 +21,11 @@ MOD20_02252448: ; 0x02252448
mov r1, #7
lsl r2, r0, #0xe
add r7, r3, #0
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #3
mov r1, #8
lsl r2, r0, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #7
mov r1, #0x60
bl AllocFromHeap
@@ -238,9 +238,9 @@ _022525C6:
add r0, r5, #0
bl FUN_0200CAB4
mov r0, #7
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #8
- bl FUN_020168D0
+ bl DestroyHeap
pop {r3, r4, r5, pc}
.align 2, 0
_022525EC: .word MOD20_022544CC
@@ -889,7 +889,7 @@ _02252A50:
cmp r7, #1
bne _02252AEA
ldr r0, _02252AEC ; =0x0000066E
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, r6, r7, pc}
_02252A6A:
mov r4, #0
@@ -1017,7 +1017,7 @@ MOD20_02252B28: ; 0x02252B28
bne _02252B46
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
_02252B46:
pop {r4, pc}
thumb_func_end MOD20_02252B28
@@ -1243,7 +1243,7 @@ MOD20_02252C5C: ; 0x02252C5C
_02252CA6:
mov r0, #7
str r6, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
mov r1, #6
lsl r1, r1, #6
str r0, [r4, r1]
@@ -1570,14 +1570,14 @@ MOD20_02252ED0: ; 0x02252ED0
ldr r2, _02252FE0 ; =MOD20_022545B4
mov r1, #4
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
ldr r2, _02252FE4 ; =MOD20_022545D0
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0x40
str r0, [sp]
mov r0, #0
@@ -1634,12 +1634,12 @@ MOD20_02252ED0: ; 0x02252ED0
ldr r0, [r4, r0]
mov r1, #5
mov r2, #0xd8
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _02252FD8 ; =0x04001000
ldr r1, _02252FE8 ; =0xFFFFE0FF
ldr r2, [r0]
@@ -1738,7 +1738,7 @@ _02253048:
mov r1, #5
mov r2, #0x40
mov r3, #2
- bl FUN_02018540
+ bl FillBgTilemapRect
cmp r7, #0
beq _022530DA
sub r0, r6, #1
@@ -1759,7 +1759,7 @@ _02253048:
mov r1, #5
lsr r2, r2, #0x10
mov r3, #2
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x14]
mov r2, #0xd8
add r0, r6, r0
@@ -1779,13 +1779,13 @@ _02253048:
mov r1, #5
lsr r2, r2, #0x10
mov r3, #2
- bl FUN_02018540
+ bl FillBgTilemapRect
_022530DA:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldrh r0, [r4, #2]
cmp r0, #0x28
bne _022530FC
@@ -1870,7 +1870,7 @@ _02253158:
ldr r0, [r5, r0]
mov r1, #5
mov r2, #0xd8
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x14]
lsl r1, r7, #0x18
lsl r0, r0, #0x18
@@ -1887,7 +1887,7 @@ _02253158:
mov r1, #5
mov r2, #0xd8
mov r3, #2
- bl FUN_02018540
+ bl FillBgTilemapRect
cmp r6, #0
beq _02253202
mov r0, #0
@@ -1907,7 +1907,7 @@ _02253158:
mov r1, #5
lsr r2, r2, #0x10
mov r3, #2
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [sp, #0x14]
add r6, #0xd4
sub r0, r0, #1
@@ -1926,13 +1926,13 @@ _02253158:
mov r1, #5
lsr r2, r2, #0x10
mov r3, #2
- bl FUN_02018540
+ bl FillBgTilemapRect
_02253202:
mov r0, #6
lsl r0, r0, #6
ldr r0, [r5, r0]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldrh r0, [r4, #2]
cmp r0, #0x28
bne _02253224
@@ -1978,12 +1978,12 @@ MOD20_02253228: ; 0x02253228
ldr r0, [r4, r0]
mov r1, #5
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r6, #0
add r0, #0xa9
ldr r0, [r4, r0]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD20_022538B0
add sp, #0x10
@@ -2026,12 +2026,12 @@ MOD20_0225328C: ; 0x0225328C
ldr r0, [r4, r0]
mov r1, #5
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r6, #0
add r0, #0xa5
ldr r0, [r4, r0]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD20_022538B0
add sp, #0x10
@@ -2063,14 +2063,14 @@ MOD20_022532F0: ; 0x022532F0
ldr r0, [r4, r0]
add r2, #0x84
mov r3, #0x1b
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _02253334 ; =0x00000671
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD20_02252EBC
add sp, #0xc
@@ -2098,12 +2098,12 @@ MOD20_02253338: ; 0x02253338
ldr r0, [r4, r0]
add r2, #0x2c
mov r3, #0x1b
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD20_02252EBC
add sp, #0xc
@@ -2130,14 +2130,14 @@ MOD20_02253378: ; 0x02253378
ldr r0, [r4, r0]
add r2, #0xdc
mov r3, #0x1b
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _022533BC ; =0x0000066F
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD20_02252EBC
add sp, #0xc
@@ -2451,7 +2451,7 @@ _02253600:
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_0225361C:
mov r3, #2
str r3, [sp]
@@ -2468,12 +2468,12 @@ _0225361C:
ldr r0, [r4, r0]
mov r1, #5
lsr r2, r2, #0x10
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
cmp r5, #3
bne _02253658
add r0, r6, #0
@@ -2510,17 +2510,17 @@ MOD20_02253668: ; 0x02253668
ldr r0, [r4, r0]
mov r1, #5
mov r2, #0x40
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r1, #0
ldr r0, _022536C4 ; =0x04001050
add r2, r1, #0
@@ -2546,12 +2546,12 @@ MOD20_022536C8: ; 0x022536C8
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #6
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD20_02252EBC
pop {r3, r4, r5, pc}
@@ -3118,7 +3118,7 @@ MOD20_02253AA4: ; 0x02253AA4
add r2, sp, #0xc
mov r3, #9
add r6, r0, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
mov r1, #4
add r0, sp, #0xc
strh r1, [r0]
@@ -3137,7 +3137,7 @@ MOD20_02253AA4: ; 0x02253AA4
add r0, r6, #0
lsr r1, r1, #0x18
add r2, sp, #0xc
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
mov r1, #6
add r0, sp, #0xc
strh r1, [r0]
@@ -3157,7 +3157,7 @@ MOD20_02253AA4: ; 0x02253AA4
lsr r1, r1, #0x18
add r2, sp, #0xc
mov r3, #0xd
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
mov r1, #0xa
bl _u32_div_f
@@ -3189,7 +3189,7 @@ MOD20_02253AA4: ; 0x02253AA4
lsr r1, r1, #0x18
add r2, sp, #0xc
mov r3, #0xf
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #4
lsr r1, r0, #2
lsl r0, r0, #0x1e
@@ -3215,7 +3215,7 @@ MOD20_02253AA4: ; 0x02253AA4
lsr r1, r1, #0x18
add r2, sp, #0xc
mov r3, #0x11
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add sp, #0x14
pop {r3, r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c
index 040ebdaa..45b11873 100644
--- a/arm9/modules/21/src/mod21_02254A6C.c
+++ b/arm9/modules/21/src/mod21_02254A6C.c
@@ -25,14 +25,14 @@ extern BOOL MOD20_02253888(void *param0, void *param1);
u8 const MOD21_02254D90[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
-extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3);
+extern void InitBgFromTemplate(u32 param0, u32 param1, void *param2, u32 param3);
extern void GfGfxLoader_LoadCharData(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
extern void GfGfxLoader_LoadScrnData(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7);
extern void MOD20_02252D7C(u32 param0, u32 param1);
-extern void FUN_02017CD0(u32 param0, u32 param1);
-extern void FUN_020178A0(u32 param0, u32 param1);
+extern void BgCommitTilemapBufferToVram(u32 param0, u32 param1);
+extern void FreeBgTilemapBuffer(u32 param0, u32 param1);
-extern void FUN_02018170(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 *param6, u8 param7, u32 param8, u32 param9, u32 param10);
+extern void CopyToBgTilemapRect(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 *param6, u8 param7, u32 param8, u32 param9, u32 param10);
extern void MOD11_02252DB4(u32 param0, u32 param1);
@@ -104,12 +104,12 @@ THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1)
{
#pragma unused (param0)
UnkStruct02254A6C *strct = MOD20_022538A0(param1);
- FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0);
+ InitBgFromTemplate(strct->Unk04, 6, MOD21_02254D90, 0);
GfGfxLoader_LoadCharData(12, 23, strct->Unk04, 6, 0, 0, 1, 8);
GfGfxLoader_LoadScrnData(12, 24, strct->Unk04, 6, 0, 0, 1, 8);
MOD20_02252D7C(0, 0);
MOD21_02254C5C(strct);
- FUN_02017CD0(strct->Unk04, 6);
+ BgCommitTilemapBufferToVram(strct->Unk04, 6);
u32 r3 = reg_GXS_DB_DISPCNT;
u32 r2 = reg_GXS_DB_DISPCNT;
vu32 tmp = r3; //unused? wtf
@@ -128,7 +128,7 @@ THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1)
#pragma unused (param0)
UnkStruct02254A6C *strct = MOD20_022538A0(param1);
MOD21_02254C5C(strct);
- FUN_02017CD0(strct->Unk04, 6);
+ BgCommitTilemapBufferToVram(strct->Unk04, 6);
return MOD21_02254B4C(param1);
}
@@ -151,7 +151,7 @@ THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1)
{
#pragma unused (param0)
UnkStruct02254A6C *strct = MOD20_022538A0(param1);
- FUN_020178A0(strct->Unk04, 6);
+ FreeBgTilemapBuffer(strct->Unk04, 6);
return MOD21_02254B4C(param1);
}
@@ -168,8 +168,8 @@ THUMB_FUNC void MOD21_02254C5C(UnkStruct02254A6C *param0)
while (reg_CP_DIVCNT & (regaddr >> 0xb)) { }
u32 divRemRes = reg_CP_DIVREM_RESULT_L;
- FUN_02018170(param0->Unk04, 6, 3, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9);
- FUN_02018170(param0->Unk04, 6, 8, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9);
+ CopyToBgTilemapRect(param0->Unk04, 6, 3, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9);
+ CopyToBgTilemapRect(param0->Unk04, 6, 8, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9);
tmp = param0->Unk00->Unk04;
reg_CP_DIVCNT = 0;
@@ -182,6 +182,6 @@ THUMB_FUNC void MOD21_02254C5C(UnkStruct02254A6C *param0)
while (reg_CP_DIVCNT & (regaddr >> 0xb)) { }
divRemRes = reg_CP_DIVREM_RESULT_L;
- FUN_02018170(param0->Unk04, 6, 15, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9);
- FUN_02018170(param0->Unk04, 6, 20, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9);
+ CopyToBgTilemapRect(param0->Unk04, 6, 15, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9);
+ CopyToBgTilemapRect(param0->Unk04, 6, 20, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9);
}
diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s
index bf11e9db..507feb01 100644
--- a/arm9/modules/22/asm/module_22.s
+++ b/arm9/modules/22/asm/module_22.s
@@ -875,7 +875,7 @@ MOD22_02254E8C: ; 0x02254E8C
bl MOD20_02252D24
str r0, [r4, #0x5c]
mov r0, #8
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
cmp r0, #0
bne _02254EBA
@@ -1152,7 +1152,7 @@ MOD22_02255098: ; 0x02255098
ldr r2, _0225515C ; =MOD22_02255654
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1182,7 +1182,7 @@ MOD22_02255098: ; 0x02255098
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r7, #0
bl MOD20_022538A0
add r4, r0, #0
@@ -1356,7 +1356,7 @@ MOD22_02255230: ; 0x02255230
bl MOD22_02255544
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD22_02255084
pop {r3, r4, r5, pc}
@@ -1384,7 +1384,7 @@ MOD22_02255268: ; 0x02255268
bl MOD22_02255544
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _022552A8 ; =0x00000669
bl MOD20_02252B28
add r0, r5, #0
@@ -1428,7 +1428,7 @@ _022552DC:
bl MOD22_02255544
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD20_022538B0
pop {r4, r5, r6, pc}
@@ -1488,7 +1488,7 @@ _02255358:
bl MOD22_02255544
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_0225537A:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -1549,7 +1549,7 @@ _022553D8:
bl MOD22_02255544
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_022553FA:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -1597,7 +1597,7 @@ _0225543A:
bl MOD22_02255544
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _02255498 ; =0x00000666
bl MOD20_02252B28
add r0, r6, #0
@@ -1623,7 +1623,7 @@ _02255468:
bl MOD22_02255544
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_02255496:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -1668,7 +1668,7 @@ _022554D6:
bl MOD22_02255544
ldr r0, [r6, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD20_022538B0
mov r0, #0
@@ -1722,7 +1722,7 @@ MOD22_02255544: ; 0x02255544
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
mov r1, #6
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r1, _022555A0 ; =0x00000252
mov r7, #1
add r1, r0, r1
@@ -1797,7 +1797,7 @@ _022555CC:
bl MOD20_02254014
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
add r0, #0x84
ldr r0, [r0]
diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s
index 9f052087..15af3d3a 100644
--- a/arm9/modules/23/asm/module_23.s
+++ b/arm9/modules/23/asm/module_23.s
@@ -1153,7 +1153,7 @@ MOD23_02255088: ; 0x02255088
ldr r2, _02255118 ; =MOD23_02255D1C
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1185,7 +1185,7 @@ MOD23_02255088: ; 0x02255088
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _0225511C ; =0x04001000
ldr r0, _02255120 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -1216,7 +1216,7 @@ MOD23_02255124: ; 0x02255124
add r6, r0, #0
ldr r0, [r6, #4]
mov r1, #6
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r0, #0
ldr r3, _022551A0 ; =MOD23_02255FB8
@@ -1310,10 +1310,10 @@ MOD23_022551A4: ; 0x022551A4
ldrb r3, [r5, r3]
str r0, [sp, #8]
ldr r0, [r4, #4]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r6, #0
bl MOD23_02255074
add sp, #0xc
@@ -1356,10 +1356,10 @@ MOD23_02255210: ; 0x02255210
ldrb r3, [r5, r3]
str r0, [sp, #8]
ldr r0, [r4, #4]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r6, #0
bl MOD23_02255074
add sp, #0xc
@@ -1391,7 +1391,7 @@ MOD23_02255270: ; 0x02255270
bl MOD23_0225548C
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r6, #0
bl MOD23_02255074
pop {r4, r5, r6, pc}
@@ -1419,7 +1419,7 @@ MOD23_022552A8: ; 0x022552A8
bl MOD23_0225544C
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r6, #0
bl MOD23_02255074
pop {r4, r5, r6, pc}
@@ -1446,7 +1446,7 @@ MOD23_022552E8: ; 0x022552E8
bl MOD23_0225548C
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r6, #0
bl MOD23_02255074
pop {r4, r5, r6, pc}
@@ -1474,7 +1474,7 @@ MOD23_02255320: ; 0x02255320
bl MOD23_0225544C
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r6, #0
bl MOD23_02255074
pop {r4, r5, r6, pc}
@@ -1504,7 +1504,7 @@ MOD23_02255360: ; 0x02255360
bl MOD23_02255410
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r6, #0
bl MOD23_02255074
pop {r4, r5, r6, pc}
@@ -1538,7 +1538,7 @@ _022553B2:
bl MOD23_0225544C
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD23_02255074
pop {r3, r4, r5, pc}
@@ -1558,7 +1558,7 @@ MOD23_022553E4: ; 0x022553E4
bl MOD23_02255410
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD23_02255074
pop {r3, r4, r5, pc}
@@ -1572,7 +1572,7 @@ MOD23_02255410: ; 0x02255410
add r5, r1, #0
mov r1, #6
add r4, r0, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldrh r1, [r5, #2]
cmp r1, #0x11
bne _0225542E
@@ -1602,7 +1602,7 @@ MOD23_0225544C: ; 0x0225544C
push {lr}
sub sp, #0xc
mov r1, #6
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r1, #0x29
str r1, [sp]
mov r1, #0x28
@@ -1625,7 +1625,7 @@ MOD23_02255470: ; 0x02255470
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD23_02255074
pop {r4, pc}
@@ -1638,7 +1638,7 @@ MOD23_0225548C: ; 0x0225548C
sub sp, #0x14
add r6, r1, #0
mov r1, #6
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r7, r0, #0
ldrh r0, [r6]
mov r1, #0
diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s
index cdf4b770..65182148 100644
--- a/arm9/modules/24/asm/module_24.s
+++ b/arm9/modules/24/asm/module_24.s
@@ -621,7 +621,7 @@ MOD24_02254CA0: ; 0x02254CA0
add r4, r0, #0
beq _02254CFA
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CC0
bl GF_AssertFail
@@ -631,7 +631,7 @@ _02254CC0:
mov r1, #0x10
bl MOD20_022536F4
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CD8
bl GF_AssertFail
@@ -642,7 +642,7 @@ _02254CD8:
bl MOD20_02252D24
str r0, [r4, #0x50]
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254CF4
bl GF_AssertFail
@@ -668,7 +668,7 @@ MOD24_02254D00: ; 0x02254D00
beq _02254D3C
ldr r0, [r4, #4]
ldr r2, _02254D40 ; =MOD24_0225510C
- bl FUN_02019150
+ bl AddWindow
mov r2, #0xbe
ldr r1, [r4]
ldr r0, _02254D44 ; =0x000016E8
@@ -699,7 +699,7 @@ MOD24_02254D48: ; 0x02254D48
add r4, r0, #0
beq _02254D84
mov r0, #7
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254D5C
bl GF_AssertFail
@@ -715,7 +715,7 @@ _02254D5C:
lsl r2, r2, #6
bl FUN_02089444
ldr r0, [r4, #0x70]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x70]
bl FreeToHeap
_02254D7E:
@@ -783,7 +783,7 @@ MOD24_02254DDC: ; 0x02254DDC
sub sp, #0x14
mov r0, #8
add r4, r1, #0
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254DF0
bl GF_AssertFail
@@ -795,14 +795,14 @@ _02254DF0:
ldr r2, _02254ED0 ; =MOD24_02255114
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
ldr r2, _02254ED4 ; =MOD24_02255130
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E1E
bl GF_AssertFail
@@ -835,7 +835,7 @@ _02254E1E:
add r1, r0, #0
bl MOD20_02252D7C
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E68
bl GF_AssertFail
@@ -845,7 +845,7 @@ _02254E68:
ldr r0, [r5, #0x70]
bl CopyWindowToVram
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E82
bl GF_AssertFail
@@ -853,14 +853,14 @@ _02254E82:
add r0, r5, #0
bl MOD24_02255078
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254E96
bl GF_AssertFail
_02254E96:
ldr r0, [r5, #4]
mov r1, #7
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254ED8 ; =0x04001000
ldr r0, _02254EDC ; =0xFFFFE0FF
ldr r3, [r1]
@@ -877,7 +877,7 @@ _02254E96:
add r0, r4, #0
bl MOD24_02254DC8
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254ECC
bl GF_AssertFail
@@ -932,7 +932,7 @@ MOD24_02254F28: ; 0x02254F28
add r0, r4, #0
bl MOD20_022538A0
ldr r0, [r0, #0x70]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl MOD24_02254DC8
pop {r4, pc}
@@ -1072,7 +1072,7 @@ MOD24_02255038: ; 0x02255038
add r0, r4, #0
bl MOD20_022538A0
ldr r0, [r0, #0x70]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl MOD24_02254DC8
pop {r4, pc}
@@ -1088,10 +1088,10 @@ MOD24_02255050: ; 0x02255050
bl MOD24_022550D4
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD24_02254DC8
pop {r3, r4, r5, pc}
diff --git a/arm9/modules/25/asm/module_25.s b/arm9/modules/25/asm/module_25.s
index 5e70bbbe..69efec33 100644
--- a/arm9/modules/25/asm/module_25.s
+++ b/arm9/modules/25/asm/module_25.s
@@ -428,7 +428,7 @@ MOD25_02254B34: ; 0x02254B34
ldr r2, _02254BBC ; =MOD25_02254D08
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -460,7 +460,7 @@ MOD25_02254B34: ; 0x02254B34
bl MOD25_02254C30
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254BC0 ; =0x04001000
ldr r0, _02254BC4 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -494,7 +494,7 @@ MOD25_02254BC8: ; 0x02254BC8
bl MOD25_02254C30
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD25_02254B20
pop {r3, r4, r5, pc}
@@ -532,7 +532,7 @@ MOD25_02254C14: ; 0x02254C14
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD25_02254B20
pop {r4, pc}
diff --git a/arm9/modules/26/asm/module_26.s b/arm9/modules/26/asm/module_26.s
index 6d8828a0..251ea218 100644
--- a/arm9/modules/26/asm/module_26.s
+++ b/arm9/modules/26/asm/module_26.s
@@ -590,7 +590,7 @@ MOD26_02254C60: ; 0x02254C60
ldr r2, _02254CB8 ; =MOD26_02254FD4
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
bl MOD26_02254CC4
ldr r0, [r5, #4]
@@ -601,7 +601,7 @@ MOD26_02254C60: ; 0x02254C60
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254CBC ; =0x04001000
ldr r0, _02254CC0 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -702,7 +702,7 @@ _02254CEC:
ldr r2, [sp, #0x1c]
mov r1, #6
lsl r3, r3, #8
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r0, [sp, #0x1c]
bl FreeToHeap
_02254D68:
@@ -722,7 +722,7 @@ MOD26_02254D6C: ; 0x02254D6C
bl MOD26_02254DAC
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD26_02254C4C
pop {r3, r4, r5, pc}
@@ -736,7 +736,7 @@ MOD26_02254D90: ; 0x02254D90
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD26_02254C4C
pop {r4, pc}
@@ -748,7 +748,7 @@ MOD26_02254DAC: ; 0x02254DAC
push {r3, r4, r5, r6, r7, lr}
add r4, r1, #0
mov r1, #6
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r5, #0
ldr r1, _02254DE0 ; =MOD26_02254FD0
add r0, #0x84
diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s
index 25e4a4b6..c2c6c837 100644
--- a/arm9/modules/27/asm/module_27.s
+++ b/arm9/modules/27/asm/module_27.s
@@ -516,7 +516,7 @@ MOD27_02254C08: ; 0x02254C08
ldr r2, _02254CBC ; =MOD27_02255378
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -540,7 +540,7 @@ MOD27_02254C08: ; 0x02254C08
ldr r0, [r4, #4]
mov r1, #6
mov r2, #5
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -551,7 +551,7 @@ MOD27_02254C08: ; 0x02254C08
bl MOD27_02254CC8
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #0xf
mov r1, #1
bl MOD20_0225396C
@@ -631,9 +631,9 @@ _02254CE8:
lsl r3, r3, #0x18
ldr r0, [r0, #4]
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
- bl FUN_02019270
+ bl PutWindowTilemap
ldr r1, [sp, #0x14]
add r0, r4, #0
bl MOD27_02254D60
@@ -686,7 +686,7 @@ MOD27_02254D60: ; 0x02254D60
sub r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldrb r0, [r5, #6]
mov r1, #6
mov r2, #2
@@ -702,7 +702,7 @@ MOD27_02254D60: ; 0x02254D60
str r0, [sp, #0xc]
ldrb r3, [r5, #5]
ldr r0, [r4, #4]
- bl FUN_02018540
+ bl FillBgTilemapRect
ldrb r0, [r5, #6]
ldr r2, _02254E98 ; =0x00000401
mov r1, #6
@@ -721,7 +721,7 @@ MOD27_02254D60: ; 0x02254D60
add r3, r6, r3
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldrb r0, [r5, #6]
mov r1, #6
add r2, r1, #0
@@ -737,7 +737,7 @@ MOD27_02254D60: ; 0x02254D60
sub r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldrb r0, [r5, #6]
ldr r2, _02254E9C ; =0x00000406
mov r1, #6
@@ -754,7 +754,7 @@ MOD27_02254D60: ; 0x02254D60
add r3, r6, r3
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldrb r1, [r5, #6]
ldrb r0, [r5, #8]
ldr r2, _02254EA0 ; =0x00000801
@@ -773,7 +773,7 @@ MOD27_02254D60: ; 0x02254D60
sub r3, r3, #1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
ldrb r1, [r5, #6]
ldrb r0, [r5, #8]
ldr r2, _02254EA4 ; =0x00000802
@@ -790,7 +790,7 @@ MOD27_02254D60: ; 0x02254D60
str r0, [sp, #0xc]
ldrb r3, [r5, #5]
ldr r0, [r4, #4]
- bl FUN_02018540
+ bl FillBgTilemapRect
ldrb r1, [r5, #6]
ldrb r0, [r5, #8]
ldr r2, _02254EA8 ; =0x00000C01
@@ -810,7 +810,7 @@ MOD27_02254D60: ; 0x02254D60
add r3, r4, r3
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x10
pop {r4, r5, r6, pc}
nop
@@ -849,7 +849,7 @@ MOD27_02254EAC: ; 0x02254EAC
bl FillWindowPixelRect
_02254EE0:
add r0, r5, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #8
pop {r3, r4, r5, pc}
.align 2, 0
@@ -1361,7 +1361,7 @@ _02255288:
add r4, #0x3c
_0225529C:
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r5, #0x38]
add r6, r6, #1
add r4, #0x10
@@ -1382,7 +1382,7 @@ MOD27_022552B4: ; 0x022552B4
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD27_02254BF4
pop {r4, pc}
@@ -1412,7 +1412,7 @@ MOD27_022552D0: ; 0x022552D0
ldr r0, [r5, #4]
mov r1, #6
mov r2, #5
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r5, #0
add r1, r4, #0
bl MOD27_02254F18
@@ -1425,7 +1425,7 @@ MOD27_022552D0: ; 0x022552D0
bl MOD27_02254CC8
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _02255338 ; =0x00000669
bl MOD20_02252B28
add r0, r6, #0
diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s
index 04176ba5..ee242492 100644
--- a/arm9/modules/28/asm/module_28.s
+++ b/arm9/modules/28/asm/module_28.s
@@ -547,7 +547,7 @@ MOD28_02254C18: ; 0x02254C18
ldr r2, _02254CA8 ; =MOD28_02255ED8
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -570,13 +570,13 @@ MOD28_02254C18: ; 0x02254C18
ldr r0, [r5, #4]
mov r1, #6
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, [r5]
add r0, r5, #0
bl MOD28_02254CB4
@@ -915,7 +915,7 @@ MOD28_02254F18: ; 0x02254F18
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD28_02254C04
pop {r4, pc}
diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s
index 9fb45a65..061b078c 100644
--- a/arm9/modules/29/asm/module_29.s
+++ b/arm9/modules/29/asm/module_29.s
@@ -672,7 +672,7 @@ MOD29_02254D10: ; 0x02254D10
ldr r2, _02254DE8 ; =MOD29_022550E0
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -737,7 +737,7 @@ MOD29_02254D10: ; 0x02254D10
bl GXS_LoadOBJPltt
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254DEC ; =0x04001000
ldr r0, _02254DF0 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -771,7 +771,7 @@ MOD29_02254DF4: ; 0x02254DF4
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD29_02254CFC
pop {r4, pc}
diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s
index 5daf123f..69e08586 100644
--- a/arm9/modules/30/asm/module_30.s
+++ b/arm9/modules/30/asm/module_30.s
@@ -536,7 +536,7 @@ MOD30_02254C18: ; 0x02254C18
ldr r2, _02254C9C ; =MOD30_02254DD0
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -566,7 +566,7 @@ MOD30_02254C18: ; 0x02254C18
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254CA0 ; =0x04001000
ldr r0, _02254CA4 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -598,7 +598,7 @@ MOD30_02254CA8: ; 0x02254CA8
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD30_02254C04
pop {r4, pc}
diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s
index 5e45ce23..e565a1cf 100644
--- a/arm9/modules/31/asm/module_31.s
+++ b/arm9/modules/31/asm/module_31.s
@@ -526,7 +526,7 @@ MOD31_02254C0C: ; 0x02254C0C
ldr r2, _02254C90 ; =MOD31_02254DC8
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -556,7 +556,7 @@ MOD31_02254C0C: ; 0x02254C0C
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254C94 ; =0x04001000
ldr r0, _02254C98 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -588,7 +588,7 @@ MOD31_02254C9C: ; 0x02254C9C
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD31_02254BF8
pop {r4, pc}
diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s
index c928dd1a..b78a206b 100644
--- a/arm9/modules/32/asm/module_32.s
+++ b/arm9/modules/32/asm/module_32.s
@@ -453,7 +453,7 @@ MOD32_02254B58: ; 0x02254B58
ldr r2, _02254BDC ; =MOD32_02254C78
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -483,7 +483,7 @@ MOD32_02254B58: ; 0x02254B58
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254BE0 ; =0x04001000
ldr r0, _02254BE4 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -517,7 +517,7 @@ MOD32_02254BE8: ; 0x02254BE8
bl MOD32_02254AF0
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD32_02254B44
pop {r3, r4, r5, pc}
diff --git a/arm9/modules/33/asm/module_33.s b/arm9/modules/33/asm/module_33.s
index 55ccf203..a0c3782f 100644
--- a/arm9/modules/33/asm/module_33.s
+++ b/arm9/modules/33/asm/module_33.s
@@ -303,7 +303,7 @@ MOD33_02254A38: ; 0x02254A38
ldr r2, _02254ACC ; =MOD33_02254B00
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -324,7 +324,7 @@ MOD33_02254A38: ; 0x02254A38
ldr r0, [r5, #4]
mov r1, #6
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x20
str r0, [sp]
mov r0, #8
@@ -340,7 +340,7 @@ MOD33_02254A38: ; 0x02254A38
bl MOD20_02253AA4
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254AD0 ; =0x04001000
ldr r0, _02254AD4 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -372,7 +372,7 @@ MOD33_02254AD8: ; 0x02254AD8
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD33_02254A24
pop {r4, pc}
diff --git a/arm9/modules/34/asm/module_34.s b/arm9/modules/34/asm/module_34.s
index ddc4f587..02906b7f 100644
--- a/arm9/modules/34/asm/module_34.s
+++ b/arm9/modules/34/asm/module_34.s
@@ -395,7 +395,7 @@ MOD34_02254AE8: ; 0x02254AE8
ldr r2, _02254B8C ; =MOD34_02254CA0
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -437,7 +437,7 @@ _02254B4A:
blt _02254B4A
ldr r0, [r6, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _02254B90 ; =0x04001000
ldr r1, _02254B94 ; =0xFFFFE0FF
ldr r2, [r0]
@@ -470,7 +470,7 @@ MOD34_02254B98: ; 0x02254B98
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD34_02254AD4
pop {r4, pc}
@@ -496,7 +496,7 @@ MOD34_02254BB4: ; 0x02254BB4
bl MOD34_02254C1C
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD34_02254AD4
pop {r3, r4, r5, pc}
@@ -521,7 +521,7 @@ MOD34_02254BE8: ; 0x02254BE8
bl MOD34_02254C1C
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl MOD34_02254AD4
pop {r3, r4, r5, pc}
@@ -535,7 +535,7 @@ MOD34_02254C1C: ; 0x02254C1C
mov r1, #6
add r4, r2, #0
add r6, r3, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r1, _02254C6C ; =MOD34_02254C94
lsl r2, r5, #1
ldrh r1, [r1, r2]
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
index f73ad3ff..84225174 100644
--- a/arm9/modules/35/asm/module_35.s
+++ b/arm9/modules/35/asm/module_35.s
@@ -597,7 +597,7 @@ MOD35_02254C98: ; 0x02254C98
ldr r2, _02254D24 ; =MOD35_022550C4
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -627,7 +627,7 @@ MOD35_02254C98: ; 0x02254C98
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254D28 ; =0x0400104C
mov r0, #0
strb r0, [r1]
@@ -688,7 +688,7 @@ _02254D5A:
strb r1, [r0, #1]
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD35_02254C84
_02254D7C:
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
index 0149e180..617d957c 100644
--- a/arm9/modules/36/asm/module_36.s
+++ b/arm9/modules/36/asm/module_36.s
@@ -981,7 +981,7 @@ MOD36_02254F5C: ; 0x02254F5C
sub sp, #0x14
mov r0, #8
add r5, r1, #0
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254F70
bl GF_AssertFail
@@ -993,14 +993,14 @@ _02254F70:
ldr r2, _0225502C ; =MOD36_02255408
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _02255030 ; =MOD36_02255424
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254F9E
bl GF_AssertFail
@@ -1034,7 +1034,7 @@ _02254F9E:
add r1, r0, #0
bl MOD20_02252D7C
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02254FEA
bl GF_AssertFail
@@ -1044,7 +1044,7 @@ _02254FEA:
bl MOD36_0225503C
ldr r0, [r4, #4]
mov r1, #7
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02255034 ; =0x04001000
ldr r0, _02255038 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -1061,7 +1061,7 @@ _02254FEA:
add r0, r5, #0
bl MOD36_02254F48
mov r0, #8
- bl FUN_02016B90
+ bl GF_heap_c_dummy_return_true
cmp r0, #0
bne _02255028
bl GF_AssertFail
@@ -1096,7 +1096,7 @@ MOD36_0225503C: ; 0x0225503C
add r1, r4, #0
ldr r0, [r4, #4]
add r1, #0x48
- bl FUN_02019150
+ bl AddWindow
ldr r0, [r4]
mov r2, #0xbe
ldr r0, [r0, #8]
@@ -1112,10 +1112,10 @@ MOD36_0225503C: ; 0x0225503C
_02255082:
add r0, r4, #0
add r0, #0x48
- bl FUN_02019270
+ bl PutWindowTilemap
add r4, #0x48
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #8
pop {r3, r4, r5, pc}
nop
@@ -1151,13 +1151,13 @@ _022550C4:
bl FUN_02089444
add r0, r4, #0
add r0, #0x48
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD36_02254F48
pop {r3, r4, r5, pc}
@@ -1171,7 +1171,7 @@ MOD36_022550F4: ; 0x022550F4
add r0, r4, #0
bl MOD20_022538A0
add r0, #0x48
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl MOD36_02254F48
pop {r4, pc}
@@ -1228,7 +1228,7 @@ MOD36_02255164: ; 0x02255164
add r0, r4, #0
bl MOD20_022538A0
add r0, #0x48
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl MOD36_02254F48
pop {r4, pc}
@@ -1301,7 +1301,7 @@ MOD36_022551E0: ; 0x022551E0
bl FillWindowPixelBuffer
add r4, #0x48
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r5, #0
bl MOD36_02254F48
pop {r3, r4, r5, pc}
diff --git a/arm9/modules/37/asm/module_37.s b/arm9/modules/37/asm/module_37.s
index c2f1439a..313343b5 100644
--- a/arm9/modules/37/asm/module_37.s
+++ b/arm9/modules/37/asm/module_37.s
@@ -459,7 +459,7 @@ MOD37_02254B70: ; 0x02254B70
ldr r2, _02254BF4 ; =MOD37_02254D44
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -489,7 +489,7 @@ MOD37_02254B70: ; 0x02254B70
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254BF8 ; =0x04001000
ldr r0, _02254BFC ; =0xFFFFE0FF
ldr r3, [r1]
@@ -540,7 +540,7 @@ _02254C26:
beq _02254C40
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD37_02254B5C
_02254C40:
diff --git a/arm9/modules/38/asm/module_38.s b/arm9/modules/38/asm/module_38.s
index ee5980ec..bf495f60 100644
--- a/arm9/modules/38/asm/module_38.s
+++ b/arm9/modules/38/asm/module_38.s
@@ -741,7 +741,7 @@ MOD38_02254D84: ; 0x02254D84
ldr r2, _02254E1C ; =MOD38_0225529C
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -776,7 +776,7 @@ MOD38_02254D84: ; 0x02254D84
bl MOD38_02254E28
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254E20 ; =0x04001000
ldr r0, _02254E24 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -822,7 +822,7 @@ MOD38_02254E28: ; 0x02254E28
ldr r0, [r5, #4]
add r1, #0x74
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #4
str r0, [sp]
mov r2, #6
@@ -840,7 +840,7 @@ MOD38_02254E28: ; 0x02254E28
ldr r0, [r5, #4]
add r1, #0x84
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #8
str r0, [sp]
mov r2, #6
@@ -858,7 +858,7 @@ MOD38_02254E28: ; 0x02254E28
ldr r0, [r5, #4]
add r1, #0x94
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x13
str r0, [sp]
mov r0, #0x16
@@ -876,19 +876,19 @@ MOD38_02254E28: ; 0x02254E28
add r1, #0xa4
mov r2, #6
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r0, #0x74
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
add r0, #0x84
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
add r0, #0x94
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
add r0, #0xa4
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
add r1, r6, #0
bl MOD38_02254FCC
@@ -902,16 +902,16 @@ MOD38_02254EF4: ; 0x02254EF4
push {r4, lr}
add r4, r0, #0
add r0, #0x74
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x84
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x94
- bl FUN_02019178
+ bl RemoveWindow
add r4, #0xa4
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
thumb_func_end MOD38_02254EF4
@@ -925,7 +925,7 @@ MOD38_02254F18: ; 0x02254F18
bl MOD38_02254EF4
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD38_02254D70
pop {r3, r4, r5, pc}
@@ -1090,7 +1090,7 @@ _02255048:
lsr r3, r3, #1
bl AddTextPrinterParameterized2
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, r5, r6, pc}
.align 2, 0
@@ -1128,7 +1128,7 @@ MOD38_02255084: ; 0x02255084
add r3, r1, #0
bl AddTextPrinterParameterized2
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s
index da3f83f4..2fdb4637 100644
--- a/arm9/modules/39/asm/module_39.s
+++ b/arm9/modules/39/asm/module_39.s
@@ -788,7 +788,7 @@ MOD39_02254DF4: ; 0x02254DF4
ldr r2, _02254E7C ; =MOD39_02255330
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -818,7 +818,7 @@ MOD39_02254DF4: ; 0x02254DF4
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254E80 ; =0x04001000
ldr r0, _02254E84 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -870,7 +870,7 @@ _02254EB0:
beq _02254ECA
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD39_02254DE0
_02254ECA:
diff --git a/arm9/modules/40/asm/module_40.s b/arm9/modules/40/asm/module_40.s
index 13c9a94f..62231a53 100644
--- a/arm9/modules/40/asm/module_40.s
+++ b/arm9/modules/40/asm/module_40.s
@@ -1038,7 +1038,7 @@ MOD40_02254FE8: ; 0x02254FE8
ldr r2, _0225506C ; =MOD40_02255340
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1068,7 +1068,7 @@ MOD40_02254FE8: ; 0x02254FE8
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02255070 ; =0x04001000
ldr r0, _02255074 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -1120,7 +1120,7 @@ _022550A2:
beq _022550BC
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD40_02254FD4
_022550BC:
diff --git a/arm9/modules/41/asm/module_41.s b/arm9/modules/41/asm/module_41.s
index 4d1afb06..939ea649 100644
--- a/arm9/modules/41/asm/module_41.s
+++ b/arm9/modules/41/asm/module_41.s
@@ -1561,7 +1561,7 @@ MOD41_022553F4: ; 0x022553F4
ldr r2, _022554CC ; =MOD41_022557DC
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1591,7 +1591,7 @@ MOD41_022553F4: ; 0x022553F4
bl MOD20_02252D7C
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _022554D0 ; =0x04001000
ldr r0, _022554D4 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -1686,7 +1686,7 @@ _02255508:
beq _02255522
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD41_022553E0
_02255522:
diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s
index 03136570..9e502906 100644
--- a/arm9/modules/42/asm/module_42.s
+++ b/arm9/modules/42/asm/module_42.s
@@ -953,7 +953,7 @@ MOD42_02254F3C: ; 0x02254F3C
ldr r2, _02254FC0 ; =MOD42_022550DC
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -983,7 +983,7 @@ MOD42_02254F3C: ; 0x02254F3C
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254FC4 ; =0x04001000
ldr r0, _02254FC8 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -1015,7 +1015,7 @@ MOD42_02254FCC: ; 0x02254FCC
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD42_02254F28
pop {r4, pc}
diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s
index ce3da4bb..59f7e81d 100644
--- a/arm9/modules/43/asm/module_43.s
+++ b/arm9/modules/43/asm/module_43.s
@@ -561,7 +561,7 @@ MOD43_02254C28: ; 0x02254C28
ldr r0, [r5, #4]
ldr r2, _02254CC4 ; =MOD43_022551A0
mov r1, #6
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -595,7 +595,7 @@ MOD43_02254C28: ; 0x02254C28
bl MOD43_02254CD0
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254CC8 ; =0x04001000
ldr r0, _02254CCC ; =0xFFFFE0FF
ldr r3, [r1]
@@ -651,7 +651,7 @@ MOD43_02254CD0: ; 0x02254CD0
add r1, sp, #0x14
mov r2, #6
mov r3, #0x12
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, sp, #0x14
mov r1, #4
bl FillWindowPixelBuffer
@@ -667,11 +667,11 @@ MOD43_02254CD0: ; 0x02254CD0
str r1, [sp, #0xc]
bl AddTextPrinterParameterized2
add r0, sp, #0x14
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, sp, #0x14
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, sp, #0x14
- bl FUN_02019178
+ bl RemoveWindow
add r0, r6, #0
bl String_dtor
_02254D44:
@@ -717,7 +717,7 @@ _02254D78:
strb r1, [r0, #1]
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD43_02254C14
_02254DA0:
diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/module_44.s
index 19726565..b8f5aa0b 100644
--- a/arm9/modules/44/asm/module_44.s
+++ b/arm9/modules/44/asm/module_44.s
@@ -456,7 +456,7 @@ MOD44_02254B64: ; 0x02254B64
ldr r2, _02254BEC ; =MOD44_02254C70
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -486,7 +486,7 @@ MOD44_02254B64: ; 0x02254B64
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254BF0 ; =0x04001000
ldr r0, _02254BF4 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -518,7 +518,7 @@ MOD44_02254BF8: ; 0x02254BF8
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD44_02254B50
pop {r4, pc}
diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s
index 95cf3fbc..4f710dc6 100644
--- a/arm9/modules/45/asm/module_45.s
+++ b/arm9/modules/45/asm/module_45.s
@@ -637,12 +637,12 @@ MOD45_02254CCC: ; 0x02254CCC
ldr r2, _02254D60 ; =MOD45_022550FC
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
ldr r2, _02254D64 ; =MOD45_022550E0
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0
add r1, r4, #0
bl MOD45_02254DDC
@@ -666,10 +666,10 @@ MOD45_02254CCC: ; 0x02254CCC
bl MOD20_02252D7C
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, [r5, #4]
mov r1, #7
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254D68 ; =0x04001000
ldr r0, _02254D6C ; =0xFFFFE0FF
ldr r3, [r1]
@@ -703,10 +703,10 @@ MOD45_02254D70: ; 0x02254D70
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD45_02254CB8
pop {r3, r4, r5, pc}
@@ -742,7 +742,7 @@ _02254DBC:
bl MOD45_02254E28
ldr r0, [r5, #4]
mov r1, #7
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r4, #0
bl MOD45_02254CB8
pop {r3, r4, r5, pc}
@@ -825,7 +825,7 @@ MOD45_02254E28: ; 0x02254E28
mov r1, #7
add r2, r6, #0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -846,7 +846,7 @@ MOD45_02254E74: ; 0x02254E74
ldr r0, [r7, #4]
mov r1, #6
mov r2, #0x82
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r7, #4]
ldr r1, [r6]
bl MOD45_02254EBC
@@ -902,7 +902,7 @@ _02254ED6:
mov r1, #6
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r5, r5, #1
cmp r5, #4
blt _02254ED6
@@ -975,7 +975,7 @@ _02254F46:
mov r1, #6
add r2, r7, #0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r5, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
@@ -992,7 +992,7 @@ _02254F46:
mov r1, #6
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
_02254FAE:
mov r0, #0x14
add r3, r6, #0
@@ -1016,7 +1016,7 @@ _02254FAE:
mov r1, #6
add r2, r6, #0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r5, #1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
@@ -1034,7 +1034,7 @@ _02254FAE:
mov r1, #6
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
diff --git a/arm9/modules/46/asm/module_46.s b/arm9/modules/46/asm/module_46.s
index 66418468..aecfd51d 100644
--- a/arm9/modules/46/asm/module_46.s
+++ b/arm9/modules/46/asm/module_46.s
@@ -303,7 +303,7 @@ MOD46_02254A38: ; 0x02254A38
ldr r2, _02254ACC ; =MOD46_02254B00
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -324,7 +324,7 @@ MOD46_02254A38: ; 0x02254A38
ldr r0, [r5, #4]
mov r1, #6
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x20
str r0, [sp]
mov r0, #8
@@ -340,7 +340,7 @@ MOD46_02254A38: ; 0x02254A38
bl MOD20_02253AA4
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254AD0 ; =0x04001000
ldr r0, _02254AD4 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -372,7 +372,7 @@ MOD46_02254AD8: ; 0x02254AD8
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD46_02254A24
pop {r4, pc}
diff --git a/arm9/modules/47/asm/module_47.s b/arm9/modules/47/asm/module_47.s
index 3cd1bb32..48bd9b4a 100644
--- a/arm9/modules/47/asm/module_47.s
+++ b/arm9/modules/47/asm/module_47.s
@@ -877,7 +877,7 @@ MOD47_02254E74: ; 0x02254E74
ldr r2, _02254F28 ; =MOD47_022553F4
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -921,15 +921,15 @@ MOD47_02254E74: ; 0x02254E74
ldr r0, [r5, #4]
add r1, #0x20
mov r2, #6
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r0, #0x20
- bl FUN_02019270
+ bl PutWindowTilemap
add r0, r5, #0
bl MOD47_022550FC
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254F2C ; =0x04001000
ldr r0, _02254F30 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -961,10 +961,10 @@ MOD47_02254F34: ; 0x02254F34
bl MOD20_022538A0
add r4, r0, #0
add r0, #0x20
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD47_02254E60
pop {r3, r4, r5, pc}
@@ -1211,7 +1211,7 @@ MOD47_022550FC: ; 0x022550FC
bl AddTextPrinterParameterized2
add r4, #0x20
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, pc}
nop
@@ -1251,7 +1251,7 @@ MOD47_02255184: ; 0x02255184
bl AddTextPrinterParameterized2
add r4, #0x20
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, pc}
nop
@@ -1308,7 +1308,7 @@ MOD47_022551D8: ; 0x022551D8
bl AddTextPrinterParameterized2
add r4, #0x20
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -1371,7 +1371,7 @@ MOD47_02255250: ; 0x02255250
bl AddTextPrinterParameterized2
add r4, #0x20
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, pc}
nop
@@ -1464,7 +1464,7 @@ _0225532C:
blt _0225532C
add r5, #0x20
add r0, r5, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
diff --git a/arm9/modules/48/asm/module_48.s b/arm9/modules/48/asm/module_48.s
index 8dfd4e0a..1aff0df2 100644
--- a/arm9/modules/48/asm/module_48.s
+++ b/arm9/modules/48/asm/module_48.s
@@ -426,7 +426,7 @@ MOD48_02254B30: ; 0x02254B30
ldr r2, _02254BBC ; =MOD48_02254F78
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -490,7 +490,7 @@ MOD48_02254BC8: ; 0x02254BC8
bl MOD48_02254EC0
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD48_02254B1C
pop {r3, r4, r5, pc}
diff --git a/arm9/modules/49/asm/module_49.s b/arm9/modules/49/asm/module_49.s
index 1de7ea96..68c7625e 100644
--- a/arm9/modules/49/asm/module_49.s
+++ b/arm9/modules/49/asm/module_49.s
@@ -384,14 +384,14 @@ MOD49_02254AD4: ; 0x02254AD4
ldr r2, _02254BD0 ; =MOD49_02254D20
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
ldr r0, [r5, #4]
mov r1, #6
mov r2, #4
mov r3, #1
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -402,7 +402,7 @@ MOD49_02254AD4: ; 0x02254AD4
ldr r0, [r5, #4]
mov r1, #6
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0
add r1, r0, #0
bl MOD20_02252D7C
@@ -418,12 +418,12 @@ MOD49_02254AD4: ; 0x02254AD4
ldr r0, [r5, #4]
add r1, sp, #0x1c
mov r2, #6
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, sp, #0x1c
mov r1, #4
bl FillWindowPixelBuffer
add r0, sp, #0x1c
- bl FUN_02019270
+ bl PutWindowTilemap
ldr r1, _02254BD4 ; =0x00000197
mov r0, #0x1a
mov r2, #0
@@ -450,15 +450,15 @@ MOD49_02254AD4: ; 0x02254AD4
str r1, [sp, #0xc]
bl AddTextPrinterParameterized2
add r0, sp, #0x1c
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl String_dtor
_02254B94:
add r0, sp, #0x1c
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, [sp, #0x14]
add r0, r5, #0
bl MOD49_02254C04
@@ -497,7 +497,7 @@ MOD49_02254BE4: ; 0x02254BE4
bl MOD49_02254CB8
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r5, #0
bl MOD49_02254AC0
pop {r3, r4, r5, pc}
diff --git a/arm9/modules/50/asm/module_50.s b/arm9/modules/50/asm/module_50.s
index 5d80d9b6..fc52f7fa 100644
--- a/arm9/modules/50/asm/module_50.s
+++ b/arm9/modules/50/asm/module_50.s
@@ -221,7 +221,7 @@ MOD50_022549AC: ; 0x022549AC
bl MOD20_022536F4
mov r0, #8
str r6, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
cmp r0, #0
beq _022549DA
@@ -312,7 +312,7 @@ MOD50_02254A48: ; 0x02254A48
ldr r2, _02254ADC ; =MOD50_02254B10
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -333,7 +333,7 @@ MOD50_02254A48: ; 0x02254A48
ldr r0, [r5, #4]
mov r1, #6
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x20
str r0, [sp]
mov r0, #8
@@ -350,7 +350,7 @@ MOD50_02254A48: ; 0x02254A48
bl MOD20_02253AA4
ldr r0, [r5, #4]
mov r1, #6
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _02254AE0 ; =0x04001000
ldr r0, _02254AE4 ; =0xFFFFE0FF
ldr r3, [r1]
@@ -382,7 +382,7 @@ MOD50_02254AE8: ; 0x02254AE8
bl MOD20_022538A0
ldr r0, [r0, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD50_02254A34
pop {r4, pc}
diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s
index 4642f8c1..3406537b 100644
--- a/arm9/modules/51/asm/module_51.s
+++ b/arm9/modules/51/asm/module_51.s
@@ -162,7 +162,7 @@ _02254960:
add r1, r5, #0
lsr r2, r2, #0x18
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -189,7 +189,7 @@ _02254960:
add r1, #0x10
lsr r2, r2, #0x18
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r0, #0x10
mov r1, #0
@@ -217,7 +217,7 @@ _02254960:
add r1, #0x20
lsr r2, r2, #0x18
mov r3, #0xc
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r0, #0x20
mov r1, #0
@@ -256,12 +256,12 @@ MOD51_02254A40: ; 0x02254A40
_02254A46:
add r0, r5, #0
add r0, #0x10
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
add r0, #0x20
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x38
cmp r4, #3
@@ -370,16 +370,16 @@ MOD51_02254B30: ; 0x02254B30
push {r4, lr}
add r4, r0, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD51_02254B30
@@ -403,10 +403,10 @@ MOD51_02254B54: ; 0x02254B54
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #1
mov r1, #0
bl GX_EngineBToggleLayers
@@ -424,10 +424,10 @@ MOD51_02254B54: ; 0x02254B54
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #2
mov r1, #0
bl GX_EngineBToggleLayers
@@ -445,10 +445,10 @@ MOD51_02254B54: ; 0x02254B54
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #4
mov r1, #0
bl GX_EngineBToggleLayers
@@ -466,7 +466,7 @@ MOD51_02254B54: ; 0x02254B54
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #8
mov r1, #0
bl GX_EngineBToggleLayers
@@ -786,7 +786,7 @@ MOD51_02254E48: ; 0x02254E48
mov r1, #7
add r2, r7, #0
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
mov r0, #0x72
lsl r0, r0, #2
add r7, r5, r0
@@ -832,10 +832,10 @@ MOD51_02254E48: ; 0x02254E48
mov r1, #1
bl AddTextPrinterParameterized2
add r0, r7, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x1c]
add r0, r0, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r2, [r6, #8]
cmp r2, #0
beq _02254F22
@@ -852,7 +852,7 @@ MOD51_02254E48: ; 0x02254E48
bl AddTextPrinterParameterized2
_02254F22:
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -927,13 +927,13 @@ _02254F88:
_02254FB0:
ldr r0, [r5, #0x14]
mov r1, #7
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r1, #6
lsl r1, r1, #8
bl DC_FlushRange
ldr r0, [r5, #0x14]
mov r1, #7
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r2, r0, #0
mov r0, #0
str r0, [sp]
@@ -941,7 +941,7 @@ _02254FB0:
ldr r0, [r5, #0x14]
mov r1, #7
lsl r3, r3, #8
- bl FUN_02017CE8
+ bl BgCopyOrUncompressTilemapBufferRangeToVram
mov r0, #0xa1
mov r1, #0
lsl r0, r0, #2
@@ -1088,7 +1088,7 @@ _022550D4:
cmp r0, #0
beq _022551CA
ldr r0, _022551DC ; =0x000005E5
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x9e
lsl r0, r0, #2
ldrh r1, [r5, r0]
@@ -1112,7 +1112,7 @@ _02255100:
cmp r1, r0
bge _022551CA
ldr r0, _022551DC ; =0x000005E5
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x9e
lsl r0, r0, #2
ldrh r1, [r5, r0]
@@ -1163,7 +1163,7 @@ _02255160:
cmp r0, r1
bne _0225519C
ldr r0, _022551DC ; =0x000005E5
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0x18
ldr r2, [r5, #4]
mul r1, r4
@@ -1188,7 +1188,7 @@ _022551A4:
cmp r1, r0
bne _022551CA
ldr r0, _022551DC ; =0x000005E5
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r5, #4]
ldr r0, _022551E0 ; =0x000004BF
mov r2, #1
@@ -1322,7 +1322,7 @@ MOD51_02255294: ; 0x02255294
sub r1, r1, #1
strh r1, [r4, r0]
ldr r0, _022552F8 ; =0x000005E5
- bl FUN_020054C8
+ bl PlaySE
pop {r4, pc}
_022552C6:
lsr r0, r1, #1
@@ -1343,7 +1343,7 @@ _022552C6:
add r1, r2, #1
strh r1, [r4, r0]
ldr r0, _022552F8 ; =0x000005E5
- bl FUN_020054C8
+ bl PlaySE
_022552F0:
pop {r4, pc}
nop
@@ -1487,7 +1487,7 @@ _022553BE:
ldr r0, [sp, #0x1c]
mov r1, #7
mov r2, #0
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r3, [sp, #0x24]
add r1, r4, #4
lsl r6, r3, #2
@@ -1497,7 +1497,7 @@ _022553BE:
ldr r3, [r3, r6]
lsr r1, r1, #0x18
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [sp, #0x40]
add r4, r4, #1
add r5, #0x38
@@ -1507,13 +1507,13 @@ _022553BE:
_02255422:
ldr r0, [sp, #0x1c]
mov r1, #7
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r1, #6
lsl r1, r1, #8
bl DC_FlushRange
ldr r0, [sp, #0x1c]
mov r1, #7
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r2, r0, #0
mov r0, #0
str r0, [sp]
@@ -1521,7 +1521,7 @@ _02255422:
ldr r0, [sp, #0x1c]
mov r1, #7
lsl r3, r3, #8
- bl FUN_02017CE8
+ bl BgCopyOrUncompressTilemapBufferRangeToVram
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -1946,4 +1946,3 @@ MOD51_022557C4: ; 0x022557C4
.global MOD51_02255800
MOD51_02255800: ; 0x02255800
.space 0x4
-
diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c
index 41f2706a..08da79f4 100644
--- a/arm9/modules/52/src/module_52.c
+++ b/arm9/modules/52/src/module_52.c
@@ -159,7 +159,7 @@ THUMB_FUNC BOOL MOD52_021D74E0(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -179,7 +179,7 @@ THUMB_FUNC BOOL MOD52_021D750C(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0XFFFFFFFF, &UNK_020FD144);
return 1;
@@ -189,7 +189,7 @@ THUMB_FUNC BOOL MOD52_021D7528(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -211,7 +211,7 @@ THUMB_FUNC BOOL MOD52_021D7560(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0xFFFFFFFF, &UNK_020F2B7C);
return 1;
@@ -221,7 +221,7 @@ THUMB_FUNC BOOL MOD52_021D757C(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_0201681C(3, 0x4d, 2 << 16);
+ CreateHeap(3, 0x4d, 2 << 16);
InitializeMainRNG();
return 1;
@@ -252,7 +252,7 @@ THUMB_FUNC BOOL MOD52_021D75E8(struct UnkStruct_02006234 *arg1, u32 *arg2)
{
#pragma unused(arg1)
#pragma unused(arg2)
- FUN_020168D0(0x4d);
+ DestroyHeap(0x4d);
RegisterMainOverlay(0XFFFFFFFF, &UNK_020F2B8C);
return 1;
diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s
index d070f979..0bff7b6e 100644
--- a/arm9/modules/53/asm/module_53.s
+++ b/arm9/modules/53/asm/module_53.s
@@ -37,7 +37,7 @@ _021D74F6:
mov r0, #3
mov r1, #0x27
lsl r2, r2, #6
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7640 ; =0x0000940C
add r0, r6, #0
mov r2, #0x27
@@ -47,7 +47,7 @@ _021D74F6:
add r4, r0, #0
bl memset
mov r0, #0x27
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4]
mov r0, #0x27
bl ScrStrBufs_new
@@ -60,7 +60,7 @@ _021D74F6:
str r0, [r4, #0x10]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD53_021D78D0
ldr r0, [r4]
bl MOD53_021D78F0
@@ -417,7 +417,7 @@ _021D786E:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x27
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #2
bl FUN_02032B6C
mov r0, #1
@@ -436,7 +436,7 @@ MOD53_021D78A8: ; 0x021D78A8
bl FUN_0201C30C
bl FUN_02009F80
add r0, r4, #0
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D78C8 ; =0x027E0000
ldr r1, _021D78CC ; =0x00003FF8
mov r0, #1
@@ -482,7 +482,7 @@ MOD53_021D78F0: ; 0x021D78F0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D79E4 ; =0x021D9518
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -497,10 +497,10 @@ MOD53_021D78F0: ; 0x021D78F0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D79E8 ; =0x021D9550
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -515,10 +515,10 @@ MOD53_021D78F0: ; 0x021D78F0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D79EC ; =0x021D956C
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -533,7 +533,7 @@ MOD53_021D78F0: ; 0x021D78F0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D79F0 ; =0x021D9588
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -548,10 +548,10 @@ MOD53_021D78F0: ; 0x021D78F0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D79F4 ; =0x021D9534
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -566,17 +566,17 @@ MOD53_021D78F0: ; 0x021D78F0
add r0, r4, #0
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x27
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x27
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x9c
pop {r4, r5, pc}
nop
@@ -732,22 +732,22 @@ MOD53_021D7B24: ; 0x021D7B24
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -1320,7 +1320,7 @@ MOD53_021D7FDC: ; 0x021D7FDC
add r1, r7, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xb6
lsl r0, r0, #2
add r0, r7, r0
@@ -1341,7 +1341,7 @@ MOD53_021D7FDC: ; 0x021D7FDC
ldr r0, [r7]
add r1, r7, r1
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xb2
lsl r0, r0, #2
add r0, r7, r0
@@ -1363,7 +1363,7 @@ MOD53_021D7FDC: ; 0x021D7FDC
add r1, r7, r1
mov r2, #1
mov r3, #0x19
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xba
lsl r0, r0, #2
add r0, r7, r0
@@ -1412,7 +1412,7 @@ _021D80A8:
add r1, r5, #0
mov r2, #4
mov r3, #5
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -1449,7 +1449,7 @@ MOD53_021D8104: ; 0x021D8104
add r5, r6, r0
_021D8110:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #5
@@ -1457,15 +1457,15 @@ _021D8110:
mov r0, #0xba
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xb2
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xb6
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD53_021D8104
@@ -1577,7 +1577,7 @@ _021D8200:
ldr r1, [sp, #8]
bl MOD53_021D83DC
ldr r0, _021D83B4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _021D8316
_021D821A:
mov r1, #0xc1
@@ -1597,7 +1597,7 @@ _021D821A:
cmp r1, r0
beq _021D8246
ldr r0, _021D83B8 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
b _021D8316
_021D8246:
bl FUN_02030F20
@@ -1621,7 +1621,7 @@ _021D8246:
mov r0, #1
str r0, [sp, #4]
ldr r0, _021D83B4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _021D8316
_021D8280:
ldr r1, _021D83C0 ; =0x0000438B
@@ -1630,7 +1630,7 @@ _021D8280:
cmp r0, #2
bne _021D8292
ldr r0, _021D83B8 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
b _021D8316
_021D8292:
mov r1, #1
@@ -1649,7 +1649,7 @@ _021D8292:
mov r0, #1
str r0, [sp, #4]
ldr r0, _021D83B4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _021D8316
_021D82BE:
ldr r0, [sp, #8]
@@ -1695,7 +1695,7 @@ _021D82EE:
ldr r0, [sp]
strb r1, [r0, r2]
ldr r0, _021D83C8 ; =0x000005E5
- bl FUN_020054C8
+ bl PlaySE
_021D8316:
ldr r0, _021D83CC ; =0x021D94F0
bl FUN_02020968
@@ -1904,7 +1904,7 @@ _021D84BE:
mov r1, #2
bl MOD53_021D93E0
ldr r0, _021D84E4 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0x1e
add r2, r1, #0
ldr r0, _021D84E8 ; =0x04000050
@@ -2019,7 +2019,7 @@ MOD53_021D857C: ; 0x021D857C
cmp r0, #0
beq _021D85B4
ldr r0, _021D86CC ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
_021D85B4:
add sp, #4
add r0, r4, #0
@@ -2616,7 +2616,7 @@ _021D8A6E:
mov r1, #0x16
bl MOD53_021D93E0
ldr r0, _021D8AA8 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
bl FUN_02031190
cmp r0, #0
bne _021D8A96
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
index 25c18523..8795cd7f 100644
--- a/arm9/modules/54/asm/module_54.s
+++ b/arm9/modules/54/asm/module_54.s
@@ -38,7 +38,7 @@ _021D74F6:
mov r0, #3
mov r1, #0x33
lsl r2, r2, #0xc
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7638 ; =0x00004A60
add r0, r6, #0
mov r2, #0x33
@@ -48,7 +48,7 @@ _021D74F6:
add r4, r0, #0
bl memset
mov r0, #0x33
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4]
add r0, r6, #0
bl OverlayManager_GetField18
@@ -67,7 +67,7 @@ _021D74F6:
str r0, [r4, #0x28]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD54_021D7874
ldr r0, [r4]
bl MOD54_021D7894
@@ -333,7 +333,7 @@ _021D776C:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x33
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -402,7 +402,7 @@ MOD54_021D784C: ; 0x021D784C
bl FUN_0201C30C
bl FUN_02009F80
add r0, r4, #0
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D786C ; =0x027E0000
ldr r1, _021D7870 ; =0x00003FF8
mov r0, #1
@@ -448,7 +448,7 @@ MOD54_021D7894: ; 0x021D7894
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D7988 ; =0x021D9720
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -463,10 +463,10 @@ MOD54_021D7894: ; 0x021D7894
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D798C ; =0x021D973C
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -481,10 +481,10 @@ MOD54_021D7894: ; 0x021D7894
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7990 ; =0x021D96CC
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -499,7 +499,7 @@ MOD54_021D7894: ; 0x021D7894
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D7994 ; =0x021D96E8
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -514,10 +514,10 @@ MOD54_021D7894: ; 0x021D7894
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7998 ; =0x021D9704
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -532,17 +532,17 @@ MOD54_021D7894: ; 0x021D7894
add r0, r4, #0
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x33
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x33
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x9c
pop {r4, r5, pc}
nop
@@ -660,19 +660,19 @@ MOD54_021D7A6C: ; 0x021D7A6C
push {r4, lr}
add r4, r0, #0
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -1076,7 +1076,7 @@ MOD54_021D7DB4: ; 0x021D7DB4
add r1, r4, r1
mov r2, #5
mov r3, #0x1a
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xbe
lsl r0, r0, #2
add r0, r4, r0
@@ -1098,7 +1098,7 @@ MOD54_021D7DB4: ; 0x021D7DB4
add r1, r4, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xba
lsl r0, r0, #2
add r0, r4, r0
@@ -1120,7 +1120,7 @@ MOD54_021D7DB4: ; 0x021D7DB4
add r1, r4, r1
mov r2, #0
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xc2
lsl r0, r0, #2
ldr r1, [r4, #0x48]
@@ -1143,7 +1143,7 @@ MOD54_021D7DB4: ; 0x021D7DB4
add r1, r4, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xa6
lsl r0, r0, #2
add r0, r4, r0
@@ -1205,19 +1205,19 @@ MOD54_021D7EDC: ; 0x021D7EDC
mov r0, #0xa6
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xc2
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xbe
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xba
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
.align 2, 0
thumb_func_end MOD54_021D7EDC
@@ -1318,7 +1318,7 @@ MOD54_021D7F70: ; 0x021D7F70
pop {r3, r4, pc}
_021D7FCC:
ldr r0, _021D8094 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #4
pop {r3, r4, pc}
_021D7FD6:
@@ -1343,7 +1343,7 @@ _021D7FD6:
pop {r3, r4, pc}
_021D8002:
ldr r0, _021D8094 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #4
pop {r3, r4, pc}
_021D800C:
@@ -1378,7 +1378,7 @@ _021D800C:
pop {r3, r4, pc}
_021D8050:
ldr r0, _021D8094 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add sp, #4
pop {r3, r4, pc}
_021D805A:
@@ -1536,7 +1536,7 @@ MOD54_021D8150: ; 0x021D8150
tst r0, r1
beq _021D8178
ldr r0, _021D8274 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
_021D8178:
add r0, r5, #0
bl MOD54_021D80A0
@@ -1554,7 +1554,7 @@ _021D8184:
tst r0, r1
beq _021D819C
ldr r0, _021D8274 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
_021D819C:
add r0, r5, #0
bl MOD54_021D80A0
@@ -1803,7 +1803,7 @@ _021D838A:
tst r0, r1
beq _021D839A
ldr r0, _021D8418 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
_021D839A:
add r0, r5, #0
bl MOD54_021D80A0
@@ -2164,7 +2164,7 @@ _021D864A:
tst r0, r1
beq _021D865A
ldr r0, _021D86D8 ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
_021D865A:
add r0, r5, #0
bl MOD54_021D80A0
@@ -3221,7 +3221,7 @@ _021D8E3E:
cmp r0, #0
beq _021D8E5C
ldr r0, _021D8E60 ; =0x0000064F
- bl FUN_020054C8
+ bl PlaySE
_021D8E5C:
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s
index b9f3c277..ce354a55 100644
--- a/arm9/modules/55/asm/module_55.s
+++ b/arm9/modules/55/asm/module_55.s
@@ -43,9 +43,9 @@ MOD55_021D7504: ; 0x021D7504
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #0x34
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
bl MOD55_021D780C
ldr r0, [r4, #4]
@@ -89,7 +89,7 @@ _021D7580:
mov r0, #3
mov r1, #0x34
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7610 ; =0x0000041C
add r0, r6, #0
mov r2, #0x34
@@ -164,7 +164,7 @@ _021D7628:
mov r0, #3
mov r1, #0x34
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D76B8 ; =0x0000041C
add r0, r6, #0
mov r2, #0x34
@@ -349,7 +349,7 @@ MOD55_021D77AC: ; 0x021D77AC
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x34
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
thumb_func_end MOD55_021D77AC
@@ -368,7 +368,7 @@ MOD55_021D77D0: ; 0x021D77D0
bl FUN_020081C4
_021D77E6:
ldr r0, [r4, #4]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
bl FUN_02009F80
ldr r3, _021D7804 ; =0x027E0000
@@ -406,7 +406,7 @@ MOD55_021D781C: ; 0x021D781C
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D7978 ; =0x021DA34C
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -421,15 +421,15 @@ MOD55_021D781C: ; 0x021D781C
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D797C ; =0x021DA368
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -444,15 +444,15 @@ MOD55_021D781C: ; 0x021D781C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7980 ; =0x021DA384
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -467,15 +467,15 @@ MOD55_021D781C: ; 0x021D781C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7984 ; =0x021DA3A0
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -490,15 +490,15 @@ MOD55_021D781C: ; 0x021D781C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7988 ; =0x021DA3BC
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -513,32 +513,32 @@ MOD55_021D781C: ; 0x021D781C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, _021D798C ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -691,22 +691,22 @@ MOD55_021D7AA4: ; 0x021D7AA4
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -1211,13 +1211,13 @@ MOD55_021D7EE4: ; 0x021D7EE4
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D7F02
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D7F02:
mov r0, #0
str r0, [sp]
@@ -1233,7 +1233,7 @@ _021D7F02:
ldr r0, [r5, #4]
add r1, r5, r1
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
@@ -1264,7 +1264,7 @@ _021D7F02:
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r6, #0
mov r0, #0xd2
lsl r0, r0, #2
@@ -1274,11 +1274,11 @@ _021D7F02:
add r7, r5, #0
_021D7F76:
add r0, r4, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D7F86
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_021D7F86:
ldr r0, [sp, #0x14]
ldr r1, [sp, #0x18]
@@ -1302,7 +1302,7 @@ _021D7F86:
add r1, r4, #0
mov r2, #3
mov r3, #7
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -1347,7 +1347,7 @@ _021D8002:
mov r3, #0x90
bl MOD55_021D80F0
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x18]
add r6, r6, #1
add r0, #0x3c
@@ -1385,7 +1385,7 @@ MOD55_021D8044: ; 0x021D8044
ldr r0, [sp]
mov r1, #1
ldr r0, [r0, #4]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
mov r1, #0xf2
ldr r0, [sp]
@@ -1452,7 +1452,7 @@ _021D80C6:
ldr r0, [sp]
mov r1, #1
ldr r0, [r0, #4]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
nop
@@ -1512,11 +1512,11 @@ MOD55_021D8140: ; 0x021D8140
add r5, r6, r0
_021D814C:
add r0, r5, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D815C
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
_021D815C:
add r4, r4, #1
add r5, #0x10
@@ -1528,11 +1528,11 @@ _021D815C:
add r4, r6, r0
_021D816C:
add r0, r4, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D817C
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_021D817C:
add r5, r5, #1
add r4, #0x10
@@ -1541,35 +1541,35 @@ _021D817C:
mov r0, #0xce
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D819C
mov r0, #0xce
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D819C:
mov r0, #0xe6
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D81B4
mov r0, #0xe6
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D81B4:
mov r0, #0xe2
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D81CC
mov r0, #0xe2
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D81CC:
pop {r4, r5, r6, pc}
.align 2, 0
@@ -1602,7 +1602,7 @@ _021D81EE:
tst r1, r0
beq _021D824C
ldr r0, _021D82BC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xf2
lsl r0, r0, #2
ldrb r1, [r4, r0]
@@ -1652,7 +1652,7 @@ _021D824C:
tst r0, r1
beq _021D8262
ldr r0, _021D82BC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x3b
mov r1, #0x11
lsl r0, r0, #4
@@ -1669,7 +1669,7 @@ _021D8262:
cmp r0, #0
beq _021D82B2
ldr r0, _021D82BC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xf2
lsl r0, r0, #2
ldrb r1, [r4, r0]
@@ -1688,7 +1688,7 @@ _021D828C:
cmp r0, #3
bhs _021D82B2
ldr r0, _021D82BC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xf2
lsl r0, r0, #2
ldrb r1, [r4, r0]
@@ -2207,7 +2207,7 @@ MOD55_021D868C: ; 0x021D868C
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x3b
mov r1, #6
lsl r0, r0, #4
@@ -2245,7 +2245,7 @@ MOD55_021D86D4: ; 0x021D86D4
ldr r0, [sp]
mov r1, #1
ldr r0, [r0, #4]
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
str r0, [sp, #0x24]
mov r1, #0xf2
ldr r0, [sp]
@@ -2482,7 +2482,7 @@ _021D88AA:
ldr r0, [sp]
mov r1, #1
ldr r0, [r0, #4]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -2642,11 +2642,11 @@ _021D8A00:
cmp r7, #0
bne _021D8A0C
add r0, r5, #0
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
b _021D8A12
_021D8A0C:
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_021D8A12:
ldr r0, [sp, #0x14]
add r4, r4, #1
@@ -2713,7 +2713,7 @@ MOD55_021D8A7C: ; 0x021D8A7C
bl FUN_020286EC
ldr r0, [r5, #4]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -2748,13 +2748,13 @@ MOD55_021D8A7C: ; 0x021D8A7C
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D8AEE
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D8AEE:
mov r0, #0
str r0, [sp]
@@ -2770,7 +2770,7 @@ _021D8AEE:
ldr r0, [r5, #4]
add r1, r5, r1
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
@@ -2801,17 +2801,17 @@ _021D8AEE:
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0xde
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D8B6C
mov r0, #0xde
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D8B6C:
mov r0, #0x15
str r0, [sp]
@@ -2829,7 +2829,7 @@ _021D8B6C:
add r1, r5, r1
mov r2, #3
mov r3, #0xf
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xde
lsl r0, r0, #2
add r0, r5, r0
@@ -2859,7 +2859,7 @@ _021D8B6C:
mov r0, #0xde
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
bl MOD55_021D8A28
mov r0, #0xae
@@ -2878,11 +2878,11 @@ _021D8BEE:
str r0, [sp, #0x18]
_021D8BF2:
add r0, r4, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D8C02
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_021D8C02:
lsr r2, r6, #0x1f
lsl r1, r6, #0x1e
@@ -2914,12 +2914,12 @@ _021D8C02:
add r1, r4, #0
mov r2, #3
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
mov r1, #0
bl FillWindowPixelBuffer
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r6, r6, #1
add r4, #0x10
add r7, #0x18
@@ -3052,7 +3052,7 @@ _021D8D52:
tst r1, r0
beq _021D8D88
ldr r0, _021D8E60 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _021D8E64 ; =0x000003CB
ldrb r0, [r5, r1]
cmp r0, #0
@@ -3077,7 +3077,7 @@ _021D8D88:
tst r1, r3
beq _021D8D9E
ldr r0, _021D8E60 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x3b
mov r1, #6
lsl r0, r0, #4
@@ -3095,7 +3095,7 @@ _021D8D9E:
sub r1, r1, #1
strb r1, [r5, r0]
ldr r0, _021D8E60 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0
add r0, r5, #0
mvn r1, r1
@@ -3112,7 +3112,7 @@ _021D8DC4:
add r1, r1, #1
strb r1, [r5, r0]
ldr r0, _021D8E60 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #1
bl MOD55_021D8CBC
@@ -3131,7 +3131,7 @@ _021D8DE6:
sub r0, r2, #1
strb r1, [r5, r0]
ldr r0, _021D8E60 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r1, #3
add r0, r5, #0
mvn r1, r1
@@ -3151,7 +3151,7 @@ _021D8E10:
sub r0, r2, #1
strb r1, [r5, r0]
ldr r0, _021D8E60 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #4
bl MOD55_021D8CBC
@@ -3259,13 +3259,13 @@ _021D8F02:
mov r0, #0xe2
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D8F1A
mov r0, #0xe2
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D8F1A:
mov r1, #9
str r1, [sp]
@@ -3288,7 +3288,7 @@ _021D8F1A:
add r1, r5, r1
mov r2, #2
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe2
lsl r0, r0, #2
ldr r2, _021D8FDC ; =0x000001D9
@@ -3312,7 +3312,7 @@ _021D8F1A:
str r0, [r5, r1]
sub r1, #0x20
add r0, r5, r1
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x34
bl PlayerProfile_new
mov r1, #0xf2
@@ -3388,7 +3388,7 @@ _021D9002:
cmp r7, r0
beq _021D902C
ldr r0, _021D90D4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021D902C:
mov r0, #1
mvn r0, r0
@@ -3402,7 +3402,7 @@ _021D902C:
pop {r4, r5, r6, r7, pc}
_021D9040:
ldr r0, _021D90D4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x2b
lsl r0, r0, #4
ldr r0, [r5, r0]
@@ -3420,12 +3420,12 @@ _021D9040:
b _021D9098
_021D9068:
ldr r0, _021D90D4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
cmp r4, #0x14
bne _021D9092
ldr r0, [r5, #4]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -3452,7 +3452,7 @@ _021D9098:
mov r0, #0xe2
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xea
lsl r0, r0, #2
mov r1, #0
@@ -3518,7 +3518,7 @@ MOD55_021D90D8: ; 0x021D90D8
add r0, r6, #0
bl CopyPlayerName
ldr r0, _021D9180 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r2, [sp, #4]
add r0, r5, #0
add r1, r4, #0
@@ -3562,7 +3562,7 @@ MOD55_021D9184: ; 0x021D9184
add r4, r1, #0
ldr r0, [r5, #4]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3577,13 +3577,13 @@ MOD55_021D9184: ; 0x021D9184
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D91D6
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D91D6:
mov r0, #0
str r0, [sp]
@@ -3600,7 +3600,7 @@ _021D91D6:
str r0, [sp, #0x10]
ldr r0, [r5, #4]
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
@@ -3645,17 +3645,17 @@ _021D91D6:
mov r0, #0xe6
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D9278
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D9278:
mov r1, #0xd
str r1, [sp]
@@ -3672,7 +3672,7 @@ _021D9278:
add r1, r5, r1
mov r2, #3
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
@@ -3724,7 +3724,7 @@ _021D92CE:
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r1, #0
mov r0, #0
eor r1, r4
@@ -3738,13 +3738,13 @@ _021D92CE:
mov r0, #0xe2
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D9338
mov r0, #0xe2
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D9338:
mov r0, #8
str r0, [sp]
@@ -3762,7 +3762,7 @@ _021D9338:
add r1, r5, r1
mov r2, #3
mov r3, #9
- bl FUN_02019064
+ bl AddWindowParameterized
add r2, r5, #0
add r2, #0xb8
ldr r0, [r5, #0x10]
@@ -3807,7 +3807,7 @@ _021D9338:
mov r0, #0xe2
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_021D93C2:
mov r0, #0x3b
mov r1, #0x13
@@ -3914,7 +3914,7 @@ MOD55_021D9474: ; 0x021D9474
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D9568 ; =0x021DA2F8
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -3929,15 +3929,15 @@ MOD55_021D9474: ; 0x021D9474
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D956C ; =0x021DA330
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -3952,15 +3952,15 @@ MOD55_021D9474: ; 0x021D9474
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D9570 ; =0x021DA314
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -3975,32 +3975,32 @@ MOD55_021D9474: ; 0x021D9474
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x34
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #1
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
add r1, r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
add sp, #0x64
pop {r4, r5, pc}
.align 2, 0
@@ -4096,7 +4096,7 @@ _021D9618:
ldr r0, [r4, #4]
bl MOD55_021D7AA4
mov r0, #0x34
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
bl MOD55_021D9474
bl MOD55_021D9574
@@ -4136,13 +4136,13 @@ _021D9618:
mov r0, #0xe6
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D969A
mov r0, #0xe6
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D969A:
mov r0, #0
str r0, [sp]
@@ -4159,7 +4159,7 @@ _021D969A:
str r0, [sp, #0x10]
ldr r0, [r4, #4]
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe6
lsl r0, r0, #2
add r0, r4, r0
@@ -4211,17 +4211,17 @@ _021D969A:
mov r0, #0xe6
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0xe2
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D974E
mov r0, #0xe2
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D974E:
mov r0, #0x12
str r0, [sp]
@@ -4238,7 +4238,7 @@ _021D974E:
str r0, [sp, #0x10]
ldr r0, [r4, #4]
mov r2, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe2
lsl r0, r0, #2
add r0, r4, r0
@@ -4276,7 +4276,7 @@ _021D974E:
mov r0, #0xe2
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x34
bl FUN_02006D98
add r1, r4, #0
@@ -4322,7 +4322,7 @@ _021D974E:
bne _021D9864
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r2, _021D9A5C ; =0x00000FFF
mov r7, #0x10
mov ip, r0
@@ -4348,18 +4348,18 @@ _021D9844:
blt _021D983C
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
_021D9864:
mov r0, #0xd2
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021D987C
mov r0, #0xd2
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_021D987C:
mov r0, #4
str r0, [sp]
@@ -4377,7 +4377,7 @@ _021D987C:
add r1, r4, r1
mov r2, #3
mov r3, #0xf
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xd2
lsl r0, r0, #2
add r0, r4, r0
@@ -4775,7 +4775,7 @@ _021D9C18:
mov r0, #0xd2
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [sp, #0x20]
bl FreeToHeap
mov r0, #0x3b
@@ -4828,7 +4828,7 @@ _021D9C82:
tst r0, r1
beq _021D9CB2
ldr r0, _021D9CC0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -4895,7 +4895,7 @@ _021D9D16:
ldr r0, [r5, #4]
bl MOD55_021D7AA4
mov r0, #0x34
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r5, #4]
bl MOD55_021D781C
add r0, r5, #0
@@ -4951,7 +4951,7 @@ MOD55_021D9D88: ; 0x021D9D88
ldr r0, [r6, #4]
str r1, [sp, #0x10]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -5354,13 +5354,13 @@ MOD55_021DA0A4: ; 0x021DA0A4
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021DA0D0
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021DA0D0:
mov r0, #0x13
str r0, [sp]
@@ -5378,7 +5378,7 @@ _021DA0D0:
ldr r0, [r5, #4]
add r1, r5, r1
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
add r2, r5, #0
add r2, #0xb8
ldr r0, [r5, #0x10]
@@ -5435,13 +5435,13 @@ MOD55_021DA15C: ; 0x021DA15C
lsl r0, r0, #2
add r0, r5, r0
add r4, r1, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _021DA17C
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_021DA17C:
mov r0, #0x13
str r0, [sp]
@@ -5459,7 +5459,7 @@ _021DA17C:
ldr r0, [r5, #4]
add r1, r5, r1
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
add r2, r5, #0
add r2, #0xb8
ldr r0, [r5, #0x10]
@@ -5505,7 +5505,7 @@ _021DA17C:
mov r0, #0xce
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index 531194c6..7e036d8c 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -267,9 +267,9 @@ MOD56_02211FD4: ; 0x02211FD4
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #0x36
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r1, r4, #0
add r1, #0xc0
str r0, [r1]
@@ -340,14 +340,14 @@ _02212098:
mov r0, #3
mov r1, #0x36
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
b _022120BE
_022120B2:
mov r2, #0xb
mov r0, #3
mov r1, #0x36
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
_022120BE:
mov r1, #0x3f
add r0, r4, #0
@@ -564,7 +564,7 @@ _02212274:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x36
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
@@ -575,7 +575,7 @@ MOD56_0221228C: ; 0x0221228C
push {r3, lr}
add r0, #0xc0
ldr r0, [r0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
bl FUN_02009F80
ldr r3, _022122AC ; =0x027E0000
@@ -623,7 +623,7 @@ MOD56_022122D4: ; 0x022122D4
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _02212430 ; =0x02216368
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -638,15 +638,15 @@ MOD56_022122D4: ; 0x022122D4
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x36
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02212434 ; =0x02216384
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -661,15 +661,15 @@ MOD56_022122D4: ; 0x022122D4
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0x36
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02212438 ; =0x022163A0
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -684,15 +684,15 @@ MOD56_022122D4: ; 0x022122D4
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0x36
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0221243C ; =0x022163BC
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -707,15 +707,15 @@ MOD56_022122D4: ; 0x022122D4
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
mov r3, #0x36
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02212440 ; =0x022163D8
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -730,32 +730,32 @@ MOD56_022122D4: ; 0x022122D4
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x36
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x36
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, _02212444 ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -899,22 +899,22 @@ MOD56_02212540: ; 0x02212540
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -1306,7 +1306,7 @@ MOD56_022128A4: ; 0x022128A4
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _022128CE
mov r0, #0xd7
@@ -1317,7 +1317,7 @@ MOD56_022128A4: ; 0x022128A4
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_022128CE:
mov r0, #1
str r0, [sp]
@@ -1337,7 +1337,7 @@ _022128CE:
add r1, r4, r1
mov r2, #3
mov r3, #5
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
@@ -1376,7 +1376,7 @@ _022128CE:
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r3, r4, pc}
nop
@@ -1391,57 +1391,57 @@ MOD56_0221295C: ; 0x0221295C
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02212978
mov r0, #0xd7
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_02212978:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02212990
mov r0, #0xcf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_02212990:
mov r0, #0xe7
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _022129A8
mov r0, #0xe7
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_022129A8:
mov r0, #0xd3
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _022129C0
mov r0, #0xd3
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_022129C0:
mov r0, #0xdf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _022129D8
mov r0, #0xdf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_022129D8:
add r0, r4, #0
add r0, #0xb4
@@ -1466,13 +1466,13 @@ _02212A00:
mov r0, #0xdb
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02212A18
mov r0, #0xdb
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_02212A18:
pop {r4, pc}
.align 2, 0
@@ -1544,16 +1544,16 @@ _02212A9A:
bne _02212AFA
mov r0, #0
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
add r0, r5, #0
mov r1, #0x11
bl MOD56_02215FF4
@@ -1709,16 +1709,16 @@ MOD56_02212BE8: ; 0x02212BE8
bl MOD56_02215FF4
mov r0, #0
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0x36
str r0, [sp]
add r0, r5, #0
@@ -1772,7 +1772,7 @@ _02212C74:
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
cmp r6, #0
bne _02212CB4
add r0, r5, #0
@@ -1832,7 +1832,7 @@ _02212CEC:
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
cmp r6, #0
bne _02212D44
ldr r0, [r5]
@@ -1900,7 +1900,7 @@ _02212D74:
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
cmp r6, #0
bne _02212DC6
mov r1, #0x3b
@@ -1947,16 +1947,16 @@ MOD56_02212DD8: ; 0x02212DD8
add r4, r1, #0
mov r0, #0
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #3
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #2
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0x3b
mov r1, #0xf
lsl r0, r0, #4
@@ -2272,7 +2272,7 @@ MOD56_02213048: ; 0x02213048
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _0221307C
mov r0, #0xdb
@@ -2283,7 +2283,7 @@ MOD56_02213048: ; 0x02213048
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_0221307C:
mov r0, #0x3b
mov r1, #8
@@ -2329,7 +2329,7 @@ MOD56_022130A4: ; 0x022130A4
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _022130D8
mov r0, #0xdb
@@ -2340,7 +2340,7 @@ MOD56_022130A4: ; 0x022130A4
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_022130D8:
add r0, r5, #0
mov r1, #0x33
@@ -2452,7 +2452,7 @@ MOD56_02213194: ; 0x02213194
add r0, #0xc0
ldr r0, [r0]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -2473,7 +2473,7 @@ MOD56_02213194: ; 0x02213194
mov r0, #0xdf
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r6, #0
add r0, #0xb4
mov r1, #0
@@ -2740,7 +2740,7 @@ _022133DA:
str r1, [r5, r0]
sub r0, #0x44
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02213412
mov r0, #0xdb
@@ -2751,7 +2751,7 @@ _022133DA:
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_02213412:
add r0, r4, #0
pop {r3, r4, r5, pc}
@@ -2774,7 +2774,7 @@ MOD56_0221341C: ; 0x0221341C
mov r0, #0xd3
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0221344C
add r0, r6, #0
@@ -3004,7 +3004,7 @@ _022135DC:
mov r0, #0xd3
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_02213614:
add sp, #0x10
pop {r4, r5, r6, pc}
@@ -3139,7 +3139,7 @@ _022136B8:
mov r0, #0xdf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_02213706:
ldr r0, [r4]
add r1, r5, #0
@@ -3174,7 +3174,7 @@ _02213722:
mov r0, #0xdf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_0221374C:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
@@ -3253,7 +3253,7 @@ MOD56_0221375C: ; 0x0221375C
strh r1, [r2, #6]
ldr r0, [r0]
mov r1, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r1, r0, #0
mov r2, #0
cmp r4, #0x11
@@ -3371,7 +3371,7 @@ MOD56_022138A4: ; 0x022138A4
add r7, r1, #0
ldr r0, [r0]
mov r1, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r6, #0
mov r4, #5
_022138BA:
@@ -3426,7 +3426,7 @@ _02213906:
add r5, #0xc0
ldr r0, [r5]
mov r1, #0
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD56_022138A4
@@ -3437,7 +3437,7 @@ MOD56_02213924: ; 0x02213924
cmp r2, #0
bne _02213930
ldr r0, _02213934 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02213930:
pop {r3, pc}
nop
@@ -3508,7 +3508,7 @@ MOD56_02213990: ; 0x02213990
mov r0, #0xdf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _022139D0
mov r0, #0xdf
@@ -3519,7 +3519,7 @@ MOD56_02213990: ; 0x02213990
mov r0, #0xdf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_022139D0:
mov r0, #5
str r0, [sp]
@@ -3539,7 +3539,7 @@ _022139D0:
add r1, r5, r1
mov r2, #3
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r6, _02213A3C ; =0x022163F4
add r3, sp, #0x14
add r2, r3, #0
@@ -3584,7 +3584,7 @@ MOD56_02213A40: ; 0x02213A40
mov r0, #0xd3
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02213A6A
mov r0, #0xd3
@@ -3595,7 +3595,7 @@ MOD56_02213A40: ; 0x02213A40
mov r0, #0xd3
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_02213A6A:
mov r0, #0x15
str r0, [sp]
@@ -3614,7 +3614,7 @@ _02213A6A:
add r1, r4, r1
mov r2, #3
mov r3, #7
- bl FUN_02019064
+ bl AddWindowParameterized
add sp, #0x14
pop {r3, r4, pc}
thumb_func_end MOD56_02213A40
@@ -3632,7 +3632,7 @@ MOD56_02213A94: ; 0x02213A94
add r0, #0xc0
ldr r0, [r0]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -3648,7 +3648,7 @@ MOD56_02213A94: ; 0x02213A94
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02213AF0
mov r0, #0xd7
@@ -3659,7 +3659,7 @@ MOD56_02213A94: ; 0x02213A94
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_02213AF0:
add r0, r5, #0
add r0, #0xb0
@@ -3669,7 +3669,7 @@ _02213AF0:
mov r0, #0xdf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
add r0, #0xb4
mov r1, #0
@@ -3707,7 +3707,7 @@ _02213B2C:
add r1, r5, r1
mov r2, #3
mov r3, #4
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
@@ -3738,7 +3738,7 @@ _02213B2C:
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
bl MOD56_02216120
add r0, r5, #0
@@ -4020,7 +4020,7 @@ _02213DD2:
bl MOD56_02215EA4
_02213DDC:
ldr r0, _02213F88 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x3b
mov r1, #0x14
lsl r0, r0, #4
@@ -4041,7 +4041,7 @@ _02213E00:
cmp r0, #0
beq _02213E1C
ldr r0, _02213F8C ; =0x00000624
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x3b
mov r1, #0x2f
lsl r0, r0, #4
@@ -4093,7 +4093,7 @@ _02213E5C:
mov r0, #0xdf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
add r0, #0xb4
mov r1, #0
@@ -4153,7 +4153,7 @@ _02213EE8:
pop {r4, r5, r6, pc}
_02213EFA:
ldr r0, _02213F88 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #4]
ldrb r0, [r0, #0x1b]
bl MOD56_02211E88
@@ -4181,7 +4181,7 @@ _02213F2E:
pop {r4, r5, r6, pc}
_02213F32:
ldr r0, _02213F88 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #4]
ldrb r0, [r0, #0x1b]
bl MOD56_02211E88
@@ -5082,7 +5082,7 @@ _02214602:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02214642
mov r0, #0xe3
@@ -5093,7 +5093,7 @@ _02214602:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_02214642:
mov r0, #9
str r0, [sp]
@@ -5113,7 +5113,7 @@ _02214642:
add r1, r5, r1
mov r2, #2
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe3
lsl r0, r0, #2
ldr r2, _022146C8 ; =0x000001D9
@@ -5141,7 +5141,7 @@ _02214642:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
mov r1, #5
mov r2, #0
@@ -5206,11 +5206,11 @@ _0221471A:
add r0, r5, #0
bl MOD56_02216120
ldr r0, _02214804 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _022147CE
_02214730:
ldr r0, _02214804 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
cmp r4, #0xf
bne _02214752
cmp r7, #2
@@ -5249,7 +5249,7 @@ _0221476E:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
add r0, #0xbc
mov r2, #0xf7
@@ -5290,7 +5290,7 @@ _022147CE:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
add r0, #0xbc
mov r2, #0xf7
@@ -5363,7 +5363,7 @@ _02214868:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _0221488C
mov r0, #0xe3
@@ -5374,7 +5374,7 @@ _02214868:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_0221488C:
mov r1, #9
str r1, [sp]
@@ -5399,7 +5399,7 @@ _0221488C:
add r1, r5, r1
mov r2, #2
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe3
lsl r0, r0, #2
ldr r2, _0221491C ; =0x000001D9
@@ -5432,7 +5432,7 @@ _0221488C:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #1
add sp, #0x34
pop {r4, r5, r6, r7, pc}
@@ -5483,7 +5483,7 @@ _02214956:
pop {r4, r5, r6, pc}
_02214968:
ldr r0, _022149D0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x3b
mov r1, #0x24
lsl r0, r0, #4
@@ -5491,7 +5491,7 @@ _02214968:
b _02214994
_02214978:
ldr r0, _022149D0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r1, r4, #0
bl MOD56_0221617C
@@ -5510,7 +5510,7 @@ _02214994:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r3, _022149D4 ; =0x000003DE
add r0, r5, #0
add r2, r5, r3
@@ -5697,7 +5697,7 @@ _02214ADC:
add r1, r5, r1
mov r2, #2
mov r3, #0x10
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe3
lsl r0, r0, #2
ldr r2, _02214BB8 ; =0x000001D9
@@ -5724,7 +5724,7 @@ _02214ADC:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r1, [sp, #0x18]
add r0, r5, #0
bl MOD56_022160E4
@@ -5857,7 +5857,7 @@ _02214C36:
pop {r3, r4, r5, r6, r7, pc}
_02214C4A:
ldr r0, _02214E20 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x3b
mov r1, #0x13
lsl r0, r0, #4
@@ -5865,7 +5865,7 @@ _02214C4A:
b _02214DE2
_02214C5A:
ldr r0, _02214E20 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
cmp r5, #1
beq _02214C66
b _02214DD6
@@ -6068,7 +6068,7 @@ _02214DEC:
mov r0, #0xe3
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0xbc
mov r1, #0
@@ -6917,7 +6917,7 @@ MOD56_0221547C: ; 0x0221547C
add r4, r1, #0
ldr r0, [r0]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -6951,7 +6951,7 @@ MOD56_022154BC: ; 0x022154BC
add r7, r1, #0
ldr r0, [r0]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -6983,7 +6983,7 @@ MOD56_022154BC: ; 0x022154BC
mov r0, #0xe7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02215532
mov r0, #0xe7
@@ -6994,7 +6994,7 @@ MOD56_022154BC: ; 0x022154BC
mov r0, #0xe7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_02215532:
mov r0, #2
str r0, [sp]
@@ -7014,7 +7014,7 @@ _02215532:
ldr r0, [r0]
add r1, r5, r1
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xe7
lsl r0, r0, #2
add r0, r5, r0
@@ -7069,7 +7069,7 @@ _02215532:
mov r0, #0xe7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
mov r1, #0x29
mov r2, #0
@@ -7473,7 +7473,7 @@ _0221594C:
mov r0, #0xe7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x3b
mov r1, #0x36
lsl r0, r0, #4
@@ -7540,17 +7540,17 @@ MOD56_022159B0: ; 0x022159B0
mov r0, #0xe7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
add r0, #0xc0
ldr r0, [r0]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
add r0, #0xc0
ldr r0, [r0]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
bl MOD56_02216120
mov r3, #0
@@ -7595,7 +7595,7 @@ MOD56_022159B0: ; 0x022159B0
mov r0, #0xd7
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
bl MOD56_02212EFC
add r0, r5, #0
@@ -8169,7 +8169,7 @@ MOD56_02215EA4: ; 0x02215EA4
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02215EE0
mov r0, #0xdb
@@ -8180,12 +8180,12 @@ MOD56_02215EA4: ; 0x02215EA4
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_02215EE0:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02215F04
mov r0, #0xcf
@@ -8196,7 +8196,7 @@ _02215EE0:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_02215F04:
mov r0, #0x5e
lsl r0, r0, #2
@@ -8237,7 +8237,7 @@ _02215F30:
ldr r0, [r0]
add r1, r5, r1
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
cmp r6, #0
beq _02215F70
add r0, r5, #0
@@ -8281,7 +8281,7 @@ _02215F82:
mov r3, #0xa
bl FUN_0200D0BC
mov r0, #1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0
bl FUN_02002B7C
mov r3, #0
@@ -8302,7 +8302,7 @@ _02215F82:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -8320,7 +8320,7 @@ MOD56_02215FF4: ; 0x02215FF4
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02216024
mov r0, #0xdb
@@ -8331,12 +8331,12 @@ MOD56_02215FF4: ; 0x02215FF4
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_02216024:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02216048
mov r0, #0xcf
@@ -8347,7 +8347,7 @@ _02216024:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_02216048:
mov r3, #4
str r3, [sp]
@@ -8366,7 +8366,7 @@ _02216048:
ldr r0, [r0]
add r1, r5, r1
mov r2, #2
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r2, #0x56
add r0, #0xd0
@@ -8414,7 +8414,7 @@ _02216048:
mov r0, #0xdb
lsl r0, r0, #2
add r0, r5, r0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, pc}
nop
@@ -8480,7 +8480,7 @@ _02216154:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _02216178
mov r0, #0xcf
@@ -8491,7 +8491,7 @@ _02216154:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_02216178:
pop {r4, pc}
.align 2, 0
@@ -8663,7 +8663,7 @@ _022162B8:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _022162DC
mov r0, #0xcf
@@ -8674,7 +8674,7 @@ _022162B8:
mov r0, #0xcf
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
_022162DC:
pop {r4, pc}
.align 2, 0
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
index 481488f8..52ef15ff 100644
--- a/arm9/modules/57/asm/module_57.s
+++ b/arm9/modules/57/asm/module_57.s
@@ -28,12 +28,12 @@ MOD57_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #0xa
mov r0, #3
mov r1, #0x19
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D76F0 ; =0x00003320
add r0, r5, #0
mov r2, #0x19
@@ -48,7 +48,7 @@ MOD57_021D74E0: ; 0x021D74E0
add r1, #0xb4
str r0, [r1]
mov r0, #0x19
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4]
add r0, r4, #0
bl MOD57_021D79AC
@@ -68,7 +68,7 @@ MOD57_021D74E0: ; 0x021D74E0
add r0, r4, r0
bl MOD57_021D95A8
ldr r0, _021D76F8 ; =0x00000695
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021D76FC ; =0x000030E4
add r0, r4, r0
bl MOD57_021D9184
@@ -124,7 +124,7 @@ _021D75E4:
blo _021D75CE
ldr r0, [r4]
mov r1, #3
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r1, r4, #0
add r1, #0xb4
ldr r1, [r1]
@@ -404,7 +404,7 @@ _021D7832:
cmp r6, #4
bne _021D7856
ldr r0, _021D7938 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -561,7 +561,7 @@ MOD57_021D7944: ; 0x021D7944
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x19
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
mov r1, #0x7f
bl FUN_020051EC
@@ -839,7 +839,7 @@ MOD57_021D7B94: ; 0x021D7B94
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D7C90 ; =0x021D9774
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -854,10 +854,10 @@ MOD57_021D7B94: ; 0x021D7B94
str r0, [r3]
add r0, r4, #0
mov r3, #2
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7C94 ; =0x021D9790
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -872,10 +872,10 @@ MOD57_021D7B94: ; 0x021D7B94
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7C98 ; =0x021D97C8
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -890,10 +890,10 @@ MOD57_021D7B94: ; 0x021D7B94
str r0, [r3]
add r0, r4, #0
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7C9C ; =0x021D97E4
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -908,10 +908,10 @@ MOD57_021D7B94: ; 0x021D7B94
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7CA0 ; =0x021D97AC
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -926,10 +926,10 @@ MOD57_021D7B94: ; 0x021D7B94
str r0, [r3]
add r0, r4, #0
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x9c
pop {r4, r5, pc}
.align 2, 0
@@ -1214,19 +1214,19 @@ MOD57_021D7EDC: ; 0x021D7EDC
bl GX_EngineBToggleLayers
add r0, r4, #0
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -1272,7 +1272,7 @@ _021D7F46:
add r2, #0x80
str r2, [r4, r0]
ldr r0, _021D80E4 ; =0x00000696
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021D80DC ; =0x0000331A
ldrb r1, [r4, r0]
add r1, r1, #1
@@ -1336,7 +1336,7 @@ _021D7FB0:
bl MOD57_021D86E8
ldr r0, [r4]
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r1, r4, #0
add r1, #0xb4
ldr r1, [r1]
@@ -1366,7 +1366,7 @@ _021D8006:
bl MOD57_021D8FB8
ldr r0, [r4]
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
bl MOD57_021D8690
add r1, r4, #0
@@ -1845,7 +1845,7 @@ MOD57_021D83D8: ; 0x021D83D8
add r4, r1, #0
ldr r0, [r0]
mov r1, #2
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r7, r0, #0
lsl r0, r4, #2
add r0, #0x80
@@ -1878,7 +1878,7 @@ _021D8400:
ldr r0, [sp]
mov r1, #2
ldr r0, [r0]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD57_021D83D8
@@ -1909,7 +1909,7 @@ MOD57_021D8428: ; 0x021D8428
ldr r0, [r0]
add r1, r6, #0
lsr r4, r4, #0x18
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r2, #0
add r3, r0, r4
add r0, r2, #0
@@ -2212,10 +2212,10 @@ MOD57_021D8690: ; 0x021D8690
ldr r2, [r3, #0x14]
ldr r0, [r5]
ldr r3, [r3, #0x10]
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r0, [r5]
mov r1, #7
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
cmp r0, #0
beq _021D86CA
ldr r2, _021D86E0 ; =0x000032FC
@@ -2224,7 +2224,7 @@ MOD57_021D8690: ; 0x021D8690
mov r1, #7
add r2, #0xc
add r3, r4, #0
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
_021D86CA:
mov r0, #0
str r0, [sp]
@@ -2234,7 +2234,7 @@ _021D86CA:
mov r1, #7
add r2, #0xc
add r3, r4, #0
- bl FUN_02017CE8
+ bl BgCopyOrUncompressTilemapBufferRangeToVram
pop {r3, r4, r5, pc}
.align 2, 0
_021D86E0: .word 0x000032FC
@@ -2256,7 +2256,7 @@ MOD57_021D86E8: ; 0x021D86E8
mov r1, #7
mov r2, #0
mov r3, #0x14
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x10
pop {r3, pc}
.align 2, 0
@@ -2337,7 +2337,7 @@ MOD57_021D875C: ; 0x021D875C
cmp r0, #0
bne _021D8782
ldr r0, _021D87D8 ; =0x00000692
- bl FUN_020054C8
+ bl PlaySE
_021D8782:
mov r0, #0
ldrsb r1, [r4, r0]
@@ -2367,7 +2367,7 @@ _021D879A:
ldr r0, [r0, r1]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
_021D87BC:
mov r0, #2
ldrsb r0, [r4, r0]
@@ -2444,11 +2444,11 @@ MOD57_021D8830: ; 0x021D8830
str r0, [sp, #4]
lsr r1, r1, #0x18
lsl r3, r3, #0xc
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
lsl r1, r7, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov r4, #0
add r1, r0, #0
add r3, r4, #0
@@ -2479,7 +2479,7 @@ _021D8864:
lsl r1, r7, #0x18
ldr r0, [sp, #4]
lsr r1, r1, #0x18
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -2487,11 +2487,11 @@ _021D8864:
thumb_func_start MOD57_021D8894
MOD57_021D8894: ; 0x021D8894
- ldr r3, _021D889C ; =FUN_020054C8
+ ldr r3, _021D889C ; =PlaySE
ldr r0, _021D88A0 ; =0x00000699
bx r3
nop
-_021D889C: .word FUN_020054C8
+_021D889C: .word PlaySE
_021D88A0: .word 0x00000699
thumb_func_end MOD57_021D8894
@@ -2572,7 +2572,7 @@ MOD57_021D890C: ; 0x021D890C
ldrh r2, [r3, #0x1c]
ldrh r3, [r3, #0x1e]
mov r1, #2
- bl FUN_0201AFBC
+ bl DoesPixelAtScreenXYMatchPtrVal
cmp r0, #0
bne _021D894A
mov r0, #0
@@ -2612,7 +2612,7 @@ MOD57_021D8954: ; 0x021D8954
ldrh r2, [r3, #0x1c]
ldrh r3, [r3, #0x1e]
mov r1, #2
- bl FUN_0201AFBC
+ bl DoesPixelAtScreenXYMatchPtrVal
cmp r0, #0
bne _021D8992
mov r0, #0
@@ -2641,7 +2641,7 @@ _021D89A6:
add r0, r5, #0
add r1, r6, r1
add r2, r7, r2
- bl FUN_02019150
+ bl AddWindow
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
@@ -2652,7 +2652,7 @@ _021D89A6:
mov r1, #7
mov r3, #1
str r2, [sp]
- bl FUN_02017F48
+ bl BG_FillCharDataRange
pop {r3, r4, r5, r6, r7, pc}
nop
_021D89D0: .word MOD57_021D98F4
@@ -2666,7 +2666,7 @@ MOD57_021D89D4: ; 0x021D89D4
_021D89DA:
lsl r0, r4, #4
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
@@ -3355,7 +3355,7 @@ MOD57_021D8FB8: ; 0x021D8FB8
_021D8FC4:
lsl r0, r4, #4
add r0, r5, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #1
lsl r0, r0, #0x18
lsr r4, r0, #0x18
diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s
index eb13ddb7..1cdd6b43 100644
--- a/arm9/modules/58/asm/module_58.s
+++ b/arm9/modules/58/asm/module_58.s
@@ -43,7 +43,7 @@ _021D9A36:
mov r0, #3
mov r1, #0x27
lsl r2, r2, #6
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D9B74 ; =0x00005CB0
add r0, r6, #0
mov r2, #0x27
@@ -53,7 +53,7 @@ _021D9A36:
add r4, r0, #0
bl memset
mov r0, #0x27
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4]
mov r0, #0x27
bl ScrStrBufs_new
@@ -66,7 +66,7 @@ _021D9A36:
str r0, [r4, #0x14]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD58_021D9CDC
ldr r0, [r4]
bl MOD58_021D9CFC
@@ -274,7 +274,7 @@ _021D9C40:
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x27
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -289,7 +289,7 @@ MOD58_021D9CB4: ; 0x021D9CB4
bl FUN_0201C30C
bl FUN_02009F80
add r0, r4, #0
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D9CD4 ; =0x027E0000
ldr r1, _021D9CD8 ; =0x00003FF8
mov r0, #1
@@ -335,7 +335,7 @@ MOD58_021D9CFC: ; 0x021D9CFC
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D9DF0 ; =0x021DAE18
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -350,10 +350,10 @@ MOD58_021D9CFC: ; 0x021D9CFC
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D9DF4 ; =0x021DAE34
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -368,10 +368,10 @@ MOD58_021D9CFC: ; 0x021D9CFC
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D9DF8 ; =0x021DAE50
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -386,7 +386,7 @@ MOD58_021D9CFC: ; 0x021D9CFC
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D9DFC ; =0x021DADE0
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -401,10 +401,10 @@ MOD58_021D9CFC: ; 0x021D9CFC
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D9E00 ; =0x021DADFC
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -419,17 +419,17 @@ MOD58_021D9CFC: ; 0x021D9CFC
add r0, r4, #0
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x27
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x27
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x9c
pop {r4, r5, pc}
nop
@@ -544,22 +544,22 @@ MOD58_021D9ED8: ; 0x021D9ED8
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -604,7 +604,7 @@ MOD58_021D9F14: ; 0x021D9F14
mov r1, #0x20
mov r2, #0
mov r3, #0x27
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0
str r0, [sp]
mov r0, #2
@@ -1072,7 +1072,7 @@ MOD58_021DA30C: ; 0x021DA30C
add r1, r5, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xb5
lsl r0, r0, #2
add r0, r5, r0
@@ -1092,7 +1092,7 @@ MOD58_021DA30C: ; 0x021DA30C
ldr r0, [r5]
add r1, r5, r1
mov r3, #4
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xb1
lsl r0, r0, #2
add r0, r5, r0
@@ -1113,7 +1113,7 @@ MOD58_021DA30C: ; 0x021DA30C
add r1, r5, r1
mov r2, #1
mov r3, #0x1a
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xb9
lsl r0, r0, #2
add r0, r5, r0
@@ -1179,7 +1179,7 @@ _021DA3C2:
ldr r0, [r5]
add r1, r5, r1
mov r2, #1
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, [r5, #0x30]
mov r0, #1
mov r2, #0
@@ -1231,7 +1231,7 @@ _021DA46A:
add r1, r4, #0
mov r2, #4
mov r3, #5
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -1269,7 +1269,7 @@ MOD58_021DA4CC: ; 0x021DA4CC
add r5, r6, r0
_021DA4D8:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #5
@@ -1277,19 +1277,19 @@ _021DA4D8:
mov r0, #0xbd
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xb9
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xb1
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xb5
lsl r0, r0, #2
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, r5, r6, pc}
thumb_func_end MOD58_021DA4CC
@@ -1330,7 +1330,7 @@ MOD58_021DA514: ; 0x021DA514
mov r1, #1
bl MOD58_021DA614
ldr r0, _021DA5E0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _021DA568
_021DA55A:
ldr r0, _021DA5E4 ; =0x0000431A
@@ -2435,7 +2435,7 @@ MOD58_021DAD3C: ; 0x021DAD3C
cmp r0, #0
bne _021DAD60
ldr r0, _021DAD9C ; =0x0000069A
- bl FUN_020054C8
+ bl PlaySE
_021DAD60:
mov r0, #0
ldrsb r1, [r4, r0]
@@ -2455,7 +2455,7 @@ _021DAD78:
cmp r0, #0
bne _021DAD88
ldr r0, _021DAD9C ; =0x0000069A
- bl FUN_020054C8
+ bl PlaySE
_021DAD88:
mov r0, #2
ldrsb r0, [r4, r0]
diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s
index 5604bf3c..27c05dd6 100644
--- a/arm9/modules/59/asm/mod59_021D74E0_asm.s
+++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s
@@ -3,266 +3,7 @@
.section .text
.balign 4, 0
- thumb_func_start MOD59_021D7564
-MOD59_021D7564: ; 0x021D7564
- push {r3, r4, r5, r6, lr}
- sub sp, #0xc
- add r5, r1, #0
- bl OverlayManager_GetData
- ldr r1, [r5]
- add r4, r0, #0
- mov r6, #0
- cmp r1, #5
- bls _021D757A
- b _021D76AC
-_021D757A:
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_021D7586: ; jump table
- .short _021D7592 - _021D7586 - 2 ; case 0
- .short _021D75FA - _021D7586 - 2 ; case 1
- .short _021D7642 - _021D7586 - 2 ; case 2
- .short _021D7668 - _021D7586 - 2 ; case 3
- .short _021D7690 - _021D7586 - 2 ; case 4
- .short _021D76AA - _021D7586 - 2 ; case 5
-_021D7592:
- add r0, r6, #0
- add r1, r6, #0
- bl FUN_0200E3A0
- mov r0, #1
- add r1, r6, #0
- bl FUN_0200E3A0
- add r0, r6, #0
- add r1, r0, #0
- bl Main_SetVBlankIntrCB
- add r0, r6, #0
- add r1, r0, #0
- bl FUN_02015F34
- bl GX_DisableEngineALayers
- bl GX_DisableEngineBLayers
- mov r2, #1
- lsl r2, r2, #0x1a
- ldr r1, [r2]
- ldr r0, _021D76B4 ; =0xFFFFE0FF
- and r1, r0
- str r1, [r2]
- ldr r2, _021D76B8 ; =0x04001000
- ldr r1, [r2]
- and r0, r1
- str r0, [r2]
- mov r0, #4
- mov r1, #8
- bl FUN_0201669C
- add r0, r4, #0
- bl MOD59_021D778C
- add r0, r4, #0
- bl MOD59_021D79F8
- add r0, r4, #0
- bl MOD59_021D7A4C
- ldr r0, _021D76BC ; =MOD59_021D7724
- add r1, r4, #0
- bl Main_SetVBlankIntrCB
- bl GX_BothDispOn
- mov r0, #1
- str r0, [r5]
- b _021D76AC
-_021D75FA:
- bl MOD59_021D8920
- cmp r0, #1
- bne _021D761E
- mov r0, #6
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- ldr r0, [r4]
- str r0, [sp, #8]
- add r0, r6, #0
- add r1, r0, #0
- add r2, r0, #0
- add r3, r0, #0
- bl FUN_0200E1D0
- mov r0, #2
- str r0, [r5]
-_021D761E:
- ldr r0, [r4, #0x14]
- cmp r0, #0
- beq _021D76AC
- mov r0, #6
- str r0, [sp]
- mov r0, #1
- str r0, [sp, #4]
- ldr r0, [r4]
- str r0, [sp, #8]
- mov r0, #0
- add r1, r0, #0
- add r2, r0, #0
- add r3, r0, #0
- bl FUN_0200E1D0
- mov r0, #3
- str r0, [r5]
- b _021D76AC
-_021D7642:
- bl FUN_0200E308
- cmp r0, #1
- bne _021D76AC
- add r0, r4, #0
- bl MOD59_021D7A34
- add r0, r4, #0
- bl MOD59_021D796C
- add r0, r4, #0
- bl MOD59_021D7A5C
- add r0, r6, #0
- add r1, r0, #0
- bl Main_SetVBlankIntrCB
- mov r6, #1
- b _021D76AC
-_021D7668:
- bl FUN_0200E308
- cmp r0, #1
- bne _021D76AC
- add r0, r4, #0
- bl MOD59_021D7A34
- add r0, r4, #0
- bl MOD59_021D796C
- add r0, r4, #0
- bl MOD59_021D7A5C
- add r0, r6, #0
- add r1, r0, #0
- bl Main_SetVBlankIntrCB
- mov r0, #4
- str r0, [r5]
- b _021D76AC
-_021D7690:
- ldr r0, [r4, #0x14]
- bl OverlayManager_Run
- cmp r0, #1
- bne _021D76AC
- ldr r0, [r4, #0x14]
- bl OverlayManager_delete
- add r0, r6, #0
- str r0, [r4, #0x14]
- mov r0, #5
- str r0, [r5]
- b _021D76AC
-_021D76AA:
- str r6, [r5]
-_021D76AC:
- add r0, r6, #0
- add sp, #0xc
- pop {r3, r4, r5, r6, pc}
- nop
-_021D76B4: .word 0xFFFFE0FF
-_021D76B8: .word 0x04001000
-_021D76BC: .word MOD59_021D7724
- thumb_func_end MOD59_021D7564
-
- thumb_func_start MOD59_021D76C0
-MOD59_021D76C0: ; 0x021D76C0
- push {r4, r5, r6, lr}
- add r6, r0, #0
- bl OverlayManager_GetData
- add r4, r0, #0
- ldr r0, [r4, #4]
- ldr r5, [r4]
- bl Sav2_PlayerData_GetProfileAddr
- ldr r1, [r4, #0x70]
- ldr r1, [r1, #0x18]
- bl PlayerName_StringToFlat
- ldr r0, [r4, #4]
- bl Sav2_PlayerData_GetProfileAddr
- ldr r1, [r4, #0x70]
- ldr r1, [r1, #4]
- bl PlayerProfile_SetTrainerGender
- ldr r0, [r4, #4]
- bl FUN_02024EB4
- ldr r1, [r4, #0x74]
- ldr r1, [r1, #0x18]
- bl RivalsNameToU16Array
- ldr r0, [r4, #0x70]
- bl FUN_02077AC4
- ldr r0, [r4, #0x74]
- bl FUN_02077AC4
- add r0, r6, #0
- bl OverlayManager_FreeData
- add r0, r5, #0
- bl FUN_020168D0
- ldr r0, _021D771C ; =SDK_OVERLAY_MODULE_52_ID
- ldr r1, _021D7720 ; =MOD52_021D76D8
- bl RegisterMainOverlay
- mov r0, #1
- pop {r4, r5, r6, pc}
- nop
-_021D771C: .word SDK_OVERLAY_MODULE_52_ID
-_021D7720: .word MOD52_021D76D8
- thumb_func_end MOD59_021D76C0
-
- thumb_func_start MOD59_021D7724
-MOD59_021D7724: ; 0x021D7724
- ldr r3, _021D772C ; =FUN_0201AB60
- ldr r0, [r0, #0x18]
- bx r3
- nop
-_021D772C: .word FUN_0201AB60
- thumb_func_end MOD59_021D7724
-
- thumb_func_start MOD59_021D7730
-MOD59_021D7730: ; 0x021D7730
- push {r3, r4}
- ldr r2, _021D7788 ; =gMain + 0x40
- mov r0, #0
- ldrh r1, [r2, #0x20]
- cmp r1, #0
- beq _021D7784
- ldrh r3, [r2, #0x1c]
- mov r1, #1
- lsl r1, r1, #8
- cmp r3, r1
- bhs _021D7784
- ldrh r2, [r2, #0x1e]
- cmp r2, #0xc0
- bhs _021D7784
- cmp r3, #0x80
- bhs _021D7758
- mov r1, #0x80
- sub r1, r1, r3
- lsl r1, r1, #0x10
- b _021D775C
-_021D7758:
- sub r3, #0x80
- lsl r1, r3, #0x10
-_021D775C:
- lsr r3, r1, #0x10
- cmp r2, #0x64
- bhs _021D776A
- mov r1, #0x64
- sub r1, r1, r2
- lsl r1, r1, #0x10
- b _021D776E
-_021D776A:
- sub r2, #0x64
- lsl r1, r2, #0x10
-_021D776E:
- lsr r4, r1, #0x10
- add r2, r3, #0
- add r1, r4, #0
- mul r2, r3
- mul r1, r4
- add r2, r2, r1
- mov r1, #1
- lsl r1, r1, #8
- cmp r2, r1
- bgt _021D7784
- mov r0, #1
-_021D7784:
- pop {r3, r4}
- bx lr
- .align 2, 0
-_021D7788: .word gMain + 0x40
- thumb_func_end MOD59_021D7730
+ .extern MOD59_021D7730
thumb_func_start MOD59_021D778C
MOD59_021D778C: ; 0x021D778C
@@ -280,7 +21,7 @@ _021D7798:
add r0, sp, #0x50
bl GX_SetBanks
ldr r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0x40
ldr r5, _021D7958 ; =0x021D9DCC
str r0, [r4, #0x18]
@@ -290,7 +31,7 @@ _021D7798:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D795C ; =0x021D9EA0
add r3, sp, #0x24
ldmia r5!, {r0, r1}
@@ -309,10 +50,10 @@ _021D7798:
strb r0, [r2, #0x13]
ldr r0, [r4, #0x18]
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0xe
add r2, sp, #0x24
strb r0, [r2, #0x12]
@@ -321,10 +62,10 @@ _021D7798:
ldr r0, [r4, #0x18]
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0xd
add r2, sp, #0x24
strb r0, [r2, #0x12]
@@ -333,10 +74,10 @@ _021D7798:
ldr r0, [r4, #0x18]
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0xc
add r2, sp, #0x24
strb r0, [r2, #0x12]
@@ -344,10 +85,10 @@ _021D7798:
strb r1, [r2, #0x13]
ldr r0, [r4, #0x18]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0
str r1, [sp]
ldr r0, [r4]
@@ -391,10 +132,10 @@ _021D7798:
ldr r0, [r4, #0x18]
mov r1, #4
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0xe
add r0, sp, #8
strb r1, [r0, #0x12]
@@ -403,10 +144,10 @@ _021D7798:
ldr r0, [r4, #0x18]
add r2, sp, #8
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0xd
add r0, sp, #8
strb r1, [r0, #0x12]
@@ -416,10 +157,10 @@ _021D7798:
mov r1, #6
add r2, sp, #8
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #6
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #0xc
add r0, sp, #8
strb r1, [r0, #0x12]
@@ -429,34 +170,34 @@ _021D7798:
mov r1, #7
add r2, sp, #8
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r4, #0
bl MOD59_021D8058
mov r0, #0
@@ -478,52 +219,52 @@ MOD59_021D796C: ; 0x021D796C
add r4, r0, #0
mov r0, #0
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x18]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
bl FreeToHeap
pop {r4, pc}
@@ -690,7 +431,7 @@ _021D7B0E:
lsl r0, r4, #0x18
lsr r0, r0, #0x18
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
b _021D7BDE
_021D7B1A:
mov r0, #0x10
@@ -783,7 +524,7 @@ _021D7BC0:
lsl r0, r4, #0x18
lsr r0, r0, #0x18
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
b _021D7BDE
_021D7BD0:
ldr r0, _021D7BE4 ; =0x04000050
@@ -843,11 +584,11 @@ MOD59_021D7C10: ; 0x021D7C10
ldr r0, [r5, #0x18]
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
lsl r1, r4, #0x18
ldr r0, [r5, #0x18]
lsr r1, r1, #0x18
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0xc
pop {r4, r5, pc}
.align 2, 0
@@ -873,7 +614,7 @@ _021D7C5E:
ldr r0, [r5, #0x18]
ldr r2, _021D7D5C ; =0x021D9DB8
add r1, #0x1c
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd8
str r0, [sp]
mov r0, #0x20
@@ -891,7 +632,7 @@ _021D7C5E:
mov r3, #4
bl FUN_0200D0BC
mov r0, #1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
add r0, r4, #0
bl FUN_02002B7C
mov r0, #1
@@ -974,7 +715,7 @@ _021D7D36:
_021D7D46:
add r0, r5, #0
add r0, #0x1c
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0
str r0, [r5, #0x50]
mov r4, #1
@@ -994,7 +735,7 @@ MOD59_021D7D68: ; 0x021D7D68
cmp r2, #0
bne _021D7D74
ldr r0, _021D7D78 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021D7D74:
pop {r3, pc}
nop
@@ -1048,7 +789,7 @@ _021D7DC4:
add r1, r5, #0
ldr r0, [r5, #0x18]
add r1, #0x30
- bl FUN_02019150
+ bl AddWindow
ldr r1, [r5]
add r0, r6, #0
bl ListMenuItems_ctor
@@ -1129,7 +870,7 @@ _021D7E66:
bl FUN_0200CCF8
add r0, r5, #0
add r0, #0x30
- bl FUN_02019178
+ bl RemoveWindow
mov r1, #0
ldr r0, [r5, #0x40]
add r2, r1, #0
@@ -1137,7 +878,7 @@ _021D7E66:
ldr r0, [r5, #0x44]
bl ListMenuItems_dtor
ldr r0, _021D7EC8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
str r0, [r5, #0x2c]
mov r0, #1
@@ -1191,7 +932,7 @@ _021D7EEE: ; jump table
_021D7EFA:
add r0, r5, #0
add r1, r5, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
ldr r1, [r4]
lsl r0, r0, #0xa
@@ -1225,7 +966,7 @@ _021D7EFA:
ldr r0, [r4, #0x18]
add r1, #0x1c
add r2, sp, #0x14
- bl FUN_02019150
+ bl AddWindow
add r1, r5, #0
mov r0, #0xc0
str r0, [sp]
@@ -1264,7 +1005,7 @@ _021D7F7C:
add r1, r4, #0
ldr r0, [r4, #0x18]
add r1, #0x1c
- bl FUN_02019150
+ bl AddWindow
add r1, r5, #0
mov r0, #0xc0
str r0, [sp]
@@ -1319,7 +1060,7 @@ _021D7FF6:
bne _021D803C
_021D800A:
ldr r0, _021D8054 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #4
str r0, [r4, #0x54]
b _021D803C
@@ -1334,10 +1075,10 @@ _021D8016:
b _021D803C
_021D8028:
add r0, #0x1c
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
str r0, [r4, #0x54]
mov r5, #1
@@ -1372,7 +1113,7 @@ MOD59_021D8058: ; 0x021D8058
ldr r3, [r5]
mov r1, #0x20
add r2, r0, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1420,10 +1161,10 @@ _021D80AA:
bl MOD59_021D8234
mov r0, #0
add r1, r0, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x10
pop {r3, r4, r5, pc}
nop
@@ -1696,7 +1437,7 @@ _021D82C8:
ldr r0, [r5, #0x18]
mov r1, #2
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0xb
str r3, [sp]
mov r0, #0xa
@@ -1705,7 +1446,7 @@ _021D82C8:
ldr r0, [r5, #0x18]
mov r1, #2
add r2, r7, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
mov r1, #2
mov r2, #9
@@ -1714,7 +1455,7 @@ _021D82C8:
mov r0, #2
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #1
str r0, [sp]
mov r3, #0x32
@@ -1722,19 +1463,19 @@ _021D82C8:
mov r1, #2
add r2, r4, #0
lsl r3, r3, #6
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
mov r3, #0x20
add r2, r3, #0
mov r0, #2
add r1, r6, #0
add r3, #0xe0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r3, #0x12
ldr r1, _021D83F4 ; =0x021D9ED8
mov r0, #2
mov r2, #0x20
lsl r3, r3, #4
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -1746,7 +1487,7 @@ _021D82C8:
ldr r0, [r5, #0x18]
mov r1, #5
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #7
str r0, [sp]
mov r0, #0xa
@@ -1756,7 +1497,7 @@ _021D82C8:
mov r1, #5
add r2, r7, #0
mov r3, #0xb
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r5, #0
mov r1, #5
mov r2, #0xa
@@ -1765,7 +1506,7 @@ _021D82C8:
mov r0, #5
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #1
str r0, [sp]
mov r3, #0x32
@@ -1773,17 +1514,17 @@ _021D82C8:
mov r1, #5
add r2, r4, #0
lsl r3, r3, #6
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
mov r0, #5
add r1, r6, #0
mov r2, #0x20
lsl r3, r0, #6
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #5
ldr r1, _021D83F4 ; =0x021D9ED8
mov r2, #0x20
lsl r3, r0, #6
- bl FUN_02017FB4
+ bl BG_LoadPlttData
add r0, r6, #0
bl FreeToHeap
add r0, r4, #0
@@ -1831,7 +1572,7 @@ MOD59_021D83F8: ; 0x021D83F8
mov r0, #6
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x20
str r0, [sp]
mov r0, #0
@@ -1858,7 +1599,7 @@ MOD59_021D8460: ; 0x021D8460
cmp r2, #0
bne _021D849C
ldr r0, [r5, #0x18]
- bl FUN_02017B48
+ bl Bg_GetXpos
cmp r0, #0
beq _021D8498
cmp r0, #0
@@ -1868,14 +1609,14 @@ MOD59_021D8460: ; 0x021D8460
lsr r1, r1, #0x18
mov r2, #2
mov r3, #4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _021D84E2
_021D848A:
lsl r1, r4, #0x18
lsr r1, r1, #0x18
mov r2, #1
mov r3, #4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _021D84E2
_021D8498:
mov r6, #1
@@ -1884,7 +1625,7 @@ _021D849C:
cmp r2, #1
bne _021D84C2
ldr r0, [r5, #0x18]
- bl FUN_02017B48
+ bl Bg_GetXpos
add r1, r6, #0
sub r1, #0x30
cmp r0, r1
@@ -1894,7 +1635,7 @@ _021D849C:
lsr r1, r1, #0x18
mov r2, #2
mov r3, #4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _021D84E2
_021D84BE:
mov r6, #1
@@ -1903,7 +1644,7 @@ _021D84C2:
cmp r2, #2
bne _021D84E2
ldr r0, [r5, #0x18]
- bl FUN_02017B48
+ bl Bg_GetXpos
cmp r0, #0
beq _021D84E0
lsl r1, r4, #0x18
@@ -1911,7 +1652,7 @@ _021D84C2:
lsr r1, r1, #0x18
mov r2, #1
mov r3, #4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _021D84E2
_021D84E0:
mov r6, #1
@@ -2206,19 +1947,19 @@ _021D86E4:
mov r1, #2
add r2, r7, #0
add r3, r7, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #3
add r3, r2, #0
ldr r0, [r4, #0x18]
mov r1, #2
sub r3, #0x6b
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #2
add r1, r7, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #5
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r4, #0
add r2, r7, #0
add r0, #0xa8
@@ -2235,10 +1976,10 @@ _021D86E4:
_021D8728:
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_02017B48
+ bl Bg_GetXpos
ldr r0, [r4, #0x18]
mov r1, #5
- bl FUN_02017B54
+ bl Bg_GetYpos
add r1, r4, #0
add r1, #0xb0
ldr r3, [r1]
@@ -2269,22 +2010,22 @@ _021D8728:
mov r1, #2
ldr r0, [r4, #0x18]
add r3, r1, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x18]
mov r1, #5
mov r2, #1
mov r3, #2
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x18]
mov r1, #5
mov r2, #3
add r3, r5, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _021D890A
_021D8792:
mov r0, #5
add r1, r7, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x1e
add r4, #0xb0
str r0, [r4]
@@ -2307,7 +2048,7 @@ _021D87A6:
_021D87BE:
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r4, #0
add r2, r7, #0
add r0, #0xa8
@@ -2324,10 +2065,10 @@ _021D87BE:
_021D87E0:
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_02017B48
+ bl Bg_GetXpos
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_02017B54
+ bl Bg_GetYpos
add r0, r4, #0
add r0, #0xb0
ldr r1, [r0]
@@ -2356,7 +2097,7 @@ _021D87E0:
mov r1, #2
mov r2, #3
add r3, r7, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
add r2, r7, #0
add r0, #0xa8
@@ -2385,7 +2126,7 @@ _021D8846:
ldr r0, [r4, #0x18]
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
asr r5, r5, #1
cmp r5, #0x90
ble _021D886E
@@ -2395,15 +2136,15 @@ _021D886E:
mov r1, #2
mov r2, #3
add r3, r5, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _021D890A
_021D887C:
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_02017B48
+ bl Bg_GetXpos
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_02017B54
+ bl Bg_GetYpos
add r0, r4, #0
add r0, #0xb0
ldr r1, [r0]
@@ -2431,7 +2172,7 @@ _021D887C:
mov r1, #2
mov r2, #3
add r3, r7, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #5
str r0, [r6]
b _021D890A
@@ -2447,12 +2188,12 @@ _021D88CC:
mov r1, #2
ldr r0, [r4, #0x18]
add r3, r1, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x18]
mov r1, #2
mov r2, #3
add r3, r5, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r4, #0xa8
str r5, [r4]
b _021D890A
@@ -2478,7 +2219,7 @@ MOD59_021D8914: ; 0x021D8914
mov r1, #1
bx r3
.align 2, 0
-_021D891C: .word FUN_020178BC
+_021D891C: .word SetBgPriority
thumb_func_end MOD59_021D8914
thumb_func_start MOD59_021D8920
@@ -2619,10 +2360,10 @@ _021D8A1A:
bl FUN_02005350
add r0, r5, #0
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #1
str r0, [sp]
@@ -2658,7 +2399,7 @@ _021D8A76:
str r0, [r4, #0xc]
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
bl _021D985C
_021D8A92:
ldr r0, _021D8D70 ; =0x00000405
@@ -2675,10 +2416,10 @@ _021D8A92:
bl MOD59_021D8140
mov r0, #3
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
str r0, [sp]
mov r0, #4
@@ -2748,7 +2489,7 @@ _021D8B44:
str r0, [r4, #0xc]
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
bl _021D985C
_021D8B58:
mov r0, #0x29
@@ -2775,10 +2516,10 @@ _021D8B80:
bne _021D8C84
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #1
add r1, r5, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x10]
str r0, [r4, #0xc]
bl _021D985C
@@ -2893,12 +2634,12 @@ _021D8C88:
str r0, [r4, #0xc]
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
bl _021D985C
_021D8C98:
add r0, r5, #0
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x14
str r0, [r4, #0xc]
bl _021D985C
@@ -2928,7 +2669,7 @@ _021D8CBC:
bl FUN_020145C8
mov r0, #6
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r4, #0
mov r1, #3
add r0, #0x8b
@@ -3003,7 +2744,7 @@ _021D8D7C:
bne _021D8DA0
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x1c
str r0, [r4, #0xc]
bl _021D985C
@@ -3018,7 +2759,7 @@ _021D8DA0:
_021D8DA4:
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0x68]
bl FUN_020146C4
add r0, r4, #0
@@ -3058,12 +2799,12 @@ _021D8DEA:
bl MOD59_021D8234
mov r0, #1
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r2, r5, #0
ldr r0, [r4, #0x18]
mov r1, #1
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #6
mov r1, #1
str r0, [sp]
@@ -3220,10 +2961,10 @@ _021D8F5E:
bne _021D8FCE
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x1c
str r0, [r4, #0xc]
bl _021D985C
@@ -3277,7 +3018,7 @@ _021D8FD2:
bl MOD59_021D8234
mov r0, #6
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #1
str r0, [sp]
@@ -3319,7 +3060,7 @@ _021D9030:
add r0, #0x98
str r1, [r0]
ldr r0, [r4, #0x18]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x30
str r0, [r4, #0xc]
bl _021D985C
@@ -3360,7 +3101,7 @@ _021D9078:
cmp r1, r0
bne _021D90A2
ldr r0, _021D937C ; =0x00000706
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x32
str r0, [r4, #0xc]
b _021D985C
@@ -3482,7 +3223,7 @@ _021D9192:
bl MOD59_021D82A0
mov r0, #6
add r1, r5, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r4, #0
add r1, r5, #0
add r0, #0x94
@@ -3557,7 +3298,7 @@ _021D922A:
bne _021D92FA
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x3b
str r0, [r4, #0xc]
b _021D985C
@@ -3615,12 +3356,12 @@ _021D9290:
ldr r0, [r4, #0x18]
mov r1, #1
sub r3, #0x30
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x18]
mov r1, #2
add r2, r5, #0
mov r3, #0x30
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0x40
str r0, [r4, #0xc]
b _021D985C
@@ -3709,7 +3450,7 @@ _021D935C:
add r0, #0x84
str r1, [r0]
ldr r0, _021D9380 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021D9368:
add r0, r4, #0
bl MOD59_021D8504
@@ -3801,7 +3542,7 @@ _021D9416:
_021D941C:
ldr r0, [r4, #0x18]
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x4a
str r0, [r4, #0xc]
b _021D985C
@@ -3848,13 +3589,13 @@ _021D945C:
_021D9476:
add r0, r5, #0
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
add r0, r4, #0
add r0, #0x84
ldr r0, [r0]
@@ -3862,22 +3603,22 @@ _021D9476:
bne _021D94AE
mov r0, #1
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r2, r5, #0
ldr r0, [r4, #0x18]
mov r1, #1
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
b _021D94C2
_021D94AE:
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
add r2, r5, #0
ldr r0, [r4, #0x18]
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_021D94C2:
mov r0, #6
mov r1, #1
@@ -3925,7 +3666,7 @@ _021D950C:
bne _021D9530
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, [r4, #0x48]
sub r0, r5, #2
cmp r1, r0
@@ -4124,21 +3865,21 @@ _021D9684:
_021D9696:
add r0, r5, #0
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add r2, r5, #0
ldr r0, [r4, #0x18]
mov r1, #1
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #6
mov r1, #1
str r0, [sp]
@@ -4187,7 +3928,7 @@ _021D971A:
_021D971C:
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x61
str r0, [r4, #0xc]
b _021D985C
@@ -4263,7 +4004,7 @@ _021D97B2:
bne _021D985C
ldr r0, [r4, #0x18]
add r1, r5, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x67
str r0, [r4, #0xc]
b _021D985C
diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s
index 2925c404..147b3a99 100644
--- a/arm9/modules/59/asm/mod59_021D9868.s
+++ b/arm9/modules/59/asm/mod59_021D9868.s
@@ -11,7 +11,7 @@ MOD59_021D9868: ; 0x021D9868
mov r0, #3
mov r1, #0x53
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
mov r1, #0x28
mov r2, #0x53
@@ -81,7 +81,7 @@ _021D98C6:
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD59_021D9A20
add r0, r4, #0
@@ -200,7 +200,7 @@ MOD59_021D99F8: ; 0x021D99F8
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -212,7 +212,7 @@ MOD59_021D9A14: ; 0x021D9A14
ldr r0, [r0, #4]
bx r3
nop
-_021D9A1C: .word FUN_0201AB60
+_021D9A1C: .word DoScheduledBgGpuUpdates
thumb_func_end MOD59_021D9A14
thumb_func_start MOD59_021D9A20
@@ -231,7 +231,7 @@ _021D9A2C:
add r0, sp, #0x90
bl GX_SetBanks
ldr r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0x80
ldr r5, _021D9BB8 ; =0x021DA054
str r0, [r4, #4]
@@ -241,7 +241,7 @@ _021D9A2C:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D9BBC ; =0x021DA080
add r3, sp, #0x64
ldmia r5!, {r0, r1}
@@ -256,15 +256,15 @@ _021D9A2C:
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r3, [r4]
mov r0, #2
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D9BC0 ; =0x021DA09C
add r3, sp, #0x48
ldmia r5!, {r0, r1}
@@ -279,7 +279,7 @@ _021D9A2C:
str r0, [r3]
ldr r0, [r4, #4]
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r3, #0
str r3, [sp]
str r3, [sp, #4]
@@ -314,7 +314,7 @@ _021D9A2C:
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -351,7 +351,7 @@ _021D9A2C:
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -387,10 +387,10 @@ _021D9A2C:
bl FUN_02002ED0
mov r0, #0
add r1, r0, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r2, #0xc
ldr r0, _021D9BCC ; =0x04000050
mov r1, #2
@@ -415,43 +415,43 @@ MOD59_021D9BD0: ; 0x021D9BD0
add r4, r0, #0
mov r0, #0
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, _021D9C44 ; =0x04000050
mov r1, #0
strh r1, [r0]
ldr r0, [r4, #4]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
bl FreeToHeap
pop {r4, pc}
@@ -511,7 +511,7 @@ _021D9C92: ; jump table
_021D9C9A:
mov r0, #2
add r1, r5, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
ldr r1, [r4]
lsl r0, r0, #0xa
@@ -525,7 +525,7 @@ _021D9C9A:
ldr r0, [r4, #4]
ldr r2, _021D9D6C ; =0x021DA04C
add r1, #0x10
- bl FUN_02019150
+ bl AddWindow
add r1, r5, #0
mov r0, #1
lsl r0, r0, #8
@@ -562,7 +562,7 @@ _021D9C9A:
bl CopyWindowToVram
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0xf0
str r0, [r4, #0x24]
mov r0, #1
@@ -597,10 +597,10 @@ _021D9D4A:
_021D9D50:
add r0, r4, #0
add r0, #0x10
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r5, #0
str r0, [r4, #0xc]
mov r5, #1
@@ -624,7 +624,7 @@ MOD59_021D9D78: ; 0x021D9D78
ldr r0, [r0, #4]
mov r1, #1
asr r3, r3, #4
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r3, pc}
.align 2, 0
thumb_func_end MOD59_021D9D78
diff --git a/arm9/modules/59/include/mod59_021D74E0.h b/arm9/modules/59/include/mod59_021D74E0.h
index 9342913d..d6f52bba 100644
--- a/arm9/modules/59/include/mod59_021D74E0.h
+++ b/arm9/modules/59/include/mod59_021D74E0.h
@@ -5,6 +5,15 @@
#include "options.h"
#include "save_block_2.h"
#include "main.h"
+#include "player_data.h"
+
+struct MOD59_UnkPlayerStruct
+{
+ u8 padding[0x4];
+ GenderEnum gender;
+ u8 padding2[0x10];
+ struct String *name;
+};
typedef struct MOD59_OverlayData
{
@@ -13,10 +22,11 @@ typedef struct MOD59_OverlayData
struct Options *options;
u32 Unk0C;
u32 Unk10;
- u32 Unk14;
- u8 padding[0x58];
- u32 Unk70;
- u32 Unk74;
+ struct UnkStruct_02006234 *Unk14;
+ struct BgConfig *Unk18;
+ u8 padding[0x54];
+ struct MOD59_UnkPlayerStruct *playerStruct;
+ struct MOD59_UnkPlayerStruct *rivalStruct;
u8 padding2[0x10];
u8 Unk88;
u8 Unk89;
@@ -24,9 +34,13 @@ typedef struct MOD59_OverlayData
u8 Unk8B;
u8 padding3[4];
u32 Unk90;
- //TODO pad to 0xb4
+ u8 padding4[32];
} MOD59_OverlayData;
BOOL MOD59_Init(struct UnkStruct_02006234 *param0);
+BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1);
+BOOL MOD59_021D76C0(struct UnkStruct_02006234 *param0);
+void MOD59_021D7724(MOD59_OverlayData *data);
+BOOL MOD59_021D7730(void);
#endif //POKEDIAMOND_MOD59_021D74E0_H
diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c
index 4d7a4a98..e104cf4f 100644
--- a/arm9/modules/59/src/mod59_021D74E0_src.c
+++ b/arm9/modules/59/src/mod59_021D74E0_src.c
@@ -3,24 +3,45 @@
#include "overlay_manager.h"
#include "mod59_021D74E0.h"
#include "heap.h"
+#include "game_init.h"
+#include "GX_layers.h"
+#include "unk_02024E64.h"
+#include "bg_window.h"
+#include "module_52.h"
+extern void *FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options);
-extern u32 FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options);
+extern void FUN_0200E3A0(PMLCDTarget, int);
+
+extern void MOD59_021D778C(MOD59_OverlayData *data);
+extern void MOD59_021D79F8(MOD59_OverlayData *data);
+extern void MOD59_021D7A34(MOD59_OverlayData *data);
+extern void MOD59_021D796C(MOD59_OverlayData *data);
+extern void MOD59_021D7A4C(MOD59_OverlayData *data);
+extern void MOD59_021D7A5C(MOD59_OverlayData *data);
+extern u32 MOD59_021D8920(MOD59_OverlayData *data);
+
+extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 heap_id);
+extern u32 FUN_0200E308(void);
+
+extern void FUN_02077AC4(void *param0);
+
+FS_EXTERN_OVERLAY(MODULE_52);
THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0)
{
- //note: 0xb4 is likely the overlay data struct size, once struct is padded replace with sizeof
- FUN_0201681C(3, 0x52, 1 << 18);
- MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, 0xb4, 0x52);
+ CreateHeap(3, 0x52, 1 << 18);
+ MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, sizeof(MOD59_OverlayData), 0x52);
(void)memset((void *)data, 0, 0xb4);
data->heap_id = 0x52;
- int *field18 = OverlayManager_GetField18(param0);
+ s32 *field18 = OverlayManager_GetField18(param0);
data->sav2 = (struct SaveBlock2 *)field18[2]; //?
data->options = Sav2_PlayerData_GetOptionsAddr(data->sav2);
- data->Unk14 = data->Unk10 = data->Unk0C = 0;
- data->Unk70 = FUN_02077A84(0x52, 0, 0, 7, data->options);
- data->Unk74 = FUN_02077A84(0x52, 3, 0, 7, data->options);
+ data->Unk10 = data->Unk0C = 0;
+ data->Unk14 = NULL;
+ data->playerStruct = (struct MOD59_UnkPlayerStruct *)FUN_02077A84(0x52, 0, 0, 7, data->options);
+ data->rivalStruct = (struct MOD59_UnkPlayerStruct *)FUN_02077A84(0x52, 3, 0, 7, data->options);
data->Unk88 = 0;
data->Unk89 = 0;
data->Unk8A = 0;
@@ -28,3 +49,154 @@ THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0)
data->Unk90 = 0;
return TRUE;
}
+
+THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1)
+{
+ MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_GetData(param0);
+ BOOL ret = FALSE;
+
+ switch (*param1)
+ {
+ case 0:
+ FUN_0200E3A0(PM_LCD_TOP, 0);
+ FUN_0200E3A0(PM_LCD_BOTTOM, 0);
+
+ Main_SetVBlankIntrCB(NULL, NULL);
+
+ FUN_02015F34(NULL, NULL);
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+
+ reg_GX_DISPCNT = reg_GX_DISPCNT & 0xFFFFE0FF;
+ reg_GXS_DB_DISPCNT = reg_GXS_DB_DISPCNT & 0xFFFFE0FF;
+
+ SetKeyRepeatTimers(4, 8);
+
+ MOD59_021D778C(data);
+ MOD59_021D79F8(data);
+ MOD59_021D7A4C(data);
+
+ Main_SetVBlankIntrCB((void (*)(void *))MOD59_021D7724, data);
+
+ GX_BothDispOn();
+
+ *param1 = 1;
+
+ break;
+
+ case 1:
+ if (MOD59_021D8920(data) == 1)
+ {
+ FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id);
+ *param1 = 2;
+ }
+
+ if (data->Unk14 == NULL)
+ {
+ break;
+ }
+
+ FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id);
+ *param1 = 3;
+
+ break;
+
+ case 2:
+ if (FUN_0200E308() != 1)
+ {
+ break;
+ }
+
+ MOD59_021D7A34(data);
+ MOD59_021D796C(data);
+ MOD59_021D7A5C(data);
+
+ Main_SetVBlankIntrCB(NULL, NULL);
+
+ ret = TRUE;
+ break;
+
+ case 3:
+ if (FUN_0200E308() != 1)
+ {
+ break;
+ }
+
+ MOD59_021D7A34(data);
+ MOD59_021D796C(data);
+ MOD59_021D7A5C(data);
+
+ Main_SetVBlankIntrCB(NULL, NULL);
+
+ *param1 = 4;
+
+ break;
+
+ case 4:
+ if (OverlayManager_Run(data->Unk14) != TRUE)
+ {
+ break;
+ }
+
+ OverlayManager_delete(data->Unk14);
+ data->Unk14 = NULL;
+
+ *param1 = 5;
+
+ break;
+
+ case 5:
+ *param1 = 0;
+
+ break;
+ }
+
+ return ret;
+}
+
+THUMB_FUNC BOOL MOD59_021D76C0(struct UnkStruct_02006234 *param0)
+{
+ MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_GetData(param0);
+
+ u32 heap_id = data->heap_id;
+ PlayerName_StringToFlat(Sav2_PlayerData_GetProfileAddr(data->sav2), data->playerStruct->name);
+ PlayerProfile_SetTrainerGender(Sav2_PlayerData_GetProfileAddr(data->sav2), data->playerStruct->gender);
+
+ RivalsNameToU16Array(FUN_02024EB4(data->sav2), data->rivalStruct->name);
+
+ FUN_02077AC4(data->playerStruct);
+ FUN_02077AC4(data->rivalStruct);
+
+ OverlayManager_FreeData(param0);
+ DestroyHeap(heap_id);
+
+ RegisterMainOverlay(FS_OVERLAY_ID(MODULE_52), &MOD52_021D76D8);
+
+ return TRUE;
+}
+
+THUMB_FUNC void MOD59_021D7724(MOD59_OverlayData *data)
+{
+ DoScheduledBgGpuUpdates(data->Unk18);
+}
+
+THUMB_FUNC BOOL MOD59_021D7730(void)
+{
+ BOOL ret = FALSE;
+
+ if (gMain.touchNew != 0 && gMain.touchX < 256 && gMain.touchY < 192)
+ {
+ s32 distanceFromXCentre = gMain.touchX < 128 ? (u16)(128 - gMain.touchX) : (u16)(gMain.touchX - 128);
+ s32 distanceFromYCentre = gMain.touchY < 100 ? (u16)(100 - gMain.touchY) : (u16)(gMain.touchY - 100);
+
+ s32 distanceXSquare = distanceFromXCentre * distanceFromXCentre;
+ s32 distanceYSquare = distanceFromYCentre * distanceFromYCentre;
+
+ if (distanceXSquare + distanceYSquare <= 256)
+ {
+ ret = TRUE;
+ }
+ }
+
+ return ret;
+}
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
index 8c6d04fc..bce93cc6 100644
--- a/arm9/modules/60/asm/module_60.s
+++ b/arm9/modules/60/asm/module_60.s
@@ -13,7 +13,7 @@ MOD60_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x26
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xad
add r0, r4, #0
lsl r1, r1, #2
@@ -215,7 +215,7 @@ _021D769A:
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
@@ -284,7 +284,7 @@ _021D7714:
cmp r1, #6
bne _021D773C
ldr r0, _021D77B0 ; =0x0000061B
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r4, #0x10]
mov r0, #3
bic r1, r0
@@ -405,7 +405,7 @@ _021D7804:
bl FUN_0200BC30
bl NNS_GfdDoVramTransfer
ldr r0, [r4, #0x14]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D782C ; =0x027E0000
ldr r1, _021D7830 ; =0x00003FF8
mov r0, #1
@@ -587,7 +587,7 @@ MOD60_021D7990: ; 0x021D7990
sub sp, #0x80
add r6, r0, #0
ldr r0, [r6]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0
ldr r4, _021D7A08 ; =0x021D8114
str r0, [r6, #0x14]
@@ -597,7 +597,7 @@ MOD60_021D7990: ; 0x021D7990
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r4, _021D7A0C ; =0x021D8168
add r3, sp, #0x10
mov r2, #0xe
@@ -616,12 +616,12 @@ _021D79C6:
lsr r1, r1, #0x18
add r2, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r1, [r5]
ldr r0, [r6, #0x14]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r7, r7, #1
add r4, #0x1c
add r5, r5, #4
@@ -631,12 +631,12 @@ _021D79C6:
ldr r3, [r6]
mov r1, #0x20
add r2, r0, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [r6]
mov r0, #4
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x80
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -651,16 +651,16 @@ MOD60_021D7A14: ; 0x021D7A14
add r4, r0, #0
ldr r0, [r4, #0x14]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x14]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x14]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x14]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x14]
bl FreeToHeap
pop {r4, pc}
@@ -695,7 +695,7 @@ MOD60_021D7A40: ; 0x021D7A40
ldr r2, [r3, #0x14]
ldr r0, [r5, #0x14]
ldr r3, [r3, #0x10]
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r3, [sp, #0x20]
mov r0, #0
str r0, [sp]
@@ -703,7 +703,7 @@ MOD60_021D7A40: ; 0x021D7A40
ldr r0, [r5, #0x14]
ldr r3, [r3, #0x10]
mov r1, #4
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r6, #0
bl FreeToHeap
mov r0, #0x49
@@ -725,13 +725,13 @@ MOD60_021D7A40: ; 0x021D7A40
ldr r1, [r1, #0xc]
mov r2, #0x20
add r3, r0, #0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
ldr r1, [sp, #0x1c]
mov r0, #4
ldr r1, [r1, #0xc]
mov r2, #0x20
mov r3, #0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
add r0, r6, #0
bl FreeToHeap
mov r0, #0x49
@@ -761,7 +761,7 @@ MOD60_021D7A40: ; 0x021D7A40
ldr r0, [r5, #0x14]
mov r1, #2
mov r2, #1
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0
str r3, [sp]
mov r0, #0x20
@@ -772,7 +772,7 @@ MOD60_021D7A40: ; 0x021D7A40
ldr r0, [r5, #0x14]
mov r1, #4
mov r2, #1
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r5, #0x28]
mov r1, #0x20
str r1, [sp]
@@ -795,22 +795,22 @@ MOD60_021D7A40: ; 0x021D7A40
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r5, #0x14]
- bl FUN_020181EC
+ bl CopyRectToBgTilemapRect
mov r2, #3
add r3, r2, #0
ldr r0, [r5, #0x14]
mov r1, #0
sub r3, #0x1b
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r5, #0x14]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x14]
mov r1, #0
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x14]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x24
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD60_021D7A40
@@ -844,7 +844,7 @@ MOD60_021D7BA4: ; 0x021D7BA4
ldr r0, [r4, #0x14]
add r1, #0x2c
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #3
str r0, [sp]
mov r0, #0x1e
@@ -860,7 +860,7 @@ MOD60_021D7BA4: ; 0x021D7BA4
ldr r0, [r4, #0x14]
add r1, #0x3c
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x13
str r0, [sp]
mov r0, #0x1b
@@ -876,7 +876,7 @@ MOD60_021D7BA4: ; 0x021D7BA4
add r1, #0x4c
mov r2, #1
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
ldr r0, [r4]
@@ -933,13 +933,13 @@ MOD60_021D7BA4: ; 0x021D7BA4
bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x4c
- bl FUN_020192B8
+ bl ClearWindowTilemap
add r0, r4, #0
add r0, #0x3c
- bl FUN_020192B8
+ bl ClearWindowTilemap
add r0, r4, #0
add r0, #0x2c
- bl FUN_020192B8
+ bl ClearWindowTilemap
add r0, r4, #0
ldr r2, _021D7CCC ; =0x00000232
add r0, #0x3c
@@ -977,14 +977,14 @@ MOD60_021D7CD4: ; 0x021D7CD4
_021D7CF0:
lsl r4, r6, #4
add r0, r5, r4
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, r4
add r1, r7, #0
bl FillWindowPixelBuffer
add r0, r5, r4
- bl FUN_020192B8
+ bl ClearWindowTilemap
add r0, r5, r4
- bl FUN_02019178
+ bl RemoveWindow
add r0, r6, #1
lsl r0, r0, #0x10
lsr r6, r0, #0x10
@@ -1451,7 +1451,7 @@ _021D8080:
mov r1, #0
mov r2, #3
neg r3, r3
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r3, r4, r5, pc}
_021D80BE:
mov r0, #0x80
@@ -1479,7 +1479,7 @@ _021D80BE:
mov r1, #0
mov r2, #3
neg r3, r3
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
_021D80F6:
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
index ed9e0e05..cbb58d60 100644
--- a/arm9/modules/61/asm/module_61.s
+++ b/arm9/modules/61/asm/module_61.s
@@ -12,7 +12,7 @@ MOD61_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x29
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xbc
mov r2, #0x29
@@ -80,7 +80,7 @@ MOD61_021D7568: ; 0x021D7568
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -120,7 +120,7 @@ MOD61_021D75AC: ; 0x021D75AC
tst r0, r1
beq _021D75C2
ldr r0, _021D75CC ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, pc}
_021D75C2:
@@ -152,7 +152,7 @@ MOD61_021D75D0: ; 0x021D75D0
cmp r0, #0
beq _021D7604
ldr r0, _021D76E4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #2
strb r0, [r4, #0xc]
mov r0, #0
@@ -162,11 +162,11 @@ _021D7604:
mov r1, #3
strh r1, [r0]
ldr r0, _021D76E8 ; =0x000005E3
- bl FUN_020054C8
+ bl PlaySE
b _021D7620
_021D7612:
ldr r0, _021D76E4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #3
strb r0, [r4, #0xc]
mov r0, #0
@@ -189,7 +189,7 @@ _021D762E:
ldr r0, [r4, #0x1c]
strb r1, [r0, #3]
ldr r0, _021D76E4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021D7644:
mov r0, #1
pop {r3, r4, r5, pc}
@@ -198,7 +198,7 @@ _021D7648:
tst r0, r2
beq _021D765C
ldr r0, _021D76E4 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #3
strb r0, [r4, #0xc]
mov r0, #0
@@ -264,7 +264,7 @@ _021D76BE:
pop {r3, r4, r5, pc}
_021D76C6:
ldr r0, _021D76EC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldrb r1, [r4, #0x11]
cmp r1, #3
bne _021D76DA
@@ -344,7 +344,7 @@ _021D775E:
bl FUN_0200D0E0
add r0, r5, #0
add r0, #0x94
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0
strh r0, [r5, #8]
ldrb r1, [r5, #0xd]
@@ -499,7 +499,7 @@ _021D788A:
bl FUN_0200D0E0
add r0, r5, #0
add r0, #0x94
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0
strh r0, [r5, #8]
cmp r4, #0
@@ -739,7 +739,7 @@ _021D7A7A:
_021D7A88:
bl NNS_GfdDoVramTransfer
ldr r0, [r4, #0x18]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D7AA0 ; =0x027E0000
ldr r1, _021D7AA4 ; =0x00003FF8
mov r0, #1
@@ -921,7 +921,7 @@ MOD61_021D7BD0: ; 0x021D7BD0
add r4, r0, #0
bl MOD61_021D7BB0
ldr r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0
ldr r5, _021D7CAC ; =0x021D8434
str r0, [r4, #0x18]
@@ -931,7 +931,7 @@ MOD61_021D7BD0: ; 0x021D7BD0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D7CB0 ; =0x021D84C8
add r3, sp, #0x10
mov r2, #0x11
@@ -946,67 +946,67 @@ _021D7BFC:
ldr r0, [r4, #0x18]
add r2, sp, #0x10
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #1
add r2, sp, #0x2c
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #2
add r2, sp, #0x48
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #3
add r2, sp, #0x64
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #4
add r2, sp, #0x80
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x18]
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0x18]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0x18]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0x18]
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
ldr r3, [r4]
mov r1, #0x20
add r2, r0, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [r4]
mov r0, #1
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [r4]
mov r0, #2
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [r4]
mov r0, #3
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [r4]
mov r0, #4
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x9c
pop {r4, r5, pc}
.align 2, 0
@@ -1020,19 +1020,19 @@ MOD61_021D7CB4: ; 0x021D7CB4
add r4, r0, #0
ldr r0, [r4, #0x18]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x18]
bl FreeToHeap
pop {r4, pc}
@@ -1095,7 +1095,7 @@ MOD61_021D7CE8: ; 0x021D7CE8
ldr r0, [r5, #0x18]
ldr r3, [r3, #0x10]
mov r1, #1
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r3, [sp, #0x28]
mov r0, #0
str r0, [sp]
@@ -1103,7 +1103,7 @@ MOD61_021D7CE8: ; 0x021D7CE8
ldr r0, [r5, #0x18]
ldr r3, [r3, #0x10]
mov r1, #4
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r7, #0
bl FreeToHeap
ldr r1, [sp, #0x1c]
@@ -1127,7 +1127,7 @@ MOD61_021D7CE8: ; 0x021D7CE8
mov r3, #0
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
ldr r0, [r5]
bl FUN_02002FD0
str r0, [r5, #0x30]
@@ -1281,7 +1281,7 @@ _021D7E00:
ldr r0, [r5, #0x18]
ldr r2, _021D7FAC ; =0x00002001
mov r1, #4
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
ldr r0, [r5, #0x3c]
mov r1, #0x20
@@ -1304,13 +1304,13 @@ _021D7E00:
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r5, #0x18]
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, [r5, #0x18]
mov r1, #3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x18]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldrb r0, [r5, #0xc]
cmp r0, #1
bne _021D7FA6
@@ -1336,10 +1336,10 @@ _021D7E00:
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r5, #0x18]
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldr r0, [r5, #0x18]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r2, #0
strb r2, [r5, #0x14]
ldr r0, _021D7FB0 ; =MOD61_021D7AA8
@@ -1402,7 +1402,7 @@ MOD61_021D7FF4: ; 0x021D7FF4
str r0, [sp, #0x10]
ldr r0, [r5, #0x18]
add r1, #0x44
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #8
str r0, [sp]
mov r0, #0x1a
@@ -1417,7 +1417,7 @@ MOD61_021D7FF4: ; 0x021D7FF4
ldr r0, [r5, #0x18]
add r1, #0x54
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xd
str r0, [sp]
mov r0, #0x1a
@@ -1432,7 +1432,7 @@ MOD61_021D7FF4: ; 0x021D7FF4
ldr r0, [r5, #0x18]
add r1, #0x64
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x14
str r0, [sp]
mov r0, #8
@@ -1447,7 +1447,7 @@ MOD61_021D7FF4: ; 0x021D7FF4
ldr r0, [r5, #0x18]
add r1, #0x74
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x14
str r0, [sp]
mov r0, #8
@@ -1462,7 +1462,7 @@ MOD61_021D7FF4: ; 0x021D7FF4
ldr r0, [r5, #0x18]
add r1, #0x84
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x13
str r0, [sp]
mov r0, #0x1b
@@ -1477,7 +1477,7 @@ MOD61_021D7FF4: ; 0x021D7FF4
add r1, #0x94
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r4, #0
add r5, #0x44
add r6, r4, #0
@@ -1513,9 +1513,9 @@ MOD61_021D80F4: ; 0x021D80F4
add r5, #0x44
_021D80FC:
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #6
diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s
index 26b7d486..313e1dd9 100644
--- a/arm9/modules/62/asm/module_62.s
+++ b/arm9/modules/62/asm/module_62.s
@@ -1162,7 +1162,7 @@ MOD62_0222DE00: ; 0x0222DE00
add r1, sp, #0x1c
mov r2, #0xa
mov r3, #2
- bl FUN_020190EC
+ bl AddTextWindowTopLeftCorner
mov r3, #0
str r3, [sp]
mov r0, #0xff
@@ -1238,7 +1238,7 @@ MOD62_0222DE00: ; 0x0222DE00
ldr r0, [sp, #0x14]
bl DestroyMsgData
add r0, sp, #0x1c
- bl FUN_02019178
+ bl RemoveWindow
add sp, #0x5c
pop {r4, r5, r6, r7, pc}
nop
@@ -1550,7 +1550,7 @@ _0222E120:
ldrsh r3, [r7, r3]
mov r1, #5
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x59
lsl r3, r3, #2
ldr r0, [r7, r3]
@@ -1558,7 +1558,7 @@ _0222E120:
ldrsh r3, [r7, r3]
mov r1, #5
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
_0222E160:
ldr r0, [sp, #4]
cmp r0, #0
@@ -1675,14 +1675,14 @@ _0222E22E:
lsl r1, r1, #2
ldr r0, [r0, r1]
mov r1, #5
- bl FUN_02017B48
+ bl Bg_GetXpos
add r4, r0, #0
mov r1, #0x59
ldr r0, [sp, #0x1c]
lsl r1, r1, #2
ldr r0, [r0, r1]
mov r1, #5
- bl FUN_02017B54
+ bl Bg_GetYpos
add r3, r0, #0
ldr r0, [sp, #0xc]
mov r5, #0x37
@@ -1954,7 +1954,7 @@ _0222E442:
ldr r1, [sp, #0x18]
lsr r2, r2, #0x18
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r7, #0
mov r1, #0x35
bl ListMenuItems_ctor
@@ -3323,7 +3323,7 @@ MOD62_0222EEE0: ; 0x0222EEE0
str r0, [sp, #0x10]
add r0, r7, #0
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
mov r1, #1
add r0, r5, #0
add r2, r1, #0
@@ -3374,7 +3374,7 @@ MOD62_0222EF44: ; 0x0222EF44
lsr r0, r0, #0x10
str r0, [sp, #0x10]
add r0, r7, #0
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -3673,9 +3673,9 @@ MOD62_0222F1E8: ; 0x0222F1E8
add r5, #0x30
_0222F1F2:
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0xb
@@ -4603,7 +4603,7 @@ MOD62_0222F904: ; 0x0222F904
bl FUN_0200CCF8
add r0, r4, #0
add r0, #0xfc
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r4, r0]
@@ -4615,7 +4615,7 @@ MOD62_0222F904: ; 0x0222F904
bl ListMenuItems_dtor
add r4, #0xfc
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #1
pop {r4, pc}
.align 2, 0
@@ -5002,7 +5002,7 @@ _0222FBF0:
add r0, r4, #0
bl MOD62_0222D654
ldr r0, _0222FD64 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222FD4C
_0222FC4C:
ldr r0, _0222FD68 ; =gMain
@@ -5033,7 +5033,7 @@ _0222FC4C:
add r3, r4, #0
bl MOD62_0222E3C4
ldr r0, _0222FD64 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222FD4C
_0222FC8E:
mov r0, #2
@@ -5043,7 +5043,7 @@ _0222FC8E:
add r1, #0x10
str r0, [r4, r1]
ldr r0, _0222FD6C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _0222FD4C
_0222FCA2:
mov r0, #0x1a
@@ -5105,7 +5105,7 @@ _0222FD10:
bne _0222FD4C
add r0, r4, #0
add r0, #0xec
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
bl MOD62_0222ED04
add r0, r4, #0
@@ -5335,7 +5335,7 @@ _0222FEBA:
add r0, r4, #0
bl MOD62_0222F0D4
ldr r0, _022300B0 ; =0x000006C5
- bl FUN_020054C8
+ bl PlaySE
_0222FEE6:
ldr r0, _022300B4 ; =0x00000404
add r1, r6, #0
@@ -5368,7 +5368,7 @@ _0222FEF2:
add r0, r4, #0
bl MOD62_0222F0D4
ldr r0, _022300B0 ; =0x000006C5
- bl FUN_020054C8
+ bl PlaySE
_0222FF34:
ldr r0, _022300B8 ; =0x00000408
add r1, r6, #0
@@ -5386,7 +5386,7 @@ _0222FF40:
mov r1, #5
str r1, [r4, r0]
ldr r0, _022300BC ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_0222FF58:
ldr r0, _022300C0 ; =0x0000040C
mov r1, #0
@@ -5412,7 +5412,7 @@ _0222FF6E:
mov r1, #0
bl MOD62_022300DC
ldr r0, _022300C4 ; =0x000005E2
- bl FUN_020054C8
+ bl PlaySE
_0222FF8E:
mov r0, #0x41
mov r1, #0x8e
@@ -5442,7 +5442,7 @@ _0222FFAC:
mov r1, #0
bl MOD62_022300DC
ldr r0, _022300BC ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_0222FFCC:
ldr r0, _022300C8 ; =0x00000414
mov r1, #0x8f
@@ -5464,7 +5464,7 @@ _0222FFE6:
cmp r0, #0
bne _02230006
ldr r0, _022300CC ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add r4, #0xec
add r0, r4, #0
mov r1, #0xf
@@ -5505,14 +5505,14 @@ _02230006:
add r1, r5, #0
bl MOD62_0222F168
ldr r0, _022300D0 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_0223005C:
ldrb r0, [r6, r5]
cmp r0, #0
beq _022300A8
ldr r0, _022300CC ; =0x000005F2
- bl FUN_020054C8
+ bl PlaySE
add r4, #0xec
add r0, r4, #0
mov r1, #0x10
@@ -5537,7 +5537,7 @@ _02230074:
add r0, r4, #0
bl MOD62_0222F208
ldr r0, _022300D0 ; =0x000005EB
- bl FUN_020054C8
+ bl PlaySE
pop {r4, r5, r6, pc}
_022300A4:
bl GF_AssertFail
@@ -6028,7 +6028,7 @@ _0223042E:
bl GX_EngineBToggleLayers
mov r0, #7
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
add r0, r4, #0
mov r1, #1
bl MOD62_0222F738
@@ -6052,7 +6052,7 @@ _0223049A:
bne _02230598
mov r0, #3
mov r1, #1
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #0x10
str r0, [sp]
mov r3, #0
@@ -6272,7 +6272,7 @@ _02230646:
add r0, r4, #0
bl MOD62_0223026C
ldr r0, _02230728 ; =0x000006C6
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xf7
lsl r0, r0, #2
ldr r1, [r4, r0]
@@ -6697,11 +6697,11 @@ _022309DC:
mov r0, #0x43
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0x43
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xf7
lsl r0, r0, #2
ldr r1, [r4, r0]
@@ -6844,10 +6844,10 @@ _02230B40:
bl FUN_02003210
mov r0, #3
add r1, r0, #0
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #7
mov r1, #3
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #4
mov r1, #0
bl GX_EngineBToggleLayers
@@ -6979,7 +6979,7 @@ _02230C3E:
bl MOD62_0222DB78
_02230C80:
ldr r0, _02230CB8 ; =0x000005EA
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0xff
add r0, #0xd4
@@ -7036,7 +7036,7 @@ _02230CEC:
bne _02230D26
add r0, r4, #0
add r0, #0xec
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
bl MOD62_0222ED04
add r0, r4, #0
@@ -7212,7 +7212,7 @@ _02230E46:
mov r2, #0
bl MOD62_0222FA40
ldr r0, _02230F28 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230F18
_02230E66:
ldr r0, _02230F2C ; =gMain
@@ -7240,7 +7240,7 @@ _02230E66:
lsl r0, r0, #2
str r1, [r4, r0]
ldr r0, _02230F28 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230F18
_02230EA4:
mov r0, #2
@@ -7260,7 +7260,7 @@ _02230EA4:
lsl r0, r0, #2
str r1, [r4, r0]
ldr r0, _02230F30 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _02230F18
_02230ED0:
ldr r1, _02230F2C ; =gMain
@@ -7398,7 +7398,7 @@ _02230F90:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _022310C0 ; =MOD62_02231294
add r3, sp, #0xa8
mov r2, #0xa
@@ -7413,26 +7413,26 @@ _02230FF0:
add r0, r4, #0
add r2, sp, #0xa8
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
add r2, sp, #0xc4
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
add r2, sp, #0xe0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, _022310C4 ; =0x04000008
mov r0, #3
ldrh r2, [r1]
@@ -7454,34 +7454,34 @@ _02231052:
mov r1, #4
add r2, sp, #0x38
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #5
add r2, sp, #0x54
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #6
add r2, sp, #0x70
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #7
add r2, sp, #0x8c
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #6
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r0, r4, #0
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #4
mov r1, #0
bl GX_EngineBToggleLayers
@@ -7511,7 +7511,7 @@ MOD62_022310CC: ; 0x022310CC
bl FUN_0200372C
add r4, #0xe4
ldr r0, [r4]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _02231104 ; =0x027E0000
ldr r1, _02231108 ; =0x00003FF8
mov r0, #1
diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s
index ea96bf3b..182b8d56 100644
--- a/arm9/modules/63/asm/mod63_021D74E0.s
+++ b/arm9/modules/63/asm/mod63_021D74E0.s
@@ -37,12 +37,12 @@ MOD63_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #1
mov r0, #3
mov r1, #0x1e
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x79
add r0, r4, #0
lsl r1, r1, #2
@@ -214,7 +214,7 @@ _021D768C:
mov r1, #0x3c
bl FUN_020053CC
ldr r0, _021D77AC ; =0x000005F4
- bl FUN_020054C8
+ bl PlaySE
mov r0, #4
str r0, [r5]
b _021D779C
@@ -363,7 +363,7 @@ MOD63_021D77B4: ; 0x021D77B4
add r0, r7, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
cmp r5, #1
beq _021D77F2
cmp r5, #2
@@ -404,7 +404,7 @@ MOD63_021D782C: ; 0x021D782C
ldr r0, [r0, #4]
bx r3
nop
-_021D7834: .word FUN_0201AB60
+_021D7834: .word DoScheduledBgGpuUpdates
thumb_func_end MOD63_021D782C
thumb_func_start MOD63_021D7838
@@ -500,7 +500,7 @@ MOD63_021D78BC: ; 0x021D78BC
add r0, #0x68
add r1, r4, #0
mov r2, #4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
mov r0, #0x30
add r1, r6, #0
add r2, r4, #0
@@ -692,7 +692,7 @@ MOD63_021D7A48: ; 0x021D7A48
sub sp, #0xb8
add r4, r0, #0
ldr r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0xa8
ldr r5, _021D7B80 ; =MOD63_021DB9B4
str r0, [r4, #4]
@@ -702,7 +702,7 @@ MOD63_021D7A48: ; 0x021D7A48
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D7B84 ; =MOD63_021DB9E0
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
@@ -717,7 +717,7 @@ MOD63_021D7A48: ; 0x021D7A48
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D7B88 ; =MOD63_021DB9C4
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -732,7 +732,7 @@ MOD63_021D7A48: ; 0x021D7A48
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D7B8C ; =MOD63_021DBA50
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -747,7 +747,7 @@ MOD63_021D7A48: ; 0x021D7A48
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D7B90 ; =MOD63_021DBA34
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -762,7 +762,7 @@ MOD63_021D7A48: ; 0x021D7A48
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D7B94 ; =MOD63_021DB9FC
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -777,7 +777,7 @@ MOD63_021D7A48: ; 0x021D7A48
ldr r0, [r4, #4]
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D7B98 ; =MOD63_021DBA18
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -792,7 +792,7 @@ MOD63_021D7A48: ; 0x021D7A48
str r0, [r3]
ldr r0, [r4, #4]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0
bl GX_EngineAToggleLayers
@@ -819,10 +819,10 @@ MOD63_021D7A48: ; 0x021D7A48
bl GX_EngineBToggleLayers
mov r0, #0
add r1, r0, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0xb8
pop {r3, r4, r5, pc}
nop
@@ -865,22 +865,22 @@ MOD63_021D7B9C: ; 0x021D7B9C
bl GX_EngineBToggleLayers
ldr r0, [r4, #4]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
bl FreeToHeap
pop {r4, pc}
@@ -2031,15 +2031,15 @@ _021D844C:
bl GfGfxLoader_GXLoadPal
mov r0, #0
add r1, r0, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r2, _021D85CC ; =0x00000227
mov r0, #1
mov r1, #0x1a
@@ -2054,7 +2054,7 @@ _021D844C:
ldr r2, _021D85D0 ; =MOD63_021DB9A0
add r0, r5, #0
add r1, #0xac
- bl FUN_02019150
+ bl AddWindow
mov r1, #0
mov r0, #0xe0
str r0, [sp]
@@ -2104,12 +2104,12 @@ _021D844C:
add r1, #2
mov r2, #2
mov r3, #0x42
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #4
add r1, sp, #0x1c
mov r2, #2
mov r3, #0x44
- bl FUN_02017FB4
+ bl BG_LoadPlttData
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -2183,7 +2183,7 @@ MOD63_021D8644: ; 0x021D8644
add r0, r2, #0
bx r3
.align 2, 0
-_021D864C: .word FUN_02019178
+_021D864C: .word RemoveWindow
thumb_func_end MOD63_021D8644
thumb_func_start MOD63_021D8650
diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s
index 6f6f8f75..34d50a11 100644
--- a/arm9/modules/63/asm/mod63_021D8890.s
+++ b/arm9/modules/63/asm/mod63_021D8890.s
@@ -69,7 +69,7 @@ MOD63_021D88F0: ; 0x021D88F0
sub sp, #0xb8
add r4, r0, #0
ldr r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0xa8
ldr r5, _021D89E8 ; =MOD63_021DBB4C
str r0, [r4, #0xc]
@@ -79,7 +79,7 @@ MOD63_021D88F0: ; 0x021D88F0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D89EC ; =MOD63_021DBC88
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
@@ -94,7 +94,7 @@ MOD63_021D88F0: ; 0x021D88F0
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D89F0 ; =MOD63_021DBC6C
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -109,7 +109,7 @@ MOD63_021D88F0: ; 0x021D88F0
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D89F4 ; =MOD63_021DBBC4
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -124,7 +124,7 @@ MOD63_021D88F0: ; 0x021D88F0
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D89F8 ; =MOD63_021DBBFC
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -139,7 +139,7 @@ MOD63_021D88F0: ; 0x021D88F0
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D89FC ; =MOD63_021DBC18
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -154,7 +154,7 @@ MOD63_021D88F0: ; 0x021D88F0
ldr r0, [r4, #0xc]
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D8A00 ; =MOD63_021DBC34
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -169,13 +169,13 @@ MOD63_021D88F0: ; 0x021D88F0
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
add r1, r0, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0xb8
pop {r3, r4, r5, pc}
nop
@@ -194,7 +194,7 @@ MOD63_021D8A04: ; 0x021D8A04
sub sp, #0x80
add r4, r0, #0
ldr r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0x70
ldr r5, _021D8AC4 ; =MOD63_021DBB3C
str r0, [r4, #0xc]
@@ -204,7 +204,7 @@ MOD63_021D8A04: ; 0x021D8A04
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
@@ -227,7 +227,7 @@ MOD63_021D8A04: ; 0x021D8A04
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D8AD0 ; =MOD63_021DBCA4
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -242,7 +242,7 @@ MOD63_021D8A04: ; 0x021D8A04
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D8AD4 ; =MOD63_021DBCC0
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -257,7 +257,7 @@ MOD63_021D8A04: ; 0x021D8A04
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D8AD8 ; =MOD63_021DBCDC
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -272,10 +272,10 @@ MOD63_021D8A04: ; 0x021D8A04
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x80
pop {r3, r4, r5, pc}
nop
@@ -293,7 +293,7 @@ MOD63_021D8ADC: ; 0x021D8ADC
sub sp, #0x9c
add r4, r0, #0
ldr r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0x8c
ldr r5, _021D8BBC ; =MOD63_021DBB6C
str r0, [r4, #0xc]
@@ -303,7 +303,7 @@ MOD63_021D8ADC: ; 0x021D8ADC
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
@@ -326,7 +326,7 @@ MOD63_021D8ADC: ; 0x021D8ADC
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D8BC8 ; =MOD63_021DBD14
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -341,7 +341,7 @@ MOD63_021D8ADC: ; 0x021D8ADC
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D8BCC ; =MOD63_021DBD30
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -356,7 +356,7 @@ MOD63_021D8ADC: ; 0x021D8ADC
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D8BD0 ; =MOD63_021DBBA8
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -371,7 +371,7 @@ MOD63_021D8ADC: ; 0x021D8ADC
str r0, [r3]
ldr r0, [r4, #0xc]
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D8BD4 ; =MOD63_021DBBE0
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -386,10 +386,10 @@ MOD63_021D8ADC: ; 0x021D8ADC
str r0, [r3]
ldr r0, [r4, #0xc]
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x9c
pop {r4, r5, pc}
nop
@@ -582,11 +582,11 @@ MOD63_021D8D10: ; 0x021D8D10
bl GX_DisableEngineBLayers
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r0, #3
mov r1, #0x4c
lsl r2, r0, #0x11
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xab
add r0, r4, #0
lsl r1, r1, #2
@@ -739,7 +739,7 @@ MOD63_021D8E68: ; 0x021D8E68
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x4c
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D8E94 ; =SDK_OVERLAY_MODULE_63_ID
ldr r1, _021D8E98 ; =MOD63_021DBAB8
bl RegisterMainOverlay
@@ -1200,22 +1200,22 @@ MOD63_021D9234: ; 0x021D9234
bl MOD63_021DAF9C
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
bl FreeToHeap
mov r0, #0
@@ -1708,16 +1708,16 @@ _021D964A:
_021D965E:
ldr r0, [r5, #0xc]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r5, #0xc]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r5, #0xc]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r5, #0xc]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r5, #0xc]
bl FreeToHeap
ldr r0, [r5, #0x10]
@@ -1930,7 +1930,7 @@ _021D9840:
ldr r1, [r2, #0x14]
add r1, r2, r1
sub r1, r1, r0
- bl FUN_02016B44
+ bl ReallocFromHeap
mov r0, #0x80
mov r1, #0x4c
bl NARC_ctor
@@ -2716,7 +2716,7 @@ MOD63_021D9EE0: ; 0x021D9EE0
ldr r0, [r4, #0xc]
mov r1, #1
sub r3, r2, #5
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0
str r0, [r4, #8]
_021D9EFE:
@@ -2736,7 +2736,7 @@ MOD63_021D9F00: ; 0x021D9F00
ldr r0, [r4, #0xc]
mov r1, #2
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0
str r0, [r4, #8]
_021D9F1E:
@@ -2752,7 +2752,7 @@ MOD63_021D9F20: ; 0x021D9F20
ldr r0, [r4, #0xc]
mov r1, #3
sub r3, #0x11
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0
str r0, [r4, #8]
pop {r4, pc}
@@ -3183,7 +3183,7 @@ _021DA192:
mov r1, #3
mov r2, #1
mov r3, #0x40
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #1
lsl r0, r0, #0xc
bl FX_Inv
@@ -3203,14 +3203,14 @@ _021DA192:
mov r1, #2
add r2, sp, #0x10
mov r3, #0x80
- bl FUN_02017BD0
+ bl SetBgAffine
mov r0, #0x60
str r0, [sp]
ldr r0, [r4, #0xc]
mov r1, #3
add r2, sp, #0x10
mov r3, #0xc0
- bl FUN_02017BD0
+ bl SetBgAffine
mov r0, #1
strb r0, [r4, #3]
add sp, #0x20
@@ -3357,19 +3357,19 @@ MOD63_021DA418: ; 0x021DA418
beq _021DA458
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
bl FreeToHeap
ldr r0, _021DA470 ; =0x0000028E
@@ -3438,7 +3438,7 @@ MOD63_021DA478: ; 0x021DA478
mov r1, #2
mov r2, #4
mov r3, #1
- bl FUN_02017B60
+ bl Bg_SetTextDimAndAffineParams
mov r0, #1
ldr r1, [r4, #8]
lsl r0, r0, #0xa
@@ -3454,7 +3454,7 @@ MOD63_021DA478: ; 0x021DA478
mov r1, #3
mov r2, #4
mov r3, #1
- bl FUN_02017B60
+ bl Bg_SetTextDimAndAffineParams
_021DA4FE:
add sp, #0x2c
pop {r4, r5, pc}
@@ -3502,7 +3502,7 @@ MOD63_021DA504: ; 0x021DA504
mov r1, #2
mov r2, #4
mov r3, #1
- bl FUN_02017B60
+ bl Bg_SetTextDimAndAffineParams
mov r0, #2
ldr r1, [r4, #8]
lsl r0, r0, #0xa
@@ -3518,7 +3518,7 @@ MOD63_021DA504: ; 0x021DA504
mov r1, #3
mov r2, #4
mov r3, #1
- bl FUN_02017B60
+ bl Bg_SetTextDimAndAffineParams
add sp, #0x2c
pop {r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s
index 7a70bf1f..47d2195c 100644
--- a/arm9/modules/64/asm/module_64.s
+++ b/arm9/modules/64/asm/module_64.s
@@ -12,7 +12,7 @@ MOD64_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x2f
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7630 ; =0x000006B4
add r0, r4, #0
mov r2, #0x2f
@@ -30,7 +30,7 @@ _021D7504:
add r0, r5, r0
mov r1, #0x2f
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r0, r4, #0
bl OverlayManager_GetField18
add r4, r0, #0
@@ -60,7 +60,7 @@ _021D755E:
mov r1, #0x2f
bl MOD64_021D7810
mov r0, #0x2f
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r1, r5, #0
add r1, #0x94
str r0, [r1]
@@ -71,7 +71,7 @@ _021D755E:
str r1, [sp]
str r1, [sp, #8]
str r1, [sp, #0xc]
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
add r0, r5, #0
add r0, #0x94
ldr r0, [r0]
@@ -299,7 +299,7 @@ _021D7726:
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x2f
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
thumb_func_end MOD64_021D76F4
@@ -312,7 +312,7 @@ MOD64_021D77A4: ; 0x021D77A4
add r0, r4, #0
add r0, #0x94
ldr r0, [r0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
mov r0, #2
lsl r0, r0, #8
ldr r0, [r4, r0]
@@ -566,15 +566,15 @@ MOD64_021D7970: ; 0x021D7970
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r7, #0
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
add r1, r7, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r6, _021D7A30 ; =0x021D9094
add r3, sp, #0x1c
ldmia r6!, {r0, r1}
@@ -589,15 +589,15 @@ MOD64_021D7970: ; 0x021D7970
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r6, _021D7A34 ; =0x021D90CC
add r3, sp, #0
ldmia r6!, {r0, r1}
@@ -612,15 +612,15 @@ MOD64_021D7970: ; 0x021D7970
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #3
mov r1, #0x20
mov r2, #0
add r3, r4, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r0, r5, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x54
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -635,13 +635,13 @@ MOD64_021D7A38: ; 0x021D7A38
push {r4, lr}
add r4, r0, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD64_021D7A38
@@ -678,7 +678,7 @@ MOD64_021D7A54: ; 0x021D7A54
ldr r0, [r0]
ldr r1, [r1]
mov r2, #1
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r0, #0x98
ldr r0, [r0]
@@ -724,7 +724,7 @@ MOD64_021D7AEC: ; 0x021D7AEC
add r4, r0, #0
add r0, #0x98
ldr r0, [r0]
- bl FUN_02019178
+ bl RemoveWindow
add r4, #0x98
ldr r0, [r4]
bl FreeToHeap
@@ -1508,7 +1508,7 @@ _021D80D2:
add r0, r4, #0
bl MOD64_021D83C4
ldr r0, _021D80FC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _021D80F4
_021D80F0:
mov r0, #1
@@ -1566,7 +1566,7 @@ _021D8146:
mov r1, #1
bl MOD64_021D83C4
ldr r0, _021D81D0 ; =0x000006CA
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_021D815E:
mov r0, #0x26
@@ -1867,7 +1867,7 @@ MOD64_021D8384: ; 0x021D8384
bmi _021D83A0
str r0, [r4, #0x54]
ldr r0, _021D83C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021D83A0:
ldr r0, _021D83BC ; =gMain
ldr r1, [r0, #0x48]
@@ -1880,7 +1880,7 @@ _021D83A0:
bge _021D83BA
str r0, [r4, #0x54]
ldr r0, _021D83C0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021D83BA:
pop {r4, pc}
.align 2, 0
@@ -3445,7 +3445,7 @@ _021D8F52:
ldr r1, [r1]
mov r2, #3
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _021D8FA8 ; =0x0001020A
mov r2, #5
str r0, [sp]
@@ -3476,7 +3476,7 @@ _021D8FB2:
add r0, r5, #0
add r0, #0x9c
ldr r0, [r0]
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
add r0, #0x9c
ldr r0, [r0]
@@ -3537,14 +3537,14 @@ MOD64_021D902C: ; 0x021D902C
add r1, r0, #0
add r1, #0xa8
ldr r1, [r1]
- ldr r3, _021D9040 ; =FUN_02019570
+ ldr r3, _021D9040 ; =ClearWindowTilemapAndCopyToVram
lsl r1, r1, #2
add r0, r0, r1
add r0, #0x9c
ldr r0, [r0]
bx r3
nop
-_021D9040: .word FUN_02019570
+_021D9040: .word ClearWindowTilemapAndCopyToVram
thumb_func_end MOD64_021D902C
thumb_func_start MOD64_021D9044
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index e9e1ed78..4fc8d105 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -13,7 +13,7 @@ MOD65_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x2d
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #2
add r0, r4, #0
lsl r1, r1, #8
@@ -80,7 +80,7 @@ MOD65_021D753C: ; 0x021D753C
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
thumb_func_end MOD65_021D753C
@@ -264,7 +264,7 @@ MOD65_021D76DC: ; 0x021D76DC
_021D76EE:
bl FUN_0201C30C
ldr r0, [r4, #0x24]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D7708 ; =0x027E0000
ldr r1, _021D770C ; =0x00003FF8
mov r0, #1
@@ -362,7 +362,7 @@ _021D77A2:
tst r0, r1
beq _021D77BE
ldr r0, _021D77FC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xff
strb r0, [r5, #0x1a]
mov r0, #0
@@ -374,7 +374,7 @@ _021D77BE:
tst r0, r1
beq _021D77F2
ldr r0, _021D77FC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
cmp r4, #0xff
beq _021D77DC
mov r0, #1
@@ -433,7 +433,7 @@ MOD65_021D7818: ; 0x021D7818
tst r0, r1
beq _021D784A
ldr r0, _021D78A8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD65_021D86BC
add r0, r5, #0
@@ -447,7 +447,7 @@ _021D784A:
tst r0, r1
beq _021D789E
ldr r0, _021D78A8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
mvn r0, r0
cmp r4, r0
@@ -528,7 +528,7 @@ MOD65_021D78CC: ; 0x021D78CC
b _021D7916
_021D78E8:
ldr r0, _021D791C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD65_021D8764
mov r0, #5
@@ -537,7 +537,7 @@ _021D78E8:
pop {r4, pc}
_021D78FC:
ldr r0, _021D791C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x42
lsl r0, r0, #2
add r0, r4, r0
@@ -581,7 +581,7 @@ _021D7940:
mov r0, #0x42
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldrb r0, [r4, #0x1a]
ldr r3, [r4, #0x20]
lsl r2, r0, #3
@@ -754,7 +754,7 @@ MOD65_021D7A8C: ; 0x021D7A8C
add r5, r0, #0
bl MOD65_021D7A6C
ldr r0, [r5]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0
ldr r4, _021D7AFC ; =0x021DA040
str r0, [r5, #0x24]
@@ -764,7 +764,7 @@ MOD65_021D7A8C: ; 0x021D7A8C
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r4, _021D7B00 ; =0x021DA140
add r3, sp, #0x10
mov r2, #0x15
@@ -782,17 +782,17 @@ _021D7AC6:
lsr r1, r1, #0x18
add r2, r6, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
lsl r1, r4, #0x18
ldr r0, [r5, #0x24]
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
lsl r0, r4, #0x18
ldr r3, [r5]
lsr r0, r0, #0x18
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r7, r7, #1
add r4, r4, #1
add r6, #0x1c
@@ -814,7 +814,7 @@ _021D7B0A:
lsl r1, r4, #0x18
ldr r0, [r5, #0x24]
lsr r1, r1, #0x18
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r4, r4, #1
cmp r4, #6
blt _021D7B0A
@@ -919,10 +919,10 @@ MOD65_021D7B24: ; 0x021D7B24
bl NARC_dtor
ldr r0, [r5, #0x24]
mov r1, #3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x24]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -995,7 +995,7 @@ _021D7C68:
ldrb r2, [r4]
ldrb r3, [r4, #1]
ldr r0, [r6, #0x24]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -1020,9 +1020,9 @@ MOD65_021D7CA8: ; 0x021D7CA8
add r5, #0xe8
_021D7CB0:
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0xd
@@ -1406,7 +1406,7 @@ _021D7FCA:
add r3, r2, #0
bl FillWindowPixelRect
mov r0, #1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0
bl FUN_02002B7C
mov r3, #0
@@ -1716,7 +1716,7 @@ MOD65_021D8214: ; 0x021D8214
beq _021D823E
add r0, r5, #0
add r0, #0xe8
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
_021D823E:
add r0, r5, #0
add r0, #0xc4
@@ -1900,7 +1900,7 @@ MOD65_021D83A0: ; 0x021D83A0
add r4, r0, #0
ldr r0, _021D8470 ; =0x000005E4
add r5, r1, #0
- bl FUN_020054C8
+ bl PlaySE
ldrh r1, [r4, #0x14]
ldr r0, _021D8474 ; =0x0000FFFF
cmp r1, r0
@@ -2077,7 +2077,7 @@ MOD65_021D84F0: ; 0x021D84F0
cmp r6, #0
bne _021D850C
ldr r0, _021D862C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021D850C:
add r1, sp, #0x10
add r0, r7, #0
@@ -2297,7 +2297,7 @@ MOD65_021D86BC: ; 0x021D86BC
mov r0, #0x46
lsl r0, r0, #2
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0xc8
add r2, sp, #0
@@ -2326,7 +2326,7 @@ MOD65_021D8704: ; 0x021D8704
cmp r2, #0
bne _021D8710
ldr r0, _021D8714 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021D8710:
pop {r3, pc}
nop
@@ -2710,7 +2710,7 @@ MOD65_021D8A08: ; 0x021D8A08
mov r0, #3
mov r1, #0x2e
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x6f
add r0, r4, #0
lsl r1, r1, #2
@@ -2921,7 +2921,7 @@ MOD65_021D8BBC: ; 0x021D8BBC
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -3025,7 +3025,7 @@ MOD65_021D8C88: ; 0x021D8C88
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x68]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r0, [r4, #0x44]
bl FUN_020081C4
bl FUN_0200BC30
@@ -3069,7 +3069,7 @@ MOD65_021D8CD8: ; 0x021D8CD8
add r5, r0, #0
bl MOD65_021D8CB8
ldr r0, [r5]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #8
ldr r4, _021D8D5C ; =0x021DA35C
str r0, [r5, #0x68]
@@ -3079,7 +3079,7 @@ MOD65_021D8CD8: ; 0x021D8CD8
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r4, _021D8D60 ; =0x021DA3C8
add r3, sp, #0x18
mov r2, #0xa
@@ -3108,15 +3108,15 @@ _021D8D28:
add r2, r6, #0
add r1, r7, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #0x68]
add r1, r7, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r3, [r5]
add r0, r7, #0
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r0, [sp]
add r4, r4, #1
add r0, r0, #1
@@ -3141,13 +3141,13 @@ _021D8D6E:
lsl r1, r4, #0x18
ldr r0, [r5, #0x68]
lsr r1, r1, #0x18
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r4, r4, #1
cmp r4, #3
blt _021D8D6E
ldr r0, [r5, #0x68]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r5, #0x68]
bl FreeToHeap
pop {r3, r4, r5, pc}
@@ -3248,10 +3248,10 @@ MOD65_021D8D90: ; 0x021D8D90
bl NARC_dtor
ldr r0, [r5, #0x68]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x68]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
thumb_func_end MOD65_021D8D90
@@ -3265,7 +3265,7 @@ MOD65_021D8E68: ; 0x021D8E68
ldr r0, [r4, #0x68]
ldr r2, _021D8EAC ; =0x021DA354
add r1, #0x6c
- bl FUN_02019150
+ bl AddWindow
add r0, r4, #0
add r0, #0x6c
mov r1, #0
@@ -3296,10 +3296,10 @@ MOD65_021D8EB0: ; 0x021D8EB0
push {r4, lr}
add r4, r0, #0
add r0, #0x6c
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r4, #0x6c
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
thumb_func_end MOD65_021D8EB0
@@ -3917,7 +3917,7 @@ _021D9366:
bl FUN_0200D0E0
add r4, #0x6c
add r0, r4, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #8
pop {r4, pc}
.align 2, 0
diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s
index c902cd22..95660bd2 100644
--- a/arm9/modules/66/asm/module_66.s
+++ b/arm9/modules/66/asm/module_66.s
@@ -13,7 +13,7 @@ MOD66_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x11
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
mov r1, #0xe4
mov r2, #0x11
@@ -119,7 +119,7 @@ MOD66_021D75B0: ; 0x021D75B0
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x11
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
thumb_func_end MOD66_021D75B0
@@ -142,7 +142,7 @@ _021D75DE:
add r0, r4, #0
bl MOD66_021D9220
ldr r0, [r4, #0x28]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D7600 ; =0x027E0000
ldr r1, _021D7604 ; =0x00003FF8
mov r0, #1
@@ -269,7 +269,7 @@ _021D7694:
_021D76E4:
bl MOD66_021D7608
ldr r0, [r4, #4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x28]
ldr r1, [r4, #0x28]
add r0, r4, #0
@@ -336,7 +336,7 @@ _021D7782:
lsl r1, r4, #0x18
ldr r0, [r5, #0x28]
lsr r1, r1, #0x18
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r4, r4, #1
cmp r4, #8
blt _021D7782
@@ -393,7 +393,7 @@ MOD66_021D77E4: ; 0x021D77E4
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r4, _021D78B0 ; =0x021D9634
add r3, sp, #0x14
mov r2, #0x1c
@@ -411,12 +411,12 @@ _021D7814:
lsr r1, r1, #0x18
add r2, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
lsl r1, r4, #0x18
add r0, r6, #0
lsr r1, r1, #0x18
add r4, r4, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add r7, r7, #1
add r5, #0x1c
cmp r7, #8
@@ -426,49 +426,49 @@ _021D7814:
ldr r3, [r3, #4]
mov r1, #0x20
add r2, r0, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [sp]
mov r0, #1
ldr r3, [r3, #4]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [sp]
mov r0, #2
ldr r3, [r3, #4]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [sp]
mov r0, #3
ldr r3, [r3, #4]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [sp]
mov r0, #4
ldr r3, [r3, #4]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [sp]
mov r0, #5
ldr r3, [r3, #4]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [sp]
mov r0, #6
ldr r3, [r3, #4]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [sp]
mov r0, #7
ldr r3, [r3, #4]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0xf4
pop {r4, r5, r6, r7, pc}
nop
@@ -1001,7 +1001,7 @@ MOD66_021D7CAC: ; 0x021D7CAC
mov r1, #0x11
bl FUN_0200E1D0
ldr r0, _021D7CF0 ; =0x0000068F
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
bl FUN_0200E394
mov r0, #1
@@ -1038,7 +1038,7 @@ MOD66_021D7CF8: ; 0x021D7CF8
bl FUN_0200E1D0
mov r0, #0x69
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
add sp, #0xc
pop {pc}
@@ -1061,7 +1061,7 @@ MOD66_021D7D24: ; 0x021D7D24
add r2, r1, #0
bl FUN_0200E1D0
ldr r0, _021D7D64 ; =0x0000068F
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
bl FUN_0200E394
mov r1, #4
@@ -1096,7 +1096,7 @@ MOD66_021D7D6C: ; 0x021D7D6C
bl FUN_0200E1D0
mov r0, #0x69
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
add sp, #0xc
pop {pc}
@@ -1115,7 +1115,7 @@ MOD66_021D7D98: ; 0x021D7D98
tst r1, r2
beq _021D7DB6
ldr r0, _021D7DD0 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, pc}
_021D7DB6:
@@ -1150,7 +1150,7 @@ MOD66_021D7DD4: ; 0x021D7DD4
cmp r0, #0
beq _021D7DFA
ldr r0, _021D7E28 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, pc}
_021D7DFA:
@@ -1161,7 +1161,7 @@ _021D7DFE:
tst r2, r3
beq _021D7E0E
ldr r0, _021D7E28 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, pc}
_021D7E0E:
@@ -1189,7 +1189,7 @@ MOD66_021D7E2C: ; 0x021D7E2C
tst r1, r3
beq _021D7E42
ldr r0, _021D7E50 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, pc}
_021D7E42:
@@ -1407,7 +1407,7 @@ _021D7FCE:
ldrh r2, [r3, #0x1c]
ldrh r3, [r3, #0x1e]
mov r1, #5
- bl FUN_0201AFBC
+ bl DoesPixelAtScreenXYMatchPtrVal
cmp r0, #0
beq _021D7FEE
mov r4, #0
@@ -1630,10 +1630,10 @@ MOD66_021D8140: ; 0x021D8140
bl MOD66_021D8480
ldr r0, [r5, #0x28]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x28]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_021D818A:
pop {r3, r4, r5, pc}
thumb_func_end MOD66_021D8140
@@ -1805,7 +1805,7 @@ MOD66_021D82B8: ; 0x021D82B8
add r0, r6, #0
bl CopyWindowToVram
add r0, r6, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
_021D82DC:
@@ -2046,7 +2046,7 @@ MOD66_021D8494: ; 0x021D8494
add r0, r5, #0
bl FillWindowPixelBuffer
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldrb r1, [r4, #0x15]
add r0, r5, #0
mov r2, #0
@@ -2055,7 +2055,7 @@ MOD66_021D8494: ; 0x021D8494
bl FUN_0200D7A0
ldr r0, [r6, #0x28]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_021D84C6:
pop {r4, r5, r6, pc}
thumb_func_end MOD66_021D8494
@@ -2090,7 +2090,7 @@ MOD66_021D84C8: ; 0x021D84C8
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r4, #0x28]
- bl FUN_020181EC
+ bl CopyRectToBgTilemapRect
add r4, #0x84
ldr r0, [r4]
mov r1, #1
@@ -2147,7 +2147,7 @@ MOD66_021D8554: ; 0x021D8554
ldr r0, [r5, #0x28]
add r1, #0x28
mov r2, #1
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #3
str r0, [sp]
mov r0, #0x15
@@ -2162,7 +2162,7 @@ MOD66_021D8554: ; 0x021D8554
str r0, [sp, #0x10]
ldr r0, [r5, #0x28]
mov r3, #9
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #3
str r0, [sp]
mov r0, #0x1c
@@ -2177,7 +2177,7 @@ MOD66_021D8554: ; 0x021D8554
str r0, [sp, #0x10]
ldr r0, [r5, #0x28]
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #8
str r0, [sp]
mov r0, #0x1c
@@ -2192,7 +2192,7 @@ MOD66_021D8554: ; 0x021D8554
add r1, #0x58
mov r2, #4
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0
str r0, [sp]
mov r0, #0xa
@@ -2208,7 +2208,7 @@ MOD66_021D8554: ; 0x021D8554
add r1, #0x68
mov r2, #4
mov r3, #0xb
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
add r0, #0x28
mov r1, #0
@@ -2234,16 +2234,16 @@ MOD66_021D8554: ; 0x021D8554
bl CopyWindowToVram
add r0, r4, #0
add r0, #0x38
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x48
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x58
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r4, #0x68
add r0, r4, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add sp, #0x14
pop {r4, r5, pc}
nop
@@ -2262,7 +2262,7 @@ MOD66_021D8670: ; 0x021D8670
_021D8678:
lsl r0, r5, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #1
lsl r0, r0, #0x10
lsr r5, r0, #0x10
@@ -2302,7 +2302,7 @@ MOD66_021D868C: ; 0x021D868C
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r5, #0x28]
- bl FUN_02018170
+ bl CopyToBgTilemapRect
_021D86CA:
add r0, r5, #0
add r0, #0xcc
@@ -2333,7 +2333,7 @@ _021D86CA:
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r5, #0x28]
- bl FUN_020181EC
+ bl CopyRectToBgTilemapRect
add sp, #0x1c
pop {r4, r5, pc}
thumb_func_end MOD66_021D868C
@@ -2394,7 +2394,7 @@ MOD66_021D870C: ; 0x021D870C
ldrb r2, [r3, #2]
ldrb r3, [r3, #3]
ldr r0, [r5, #0x28]
- bl FUN_02018170
+ bl CopyToBgTilemapRect
add r0, r5, #0
add r0, #0xd4
ldrb r1, [r7, #4]
@@ -2423,7 +2423,7 @@ MOD66_021D870C: ; 0x021D870C
ldrb r2, [r7, #2]
ldrb r3, [r7, #3]
ldr r0, [r5, #0x28]
- bl FUN_020181EC
+ bl CopyRectToBgTilemapRect
ldr r0, [sp, #0x1c]
cmp r0, #2
beq _021D882E
@@ -2453,7 +2453,7 @@ MOD66_021D870C: ; 0x021D870C
ldrb r2, [r6, #2]
ldrb r3, [r6, #3]
ldr r0, [r5, #0x28]
- bl FUN_02018170
+ bl CopyToBgTilemapRect
add r0, r5, #0
add r0, #0xd4
ldrb r1, [r4, #4]
@@ -2480,7 +2480,7 @@ MOD66_021D870C: ; 0x021D870C
ldrb r2, [r4, #2]
ldrb r3, [r4, #3]
ldr r0, [r5, #0x28]
- bl FUN_020181EC
+ bl CopyRectToBgTilemapRect
_021D882E:
add sp, #0x24
pop {r4, r5, r6, r7, pc}
@@ -2516,7 +2516,7 @@ MOD66_021D8838: ; 0x021D8838
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r4, #0x28]
- bl FUN_02018170
+ bl CopyToBgTilemapRect
add r0, r4, #0
add r0, #0xbc
mov r2, #0
@@ -2541,7 +2541,7 @@ MOD66_021D8838: ; 0x021D8838
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r4, #0x28]
- bl FUN_02018170
+ bl CopyToBgTilemapRect
ldrb r0, [r4]
cmp r0, #1
beq _021D88DE
@@ -2569,7 +2569,7 @@ MOD66_021D8838: ; 0x021D8838
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r4, #0x28]
- bl FUN_02018170
+ bl CopyToBgTilemapRect
_021D88DE:
add r0, r4, #0
mov r1, #0
@@ -2598,7 +2598,7 @@ _021D88DE:
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r4, #0x28]
- bl FUN_020181EC
+ bl CopyRectToBgTilemapRect
add r0, r4, #0
add r0, #0xc4
mov r2, #0
@@ -2622,7 +2622,7 @@ _021D88DE:
lsr r0, r0, #0x18
str r0, [sp, #0x18]
ldr r0, [r4, #0x28]
- bl FUN_020181EC
+ bl CopyRectToBgTilemapRect
ldrh r1, [r4, #2]
mov r0, #1
tst r0, r1
@@ -2657,19 +2657,19 @@ _021D897C:
_021D898C:
ldr r0, [r4, #0x28]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #6
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #7
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r3, r4, pc}
thumb_func_end MOD66_021D8838
@@ -2683,22 +2683,22 @@ MOD66_021D89B8: ; 0x021D89B8
mov r1, #6
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x28]
mov r1, #7
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #0
ldr r0, [r4, #0x28]
mov r1, #6
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #0
ldr r0, [r4, #0x28]
mov r1, #7
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #0
str r1, [sp]
mov r0, #0x20
@@ -2709,7 +2709,7 @@ MOD66_021D89B8: ; 0x021D89B8
ldr r0, [r4, #0x28]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -2720,7 +2720,7 @@ MOD66_021D89B8: ; 0x021D89B8
ldr r0, [r4, #0x28]
mov r1, #1
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -2731,7 +2731,7 @@ MOD66_021D89B8: ; 0x021D89B8
ldr r0, [r4, #0x28]
mov r1, #2
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -2742,7 +2742,7 @@ MOD66_021D89B8: ; 0x021D89B8
ldr r0, [r4, #0x28]
mov r1, #3
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -2753,7 +2753,7 @@ MOD66_021D89B8: ; 0x021D89B8
ldr r0, [r4, #0x28]
mov r1, #4
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -2764,7 +2764,7 @@ MOD66_021D89B8: ; 0x021D89B8
ldr r0, [r4, #0x28]
mov r1, #5
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -2775,7 +2775,7 @@ MOD66_021D89B8: ; 0x021D89B8
ldr r0, [r4, #0x28]
mov r1, #6
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -2786,31 +2786,31 @@ MOD66_021D89B8: ; 0x021D89B8
ldr r0, [r4, #0x28]
mov r1, #7
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r4, #0x28]
mov r1, #0
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #3
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #6
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r4, #0x28]
mov r1, #7
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -2943,12 +2943,12 @@ MOD66_021D8BF0: ; 0x021D8BF0
mov r1, #6
mov r2, #0
mov r3, #8
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5, #0x28]
mov r1, #7
mov r2, #0
mov r3, #8
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _021D8C4A
_021D8C16:
cmp r4, #0xf8
@@ -2957,23 +2957,23 @@ _021D8C16:
mov r1, #6
mov r2, #0
mov r3, #0xf8
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5, #0x28]
mov r1, #7
mov r2, #0
mov r3, #0xf8
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
b _021D8C4A
_021D8C34:
mov r1, #6
mov r2, #0
add r3, r4, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5, #0x28]
mov r1, #7
mov r2, #0
add r3, r4, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
_021D8C4A:
cmp r6, #0x50
bge _021D8C68
@@ -2981,12 +2981,12 @@ _021D8C4A:
mov r1, #6
mov r2, #3
mov r3, #0x50
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5, #0x28]
mov r1, #7
mov r2, #3
mov r3, #0x50
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r4, r5, r6, pc}
_021D8C68:
mov r3, #0x13
@@ -2996,24 +2996,24 @@ _021D8C68:
ble _021D8C8A
mov r1, #6
mov r2, #3
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r3, #0x13
ldr r0, [r5, #0x28]
mov r1, #7
mov r2, #3
lsl r3, r3, #4
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r4, r5, r6, pc}
_021D8C8A:
mov r1, #6
mov r2, #3
add r3, r6, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r0, [r5, #0x28]
mov r1, #7
mov r2, #3
add r3, r6, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD66_021D8BF0
@@ -3336,7 +3336,7 @@ _021D8ED0:
mov r1, #1
bl FUN_02020208
ldr r0, _021D9018 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #4]
add sp, #0x10
add r0, r0, #1
@@ -3360,7 +3360,7 @@ _021D8F04:
bl MOD66_021D868C
ldr r0, [r5, #0x28]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_021D8F2C:
ldr r1, [r4, #8]
add r0, r1, #1
@@ -3416,7 +3416,7 @@ _021D8F7C:
ldr r0, [r5, #0x28]
mov r1, #4
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -3427,7 +3427,7 @@ _021D8F7C:
ldr r0, [r5, #0x28]
mov r1, #5
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r1, r4, #0
add r0, r5, #0
add r1, #0x68
@@ -3507,7 +3507,7 @@ _021D903C:
mov r2, #2
bl FUN_0200E1D0
ldr r0, _021D90EC ; =0x00000691
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #4]
add sp, #0x10
add r0, r0, #1
@@ -3527,17 +3527,17 @@ _021D9066:
ldr r0, [r5, #0x28]
mov r1, #4
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r5, #0
mov r1, #0
mov r2, #1
bl MOD66_021D868C
ldr r0, [r5, #0x28]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r0, [r5, #0x28]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r3, #0
str r3, [r5, #0x14]
mov r0, #8
diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s
index 60bd02b5..c17a7105 100644
--- a/arm9/modules/67/asm/module_67.s
+++ b/arm9/modules/67/asm/module_67.s
@@ -30,12 +30,12 @@ MOD67_021D74E0: ; 0x021D74E0
strh r1, [r3]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
mov r2, #2
mov r0, #3
mov r1, #0x2a
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r4, #0
bl OverlayManager_GetField18
add r5, r0, #0
@@ -48,7 +48,7 @@ MOD67_021D74E0: ; 0x021D74E0
add r4, r0, #0
bl memset
mov r0, #0x2a
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4]
str r5, [r4, #0x4c]
add r0, r5, #0
@@ -165,7 +165,7 @@ MOD67_021D7624: ; 0x021D7624
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x2a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -175,7 +175,7 @@ MOD67_021D7624: ; 0x021D7624
MOD67_021D7660: ; 0x021D7660
push {r3, lr}
ldr r0, [r0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D7678 ; =0x027E0000
ldr r1, _021D767C ; =0x00003FF8
mov r0, #1
@@ -221,7 +221,7 @@ MOD67_021D76A0: ; 0x021D76A0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D776C ; =0x021D975C
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -236,10 +236,10 @@ MOD67_021D76A0: ; 0x021D76A0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7770 ; =0x021D9740
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -254,10 +254,10 @@ MOD67_021D76A0: ; 0x021D76A0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7774 ; =0x021D9778
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -272,7 +272,7 @@ MOD67_021D76A0: ; 0x021D76A0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021D7778 ; =0x021D9794
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -287,17 +287,17 @@ MOD67_021D76A0: ; 0x021D76A0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x2a
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0x2a
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x80
pop {r3, r4, r5, pc}
nop
@@ -315,16 +315,16 @@ MOD67_021D777C: ; 0x021D777C
bl GX_DisableEngineALayers
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x2a
add r1, r4, #0
bl FreeToHeapExplicit
@@ -405,7 +405,7 @@ _021D7802:
_021D7844:
ldr r0, [r4]
mov r1, #2
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r1, r4, #0
mov r2, #2
add r1, #0x5c
@@ -417,7 +417,7 @@ _021D7844:
mov r1, #3
add r2, r4, #0
lsl r3, r3, #0xa
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
mov r1, #0x1e
mov r0, #0
lsl r1, r1, #4
@@ -425,7 +425,7 @@ _021D7844:
bl FUN_02002ED0
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x10
pop {r4, pc}
thumb_func_end MOD67_021D77B0
@@ -587,7 +587,7 @@ _021D7970:
mov r1, #1
strb r1, [r4, r0]
ldr r0, _021D7A24 ; =0x00000691
- bl FUN_020054C8
+ bl PlaySE
b _021D7A12
_021D79AC:
bl MOD67_021D7C30
@@ -613,7 +613,7 @@ _021D79AC:
ldrb r1, [r4, r1]
ldr r0, [r4]
add r2, r4, r2
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
mov r3, #0
add r2, r4, #0
str r3, [sp]
@@ -624,15 +624,15 @@ _021D79AC:
ldr r0, [r4]
ldrb r1, [r4, r1]
add r2, #0x5c
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r1, _021D7A34 ; =0x00001062
ldr r0, [r4]
ldrb r1, [r4, r1]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldr r1, _021D7A30 ; =0x00001061
ldr r0, [r4]
ldrb r1, [r4, r1]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0xc
mov r0, #1
pop {r3, r4, pc}
@@ -678,7 +678,7 @@ _021D7A4A:
mov r1, #1
strb r1, [r4, r0]
ldr r0, _021D7AA0 ; =0x00000691
- bl FUN_020054C8
+ bl PlaySE
b _021D7A92
_021D7A72:
bl MOD67_021D7CBC
@@ -826,10 +826,10 @@ MOD67_021D7B5C: ; 0x021D7B5C
ldr r0, [r5]
add r3, r2, #0
add r4, r1, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, [r5]
add r1, r4, #0
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0xc
pop {r4, r5, pc}
.align 2, 0
@@ -841,7 +841,7 @@ MOD67_021D7B84: ; 0x021D7B84
add r4, r0, #0
ldr r0, [r4]
mov r1, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r2, _021D7B9C ; =0x0000085C
add r1, r4, r2
sub r2, #0x5c
@@ -863,7 +863,7 @@ MOD67_021D7BA0: ; 0x021D7BA0
ldr r0, [r7]
lsr r1, r1, #0x18
add r5, r3, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
str r0, [sp, #0x14]
ldr r1, _021D7C2C ; =0x021D97D8
lsl r0, r5, #5
@@ -890,7 +890,7 @@ _021D7BCA:
ldr r1, [sp, #0x18]
mov r2, #0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
b _021D7C10
_021D7BF0:
ldr r0, [sp, #0x14]
@@ -920,7 +920,7 @@ _021D7C10:
ldr r0, [r7]
lsl r1, r1, #0x18
lsr r1, r1, #0x18
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
@@ -965,19 +965,19 @@ MOD67_021D7C30: ; 0x021D7C30
add r0, r0, #5
ldrb r0, [r4, r0]
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, _021D7CB8 ; =0x00001063
mov r1, #1
ldrb r0, [r4, r0]
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, _021D7CA8 ; =0x00001062
mov r1, #2
ldrb r0, [r4, r0]
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, _021D7CB0 ; =0x00001061
mov r1, #3
ldrb r0, [r4, r0]
- bl FUN_020178BC
+ bl SetBgPriority
mov r0, #1
pop {r4, pc}
_021D7CA4:
@@ -1031,19 +1031,19 @@ MOD67_021D7CBC: ; 0x021D7CBC
add r0, r0, #5
ldrb r0, [r4, r0]
mov r1, #0
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, _021D7D50 ; =0x00001063
mov r1, #1
ldrb r0, [r4, r0]
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, _021D7D58 ; =0x00001062
mov r1, #2
ldrb r0, [r4, r0]
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, _021D7D5C ; =0x00001061
mov r1, #3
ldrb r0, [r4, r0]
- bl FUN_020178BC
+ bl SetBgPriority
_021D7D30:
ldr r0, _021D7D54 ; =0x0000105F
ldrsb r1, [r4, r0]
@@ -1077,7 +1077,7 @@ _021D7D6A:
ldr r0, [r7]
add r1, r5, #0
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r6, r6, #1
add r4, #8
add r5, #0x10
@@ -1095,7 +1095,7 @@ MOD67_021D7D84: ; 0x021D7D84
add r5, r0, #4
_021D7D8A:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #4
@@ -1146,9 +1146,9 @@ _021D7DB4:
bl MOD67_021D8344
_021D7DF2:
add r0, r6, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, r5, r6, pc}
thumb_func_end MOD67_021D7D9C
diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s
index b2170444..e30ad283 100644
--- a/arm9/modules/68/asm/module_68.s
+++ b/arm9/modules/68/asm/module_68.s
@@ -32,7 +32,7 @@ MOD68_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x24
lsr r2, r2, #9
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x81
add r0, r4, #0
lsl r1, r1, #2
@@ -49,7 +49,7 @@ MOD68_021D74E0: ; 0x021D74E0
lsl r1, r1, #2
str r0, [r5, r1]
mov r0, #0x24
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r5]
mov r0, #0x7e
lsl r0, r0, #2
@@ -73,7 +73,7 @@ MOD68_021D74E0: ; 0x021D74E0
bl MOD68_021D7870
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl FUN_0201CC08
mov r0, #4
bl FUN_0201CC24
@@ -173,7 +173,7 @@ MOD68_021D762C: ; 0x021D762C
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x24
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D767C ; =0x04000050
mov r1, #0
strh r1, [r0]
@@ -187,7 +187,7 @@ _021D767C: .word 0x04000050
MOD68_021D7680: ; 0x021D7680
push {r3, lr}
ldr r0, [r0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D7698 ; =0x027E0000
ldr r1, _021D769C ; =0x00003FF8
mov r0, #1
@@ -233,7 +233,7 @@ MOD68_021D76C0: ; 0x021D76C0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
bl MOD68_021D7FD8
ldr r5, _021D7768 ; =0x021D8910
add r3, sp, #0x38
@@ -249,10 +249,10 @@ MOD68_021D76C0: ; 0x021D76C0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D776C ; =0x021D88D8
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -267,12 +267,12 @@ MOD68_021D76C0: ; 0x021D76C0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
mov r2, #3
mov r3, #8
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
ldr r5, _021D7770 ; =0x021D88F4
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -287,12 +287,12 @@ MOD68_021D76C0: ; 0x021D76C0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0x24
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x64
pop {r4, r5, pc}
nop
@@ -311,13 +311,13 @@ MOD68_021D7774: ; 0x021D7774
bl GX_EngineAToggleLayers
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x24
add r1, r4, #0
bl FreeToHeapExplicit
@@ -393,12 +393,12 @@ _021D7812:
mov r1, #1
add r2, r4, #0
mov r3, #2
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
bl FreeToHeap
ldr r0, [r5]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r1, #0x1e
mov r0, #0
lsl r1, r1, #4
@@ -482,7 +482,7 @@ _021D78D2:
ldr r0, [r7]
add r1, r5, #0
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r6, r6, #1
add r4, #8
add r5, #0x10
@@ -500,7 +500,7 @@ MOD68_021D78EC: ; 0x021D78EC
mov r4, #0
_021D78F2:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0xc
@@ -544,7 +544,7 @@ MOD68_021D7904: ; 0x021D7904
ldr r0, [sp, #0x10]
bl String_dtor
add r0, r5, r4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
thumb_func_end MOD68_021D7904
@@ -736,7 +736,7 @@ MOD68_021D7A18: ; 0x021D7A18
add r0, r5, #0
bl String_dtor
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -774,7 +774,7 @@ MOD68_021D7AE4: ; 0x021D7AE4
add r0, r4, #0
bl String_dtor
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, pc}
nop
@@ -810,7 +810,7 @@ MOD68_021D7B34: ; 0x021D7B34
add r0, r4, #0
bl String_dtor
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, pc}
nop
@@ -855,7 +855,7 @@ _021D7BA4:
add r0, r4, #0
bl String_dtor
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -891,7 +891,7 @@ MOD68_021D7BDC: ; 0x021D7BDC
add r0, r4, #0
bl String_dtor
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, pc}
nop
@@ -980,7 +980,7 @@ MOD68_021D7C28: ; 0x021D7C28
add r0, r4, #0
bl String_dtor
add r0, r6, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x14
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -1393,7 +1393,7 @@ MOD68_021D7F98: ; 0x021D7F98
bl MOD68_021D85F4
ldr r0, [r4]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
pop {r4, pc}
.align 2, 0
thumb_func_end MOD68_021D7F98
diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s
index 58d0b4f8..b29554ea 100644
--- a/arm9/modules/69/asm/module_69.s
+++ b/arm9/modules/69/asm/module_69.s
@@ -13,7 +13,7 @@ HOF_OverlayInit: ; 0x0222D5C0
mov r0, #3
mov r1, #0x3f
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D70C ; =0x00001B60
add r0, r5, #0
mov r2, #0x3f
@@ -213,7 +213,7 @@ _0222D762:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0x3f
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -735,7 +735,7 @@ MOD69_0222DBAC: ; 0x0222DBAC
sub sp, #0x14
add r4, r0, #0
mov r0, #0x3f
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x10]
ldr r0, _0222DCF4 ; =0x0222F8CC
bl GX_SetBanks
@@ -745,28 +745,28 @@ MOD69_0222DBAC: ; 0x0222DBAC
and r0, r1
strh r0, [r2]
ldr r0, _0222DD00 ; =0x0222F7C4
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r4, #0x10]
ldr r2, _0222DD04 ; =0x0222F850
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x10]
ldr r2, _0222DD08 ; =0x0222F818
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x10]
ldr r2, _0222DD0C ; =0x0222F834
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r2, #0
str r2, [sp]
mov r1, #1
ldr r0, [r4, #0x10]
add r3, r1, #0
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -776,7 +776,7 @@ MOD69_0222DBAC: ; 0x0222DBAC
ldr r0, [r4, #0x10]
mov r1, #1
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0
add r1, r4, #0
str r3, [sp]
@@ -789,17 +789,17 @@ MOD69_0222DBAC: ; 0x0222DBAC
str r2, [sp, #0x10]
ldr r0, [r4, #0x10]
add r1, #0x14
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
add r0, #0x14
mov r1, #0
bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x14
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
add r0, #0x14
- bl FUN_02019270
+ bl PutWindowTilemap
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -846,7 +846,7 @@ MOD69_0222DBAC: ; 0x0222DBAC
bl GfGfxLoader_LoadScrnData
ldr r0, [r4, #0x10]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, _0222DD10 ; =0x04000040
mov r1, #0
strh r1, [r0]
@@ -900,16 +900,16 @@ MOD69_0222DD18: ; 0x0222DD18
str r0, [r2]
add r0, r4, #0
add r0, #0x14
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x10]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
bl FreeToHeap
pop {r4, pc}
@@ -2469,7 +2469,7 @@ _0222E9D8:
mov r1, #0x18
bl MOD69_0222E89C
ldr r0, [r4, #0x10]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
mov r0, #0x14
str r0, [r4, #0x30]
ldr r0, [r4, #0x34]
@@ -2490,7 +2490,7 @@ _0222E9FC:
mov r1, #0x58
bl MOD69_0222E89C
ldr r0, [r4, #0x10]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
mov r0, #0x14
str r0, [r4, #0x30]
ldr r0, [r4, #0x34]
@@ -2521,7 +2521,7 @@ _0222EA2E:
mov r1, #0x88
bl MOD69_0222E89C
ldr r0, [r4, #0x10]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #0x34]
add r0, r0, #1
str r0, [r4, #0x34]
@@ -2595,7 +2595,7 @@ _0222EAEA:
ldr r0, [r4, #0xc]
lsr r1, r1, #0x18
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
add r0, #0x14
bl MOD69_0222F6C0
@@ -2610,7 +2610,7 @@ _0222EB16:
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r4, #0x10]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
ldr r0, [r4, #0x28]
add r0, r0, #1
str r0, [r4, #0x28]
@@ -2622,7 +2622,7 @@ _0222EB2C:
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
bl MOD69_0222E204
add r0, r5, #0
@@ -2744,7 +2744,7 @@ MOD69_0222EB4C: ; 0x0222EB4C
bl AddTextPrinterParameterized2
add r4, #0x14
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r4, pc}
nop
diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s
index 9db294af..8dc21247 100644
--- a/arm9/modules/70/asm/module_70.s
+++ b/arm9/modules/70/asm/module_70.s
@@ -11,12 +11,12 @@ MOD70_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x3c
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
mov r2, #7
mov r0, #3
mov r1, #0x3d
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xdc
mov r2, #0x3c
@@ -76,9 +76,9 @@ MOD70_021D755C: ; 0x021D755C
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x3d
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3c
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -405,7 +405,7 @@ MOD70_021D77CC: ; 0x021D77CC
str r5, [r4]
str r6, [r4, #4]
mov r0, #0x3d
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x10]
bl NNS_G2dInitOamManagerModule
mov r0, #0
@@ -647,7 +647,7 @@ MOD70_021D79C0: ; 0x021D79C0
b _021D7A14
_021D79D4:
ldr r0, _021D7A1C ; =0x0000060E
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0
mov r0, #6
str r0, [sp]
@@ -788,7 +788,7 @@ MOD70_021D7ADC: ; 0x021D7ADC
push {r4, lr}
add r4, r0, #0
ldr r0, _021D7AF0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD70_021D7D98
mov r0, #1
@@ -810,17 +810,17 @@ MOD70_021D7AF4: ; 0x021D7AF4
orr r0, r1
strh r0, [r2]
ldr r0, _021D7C00 ; =0x021D823C
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r5, #0x10]
ldr r2, _021D7C04 ; =0x021D8268
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #0x10]
ldr r2, _021D7C08 ; =0x021D824C
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -857,7 +857,7 @@ MOD70_021D7AF4: ; 0x021D7AF4
mov r1, #1
ldr r0, [r5, #0x10]
add r3, r1, #0
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -867,7 +867,7 @@ MOD70_021D7AF4: ; 0x021D7AF4
ldr r0, [r5, #0x10]
mov r1, #1
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r5, #0
mov r1, #1
bl MOD70_021D7C2C
@@ -900,7 +900,7 @@ MOD70_021D7AF4: ; 0x021D7AF4
bl FUN_0200CCA4
ldr r0, [r5, #0x10]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r3, #8
ldr r0, _021D7C0C ; =0x04000050
mov r1, #0
@@ -927,10 +927,10 @@ MOD70_021D7C10: ; 0x021D7C10
add r4, r0, #0
ldr r0, [r4, #0x10]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl MOD70_021D7C98
pop {r4, pc}
@@ -957,7 +957,7 @@ MOD70_021D7C2C: ; 0x021D7C2C
ldr r0, [r5, #0x10]
add r1, #0x14
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x13
str r0, [sp]
mov r0, #0x1e
@@ -976,13 +976,13 @@ MOD70_021D7C2C: ; 0x021D7C2C
ldr r0, [r5, #0x10]
add r1, #0x24
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r0, #0x14
- bl FUN_02019270
+ bl PutWindowTilemap
add r5, #0x24
add r0, r5, #0
- bl FUN_02019270
+ bl PutWindowTilemap
add r4, #0xb4
add r0, r4, #0
add sp, #0x14
@@ -998,7 +998,7 @@ MOD70_021D7C98: ; 0x021D7C98
add r5, #0x14
_021D7CA0:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #2
@@ -1029,10 +1029,10 @@ MOD70_021D7CC0: ; 0x021D7CC0
bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x14
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add r4, #0x24
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r4, pc}
thumb_func_end MOD70_021D7CC0
@@ -1114,7 +1114,7 @@ MOD70_021D7CE8: ; 0x021D7CE8
add r3, r1, #0
bl AddTextPrinterParameterized
add r0, r6, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD70_021D7CE8
@@ -1341,7 +1341,7 @@ _021D7F1E:
blt _021D7F1E
_021D7F66:
ldr r0, [sp, #0xc]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD70_021D7D98
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index 303bee40..5ece5081 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -27,7 +27,7 @@ MOD71_0222D5C0: ; 0x0222D5C0
ldr r2, _0222D734 ; =0x000707D0
mov r0, #3
mov r1, #0x1a
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222D738 ; =0x000036B4
add r0, r5, #0
mov r2, #0x1a
@@ -38,7 +38,7 @@ MOD71_0222D5C0: ; 0x0222D5C0
add r1, r4, #0
bl MIi_CpuClearFast
mov r0, #0x1a
- bl FUN_02016B94
+ bl BgConfig_Alloc
mov r1, #0x5d
lsl r1, r1, #2
str r0, [r4, r1]
@@ -74,7 +74,7 @@ MOD71_0222D5C0: ; 0x0222D5C0
bl MOD71_0222E76C
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
bl MOD71_0222E558
mov r0, #0x5d
lsl r0, r0, #2
@@ -128,7 +128,7 @@ MOD71_0222D5C0: ; 0x0222D5C0
bl FUN_02083B84
mov r0, #0
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -314,28 +314,28 @@ MOD71_0222D820: ; 0x0222D820
bl MOD71_02230F40
mov r0, #4
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
mov r1, #1
bl GX_EngineBToggleLayers
mov r0, #0
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -932,7 +932,7 @@ _0222DDA6:
mov r0, #0x50
bl FUN_02031588
mov r0, #2
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
add r0, r4, #0
bl MOD71_02230B88
ldr r0, [r4, #0x4c]
@@ -1211,13 +1211,13 @@ _0222DFD6:
bl FUN_0200A208
mov r0, #1
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #2
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -1267,13 +1267,13 @@ _0222E054:
bl FUN_0200A208
mov r0, #4
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
mov r1, #1
bl GX_EngineBToggleLayers
@@ -1304,7 +1304,7 @@ _0222E094:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -1317,7 +1317,7 @@ _0222E094:
mov r2, #1
bl MOD71_02230F40
mov r0, #2
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
add sp, #0x10
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
@@ -1777,7 +1777,7 @@ MOD71_0222E438: ; 0x0222E438
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x1a
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
@@ -1793,7 +1793,7 @@ MOD71_0222E4DC: ; 0x0222E4DC
mov r0, #0x5d
lsl r0, r0, #2
ldr r0, [r5, r0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r0, _0222E548 ; =0x00002110
ldr r0, [r5, r0]
cmp r0, #0
@@ -1876,7 +1876,7 @@ MOD71_0222E578: ; 0x0222E578
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r4, _0222E74C ; =0x0223115C
add r3, sp, #0xa8
ldmia r4!, {r0, r1}
@@ -1891,10 +1891,10 @@ MOD71_0222E578: ; 0x0222E578
str r0, [r3]
add r0, r5, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r4, _0222E750 ; =0x02231124
add r3, sp, #0x8c
ldmia r4!, {r0, r1}
@@ -1909,10 +1909,10 @@ MOD71_0222E578: ; 0x0222E578
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r4, _0222E754 ; =0x02231178
add r3, sp, #0x70
ldmia r4!, {r0, r1}
@@ -1927,10 +1927,10 @@ MOD71_0222E578: ; 0x0222E578
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r4, _0222E758 ; =0x02231194
add r3, sp, #0x54
ldmia r4!, {r0, r1}
@@ -1945,7 +1945,7 @@ MOD71_0222E578: ; 0x0222E578
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r4, _0222E75C ; =0x022310EC
add r3, sp, #0x38
ldmia r4!, {r0, r1}
@@ -1960,10 +1960,10 @@ MOD71_0222E578: ; 0x0222E578
add r0, r5, #0
mov r1, #4
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r4, _0222E760 ; =0x02231108
add r3, sp, #0x1c
ldmia r4!, {r0, r1}
@@ -1978,7 +1978,7 @@ MOD71_0222E578: ; 0x0222E578
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r4, _0222E764 ; =0x02231140
add r3, sp, #0
ldmia r4!, {r0, r1}
@@ -1993,22 +1993,22 @@ MOD71_0222E578: ; 0x0222E578
str r0, [r3]
add r0, r5, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x1a
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #1
mov r1, #0x20
mov r2, #0
mov r3, #0x1a
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x1a
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r4, #0
mov r6, #3
add r7, r4, #0
@@ -2018,51 +2018,51 @@ _0222E6BC:
add r0, r5, #0
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
add r2, r6, #0
add r3, r7, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r1, r4, #4
lsl r1, r1, #0x18
mov r2, #0
add r0, r5, #0
lsr r1, r1, #0x18
add r3, r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r1, r4, #4
lsl r1, r1, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r4, r4, #1
cmp r4, #4
blt _0222E6BC
mov r0, #0
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r2, #1
lsl r2, r2, #0x1a
ldr r1, [r2]
@@ -2188,25 +2188,25 @@ MOD71_0222E848: ; 0x0222E848
push {r4, lr}
add r4, r0, #0
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD71_0222E848
@@ -2237,7 +2237,7 @@ _0222E8B2:
lsl r1, r4, #0x18
add r0, r5, #0
lsr r1, r1, #0x18
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
cmp r0, #0
beq _0222E8D0
ldr r2, [sp, #4]
@@ -2246,7 +2246,7 @@ _0222E8B2:
add r0, r5, #0
lsr r1, r1, #0x18
add r2, #0xc
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
_0222E8D0:
add r0, r6, #0
bl FreeToHeap
@@ -2262,7 +2262,7 @@ MOD71_0222E8DC: ; 0x0222E8DC
sub sp, #4
mov r1, #2
add r4, r0, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r2, r0, #0
mov r0, #0
mov r3, #6
@@ -2270,7 +2270,7 @@ MOD71_0222E8DC: ; 0x0222E8DC
add r0, r4, #0
mov r1, #2
lsl r3, r3, #8
- bl FUN_02017CE8
+ bl BgCopyOrUncompressTilemapBufferRangeToVram
add sp, #4
pop {r3, r4, pc}
.align 2, 0
@@ -2304,10 +2304,10 @@ MOD71_0222E900: ; 0x0222E900
bl GfGfxLoader_GXLoadPal
mov r0, #0
add r1, r0, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r1, #0x1a
mov r0, #0
lsl r1, r1, #4
@@ -2414,7 +2414,7 @@ MOD71_0222E900: ; 0x0222E900
bl FUN_02002ED0
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -2958,7 +2958,7 @@ _0222EE9A:
add r0, #0x1c
lsl r0, r0, #4
add r0, r6, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
_0222EEA6:
mov r0, #3
str r0, [sp]
@@ -3046,21 +3046,21 @@ MOD71_0222EF24: ; 0x0222EF24
add r0, #0x1a
lsl r0, r0, #4
add r0, r5, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x1c
lsl r0, r0, #4
add r0, r5, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x1e
lsl r0, r0, #4
add r0, r5, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r4, #0x20
lsl r0, r4, #4
add r0, r5, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
pop {r4, r5, r6, pc}
thumb_func_end MOD71_0222EF24
@@ -3633,7 +3633,7 @@ MOD71_0222F3DC: ; 0x0222F3DC
cmp r0, r6
beq _0222F416
ldr r0, _0222F428 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
str r6, [r4]
mov r7, #1
_0222F416:
@@ -3966,7 +3966,7 @@ MOD71_0222F674: ; 0x0222F674
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -4023,7 +4023,7 @@ _0222F6EE:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -4058,7 +4058,7 @@ _0222F738:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -4103,7 +4103,7 @@ MOD71_0222F790: ; 0x0222F790
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -4149,7 +4149,7 @@ MOD71_0222F7E4: ; 0x0222F7E4
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -4326,7 +4326,7 @@ MOD71_0222F954: ; 0x0222F954
pop {r4, r5, r6, pc}
_0222F976:
ldr r0, _0222FA10 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0222FA14 ; =0x0000366C
ldr r0, [r5, r0]
bl FUN_0202DFA4
@@ -4344,7 +4344,7 @@ _0222F976:
b _0222F9E4
_0222F9A0:
ldr r0, _0222FA10 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0222FA24 ; =0x00003670
str r4, [r5, r0]
mov r0, #0x1a
@@ -4377,7 +4377,7 @@ _0222F9E4:
bl FUN_0200CCF8
ldr r0, _0222FA30 ; =0x00003684
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xda
lsl r0, r0, #6
mov r1, #0
@@ -4895,7 +4895,7 @@ MOD71_0222FDD8: ; 0x0222FDD8
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5f
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5005,7 +5005,7 @@ _0222FF10:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5044,7 +5044,7 @@ _0222FF64:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5081,7 +5081,7 @@ _0222FFB4:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5134,7 +5134,7 @@ MOD71_02230020: ; 0x02230020
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5243,7 +5243,7 @@ _02230108:
lsl r1, r0, #4
ldr r0, [sp, #4]
add r0, r0, r1
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r7, #0
add r0, #0x8c
ldr r0, [r0]
@@ -5280,7 +5280,7 @@ _02230154:
lsl r1, r0, #4
ldr r0, [sp, #4]
add r0, r0, r1
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r6, r6, #1
add r4, r4, #4
add r5, #0x10
@@ -5550,11 +5550,11 @@ MOD71_02230390: ; 0x02230390
ldr r1, _0223048C ; =0x00000568
str r0, [sp]
add r0, r0, r1
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
ldr r1, _02230490 ; =0x00000578
ldr r0, [sp]
add r0, r0, r1
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
ldr r6, [sp]
ldr r1, _02230494 ; =0x00000438
add r0, r6, #0
@@ -5622,7 +5622,7 @@ _0223042C:
lsl r1, r0, #4
ldr r0, [sp, #4]
add r0, r0, r1
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_02230438:
add r7, r7, #1
add r6, #0x10
@@ -5688,7 +5688,7 @@ MOD71_022304AC: ; 0x022304AC
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, _02230534 ; =0x00002218
add r1, r4, #0
add r1, #0x88
@@ -5787,7 +5787,7 @@ _0223056E:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5836,7 +5836,7 @@ _022305EE:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5885,7 +5885,7 @@ MOD71_02230650: ; 0x02230650
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5f
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5942,7 +5942,7 @@ _022306CA:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -5977,7 +5977,7 @@ _02230714:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -6141,7 +6141,7 @@ MOD71_02230810: ; 0x02230810
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5f
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -6237,7 +6237,7 @@ _0223092E:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -6276,7 +6276,7 @@ _02230982:
ldr r0, [r4, r0]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0x5e
lsl r3, r3, #2
ldr r0, [r4, r3]
@@ -6467,7 +6467,7 @@ MOD71_02230B3C: ; 0x02230B3C
ldr r0, [r4, r0]
ldr r3, [r4, r3]
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0x5d
ldr r3, _02230B6C ; =0x000022B8
lsl r0, r0, #2
@@ -6475,7 +6475,7 @@ MOD71_02230B3C: ; 0x02230B3C
ldr r3, [r4, r3]
mov r1, #3
mov r2, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r4, pc}
.align 2, 0
_02230B6C: .word 0x000022B8
@@ -6624,7 +6624,7 @@ MOD71_02230C48: ; 0x02230C48
add r5, r1, #0
str r0, [sp, #0x14]
str r2, [sp, #0x10]
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -6642,7 +6642,7 @@ MOD71_02230C48: ; 0x02230C48
ldr r0, [sp, #0x14]
add r1, #0x10
mov r3, #0x14
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r0, #0x10
mov r1, #0
@@ -6662,7 +6662,7 @@ MOD71_02230C48: ; 0x02230C48
add r1, #0x60
mov r2, #1
mov r3, #0x1a
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r0, #0x60
mov r1, #0
@@ -6701,7 +6701,7 @@ MOD71_02230C48: ; 0x02230C48
ldr r0, [sp, #0x14]
add r1, r5, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x15
lsl r0, r0, #4
add r0, r5, r0
@@ -6723,7 +6723,7 @@ MOD71_02230C48: ; 0x02230C48
add r1, r5, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x16
lsl r0, r0, #4
add r0, r5, r0
@@ -6745,7 +6745,7 @@ MOD71_02230C48: ; 0x02230C48
add r1, r5, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x17
lsl r0, r0, #4
add r0, r5, r0
@@ -6766,7 +6766,7 @@ MOD71_02230C48: ; 0x02230C48
add r1, r5, r1
mov r2, #0
mov r3, #0x14
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #6
lsl r0, r0, #6
add r0, r5, r0
@@ -6787,7 +6787,7 @@ MOD71_02230C48: ; 0x02230C48
add r1, r5, r1
mov r2, #0
mov r3, #0x14
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x19
lsl r0, r0, #4
add r0, r5, r0
@@ -6820,7 +6820,7 @@ _02230DE2:
add r1, r5, r1
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [sp, #0x18]
mov r1, #0
add r0, r5, r0
@@ -6858,7 +6858,7 @@ _02230E2C:
ldr r0, [sp, #0x14]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, r7
mov r1, #0
bl FillWindowPixelBuffer
@@ -6884,7 +6884,7 @@ _02230E8E:
add r0, r5, #7
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
add r5, r5, #1
cmp r5, #0xe
blt _02230E8E
@@ -6894,38 +6894,38 @@ _02230EA0:
add r0, #0x1a
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
add r5, r5, #1
cmp r5, #8
blt _02230EA0
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x10
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x60
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x15
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x16
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x17
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #6
lsl r0, r0, #6
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x19
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r3, r4, r5, pc}
thumb_func_end MOD71_02230E88
@@ -7097,7 +7097,7 @@ MOD71_02231018: ; 0x02231018
add r1, r4, #0
mov r2, #0
mov r3, #0x13
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r2, _0223108C ; =0x000001F7
add r0, r4, #0
mov r1, #0
@@ -7143,7 +7143,7 @@ MOD71_02231098: ; 0x02231098
cmp r2, #0
bne _022310A4
ldr r0, _022310A8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_022310A4:
pop {r3, pc}
nop
diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s
index 7d9850cc..28b61540 100644
--- a/arm9/modules/73/asm/module_73.s
+++ b/arm9/modules/73/asm/module_73.s
@@ -23,7 +23,7 @@ MOD73_021D74F0: ; 0x021D74F0
mov r0, #3
mov r1, #0x38
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D757C ; =0x000015E8
add r0, r5, #0
mov r2, #0x38
@@ -201,7 +201,7 @@ MOD73_021D7640: ; 0x021D7640
mov r0, #0
str r0, [r6, #0x18]
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -588,11 +588,11 @@ _021D7966:
cmp r7, #0xa
bge _021D799C
ldr r0, _021D79D8 ; =0x000006BD
- bl FUN_020054C8
+ bl PlaySE
b _021D79A2
_021D799C:
ldr r0, _021D79DC ; =0x000006BE
- bl FUN_020054C8
+ bl PlaySE
_021D79A2:
mov r0, #0xd6
lsl r0, r0, #2
@@ -777,7 +777,7 @@ _021D7AE2:
mov r1, #0
bl FUN_020054F0
ldr r0, _021D7C88 ; =0x000006C2
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021D7C8C ; =0x000005A4
mov r1, #0
add r0, r4, r0
@@ -1022,7 +1022,7 @@ _021D7D42:
add r0, r4, r0
bl MOD73_021DA730
ldr r0, _021D7F4C ; =0x000006C3
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -1042,7 +1042,7 @@ _021D7D66:
add r0, r4, r0
bl MOD73_021DB260
ldr r0, _021D7F4C ; =0x000006C3
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -1673,7 +1673,7 @@ _021D8292:
add r0, r4, r0
bl MOD73_021DAEAC
ldr r0, _021D82F8 ; =0x000006C1
- bl FUN_020054C8
+ bl PlaySE
pop {r4, pc}
_021D82C2:
add r0, r0, #4
@@ -1693,7 +1693,7 @@ _021D82C2:
add r0, r4, r0
bl MOD73_021DAEAC
ldr r0, _021D82F8 ; =0x000006C1
- bl FUN_020054C8
+ bl PlaySE
_021D82EC:
pop {r4, pc}
nop
@@ -1829,7 +1829,7 @@ MOD73_021D83D0: ; 0x021D83D0
ldr r0, [r0, r1]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
_021D83FC:
ldrb r0, [r4, #0x12]
cmp r0, #1
@@ -1846,7 +1846,7 @@ _021D83FC:
ldr r0, [r0, r1]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
b _021D8434
_021D8422:
cmp r0, #2
@@ -1896,7 +1896,7 @@ MOD73_021D8458: ; 0x021D8458
add r0, r4, r0
bl MOD73_021DAEAC
ldr r0, _021D84F8 ; =0x000006C1
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xb
mov r1, #1
lsl r0, r0, #6
@@ -1911,7 +1911,7 @@ _021D8490:
add r0, r4, r0
bl MOD73_021DAEAC
ldr r0, _021D84F8 ; =0x000006C1
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xb
mov r1, #2
lsl r0, r0, #6
@@ -1969,7 +1969,7 @@ MOD73_021D84FC: ; 0x021D84FC
add r0, r0, r3
bl MOD73_021DB020
ldr r0, _021D8528 ; =0x000006BF
- bl FUN_020054C8
+ bl PlaySE
_021D851C:
pop {r3, pc}
nop
@@ -2108,7 +2108,7 @@ _021D860E:
ldr r0, [r0, r1]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- bl FUN_020054C8
+ bl PlaySE
_021D861E:
ldrh r1, [r4, #8]
mov r0, #0xd5
@@ -2407,7 +2407,7 @@ MOD73_021D88B0: ; 0x021D88B0
ldr r0, [r4, #0x20]
cmp r0, #0
beq _021D88C2
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
_021D88C2:
pop {r4, pc}
thumb_func_end MOD73_021D88B0
@@ -2440,7 +2440,7 @@ MOD73_021D88E4: ; 0x021D88E4
add r6, r0, #0
bl MOD73_021D88C4
ldr r0, [sp]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #8
ldr r4, _021D8974 ; =0x021DBD30
str r0, [r6]
@@ -2450,13 +2450,13 @@ MOD73_021D88E4: ; 0x021D88E4
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
mov r0, #0
mov r1, #2
- bl FUN_020178BC
+ bl SetBgPriority
ldr r4, _021D8978 ; =0x021DBD68
add r3, sp, #0x18
mov r2, #0xe
@@ -2483,15 +2483,15 @@ _021D8944:
ldr r0, [r6]
add r2, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldrb r1, [r5]
ldr r0, [r6]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldrb r0, [r5]
ldr r3, [sp]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add r7, r7, #1
add r4, #0x1c
add r5, r5, #1
@@ -2511,16 +2511,16 @@ MOD73_021D8980: ; 0x021D8980
add r4, r0, #0
ldr r0, [r4]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4]
bl FreeToHeap
pop {r4, pc}
@@ -4642,7 +4642,7 @@ _021D9958:
mov r1, #0
bl FUN_020200A0
ldr r0, _021D9A24 ; =0x000006BC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x73
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -4792,10 +4792,10 @@ MOD73_021D9AB4: ; 0x021D9AB4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #8]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, [r4, #4]
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
pop {r4, pc}
thumb_func_end MOD73_021D9AB4
@@ -4874,7 +4874,7 @@ _021D9B02:
mov r1, #5
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
mov r0, #0xa
ldr r3, [sp, #0x1c]
str r0, [sp]
@@ -4890,7 +4890,7 @@ _021D9B02:
mov r1, #5
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r7, [r5, #0x1c]
mov r2, #0x13
ldr r0, [r5, #0x18]
@@ -4930,10 +4930,10 @@ _021D9B02:
blt _021D9B02
_021D9BCE:
ldr r0, [r5, #0xc]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [r5, #4]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_021D9BDC:
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
@@ -4966,7 +4966,7 @@ MOD73_021D9BE0: ; 0x021D9BE0
ldr r0, [r5, #4]
ldr r1, [r5, #8]
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xd
str r0, [sp]
mov r0, #0x14
@@ -4981,7 +4981,7 @@ MOD73_021D9BE0: ; 0x021D9BE0
ldr r1, [r5, #0xc]
mov r2, #4
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r5, #8]
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -5017,15 +5017,15 @@ MOD73_021D9C7C: ; 0x021D9C7C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #8]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #8]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
ldr r0, [r4, #0xc]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_020191A4
+ bl WindowArray_dtor
pop {r4, pc}
.align 2, 0
thumb_func_end MOD73_021D9C7C
@@ -5081,7 +5081,7 @@ _021D9CD8:
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r5, #4]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r1, [r5, #0x24]
mov r2, #0
ldrh r0, [r1]
@@ -5097,7 +5097,7 @@ _021D9CD8:
mov r0, #3
str r0, [sp, #8]
ldr r0, [r5, #4]
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r3, r5, #0
str r4, [sp]
mov r0, #0x7a
@@ -5108,7 +5108,7 @@ _021D9CD8:
str r0, [r5, #0x28]
ldr r0, [r5, #4]
mov r1, #5
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end MOD73_021D9CA0
@@ -5950,7 +5950,7 @@ _021DA2FA:
ldr r1, [r4, #8]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r4, #8]
mov r1, #0
bl FillWindowPixelBuffer
@@ -5973,10 +5973,10 @@ MOD73_021DA354: ; 0x021DA354
mov r6, #1
_021DA35C:
ldr r0, [r5, #8]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r5, #8]
add r1, r6, #0
- bl FUN_020191A4
+ bl WindowArray_dtor
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
@@ -6029,7 +6029,7 @@ MOD73_021DA374: ; 0x021DA374
lsr r0, r0, #0x18
str r0, [sp, #8]
ldr r0, [r4, #4]
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
ldr r1, [sp, #0x10]
mov r2, #0
ldrh r0, [r1]
@@ -6045,12 +6045,12 @@ MOD73_021DA374: ; 0x021DA374
mov r0, #4
str r0, [sp, #8]
ldr r0, [r4, #4]
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r5, #0
bl FreeToHeap
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
thumb_func_end MOD73_021DA374
@@ -6170,7 +6170,7 @@ MOD73_021DA4D4: ; 0x021DA4D4
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0xc]
mov r1, #0xf
bl FillWindowPixelBuffer
@@ -6210,9 +6210,9 @@ MOD73_021DA4D4: ; 0x021DA4D4
mov r3, #1
bl FUN_0200CCA4
ldr r0, [r4, #0xc]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, [r4, #0x10]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, pc}
nop
@@ -6386,7 +6386,7 @@ _021DA682:
mov r3, #0xa0
bl AddTextPrinterParameterized2
ldr r0, [r4, #0xc]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, pc}
nop
@@ -6442,7 +6442,7 @@ MOD73_021DA6BC: ; 0x021DA6BC
mov r3, #0x10
bl AddTextPrinterParameterized2
ldr r0, [r4, #0x10]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -6477,11 +6477,11 @@ MOD73_021DA754: ; 0x021DA754
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, [r4, #0xc]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, [r4, #0x10]
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
pop {r4, pc}
.align 2, 0
thumb_func_end MOD73_021DA754
@@ -6572,7 +6572,7 @@ _021DA7EC:
add r3, r1, #0
bl FUN_0200D0BC
ldr r0, [r4, #0x14]
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s
index 44254d39..26a78f49 100644
--- a/arm9/modules/74/asm/module_74.s
+++ b/arm9/modules/74/asm/module_74.s
@@ -13,7 +13,7 @@ MOD74_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x4a
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0xad
add r0, r4, #0
lsl r1, r1, #2
@@ -56,7 +56,7 @@ MOD74_021D7540: ; 0x021D7540
add r0, r5, #0
bl OverlayManager_FreeData
ldr r0, [r4]
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -343,7 +343,7 @@ MOD74_021D7784: ; 0x021D7784
bl MOD74_021D82E8
bl NNS_GfdDoVramTransfer
ldr r0, [r4, #0x10]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _021D77A4 ; =0x027E0000
ldr r1, _021D77A8 ; =0x00003FF8
mov r0, #1
@@ -584,7 +584,7 @@ MOD74_021D7934: ; 0x021D7934
sub sp, #0x64
add r5, r0, #0
ldr r0, [r5]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0
ldr r4, _021D79C0 ; =0x021D84A0
str r0, [r5, #0x10]
@@ -594,7 +594,7 @@ MOD74_021D7934: ; 0x021D7934
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r4, _021D79C4 ; =0x021D8570
add r3, sp, #0x10
mov r2, #0xa
@@ -618,11 +618,11 @@ _021D7976:
lsr r1, r1, #0x18
add r2, r6, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
lsl r1, r4, #0x18
ldr r0, [r5, #0x10]
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldrh r0, [r5, #8]
add r7, r7, #1
add r4, r4, #1
@@ -635,7 +635,7 @@ _021D799C:
ldr r3, [r5]
mov r1, #0x20
add r2, r0, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldrh r0, [r5, #8]
cmp r0, #0
beq _021D79BA
@@ -643,7 +643,7 @@ _021D799C:
mov r0, #2
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
_021D79BA:
add sp, #0x64
pop {r4, r5, r6, r7, pc}
@@ -667,7 +667,7 @@ _021D79D8:
ldr r0, [r6, #0x10]
lsr r1, r1, #0x18
add r5, r5, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldrh r0, [r6, #8]
add r4, r4, #1
add r0, r0, #2
@@ -747,7 +747,7 @@ _021D7A5A:
bl NARC_dtor
ldr r0, [r5, #0x10]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -768,7 +768,7 @@ _021D7A9A:
ldr r0, [r6, #0x10]
add r1, r5, #0
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -787,7 +787,7 @@ _021D7AC0:
ldr r0, [r6, #0x10]
add r1, r5, #0
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -825,9 +825,9 @@ _021D7AFE:
add r5, #0x6c
_021D7B08:
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, r6
@@ -1667,7 +1667,7 @@ MOD74_021D81E0: ; 0x021D81E0
bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x8c
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD74_021D8388
diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s
index 3500c458..23d75c48 100644
--- a/arm9/modules/75/asm/module_75.s
+++ b/arm9/modules/75/asm/module_75.s
@@ -32,7 +32,7 @@ MOD75_021E6BA0: ; 0x021E6BA0
mov r1, #6
mov r0, #3
lsl r2, r1, #0xf
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021E6D60 ; =0x000004A4
add r0, r5, #0
mov r2, #6
@@ -49,7 +49,7 @@ MOD75_021E6BA0: ; 0x021E6BA0
add r0, r4, #0
bl MOD75_021E6FA4
mov r0, #6
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4]
add r0, r4, #0
add r0, #0xcc
@@ -68,7 +68,7 @@ MOD75_021E6BA0: ; 0x021E6BA0
bl FUN_0200E1D0
mov r0, #3
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD75_021E7470
add r0, r4, #0
@@ -460,7 +460,7 @@ MOD75_021E6F00: ; 0x021E6F00
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #6
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -530,7 +530,7 @@ MOD75_021E6FFC: ; 0x021E6FFC
MOD75_021E700C: ; 0x021E700C
push {r3, lr}
ldr r0, [r0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
bl FUN_0200BC30
ldr r3, _021E702C ; =0x027E0000
@@ -578,7 +578,7 @@ MOD75_021E7054: ; 0x021E7054
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021E71A0 ; =0x021EC440
add r3, sp, #0xa8
ldmia r5!, {r0, r1}
@@ -593,10 +593,10 @@ MOD75_021E7054: ; 0x021E7054
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021E71A4 ; =0x021EC45C
add r3, sp, #0x8c
ldmia r5!, {r0, r1}
@@ -611,7 +611,7 @@ MOD75_021E7054: ; 0x021E7054
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021E71A8 ; =0x021EC494
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -626,10 +626,10 @@ MOD75_021E7054: ; 0x021E7054
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021E71AC ; =0x021EC4E8
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -644,7 +644,7 @@ MOD75_021E7054: ; 0x021E7054
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021E71B0 ; =0x021EC478
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -659,10 +659,10 @@ MOD75_021E7054: ; 0x021E7054
add r0, r4, #0
mov r1, #4
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021E71B4 ; =0x021EC4B0
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -677,7 +677,7 @@ MOD75_021E7054: ; 0x021E7054
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _021E71B8 ; =0x021EC4CC
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -692,27 +692,27 @@ MOD75_021E7054: ; 0x021E7054
str r0, [r3]
add r0, r4, #0
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #7
mov r2, #9
mov r3, #0x80
- bl FUN_0201AF50
+ bl ScheduleSetBgAffinePos
add r0, r4, #0
mov r1, #7
mov r2, #0xc
mov r3, #0x50
- bl FUN_0201AF50
+ bl ScheduleSetBgAffinePos
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #6
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #6
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0xd4
pop {r4, r5, pc}
nop
@@ -738,25 +738,25 @@ MOD75_021E71BC: ; 0x021E71BC
bl GX_EngineBToggleLayers
add r0, r4, #0
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #6
add r1, r4, #0
bl FreeToHeapExplicit
@@ -1611,7 +1611,7 @@ _021E784E:
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r4, #4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x20
pop {r4, r5, r6, pc}
nop
@@ -1637,15 +1637,15 @@ MOD75_021E7870: ; 0x021E7870
b _021E78A0
_021E7890:
ldr r0, _021E7964 ; =0x000006CC
- bl FUN_020054C8
+ bl PlaySE
b _021E78A6
_021E7898:
ldr r0, _021E7968 ; =0x000006CD
- bl FUN_020054C8
+ bl PlaySE
b _021E78A6
_021E78A0:
ldr r0, _021E796C ; =0x000006CE
- bl FUN_020054C8
+ bl PlaySE
_021E78A6:
ldr r0, _021E7960 ; =0x00000482
mov r1, #3
@@ -1731,7 +1731,7 @@ _021E794C:
bne _021E795C
add r5, #0x14
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_021E795C:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -1962,7 +1962,7 @@ _021E7B12:
bl FillWindowPixelBuffer
add r0, r4, #0
add r0, #0x14
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
bl MOD75_021E8B70
add r0, r4, #0
@@ -2030,7 +2030,7 @@ MOD75_021E7B7C: ; 0x021E7B7C
cmp r0, #1
bne _021E7BC0
ldr r0, _021E7CDC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add sp, #4
mov r0, #2
pop {r3, r4, r5, r6, pc}
@@ -2130,7 +2130,7 @@ _021E7C6E:
pop {r3, r4, r5, r6, pc}
_021E7C82:
ldr r0, _021E7CDC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0xc4
ldr r0, [r0]
@@ -2150,7 +2150,7 @@ _021E7C82:
pop {r3, r4, r5, r6, pc}
_021E7CAC:
ldr r0, _021E7CDC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4]
lsl r2, r6, #2
ldrh r1, [r0, r2]
@@ -2220,7 +2220,7 @@ MOD75_021E7D14: ; 0x021E7D14
pop {r4, pc}
_021E7D2E:
ldr r0, _021E7E00 ; =0x000006CA
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
@@ -2259,7 +2259,7 @@ _021E7D68:
bl MOD75_021E7E0C
ldr r0, [r4]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #1
pop {r4, pc}
_021E7D88:
@@ -2274,7 +2274,7 @@ _021E7D88:
pop {r4, pc}
_021E7D9A:
ldr r0, _021E7E00 ; =0x000006CA
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0xc4
ldr r0, [r0]
@@ -2312,7 +2312,7 @@ _021E7DD4:
bl MOD75_021E7E0C
ldr r0, [r4]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
mov r0, #1
pop {r4, pc}
_021E7DF2:
@@ -2402,10 +2402,10 @@ MOD75_021E7E60: ; 0x021E7E60
mov r1, #0
bl FillWindowPixelBuffer
add r0, r4, #4
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
add r0, #0xf0
ldr r0, [r0]
@@ -2574,7 +2574,7 @@ _021E7FB6:
bl MOD75_021E84E4
ldr r0, [r5]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
_021E8004:
add r5, #0xfc
ldr r0, [r5]
@@ -2609,7 +2609,7 @@ MOD75_021E8020: ; 0x021E8020
pop {r3, r4, r5, pc}
_021E803E:
ldr r0, _021E8190 ; =0x000006CA
- bl FUN_020054C8
+ bl PlaySE
add r1, r5, #0
add r1, #0xc4
ldr r3, [r1]
@@ -2628,7 +2628,7 @@ _021E803E:
bl MOD75_021E84E4
ldr r0, [r5]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r5, #0
add r0, #0xc4
ldr r0, [r0]
@@ -2695,7 +2695,7 @@ _021E80D8:
pop {r3, r4, r5, pc}
_021E80EA:
ldr r0, _021E8190 ; =0x000006CA
- bl FUN_020054C8
+ bl PlaySE
add r1, r5, #0
add r1, #0xc4
ldr r3, [r1]
@@ -2714,7 +2714,7 @@ _021E80EA:
bl MOD75_021E84E4
ldr r0, [r5]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add r0, r5, #0
add r0, #0xc4
ldr r0, [r0]
@@ -3045,7 +3045,7 @@ MOD75_021E8374: ; 0x021E8374
ldrh r2, [r3, #0x1c]
ldrh r3, [r3, #0x1e]
mov r1, #4
- bl FUN_0201AFBC
+ bl DoesPixelAtScreenXYMatchPtrVal
cmp r0, #0
bne _021E83B6
mov r0, #0
@@ -3089,7 +3089,7 @@ MOD75_021E83CC: ; 0x021E83CC
ldrh r2, [r3, #0x1c]
ldrh r3, [r3, #0x1e]
mov r1, #4
- bl FUN_0201AFBC
+ bl DoesPixelAtScreenXYMatchPtrVal
cmp r0, #0
bne _021E840E
mov r0, #0
@@ -3146,14 +3146,14 @@ _021E8460:
cmp r0, #3
bne _021E84CA
ldr r0, _021E84D8 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
ldrb r1, [r4, #6]
add r0, r5, #0
mov r2, #2
bl MOD75_021E84E4
ldr r0, [r5]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
ldrb r0, [r4, #6]
lsl r3, r0, #1
ldr r0, _021E84DC ; =0x00000424
@@ -3215,7 +3215,7 @@ MOD75_021E84E4: ; 0x021E84E4
add r5, r1, #0
mov r1, #4
add r6, r2, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r7, r0, #0
ldr r0, _021E856C ; =0x00000424
ldrb r0, [r4, r0]
@@ -3289,7 +3289,7 @@ MOD75_021E8574: ; 0x021E8574
add r4, r1, #0
ldr r0, [r0]
mov r1, #4
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
mov ip, r0
add r1, r4, #0
mov r0, #6
@@ -3329,7 +3329,7 @@ _021E85A8:
ldr r0, [sp]
mov r1, #4
ldr r0, [r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r3, r4, r5, r6, r7, pc}
nop
_021E85D4: .word 0x00000276
@@ -3360,7 +3360,7 @@ _021E85FA:
mov r2, #0x50
bl MOD75_021EC380
ldr r0, _021E8678 ; =0x000005E4
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #2
bl MOD75_021E8574
@@ -3452,7 +3452,7 @@ _021E869C:
_021E86B2:
ldr r0, [r5]
mov r1, #4
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_021E86BC: .word 0x00000424
@@ -3603,7 +3603,7 @@ MOD75_021E87B8: ; 0x021E87B8
ldrh r2, [r3, #0x1c]
ldrh r3, [r3, #0x1e]
mov r1, #4
- bl FUN_0201AFBC
+ bl DoesPixelAtScreenXYMatchPtrVal
cmp r0, #0
beq _021E87EE
add sp, #8
@@ -3750,7 +3750,7 @@ _021E88D0:
cmp r0, #1
bne _021E8912
ldr r0, _021E89E8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD75_021E89F0
mov r1, #0x49
@@ -3766,7 +3766,7 @@ _021E8912:
tst r0, r1
beq _021E892E
ldr r0, _021E89E8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD75_021E89F0
add sp, #4
@@ -3833,7 +3833,7 @@ _021E899A:
b _021E89E0
_021E89AA:
ldr r0, _021E89E8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _021E89EC ; =gMain
ldr r1, [r0, #0x48]
mov r0, #1
@@ -3851,7 +3851,7 @@ _021E89C8:
pop {r3, r4, r5, r6, pc}
_021E89CE:
ldr r0, _021E89E8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
bl MOD75_021E89F0
add sp, #4
@@ -4366,7 +4366,7 @@ MOD75_021E8DAC: ; 0x021E8DAC
ldr r2, _021E8E08 ; =0x021EC5C0
mov r1, #1
mov r3, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
add r0, #0xfc
ldr r0, [r0]
@@ -4383,7 +4383,7 @@ _021E8DDA:
ldr r2, _021E8E0C ; =0x021EC5F2
mov r1, #1
mov r3, #0
- bl FUN_02018148
+ bl LoadRectToBgTilemapRect
add r0, r4, #0
add r0, #0xfc
ldr r0, [r0]
@@ -4392,7 +4392,7 @@ _021E8DDA:
_021E8DFC:
ldr r0, [r4]
mov r1, #1
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
@@ -4504,7 +4504,7 @@ _021E8ED2:
bl FUN_0200D0E0
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
@@ -4834,7 +4834,7 @@ _021E917A:
bl FUN_0200D0E0
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
@@ -4970,7 +4970,7 @@ _021E9286:
strh r1, [r4, r0]
mov r0, #6
lsl r0, r0, #8
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x45
lsl r0, r0, #2
ldr r0, [r4, r0]
@@ -5150,7 +5150,7 @@ _021E9402:
_021E940E:
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
@@ -5296,7 +5296,7 @@ _021E952C:
add r0, r4, #0
bl MOD75_021EB504
ldr r0, _021E95B0 ; =0x00000638
- bl FUN_020054C8
+ bl PlaySE
mov r0, #7
pop {r4, pc}
_021E9544:
@@ -5307,7 +5307,7 @@ _021E9544:
add r0, r4, #0
bl MOD75_021EB504
ldr r0, _021E95B0 ; =0x00000638
- bl FUN_020054C8
+ bl PlaySE
mov r0, #7
pop {r4, pc}
_021E955E:
@@ -5322,7 +5322,7 @@ _021E955E:
mov r1, #0
bl MOD75_021EC298
ldr r0, _021E95B8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #8
pop {r4, pc}
_021E9580:
@@ -5338,7 +5338,7 @@ _021E9580:
mov r1, #1
bl MOD75_021EC090
ldr r0, _021E95B8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r4, pc}
_021E95A6:
@@ -5507,7 +5507,7 @@ _021E96EC:
bl FUN_0200D0E0
add r0, r5, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
mov r1, #1
bl MOD75_021EC090
@@ -5542,7 +5542,7 @@ _021E9730:
bl MOD75_021E92BC
add r4, #0x64
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0xb
pop {r4, pc}
.align 2, 0
@@ -5577,7 +5577,7 @@ _021E9772:
bl FUN_0200D0E0
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
@@ -5613,7 +5613,7 @@ MOD75_021E97A8: ; 0x021E97A8
bl MOD75_021EB344
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
@@ -5638,7 +5638,7 @@ MOD75_021E97E4: ; 0x021E97E4
bl MOD75_021EB344
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
@@ -5807,7 +5807,7 @@ _021E9952:
bl FUN_0200D0E0
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
@@ -6162,7 +6162,7 @@ _021E9C46:
mov r1, #1
bl MOD75_021EB708
ldr r0, _021E9D5C ; =0x00000638
- bl FUN_020054C8
+ bl PlaySE
add sp, #8
mov r0, #0x12
pop {r3, r4, r5, pc}
@@ -6175,7 +6175,7 @@ _021E9C62:
mov r1, #1
bl MOD75_021EB708
ldr r0, _021E9D5C ; =0x00000638
- bl FUN_020054C8
+ bl PlaySE
add sp, #8
mov r0, #0x12
pop {r3, r4, r5, pc}
@@ -6231,7 +6231,7 @@ _021E9C80:
ldr r1, _021E9D58 ; =0x00000426
strb r0, [r4, r1]
ldr r0, _021E9D64 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add sp, #8
mov r0, #0x13
pop {r3, r4, r5, pc}
@@ -6258,12 +6258,12 @@ _021E9D00:
bl FUN_0200D0E0
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
ldr r0, _021E9D64 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add sp, #8
mov r0, #0x10
pop {r3, r4, r5, pc}
@@ -6446,7 +6446,7 @@ _021E9EA2:
bl FUN_0200D0E0
add r0, r5, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
mov r1, #1
bl MOD75_021EC090
@@ -6476,7 +6476,7 @@ MOD75_021E9EE4: ; 0x021E9EE4
pop {r4, pc}
_021E9EF8:
ldr r0, _021E9F68 ; =0x00000644
- bl FUN_020054C8
+ bl PlaySE
ldr r1, _021E9F6C ; =0x00000488
add r0, r4, #0
ldrsh r2, [r4, r1]
@@ -6523,7 +6523,7 @@ _021E9F44:
bl MOD75_021E92BC
add r4, #0x64
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #0x16
pop {r4, pc}
.align 2, 0
@@ -6567,7 +6567,7 @@ _021E9F96:
bl FUN_0200D0E0
add r0, r4, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
mov r1, #1
bl MOD75_021EC090
@@ -6707,7 +6707,7 @@ MOD75_021EA0CC: ; 0x021EA0CC
ldr r0, [r4]
add r5, r1, #0
mov r1, #7
- bl FUN_02018878
+ bl GetBgAffineRotation
lsl r0, r0, #0x10
asr r0, r0, #0x10
add r0, r0, r5
@@ -6733,7 +6733,7 @@ _021EA0FE:
mov r1, #7
mov r2, #0
lsr r3, r3, #0x10
- bl FUN_0201AF08
+ bl ScheduleSetBgAffineRotation
ldr r0, _021EA114 ; =0x0000049A
strh r5, [r4, r0]
pop {r3, r4, r5, pc}
@@ -6862,7 +6862,7 @@ _021EA1EC:
ldrh r3, [r5, r3]
mov r1, #7
mov r2, #0
- bl FUN_0201AF08
+ bl ScheduleSetBgAffineRotation
ldr r0, _021EA2CC ; =0x000001F6
add r1, r6, #0
bl _s32_div_f
@@ -7376,7 +7376,7 @@ _021EA5C2:
cmp r1, r3
beq _021EA5F8
ldr r0, _021EA600 ; =0x00000638
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_021EA5D4:
@@ -7396,7 +7396,7 @@ _021EA5E8:
cmp r1, r3
beq _021EA5F8
ldr r0, _021EA600 ; =0x00000638
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
_021EA5F8:
pop {r3, r4, r5, r6, r7, pc}
@@ -7424,7 +7424,7 @@ MOD75_021EA604: ; 0x021EA604
add r1, r4, #4
mov r2, #2
mov r3, #0xe
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x12
str r0, [sp]
mov r0, #0x20
@@ -7440,7 +7440,7 @@ MOD75_021EA604: ; 0x021EA604
ldr r0, [r4]
add r1, #0x14
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xd
str r0, [sp]
mov r0, #0x24
@@ -7455,7 +7455,7 @@ MOD75_021EA604: ; 0x021EA604
add r1, #0x24
mov r2, #2
mov r3, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x13
str r0, [sp]
mov r0, #0xe
@@ -7471,7 +7471,7 @@ MOD75_021EA604: ; 0x021EA604
add r1, #0x34
mov r2, #0
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x13
str r0, [sp]
mov r0, #0xd
@@ -7487,7 +7487,7 @@ MOD75_021EA604: ; 0x021EA604
add r1, #0x44
mov r2, #0
mov r3, #6
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xb
str r0, [sp]
mov r0, #0xc
@@ -7503,7 +7503,7 @@ MOD75_021EA604: ; 0x021EA604
ldr r0, [r4]
add r1, #0x54
add r3, r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x13
str r0, [sp]
mov r0, #0x1b
@@ -7519,7 +7519,7 @@ MOD75_021EA604: ; 0x021EA604
add r1, #0x64
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xd
str r0, [sp]
mov r0, #0xc
@@ -7535,7 +7535,7 @@ MOD75_021EA604: ; 0x021EA604
add r1, #0x74
mov r2, #0
mov r3, #0x13
- bl FUN_02019064
+ bl AddWindowParameterized
mov r3, #1
add r1, r4, #0
str r3, [sp]
@@ -7550,7 +7550,7 @@ MOD75_021EA604: ; 0x021EA604
str r0, [sp, #0x10]
ldr r0, [r4]
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x13
str r0, [sp]
mov r0, #7
@@ -7566,7 +7566,7 @@ MOD75_021EA604: ; 0x021EA604
add r1, #0x94
mov r2, #0
mov r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xc
str r0, [sp]
mov r0, #0xb
@@ -7582,7 +7582,7 @@ MOD75_021EA604: ; 0x021EA604
add r4, #0xa4
add r1, r4, #0
mov r3, #1
- bl FUN_02019064
+ bl AddWindowParameterized
add sp, #0x14
pop {r3, r4, pc}
nop
@@ -7604,7 +7604,7 @@ MOD75_021EA7A0: ; 0x021EA7A0
_021EA7A6:
lsl r0, r4, #4
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
@@ -7689,7 +7689,7 @@ _021EA828:
mov r1, #2
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0xe
str r0, [sp]
mov r0, #1
@@ -7705,7 +7705,7 @@ _021EA828:
mov r1, #2
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add r0, r4, #1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
@@ -7817,7 +7817,7 @@ _021EA936:
bl MOD75_021EA880
add r4, #0x24
add r0, r4, #0
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
pop {r3, r4, r5, r6, r7, pc}
nop
_021EA94C: .word 0x00000429
@@ -7901,7 +7901,7 @@ _021EA9A8:
bl BlitBitmapRectToWindow
add r5, #0x54
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r0, #6
add r1, r7, #0
bl FreeToHeapExplicit
@@ -7990,7 +7990,7 @@ _021EAA4C:
_021EAA8C:
add r5, #0x54
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r1, [sp, #0x18]
mov r0, #6
bl FreeToHeapExplicit
@@ -8850,7 +8850,7 @@ MOD75_021EB130: ; 0x021EB130
ldr r0, [r5]
add r1, #0xb4
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #4
str r0, [sp, #0x14]
b _021EB1B0
@@ -8875,7 +8875,7 @@ _021EB180:
add r1, #0xb4
mov r2, #0
mov r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #3
str r0, [sp, #0x14]
_021EB1B0:
@@ -8981,7 +8981,7 @@ _021EB22E:
bl MOD75_021EAB44
add r0, r5, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r1, r5, #0
add r1, #0xc4
ldr r1, [r1]
@@ -9048,7 +9048,7 @@ _021EB298:
ldr r0, [sp, #0x18]
bl String_dtor
add r0, r4, r6
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
_021EB31E:
add r0, r5, #0
ldr r2, _021EB340 ; =0x000003F7
@@ -9058,7 +9058,7 @@ _021EB31E:
bl FUN_0200CCA4
add r5, #0xb4
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -9095,7 +9095,7 @@ _021EB364:
mov r1, #1
bl FUN_0200D0E0
add r0, r4, r6
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
_021EB37A:
add r0, r5, #0
add r0, #0xb4
@@ -9103,7 +9103,7 @@ _021EB37A:
bl FUN_0200CCF8
add r0, r5, #0
add r0, #0xb4
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
mov r0, #0x56
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -9115,7 +9115,7 @@ _021EB37A:
bl ListMenuItems_dtor
add r0, r5, #0
add r0, #0xb4
- bl FUN_02019178
+ bl RemoveWindow
add r0, r5, #0
add r0, #0x14
mov r1, #0
@@ -9129,7 +9129,7 @@ _021EB37A:
bl MOD75_021EAAE8
add r0, r5, #0
add r0, #0x14
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
mov r1, #0
add r0, r5, #0
add r2, r1, #0
@@ -9181,7 +9181,7 @@ MOD75_021EB3D8: ; 0x021EB3D8
bl AddTextPrinterParameterized2
add r5, #0x14
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
bl String_dtor
add r0, r6, #0
@@ -9259,7 +9259,7 @@ MOD75_021EB454: ; 0x021EB454
bl AddTextPrinterParameterized
add r5, #0x34
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
bl String_dtor
add r0, r6, #0
@@ -9320,7 +9320,7 @@ MOD75_021EB504: ; 0x021EB504
mov r3, #0x10
bl AddTextPrinterParameterized
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r6, #0
bl String_dtor
add sp, #0xc
@@ -9342,13 +9342,13 @@ MOD75_021EB580: ; 0x021EB580
bl FUN_0200CCF8
add r0, r4, #0
add r0, #0x34
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r4, #0
add r0, #0x94
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r4, #0x14
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r4, pc}
thumb_func_end MOD75_021EB580
@@ -9441,7 +9441,7 @@ MOD75_021EB660: ; 0x021EB660
sub sp, #0xc
add r4, r0, #0
mov r0, #1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0
bl FUN_02002B7C
add r0, r4, #0
@@ -9491,7 +9491,7 @@ _021EB6C2:
pop {r3, pc}
_021EB6C8:
ldr r0, _021EB6DC ; =0x0000060D
- bl FUN_020054C8
+ bl PlaySE
b _021EB6D8
_021EB6D0:
ldr r0, _021EB6DC ; =0x0000060D
@@ -9632,7 +9632,7 @@ _021EB722:
sub r3, r5, r3
bl AddTextPrinterParameterized
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r6, #0
bl String_dtor
add sp, #0xc
@@ -9737,7 +9737,7 @@ _021EB866:
sub r3, r5, r3
bl AddTextPrinterParameterized
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r6, #0
bl String_dtor
add sp, #0xc
@@ -9831,7 +9831,7 @@ MOD75_021EB8E8: ; 0x021EB8E8
sub r3, r5, r3
bl AddTextPrinterParameterized
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.align 2, 0
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index fc6dc5bd..ae83c7a7 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -11,7 +11,7 @@ MOD76_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x43
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x62
add r0, r5, #0
lsl r1, r1, #2
@@ -50,7 +50,7 @@ MOD76_021D74E0: ; 0x021D74E0
str r1, [r4, r0]
add r0, r4, #0
add r0, #0xc8
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r4, #0
bl MOD76_021D8CD4
ldr r0, _021D7564 ; =MOD76_021D76E8
@@ -166,7 +166,7 @@ MOD76_021D761C: ; 0x021D761C
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x43
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
thumb_func_end MOD76_021D761C
@@ -192,7 +192,7 @@ MOD76_021D7638: ; 0x021D7638
and r0, r1
str r0, [r2]
mov r0, #0x43
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
mov r0, #0
mov r1, #0x43
@@ -247,7 +247,7 @@ MOD76_021D76B8: ; 0x021D76B8
MOD76_021D76E8: ; 0x021D76E8
push {r3, lr}
ldr r0, [r0, #4]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
bl FUN_0201C30C
bl FUN_0200BC30
ldr r3, _021D7708 ; =0x027E0000
@@ -295,7 +295,7 @@ MOD76_021D7730: ; 0x021D7730
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D77D8 ; =0x021D8E88
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -310,10 +310,10 @@ MOD76_021D7730: ; 0x021D7730
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D77DC ; =0x021D8EC0
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -328,10 +328,10 @@ MOD76_021D7730: ; 0x021D7730
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D77E0 ; =0x021D8EA4
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -346,15 +346,15 @@ MOD76_021D7730: ; 0x021D7730
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x43
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x64
pop {r4, r5, pc}
nop
@@ -373,13 +373,13 @@ MOD76_021D77E4: ; 0x021D77E4
bl GX_EngineAToggleLayers
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
mov r0, #0x43
add r1, r4, #0
bl FreeToHeapExplicit
@@ -464,7 +464,7 @@ _021D78A8:
ldr r0, [r7, #4]
add r1, r5, #0
add r2, r4, #0
- bl FUN_02019150
+ bl AddWindow
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -498,7 +498,7 @@ MOD76_021D78E8: ; 0x021D78E8
add r5, #8
_021D78F0:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0xf
@@ -580,7 +580,7 @@ MOD76_021D7974: ; 0x021D7974
tst r1, r0
beq _021D799C
ldr r0, _021D7A8C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r2, [r5]
mov r0, #1
ldrb r1, [r2, #0x14]
@@ -640,7 +640,7 @@ _021D79EE:
b _021D7A38
_021D7A04:
ldr r0, _021D7A8C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r5]
add r0, r5, #0
ldrh r1, [r1, #0x10]
@@ -663,7 +663,7 @@ _021D7A04:
pop {r3, r4, r5, pc}
_021D7A38:
ldr r0, _021D7A8C ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r5]
add r0, r5, #0
ldrh r1, [r1, #0x10]
@@ -901,19 +901,19 @@ MOD76_021D7BE0: ; 0x021D7BE0
mov r2, #0
mov r1, #2
add r3, r2, #0
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
add r0, r5, #0
add r0, #0x18
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x68
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0xb8
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #8
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _021D7CC4 ; =0x0000FFFF
cmp r4, r0
beq _021D7C2E
@@ -932,37 +932,37 @@ _021D7C3A:
add r3, r1, #0
mov r2, #0
add r3, #0xfe
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
add r0, r5, #0
add r0, #8
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x28
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x38
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x48
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x58
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0xa8
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x78
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x88
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x98
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x18
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r0, _021D7CC4 ; =0x0000FFFF
cmp r4, r0
beq _021D7CA6
@@ -1346,7 +1346,7 @@ _021D7F50:
str r0, [r5, r1]
add r5, #0xd8
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -1385,7 +1385,7 @@ MOD76_021D7FD0: ; 0x021D7FD0
cmp r6, #1
beq _021D7FE8
ldr r0, _021D8004 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
_021D7FE8:
ldr r0, [r4]
ldrb r0, [r0, #0x14]
@@ -1549,43 +1549,43 @@ _021D80BE:
bl FUN_0200C644
add r0, r5, #0
add r0, #0x28
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
add r0, #0x38
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
add r0, #0x48
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
add r0, #0x58
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
b _021D817E
_021D815E:
add r0, r5, #0
add r0, #0x28
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x38
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x48
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
add r0, r5, #0
add r0, #0x58
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
_021D817E:
add r0, r5, #0
add r0, #0xa8
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
add r0, #0x78
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r0, r5, #0
add r0, #0x88
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add r5, #0x98
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #4
pop {r3, r4, r5, r6, pc}
nop
@@ -1643,7 +1643,7 @@ MOD76_021D81AC: ; 0x021D81AC
bl MOD76_021D8300
add r0, r5, #0
add r0, #0x68
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
b _021D8232
_021D8222:
add r0, r5, #0
@@ -1651,11 +1651,11 @@ _021D8222:
bl MOD76_021D8300
add r0, r5, #0
add r0, #0x68
- bl FUN_0201958C
+ bl ClearWindowTilemapAndScheduleTransfer
_021D8232:
add r5, #0xb8
add r0, r5, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -1683,7 +1683,7 @@ MOD76_021D8244: ; 0x021D8244
mov r1, #2
add r2, r4, #0
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #5
str r0, [sp]
mov r0, #1
@@ -1699,7 +1699,7 @@ MOD76_021D8244: ; 0x021D8244
mov r1, #2
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -1715,7 +1715,7 @@ MOD76_021D8244: ; 0x021D8244
mov r1, #2
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -1730,7 +1730,7 @@ MOD76_021D8244: ; 0x021D8244
mov r1, #2
lsr r2, r2, #0x10
lsr r3, r3, #0x18
- bl FUN_02018540
+ bl FillBgTilemapRect
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -1755,7 +1755,7 @@ _021D82E0:
blo _021D82E0
ldr r0, [r5, #4]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r4, r5, r6, pc}
thumb_func_end MOD76_021D82D8
@@ -1794,7 +1794,7 @@ _021D832E:
_021D8344:
ldr r0, [r5, #4]
mov r1, #2
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
pop {r3, r4, r5, r6, r7, pc}
nop
_021D8350: .word 0x0000FFFF
@@ -2048,7 +2048,7 @@ MOD76_021D853C: ; 0x021D853C
add r1, r5, #0
bl MOD76_021D8354
mov r0, #1
- bl FUN_02002B60
+ bl TextFlags_SetCanABSpeedUpPrint
mov r0, #0
bl FUN_02002B7C
ldr r0, [r4]
@@ -2101,7 +2101,7 @@ _021D85B8:
pop {r3, pc}
_021D85BE:
ldr r0, _021D85DC ; =0x000005E6
- bl FUN_020054C8
+ bl PlaySE
b _021D85D6
_021D85C6:
ldr r0, _021D85E0 ; =0x00000483
@@ -2182,7 +2182,7 @@ MOD76_021D862C: ; 0x021D862C
bl MOD76_021D7CC8
add r0, r4, #0
add r0, #0xc8
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r1, [r4]
add r0, r4, #0
ldrh r1, [r1, #0x10]
@@ -2230,7 +2230,7 @@ MOD76_021D8688: ; 0x021D8688
bl MOD76_021D7CC8
add r0, r4, #0
add r0, #0xc8
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
ldr r1, [r4]
add r0, r4, #0
ldrh r1, [r1, #0x10]
diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s
index 6affcb88..2d4f838a 100644
--- a/arm9/modules/77/asm/module_77.s
+++ b/arm9/modules/77/asm/module_77.s
@@ -28,7 +28,7 @@ MOD77_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x32
lsl r2, r2, #7
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D75DC ; =0x0000C32C
add r0, r4, #0
mov r2, #0x32
@@ -76,7 +76,7 @@ _021D7540:
lsr r0, r0, #0x18
bl FUN_0201B2EC
ldr r0, [r5]
- bl FUN_02016B94
+ bl BgConfig_Alloc
ldr r1, _021D75F4 ; =0x0000C010
str r0, [r5, r1]
bl GX_BothDispOn
@@ -100,7 +100,7 @@ _021D7540:
bl GX_SwapDisplay
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r5, #0
bl MOD77_021D7C64
mov r0, #1
@@ -250,7 +250,7 @@ _021D76FA:
add r0, r4, #0
bl MOD77_021D84D8
ldr r0, _021D798C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r6, #2
cmp r0, #4
bhi _021D7732
@@ -369,7 +369,7 @@ _021D77F0:
add r0, r4, #0
bl MOD77_021D84D8
ldr r0, _021D798C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
sub r0, r7, #2
cmp r6, r0
beq _021D780A
@@ -446,7 +446,7 @@ _021D7886:
add r0, r4, #0
bl MOD77_021D84D8
ldr r0, _021D798C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
sub r0, r7, #2
cmp r6, r0
beq _021D78B6
@@ -646,7 +646,7 @@ _021D7A4E:
add r0, r4, r0
bl FUN_0200CCF8
ldr r0, _021D7B98 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xd8
str r0, [sp]
mov r0, #0x20
@@ -692,7 +692,7 @@ _021D7A94:
cmp r0, #1
bne _021D7B66
ldr r0, _021D7B98 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _021D7B66
_021D7AC0:
ldr r0, _021D7B9C ; =0x00000403
@@ -730,7 +730,7 @@ _021D7AFA:
mov r0, #0x10
str r0, [r5]
ldr r0, _021D7B98 ; =0x000005DD
- bl FUN_020054C8
+ bl PlaySE
b _021D7B66
_021D7B0E:
bl MOD77_021D8CF8
@@ -831,7 +831,7 @@ MOD77_021D7BAC: ; 0x021D7BAC
add r0, r6, #0
bl OverlayManager_FreeData
add r0, r5, #0
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _021D7C20 ; =gMain + 0x60
mov r1, #0
strb r1, [r0, #5]
@@ -876,7 +876,7 @@ MOD77_021D7C44: ; 0x021D7C44
ldmia r4!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -1338,17 +1338,17 @@ MOD77_021D7FAC: ; 0x021D7FAC
ldr r0, [r5, r0]
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, _021D8208 ; =0x0000C010
mov r1, #6
ldr r0, [r5, r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, _021D8208 ; =0x0000C010
ldr r2, _021D8210 ; =0x021D8F98
ldr r0, [r5, r0]
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1413,16 +1413,16 @@ MOD77_021D7FAC: ; 0x021D7FAC
mov r0, #6
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r1, _021D821C ; =0x00004753
mov r0, #6
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, _021D8208 ; =0x0000C010
ldr r2, _021D8220 ; =0x021D8F40
ldr r0, [r5, r1]
add r1, r1, #4
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd8
str r0, [sp]
mov r0, #0x20
@@ -1446,17 +1446,17 @@ MOD77_021D7FAC: ; 0x021D7FAC
ldr r0, [r5, r0]
ldr r2, _021D820C ; =0x021D8F7C
mov r1, #2
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, _021D8208 ; =0x0000C010
mov r1, #2
ldr r0, [r5, r0]
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, _021D8208 ; =0x0000C010
ldr r2, _021D8210 ; =0x021D8F98
ldr r0, [r5, r0]
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -1508,10 +1508,10 @@ MOD77_021D7FAC: ; 0x021D7FAC
mov r0, #2
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #2
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
ldr r1, [r5]
mov r0, #0x10
bl String_ctor
@@ -1533,29 +1533,29 @@ MOD77_021D7FAC: ; 0x021D7FAC
add r1, sp, #0x14
add r1, #2
add r2, r0, #0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #2
add r1, sp, #0x14
add r2, r0, #0
mov r3, #0x84
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #2
add r1, sp, #0x10
add r1, #2
add r2, r0, #0
mov r3, #0x86
- bl FUN_02017FB4
+ bl BG_LoadPlttData
mov r0, #2
add r1, sp, #0x10
add r2, r0, #0
mov r3, #0x9e
- bl FUN_02017FB4
+ bl BG_LoadPlttData
ldr r1, _021D8208 ; =0x0000C010
ldr r2, _021D823C ; =0x021D8F30
ldr r0, [r5, r1]
add r1, #0x24
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd8
str r0, [sp]
mov r0, #0x20
@@ -1618,26 +1618,26 @@ MOD77_021D8248: ; 0x021D8248
add r4, r0, #0
ldr r0, _021D8288 ; =0x0000C034
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _021D828C ; =0x0000C014
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _021D8290 ; =0x0000C010
mov r1, #2
ldr r0, [r4, r0]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _021D8290 ; =0x0000C010
mov r1, #6
ldr r0, [r4, r0]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _021D8290 ; =0x0000C010
mov r1, #3
ldr r0, [r4, r0]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _021D8290 ; =0x0000C010
mov r1, #7
ldr r0, [r4, r0]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
nop
_021D8288: .word 0x0000C034
@@ -1748,7 +1748,7 @@ MOD77_021D835C: ; 0x021D835C
cmp r2, #0
bne _021D8368
ldr r0, _021D836C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_021D8368:
pop {r3, pc}
nop
@@ -1764,7 +1764,7 @@ MOD77_021D8370: ; 0x021D8370
add r6, r3, #0
ldr r0, [r5, r0]
str r1, [sp]
- bl FUN_02019150
+ bl AddWindow
ldrh r0, [r6, #0x10]
ldr r1, [r5]
bl ListMenuItems_ctor
@@ -1844,7 +1844,7 @@ MOD77_021D8418: ; 0x021D8418
str r3, [sp, #4]
ldr r7, [sp, #0x44]
ldr r6, [sp, #0x48]
- bl FUN_02019150
+ bl AddWindow
ldr r2, [sp, #0x40]
ldr r3, [r5]
mov r0, #0
@@ -1932,7 +1932,7 @@ MOD77_021D84D8: ; 0x021D84D8
bl FUN_0200CCF8
ldr r0, _021D8504 ; =0x0000C024
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _021D8508 ; =0x0000C054
mov r1, #0
ldr r0, [r4, r0]
@@ -1968,7 +1968,7 @@ MOD77_021D8510: ; 0x021D8510
add r1, #0x34
ldr r2, _021D85C8 ; =0x021D8F28
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd8
str r0, [sp]
mov r0, #0x30
@@ -2057,7 +2057,7 @@ MOD77_021D85E0: ; 0x021D85E0
add r1, #0x34
ldr r2, _021D868C ; =0x021D8F28
add r1, r5, r1
- bl FUN_02019150
+ bl AddWindow
mov r0, #0xd8
str r0, [sp]
mov r0, #0x30
@@ -2130,7 +2130,7 @@ MOD77_021D8698: ; 0x021D8698
bl FUN_0200CCF8
ldr r0, _021D86B0 ; =0x0000C044
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
.align 2, 0
_021D86B0: .word 0x0000C044
diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s
index 7fc7439a..4b4209f2 100644
--- a/arm9/modules/78/asm/module_78.s
+++ b/arm9/modules/78/asm/module_78.s
@@ -12,7 +12,7 @@ MOD78_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x48
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0xa0
mov r2, #0x48
@@ -148,7 +148,7 @@ _021D75DE:
b _021D7662
_021D7614:
ldr r0, _021D76B4 ; =0x000006DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -259,7 +259,7 @@ _021D76C8:
bl OverlayManager_FreeData
bl FUN_0201B398
mov r0, #0x48
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD78_021D76B8
@@ -338,7 +338,7 @@ MOD78_021D778C: ; 0x021D778C
add r0, #0x70
mov r1, #0x48
mov r2, #4
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
add r1, r5, #0
add r1, #0x9c
ldrb r2, [r1]
diff --git a/arm9/modules/79/asm/module_79_arm.s b/arm9/modules/79/asm/module_79_arm.s
index 24356937..6564b7da 100644
--- a/arm9/modules/79/asm/module_79_arm.s
+++ b/arm9/modules/79/asm/module_79_arm.s
@@ -3438,7 +3438,7 @@ _022152DC:
cmp r0, #0
beq _02215448
add r4, r0, #9
- ldr r1, _0221562C ; =UNK_0210430C
+ ldr r1, _0221562C ; =__msl_digit
mov r2, #0
b _02215330
_0221532C:
@@ -3460,7 +3460,7 @@ _02215358:
cmp r0, #0
bne _0221532C
mov r3, r4
- ldr r1, _0221562C ; =UNK_0210430C
+ ldr r1, _0221562C ; =__msl_digit
mov r2, #0
b _02215374
_02215370:
@@ -3655,7 +3655,7 @@ _0221561C: .word MOD79_02216F64
_02215620: .word MOD79_02216F6C
_02215624: .word 0x51EB851F
_02215628: .word MOD79_02216F70
-_0221562C: .word UNK_0210430C
+_0221562C: .word __msl_digit
_02215630: .word MOD79_02216F7C
_02215634: .word MOD79_02216F8C
_02215638: .word MOD79_0221673C
@@ -4101,7 +4101,7 @@ _02215C1C:
bl sscanf
mov r3, #0
mov ip, #1
- ldr r2, _02215D24 ; =UNK_0210430C
+ ldr r2, _02215D24 ; =__msl_digit
b _02215C5C
_02215C50:
ldr r1, [sp, #0x14]
@@ -4163,7 +4163,7 @@ _02215D14: .word 0x0000024E
_02215D18: .word MOD79_02217000
_02215D1C: .word 0x0000024F
_02215D20: .word MOD79_02217020
-_02215D24: .word UNK_0210430C
+_02215D24: .word __msl_digit
arm_func_end MOD79_02215BD8
arm_func_start MOD79_02215D28
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index 83e02d71..a1fe2ee3 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -1391,7 +1391,7 @@ _0222DFE4:
mov r0, #3
mov r1, #0x3e
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222E108 ; =0x00001044
add r0, r6, #0
mov r2, #0x3e
@@ -1401,7 +1401,7 @@ _0222DFE4:
add r4, r0, #0
bl memset
mov r0, #0x3e
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
ldr r0, _0222E10C ; =0x02237E24
add r2, sp, #0
@@ -1413,7 +1413,7 @@ _0222DFE4:
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
add r0, r7, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r0, #0xb
mov r1, #0x40
mov r2, #0x3e
@@ -1453,7 +1453,7 @@ _0222DFE4:
str r0, [r4, r1]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
add r1, r6, #0
bl MOD80_0222E338
@@ -1689,7 +1689,7 @@ MOD80_0222E25C: ; 0x0222E25C
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x3e
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -2631,7 +2631,7 @@ MOD80_0222EA04: ; 0x0222EA04
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _0222EB00 ; =0x02236F04
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -2646,10 +2646,10 @@ MOD80_0222EA04: ; 0x0222EA04
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0222EB04 ; =0x02236EE8
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -2664,7 +2664,7 @@ MOD80_0222EA04: ; 0x0222EA04
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _0222EB08 ; =0x02236F20
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -2679,7 +2679,7 @@ MOD80_0222EA04: ; 0x0222EA04
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _0222EB0C ; =0x02236F3C
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -2694,10 +2694,10 @@ MOD80_0222EA04: ; 0x0222EA04
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0222EB10 ; =0x02236ECC
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -2712,17 +2712,17 @@ MOD80_0222EA04: ; 0x0222EA04
add r0, r4, #0
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -2745,19 +2745,19 @@ MOD80_0222EB14: ; 0x0222EB14
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD80_0222EB14
@@ -2947,7 +2947,7 @@ MOD80_0222EC98: ; 0x0222EC98
ldr r0, [r7, #4]
add r1, r7, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _0222ED88 ; =0x00000EB8
mov r1, #0
add r0, r7, r0
@@ -2989,7 +2989,7 @@ _0222ECF2:
add r1, r5, #0
mov r2, #1
mov r3, #9
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -3015,7 +3015,7 @@ _0222ECF2:
ldr r0, [r7, #4]
add r1, r7, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _0222ED94 ; =0x00000E98
mov r1, #0xf
add r0, r7, r0
@@ -3035,7 +3035,7 @@ _0222ECF2:
add r1, r7, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _0222ED98 ; =0x00000FB8
mov r1, #0xf
add r0, r7, r0
@@ -3056,23 +3056,23 @@ MOD80_0222ED9C: ; 0x0222ED9C
add r6, r0, #0
ldr r0, _0222EDD0 ; =0x00000FB8
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0222EDD4 ; =0x00000E98
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0222EDD8 ; =0x00000ED8
mov r4, #0
add r5, r6, r0
_0222EDB6:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #3
blt _0222EDB6
ldr r0, _0222EDDC ; =0x00000EB8
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, r5, r6, pc}
nop
_0222EDD0: .word 0x00000FB8
@@ -3290,7 +3290,7 @@ _0222EF50:
mov r0, #9
str r0, [r4, #0x2c]
ldr r0, _0222F090 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222F07C
_0222EF6A:
ldrh r1, [r4, #0x3a]
@@ -3306,7 +3306,7 @@ _0222EF6A:
ldr r0, _0222F094 ; =0x00000708
strh r0, [r4, #0x3a]
ldr r0, _0222F090 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222F07C
_0222EF8C:
ldr r0, _0222F08C ; =0x00000D5C
@@ -3325,7 +3325,7 @@ _0222EF8C:
mov r2, #5
bl MOD80_0222E6DC
ldr r0, _0222F098 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0222F09C ; =0x00000FDC
mov r1, #0
str r1, [r4, r0]
@@ -3337,7 +3337,7 @@ _0222EFBE:
mov r0, #9
str r0, [r4, #0x2c]
ldr r0, _0222F090 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222F07C
_0222EFD2:
bl MOD80_0222E7BC
@@ -3357,7 +3357,7 @@ _0222EFD2:
ldr r0, [r4, r0]
bl FUN_020200BC
ldr r0, _0222F090 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222F07C
_0222F002:
mov r0, #0x40
@@ -3376,7 +3376,7 @@ _0222F002:
add r0, #0xb4
strh r1, [r0]
ldr r0, _0222F090 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0xb4
ldrh r0, [r0]
@@ -3406,7 +3406,7 @@ _0222F040:
add r0, #0xb4
strh r1, [r0]
ldr r0, _0222F090 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0xb4
ldrh r0, [r0]
@@ -3550,7 +3550,7 @@ MOD80_0222F14C: ; 0x0222F14C
bl FUN_0200D0E0
ldr r0, _0222F1B0 ; =0x00000FB8
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, _0222F1B4 ; =0x00000D5C
mov r1, #1
ldr r0, [r4, r0]
@@ -3564,7 +3564,7 @@ _0222F18A:
bl FUN_0200D0E0
ldr r0, _0222F1B0 ; =0x00000FB8
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r1, #0
add r0, r4, #0
add r2, r1, #0
@@ -3959,10 +3959,10 @@ MOD80_0222F494: ; 0x0222F494
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0222F56C ; =0x02236FAC
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -3977,7 +3977,7 @@ MOD80_0222F494: ; 0x0222F494
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _0222F570 ; =0x02236F90
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -3992,7 +3992,7 @@ MOD80_0222F494: ; 0x0222F494
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _0222F574 ; =0x02236F74
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -4007,10 +4007,10 @@ MOD80_0222F494: ; 0x0222F494
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0222F578 ; =0x02236F58
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -4025,17 +4025,17 @@ MOD80_0222F494: ; 0x0222F494
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x8c
pop {r4, r5, pc}
nop
@@ -4051,19 +4051,19 @@ MOD80_0222F57C: ; 0x0222F57C
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD80_0222F57C
@@ -4245,7 +4245,7 @@ MOD80_0222F6EC: ; 0x0222F6EC
ldr r0, [r0, #4]
add r1, r1, r2
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, _0222F7A8 ; =0x00000E98
ldr r0, [sp, #0x14]
add r0, r0, r1
@@ -4268,7 +4268,7 @@ MOD80_0222F6EC: ; 0x0222F6EC
add r1, r1, r2
mov r2, #0
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, _0222F7B0 ; =0x00000F08
ldr r0, [sp, #0x14]
ldr r4, _0222F7B4 ; =0x02236FE4
@@ -4300,7 +4300,7 @@ _0222F754:
ldr r0, [r0, #4]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -4328,16 +4328,16 @@ MOD80_0222F7B8: ; 0x0222F7B8
add r5, r0, #0
ldr r0, _0222F7E4 ; =0x00000E98
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0222F7E8 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0222F7EC ; =0x00000F08
mov r4, #0
add r5, r5, r0
_0222F7D2:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0xa
@@ -4441,7 +4441,7 @@ MOD80_0222F86C: ; 0x0222F86C
mov r2, #7
bl MOD80_0222E6DC
ldr r0, _0222F8C8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222F8B8
_0222F8A2:
mov r1, #2
@@ -4452,7 +4452,7 @@ _0222F8A2:
mov r2, #0
bl MOD80_0222E7A8
ldr r0, _0222F8C8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0222F8B8:
mov r0, #3
add sp, #8
@@ -5286,10 +5286,10 @@ MOD80_0222FF6C: ; 0x0222FF6C
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02230024 ; =0x022370BC
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -5304,7 +5304,7 @@ MOD80_0222FF6C: ; 0x0222FF6C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _02230028 ; =0x022370A0
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -5319,10 +5319,10 @@ MOD80_0222FF6C: ; 0x0222FF6C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0223002C ; =0x02237084
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -5337,17 +5337,17 @@ MOD80_0222FF6C: ; 0x0222FF6C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x70
pop {r3, r4, r5, pc}
nop
@@ -5362,16 +5362,16 @@ MOD80_02230030: ; 0x02230030
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD80_02230030
@@ -5501,7 +5501,7 @@ MOD80_02230128: ; 0x02230128
ldr r0, [r0, #4]
add r1, r1, r2
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, _022301E4 ; =0x00000E98
ldr r0, [sp, #0x14]
add r0, r0, r1
@@ -5524,7 +5524,7 @@ MOD80_02230128: ; 0x02230128
add r1, r1, r2
mov r2, #0
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, _022301EC ; =0x00000F08
ldr r0, [sp, #0x14]
ldr r4, _022301F0 ; =0x022370F4
@@ -5556,7 +5556,7 @@ _02230190:
ldr r0, [r0, #4]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -5584,16 +5584,16 @@ MOD80_022301F4: ; 0x022301F4
add r5, r0, #0
ldr r0, _02230220 ; =0x00000E98
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02230224 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02230228 ; =0x00000F08
mov r4, #0
add r5, r5, r0
_0223020E:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #0xa
@@ -5724,7 +5724,7 @@ MOD80_022302F8: ; 0x022302F8
mov r2, #4
bl MOD80_0222E6DC
ldr r0, _02230390 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230384
_02230326:
mov r3, #2
@@ -5736,7 +5736,7 @@ _02230326:
str r3, [r4, #0x2c]
bl MOD80_0222E7A8
ldr r0, _02230390 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230384
_02230340:
mov r0, #0x10
@@ -5753,7 +5753,7 @@ _02230340:
mov r0, #6
str r0, [r4, #0x2c]
ldr r0, _02230390 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230384
_02230362:
mov r0, #0x20
@@ -5771,7 +5771,7 @@ _02230362:
mov r0, #6
str r0, [r4, #0x2c]
ldr r0, _02230390 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02230384:
mov r0, #3
pop {r3, r4, r5, pc}
@@ -6279,10 +6279,10 @@ MOD80_02230760: ; 0x02230760
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0223080C ; =0x022371EC
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -6297,10 +6297,10 @@ MOD80_02230760: ; 0x02230760
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02230810 ; =0x022371B4
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -6315,25 +6315,25 @@ MOD80_02230760: ; 0x02230760
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #2
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x54
pop {r4, r5, pc}
nop
@@ -6347,19 +6347,19 @@ MOD80_02230814: ; 0x02230814
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD80_02230814
@@ -6511,7 +6511,7 @@ MOD80_02230944: ; 0x02230944
ldr r0, [r0, #4]
add r1, r1, r2
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, _02230A6C ; =0x00000EB8
ldr r0, [sp, #0x14]
add r0, r0, r1
@@ -6546,7 +6546,7 @@ MOD80_02230944: ; 0x02230944
ldr r0, [r0, #4]
add r1, r1, r2
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, _02230A74 ; =0x00000E98
ldr r0, [sp, #0x14]
add r0, r0, r1
@@ -6579,7 +6579,7 @@ _022309D2:
lsl r3, r3, #0x18
ldr r0, [r0, #4]
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -6620,7 +6620,7 @@ _02230A20:
lsl r3, r3, #0x18
ldr r0, [r0, #4]
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [sp, #0x18]
mov r1, #0
add r0, r0, r7
@@ -6648,16 +6648,16 @@ MOD80_02230A88: ; 0x02230A88
add r5, r0, #0
ldr r0, _02230AB4 ; =0x00000E98
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02230AB8 ; =0x00000EB8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02230ABC ; =0x00000F08
mov r4, #0
add r5, r5, r0
_02230AA2:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #8
@@ -6803,7 +6803,7 @@ _02230BC8:
mov r0, #3
str r0, [r4, #0x2c]
ldr r0, _02230CB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230CAE
_02230BD4:
ldr r0, _02230CBC ; =0x00000B22
@@ -6824,20 +6824,20 @@ _02230BD4:
cmp r0, #0
beq _02230C04
ldr r0, _02230CB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #3
pop {r3, r4, r5, pc}
_02230C04:
mov r0, #8
str r0, [r4, #0x2c]
ldr r0, _02230CB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230CAE
_02230C10:
mov r0, #0xb
str r0, [r4, #0x2c]
ldr r0, _02230CB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230CAE
_02230C1C:
mov r0, #0xe
@@ -6856,7 +6856,7 @@ _02230C22:
mov r2, #0x16
bl MOD80_0222E6DC
ldr r0, _02230CB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230CAE
_02230C44:
mov r0, #2
@@ -6873,7 +6873,7 @@ _02230C44:
mov r2, #0x16
bl MOD80_0222E6DC
ldr r0, _02230CB8 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02230CAE
_02230C6A:
add r0, r4, #0
@@ -6905,7 +6905,7 @@ _02230C6A:
add r4, #0xc4
ldr r0, _02230CB8 ; =0x000005DC
str r5, [r4]
- bl FUN_020054C8
+ bl PlaySE
_02230CAE:
mov r0, #3
pop {r3, r4, r5, pc}
@@ -6937,7 +6937,7 @@ MOD80_02230CC8: ; 0x02230CC8
mov r2, #1
bl MOD80_0222E6DC
ldr r0, _02230D5C ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _02230D4C
_02230CF6:
add r0, r4, r1
@@ -6958,11 +6958,11 @@ _02230CF6:
mov r2, #1
bl MOD80_0222E6DC
ldr r0, _02230D5C ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _02230D4C
_02230D26:
ldr r0, _02230D60 ; =0x000005FF
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02230D58 ; =0x00000F0F
mov r1, #0xd
str r0, [sp]
@@ -7172,7 +7172,7 @@ MOD80_02230E9C: ; 0x02230E9C
mov r2, #1
bl MOD80_0222E6DC
ldr r0, _02230EF4 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
b _02230EE8
_02230ECC:
str r1, [sp]
@@ -7249,7 +7249,7 @@ MOD80_02230F3C: ; 0x02230F3C
mov r2, #1
bl MOD80_0222E6DC
ldr r0, _02230F74 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
mov r0, #3
add sp, #4
pop {r3, r4, pc}
@@ -7278,7 +7278,7 @@ MOD80_02230F78: ; 0x02230F78
mov r1, #0
str r1, [r4, r0]
ldr r0, _02230FB0 ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
mov r0, #3
add sp, #4
pop {r3, r4, pc}
@@ -7308,7 +7308,7 @@ MOD80_02230FB4: ; 0x02230FB4
add r2, r1, #0
bl MOD80_0222E7A8
ldr r0, _02230FEC ; =0x000005F3
- bl FUN_020054C8
+ bl PlaySE
mov r0, #3
add sp, #4
pop {r3, r4, pc}
@@ -7356,14 +7356,14 @@ MOD80_02231008: ; 0x02231008
sub r0, r0, #1
str r0, [r1, #0x28]
ldr r0, _02231104 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _022310D0
_02231036:
ldr r0, [r1, #0x2c]
cmp r0, #0
beq _02231042
ldr r0, _02231104 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02231042:
mov r0, #0xfe
lsl r0, r0, #4
@@ -7387,14 +7387,14 @@ _0223104E:
add r0, r0, #1
str r0, [r1, #0x28]
ldr r0, _02231104 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _022310D0
_02231072:
ldr r0, [r1, #0x2c]
cmp r0, #1
beq _0223107E
ldr r0, _02231104 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0223107E:
mov r0, #0xfe
lsl r0, r0, #4
@@ -7413,7 +7413,7 @@ _0223108A:
cmp r0, #1
beq _022310A2
ldr r0, _02231104 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_022310A2:
mov r0, #0xfe
lsl r0, r0, #4
@@ -7432,7 +7432,7 @@ _022310AE:
cmp r0, #0
beq _022310C6
ldr r0, _02231104 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_022310C6:
mov r0, #0xfe
lsl r0, r0, #4
@@ -7520,7 +7520,7 @@ MOD80_0223113C: ; 0x0223113C
add r1, r4, r1
mov r2, #0
mov r3, #0xf
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _022311BC ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -7539,7 +7539,7 @@ MOD80_0223113C: ; 0x0223113C
add r1, r4, r1
mov r2, #0
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _022311C4 ; =0x00000EE8
mov r1, #0
add r0, r4, r0
@@ -7631,7 +7631,7 @@ _02231240:
ldr r0, [r4, r0]
bl ListMenuItems_dtor
ldr r0, _022312BC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #6
str r0, [r4, #0x2c]
b _022312AE
@@ -7657,12 +7657,12 @@ _02231266:
bl FUN_0200D0E0
ldr r0, _022312C0 ; =0x00000ED8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _022312C8 ; =0x00000EE8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _022312BC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
str r0, [r4, #0x2c]
_022312AE:
@@ -7756,7 +7756,7 @@ _02231342:
add r0, r4, r0
bl FUN_0200CCF8
ldr r0, _02231470 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #4
str r0, [r4, #0x2c]
mov r0, #0xfe
@@ -7794,16 +7794,16 @@ _0223138C:
bl FUN_0200CCF8
ldr r0, _02231474 ; =0x00000ED8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0223146C ; =0x00000EE8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02231478 ; =0x00000B22
strh r5, [r4, r0]
mov r0, #0
str r0, [r4, #0x2c]
ldr r0, _02231470 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0223147C ; =0x00000F18
mov r1, #0
add r0, r4, r0
@@ -7909,7 +7909,7 @@ MOD80_02231490: ; 0x02231490
add r1, r4, r1
mov r2, #0
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _022314E8 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -7994,9 +7994,9 @@ _0223154A:
bl FUN_0200D0E0
ldr r0, _022315F8 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02231600 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
str r0, [r5, #0x2c]
b _022315EA
@@ -8015,9 +8015,9 @@ _0223158E:
bl FUN_0200CCF8
ldr r0, _022315F8 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02231600 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02231604 ; =0x00000B24
add r1, r4, #1
strb r1, [r5, r0]
@@ -8085,7 +8085,7 @@ MOD80_02231614: ; 0x02231614
add r1, r4, r1
mov r2, #0
mov r3, #0xf
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _0223166C ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -8167,9 +8167,9 @@ _022316D0:
bl FUN_0200D0E0
ldr r0, _02231774 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0223177C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
str r0, [r5, #0x2c]
b _02231766
@@ -8188,9 +8188,9 @@ _0223170C:
bl FUN_0200CCF8
ldr r0, _02231774 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0223177C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02231780 ; =0x00000B22
add r1, r4, #0
add r0, r5, r0
@@ -8642,7 +8642,7 @@ MOD80_02231AB0: ; 0x02231AB0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _02231BB4 ; =0x02237288
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -8657,10 +8657,10 @@ MOD80_02231AB0: ; 0x02231AB0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02231BB8 ; =0x022372A4
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -8675,7 +8675,7 @@ MOD80_02231AB0: ; 0x02231AB0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _02231BBC ; =0x0223726C
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -8690,10 +8690,10 @@ MOD80_02231AB0: ; 0x02231AB0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02231BC0 ; =0x02237234
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -8708,10 +8708,10 @@ MOD80_02231AB0: ; 0x02231AB0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02231BC4 ; =0x02237250
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -8726,17 +8726,17 @@ MOD80_02231AB0: ; 0x02231AB0
add r0, r4, #0
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -8759,19 +8759,19 @@ MOD80_02231BC8: ; 0x02231BC8
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD80_02231BC8
@@ -9117,7 +9117,7 @@ MOD80_02231EA8: ; 0x02231EA8
ldr r0, [r4, #4]
add r1, r4, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02231FDC ; =0x00000EB8
mov r1, #0
add r0, r4, r0
@@ -9146,7 +9146,7 @@ MOD80_02231EA8: ; 0x02231EA8
add r1, r4, r1
mov r2, #0
mov r3, #5
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02231FE4 ; =0x00000EC8
mov r1, #0
add r0, r4, r0
@@ -9168,7 +9168,7 @@ MOD80_02231EA8: ; 0x02231EA8
ldr r0, [r4, #4]
add r1, r4, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02231FE8 ; =0x00000E98
mov r1, #0
add r0, r4, r0
@@ -9188,7 +9188,7 @@ MOD80_02231EA8: ; 0x02231EA8
add r1, r4, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02231FF0 ; =0x00000FB8
mov r1, #0
add r0, r4, r0
@@ -9208,7 +9208,7 @@ MOD80_02231EA8: ; 0x02231EA8
add r1, r4, r1
mov r2, #1
mov r3, #0x19
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02231FF8 ; =0x00000EE8
mov r1, #6
add r0, r4, r0
@@ -9237,7 +9237,7 @@ MOD80_02231EA8: ; 0x02231EA8
add r1, r4, r1
mov r2, #0
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
add sp, #0x14
pop {r3, r4, pc}
.align 2, 0
@@ -9261,22 +9261,22 @@ MOD80_0223200C: ; 0x0223200C
add r4, r0, #0
ldr r0, _02232044 ; =0x00000FB8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02232048 ; =0x00000EE8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0223204C ; =0x00000ED8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02232050 ; =0x00000E98
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02232054 ; =0x00000EC8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02232058 ; =0x00000EB8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
nop
_02232044: .word 0x00000FB8
@@ -9434,13 +9434,13 @@ _02232168:
mov r0, #2
str r0, [r5, #0x2c]
ldr r0, _02232374 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02232368
_0223218E:
cmp r0, #0x1f
beq _022321B6
ldr r0, _02232374 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r2, r5, #0
add r3, r5, #0
ldr r1, [r5]
@@ -9542,7 +9542,7 @@ _02232250:
mov r0, #2
str r0, [r5, #0x2c]
ldr r0, _02232374 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02232368
_02232274:
mov r0, #1
@@ -9560,7 +9560,7 @@ _02232274:
mov r0, #2
str r0, [r5, #0x2c]
ldr r0, _02232374 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02232368
_0223229A:
cmp r3, #0x1f
@@ -9636,7 +9636,7 @@ _022322BC:
mov r2, #9
bl MOD80_0222E6DC
ldr r0, _02232374 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02232368
_0223233C:
ldr r0, _02232378 ; =0x00000F0F
@@ -9654,11 +9654,11 @@ _0223233C:
b _02232368
_0223235A:
ldr r0, _02232374 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02232368
_02232362:
ldr r0, _02232374 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02232368:
mov r0, #3
add sp, #8
@@ -9732,7 +9732,7 @@ _022323CE:
add r0, r5, #0
bl MOD80_02232D7C
ldr r0, _02232450 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _022323FE
_022323F6:
add r0, r5, #0
@@ -9743,7 +9743,7 @@ _022323FE:
cmp r4, #0
beq _02232420
ldr r0, _02232450 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r0, #0xba
ldrh r0, [r0]
@@ -11706,10 +11706,10 @@ MOD80_02233358: ; 0x02233358
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02233430 ; =0x0223743C
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -11724,7 +11724,7 @@ MOD80_02233358: ; 0x02233358
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _02233434 ; =0x02237458
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -11739,7 +11739,7 @@ MOD80_02233358: ; 0x02233358
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r5, _02233438 ; =0x02237404
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -11754,10 +11754,10 @@ MOD80_02233358: ; 0x02233358
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0223343C ; =0x022373E8
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -11772,17 +11772,17 @@ MOD80_02233358: ; 0x02233358
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x8c
pop {r4, r5, pc}
nop
@@ -11798,19 +11798,19 @@ MOD80_02233440: ; 0x02233440
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD80_02233440
@@ -11904,7 +11904,7 @@ MOD80_02233500: ; 0x02233500
ldr r0, [r7, #4]
add r1, r7, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _022335CC ; =0x00000EB8
mov r1, #0
add r0, r7, r0
@@ -11934,7 +11934,7 @@ MOD80_02233500: ; 0x02233500
ldr r0, [r7, #4]
add r1, r7, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _022335D4 ; =0x00000E98
mov r1, #0
add r0, r7, r0
@@ -11965,7 +11965,7 @@ _0223357E:
ldr r0, [r7, #4]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
mov r1, #0
bl FillWindowPixelBuffer
@@ -11998,17 +11998,17 @@ MOD80_022335E0: ; 0x022335E0
add r5, r6, r0
_022335EA:
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
add r4, r4, #1
add r5, #0x10
cmp r4, #6
blt _022335EA
ldr r0, _02233610 ; =0x00000E98
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02233614 ; =0x00000EB8
add r0, r6, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, r5, r6, pc}
nop
_0223360C: .word 0x00000F08
@@ -12154,7 +12154,7 @@ _02233714:
add r1, r4, r1
mov r2, #0
mov r3, #0xf
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02233778 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -12173,7 +12173,7 @@ _02233714:
add r1, r4, r1
mov r2, #0
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02233780 ; =0x00000EE8
mov r1, #0
add r0, r4, r0
@@ -12267,7 +12267,7 @@ _022337FA:
mov r0, #5
str r0, [r4, #0x2c]
ldr r0, _02233880 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02233872
_02233820:
mov r0, #0xfe
@@ -12291,10 +12291,10 @@ _02233820:
bl FUN_0200D0E0
ldr r0, _02233884 ; =0x00000ED8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0223388C ; =0x00000EE8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r1, #5
add r0, r4, #0
add r2, r1, #0
@@ -12302,7 +12302,7 @@ _02233820:
mov r0, #2
str r0, [r4, #0x2c]
ldr r0, _02233880 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02233872:
mov r0, #3
pop {r4, pc}
@@ -12425,14 +12425,14 @@ _02233932:
bl FUN_0200CCF8
ldr r0, _02233A58 ; =0x00000ED8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02233A54 ; =0x00000EE8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0
str r0, [r4, #0x2c]
ldr r0, _02233A5C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xfe
lsl r0, r0, #4
ldr r3, [r4, r0]
@@ -12468,14 +12468,14 @@ _0223398C:
bl FUN_0200CCF8
ldr r0, _02233A58 ; =0x00000ED8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02233A54 ; =0x00000EE8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02233A60 ; =0x00000B1C
strh r5, [r4, r0]
ldr r0, _02233A5C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0x12 ; BASE_GENDER_RATIO
bl GetMonBaseStat
@@ -12573,7 +12573,7 @@ MOD80_02233A6C: ; 0x02233A6C
add r1, r4, r1
mov r2, #0
mov r3, #0x15
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02233AC4 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -12658,9 +12658,9 @@ _02233B26:
bl FUN_0200D0E0
ldr r0, _02233BD4 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02233BDC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
str r0, [r5, #0x2c]
b _02233BC6
@@ -12679,9 +12679,9 @@ _02233B6A:
bl FUN_0200CCF8
ldr r0, _02233BD4 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02233BDC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r3, _02233BE0 ; =0x00000F08
ldr r2, _02233BE4 ; =0x00000B1E
add r0, r4, #1
@@ -12748,7 +12748,7 @@ MOD80_02233BE8: ; 0x02233BE8
add r1, r4, r1
mov r2, #0
mov r3, #0xf
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02233C40 ; =0x00000ED8
mov r1, #0
add r0, r4, r0
@@ -12830,9 +12830,9 @@ _02233CA4:
bl FUN_0200D0E0
ldr r0, _02233D74 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02233D7C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0xfe
lsl r1, r1, #4
ldr r1, [r5, r1]
@@ -12851,7 +12851,7 @@ _02233CF4:
b _02233D66
_02233CFA:
ldr r0, _02233D7C ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02233D6C ; =0x00000FD4
mov r1, #0
ldr r0, [r5, r0]
@@ -12866,7 +12866,7 @@ _02233CFA:
bl FUN_0200CCF8
ldr r0, _02233D74 ; =0x00000ED8
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02233D80 ; =0x00000B1C
add r1, r4, #0
add r0, r5, r0
@@ -14103,7 +14103,7 @@ MOD80_02234698: ; 0x02234698
cmp r1, r0
beq _022346C4
ldr r0, _022346D4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_022346C4:
add r0, sp, #0
ldrh r0, [r0]
@@ -14222,7 +14222,7 @@ MOD80_02234780: ; 0x02234780
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _0223488C ; =0x02237544
add r3, sp, #0x70
ldmia r5!, {r0, r1}
@@ -14237,10 +14237,10 @@ MOD80_02234780: ; 0x02234780
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02234890 ; =0x02237528
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -14255,10 +14255,10 @@ MOD80_02234780: ; 0x02234780
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02234894 ; =0x0223757C
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -14273,10 +14273,10 @@ MOD80_02234780: ; 0x02234780
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02234898 ; =0x02237560
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -14291,10 +14291,10 @@ MOD80_02234780: ; 0x02234780
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0223489C ; =0x0223750C
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -14309,17 +14309,17 @@ MOD80_02234780: ; 0x02234780
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -14342,19 +14342,19 @@ MOD80_022348A0: ; 0x022348A0
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD80_022348A0
@@ -14405,10 +14405,10 @@ MOD80_022348CC: ; 0x022348CC
bne _02234944
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
mov r1, #0
bl GX_EngineBToggleLayers
@@ -14445,7 +14445,7 @@ MOD80_02234958: ; 0x02234958
add r1, r4, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02234990 ; =0x00000E98
mov r1, #0
add r0, r4, r0
@@ -14464,7 +14464,7 @@ MOD80_02234994: ; 0x02234994
bx r3
.align 2, 0
_0223499C: .word 0x00000E98
-_022349A0: .word FUN_02019178
+_022349A0: .word RemoveWindow
thumb_func_end MOD80_02234994
thumb_func_start MOD80_022349A4
@@ -16555,7 +16555,7 @@ MOD80_02235900: ; 0x02235900
str r5, [r0, #0xc]
bl MOD80_02235948
ldr r0, _02235944 ; =0x0000062F
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
nop
_0223593C: .word MOD80_02235964
@@ -16655,7 +16655,7 @@ _022359DE:
pop {r4, r5, r6, pc}
_022359F2:
ldr r0, _02235A08 ; =0x0000060D
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r4, #0xc]
ldr r0, _02235A0C ; =0x00000FEC
mov r2, #1
@@ -16692,7 +16692,7 @@ MOD80_02235A10: ; 0x02235A10
str r5, [r0, #0xc]
bl MOD80_02235948
ldr r0, _02235A50 ; =0x0000060E
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
nop
_02235A48: .word MOD80_02235A54
@@ -16754,7 +16754,7 @@ _02235A9E:
str r0, [r4]
mov r0, #0x63
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
_02235AC2:
mov r0, #0x13
@@ -16876,7 +16876,7 @@ MOD80_02235B90: ; 0x02235B90
cmp r0, #1
bne _02235BAA
ldr r0, _02235C24 ; =0x0000064F
- bl FUN_020054C8
+ bl PlaySE
_02235BAA:
ldr r4, [sp, #4]
mov r0, #0xe
@@ -17886,13 +17886,13 @@ MOD80_02236378: ; 0x02236378
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0
bl GX_EngineAToggleLayers
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02236458 ; =0x0223761C
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -17907,7 +17907,7 @@ MOD80_02236378: ; 0x02236378
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0
bl GX_EngineAToggleLayers
@@ -17925,13 +17925,13 @@ MOD80_02236378: ; 0x02236378
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0
bl GX_EngineBToggleLayers
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02236460 ; =0x02237600
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -17946,7 +17946,7 @@ MOD80_02236378: ; 0x02236378
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0
bl GX_EngineBToggleLayers
@@ -17954,12 +17954,12 @@ MOD80_02236378: ; 0x02236378
mov r1, #0x20
add r2, r0, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x3e
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0x10
mov r1, #0
bl GX_EngineBToggleLayers
@@ -17977,16 +17977,16 @@ MOD80_02236464: ; 0x02236464
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD80_02236464
@@ -18097,10 +18097,10 @@ MOD80_02236488: ; 0x02236488
bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end MOD80_02236488
@@ -18124,7 +18124,7 @@ MOD80_02236580: ; 0x02236580
ldr r0, [r4, #4]
add r1, r4, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02236628 ; =0x00000EC8
mov r1, #0
add r0, r4, r0
@@ -18145,7 +18145,7 @@ MOD80_02236580: ; 0x02236580
add r1, r4, r1
mov r2, #0
mov r3, #4
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _0223662C ; =0x00000EB8
mov r1, #0
add r0, r4, r0
@@ -18176,7 +18176,7 @@ MOD80_02236580: ; 0x02236580
add r1, r4, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _02236634 ; =0x00000E98
mov r1, #0
add r0, r4, r0
@@ -18196,13 +18196,13 @@ MOD80_02236638: ; 0x02236638
add r4, r0, #0
ldr r0, _02236658 ; =0x00000E98
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _0223665C ; =0x00000EB8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _02236660 ; =0x00000EC8
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
nop
_02236658: .word 0x00000E98
@@ -19842,4 +19842,3 @@ MOD80_02237E1C: ; 0x02237E1C
.global MOD80_02237E24
MOD80_02237E24: ; 0x02237E24
.space 0x1C
-
diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s
index c8b46eb9..09e12fdf 100644
--- a/arm9/modules/81/asm/module_81.s
+++ b/arm9/modules/81/asm/module_81.s
@@ -16,11 +16,11 @@ _02237E50:
mov r0, #3
mov r1, #0x39
lsl r2, r0, #0xf
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #3
mov r1, #0x3a
lsl r2, r0, #0xf
- bl FUN_0201681C
+ bl CreateHeap
bl MOD81_02238858
ldr r1, _02237FD0 ; =0x00000492
mov r0, #3
@@ -41,7 +41,7 @@ _02237E84:
mov r0, #0
str r0, [r4, #4]
mov r0, #0x39
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #8]
mov r0, #0x19
lsl r0, r0, #4
@@ -237,9 +237,9 @@ MOD81_02238004: ; 0x02238004
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x39
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0x3a
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r6, #0
bl OS_RestoreInterrupts
mov r0, #1
@@ -520,7 +520,7 @@ MOD81_02238248: ; 0x02238248
cmp r0, #0
bgt _02238284
ldr r0, _0223832C ; =0x000006AE
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0x1e
add r0, #0xf0
@@ -944,7 +944,7 @@ MOD81_02238588: ; 0x02238588
mov r1, #2
str r0, [sp]
ldr r0, [r4]
- bl FUN_02017BD0
+ bl SetBgAffine
ldr r0, [r4, #0x1c]
add r2, sp, #4
lsl r1, r0, #2
@@ -954,7 +954,7 @@ MOD81_02238588: ; 0x02238588
mov r1, #6
str r0, [sp]
ldr r0, [r4]
- bl FUN_02017BD0
+ bl SetBgAffine
add sp, #0x14
pop {r3, r4, pc}
.align 2, 0
@@ -1048,7 +1048,7 @@ _02238648:
lsr r1, r1, #0x18
add r2, r7, #0
add r3, r6, #0
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
ldr r1, [sp, #0x20]
add r0, r4, #0
bl ReleaseBoxMonLock
@@ -1130,7 +1130,7 @@ _022386DE:
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02018170
+ bl CopyToBgTilemapRect
mov r0, #0xa
str r0, [sp]
str r0, [sp, #4]
@@ -1146,7 +1146,7 @@ _022386DE:
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r7, #0
bl FreeToHeap
_02238746:
@@ -2059,16 +2059,16 @@ MOD81_02238D64: ; 0x02238D64
bl MOD81_0223890C
ldr r0, [r4, #0x40]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x40]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x40]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
add r0, #0x44
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x10]
cmp r0, #0
beq _02238DB6
@@ -2158,22 +2158,22 @@ MOD81_02238E44: ; 0x02238E44
and r0, r1
strh r0, [r2]
ldr r0, _0223904C ; =0x0223D00C
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r4, #0x40]
ldr r2, _02239050 ; =0x0223D01C
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x40]
ldr r2, _02239054 ; =0x0223D038
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x40]
ldr r2, _02239054 ; =0x0223D038
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -2189,7 +2189,7 @@ MOD81_02238E44: ; 0x02238E44
str r2, [sp]
ldr r0, [r4, #0x40]
add r3, r1, #0
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -2199,7 +2199,7 @@ MOD81_02238E44: ; 0x02238E44
ldr r0, [r4, #0x40]
mov r1, #1
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r4]
bl MOD81_02238844
lsl r0, r0, #0x18
@@ -2225,7 +2225,7 @@ MOD81_02238E44: ; 0x02238E44
ldr r0, [r4, #0x40]
add r1, #0x44
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
add r0, #0x44
mov r1, #0xf
@@ -2306,7 +2306,7 @@ MOD81_02238E44: ; 0x02238E44
bl GfGfxLoader_GXLoadPal
ldr r0, [r4, #0x40]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r4, #0
bl MOD81_022392D8
mov r1, #0
@@ -2540,7 +2540,7 @@ _0223918A:
bl AddTextPrinterParameterized
add r0, r4, #0
add r0, #0x44
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
mov r0, #0
str r0, [r4, #8]
ldr r0, [r5]
@@ -2601,7 +2601,7 @@ _0223920E: ; jump table
.short _022392B6 - _0223920E - 2 ; case 4
_02239218:
ldr r0, _022392D4 ; =0x000006A8
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
mov r1, #0
mov r2, #0x10
@@ -3143,7 +3143,7 @@ _0223962A:
str r0, [r4, #0x24]
_02239658:
ldr r0, _022396E4 ; =0x000005E6
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x20]
add r0, r0, #1
str r0, [r4, #0x20]
@@ -3590,7 +3590,7 @@ _022399A0:
bne _022399B6
mov r0, #0x6b
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
_022399B6:
mov r0, #0x16
lsl r0, r0, #4
@@ -3641,21 +3641,21 @@ MOD81_022399FC: ; 0x022399FC
and r0, r1
strh r0, [r2]
ldr r0, _02239C84 ; =0x0223D084
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
add r0, r4, #0
add r0, #0xc0
ldr r0, [r0]
ldr r2, _02239C88 ; =0x0223D0B4
mov r1, #2
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
add r0, #0xc0
ldr r0, [r0]
ldr r2, _02239C88 ; =0x0223D0B4
mov r1, #6
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
bl OS_DisableInterrupts
add r5, r0, #0
add r0, r4, #0
@@ -3664,14 +3664,14 @@ MOD81_022399FC: ; 0x022399FC
ldr r2, _02239C8C ; =0x0223D0D0
mov r1, #3
mov r3, #2
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
add r0, #0xc0
ldr r0, [r0]
ldr r2, _02239C8C ; =0x0223D0D0
mov r1, #7
mov r3, #2
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0
bl OS_RestoreInterrupts
mov r0, #0
@@ -3866,10 +3866,10 @@ _02239C02:
mov r1, #6
mov r2, #3
mvn r3, r3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -3882,7 +3882,7 @@ _02239C02:
ldr r0, [r0]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r4, #0
add r0, #0xc8
mov r1, #1
@@ -3938,21 +3938,21 @@ _02239CAA:
add r0, #0xc0
ldr r0, [r0]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
add r0, #0xc0
ldr r0, [r0]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
add r0, #0xc0
ldr r0, [r0]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r4, #0xc0
ldr r0, [r4]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD81_02239C94
@@ -4272,19 +4272,19 @@ MOD81_02239F58: ; 0x02239F58
mov r1, #2
mov r2, #3
mvn r3, r3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r4, #0xc0
ldr r0, [r4]
mov r1, #6
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #3
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r2, _02239FB0 ; =0x04000304
ldrh r1, [r2]
lsr r0, r2, #0xb
@@ -4493,7 +4493,7 @@ MOD81_0223A104: ; 0x0223A104
str r1, [r4, r0]
ldr r0, [r4, r0]
mov r1, #2
- bl FUN_02017B54
+ bl Bg_GetYpos
lsl r1, r0, #0xc
mov r0, #0x56
lsl r0, r0, #2
@@ -4501,7 +4501,7 @@ MOD81_0223A104: ; 0x0223A104
sub r0, r0, #4
ldr r0, [r4, r0]
mov r1, #6
- bl FUN_02017B54
+ bl Bg_GetYpos
mov r1, #0x57
lsl r0, r0, #0xc
lsl r1, r1, #2
@@ -4564,7 +4564,7 @@ MOD81_0223A178: ; 0x0223A178
mov r1, #2
mov r2, #3
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r5, #0x55
lsl r5, r5, #2
add r3, r5, #0
@@ -4577,7 +4577,7 @@ MOD81_0223A178: ; 0x0223A178
sub r3, r6, r3
mov r2, #3
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #0x59
lsl r1, r1, #2
mov r0, #2
@@ -5630,7 +5630,7 @@ _0223A9C8:
cmp r0, #0xa
ble _0223AA54
ldr r0, _0223AA5C ; =0x000006AC
- bl FUN_020054C8
+ bl PlaySE
add r1, r5, #0
add r0, r5, #0
add r1, #0x34
@@ -5649,7 +5649,7 @@ _0223A9F2:
cmp r0, #0
beq _0223AA54
ldr r0, _0223AA60 ; =0x000006AD
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r5, #0x20]
mov r1, #3
bl FUN_02020130
@@ -5710,17 +5710,17 @@ MOD81_0223AA68: ; 0x0223AA68
and r0, r1
strh r0, [r2]
ldr r0, _0223ABB8 ; =0x0223D11C
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r4, #0x24]
ldr r2, _0223ABBC ; =0x0223D13C
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x24]
ldr r2, _0223ABBC ; =0x0223D13C
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4]
bl MOD81_02238828
cmp r0, #3
@@ -5838,12 +5838,12 @@ _0223AAE8:
ldr r0, [r4, #0x24]
add r2, r1, #0
add r3, #0xfd
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x24]
mov r1, #7
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -5866,10 +5866,10 @@ MOD81_0223ABC0: ; 0x0223ABC0
add r4, r0, #0
ldr r0, [r4, #0x24]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x24]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD81_0223ABC0
@@ -6491,13 +6491,13 @@ MOD81_0223B090: ; 0x0223B090
mov r1, #3
ldr r0, [r4, #0x24]
add r2, r1, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #3
add r3, r2, #0
ldr r0, [r4, #0x24]
mov r1, #7
add r3, #0xfd
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x28]
add r1, sp, #0
bl MOD81_02238C70
@@ -6645,7 +6645,7 @@ _0223B1C2:
cmp r0, #0
beq _0223B1FC
ldr r0, _0223B214 ; =0x000006A9
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x10
str r0, [sp]
mov r0, #1
@@ -6732,32 +6732,32 @@ MOD81_0223B264: ; 0x0223B264
orr r0, r1
strh r0, [r2]
ldr r0, _0223B464 ; =0x0223D188
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r4, #0xc]
ldr r2, _0223B468 ; =0x0223D198
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
ldr r2, _0223B468 ; =0x0223D198
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
ldr r2, _0223B46C ; =0x0223D1B4
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
ldr r2, _0223B470 ; =0x0223D1D0
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
ldr r2, _0223B470 ; =0x0223D1D0
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -6830,21 +6830,21 @@ MOD81_0223B264: ; 0x0223B264
ldr r0, [r4, #0xc]
mov r2, #0
add r3, r1, #0
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r0, #0xc8
str r0, [sp]
ldr r0, [r4, #0xc]
mov r1, #5
mov r2, #0
mov r3, #1
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r0, #0xc8
str r0, [sp]
ldr r0, [r4, #0xc]
mov r1, #2
mov r2, #0
mov r3, #1
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r1, #0
str r1, [sp]
ldr r0, [r4]
@@ -6874,7 +6874,7 @@ MOD81_0223B264: ; 0x0223B264
ldr r0, [r4, #0xc]
mov r1, #1
mov r2, #0xc8
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0
str r3, [sp]
mov r0, #0x20
@@ -6885,7 +6885,7 @@ MOD81_0223B264: ; 0x0223B264
ldr r0, [r4, #0xc]
mov r1, #5
mov r2, #0xc8
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r3, #0
str r3, [sp]
mov r0, #0x20
@@ -6896,7 +6896,7 @@ MOD81_0223B264: ; 0x0223B264
ldr r0, [r4, #0xc]
mov r1, #2
mov r2, #0xc8
- bl FUN_02018540
+ bl FillBgTilemapRect
mov r0, #0x14
str r0, [sp]
mov r1, #0
@@ -6923,13 +6923,13 @@ MOD81_0223B264: ; 0x0223B264
bl MOD81_022386BC
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, [r4, #0xc]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r0, [r4, #0xc]
ldr r2, _0223B474 ; =0xFFFFFE80
mov r1, #0x50
@@ -6958,22 +6958,22 @@ MOD81_0223B478: ; 0x0223B478
add r4, r0, #0
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD81_0223B478
@@ -6989,18 +6989,18 @@ MOD81_0223B4B0: ; 0x0223B4B0
mov r1, #2
mov r2, #3
and r3, r6
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
mov r1, #1
mov r2, #3
add r3, r4, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r4, #0xc0
add r0, r5, #0
mov r1, #5
mov r2, #3
add r3, r4, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r4, r5, r6, pc}
nop
_0223B4E4: .word 0x000001FF
@@ -7157,7 +7157,7 @@ _0223B5FE:
cmp r0, #0
bne _0223B662
ldr r0, _0223B668 ; =0x000006AB
- bl FUN_020054C8
+ bl PlaySE
add r1, r5, #0
add r0, r5, #0
add r1, #0x34
@@ -7219,17 +7219,17 @@ MOD81_0223B670: ; 0x0223B670
orr r0, r1
strh r0, [r2]
ldr r0, _0223B7C8 ; =0x0223D21C
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r4, #0x24]
ldr r2, _0223B7CC ; =0x0223D23C
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x24]
ldr r2, _0223B7CC ; =0x0223D23C
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4]
bl MOD81_02238828
cmp r0, #3
@@ -7346,13 +7346,13 @@ _0223B6F0:
ldr r0, [r4, #0x24]
add r2, r1, #0
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #3
add r3, r2, #0
ldr r0, [r4, #0x24]
mov r1, #7
add r3, #0xfd
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -7378,10 +7378,10 @@ MOD81_0223B7D0: ; 0x0223B7D0
add r4, r0, #0
ldr r0, [r4, #0x24]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x24]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD81_0223B7D0
@@ -8018,12 +8018,12 @@ _0223BCC6:
ldr r0, [r4, #0x24]
add r2, r1, #0
add r3, #0xfd
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x24]
mov r1, #7
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x28]
add r1, sp, #0
bl MOD81_02238C70
@@ -8381,29 +8381,29 @@ MOD81_0223BF74: ; 0x0223BF74
orr r0, r1
strh r0, [r2]
ldr r0, _0223C194 ; =0x0223D294
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r4, #0xc]
ldr r2, _0223C198 ; =0x0223D2B4
mov r1, #2
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
ldr r2, _0223C198 ; =0x0223D2B4
mov r1, #6
mov r3, #1
- bl FUN_02016C18
+ bl InitBgFromTemplate
bl OS_DisableInterrupts
add r5, r0, #0
ldr r0, [r4, #0xc]
ldr r2, _0223C19C ; =0x0223D2D0
mov r1, #3
mov r3, #2
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0xc]
ldr r2, _0223C19C ; =0x0223D2D0
mov r1, #7
mov r3, #2
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r5, #0
bl OS_RestoreInterrupts
mov r0, #0
@@ -8579,21 +8579,21 @@ _0223C14A:
ldr r3, _0223C1A4 ; =0xFFFFFE80
mov r1, #2
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r2, #3
add r3, r2, #0
ldr r0, [r4, #0xc]
mov r1, #6
sub r3, #0xc3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r1, #3
ldr r0, [r4, #0xc]
add r2, r1, #0
mov r3, #0x43
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #0x10
mov r1, #1
bl GX_EngineAToggleLayers
@@ -8624,16 +8624,16 @@ MOD81_0223C1A8: ; 0x0223C1A8
_0223C1B8:
ldr r0, [r4, #0xc]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0xc]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD81_0223C1A8
@@ -8828,13 +8828,13 @@ MOD81_0223C350: ; 0x0223C350
ldr r0, [r4, #4]
mov r1, #2
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r3, [r4, #0x10]
ldr r0, [r4, #4]
mov r1, #6
mov r2, #3
asr r3, r3, #0xc
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #8]
sub r0, r0, #1
str r0, [r4, #8]
@@ -8844,12 +8844,12 @@ _0223C390:
mov r1, #2
mov r2, #3
mov r3, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #4]
mov r1, #6
mov r2, #3
mov r3, #0xc0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
add r0, r5, #0
bl MOD81_0223C3B0
pop {r3, r4, r5, pc}
@@ -9119,10 +9119,10 @@ MOD81_0223C580: ; 0x0223C580
_0223C5AC:
ldr r0, [r4, #0x44]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
add r0, #0x48
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x14]
cmp r0, #0
beq _0223C5C6
@@ -9215,17 +9215,17 @@ MOD81_0223C658: ; 0x0223C658
orr r0, r1
strh r0, [r2]
ldr r0, _0223C810 ; =0x0223D32C
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r4, #0x44]
ldr r2, _0223C814 ; =0x0223D33C
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x44]
ldr r2, _0223C818 ; =0x0223D358
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
add r1, r0, #0
bl GX_EngineAToggleLayers
@@ -9241,7 +9241,7 @@ MOD81_0223C658: ; 0x0223C658
str r2, [sp]
ldr r0, [r4, #0x44]
add r3, r1, #0
- bl FUN_02017F48
+ bl BG_FillCharDataRange
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -9251,7 +9251,7 @@ MOD81_0223C658: ; 0x0223C658
ldr r0, [r4, #0x44]
mov r1, #1
add r3, r2, #0
- bl FUN_02018540
+ bl FillBgTilemapRect
ldr r0, [r4]
bl MOD81_02238844
lsl r0, r0, #0x18
@@ -9277,7 +9277,7 @@ MOD81_0223C658: ; 0x0223C658
ldr r0, [r4, #0x44]
add r1, #0x48
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r4, #0
add r0, #0x48
mov r1, #0xf
@@ -9292,7 +9292,7 @@ MOD81_0223C658: ; 0x0223C658
bl GfGfxLoader_GXLoadPal
ldr r0, [r4, #0x44]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -9653,7 +9653,7 @@ _0223C9D0:
bl AddTextPrinterParameterized
add r0, r4, #0
add r0, #0x48
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
mov r0, #0
str r0, [r4, #8]
ldr r0, [r5]
@@ -10287,7 +10287,7 @@ _0223CEDC:
cmp r1, r0
bge _0223CF62
ldr r0, _0223CF68 ; =0x000005E6
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
ldr r1, [r4, #0x30]
mvn r0, r0
@@ -10580,4 +10580,3 @@ MOD81_0223D448: ; 0x0223D448
.global MOD81_0223D450
MOD81_0223D450: ; 0x0223D450
.space 0x10
-
diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s
index ce3a33bb..01d50253 100644
--- a/arm9/modules/82/asm/module_82.s
+++ b/arm9/modules/82/asm/module_82.s
@@ -641,7 +641,7 @@ _0222DA48:
mov r0, #3
mov r1, #0x44
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222DB58 ; =0x00000EC8
add r0, r6, #0
mov r2, #0x44
@@ -651,7 +651,7 @@ _0222DA48:
add r4, r0, #0
bl memset
mov r0, #0x44
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
ldr r0, _0222DB5C ; =0x0222FC0C
add r2, sp, #0
@@ -663,7 +663,7 @@ _0222DA48:
ldmia r3!, {r0, r1}
stmia r2!, {r0, r1}
add r0, r7, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r0, #0xb
mov r1, #0x20
mov r2, #0x44
@@ -695,7 +695,7 @@ _0222DA48:
str r0, [r4, r1]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
add r1, r6, #0
bl MOD82_0222DD04
@@ -887,7 +887,7 @@ MOD82_0222DC50: ; 0x0222DC50
add r1, r0, #0
bl Main_SetVBlankIntrCB
mov r0, #0x44
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -1503,13 +1503,13 @@ MOD82_0222E15C: ; 0x0222E15C
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0
bl GX_EngineAToggleLayers
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0222E234 ; =0x0222F878
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -1524,7 +1524,7 @@ MOD82_0222E15C: ; 0x0222E15C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0
bl GX_EngineAToggleLayers
@@ -1542,13 +1542,13 @@ MOD82_0222E15C: ; 0x0222E15C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #1
mov r1, #0
bl GX_EngineBToggleLayers
add r0, r4, #0
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _0222E23C ; =0x0222F85C
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -1563,7 +1563,7 @@ MOD82_0222E15C: ; 0x0222E15C
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r0, #2
mov r1, #0
bl GX_EngineBToggleLayers
@@ -1571,12 +1571,12 @@ MOD82_0222E15C: ; 0x0222E15C
mov r1, #0x20
add r2, r0, #0
mov r3, #0x44
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #4
mov r1, #0x20
mov r2, #0
mov r3, #0x44
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
add sp, #0x70
pop {r3, r4, r5, pc}
nop
@@ -1591,16 +1591,16 @@ MOD82_0222E240: ; 0x0222E240
push {r4, lr}
add r4, r0, #0
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD82_0222E240
@@ -1711,10 +1711,10 @@ MOD82_0222E264: ; 0x0222E264
bl GfGfxLoader_LoadScrnData
mov r0, #0
add r1, r0, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
mov r0, #4
mov r1, #0
- bl FUN_02017FE4
+ bl BG_SetMaskColor
add sp, #0x10
pop {r3, r4, r5, pc}
thumb_func_end MOD82_0222E264
@@ -1739,7 +1739,7 @@ MOD82_0222E35C: ; 0x0222E35C
ldr r0, [r4, #4]
add r1, r4, r1
mov r2, #0
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x37
lsl r0, r0, #6
add r0, r4, r0
@@ -1761,7 +1761,7 @@ MOD82_0222E35C: ; 0x0222E35C
add r1, r4, r1
mov r2, #0
mov r3, #0x1a
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xda
lsl r0, r0, #4
add r0, r4, r0
@@ -1783,7 +1783,7 @@ MOD82_0222E35C: ; 0x0222E35C
add r1, r4, r1
mov r2, #0
mov r3, #0x1a
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xd9
lsl r0, r0, #4
add r0, r4, r0
@@ -1805,7 +1805,7 @@ MOD82_0222E35C: ; 0x0222E35C
ldr r0, [r4, #4]
add r1, r4, r1
mov r3, #4
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0xdb
lsl r0, r0, #4
add r0, r4, r0
@@ -1837,7 +1837,7 @@ MOD82_0222E35C: ; 0x0222E35C
add r1, r4, r1
mov r2, #0
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
mov r0, #0x36
lsl r0, r0, #6
add r0, r4, r0
@@ -1857,23 +1857,23 @@ MOD82_0222E474: ; 0x0222E474
mov r0, #0x36
lsl r0, r0, #6
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xdb
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xd9
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0xda
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x37
lsl r0, r0, #6
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
thumb_func_end MOD82_0222E474
@@ -2586,7 +2586,7 @@ _0222E9EC:
mov r3, #3
bl MOD82_0222F694
ldr r0, _0222EAA0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222EA94
_0222EA08:
mov r1, #0x80
@@ -2610,7 +2610,7 @@ _0222EA1C:
mov r3, #3
bl MOD82_0222F694
ldr r0, _0222EAA0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222EA94
_0222EA38:
ldr r2, [r2, #0x48]
@@ -2643,7 +2643,7 @@ _0222EA68:
add r2, r1, #0
bl MOD82_0222F6D8
ldr r0, _0222EAA0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222EA94
_0222EA7C:
mov r1, #2
@@ -2655,7 +2655,7 @@ _0222EA7C:
mov r0, #0x13
str r0, [r4, #0x1c]
ldr r0, _0222EAA0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0222EA94:
mov r0, #3
add sp, #0x1c
@@ -3176,7 +3176,7 @@ _0222EE90:
mov r3, #2
bl MOD82_0222F694
ldr r0, _0222EF20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222EF12
_0222EEAA:
mov r1, #0x80
@@ -3199,7 +3199,7 @@ _0222EEBE:
mov r3, #2
bl MOD82_0222F694
ldr r0, _0222EF20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222EF12
_0222EED8:
ldr r2, [r2, #0x48]
@@ -3214,7 +3214,7 @@ _0222EED8:
mov r2, #0x1e
bl MOD82_0222DF6C
ldr r0, _0222EF20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222EF12
_0222EEFA:
mov r1, #2
@@ -3226,7 +3226,7 @@ _0222EEFA:
mov r0, #0x15
str r0, [r4, #0x1c]
ldr r0, _0222EF20 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0222EF12:
mov r0, #3
pop {r4, pc}
@@ -3325,7 +3325,7 @@ _0222EFBC:
mov r3, #3
bl MOD82_0222F694
ldr r0, _0222F044 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222F03C
_0222EFD8:
mov r1, #0x80
@@ -3349,7 +3349,7 @@ _0222EFEC:
mov r3, #3
bl MOD82_0222F694
ldr r0, _0222F044 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222F03C
_0222F008:
ldr r2, [r2, #0x48]
@@ -3362,7 +3362,7 @@ _0222F008:
mov r0, #0x21
str r0, [r4, #0x1c]
ldr r0, _0222F044 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222F03C
_0222F024:
mov r1, #2
@@ -3374,7 +3374,7 @@ _0222F024:
mov r0, #0x1b
str r0, [r4, #0x1c]
ldr r0, _0222F044 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0222F03C:
mov r0, #3
pop {r4, pc}
@@ -4580,4 +4580,3 @@ MOD82_0222FC03: ; 0x0222FC03
.global MOD82_0222FC0C
MOD82_0222FC0C: ; 0x0222FC0C
.space 0x14
-
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index 09c161b4..d58de0be 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -18,7 +18,7 @@ MOD83_0222D5C4: ; 0x0222D5C4
mov r0, #5
lsl r0, r0, #6
add r0, r5, r0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0222D63C
mov r1, #0x4f
@@ -77,7 +77,7 @@ _0222D63C:
tst r0, r1
beq _0222D662
ldr r0, _0222D678 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #5
lsl r0, r0, #6
add r0, r5, r0
@@ -86,7 +86,7 @@ _0222D63C:
mov r0, #5
lsl r0, r0, #6
add r0, r5, r0
- bl FUN_02019178
+ bl RemoveWindow
_0222D662:
add sp, #0x5c
mov r0, #1
@@ -354,7 +354,7 @@ _0222D832:
bl FUN_0200CB00
ldr r0, [r4]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r1, _0222D99C ; =0x00006B5A
ldr r0, _0222D9A0 ; =0x05000042
strh r1, [r0]
@@ -428,10 +428,10 @@ _0222D8B2:
ldr r3, [r5, #4]
bl MOD83_02238A38
ldr r0, [sp, #0x1c]
- bl FUN_0201AB14
+ bl GetWindowX
add r6, r0, #0
ldr r0, [sp, #0x1c]
- bl FUN_0201AB18
+ bl GetWindowY
add r7, r0, #0
ldr r0, [sp, #0x1c]
bl GetWindowWidth
@@ -446,7 +446,7 @@ _0222D8B2:
mov r1, #1
add r2, r6, #0
add r3, r7, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
mov r0, #1
mov r1, #0
bl GX_EngineAToggleLayers
@@ -485,7 +485,7 @@ _0222D94A:
beq _0222D994
add r1, #0x10
add r0, r4, r1
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #0x45
mov r1, #0x13
lsl r0, r0, #2
@@ -495,7 +495,7 @@ _0222D94A:
ldr r1, [r1, #0x48]
str r1, [r4, r0]
ldr r0, _0222D9BC ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _0222D994
_0222D974:
mov r0, #1
@@ -586,7 +586,7 @@ _0222DA18:
mov r1, #0
mov r2, #3
asr r3, r3, #0xc
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
mov r3, #0x41
lsl r3, r3, #2
ldr r0, [r4]
@@ -597,7 +597,7 @@ _0222DA18:
add r3, r4, r3
mov r2, #3
asr r3, r3, #0xc
- bl FUN_0201AEE4
+ bl ScheduleSetBgPosText
_0222DA48:
pop {r3, r4, r5, pc}
nop
@@ -626,7 +626,7 @@ _0222DA5C:
add r0, sp, #0x18
bl GX_SetBanks
add r0, sp, #8
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0
str r1, [sp]
mov r3, #0xf
@@ -645,7 +645,7 @@ _0222DA5C:
mov r0, #0
mov r1, #0x20
add r2, r0, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #2
lsl r0, r0, #0xe
str r0, [sp]
@@ -665,7 +665,7 @@ _0222DA5C:
strh r2, [r1]
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
mov r0, #0
str r0, [sp]
mov r1, #2
@@ -683,7 +683,7 @@ _0222DA5C:
mov r0, #2
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
bl FUN_0201BD5C
mov r0, #0
mov r1, #0x20
@@ -822,7 +822,7 @@ MOD83_0222DC10: ; 0x0222DC10
mov r1, #2
add r6, r2, #0
add r7, r3, #0
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
ldr r1, _0222DC5C ; =0x00004380
cmp r7, #2
bne _0222DC2A
@@ -849,7 +849,7 @@ _0222DC2A:
strh r1, [r0, r2]
ldr r0, [r5]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
pop {r3, r4, r5, r6, r7, pc}
nop
_0222DC5C: .word 0x00004380
@@ -863,7 +863,7 @@ MOD83_0222DC60: ; 0x0222DC60
add r4, r1, #0
add r6, r2, #0
mov r1, #2
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
lsl r1, r6, #5
add r3, r4, r1
ldr r1, _0222DC9C ; =0x00004384
@@ -882,7 +882,7 @@ MOD83_0222DC60: ; 0x0222DC60
strh r1, [r0, r2]
ldr r0, [r5]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
pop {r4, r5, r6, pc}
nop
_0222DC9C: .word 0x00004384
@@ -1477,11 +1477,11 @@ _0222E104:
beq _0222E188
ldr r0, [sp, #0x2c]
mov r1, #3
- bl FUN_0201AB1C
+ bl MoveWindowX
lsl r1, r5, #0x18
ldr r0, [sp, #0x2c]
lsr r1, r1, #0x18
- bl FUN_0201AB20
+ bl MoveWindowY
ldr r2, [sp, #0x54]
ldr r3, [sp, #0x58]
lsl r2, r2, #0x10
@@ -1583,7 +1583,7 @@ MOD83_0222E1F8: ; 0x0222E1F8
add r5, #0x5c
_0222E206:
add r0, r5, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _0222E294
ldr r0, [sp, #0xc]
@@ -1595,10 +1595,10 @@ _0222E206:
mov r3, #3
bl FUN_0200CCA4
add r0, r5, #0
- bl FUN_0201AB14
+ bl GetWindowX
str r0, [sp, #0x10]
add r0, r5, #0
- bl FUN_0201AB18
+ bl GetWindowY
str r0, [sp, #0x14]
add r0, r5, #0
bl GetWindowWidth
@@ -1613,7 +1613,7 @@ _0222E206:
ldr r2, [sp, #0x10]
ldr r3, [sp, #0x14]
mov r1, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
b _0222E294
_0222E256:
mov r1, #1
@@ -1622,10 +1622,10 @@ _0222E256:
mov r3, #2
bl FUN_0200CCA4
add r0, r5, #0
- bl FUN_0201AB14
+ bl GetWindowX
str r0, [sp, #0x18]
add r0, r5, #0
- bl FUN_0201AB18
+ bl GetWindowY
str r0, [sp, #0x1c]
add r0, r5, #0
bl GetWindowWidth
@@ -1640,7 +1640,7 @@ _0222E256:
ldr r2, [sp, #0x18]
ldr r3, [sp, #0x1c]
mov r1, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
_0222E294:
add r4, r4, #1
add r5, #0x10
@@ -1648,7 +1648,7 @@ _0222E294:
blo _0222E206
ldr r0, [r6]
mov r1, #0
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x20
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD83_0222E1F8
@@ -1682,7 +1682,7 @@ _0222E2C6:
cmp r3, #0
beq _0222E2B8
ldr r0, _0222E2E0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_0222E2DC:
str r4, [r5, #0x54]
pop {r3, r4, r5, r6, r7, pc}
@@ -1699,7 +1699,7 @@ MOD83_0222E2E4: ; 0x0222E2E4
add r1, #0x5c
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_0201AB18
+ bl GetWindowY
sub r0, r0, #1
lsl r4, r0, #3
ldr r0, [r5, #0x54]
@@ -1761,11 +1761,11 @@ MOD83_0222E338: ; 0x0222E338
str r0, [sp, #0xc]
_0222E362:
add r0, r5, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _0222E38E
add r0, r5, #0
- bl FUN_0201AB18
+ bl GetWindowY
sub r0, r0, #1
lsl r4, r0, #3
add r0, r5, #0
@@ -1833,9 +1833,9 @@ _0222E3EC:
cmp r0, #0
beq _0222E3FE
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
_0222E3FE:
add r6, r6, #1
add r4, #0x10
@@ -1844,13 +1844,13 @@ _0222E3FE:
blo _0222E3EC
ldr r0, [r7]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7]
bl FreeToHeap
mov r0, #0
@@ -1895,7 +1895,7 @@ MOD83_0222E464: ; 0x0222E464
bl FUN_0201C30C
bl FUN_02009F80
add r0, r4, #0
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _0222E484 ; =MOD83_027E0000
ldr r1, _0222E488 ; =0x00003FF8
mov r0, #1
@@ -1916,7 +1916,7 @@ MOD83_0222E48C: ; 0x0222E48C
mov r0, #3
mov r1, #0x51
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
mov r1, #0x57
add r0, r5, #0
lsl r1, r1, #2
@@ -1928,7 +1928,7 @@ MOD83_0222E48C: ; 0x0222E48C
add r4, r0, #0
bl memset
mov r0, #0x51
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4]
mov r0, #0
add r1, r0, #0
@@ -2129,7 +2129,7 @@ _0222E656:
tst r0, r1
ldr r0, _0222E7A8 ; =0x000005DC
beq _0222E69A
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x54]
lsl r0, r0, #2
add r0, r4, r0
@@ -2152,7 +2152,7 @@ _0222E692:
bl FUN_02089F24
b _0222E6A8
_0222E69A:
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0
str r0, [r4, #0x58]
mov r0, #1
@@ -2372,7 +2372,7 @@ MOD83_0222E850: ; 0x0222E850
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x51
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0
bl MOD83_02239450
mov r0, #1
@@ -2513,7 +2513,7 @@ _0222E960:
add r0, sp, #0x20
bl GX_SetBanks
add r0, sp, #0x10
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0
str r1, [sp]
mov r3, #0xf
@@ -2618,10 +2618,10 @@ _0222E960:
ldr r0, [r4, #4]
mov r1, #1
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r4, #0
bl MOD83_0222EA88
add sp, #0x48
@@ -2683,10 +2683,10 @@ MOD83_0222EA88: ; 0x0222EA88
ldr r0, [r4, #4]
mov r1, #4
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, [r4, #4]
mov r1, #4
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -2698,7 +2698,7 @@ MOD83_0222EB04: ; 0x0222EB04
sub sp, #0x5c
add r4, r0, #0
add r0, #0x18
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _0222EB4E
mov r0, #1
@@ -2739,7 +2739,7 @@ _0222EB4E:
bl FUN_0200CCF8
add r4, #0x18
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
add sp, #0x5c
mov r0, #0
pop {r3, r4, pc}
@@ -2994,40 +2994,40 @@ MOD83_0222ED88: ; 0x0222ED88
bl MOD83_02238E48
add r0, r4, #0
add r0, #0x18
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #1
bne _0222EDD0
add r0, r4, #0
add r0, #0x18
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x18
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x28
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x28
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x38
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
add r0, #0x38
- bl FUN_02019178
+ bl RemoveWindow
_0222EDD0:
ldr r0, [r4, #4]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
bl FreeToHeap
pop {r4, pc}
@@ -3045,7 +3045,7 @@ MOD83_0222EDF8: ; 0x0222EDF8
add r4, r0, #0
mov r0, #0x55
str r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
add r0, r5, #0
bl OverlayManager_GetField18
@@ -3085,7 +3085,7 @@ MOD83_0222EDF8: ; 0x0222EDF8
mov r2, #3
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0222EE88 ; =0x00000496
mov r0, #9
mov r2, #1
@@ -3312,14 +3312,14 @@ MOD83_0222F048: ; 0x0222F048
push {r4, lr}
add r4, r0, #0
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _0222F06C ; =SDK_OVERLAY_MODULE_63_ID
ldr r1, _0222F070 ; =MOD63_021DBAB8
bl RegisterMainOverlay
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x55
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, pc}
nop
@@ -3703,7 +3703,7 @@ _0222F35E:
mov r1, #0
str r1, [r4, r0]
ldr r0, _0222F5F0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x16
ldr r1, _0222F5E8 ; =0x00000708
lsl r0, r0, #4
@@ -3761,7 +3761,7 @@ _0222F3D6:
mov r3, #0x13
bl MOD83_02238A38
ldr r0, _0222F5F0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0222F5E4 ; =0x000034D8
mov r1, #0
str r1, [r4, r0]
@@ -4040,7 +4040,7 @@ _0222F62E:
ldr r0, [r4, r0]
bl FUN_0200DBFC
ldr r0, _0222F744 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0222F740 ; =0x000034D8
mov r1, #0
str r1, [r4, r0]
@@ -4620,21 +4620,21 @@ _0222FA62:
_0222FA70:
add r0, r7, #0
add r0, #0x18
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r7, #0
add r0, #0x18
- bl FUN_02019178
+ bl RemoveWindow
add r0, r7, #0
add r0, #0x58
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
beq _0222FA9C
add r0, r7, #0
add r0, #0x58
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r7, #0
add r0, #0x58
- bl FUN_02019178
+ bl RemoveWindow
_0222FA9C:
add r5, r7, #0
mov r6, #0
@@ -4645,9 +4645,9 @@ _0222FAA4:
cmp r0, #0
beq _0222FAB6
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
_0222FAB6:
add r6, r6, #1
add r4, #0x10
@@ -4656,16 +4656,16 @@ _0222FAB6:
blt _0222FAA4
ldr r0, [r7]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r7]
bl FreeToHeap
pop {r3, r4, r5, r6, r7, pc}
@@ -4726,7 +4726,7 @@ MOD83_0222FB44: ; 0x0222FB44
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #1
bne _0222FB5A
add r0, r5, #0
@@ -4919,7 +4919,7 @@ _0222FCBE:
cmp r0, #1
bhi _0222FCD4
ldr r0, _0222FCDC ; =0x0000061B
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0222FCE0 ; =0x0000298C
mov r1, #0
str r1, [r4, r0]
@@ -5044,7 +5044,7 @@ _0222FD9C:
ldr r0, [r0]
add r1, r4, #0
mov r3, #0x17
- bl FUN_02019064
+ bl AddWindowParameterized
_0222FDC6:
add r0, r4, #0
mov r1, #1
@@ -5132,7 +5132,7 @@ _0222FE3E:
ldr r0, [r5]
add r1, r4, #0
mov r3, #0x17
- bl FUN_02019064
+ bl AddWindowParameterized
_0222FE76:
add r0, r4, #0
mov r1, #1
@@ -5186,7 +5186,7 @@ MOD83_0222FEA0: ; 0x0222FEA0
ldr r0, [r4]
add r1, r5, #0
mov r3, #0x17
- bl FUN_02019064
+ bl AddWindowParameterized
_0222FEE6:
add r0, r5, #0
mov r1, #1
@@ -5241,7 +5241,7 @@ MOD83_0222FF10: ; 0x0222FF10
ldr r0, [r4]
add r1, r5, #0
mov r3, #0x17
- bl FUN_02019064
+ bl AddWindowParameterized
_0222FF56:
add r0, r5, #0
mov r1, #1
@@ -5288,7 +5288,7 @@ MOD83_0222FF80: ; 0x0222FF80
ldr r0, [r0]
add r1, r4, #0
mov r3, #0x17
- bl FUN_02019064
+ bl AddWindowParameterized
_0222FFB4:
add r0, r4, #0
mov r1, #1
@@ -5512,7 +5512,7 @@ _0223013E:
ldr r0, [r5]
add r1, r4, #0
mov r3, #0xf
- bl FUN_02019064
+ bl AddWindowParameterized
_02230172:
add r0, r4, #0
mov r1, #1
@@ -5620,11 +5620,11 @@ MOD83_0223020C: ; 0x0223020C
lsr r1, r1, #0x18
mov r2, ip
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
lsl r1, r4, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -5644,7 +5644,7 @@ MOD83_02230258: ; 0x02230258
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
mov r1, #0
mov r2, #0xf
add r0, r4, #0
@@ -5728,10 +5728,10 @@ MOD83_022302B4: ; 0x022302B4
add r0, r4, #0
mov r1, #5
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r4, #0
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -5788,10 +5788,10 @@ MOD83_02230330: ; 0x02230330
add r0, r4, #0
mov r1, #1
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r4, #0
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r4, #0
bl MOD83_022302B4
add sp, #0x10
@@ -5951,7 +5951,7 @@ _022304A8:
ldr r0, [r7]
add r1, r4, #0
mov r3, #8
- bl FUN_02019064
+ bl AddWindowParameterized
_022304E6:
add r0, r4, #0
mov r1, #1
@@ -6104,7 +6104,7 @@ MOD83_02230604: ; 0x02230604
b _02230642
_02230628:
ldr r0, _02230660 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
cmp r6, #0
beq _0223065E
add r0, r7, #0
@@ -6117,7 +6117,7 @@ _02230628:
pop {r3, r4, r5, r6, r7, pc}
_02230642:
ldr r0, _02230660 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
cmp r4, #0
beq _0223065E
ldr r0, _02230664 ; =MOD83_0223B888
@@ -6178,7 +6178,7 @@ MOD83_02230668: ; 0x02230668
strh r1, [r0]
add r0, r4, #0
add r0, #0x18
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _022306EC
mov r0, #0x13
@@ -6195,7 +6195,7 @@ MOD83_02230668: ; 0x02230668
ldr r0, [r4]
add r1, #0x18
mov r3, #2
- bl FUN_02019064
+ bl AddWindowParameterized
_022306EC:
add r1, r4, #0
add r0, r5, #0
@@ -6267,15 +6267,15 @@ _02230768:
_02230776:
ldr r0, _022307AC ; =0x00002624
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, _022307AC ; =0x00002624
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4]
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r0, _022307B0 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r6, #0
mov r1, #0xc4
mov r2, #0
@@ -6309,7 +6309,7 @@ _022307C8:
bl GX_EngineAToggleLayers
ldr r0, [r5]
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0x56
bl ScrStrBufs_new
mov r1, #2
@@ -6505,7 +6505,7 @@ MOD83_02230954: ; 0x02230954
mov r0, #3
mov r1, #0x56
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022309FC ; =0x00002998
add r0, r5, #0
mov r2, #0x56
@@ -6515,7 +6515,7 @@ MOD83_02230954: ; 0x02230954
add r4, r0, #0
bl memset
mov r0, #0x56
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4]
bl GX_DisableEngineALayers
bl GX_DisableEngineBLayers
@@ -6561,7 +6561,7 @@ _022309D0:
mov r0, #0
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #1
pop {r3, r4, r5, pc}
nop
@@ -6737,7 +6737,7 @@ _02230B28:
_02230B6C:
add r0, r4, #0
add r0, #0x58
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _02230B9A
mov r0, #2
@@ -6755,7 +6755,7 @@ _02230B6C:
ldr r0, [r4]
add r1, #0x58
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
_02230B9A:
bl MOD83_02239DA0
add r1, r4, #0
@@ -6823,7 +6823,7 @@ _02230C16:
mvn r1, r1
bl MOD83_0222FB0C
ldr r0, _02230D78 ; =0x00000624
- bl FUN_020054C8
+ bl PlaySE
add r1, r4, #0
add r0, r6, #0
add r1, #0x18
@@ -6895,7 +6895,7 @@ _02230CA0:
str r0, [r1]
add r0, r4, #0
add r0, #0x58
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _02230CFA
mov r0, #2
@@ -6913,7 +6913,7 @@ _02230CA0:
ldr r0, [r4]
add r1, #0x58
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
_02230CFA:
add r1, r4, #0
add r2, r4, #0
@@ -7246,7 +7246,7 @@ _02230FCE:
bl MOD83_0222F9DC
bl FUN_02033ED0
ldr r0, _02231130 ; =0x00000624
- bl FUN_020054C8
+ bl PlaySE
mov r1, #0
add r0, r4, #0
mvn r1, r1
@@ -7261,7 +7261,7 @@ _02230FCE:
b _02231334
_0223100E:
ldr r0, _02231134 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r1, r4, #0
add r0, r6, #0
add r1, #0x18
@@ -7279,7 +7279,7 @@ _02231030:
mov r1, #0
bl MOD83_0222FA0C
ldr r0, _02231134 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r1, r4, #0
add r0, r6, #0
add r1, #0x18
@@ -7301,7 +7301,7 @@ _02231062:
b _02231334
_02231064:
ldr r0, _02231134 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r6, #0
mov r1, #0xc4
mov r2, #0
@@ -7342,7 +7342,7 @@ _02231090:
_022310B8:
add r0, r4, #0
add r0, #0x58
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #0
bne _022310E6
mov r0, #2
@@ -7360,7 +7360,7 @@ _022310B8:
ldr r0, [r4]
add r1, #0x58
mov r3, #3
- bl FUN_02019064
+ bl AddWindowParameterized
_022310E6:
add r1, r4, #0
add r2, r4, #0
@@ -7453,7 +7453,7 @@ _02231198:
mvn r1, r1
bl MOD83_0222FB0C
ldr r0, _02231350 ; =0x00000624
- bl FUN_020054C8
+ bl PlaySE
add r1, r4, #0
add r0, r6, #0
add r1, #0x18
@@ -7576,7 +7576,7 @@ _022312AA:
cmp r0, #0
beq _02231334
ldr r0, _02231358 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
add r0, #0xda
ldrb r0, [r0]
@@ -7695,11 +7695,11 @@ _0223139A:
bl RegisterMainOverlay
_022313A6:
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x56
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, _022313E0 ; =0x000015D4
ldr r0, [r4, r0]
cmp r0, #2
@@ -8105,7 +8105,7 @@ MOD83_022316C0: ; 0x022316C0
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #1
bne _022316D6
add r0, r5, #0
@@ -8120,7 +8120,7 @@ MOD83_022316D8: ; 0x022316D8
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
- bl FUN_02019048
+ bl WindowIsInUse
cmp r0, #1
bne _022316EE
add r0, r5, #0
@@ -8332,10 +8332,10 @@ MOD83_02231820: ; 0x02231820
add r0, r4, #0
mov r1, #1
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r4, #0
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -8520,11 +8520,11 @@ MOD83_02231A00: ; 0x02231A00
mov r0, #0xae
lsl r0, r0, #6
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0xae
lsl r0, r0, #6
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
pop {r4, pc}
.align 2, 0
_02231A40: .word 0x00002B6C
@@ -8865,9 +8865,9 @@ _02231CC2:
str r2, [r3, #4]
ldr r6, [r5, r0]
add r0, r7, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r7, #0
- bl FUN_02019178
+ bl RemoveWindow
add r1, r4, #1
mov r0, #4
sub r0, r0, r1
@@ -8900,7 +8900,7 @@ _02231CC2:
ldr r0, [r5, r0]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
add r0, r5, #0
add r1, sp, #0x14
add r2, r4, #1
@@ -9056,9 +9056,9 @@ _02231E2E:
cmp r0, #0
beq _02231E50
add r0, r6, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r6, #0
- bl FUN_02019178
+ bl RemoveWindow
_02231E50:
ldr r0, [sp, #0x1c]
add r7, #0x30
@@ -9114,7 +9114,7 @@ _02231E72:
ldr r0, [r5, r0]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
_02231EBE:
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x1c]
@@ -9243,7 +9243,7 @@ MOD83_02231F88: ; 0x02231F88
ldr r0, [r5, r0]
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
_02231FD2:
ldr r1, [r4, #0x1c]
add r0, r6, #0
@@ -9393,7 +9393,7 @@ MOD83_022320D8: ; 0x022320D8
lsr r1, r1, #0x18
add r2, #0xc
add r3, r6, #0
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
add r0, r7, #0
bl FreeToHeap
add sp, #8
@@ -9509,11 +9509,11 @@ _0223219C:
ldr r0, [r5, r0]
mov r1, #3
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, _02232204 ; =0x0000299C
mov r1, #3
ldr r0, [r5, r0]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -9541,7 +9541,7 @@ MOD83_02232208: ; 0x02232208
b _02232248
_0223222E:
ldr r0, _02232274 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
cmp r6, #0
beq _0223226C
add r0, r7, #0
@@ -9554,7 +9554,7 @@ _0223222E:
pop {r3, r4, r5, r6, r7, pc}
_02232248:
ldr r0, _02232274 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
cmp r4, #0
beq _0223226C
cmp r4, #0x1e
@@ -9726,7 +9726,7 @@ MOD83_022323A8: ; 0x022323A8
mov r0, #3
mov r1, #0x57
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _0223240C ; =0x00003CF4
add r0, r4, #0
mov r2, #0x57
@@ -9736,7 +9736,7 @@ MOD83_022323A8: ; 0x022323A8
add r4, r0, #0
bl memset
mov r0, #0x57
- bl FUN_02016B94
+ bl BgConfig_Alloc
ldr r1, _02232410 ; =0x0000299C
str r0, [r4, r1]
mov r0, #0x57
@@ -9759,7 +9759,7 @@ MOD83_022323A8: ; 0x022323A8
mov r0, #0
mov r1, #0x5b
lsl r2, r2, #8
- bl FUN_0201681C
+ bl CreateHeap
mov r0, #1
pop {r4, pc}
.align 2, 0
@@ -10018,7 +10018,7 @@ MOD83_022325EC: ; 0x022325EC
cmp r0, #1
bhi _02232606
ldr r0, _02232608 ; =0x0000061B
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _0223260C ; =0x00003CE8
mov r1, #0
str r1, [r4, r0]
@@ -10172,7 +10172,7 @@ _0223270E:
cmp r4, #1
bne _02232746
ldr r0, _02232778 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xab
bl FUN_02031588
mov r3, #0xa
@@ -10197,7 +10197,7 @@ _02232746:
cmp r4, #2
bne _0223275A
ldr r0, _02232778 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r5, #0
add r1, r7, #0
mov r2, #0x13
@@ -10206,7 +10206,7 @@ _0223275A:
cmp r4, #3
bne _02232764
ldr r0, _02232778 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
_02232764:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -10406,7 +10406,7 @@ _0223290A:
tst r0, r1
beq _02232924
ldr r0, _02232B78 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
mov r1, #0
mov r2, #0x1c
@@ -10418,7 +10418,7 @@ _02232924:
tst r0, r1
beq _02232934
ldr r0, _02232B78 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #4
str r0, [r5]
_02232934:
@@ -10430,7 +10430,7 @@ _02232934:
_0223293E:
mov r0, #6
lsl r0, r0, #8
- bl FUN_020054C8
+ bl PlaySE
ldr r0, _02232B6C ; =0x00002B60
mov r1, #1
str r6, [r4, r0]
@@ -10468,14 +10468,14 @@ _0223297E:
tst r0, r1
beq _02232A54
ldr r0, _02232B78 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0xb
str r0, [r5]
b _02232CF4
_0223299E:
mov r0, #6
lsl r0, r0, #8
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x10
mov r1, #0
bl GX_EngineAToggleLayers
@@ -10520,7 +10520,7 @@ _022329FA:
tst r1, r0
beq _02232A54
lsl r0, r0, #9
- bl FUN_020054C8
+ bl PlaySE
mov r1, #1
add r0, r4, #0
lsl r2, r1, #0xc
@@ -10584,10 +10584,10 @@ _02232A88:
bl MOD83_022316D8
ldr r0, _02232B7C ; =0x00002B70
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, _02232B7C ; =0x00002B70
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
mov r0, #3
str r0, [r5]
b _02232CF4
@@ -10626,10 +10626,10 @@ _02232AE2:
bl MOD83_022316D8
ldr r0, _02232B7C ; =0x00002B70
add r0, r4, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, _02232B7C ; =0x00002B70
add r0, r4, r0
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
mov r1, #0
mov r2, #3
@@ -11312,9 +11312,9 @@ _022330B6:
cmp r0, #0
beq _022330CA
add r0, r5, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r5, #0
- bl FUN_02019178
+ bl RemoveWindow
_022330CA:
add r6, r6, #1
add r4, #0x10
@@ -11326,10 +11326,10 @@ _022330CA:
cmp r1, #0
beq _022330EA
add r0, r7, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
ldr r0, _02233158 ; =0x00002B70
add r0, r7, r0
- bl FUN_02019178
+ bl RemoveWindow
_022330EA:
mov r0, #0xae
lsl r0, r0, #6
@@ -11337,28 +11337,28 @@ _022330EA:
cmp r1, #0
beq _02233104
add r0, r7, r0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
mov r0, #0xae
lsl r0, r0, #6
add r0, r7, r0
- bl FUN_02019178
+ bl RemoveWindow
_02233104:
ldr r0, _0223315C ; =0x0000299C
mov r1, #0
ldr r0, [r7, r0]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _0223315C ; =0x0000299C
mov r1, #1
ldr r0, [r7, r0]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _0223315C ; =0x0000299C
mov r1, #2
ldr r0, [r7, r0]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _0223315C ; =0x0000299C
mov r1, #3
ldr r0, [r7, r0]
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, _0223315C ; =0x0000299C
ldr r0, [r7, r0]
bl FreeToHeap
@@ -11366,11 +11366,11 @@ _02233104:
ldr r1, _02233164 ; =MOD83_0223A434
bl RegisterMainOverlay
mov r0, #0x5b
- bl FUN_020168D0
+ bl DestroyHeap
ldr r0, [sp]
bl OverlayManager_FreeData
mov r0, #0x57
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -11453,7 +11453,7 @@ MOD83_022331E0: ; 0x022331E0
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _022332A4 ; =MOD83_0223A480
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -11468,10 +11468,10 @@ MOD83_022331E0: ; 0x022331E0
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _022332A8 ; =MOD83_0223A4B8
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -11486,10 +11486,10 @@ MOD83_022331E0: ; 0x022331E0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _022332AC ; =MOD83_0223A49C
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -11504,10 +11504,10 @@ MOD83_022331E0: ; 0x022331E0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _022332B0 ; =MOD83_0223A464
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -11522,10 +11522,10 @@ MOD83_022331E0: ; 0x022331E0
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x80
pop {r3, r4, r5, pc}
nop
@@ -15353,11 +15353,11 @@ MOD83_02234E40: ; 0x02234E40
add r0, r4, #0
bl FUN_0202BF90
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
ldr r0, [r5, #0x10]
bl FUN_02022720
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
pop {r3, r4, r5, pc}
thumb_func_end MOD83_02234E40
@@ -15502,7 +15502,7 @@ _02234F3C:
ldr r0, [r0, #0x20]
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
_02234F7A:
mov r0, #2
tst r0, r4
@@ -17117,7 +17117,7 @@ MOD83_02235BF4: ; 0x02235BF4
ldr r0, [r5, #0x20]
add r6, r1, #0
mov r1, #2
- bl FUN_0201886C
+ bl GetBgTilemapBuffer
add r4, r0, #0
cmp r6, #0
beq _02235C18
@@ -17155,7 +17155,7 @@ _02235C2E:
blt _02235C1E
ldr r0, [r5, #0x20]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end MOD83_02235BF4
@@ -17427,7 +17427,7 @@ MOD83_02235E68: ; 0x02235E68
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _02235F2C ; =MOD83_0223A52C
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -17442,10 +17442,10 @@ MOD83_02235E68: ; 0x02235E68
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02235F30 ; =MOD83_0223A548
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -17460,10 +17460,10 @@ MOD83_02235E68: ; 0x02235E68
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02235F34 ; =MOD83_0223A564
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -17478,10 +17478,10 @@ MOD83_02235E68: ; 0x02235E68
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _02235F38 ; =MOD83_0223A580
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -17496,10 +17496,10 @@ MOD83_02235E68: ; 0x02235E68
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x80
pop {r3, r4, r5, pc}
nop
@@ -17601,10 +17601,10 @@ MOD83_02235FBC: ; 0x02235FBC
mov r1, #2
str r0, [sp, #8]
ldr r0, [r4, #0x20]
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, [r4, #0x20]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -17859,10 +17859,10 @@ _02236148:
mov r1, #2
str r0, [sp, #8]
ldr r0, [r6, #0x20]
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, [r6, #0x20]
mov r1, #2
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #2
mov r1, #0
bl GX_EngineAToggleLayers
@@ -17921,9 +17921,9 @@ MOD83_02236298: ; 0x02236298
mov r1, #0
bl FUN_0200D0E0
add r0, r4, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r4, #0
- bl FUN_02019178
+ bl RemoveWindow
_022362B4:
pop {r4, pc}
.align 2, 0
@@ -18097,16 +18097,16 @@ _022363E2:
bl GX_SwapDisplay
ldr r0, [r6, #0x20]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r6, #0x20]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r6, #0x20]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r6, #0x20]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r3, r4, r5, r6, r7, pc}
nop
_0223643C: .word 0x00000478
@@ -18219,7 +18219,7 @@ _02236520:
bl FUN_0201C30C
bl FUN_02009F80
ldr r0, [r4, #0x20]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
ldr r3, _02236540 ; =MOD83_027E0000
ldr r1, _02236544 ; =0x00003FF8
mov r0, #1
@@ -18459,7 +18459,7 @@ MOD83_022366D0: ; 0x022366D0
mvn r0, r0
str r0, [r5, #8]
ldr r0, _02236754 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02236750
_02236712:
cmp r4, #0
@@ -18488,7 +18488,7 @@ _02236740:
mov r0, #0
bl FUN_02002BB8
ldr r0, _02236754 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r3, r4, r5, pc}
_02236750:
@@ -18509,7 +18509,7 @@ MOD83_02236764: ; 0x02236764
mov r0, #3
mov r1, #0x4e
lsl r2, r2, #0xe
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _022367F0 ; =0x00012608
add r0, r5, #0
mov r2, #0x4e
@@ -18519,7 +18519,7 @@ MOD83_02236764: ; 0x02236764
add r4, r0, #0
bl memset
mov r0, #0x4e
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #0x20]
mov r0, #0x4e
bl FUN_02014590
@@ -19023,7 +19023,7 @@ _02236BAC:
add r0, r4, #0
bl MOD83_022354F0
ldr r0, _02236DA4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02236D90
_02236BBC:
ldr r0, _02236DA0 ; =0x0000E884
@@ -19039,7 +19039,7 @@ _02236BCE:
add r0, r4, #0
bl MOD83_022354F0
ldr r0, _02236DA4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02236D90
_02236BDC:
add r0, r4, #0
@@ -19048,7 +19048,7 @@ _02236BDC:
add r3, r5, #0
bl MOD83_02235E34
ldr r0, _02236DA4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02236D90
_02236BF0:
add r0, r4, #0
@@ -19127,7 +19127,7 @@ _02236C76:
add r0, r4, #0
bl MOD83_02236450
ldr r0, _02236DA4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
mov r0, #0x13
str r0, [r5]
b _02236D90
@@ -19168,7 +19168,7 @@ _02236CAE:
mov r0, #0x15
str r0, [r5]
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
b _02236D90
_02236CF0:
ldr r0, _02236DB0 ; =0x0000E88C
@@ -19196,7 +19196,7 @@ _02236D12:
ldr r0, [r4, r0]
bl FUN_0200DBFC
ldr r0, _02236DC0 ; =0x0000061B
- bl FUN_020054C8
+ bl PlaySE
cmp r6, #0xb
bne _02236D34
.ifdef DIAMOND
@@ -19219,7 +19219,7 @@ _02236D36:
mov r0, #0x16
str r0, [r5]
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
b _02236D90
_02236D54:
ldr r0, _02236DC8 ; =gMain + 0x40
@@ -19237,7 +19237,7 @@ _02236D64:
add r3, r5, #0
bl MOD83_02235E34
ldr r0, _02236DA4 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
b _02236D90
_02236D78:
bl FUN_0200E308
@@ -19287,7 +19287,7 @@ MOD83_02236DD0: ; 0x02236DD0
add r0, r4, #0
bl OverlayManager_FreeData
mov r0, #0x4e
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #0
bl MOD83_02239450
mov r0, #1
@@ -22827,7 +22827,7 @@ MOD83_022387A0: ; 0x022387A0
add r6, r1, #0
mov r0, #3
add r2, r3, #0
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
@@ -22910,11 +22910,11 @@ _02238832:
add r0, r7, #0
lsr r1, r1, #0x18
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
lsl r1, r4, #0x18
add r0, r7, #0
lsr r1, r1, #0x18
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
@@ -23214,7 +23214,7 @@ MOD83_02238A38: ; 0x02238A38
ldr r2, [r4, #0x2c]
lsl r2, r2, #0x18
lsr r2, r2, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r1, [sp, #0x28]
add r0, r4, #0
bl MOD83_0223894C
@@ -23228,7 +23228,7 @@ _02238A8A:
add r0, r1, #0
lsl r1, r6, #0x18
lsr r1, r1, #0x18
- bl FUN_0201AB1C
+ bl MoveWindowX
_02238A9C:
mov r0, #0
mvn r0, r0
@@ -23237,7 +23237,7 @@ _02238A9C:
lsl r1, r5, #0x18
ldr r0, [r4, #0x10]
lsr r1, r1, #0x18
- bl FUN_0201AB20
+ bl MoveWindowY
_02238AAE:
ldr r1, [sp, #0x28]
add r0, r4, #0
@@ -24230,7 +24230,7 @@ MOD83_022391EC: ; 0x022391EC
mov r1, #5
add r2, #0xc
lsl r3, r3, #8
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
ldr r0, [sp, #0x10]
bl FreeToHeap
mov r0, #0x20
@@ -24245,10 +24245,10 @@ MOD83_022391EC: ; 0x022391EC
add r0, r5, #0
mov r1, #5
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
add r0, r5, #0
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
ldr r1, _022392E0 ; =MOD83_022391CC
ldr r0, _022392E4 ; =MOD83_0223CAB0
cmp r4, #0xb
@@ -24459,7 +24459,7 @@ MOD83_02239414: ; 0x02239414
pop {r3, pc}
_0223941E:
ldr r0, _02239428 ; =0x000005DC
- bl FUN_020054C8
+ bl PlaySE
pop {r3, pc}
nop
_02239428: .word 0x000005DC
@@ -24577,7 +24577,7 @@ _022394E4: ; jump table
.short _02239538 - _022394E4 - 2 ; case 4
_022394EE:
mov r0, #4
- bl FUN_020166A8
+ bl SetSoftResetDisableMask
ldr r0, [r4, #0x14]
mov r1, #2
bl FUN_02022840
@@ -24610,7 +24610,7 @@ _02239528:
cmp r0, #1
bhi _02239534
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
_02239534:
add r0, r5, #0
pop {r3, r4, r5, pc}
@@ -24645,7 +24645,7 @@ MOD83_0223955C: ; 0x0223955C
ldr r0, [r0, #0x14]
bl FUN_0202287C
mov r0, #4
- bl FUN_020166B8
+ bl ClearSoftResetDisableMask
pop {r3, pc}
nop
_02239570: .word MOD83_0223BC30
@@ -27529,4 +27529,3 @@ MOD83_0223CADC: ; 0x0223CADC
.global MOD83_0223CAEC
MOD83_0223CAEC: ; 0x0223CAEC
.space 0x6F4
-
diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s
index a5838988..ea18857a 100644
--- a/arm9/modules/84/asm/module_84_thumb1.s
+++ b/arm9/modules/84/asm/module_84_thumb1.s
@@ -25,7 +25,7 @@ _021D74FC:
mov r0, #3
mov r1, #0x4b
lsl r2, r0, #0x10
- bl FUN_0201681C
+ bl CreateHeap
ldr r1, _021D7670 ; =0x00001244
add r0, r6, #0
mov r2, #0x4b
@@ -269,7 +269,7 @@ _021D772E:
add r0, r6, #0
bl OverlayManager_FreeData
mov r0, #0x4b
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
_021D773E:
@@ -562,7 +562,7 @@ MOD84_021D7968: ; 0x021D7968
sub sp, #0xc
add r4, r0, #0
mov r0, #0x4b
- bl FUN_02016B94
+ bl BgConfig_Alloc
str r0, [r4, #4]
ldr r0, _021D7A60 ; =0x021DA68C
bl GX_SetBanks
@@ -576,17 +576,17 @@ MOD84_021D7968: ; 0x021D7968
add r2, r0, #0
bl GX_SetGraphicsMode
ldr r0, _021D7A6C ; =0x021DA650
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r0, [r4, #4]
ldr r2, _021D7A70 ; =0x021DA670
mov r1, #1
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _021D7A70 ; =0x021DA670
mov r1, #5
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
mov r2, #0
str r2, [sp]
mov r0, #0x20
@@ -692,10 +692,10 @@ MOD84_021D7A84: ; 0x021D7A84
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
bl FreeToHeap
pop {r4, pc}
@@ -934,7 +934,7 @@ MOD84_021D7BC8: ; 0x021D7BC8
add r0, #0x6c
mov r1, #0x4b
mov r2, #0x20
- bl FUN_02016B20
+ bl GF_ExpHeap_FndInitAllocator
ldr r0, [r4, #4]
mov r1, #0
bl NNS_G3dGetAnmByIdx
diff --git a/arm9/modules/84/asm/module_84_thumb2.s b/arm9/modules/84/asm/module_84_thumb2.s
index 17f9316e..d97e5a59 100644
--- a/arm9/modules/84/asm/module_84_thumb2.s
+++ b/arm9/modules/84/asm/module_84_thumb2.s
@@ -32,12 +32,12 @@ _021D817A:
mov r1, #2
lsl r0, r0, #24
lsr r0, r0, #24
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r5, #20]
mov r1, #3
lsl r0, r0, #24
lsr r0, r0, #24
- bl FUN_020178BC
+ bl SetBgPriority
ldr r0, [r5, #16]
add r0, r0, #1
str r0, [r5, #16]
@@ -574,12 +574,12 @@ MOD84_021D84F8: ; 0x021D84F8
ldr r1, [r4, #0x24]
add r0, r6, #0
lsr r2, r2, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, [r4, #0x24]
mov r1, #0
bl FillWindowPixelBuffer
ldr r0, [r4, #0x24]
- bl FUN_02019270
+ bl PutWindowTilemap
ldr r0, [r4, #0x24]
bl CopyWindowToVram
mov r0, #0x4b
@@ -600,7 +600,7 @@ MOD84_021D84F8: ; 0x021D84F8
ldr r1, [r4, #0x28]
add r0, r6, #0
lsr r2, r2, #0x18
- bl FUN_02019064
+ bl AddWindowParameterized
ldr r0, _021D85B4 ; =MOD84_021D8784
add r1, r4, #0
mov r2, #0
@@ -626,9 +626,9 @@ _021D85C6:
ldr r0, [r4, #0x30]
bl String_dtor
ldr r0, [r4, #0x24]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x28]
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x24]
bl FreeToHeap
ldr r0, [r4, #0x28]
@@ -850,7 +850,7 @@ MOD84_021D8784: ; 0x021D8784
cmp r0, #0
beq _021D8798
ldr r0, [r4, #0x24]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
mov r0, #0
str r0, [r4, #0x18]
_021D8798:
@@ -862,7 +862,7 @@ _021D8798:
lsr r1, r1, #0x18
mov r2, #3
lsr r3, r3, #0x18
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r4, pc}
.align 2, 0
thumb_func_end MOD84_021D8784
@@ -913,7 +913,7 @@ _021D87D0:
ldr r2, [r5, #0x30]
bl AddTextPrinterParameterized3
ldr r0, [r5, #0x24]
- bl FUN_02019548
+ bl CopyWindowPixelsToVram_TextMode
add sp, #0x18
pop {r3, r4, r5, pc}
.align 2, 0
@@ -1041,12 +1041,12 @@ MOD84_021D88DC: ; 0x021D88DC
mov r1, #2
mov r2, #0
add r3, r6, r7
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r5, #4]
mov r1, #6
mov r2, #0
add r3, r6, r7
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4]
cmp r0, #0
beq _021D8914
@@ -1115,12 +1115,12 @@ _021D897C:
ldr r2, _021D8A6C ; =0x021DAC70
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
ldr r2, _021D8A6C ; =0x021DAC70
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1238,10 +1238,10 @@ MOD84_021D8A74: ; 0x021D8A74
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD84_021D8A74
@@ -1399,12 +1399,12 @@ _021D8B92:
ldr r2, _021D8C38 ; =0x021DAC8C
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
ldr r2, _021D8C38 ; =0x021DAC8C
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -1486,10 +1486,10 @@ MOD84_021D8C3C: ; 0x021D8C3C
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD84_021D8C3C
@@ -1739,12 +1739,12 @@ _021D8E26:
ldr r2, _021D903C ; =0x021DACB8
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _021D903C ; =0x021DACB8
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [sp, #0x14]
ldr r0, [r0]
add r1, r0, #1
@@ -2052,10 +2052,10 @@ _021D90A2:
_021D90AC:
ldr r0, [r6, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r6, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [sp]
bl OS_RestoreInterrupts
pop {r3, r4, r5, r6, r7, pc}
@@ -2558,12 +2558,12 @@ _021D949A:
ldr r2, _021D9540 ; =0x021DACD4
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
ldr r2, _021D9540 ; =0x021DACD4
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -2645,10 +2645,10 @@ MOD84_021D9544: ; 0x021D9544
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD84_021D9544
@@ -2730,22 +2730,22 @@ MOD84_021D95CC: ; 0x021D95CC
mov r1, #2
mov r2, #0
add r3, r6, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #4]
mov r1, #6
mov r2, #0
add r3, r6, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #4]
mov r1, #3
mov r2, #0
add r3, r6, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #4]
mov r1, #7
mov r2, #0
add r3, r6, #0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
ldr r0, [r4, #0x50]
cmp r0, #0
beq _021D9632
@@ -3018,22 +3018,22 @@ _021D9832:
ldr r2, _021D99FC ; =0x021DACF0
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _021D9A00 ; =0x021DAD0C
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _021D99FC ; =0x021DACF0
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _021D9A00 ; =0x021DAD0C
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -3264,16 +3264,16 @@ _021D9A26:
_021D9A30:
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD84_021D9A04
@@ -3431,12 +3431,12 @@ _021D9B5A:
ldr r2, _021D9C00 ; =0x021DAD28
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5, #4]
ldr r2, _021D9C00 ; =0x021DAD28
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -3518,10 +3518,10 @@ MOD84_021D9C04: ; 0x021D9C04
add r4, r0, #0
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
.align 2, 0
thumb_func_end MOD84_021D9C04
@@ -4105,22 +4105,22 @@ _021DA0AA:
ldr r2, _021DA30C ; =0x021DAD68
mov r1, #2
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _021DA310 ; =0x021DAD4C
mov r1, #3
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _021DA30C ; =0x021DAD68
mov r1, #6
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #4]
ldr r2, _021DA310 ; =0x021DAD4C
mov r1, #7
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r5]
add r0, r0, #1
str r0, [r5]
@@ -4437,16 +4437,16 @@ _021DA35C:
_021DA366:
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #6
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
pop {r4, pc}
thumb_func_end MOD84_021DA31C
diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s
index 221d2f9d..042746c2 100644
--- a/arm9/modules/85/asm/module_85.s
+++ b/arm9/modules/85/asm/module_85.s
@@ -18,7 +18,7 @@ MOD85_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x4f
lsl r2, r2, #0x12
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #8
mov r2, #0x4f
@@ -193,7 +193,7 @@ MOD85_021D7644: ; 0x021D7644
add r0, r5, #0
bl OverlayManager_FreeData
mov r0, #0x4f
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
@@ -263,7 +263,7 @@ MOD85_021D76FC: ; 0x021D76FC
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
mov r0, #0x4f
- bl FUN_02016B94
+ bl BgConfig_Alloc
ldr r1, _021D77CC ; =0x0000043C
str r0, [r4, r1]
bl MOD85_021D77F8
@@ -408,7 +408,7 @@ MOD85_021D7818: ; 0x021D7818
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D78F4 ; =0x021DED28
add r3, sp, #0x54
ldmia r5!, {r0, r1}
@@ -423,15 +423,15 @@ MOD85_021D7818: ; 0x021D7818
str r0, [r3]
add r0, r4, #0
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
mov r1, #0x20
add r2, r0, #0
mov r3, #0x4f
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r5, _021D78F8 ; =0x021DED44
add r3, sp, #0x38
ldmia r5!, {r0, r1}
@@ -446,10 +446,10 @@ MOD85_021D7818: ; 0x021D7818
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D78FC ; =0x021DED60
add r3, sp, #0x1c
ldmia r5!, {r0, r1}
@@ -464,10 +464,10 @@ MOD85_021D7818: ; 0x021D7818
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #2
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
ldr r5, _021D7900 ; =0x021DED0C
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -482,10 +482,10 @@ MOD85_021D7818: ; 0x021D7818
str r0, [r3]
add r0, r4, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
add r0, r4, #0
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
add sp, #0x80
pop {r3, r4, r5, pc}
.align 2, 0
@@ -502,16 +502,16 @@ MOD85_021D7904: ; 0x021D7904
push {r4, lr}
add r4, r0, #0
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #2
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
add r0, r4, #0
bl FreeToHeap
pop {r4, pc}
@@ -578,7 +578,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r1, [r1, #0xc]
lsl r2, r2, #4
mov r3, #0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
add r0, r5, #0
bl FreeToHeap
mov r1, #0
@@ -598,7 +598,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r0, [r4, r0]
ldr r3, [r3, #0x10]
mov r1, #1
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r5, #0
bl FreeToHeap
add r0, r4, #0
@@ -619,11 +619,11 @@ MOD85_021D797C: ; 0x021D797C
ldr r3, [r3, #8]
mov r1, #1
add r2, #0xc
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
ldr r0, _021D7B24 ; =0x0000043C
mov r1, #1
ldr r0, [r4, r0]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl FreeToHeap
add r0, r4, #0
@@ -643,7 +643,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r0, [r4, r0]
ldr r3, [r3, #0x10]
mov r1, #2
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r5, #0
bl FreeToHeap
add r0, r4, #0
@@ -664,11 +664,11 @@ MOD85_021D797C: ; 0x021D797C
ldr r3, [r3, #8]
mov r1, #2
add r2, #0xc
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
ldr r0, _021D7B24 ; =0x0000043C
mov r1, #2
ldr r0, [r4, r0]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl FreeToHeap
add r0, r4, #0
@@ -686,7 +686,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r1, [r1, #0xc]
lsl r2, r2, #4
mov r3, #0
- bl FUN_02017FB4
+ bl BG_LoadPlttData
add r0, r5, #0
bl FreeToHeap
add r0, r4, #0
@@ -706,7 +706,7 @@ MOD85_021D797C: ; 0x021D797C
ldr r0, [r4, r0]
ldr r3, [r3, #0x10]
mov r1, #7
- bl FUN_02017E14
+ bl BG_LoadCharTilesData
add r0, r5, #0
bl FreeToHeap
add r0, r4, #0
@@ -727,11 +727,11 @@ MOD85_021D797C: ; 0x021D797C
ldr r3, [r3, #8]
mov r1, #7
add r2, #0xc
- bl FUN_02017DFC
+ bl BG_LoadScreenTilemapData
ldr r0, _021D7B24 ; =0x0000043C
mov r1, #7
ldr r0, [r4, r0]
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
add r0, r5, #0
bl FreeToHeap
pop {r3, r4, r5, pc}
@@ -790,7 +790,7 @@ MOD85_021D7B28: ; 0x021D7B28
ldr r0, [r5, r0]
ldr r2, _021D7BB4 ; =0x021DECE4
add r1, #8
- bl FUN_02019150
+ bl AddWindow
mov r0, #1
lsl r0, r0, #8
mov r1, #0x4f
@@ -815,9 +815,9 @@ MOD85_021D7BB8: ; 0x021D7BB8
add r6, r4, #0
add r6, #8
add r0, r6, #0
- bl FUN_02019570
+ bl ClearWindowTilemapAndCopyToVram
add r0, r6, #0
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, _021D7BE8 ; =0x00000408
ldr r0, [r5, r0]
bl DestroyMsgData
@@ -865,7 +865,7 @@ MOD85_021D7BEC: ; 0x021D7BEC
bl AddTextPrinterParameterized
add r4, #8
add r0, r4, #0
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
add sp, #0xc
pop {r3, r4, r5, r6, pc}
nop
@@ -887,7 +887,7 @@ MOD85_021D7C44: ; 0x021D7C44
bl FillWindowPixelBuffer
add r0, r5, r4
add r0, #8
- bl FUN_02019220
+ bl ScheduleWindowCopyToVram
pop {r3, r4, r5, pc}
.align 2, 0
_021D7C68: .word 0x00000408
@@ -1462,7 +1462,7 @@ MOD85_021D80DC: ; 0x021D80DC
bl FUN_02009F80
ldr r0, _021D80F4 ; =0x0000043C
ldr r0, [r4, r0]
- bl FUN_0201AB60
+ bl DoScheduledBgGpuUpdates
pop {r4, pc}
nop
_021D80F4: .word 0x0000043C
@@ -1727,7 +1727,7 @@ _021D82BC:
mov r0, #2
str r0, [r4]
ldr r0, _021D82F8 ; =0x000005ED
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD85_021DB9A0
add r0, r4, #0
@@ -1861,7 +1861,7 @@ _021D8398:
mov r0, #4
str r0, [r4]
ldr r0, _021D83F8 ; =0x000005EE
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r4, pc}
nop
@@ -1920,7 +1920,7 @@ _021D844A:
mov r1, #0
bl MOD85_021D9350
ldr r0, _021D8510 ; =0x00000626
- bl FUN_020054C8
+ bl PlaySE
b _021D84EA
_021D8462:
add r0, r4, #0
@@ -1951,7 +1951,7 @@ _021D848E:
mov r1, #1
bl MOD85_021D9350
ldr r0, _021D8510 ; =0x00000626
- bl FUN_020054C8
+ bl PlaySE
b _021D84EA
_021D84A6:
add r0, r4, #0
@@ -1983,7 +1983,7 @@ _021D84D4:
mov r1, #2
bl MOD85_021D9350
ldr r0, _021D8510 ; =0x00000626
- bl FUN_020054C8
+ bl PlaySE
_021D84EA:
ldr r0, [r4, #0x7c]
cmp r0, #2
@@ -2587,7 +2587,7 @@ _021D8914:
mov r0, #0x1b
str r0, [r4]
ldr r0, _021D8950 ; =0x000005ED
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD85_021DB9A0
add r0, r4, #0
@@ -2703,7 +2703,7 @@ _021D89C4:
mov r0, #0x1d
str r0, [r4]
ldr r0, _021D8A2C ; =0x000005EE
- bl FUN_020054C8
+ bl PlaySE
mov r0, #1
pop {r4, pc}
nop
@@ -2762,7 +2762,7 @@ _021D8A7E:
mov r1, #0
bl MOD85_021D9350
ldr r0, _021D8B44 ; =0x00000626
- bl FUN_020054C8
+ bl PlaySE
b _021D8B1E
_021D8A96:
add r0, r4, #0
@@ -2793,7 +2793,7 @@ _021D8AC2:
mov r1, #1
bl MOD85_021D9350
ldr r0, _021D8B44 ; =0x00000626
- bl FUN_020054C8
+ bl PlaySE
b _021D8B1E
_021D8ADA:
add r0, r4, #0
@@ -2825,7 +2825,7 @@ _021D8B08:
mov r1, #2
bl MOD85_021D9350
ldr r0, _021D8B44 ; =0x00000626
- bl FUN_020054C8
+ bl PlaySE
_021D8B1E:
ldr r0, [r4, #0x7c]
cmp r0, #2
@@ -3262,7 +3262,7 @@ _021D8E3C:
mov r0, #0x2d
str r0, [r4]
ldr r0, _021D8E60 ; =0x000005ED
- bl FUN_020054C8
+ bl PlaySE
add r0, r4, #0
bl MOD85_021DB9A0
add r0, r4, #0
@@ -3364,7 +3364,7 @@ MOD85_021D8E98: ; 0x021D8E98
mov r0, #0x2f
str r0, [r4]
ldr r0, _021D8F80 ; =0x000005EE
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #0x24]
cmp r0, #0
bne _021D8F4C
@@ -3477,7 +3477,7 @@ _021D8FE0:
mov r1, #0
bl MOD85_021D9350
ldr r0, _021D90AC ; =0x000005F5
- bl FUN_020054C8
+ bl PlaySE
b _021D9084
_021D8FF8:
add r0, r4, #0
@@ -3509,7 +3509,7 @@ _021D9026:
mov r1, #1
bl MOD85_021D9350
ldr r0, _021D90AC ; =0x000005F5
- bl FUN_020054C8
+ bl PlaySE
b _021D9084
_021D903E:
add r0, r4, #0
@@ -3542,7 +3542,7 @@ _021D906E:
mov r1, #2
bl MOD85_021D9350
ldr r0, _021D90AC ; =0x000005F5
- bl FUN_020054C8
+ bl PlaySE
_021D9084:
ldr r0, [r4, #0x7c]
cmp r0, #2
@@ -7597,7 +7597,7 @@ _021DADC0:
bne _021DAE20
_021DADD2:
ldr r0, _021DAE60 ; =0x0000062D
- bl FUN_020054C8
+ bl PlaySE
ldr r1, [r4, #0x60]
ldr r0, [r4, #0x64]
add r1, r1, r0
@@ -7662,7 +7662,7 @@ _021DAE2E:
str r0, [r4, #0x60]
_021DAE4C:
ldr r0, _021DAE60 ; =0x0000062D
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #8]
cmp r0, #1
bne _021DAE5E
@@ -8830,7 +8830,7 @@ MOD85_021DB69C: ; 0x021DB69C
lsr r0, r0, #0x18
mov r2, #0x20
lsr r3, r3, #0x10
- bl FUN_02017FB4
+ bl BG_LoadPlttData
pop {r4, pc}
.align 2, 0
thumb_func_end MOD85_021DB69C
@@ -9517,7 +9517,7 @@ MOD85_021DBB54: ; 0x021DBB54
bl FUN_0200CA44
mov r0, #0x5f
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
pop {r3, r4, r5, pc}
.align 2, 0
_021DBB84: .word MOD85_021DBC48
@@ -10243,11 +10243,11 @@ MOD85_021DC050: ; 0x021DC050
mov r1, #1
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, _021DC090 ; =0x0000043C
mov r1, #1
ldr r0, [r4, r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0xc
pop {r4, r5, pc}
.align 2, 0
@@ -10278,11 +10278,11 @@ MOD85_021DC094: ; 0x021DC094
mov r1, #1
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, _021DC0D4 ; =0x0000043C
mov r1, #1
ldr r0, [r4, r0]
- bl FUN_0201AC68
+ bl ScheduleBgTilemapBufferTransfer
add sp, #0xc
pop {r4, r5, pc}
.align 2, 0
@@ -11027,7 +11027,7 @@ MOD85_021DC5E0: ; 0x021DC5E0
mov r1, #0
bl FUN_02020208
ldr r0, _021DC644 ; =0x00000624
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
@@ -11126,7 +11126,7 @@ MOD85_021DC6CC: ; 0x021DC6CC
bl FUN_020200BC
mov r0, #0x6d
lsl r0, r0, #4
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
@@ -12483,7 +12483,7 @@ MOD85_021DD0F0: ; 0x021DD0F0
mov r1, #0
bl FUN_020200BC
ldr r0, _021DD154 ; =0x000006D1
- bl FUN_020054C8
+ bl PlaySE
ldr r0, [r4, #8]
add r0, r0, #1
str r0, [r4, #8]
diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s
index 2bd7d12a..17607453 100644
--- a/arm9/modules/86/asm/module_86.s
+++ b/arm9/modules/86/asm/module_86.s
@@ -11,7 +11,7 @@ MOD86_021D74E0: ; 0x021D74E0
mov r0, #3
mov r1, #0x54
lsl r2, r2, #0x10
- bl FUN_0201681C
+ bl CreateHeap
add r0, r5, #0
mov r1, #0x44
mov r2, #0x54
@@ -57,7 +57,7 @@ MOD86_021D74E0: ; 0x021D74E0
str r0, [r2]
mov r0, #4
mov r1, #8
- bl FUN_0201669C
+ bl SetKeyRepeatTimers
add r0, r4, #0
bl MOD86_021D76EC
add r0, r4, #0
@@ -106,22 +106,22 @@ _021D75B8:
bl MOD86_021D7B80
add r0, r6, #0
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #4
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #1
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #1
str r0, [sp]
@@ -233,7 +233,7 @@ MOD86_021D76B0: ; 0x021D76B0
add r0, r5, #0
bl OverlayManager_FreeData
add r0, r4, #0
- bl FUN_020168D0
+ bl DestroyHeap
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
@@ -245,7 +245,7 @@ MOD86_021D76E0: ; 0x021D76E0
ldr r0, [r0, #0x10]
bx r3
nop
-_021D76E8: .word FUN_0201AB60
+_021D76E8: .word DoScheduledBgGpuUpdates
thumb_func_end MOD86_021D76E0
thumb_func_start MOD86_021D76EC
@@ -264,7 +264,7 @@ _021D76F8:
add r0, sp, #0x2c
bl GX_SetBanks
ldr r0, [r4]
- bl FUN_02016B94
+ bl BgConfig_Alloc
add r3, sp, #0x1c
ldr r5, _021D7850 ; =0x021D7C90
str r0, [r4, #0x10]
@@ -274,7 +274,7 @@ _021D76F8:
ldmia r5!, {r0, r1}
stmia r3!, {r0, r1}
add r0, r2, #0
- bl FUN_02016BBC
+ bl SetBothScreensModesAndDisable
ldr r5, _021D7854 ; =0x021D7CA0
add r3, sp, #0
ldmia r5!, {r0, r1}
@@ -297,10 +297,10 @@ _021D76F8:
strb r3, [r0, #0x10]
ldr r0, [r4, #0x10]
add r3, r1, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x10]
mov r1, #0
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #2
add r0, sp, #0
strb r2, [r0, #0x12]
@@ -312,10 +312,10 @@ _021D76F8:
mov r1, #1
add r2, sp, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x10]
mov r1, #1
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #4
add r0, sp, #0
strb r1, [r0, #0x12]
@@ -328,10 +328,10 @@ _021D76F8:
mov r1, #3
add r2, sp, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x10]
mov r1, #3
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #4
mov r3, #0
add r0, sp, #0
@@ -343,10 +343,10 @@ _021D76F8:
strb r2, [r0, #0x10]
ldr r0, [r4, #0x10]
add r2, sp, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x10]
mov r1, #4
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r2, #2
add r0, sp, #0
strb r2, [r0, #0x12]
@@ -358,10 +358,10 @@ _021D76F8:
mov r1, #5
add r2, sp, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x10]
mov r1, #5
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r1, #4
add r0, sp, #0
strb r1, [r0, #0x12]
@@ -374,34 +374,34 @@ _021D76F8:
mov r1, #7
add r2, sp, #0
mov r3, #0
- bl FUN_02016C18
+ bl InitBgFromTemplate
ldr r0, [r4, #0x10]
mov r1, #7
- bl FUN_02018744
+ bl BgClearTilemapBufferAndCommit
mov r0, #0
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
add sp, #0x54
pop {r4, r5, pc}
.align 2, 0
@@ -416,46 +416,46 @@ MOD86_021D7858: ; 0x021D7858
add r4, r0, #0
mov r0, #0
add r1, r0, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #1
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #2
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #3
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #4
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #5
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #6
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
mov r0, #7
mov r1, #0
- bl FUN_0201797C
+ bl ToggleBgLayer
ldr r0, [r4, #0x10]
mov r1, #0
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
mov r1, #1
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
mov r1, #3
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
mov r1, #4
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
mov r1, #5
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
mov r1, #7
- bl FUN_020178A0
+ bl FreeBgTilemapBuffer
ldr r0, [r4, #0x10]
bl FreeToHeap
pop {r4, pc}
@@ -493,7 +493,7 @@ MOD86_021D78D4: ; 0x021D78D4
ldr r0, [r4, #0x10]
add r1, #0x14
add r2, sp, #8
- bl FUN_02019150
+ bl AddWindow
mov r1, #0
mov r0, #1
lsl r0, r0, #8
@@ -512,7 +512,7 @@ MOD86_021D78D4: ; 0x021D78D4
ldr r0, [r4, #0x10]
add r1, #0x24
add r2, sp, #8
- bl FUN_02019150
+ bl AddWindow
mov r1, #0
mov r0, #1
lsl r0, r0, #8
@@ -535,10 +535,10 @@ MOD86_021D7964: ; 0x021D7964
push {r4, lr}
add r4, r0, #0
add r0, #0x24
- bl FUN_02019178
+ bl RemoveWindow
add r0, r4, #0
add r0, #0x14
- bl FUN_02019178
+ bl RemoveWindow
ldr r0, [r4, #0x38]
bl ScrStrBufs_delete
ldr r0, [r4, #0x34]
@@ -565,27 +565,27 @@ MOD86_021D7990: ; 0x021D7990
ldr r0, [r4, #0x10]
mov r1, #1
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x3c
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x10]
mov r1, #5
mov r2, #3
add r3, #0xc0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x3c
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x10]
mov r1, #0
mov r2, #3
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
mov r3, #0x3c
ldrsh r3, [r4, r3]
ldr r0, [r4, #0x10]
mov r1, #4
mov r2, #3
add r3, #0xc0
- bl FUN_020179E0
+ bl BgSetPosTextAndCommit
pop {r4, pc}
.align 2, 0
thumb_func_end MOD86_021D7990
@@ -701,10 +701,10 @@ _021D7A06:
mov r2, #0
ldr r0, [r5, #0x10]
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, [r5, #0x10]
mov r1, #1
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -745,10 +745,10 @@ _021D7A06:
ldr r0, [r5, #0x10]
mov r1, #5
add r3, r2, #0
- bl FUN_020186B4
+ bl BgTilemapRectChangePalette
ldr r0, [r5, #0x10]
mov r1, #5
- bl FUN_02017CD0
+ bl BgCommitTilemapBufferToVram
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -772,12 +772,12 @@ _021D7A06:
ldr r3, [r5]
mov r1, #0x20
add r2, r0, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r3, [r5]
mov r0, #4
mov r1, #0x20
mov r2, #0
- bl FUN_02017F18
+ bl BG_ClearCharDataRange
ldr r2, [r5]
mov r0, #0
mov r1, #0x40
diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c
index f0ac9472..28147dbd 100644
--- a/arm9/src/GX_layers.c
+++ b/arm9/src/GX_layers.c
@@ -3,19 +3,19 @@
#include "gx.h"
#include "main.h"
-
-struct GX_LayerData layer_data;
+static u32 EngineA_DISPCNT_LayerMask;
+static u32 EngineB_DISPCNT_LayerMask;
THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks)
{
GX_ResetBankForBG();
GX_ResetBankForBGExtPltt();
GX_ResetBankForSubBG();
- FUN_020C6034();
+ GX_ResetBankForSubBGExtPltt();
GX_ResetBankForOBJ();
GX_ResetBankForOBJExtPltt();
- FUN_020C605C();
GX_ResetBankForSubOBJ();
+ GX_ResetBankForSubOBJExtPltt();
GX_ResetBankForTex();
GX_ResetBankForTexPltt();
@@ -34,80 +34,79 @@ THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks)
THUMB_FUNC void GX_DisableEngineALayers()
{
- layer_data.EngineA_DISPCNT_LayerMask = 0;
+ EngineA_DISPCNT_LayerMask = 0;
}
THUMB_FUNC void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle)
{
if (layer_toggle == GX_LAYER_TOGGLE_ON)
{
- if ((layer_data.EngineA_DISPCNT_LayerMask & layer_mask) != 0)
+ if ((EngineA_DISPCNT_LayerMask & layer_mask) != 0)
{
return;
}
}
else
{
- if ((layer_data.EngineA_DISPCNT_LayerMask & layer_mask) == 0)
+ if ((EngineA_DISPCNT_LayerMask & layer_mask) == 0)
{
return;
}
}
- reg_GX_DISPCNT = (reg_GX_DISPCNT & 0xFFFFE0FF) | (layer_data.EngineA_DISPCNT_LayerMask ^= layer_mask) << 8;
+ GX_SetVisiblePlane(EngineA_DISPCNT_LayerMask ^= layer_mask);
}
THUMB_FUNC void GX_SetEngineALayers(u32 layer_mask)
{
- layer_data.EngineA_DISPCNT_LayerMask = layer_mask;
- reg_GX_DISPCNT = (reg_GX_DISPCNT & 0xFFFFE0FF) | layer_mask << 8;
+ EngineA_DISPCNT_LayerMask = layer_mask;
+ GX_SetVisiblePlane(layer_mask);
}
THUMB_FUNC void GX_DisableEngineBLayers()
{
- layer_data.EngineB_DISPCNT_LayerMask = 0;
+ EngineB_DISPCNT_LayerMask = 0;
}
THUMB_FUNC void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle)
{
if (layer_toggle == GX_LAYER_TOGGLE_ON)
{
- if ((layer_data.EngineB_DISPCNT_LayerMask & layer_mask) != 0)
+ if ((EngineB_DISPCNT_LayerMask & layer_mask) != 0)
{
return;
}
}
else
{
- if ((layer_data.EngineB_DISPCNT_LayerMask & layer_mask) == 0)
+ if ((EngineB_DISPCNT_LayerMask & layer_mask) == 0)
{
return;
}
}
- reg_GXS_DB_DISPCNT = (reg_GXS_DB_DISPCNT & 0xFFFFE0FF) | (layer_data.EngineB_DISPCNT_LayerMask ^= layer_mask) << 8;
+ GXS_SetVisiblePlane(EngineB_DISPCNT_LayerMask ^= layer_mask);
}
THUMB_FUNC void GX_BothDispOn()
{
GX_DispOn();
-
- reg_GXS_DB_DISPCNT |= 0x10000;
+ GXS_DispOn();
}
THUMB_FUNC void GX_SwapDisplay()
{
if (gMain.unk65 == 0)
{
- reg_GX_POWCNT |= 0x8000; //send display A to lower screen
+ GX_SetDispSelect(GX_DISP_SELECT_MAIN_SUB);
}
else
{
- reg_GX_POWCNT &= 0xFFFF7FFF; // sned display A to upper screen
+ GX_SetDispSelect(GX_DISP_SELECT_SUB_MAIN);
}
}
THUMB_FUNC u32 GX_GetEngineALayers()
{
- return layer_data.EngineA_DISPCNT_LayerMask;
+ return EngineA_DISPCNT_LayerMask;
}
diff --git a/arm9/src/bag.c b/arm9/src/bag.c
index 57609a8f..506f3ec1 100644
--- a/arm9/src/bag.c
+++ b/arm9/src/bag.c
@@ -296,40 +296,37 @@ void SortPocket(struct ItemSlot * slots, u32 count)
}
}
-extern struct BagView * BagView_new(u8 heap_id);
-extern void BagView_setitem(struct BagView * view, struct ItemSlot * slot, u8 pocket, u8 idx);
-
struct BagView * CreateBagView(struct Bag * bag, const u8 * pockets, u32 heap_id)
{
- struct BagView * view = BagView_new((u8)heap_id);
- int i;
- for (i = 0; pockets[i] != 0xFF; i++)
+ struct BagView * view = BagView_New((u8)heap_id);
+
+ for (u32 i = 0; pockets[i] != 0xFF; i++)
{
switch (pockets[i])
{
case POCKET_KEY_ITEMS:
- BagView_setitem(view, bag->keyItems, POCKET_KEY_ITEMS, (u8)i);
+ BagView_SetItem(view, bag->keyItems, POCKET_KEY_ITEMS, (u8)i);
break;
case POCKET_ITEMS:
- BagView_setitem(view, bag->items, POCKET_ITEMS, (u8)i);
+ BagView_SetItem(view, bag->items, POCKET_ITEMS, (u8)i);
break;
case POCKET_BERRIES:
- BagView_setitem(view, bag->berries, POCKET_BERRIES, (u8)i);
+ BagView_SetItem(view, bag->berries, POCKET_BERRIES, (u8)i);
break;
case POCKET_MEDICINE:
- BagView_setitem(view, bag->medicine, POCKET_MEDICINE, (u8)i);
+ BagView_SetItem(view, bag->medicine, POCKET_MEDICINE, (u8)i);
break;
case POCKET_BALLS:
- BagView_setitem(view, bag->balls, POCKET_BALLS, (u8)i);
+ BagView_SetItem(view, bag->balls, POCKET_BALLS, (u8)i);
break;
case POCKET_BATTLE_ITEMS:
- BagView_setitem(view, bag->battleItems, POCKET_BATTLE_ITEMS, (u8)i);
+ BagView_SetItem(view, bag->battleItems, POCKET_BATTLE_ITEMS, (u8)i);
break;
case POCKET_MAIL:
- BagView_setitem(view, bag->mail, POCKET_MAIL, (u8)i);
+ BagView_SetItem(view, bag->mail, POCKET_MAIL, (u8)i);
break;
case POCKET_TMHMS:
- BagView_setitem(view, bag->TMsHMs, POCKET_TMHMS, (u8)i);
+ BagView_SetItem(view, bag->TMsHMs, POCKET_TMHMS, (u8)i);
break;
}
}
diff --git a/arm9/src/bag_view.c b/arm9/src/bag_view.c
new file mode 100644
index 00000000..31d53861
--- /dev/null
+++ b/arm9/src/bag_view.c
@@ -0,0 +1,210 @@
+#include "global.h"
+#include "bag_view.h"
+#include "coins.h"
+#include "constants/items.h"
+#include "heap.h"
+#include "msgdata.h"
+#include "player_data.h"
+#include "script_buffers.h"
+#include "seal.h"
+#include "unk_0202A1E0.h"
+
+extern u32 *FUN_0202708C(u32 *);
+extern u32 FUN_02027168(u32 *);
+extern u16 FUN_02027184(u32 *);
+extern u32 *FUN_02027E24(struct SaveBlock2 *sav2);
+extern u8 FUN_02029E2C(struct SealCase *, u32);
+
+THUMB_FUNC struct BagView *BagView_New(u8 heap_id)
+{
+ struct BagView *ptr = AllocFromHeap(heap_id, sizeof(struct BagView));
+
+ memset(ptr, 0, sizeof(struct BagView));
+
+ return ptr;
+}
+
+THUMB_FUNC u32 BagView_sizeof()
+{
+ return sizeof(struct BagView);
+}
+
+THUMB_FUNC void FUN_0206E30C(struct BagView *bag_view, u8 r1)
+{
+ bag_view->unk65 = r1;
+}
+
+THUMB_FUNC void FUN_0206E314(
+ struct BagView *bag_view, struct SaveBlock2 *sav2, u8 r2, struct UnkStruct_0206F164 *r3)
+{
+ FUN_0206E30C(bag_view, r2);
+
+ bag_view->sav2 = sav2;
+ bag_view->unk6C = r3;
+ bag_view->unk66 = 0;
+}
+
+THUMB_FUNC void BagView_SetItem(struct BagView *bag_view, struct ItemSlot *slot, u8 pocket, u8 idx)
+{
+ bag_view->slots[idx].slot = slot;
+ bag_view->slots[idx].pocket = pocket;
+}
+
+THUMB_FUNC void FUN_0206E340(struct BagView *bag_view)
+{
+ bag_view->unk76 = 1;
+}
+
+THUMB_FUNC void FUN_0206E354(struct BagView *bag_view, u32 r1)
+{
+ bag_view->unk70 = r1;
+}
+
+THUMB_FUNC void FUN_0206E358(struct BagView *bag_view, u8 r1)
+{
+ bag_view->unk74 = r1;
+}
+
+THUMB_FUNC void FUN_0206E360(struct BagView *bag_view, u16 r1)
+{
+ bag_view->unk76_2 = r1;
+}
+
+THUMB_FUNC u16 FUN_0206E37C(struct BagView *bag_view)
+{
+ return bag_view->unk66;
+}
+
+THUMB_FUNC u16 FUN_0206E384(struct BagView *bag_view)
+{
+ return bag_view->unk68;
+}
+
+THUMB_FUNC u8 FUN_0206E38C(struct BagView *bag_view)
+{
+ return bag_view->unk74;
+}
+
+THUMB_FUNC u8 FUN_0206E394(struct BagView *bag_view)
+{
+ return bag_view->unk75;
+}
+
+THUMB_FUNC u32 FUN_0206E39C(struct SaveBlock2 *sav2)
+{
+ return (u32)CheckCoins(Sav2_PlayerData_GetCoinsAddr(sav2));
+}
+
+THUMB_FUNC u32 FUN_0206E3A8(struct SaveBlock2 *sav2)
+{
+ struct SealCase *seal_case = Sav2_SealCase_get(sav2);
+ u32 i;
+ u32 count = 0;
+
+ for (i = 1; i <= 0x50; ++i)
+ {
+ count += FUN_02029E2C(seal_case, i);
+ }
+
+ return count;
+}
+
+THUMB_FUNC u32 FUN_0206E3C8(struct SaveBlock2 *sav2)
+{
+ return FUN_02027168(FUN_0202708C(FUN_02027E24(sav2)));
+}
+
+THUMB_FUNC u32 FUN_0206E3D8(struct SaveBlock2 *sav2)
+{
+ return FUN_02027184(FUN_0202708C(FUN_02027E24(sav2)));
+}
+
+THUMB_FUNC u32 FUN_0206E3E8(struct SaveBlock2 *sav2)
+{
+ return SaveStruct23_Substruct2_SetField_0x0(SaveStruct23_GetSubstruct2(sav2), 0, DATA_GET);
+}
+
+THUMB_FUNC BOOL FUN_0206E3F8(struct SaveBlock2 *sav2, struct String *dest, u32 item_id, u32 heap_id)
+{
+ struct MsgData *msgData = NewMsgDataFromNarc(0, NARC_MSGDATA_MSG, 7, heap_id);
+ struct ScrStrBufs *scrStrBufs = ScrStrBufs_new(heap_id);
+ struct String *string;
+
+ if (item_id == ITEM_NONE)
+ {
+ string = NewString_ReadMsgData(msgData, 0x63);
+ }
+ else if (item_id == ITEM_POINT_CARD)
+ {
+ string = NewString_ReadMsgData(msgData, 0x61);
+
+ BufferIntegerAsString(scrStrBufs, 0, FUN_0206E3E8(sav2), 4, 0, TRUE);
+ }
+ else if (item_id == ITEM_SEAL_CASE)
+ {
+ string = NewString_ReadMsgData(msgData, 0x5C);
+
+ BufferIntegerAsString(scrStrBufs, 0, FUN_0206E3A8(sav2), 4, 0, TRUE);
+ }
+ else if (item_id == ITEM_FASHION_CASE)
+ {
+ string = NewString_ReadMsgData(msgData, 0x5D);
+
+ BufferIntegerAsString(scrStrBufs, 0, FUN_0206E3C8(sav2), 3, 0, TRUE);
+ BufferIntegerAsString(scrStrBufs, 1, FUN_0206E3D8(sav2), 2, 0, TRUE);
+ }
+ else if (item_id == ITEM_COIN_CASE)
+ {
+ string = NewString_ReadMsgData(msgData, 0x39);
+
+ BufferIntegerAsString(scrStrBufs, 0, FUN_0206E39C(sav2), 5, 0, TRUE);
+ }
+ else
+ {
+ ScrStrBufs_delete(scrStrBufs);
+ DestroyMsgData(msgData);
+
+ return FALSE;
+ }
+
+ StringExpandPlaceholders(scrStrBufs, dest, string);
+ String_dtor(string);
+ ScrStrBufs_delete(scrStrBufs);
+ DestroyMsgData(msgData);
+
+ return TRUE;
+}
+
+THUMB_FUNC void FUN_0206E51C(
+ struct PlayerData *playerData, struct String *dest, u32 r2, u32 r3, u32 heap_id)
+{
+#pragma unused(r2)
+ struct MsgData *msgData;
+
+ switch (r3)
+ {
+ case 1:
+ msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 7, heap_id);
+
+ ReadMsgDataIntoString(msgData, 0x38, dest);
+ DestroyMsgData(msgData);
+ return;
+ case 2:
+ msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 7, heap_id);
+
+ ReadMsgDataIntoString(msgData, 0x6F, dest);
+ DestroyMsgData(msgData);
+ return;
+ default:
+ msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 0xC7, heap_id);
+ struct ScrStrBufs *scrStrBufs = ScrStrBufs_new(heap_id);
+ struct String *src = NewString_ReadMsgData(msgData, 0x24);
+
+ BufferPlayersName(scrStrBufs, 0, playerData);
+ StringExpandPlaceholders(scrStrBufs, dest, src);
+ String_dtor(src);
+ ScrStrBufs_delete(scrStrBufs);
+ DestroyMsgData(msgData);
+ return;
+ }
+}
diff --git a/arm9/src/bg_window.c b/arm9/src/bg_window.c
new file mode 100644
index 00000000..2986645f
--- /dev/null
+++ b/arm9/src/bg_window.c
@@ -0,0 +1,5456 @@
+#include "global.h"
+#include "bg_window.h"
+#include "GX_layers.h"
+#include "game_init.h"
+#include "gx.h"
+#include "heap.h"
+
+const u8 sTilemapWidthByBufferSize[] = {
+ [GF_BG_SCR_SIZE_128x128] = 0x10,
+ [GF_BG_SCR_SIZE_256x256] = 0x20,
+ [GF_BG_SCR_SIZE_256x512] = 0x20,
+ [GF_BG_SCR_SIZE_512x256] = 0x20,
+ [GF_BG_SCR_SIZE_512x512] = 0x20,
+ [GF_BG_SCR_SIZE_1024x1024] = 0x20,
+};
+
+void (*const sScheduleWindowCopyToVramFuncs[])(struct Window *) = {
+ ScheduleWindowCopyToVram_TextMode,
+ ScheduleWindowCopyToVram_AffineMode,
+ ScheduleWindowCopyToVram_TextMode,
+};
+
+void (*const sClearWindowTilemapAndCopyToVramFuncs[])(struct Window *) = {
+ ClearWindowTilemapAndCopyToVram_TextMode,
+ ClearWindowTilemapAndCopyToVram_AffineMode,
+ ClearWindowTilemapAndCopyToVram_TextMode,
+};
+
+void (*const sClearWindowTilemapAndScheduleTransferFuncs[])(struct Window *) = {
+ ClearWindowTilemapAndScheduleTransfer_TextMode,
+ ClearWindowTilemapAndScheduleTransfer_AffineMode,
+ ClearWindowTilemapAndScheduleTransfer_TextMode,
+};
+
+void (*const sPutWindowTilemapFuncs[])(struct Window *) = {
+ PutWindowTilemap_TextMode,
+ PutWindowTilemap_AffineMode,
+ PutWindowTilemap_TextMode,
+};
+
+void (*const sCopyWindowToVramFuncs[])(struct Window *) = {
+ CopyWindowToVram_TextMode,
+ CopyWindowToVram_AffineMode,
+ CopyWindowToVram_TextMode,
+};
+
+void (*const sClearWindowTilemapFuncs[])(struct Window *) = {
+ ClearWindowTilemapText,
+ ClearWindowTilemapAffine,
+ ClearWindowTilemapText,
+};
+
+THUMB_FUNC struct BgConfig *BgConfig_Alloc(u32 heap_id)
+{
+ struct BgConfig *ptr = AllocFromHeap(heap_id, sizeof(struct BgConfig));
+ memset(ptr, 0, sizeof(struct BgConfig));
+ ptr->heap_id = heap_id;
+ ptr->scrollScheduled = 0;
+ ptr->bufferTransferScheduled = 0;
+
+ return ptr;
+}
+
+THUMB_FUNC u32 BgConfig_GetHeapId(struct BgConfig *bgConfig)
+{
+ return bgConfig->heap_id;
+}
+
+THUMB_FUNC void SetBothScreensModesAndDisable(const struct GraphicsModes *modes)
+{
+ GX_SetGraphicsMode(modes->dispMode, modes->bgMode, modes->_2d3dMode);
+ GXS_SetGraphicsMode(modes->subMode);
+ GX_SetBGScrOffset(0);
+ GX_SetBGCharOffset(0);
+
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+}
+
+THUMB_FUNC void SetScreenModeAndDisable(const struct GraphicsModes *gfxModes, u32 whichScreen)
+{
+ if (whichScreen == 0)
+ {
+ GX_SetGraphicsMode(gfxModes->dispMode, gfxModes->bgMode, gfxModes->_2d3dMode);
+ GX_DisableEngineALayers();
+ }
+ else
+ {
+ GXS_SetGraphicsMode(gfxModes->subMode);
+ GX_DisableEngineBLayers();
+ }
+}
+
+THUMB_FUNC void InitBgFromTemplate(
+ struct BgConfig *bgConfig, u8 bgId, const struct BgTemplate *template, u8 bgMode)
+{
+ u8 screenSize = TranslateGFBgModePairToGXScreenSize(template->size, bgMode);
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_0:
+ GX_EngineAToggleLayers(GF_BG_LYR_MAIN_0_F, GX_LAYER_TOGGLE_ON);
+ G2_SetBG0Control(screenSize, template->colorMode, template->screenBase, template->charBase, template->bgExtPltt);
+ G2_SetBG0Priority(template->priority);
+ G2_BG0Mosaic(template->mosaic);
+ break;
+
+ case GF_BG_LYR_MAIN_1:
+ GX_EngineAToggleLayers(GF_BG_LYR_MAIN_1_F, GX_LAYER_TOGGLE_ON);
+ G2_SetBG1Control(screenSize, template->colorMode, template->screenBase, template->charBase, template->bgExtPltt);
+ G2_SetBG1Priority(template->priority);
+ G2_BG1Mosaic(template->mosaic);
+ break;
+
+ case GF_BG_LYR_MAIN_2:
+ GX_EngineAToggleLayers(GF_BG_LYR_MAIN_2_F, GX_LAYER_TOGGLE_ON);
+ switch (bgMode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ G2_SetBG2ControlText(screenSize, template->colorMode, template->screenBase, template->charBase);
+ break;
+ case GF_BG_TYPE_AFFINE:
+ G2_SetBG2ControlAffine(screenSize, template->areaOver, template->screenBase, template->charBase);
+ break;
+ case GF_BG_TYPE_256x16PLTT:
+ G2_SetBG2Control256x16Pltt(screenSize, template->areaOver, template->screenBase, template->charBase);
+ break;
+ }
+ G2_SetBG2Priority(template->priority);
+ G2_BG2Mosaic(template->mosaic);
+ break;
+
+ case GF_BG_LYR_MAIN_3:
+ GX_EngineAToggleLayers(GF_BG_LYR_MAIN_3_F, GX_LAYER_TOGGLE_ON);
+ switch (bgMode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ G2_SetBG3ControlText(screenSize, template->colorMode, template->screenBase, template->charBase);
+ break;
+ case GF_BG_TYPE_AFFINE:
+ G2_SetBG3ControlAffine(screenSize, template->areaOver, template->screenBase, template->charBase);
+ break;
+ case GF_BG_TYPE_256x16PLTT:
+ G2_SetBG3Control256x16Pltt(screenSize, template->areaOver, template->screenBase, template->charBase);
+ break;
+ }
+ G2_SetBG3Priority(template->priority);
+ G2_BG3Mosaic(template->mosaic);
+ break;
+
+ case GF_BG_LYR_SUB_0:
+ GX_EngineBToggleLayers(GF_BG_LYR_SUB_0_F, GX_LAYER_TOGGLE_ON);
+ G2S_SetBG0Control(screenSize, template->colorMode, template->screenBase, template->charBase, template->bgExtPltt);
+ G2S_SetBG0Priority(template->priority);
+ G2S_BG0Mosaic(template->mosaic);
+ break;
+
+ case GF_BG_LYR_SUB_1:
+ GX_EngineBToggleLayers(GF_BG_LYR_SUB_1_F, GX_LAYER_TOGGLE_ON);
+ G2S_SetBG1Control(screenSize, template->colorMode, template->screenBase, template->charBase, template->bgExtPltt);
+ G2S_SetBG1Priority(template->priority);
+ G2S_BG1Mosaic(template->mosaic);
+ break;
+
+ case GF_BG_LYR_SUB_2:
+ GX_EngineBToggleLayers(GF_BG_LYR_SUB_2_F, GX_LAYER_TOGGLE_ON);
+ switch (bgMode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ G2S_SetBG2ControlText(screenSize, template->colorMode, template->screenBase, template->charBase);
+ break;
+ case GF_BG_TYPE_AFFINE:
+ G2S_SetBG2ControlAffine(screenSize, template->areaOver, template->screenBase, template->charBase);
+ break;
+ case GF_BG_TYPE_256x16PLTT:
+ G2S_SetBG2Control256x16Pltt(screenSize, template->areaOver, template->screenBase, template->charBase);
+ break;
+ }
+ G2S_SetBG2Priority(template->priority);
+ G2S_BG2Mosaic(template->mosaic);
+ break;
+
+ case GF_BG_LYR_SUB_3:
+ GX_EngineBToggleLayers(GF_BG_LYR_SUB_3_F, GX_LAYER_TOGGLE_ON);
+ switch (bgMode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ G2S_SetBG3ControlText(screenSize, template->colorMode, template->screenBase, template->charBase);
+ break;
+ case GF_BG_TYPE_AFFINE:
+ G2S_SetBG3ControlAffine(screenSize, template->areaOver, template->screenBase, template->charBase);
+ break;
+ case GF_BG_TYPE_256x16PLTT:
+ G2S_SetBG3Control256x16Pltt(screenSize, template->areaOver, template->screenBase, template->charBase);
+ break;
+ }
+ G2S_SetBG3Priority(template->priority);
+ G2S_BG3Mosaic(template->mosaic);
+ break;
+ }
+
+ bgConfig->bgs[bgId].rotation = 0;
+ bgConfig->bgs[bgId].xScale = FX32_ONE;
+ bgConfig->bgs[bgId].yScale = FX32_ONE;
+ bgConfig->bgs[bgId].centerX = 0;
+ bgConfig->bgs[bgId].centerY = 0;
+
+ if (template->bufferSize != 0)
+ {
+ bgConfig->bgs[bgId].tilemapBuffer = AllocFromHeap(bgConfig->heap_id, template->bufferSize);
+
+ MI_CpuClear16(bgConfig->bgs[bgId].tilemapBuffer, template->bufferSize);
+
+ bgConfig->bgs[bgId].bufferSize = template->bufferSize;
+ bgConfig->bgs[bgId].baseTile = template->baseTile;
+ }
+ else
+ {
+ bgConfig->bgs[bgId].tilemapBuffer = NULL;
+ bgConfig->bgs[bgId].bufferSize = 0;
+ bgConfig->bgs[bgId].baseTile = 0;
+ }
+
+ bgConfig->bgs[bgId].size = template->size;
+ bgConfig->bgs[bgId].mode = bgMode;
+ bgConfig->bgs[bgId].colorMode = template->colorMode;
+
+ if (bgMode == GF_BG_TYPE_TEXT && template->colorMode == GX_BG_COLORMODE_16)
+ {
+ bgConfig->bgs[bgId].tileSize = 0x20;
+ }
+ else
+ {
+ bgConfig->bgs[bgId].tileSize = 0x40;
+ }
+
+ BgSetPosTextAndCommit(bgConfig, bgId, BG_POS_OP_SET_X, template->x);
+ BgSetPosTextAndCommit(bgConfig, bgId, BG_POS_OP_SET_Y, template->y);
+}
+
+THUMB_FUNC void SetBgControlParam(struct BgConfig *config, u8 bgId, u32 attr, u8 value)
+{
+ if (attr == GF_BG_CNT_SET_COLOR_MODE)
+ {
+ config->bgs[bgId].colorMode = value;
+ }
+
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_0:
+ GXBg01Control bg0cnt = G2_GetBG0Control();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg0cnt.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg0cnt.charBase = value;
+ }
+
+ G2_SetBG0Control(bg0cnt.screenSize, config->bgs[bgId].colorMode, bg0cnt.screenBase, bg0cnt.charBase, bg0cnt.bgExtPltt);
+ break;
+ case GF_BG_LYR_MAIN_1:
+ GXBg01Control bg1cnt = G2_GetBG1Control();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg1cnt.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg1cnt.charBase = value;
+ }
+
+ G2_SetBG1Control(bg1cnt.screenSize, config->bgs[bgId].colorMode, bg1cnt.screenBase, bg1cnt.charBase, bg1cnt.bgExtPltt);
+ break;
+ case GF_BG_LYR_MAIN_2:
+ switch (config->bgs[bgId].mode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ GXBg23ControlText bg2cnt_tx = G2_GetBG2ControlText();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg2cnt_tx.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg2cnt_tx.charBase = value;
+ }
+
+ G2_SetBG2ControlText(bg2cnt_tx.screenSize, config->bgs[bgId].colorMode, bg2cnt_tx.screenBase, bg2cnt_tx.charBase);
+ break;
+ case GF_BG_TYPE_AFFINE:
+ GXBg23ControlAffine bg2cnt_aff = G2_GetBG2ControlAffine();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg2cnt_aff.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg2cnt_aff.charBase = value;
+ }
+
+ G2_SetBG2ControlAffine(bg2cnt_aff.screenSize, bg2cnt_aff.areaOver, bg2cnt_aff.screenBase,
+ bg2cnt_aff.charBase);
+ break;
+ case GF_BG_TYPE_256x16PLTT:
+ GXBg23Control256x16Pltt bg2cnt_256x16pltt = G2_GetBG2Control256x16Pltt();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg2cnt_256x16pltt.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg2cnt_256x16pltt.charBase = value;
+ }
+
+ G2_SetBG2Control256x16Pltt(bg2cnt_256x16pltt.screenSize, bg2cnt_256x16pltt.areaOver,
+ bg2cnt_256x16pltt.screenBase, bg2cnt_256x16pltt.charBase);
+ break;
+ }
+ break;
+ case GF_BG_LYR_MAIN_3:
+ switch (config->bgs[bgId].mode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ GXBg23ControlText bg3cnt_tx = G2_GetBG3ControlText();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg3cnt_tx.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg3cnt_tx.charBase = value;
+ }
+
+ G2_SetBG3ControlText(bg3cnt_tx.screenSize, config->bgs[bgId].colorMode, bg3cnt_tx.screenBase, bg3cnt_tx.charBase);
+ break;
+ case GF_BG_TYPE_AFFINE:
+ GXBg23ControlAffine bg3cnt_aff = G2_GetBG3ControlAffine();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg3cnt_aff.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg3cnt_aff.charBase = value;
+ }
+
+ G2_SetBG3ControlAffine(bg3cnt_aff.screenSize, bg3cnt_aff.areaOver, bg3cnt_aff.screenBase,
+ bg3cnt_aff.charBase);
+ break;
+ case GF_BG_TYPE_256x16PLTT:
+ GXBg23Control256x16Pltt bg3cnt_256x16pltt = G2_GetBG3Control256x16Pltt();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg3cnt_256x16pltt.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg3cnt_256x16pltt.charBase = value;
+ }
+
+ G2_SetBG3Control256x16Pltt(bg3cnt_256x16pltt.screenSize, bg3cnt_256x16pltt.areaOver,
+ bg3cnt_256x16pltt.screenBase, bg3cnt_256x16pltt.charBase);
+ break;
+ }
+ break;
+ case GF_BG_LYR_SUB_0:
+ GXBg01Control bg0cntsub = G2S_GetBG0Control();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg0cntsub.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg0cntsub.charBase = value;
+ }
+
+ G2S_SetBG0Control(bg0cntsub.screenSize, config->bgs[bgId].colorMode, bg0cntsub.screenBase, bg0cntsub.charBase, bg0cntsub.bgExtPltt);
+ break;
+ case GF_BG_LYR_SUB_1:
+ GXBg01Control bg1cntsub = G2S_GetBG1Control();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg1cntsub.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg1cntsub.charBase = value;
+ }
+
+ G2S_SetBG1Control(bg1cntsub.screenSize, config->bgs[bgId].colorMode, bg1cntsub.screenBase, bg1cntsub.charBase, bg1cntsub.bgExtPltt);
+ break;
+ case GF_BG_LYR_SUB_2:
+ switch (config->bgs[bgId].mode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ GXBg23ControlText bg2cntsub_tx = G2S_GetBG2ControlText();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg2cntsub_tx.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg2cntsub_tx.charBase = value;
+ }
+
+ G2S_SetBG2ControlText(bg2cntsub_tx.screenSize, config->bgs[bgId].colorMode, bg2cntsub_tx.screenBase, bg2cntsub_tx.charBase);
+ break;
+ case GF_BG_TYPE_AFFINE:
+ GXBg23ControlAffine bg2cntsub_aff = G2S_GetBG2ControlAffine();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg2cntsub_aff.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg2cntsub_aff.charBase = value;
+ }
+
+ G2S_SetBG2ControlAffine(bg2cntsub_aff.screenSize, bg2cntsub_aff.areaOver, bg2cntsub_aff.screenBase,
+ bg2cntsub_aff.charBase);
+ break;
+ case GF_BG_TYPE_256x16PLTT:
+ GXBg23Control256x16Pltt bg2cntsub_256x16pltt = G2S_GetBG2Control256x16Pltt();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg2cntsub_256x16pltt.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg2cntsub_256x16pltt.charBase = value;
+ }
+
+ G2S_SetBG2Control256x16Pltt(bg2cntsub_256x16pltt.screenSize, bg2cntsub_256x16pltt.areaOver,
+ bg2cntsub_256x16pltt.screenBase, bg2cntsub_256x16pltt.charBase);
+ break;
+ }
+ break;
+ case GF_BG_LYR_SUB_3:
+ switch (config->bgs[bgId].mode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ GXBg23ControlText bg3cntsub_tx = G2S_GetBG3ControlText();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg3cntsub_tx.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg3cntsub_tx.charBase = value;
+ }
+
+ G2S_SetBG3ControlText(bg3cntsub_tx.screenSize, config->bgs[bgId].colorMode, bg3cntsub_tx.screenBase, bg3cntsub_tx.charBase);
+ break;
+ case GF_BG_TYPE_AFFINE:
+ GXBg23ControlAffine bg3cntsub_aff = G2S_GetBG3ControlAffine();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg3cntsub_aff.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg3cntsub_aff.charBase = value;
+ }
+
+ G2S_SetBG3ControlAffine(bg3cntsub_aff.screenSize, bg3cntsub_aff.areaOver, bg3cntsub_aff.screenBase,
+ bg3cntsub_aff.charBase);
+ break;
+ case GF_BG_TYPE_256x16PLTT:
+ GXBg23Control256x16Pltt bg3cntsub_256x16pltt = G2S_GetBG3Control256x16Pltt();
+ if (attr == GF_BG_CNT_SET_SCREEN_BASE)
+ {
+ bg3cntsub_256x16pltt.screenBase = value;
+ }
+ else if (attr == GF_BG_CNT_SET_CHAR_BASE)
+ {
+ bg3cntsub_256x16pltt.charBase = value;
+ }
+
+ G2S_SetBG3Control256x16Pltt(bg3cntsub_256x16pltt.screenSize, bg3cntsub_256x16pltt.areaOver,
+ bg3cntsub_256x16pltt.screenBase, bg3cntsub_256x16pltt.charBase);
+ break;
+ }
+ break;
+ }
+}
+
+THUMB_FUNC u8 TranslateGFBgModePairToGXScreenSize(u8 size, u32 bgMode)
+{
+ switch (bgMode)
+ {
+ case GF_BG_TYPE_TEXT:
+
+ if (size == GF_BG_SCR_SIZE_256x256)
+ {
+ return GX_BG_SCRSIZE_TEXT_256x256;
+ }
+ else if (size == GF_BG_SCR_SIZE_256x512)
+ {
+ return GX_BG_SCRSIZE_TEXT_256x512;
+ }
+ else if (size == GF_BG_SCR_SIZE_512x256)
+ {
+ return GX_BG_SCRSIZE_TEXT_512x256;
+ }
+ else if (size == GF_BG_SCR_SIZE_512x512)
+ {
+ return GX_BG_SCRSIZE_TEXT_512x512;
+ }
+ break;
+
+ case GF_BG_TYPE_AFFINE:
+
+ if (size == GF_BG_SCR_SIZE_128x128)
+ {
+ return GX_BG_SCRSIZE_AFFINE_128x128;
+ }
+ else if (size == GF_BG_SCR_SIZE_256x256)
+ {
+ return GX_BG_SCRSIZE_AFFINE_256x256;
+ }
+ else if (size == GF_BG_SCR_SIZE_512x512)
+ {
+ return GX_BG_SCRSIZE_AFFINE_512x512;
+ }
+ else if (size == GF_BG_SCR_SIZE_1024x1024)
+ {
+ return GX_BG_SCRSIZE_AFFINE_1024x1024;
+ }
+ break;
+
+ case GF_BG_TYPE_256x16PLTT:
+
+ if (size == GF_BG_SCR_SIZE_128x128)
+ {
+ return GX_BG_SCRSIZE_256x16PLTT_128x128;
+ }
+ else if (size == GF_BG_SCR_SIZE_256x256)
+ {
+ return GX_BG_SCRSIZE_256x16PLTT_256x256;
+ }
+ else if (size == GF_BG_SCR_SIZE_512x512)
+ {
+ return GX_BG_SCRSIZE_256x16PLTT_512x512;
+ }
+ else if (size == GF_BG_SCR_SIZE_1024x1024)
+ {
+ return GX_BG_SCRSIZE_256x16PLTT_1024x1024;
+ }
+ break;
+ }
+
+ return GX_BG_SCRSIZE_TEXT_256x256; // GX_BG_SCRSIZE_AFFINE_128x128; GX_BG_SCRSIZE_256x16PLTT_128x128;
+}
+
+THUMB_FUNC void GetBgScreenDimensions(u32 screenSize, u8 *width_p, u8 *height_p)
+{
+ switch (screenSize)
+ {
+ case GF_BG_SCR_SIZE_128x128:
+ *width_p = 0x10;
+ *height_p = 0x10;
+ break;
+ case GF_BG_SCR_SIZE_256x256:
+ *width_p = 0x20;
+ *height_p = 0x20;
+ break;
+ case GF_BG_SCR_SIZE_256x512:
+ *width_p = 0x20;
+ *height_p = 0x40;
+ break;
+ case GF_BG_SCR_SIZE_512x256:
+ *width_p = 0x40;
+ *height_p = 0x20;
+ break;
+ case GF_BG_SCR_SIZE_512x512:
+ *width_p = 0x40;
+ *height_p = 0x40;
+ break;
+ case GF_BG_SCR_SIZE_1024x1024:
+ *width_p = 0x80;
+ *height_p = 0x80;
+ break;
+ }
+}
+
+THUMB_FUNC void FreeBgTilemapBuffer(struct BgConfig *bgConfig, u32 bgId)
+{
+ if (bgConfig->bgs[bgId].tilemapBuffer != NULL)
+ {
+ FreeToHeap(bgConfig->bgs[bgId].tilemapBuffer);
+ bgConfig->bgs[bgId].tilemapBuffer = NULL;
+ }
+}
+
+THUMB_FUNC void SetBgPriority(u32 bgId, u16 priority)
+{
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_0:
+ G2_SetBG0Priority(priority);
+ break;
+ case GF_BG_LYR_MAIN_1:
+ G2_SetBG1Priority(priority);
+ break;
+ case GF_BG_LYR_MAIN_2:
+ G2_SetBG2Priority(priority);
+ break;
+ case GF_BG_LYR_MAIN_3:
+ G2_SetBG3Priority(priority);
+ break;
+ case GF_BG_LYR_SUB_0:
+ G2S_SetBG0Priority(priority);
+ break;
+ case GF_BG_LYR_SUB_1:
+ G2S_SetBG1Priority(priority);
+ break;
+ case GF_BG_LYR_SUB_2:
+ G2S_SetBG2Priority(priority);
+ break;
+ case GF_BG_LYR_SUB_3:
+ G2S_SetBG3Priority(priority);
+ break;
+ }
+}
+
+THUMB_FUNC void ToggleBgLayer(u32 bgId, GX_LayerToggle toggle)
+{
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_0:
+ GX_EngineAToggleLayers(GF_BG_LYR_MAIN_0_F, toggle);
+ break;
+ case GF_BG_LYR_MAIN_1:
+ GX_EngineAToggleLayers(GF_BG_LYR_MAIN_1_F, toggle);
+ break;
+ case GF_BG_LYR_MAIN_2:
+ GX_EngineAToggleLayers(GF_BG_LYR_MAIN_2_F, toggle);
+ break;
+ case GF_BG_LYR_MAIN_3:
+ GX_EngineAToggleLayers(GF_BG_LYR_MAIN_3_F, toggle);
+ break;
+ case GF_BG_LYR_SUB_0:
+ GX_EngineBToggleLayers(GF_BG_LYR_SUB_0_F, toggle);
+ break;
+ case GF_BG_LYR_SUB_1:
+ GX_EngineBToggleLayers(GF_BG_LYR_SUB_1_F, toggle);
+ break;
+ case GF_BG_LYR_SUB_2:
+ GX_EngineBToggleLayers(GF_BG_LYR_SUB_2_F, toggle);
+ break;
+ case GF_BG_LYR_SUB_3:
+ GX_EngineBToggleLayers(GF_BG_LYR_SUB_3_F, toggle);
+ break;
+ }
+}
+
+THUMB_FUNC void BgSetPosTextAndCommit(struct BgConfig *bgConfig, u32 bgId, u32 op, fx32 val)
+{
+ Bg_SetPosText(&bgConfig->bgs[bgId], op, val);
+
+ u32 x = (u32)bgConfig->bgs[bgId].hOffset;
+ u32 y = (u32)bgConfig->bgs[bgId].vOffset;
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_0:
+ G2_SetBG0Offset(x, y);
+ break;
+ case GF_BG_LYR_MAIN_1:
+ G2_SetBG1Offset(x, y);
+ break;
+ case GF_BG_LYR_MAIN_2:
+ if (bgConfig->bgs[GF_BG_LYR_MAIN_2].mode == 0)
+ {
+ G2_SetBG2Offset(x, y);
+ }
+ else
+ {
+ BgAffineReset(bgConfig, GF_BG_LYR_MAIN_2);
+ }
+
+ break;
+ case GF_BG_LYR_MAIN_3:
+ if (bgConfig->bgs[GF_BG_LYR_MAIN_3].mode == 0)
+ {
+ G2_SetBG3Offset(x, y);
+ }
+ else
+ {
+ BgAffineReset(bgConfig, GF_BG_LYR_MAIN_3);
+ }
+ break;
+ case GF_BG_LYR_SUB_0:
+ G2S_SetBG0Offset(x, y);
+ break;
+ case GF_BG_LYR_SUB_1:
+ G2S_SetBG1Offset(x, y);
+ break;
+ case GF_BG_LYR_SUB_2:
+ if (bgConfig->bgs[GF_BG_LYR_SUB_2].mode == 0)
+ {
+ G2S_SetBG2Offset(x, y);
+ }
+ else
+ {
+ BgAffineReset(bgConfig, GF_BG_LYR_SUB_2);
+ }
+ break;
+ case GF_BG_LYR_SUB_3:
+ if (bgConfig->bgs[GF_BG_LYR_SUB_3].mode == 0)
+ {
+ G2S_SetBG3Offset(x, y);
+ }
+ else
+ {
+ BgAffineReset(bgConfig, GF_BG_LYR_SUB_3);
+ }
+ break;
+ }
+}
+
+THUMB_FUNC fx32 Bg_GetXpos(struct BgConfig *bgConfig, u32 bgId)
+{
+ return bgConfig->bgs[bgId].hOffset;
+}
+
+THUMB_FUNC fx32 Bg_GetYpos(struct BgConfig *bgConfig, u32 bgId)
+{
+ return bgConfig->bgs[bgId].vOffset;
+}
+
+THUMB_FUNC void Bg_SetTextDimAndAffineParams(struct BgConfig *bgConfig,
+ u32 bgId,
+ u32 txOp,
+ fx32 txVal,
+ struct Mtx22 *mtx,
+ fx32 centerX,
+ fx32 centerY)
+{
+ Bg_SetPosText(&bgConfig->bgs[bgId], txOp, txVal);
+ SetBgAffine(bgConfig, bgId, mtx, centerX, centerY);
+}
+
+THUMB_FUNC void Bg_SetPosText(struct Bg *bg, u32 op, fx32 val)
+{
+ switch (op)
+ {
+ case BG_POS_OP_SET_X:
+ bg->hOffset = val;
+ break;
+ case BG_POS_OP_ADD_X:
+ bg->hOffset += val;
+ break;
+ case BG_POS_OP_SUB_X:
+ bg->hOffset -= val;
+ break;
+ case BG_POS_OP_SET_Y:
+ bg->vOffset = val;
+ break;
+ case BG_POS_OP_ADD_Y:
+ bg->vOffset += val;
+ break;
+ case BG_POS_OP_SUB_Y:
+ bg->vOffset -= val;
+ break;
+ }
+}
+
+THUMB_FUNC void SetBgAffine(
+ struct BgConfig *bgConfig, u32 bgId, struct Mtx22 *mtx, fx32 centerX, fx32 centerY)
+{
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_2:
+ G2_SetBG2Affine(mtx, centerX, centerY, bgConfig->bgs[bgId].hOffset, bgConfig->bgs[bgId].vOffset);
+ break;
+ case GF_BG_LYR_MAIN_3:
+ G2_SetBG3Affine(mtx, centerX, centerY, bgConfig->bgs[bgId].hOffset, bgConfig->bgs[bgId].vOffset);
+ break;
+ case GF_BG_LYR_SUB_2:
+ G2S_SetBG2Affine(mtx, centerX, centerY, bgConfig->bgs[bgId].hOffset, bgConfig->bgs[bgId].vOffset);
+ break;
+ case GF_BG_LYR_SUB_3:
+ G2S_SetBG3Affine(mtx, centerX, centerY, bgConfig->bgs[bgId].hOffset, bgConfig->bgs[bgId].vOffset);
+ break;
+ }
+}
+
+THUMB_FUNC void BgAffineReset(struct BgConfig *bgConfig, u32 bgId)
+{
+ struct Mtx22 mtx;
+ MTX22_2DAffine(&mtx, 0, FX32_ONE, FX32_ONE, 0);
+ SetBgAffine(bgConfig, bgId, &mtx, 0, 0);
+}
+
+THUMB_FUNC void CopyOrUncompressTilemapData(const void *src, void *dest, u32 size)
+{
+ if (size == 0)
+ {
+ MI_UncompressLZ8(src, dest);
+ return;
+ }
+
+ if (((u32)src % 4) == 0 && ((u32)dest % 4) == 0 && ((u16)size % 4) == 0)
+ {
+ MI_CpuCopy32(src, dest, size);
+ return;
+ }
+
+ MI_CpuCopy16(src, dest, size);
+}
+
+THUMB_FUNC void BgCommitTilemapBufferToVram(struct BgConfig *bgConfig, u32 bgId)
+{
+ BgCopyOrUncompressTilemapBufferRangeToVram(bgConfig,
+ bgId,
+ bgConfig->bgs[bgId].tilemapBuffer,
+ bgConfig->bgs[bgId].bufferSize,
+ bgConfig->bgs[bgId].baseTile);
+}
+
+THUMB_FUNC void BgCopyOrUncompressTilemapBufferRangeToVram(
+ struct BgConfig *bgConfig, u32 bgId, u32 *src, u32 size, u32 tileOffset)
+{
+ if (size == 0)
+ {
+ void *tilemapBuffer = bgConfig->bgs[bgId].tilemapBuffer;
+ if (tilemapBuffer != 0)
+ {
+ CopyOrUncompressTilemapData(src, tilemapBuffer, size);
+ LoadBgVramScr(bgId, tilemapBuffer, bgConfig->bgs[bgId].baseTile * 2, bgConfig->bgs[bgId].bufferSize);
+ return;
+ }
+
+ u32 uncompSize = src[0] >> 8;
+ void *ptr = AllocFromHeapAtEnd(bgConfig->heap_id, uncompSize);
+ CopyOrUncompressTilemapData(src, ptr, size);
+ LoadBgVramScr(bgId, ptr, tileOffset * 2, uncompSize);
+ FreeToHeap(ptr);
+ return;
+ }
+
+ LoadBgVramScr(bgId, src, tileOffset * 2, size);
+}
+
+THUMB_FUNC void LoadBgVramScr(u32 bgId, void *buffer_p, u32 offset, u32 size)
+{
+ DC_FlushRange(buffer_p, size);
+
+ switch (bgId)
+ {
+ case 0:
+ GX_LoadBG0Scr(buffer_p, offset, size);
+ break;
+ case 1:
+ GX_LoadBG1Scr(buffer_p, offset, size);
+ break;
+ case 2:
+ GX_LoadBG2Scr(buffer_p, offset, size);
+ break;
+ case 3:
+ GX_LoadBG3Scr(buffer_p, offset, size);
+ break;
+ case 4:
+ GXS_LoadBG0Scr(buffer_p, offset, size);
+ break;
+ case 5:
+ GXS_LoadBG1Scr(buffer_p, offset, size);
+ break;
+ case 6:
+ GXS_LoadBG2Scr(buffer_p, offset, size);
+ break;
+ case 7:
+ GXS_LoadBG3Scr(buffer_p, offset, size);
+ break;
+ }
+}
+
+THUMB_FUNC void BG_LoadScreenTilemapData(
+ struct BgConfig *bgConfig, u32 bgId, void *src, u32 numTiles)
+{
+ CopyOrUncompressTilemapData(src, bgConfig->bgs[bgId].tilemapBuffer, numTiles);
+}
+
+THUMB_FUNC void BG_LoadCharTilesData(
+ struct BgConfig *bgConfig, u32 bgId, u32 *charData, u32 offset, u32 numTiles)
+{
+ if (bgConfig->bgs[bgId].colorMode == GX_BG_COLORMODE_16)
+ {
+ BG_LoadCharPixelData(bgConfig, bgId, charData, offset, numTiles << 5);
+ return;
+ }
+ BG_LoadCharPixelData(bgConfig, bgId, charData, offset, numTiles << 6);
+}
+
+THUMB_FUNC void BG_LoadCharPixelData(
+ struct BgConfig *bgConfig, u32 bgId, u32 *charData, u32 size, u32 offset)
+{
+ if (size == 0)
+ {
+
+ u32 uncompressedSize = charData[0] >> 8;
+ void *ptr = AllocFromHeapAtEnd(bgConfig->heap_id, uncompressedSize);
+ CopyOrUncompressTilemapData(charData, ptr, size);
+ LoadBgVramChar(bgId, ptr, offset, uncompressedSize);
+ FreeToHeap(ptr);
+ return;
+ }
+
+ LoadBgVramChar(bgId, charData, offset, size);
+}
+
+THUMB_FUNC void LoadBgVramChar(u32 bgId, void *buffer_p, u32 offset, u32 size)
+{
+ DC_FlushRange(buffer_p, size);
+
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_0:
+ GX_LoadBG0Char(buffer_p, offset, size);
+ break;
+ case GF_BG_LYR_MAIN_1:
+ GX_LoadBG1Char(buffer_p, offset, size);
+ break;
+ case GF_BG_LYR_MAIN_2:
+ GX_LoadBG2Char(buffer_p, offset, size);
+ break;
+ case GF_BG_LYR_MAIN_3:
+ GX_LoadBG3Char(buffer_p, offset, size);
+ break;
+ case GF_BG_LYR_SUB_0:
+ GXS_LoadBG0Char(buffer_p, offset, size);
+ break;
+ case GF_BG_LYR_SUB_1:
+ GXS_LoadBG1Char(buffer_p, offset, size);
+ break;
+ case GF_BG_LYR_SUB_2:
+ GXS_LoadBG2Char(buffer_p, offset, size);
+ break;
+ case GF_BG_LYR_SUB_3:
+ GXS_LoadBG3Char(buffer_p, offset, size);
+ break;
+ }
+}
+
+THUMB_FUNC void BG_ClearCharDataRange(u32 bgId, u32 size, u32 offset, u32 heap_id)
+{
+ void *ptr = AllocFromHeapAtEnd(heap_id, size);
+ memset(ptr, 0, size);
+
+ LoadBgVramChar(bgId, ptr, offset, size);
+ FreeToHeapExplicit(heap_id, ptr);
+}
+
+THUMB_FUNC void BG_FillCharDataRange(
+ struct BgConfig *param0, u32 bgId, u32 fillValue, u32 count, u32 offset)
+{
+ void *st4;
+ u32 size = count * param0->bgs[bgId].tileSize;
+ u32 r5 = fillValue;
+ st4 = AllocFromHeapAtEnd(param0->heap_id, size);
+
+ if (param0->bgs[bgId].tileSize == 0x20)
+ {
+ r5 = (r5 << 0xc | r5 << 0x8 | r5 << 0x4 | r5);
+ r5 |= r5 << 0x10;
+ }
+ else
+ {
+ r5 = r5 << 0x18 | r5 << 0x10 | r5 << 8 | r5;
+ }
+
+ MI_CpuFillFast(st4, r5, size);
+
+ LoadBgVramChar((u8)bgId, st4, param0->bgs[bgId].tileSize * offset, size);
+ FreeToHeap(st4);
+}
+
+THUMB_FUNC void BG_LoadPlttData(u32 bgId, void *plttData, u32 size, u32 offset)
+{
+ DC_FlushRange(plttData, size);
+ if (bgId < GF_BG_LYR_MAIN_CNT)
+ {
+ GX_LoadBGPltt(plttData, offset, size);
+ return;
+ }
+
+ GXS_LoadBGPltt(plttData, offset, size);
+}
+
+THUMB_FUNC void BG_SetMaskColor(u32 bgId, u32 value)
+{
+ BG_LoadPlttData(bgId, &value, 2, 0);
+}
+
+THUMB_FUNC u16 GetTileMapIndexFromCoords(u8 x, u8 y, u8 screenSize)
+{
+ switch (screenSize)
+ {
+ case GF_BG_SCR_SIZE_128x128:
+ return (u16)(x + (y << 4));
+ case GF_BG_SCR_SIZE_256x256:
+ case GF_BG_SCR_SIZE_256x512:
+ return (u16)(x + (y << 5));
+ case GF_BG_SCR_SIZE_512x256:
+ return (u16)((x & 0x1f) + ((y + (x & ~0x1f)) << 5));
+ case GF_BG_SCR_SIZE_512x512:
+ u16 res = (u16)(((u16)((x >> 5) + (y >> 5) * 2)) << 10);
+ res += (x & 0x1f) + ((y & 0x1f) << 5);
+ return res;
+ case GF_BG_SCR_SIZE_1024x1024:
+ return 0;
+ }
+
+ return x;
+}
+
+THUMB_FUNC u16 GetSrcTileMapIndexFromCoords(u8 x, u8 y, u8 width, u8 height)
+{
+ u8 coordType = 0;
+ u16 r3 = 0;
+ s16 r4 = (s16)(width - 32);
+ s16 r5 = (s16)(height - 32);
+
+ if (((u32)x >> 5) != 0)
+ {
+ coordType++;
+ }
+
+ if (((u32)y >> 5) != 0)
+ {
+ coordType += 2;
+ }
+
+ switch (coordType)
+ {
+ case 0:
+ if (r4 >= 0)
+ {
+ r3 += x + (y << 5);
+ }
+ else
+ {
+ r3 += x + y * width;
+ }
+ break;
+ case 1:
+ if (r5 >= 0)
+ {
+ r3 += 0x400;
+ }
+ else
+ {
+ r3 += (height << 5);
+ }
+
+ r3 += (x & 0x1f) + y * r4;
+ break;
+ case 2:
+ r3 += width << 5;
+ if (r4 >= 0)
+ {
+ r3 += x + ((y & 0x1f) << 5);
+ }
+ else
+ {
+ r3 += x + (y & 0x1f) * width;
+ }
+ break;
+ case 3:
+ r3 += (width + r5) << 5;
+ r3 += (x & 0x1f) + (y & 0x1f) * r4;
+ break;
+ }
+
+ return r3;
+}
+
+THUMB_FUNC void LoadRectToBgTilemapRect(struct BgConfig *bgConfig,
+ u32 bgId,
+ void *src,
+ u8 dstX,
+ u8 dstY,
+ u8 width,
+ u8 height)
+{
+ CopyToBgTilemapRect(bgConfig, bgId, dstX, dstY, width, height, src, 0, 0, width, height);
+}
+
+THUMB_FUNC void CopyToBgTilemapRect(struct BgConfig *bgConfig,
+ u32 bgId,
+ u8 dstX,
+ u8 dstY,
+ u8 dstWidth,
+ u8 dstHeight,
+ void *src,
+ u8 srcX,
+ u8 srcY,
+ u8 srcWidth,
+ u8 srcHeight)
+{
+ if (bgConfig->bgs[bgId].mode != 1)
+ {
+ CopyBgTilemapRectText(&bgConfig->bgs[bgId],
+ dstX,
+ dstY,
+ dstWidth,
+ dstHeight,
+ (u16 *) src,
+ srcX,
+ srcY,
+ srcWidth,
+ srcHeight,
+ 0);
+ }
+ else
+ {
+ CopyBgTilemapRectAffine(&bgConfig->bgs[bgId],
+ dstX,
+ dstY,
+ dstWidth,
+ dstHeight,
+ (u8 *) src,
+ srcX,
+ srcY,
+ srcWidth,
+ srcHeight,
+ 0);
+ }
+}
+
+THUMB_FUNC void CopyRectToBgTilemapRect(struct BgConfig *bgConfig,
+ u32 bgId,
+ u8 dstX,
+ u8 dstY,
+ u8 dstWidth,
+ u8 dstHeight,
+ void *src,
+ u8 srcX,
+ u8 srcY,
+ u8 srcWidth,
+ u8 srcHeight)
+{
+ if (bgConfig->bgs[bgId].mode != 1)
+ {
+ CopyBgTilemapRectText(&bgConfig->bgs[bgId],
+ dstX,
+ dstY,
+ dstWidth,
+ dstHeight,
+ (u16 *) src,
+ srcX,
+ srcY,
+ srcWidth,
+ srcHeight,
+ TRUE);
+ }
+ else
+ {
+ CopyBgTilemapRectAffine(&bgConfig->bgs[bgId],
+ dstX,
+ dstY,
+ dstWidth,
+ dstHeight,
+ (u8 *) src,
+ srcX,
+ srcY,
+ srcWidth,
+ srcHeight,
+ TRUE);
+ }
+}
+
+THUMB_FUNC void CopyBgTilemapRectText(struct Bg *bg,
+ u8 dstX,
+ u8 dstY,
+ u8 dstWidth,
+ u8 dstHeight,
+ u16 *src,
+ u8 srcX,
+ u8 srcY,
+ u8 srcWidth,
+ u8 srcHeight,
+ u8 adjustForSrcDims)
+{
+ u16 *tilemapBuffer = bg->tilemapBuffer;
+
+ if (tilemapBuffer == 0)
+ {
+ return;
+ }
+
+ u8 screenWidth;
+ u8 screenHeight;
+ GetBgScreenDimensions(bg->size, &screenWidth, &screenHeight);
+
+ u8 i;
+ u8 j;
+ if (adjustForSrcDims == 0)
+ {
+ for (i = 0; i < dstHeight; i++)
+ {
+
+ if (dstY + i >= screenHeight)
+ {
+ break;
+ }
+
+ if (srcY + i >= srcHeight)
+ {
+ break;
+ }
+
+ for (j = 0; j < dstWidth; j++)
+ {
+
+ if (dstX + j >= screenWidth)
+ {
+ break;
+ }
+
+ if (srcX + j >= srcWidth)
+ {
+ break;
+ }
+
+ ((u16 *)tilemapBuffer)[GetTileMapIndexFromCoords((u8) (dstX + j), (u8) (dstY + i), bg->size)] =
+ src[srcX + srcWidth * (srcY + i) + j];
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < dstHeight; i++)
+ {
+
+ if (dstY + i >= screenHeight)
+ {
+ break;
+ }
+
+ if (srcY + i >= srcHeight)
+ {
+ break;
+ }
+
+ for (j = 0; j < dstWidth; j++)
+ {
+
+ if (dstX + j >= screenWidth)
+ {
+ break;
+ }
+
+ if (srcX + j >= srcWidth)
+ {
+ break;
+ }
+
+ ((u16 *)tilemapBuffer)[GetTileMapIndexFromCoords((u8) (dstX + j), (u8) (dstY + i), bg->size)] =
+ src[GetSrcTileMapIndexFromCoords((u8) (srcX + j), (u8) (srcY + i), srcWidth, srcHeight)];
+ }
+ }
+ }
+}
+
+THUMB_FUNC void CopyBgTilemapRectAffine(struct Bg *bg,
+ u8 dstX,
+ u8 dstY,
+ u8 dstWidth,
+ u8 dstHeight,
+ u8 *src,
+ u8 srcX,
+ u8 srcY,
+ u8 srcWidth,
+ u8 srcHeight,
+ u8 adjustForSrcDims)
+{
+ void *tilemapBuffer = bg->tilemapBuffer;
+
+ if (tilemapBuffer == 0)
+ {
+ return;
+ }
+
+ u8 screenWidth;
+ u8 screenHeight;
+ GetBgScreenDimensions(bg->size, &screenWidth, &screenHeight);
+
+ u8 i;
+ u8 j;
+ if (adjustForSrcDims == 0)
+ {
+ for (i = 0; i < dstHeight; i++)
+ {
+
+ if (dstY + i >= screenHeight)
+ {
+ break;
+ }
+
+ if (srcY + i >= srcHeight)
+ {
+ break;
+ }
+
+ for (j = 0; j < dstWidth; j++)
+ {
+
+ if (dstX + j >= screenWidth)
+ {
+ break;
+ }
+
+ if (srcX + j >= srcWidth)
+ {
+ break;
+ }
+
+ ((u8 *)tilemapBuffer)[GetTileMapIndexFromCoords((u8) (dstX + j), (u8) (dstY + i), bg->size)] =
+ src[srcX + srcWidth * (srcY + i) + j];
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < dstHeight; i++)
+ {
+
+ if (dstY + i >= screenHeight)
+ {
+ break;
+ }
+
+ if (srcY + i >= srcHeight)
+ {
+ break;
+ }
+
+ for (j = 0; j < dstWidth; j++)
+ {
+
+ if (dstX + j >= screenWidth)
+ {
+ break;
+ }
+
+ if (srcX + j >= srcWidth)
+ {
+ break;
+ }
+
+ ((u8 *)tilemapBuffer)[GetTileMapIndexFromCoords((u8) (dstX + j), (u8) (dstY + i), bg->size)] =
+ src[GetSrcTileMapIndexFromCoords((u8) (srcX + j), (u8) (srcY + i), srcWidth, srcHeight)];
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FillBgTilemapRect(struct BgConfig *bgConfig,
+ u32 bgId,
+ u16 fillValue,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum)
+{
+ if (bgConfig->bgs[bgId].mode != 1)
+ {
+
+ FillBgTilemapRectText(&bgConfig->bgs[bgId], fillValue, x, y, width, height, paletteNum);
+ }
+ else
+ {
+ FillBgTilemapRectAffine(&bgConfig->bgs[bgId], (u8) fillValue, x, y, width, height);
+ }
+}
+
+THUMB_FUNC void FillBgTilemapRectText(struct Bg *bg,
+ u16 fillValue,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum)
+{
+ void *tilemapBuffer = bg->tilemapBuffer;
+
+ if (tilemapBuffer != 0)
+ {
+
+ u8 screenWidth;
+ u8 screenHeight;
+ GetBgScreenDimensions(bg->size, &screenWidth, &screenHeight);
+
+ u8 i;
+ u8 j;
+ for (i = y; i < y + height; i++)
+ {
+ if (i >= screenHeight)
+ {
+ break;
+ }
+
+ for (j = x; j < x + width; j++)
+ {
+ if (j >= screenWidth)
+ {
+ break;
+ }
+
+ u16 idx = GetTileMapIndexFromCoords(j, i, bg->size);
+
+ if (paletteNum == 0x11)
+ {
+ ((u16 *)tilemapBuffer)[idx] = fillValue;
+ }
+ else if (paletteNum == 0x10)
+ {
+ ((u16 *)tilemapBuffer)[idx] = (u16)((((u16 *)tilemapBuffer)[idx] & 0xF000) + fillValue);
+ }
+ else
+ {
+ ((u16 *)tilemapBuffer)[idx] = (u16)((paletteNum << 0xc) + fillValue);
+ }
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FillBgTilemapRectAffine(
+ struct Bg *bg, u8 fillValue, u8 x, u8 y, u8 width, u8 height)
+{
+ void *tilemapBuffer = bg->tilemapBuffer;
+
+ if (tilemapBuffer != 0)
+ {
+
+ u8 screenWidth;
+ u8 screenHeight;
+ GetBgScreenDimensions(bg->size, &screenWidth, &screenHeight);
+
+ u8 i;
+ u8 j;
+ for (i = y; i < y + height; i++)
+ {
+ if (i >= screenHeight)
+ {
+ break;
+ }
+
+ for (j = x; j < x + width; j++)
+ {
+ if (j >= screenWidth)
+ {
+ break;
+ }
+
+ ((u8 *)tilemapBuffer)[GetTileMapIndexFromCoords(j, i, bg->size)] = fillValue;
+ }
+ }
+ }
+}
+
+THUMB_FUNC void BgTilemapRectChangePalette(struct BgConfig *bgConfig,
+ u32 bgId,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum)
+{
+ void *tilemapBuffer = bgConfig->bgs[bgId].tilemapBuffer;
+
+ if (tilemapBuffer != NULL)
+ {
+ u8 screenWidth;
+ u8 screenHeight;
+ GetBgScreenDimensions(bgConfig->bgs[bgId].size, &screenWidth, &screenHeight);
+
+ u8 i;
+ u8 j;
+ for (i = y; i < y + height; i++)
+ {
+ if (i >= screenHeight)
+ {
+ break;
+ }
+
+ for (j = x; j < x + width; j++)
+ {
+ if (j >= screenWidth)
+ {
+ break;
+ }
+
+ u16 idx = GetTileMapIndexFromCoords(j, i, bgConfig->bgs[bgId].size);
+ ((u16 *)tilemapBuffer)[idx] = (u16)((((u16 *)tilemapBuffer)[idx] & 0xfff) | (paletteNum << 0xc));
+ }
+ }
+ }
+}
+
+THUMB_FUNC void BgClearTilemapBufferAndCommit(struct BgConfig *bgConfig, u32 bgId)
+{
+ if (bgConfig->bgs[bgId].tilemapBuffer != NULL)
+ {
+ MI_CpuClear16(bgConfig->bgs[bgId].tilemapBuffer, bgConfig->bgs[bgId].bufferSize);
+ BgCommitTilemapBufferToVram(bgConfig, bgId);
+ }
+}
+
+THUMB_FUNC void BgFillTilemapBufferAndCommit(struct BgConfig *bgConfig, u32 bgId, u16 fillValue)
+{
+ if (bgConfig->bgs[bgId].tilemapBuffer != NULL)
+ {
+ MI_CpuFill16(bgConfig->bgs[bgId].tilemapBuffer, fillValue, bgConfig->bgs[bgId].bufferSize);
+ BgCommitTilemapBufferToVram(bgConfig, bgId);
+ }
+}
+
+THUMB_FUNC void BgFillTilemapBufferAndSchedule(struct BgConfig *bgConfig, u32 bgId, u16 fillValue)
+{
+ if (bgConfig->bgs[bgId].tilemapBuffer != NULL)
+ {
+ MI_CpuFill16(bgConfig->bgs[bgId].tilemapBuffer, fillValue, bgConfig->bgs[bgId].bufferSize);
+ ScheduleBgTilemapBufferTransfer(bgConfig, bgId);
+ }
+}
+
+THUMB_FUNC void *BgGetCharPtr(u32 bgId)
+{
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_0:
+ return G2_GetBG0CharPtr();
+ case GF_BG_LYR_MAIN_1:
+ return G2_GetBG1CharPtr();
+ case GF_BG_LYR_MAIN_2:
+ return G2_GetBG2CharPtr();
+ case GF_BG_LYR_MAIN_3:
+ return G2_GetBG3CharPtr();
+ case GF_BG_LYR_SUB_0:
+ return G2S_GetBG0CharPtr();
+ case GF_BG_LYR_SUB_1:
+ return G2S_GetBG1CharPtr();
+ case GF_BG_LYR_SUB_2:
+ return G2S_GetBG2CharPtr();
+ case GF_BG_LYR_SUB_3:
+ return G2S_GetBG3CharPtr();
+ }
+
+ return NULL;
+}
+
+THUMB_FUNC void Convert4bppTo8bppInternal(u8 *src4bpp, u32 size, u8 (*dest8bpp), u8 paletteNum)
+{
+ paletteNum <<= 4;
+ for (u32 i = 0; i < size; i++)
+ {
+ dest8bpp[i * 2 + 0] = (u8)(src4bpp[i] & 0xf);
+ if (dest8bpp[i * 2 + 0] != 0)
+ {
+ dest8bpp[i * 2 + 0] += paletteNum;
+ }
+
+ dest8bpp[i * 2 + 1] = (u8)((src4bpp[i] >> 4) & 0xf);
+ if (dest8bpp[i * 2 + 1] != 0)
+ {
+ dest8bpp[i * 2 + 1] += paletteNum;
+ }
+ }
+}
+
+THUMB_FUNC u8 *Convert4bppTo8bpp(u8 *src4Bpp, u32 size, u8 paletteNum, u32 heap_id)
+{
+ u8 *ptr = (u8*)AllocFromHeap(heap_id, size * 2);
+
+ Convert4bppTo8bppInternal(src4Bpp, size, ptr, paletteNum);
+
+ return ptr;
+}
+
+THUMB_FUNC void *GetBgTilemapBuffer(struct BgConfig *bgConfig, u8 bgId)
+{
+ return bgConfig->bgs[bgId].tilemapBuffer;
+}
+
+THUMB_FUNC u16 GetBgAffineRotation(struct BgConfig *bgConfig, u32 bgId)
+{
+ return bgConfig->bgs[bgId].rotation;
+}
+
+THUMB_FUNC u8 GetBgPriority(struct BgConfig *bgConfig, u32 bgId)
+{
+ switch (bgId)
+ {
+ case GF_BG_LYR_MAIN_0:
+ return G2_GetBG0Control().priority;
+ case GF_BG_LYR_MAIN_1:
+ return G2_GetBG1Control().priority;
+ case GF_BG_LYR_MAIN_2:
+ switch (bgConfig->bgs[bgId].mode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ return G2_GetBG2ControlText().priority;
+ case GF_BG_TYPE_AFFINE:
+ return G2_GetBG2ControlAffine().priority;
+ case GF_BG_TYPE_256x16PLTT:
+ return G2_GetBG2Control256x16Pltt().priority;
+ }
+ break;
+ case GF_BG_LYR_MAIN_3:
+ switch (bgConfig->bgs[bgId].mode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ return G2_GetBG3ControlText().priority;
+ case GF_BG_TYPE_AFFINE:
+ return G2_GetBG3ControlAffine().priority;
+ case GF_BG_TYPE_256x16PLTT:
+ return G2_GetBG3Control256x16Pltt().priority;
+ }
+ break;
+
+ case GF_BG_LYR_SUB_0:
+ return G2S_GetBG0Control().priority;
+ case GF_BG_LYR_SUB_1:
+ return G2S_GetBG1Control().priority;
+
+ case GF_BG_LYR_SUB_2:
+ switch (bgConfig->bgs[bgId].mode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ return G2S_GetBG2ControlText().priority;
+ case GF_BG_TYPE_AFFINE:
+ return G2S_GetBG2ControlAffine().priority;
+ case GF_BG_TYPE_256x16PLTT:
+ return G2S_GetBG2Control256x16Pltt().priority;
+ }
+ break;
+ case GF_BG_LYR_SUB_3:
+ switch (bgConfig->bgs[bgId].mode)
+ {
+ default:
+ case GF_BG_TYPE_TEXT:
+ return G2S_GetBG3ControlText().priority;
+ case GF_BG_TYPE_AFFINE:
+ return G2S_GetBG3ControlAffine().priority;
+ case GF_BG_TYPE_256x16PLTT:
+ return G2S_GetBG3Control256x16Pltt().priority;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC void BlitBitmapRect4Bit(const struct Bitmap *src,
+ const struct Bitmap *dst,
+ u16 srcX,
+ u16 srcY,
+ u16 dstX,
+ u16 dstY,
+ u16 width,
+ u16 height,
+ u16 colorKey)
+{
+ int xEnd, yEnd;
+ int multiplierSrcY, multiplierDstY;
+ int loopSrcY, loopDstY;
+ int loopSrcX, loopDstX;
+ int toOrr, toShift;
+ u8 * pixelsSrc, * pixelsDst;
+
+ if (dst->width - dstX < width)
+ xEnd = dst->width - dstX + srcX;
+ else
+ xEnd = width + srcX;
+ if (dst->height - dstY < height)
+ yEnd = dst->height - dstY + srcY;
+ else
+ yEnd = height + srcY;
+ multiplierSrcY = (src->width + (src->width & 7)) >> 3;
+ multiplierDstY = (dst->width + (dst->width & 7)) >> 3;
+
+ if (colorKey == 0xFFFF)
+ {
+ for (loopSrcY = srcY, loopDstY = dstY; loopSrcY < yEnd; loopSrcY++, loopDstY++)
+ {
+ for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
+ {
+ pixelsSrc = (u8 *)(src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX << 2) & 0x3FE0) + (((loopSrcY << 2) & 0x3FE0) * multiplierSrcY) + (((loopSrcY << 2) & 0x1C)));
+ pixelsDst = (u8 *)(dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX << 2) & 0x3FE0) + (((loopDstY << 2) & 0x3FE0) * multiplierDstY) + (((loopDstY << 2) & 0x1C)));
+
+ toOrr = (*pixelsSrc >> ((loopSrcX & 1) * 4)) & 0xF;
+ toShift = (loopDstX & 1) * 4;
+ *pixelsDst = ((toOrr << toShift) | (*pixelsDst & (0xF0 >> toShift)));
+ }
+ }
+ }
+ else
+ {
+ for (loopSrcY = srcY, loopDstY = dstY; loopSrcY < yEnd; loopSrcY++, loopDstY++)
+ {
+ for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
+ {
+ pixelsSrc = (u8 *)(src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX << 2) & 0x3FE0) + (((loopSrcY << 2) & 0x3FE0) * multiplierSrcY) + ((u32)((loopSrcY << 2) & 0x1C)));
+ pixelsDst = (u8 *)(dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX << 2) & 0x3FE0) + (((loopDstY << 2) & 0x3FE0) * multiplierDstY) + ((u32)((loopDstY << 2) & 0x1C)));
+
+ toOrr = (*pixelsSrc >> ((loopSrcX & 1) * 4)) & 0xF;
+ if (toOrr != colorKey)
+ {
+ toShift = (loopDstX & 1) * 4;
+ *pixelsDst = (u8) ((toOrr << toShift) | (*pixelsDst & (0xF0 >> toShift)));
+ }
+ }
+ }
+ }
+}
+
+THUMB_FUNC void BlitBitmapRect8Bit(const struct Bitmap *src,
+ const struct Bitmap *dst,
+ u16 srcX,
+ u16 srcY,
+ u16 dstX,
+ u16 dstY,
+ u16 width,
+ u16 height,
+ u16 colorKey)
+{
+ int xEnd, yEnd;
+ int multiplierSrcY, multiplierDstY;
+ int loopSrcY, loopDstY;
+ int loopSrcX, loopDstX;
+ u8 * pixelsSrc, * pixelsDst;
+
+ if (dst->width - dstX < width)
+ xEnd = dst->width - dstX + srcX;
+ else
+ xEnd = width + srcX;
+ if (dst->height - dstY < height)
+ yEnd = dst->height - dstY + srcY;
+ else
+ yEnd = height + srcY;
+ multiplierSrcY = (src->width + (src->width & 7)) >> 3;
+ multiplierDstY = (dst->width + (dst->width & 7)) >> 3;
+
+ if (colorKey == 0xFFFF)
+ {
+ for (loopSrcY = srcY, loopDstY = dstY; loopSrcY < yEnd; loopSrcY++, loopDstY++)
+ {
+ for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
+ {
+ pixelsSrc = (u8 *)(src->pixels + ((loopSrcX >> 0) & 7) + ((loopSrcX << 3) & 0x7FC0) + (((loopSrcY << 3) & 0x7FC0) * multiplierSrcY) + (((loopSrcY << 3) & 0x38)));
+ pixelsDst = (u8 *)(dst->pixels + ((loopDstX >> 0) & 7) + ((loopDstX << 3) & 0x7FC0) + (((loopDstY << 3) & 0x7FC0) * multiplierDstY) + (((loopDstY << 3) & 0x38)));
+
+ *pixelsDst = *pixelsSrc;
+ }
+ }
+ }
+ else
+ {
+ for (loopSrcY = srcY, loopDstY = dstY; loopSrcY < yEnd; loopSrcY++, loopDstY++)
+ {
+ for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
+ {
+ pixelsSrc = (u8 *)(src->pixels + ((loopSrcX >> 0) & 7) + ((loopSrcX << 3) & 0x7FC0) + (((loopSrcY << 3) & 0x7FC0) * multiplierSrcY) + (((loopSrcY << 3) & 0x38)));
+ pixelsDst = (u8 *)(dst->pixels + ((loopDstX >> 0) & 7) + ((loopDstX << 3) & 0x7FC0) + (((loopDstY << 3) & 0x7FC0) * multiplierDstY) + (((loopDstY << 3) & 0x38)));
+
+ if (*pixelsSrc != colorKey)
+ *pixelsDst = *pixelsSrc;
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FillBitmapRect4Bit(
+ struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue)
+{
+
+ int r6 = x + width;
+ if (r6 > surface->width)
+ {
+ r6 = surface->width;
+ }
+
+ int r12 = y + height;
+ if (r12 > surface->height)
+ {
+ r12 = surface->height;
+ }
+
+ int lr = (((surface->width) + (surface->width & 7)) >> 3);
+
+ for (int i = y; i < r12; i++)
+ {
+
+ for (int j = x; j < r6; j++)
+ {
+
+ u8 *unk = (u8 *)((u8 *)surface->pixels + ((j >> 1) & 3) + ((j << 2) & 0x3fe0) +
+ (((i << 2) & 0x3fe0) * lr) + ((i << 2) & 0x1c));
+
+ if ((j & 1) != 0)
+ {
+ *unk &= 0xf;
+ *unk |= (fillValue << 4);
+ }
+ else
+ {
+ *unk &= 0xf0;
+ *unk |= fillValue;
+ }
+ }
+ }
+}
+
+THUMB_FUNC void FillBitmapRect8Bit(
+ struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue)
+{
+
+ int r6 = x + width;
+ if (r6 > surface->width)
+ {
+ r6 = surface->width;
+ }
+
+ int r12 = y + height;
+ if (r12 > surface->height)
+ {
+ r12 = surface->height;
+ }
+
+ int lr = (((surface->width) + (surface->width & 7)) >> 3);
+
+ for (int i = y; i < r12; i++)
+ {
+
+ for (int j = x; j < r6; j++)
+ {
+
+ u8 *unk = (u8 *)((u8 *)surface->pixels + (j & 7) + ((j << 3) & 0x7fc0) +
+ (((i << 3) & 0x7fc0) * lr) + ((i << 3) & 0x38));
+
+ *unk = fillValue;
+ }
+ }
+}
+
+THUMB_FUNC struct Window *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 *window)
+{
+ window->bgConfig = NULL;
+ window->bgId = GF_BG_LYR_UNALLOC;
+ window->tilemapLeft = 0;
+ window->tilemapTop = 0;
+ window->width = 0;
+ window->height = 0;
+ window->paletteNum = 0;
+
+ window->baseTile = 0;
+ window->pixelBuffer = NULL;
+
+ window->colorMode = GF_BG_CLR_4BPP;
+}
+
+THUMB_FUNC BOOL WindowIsInUse(struct Window *window)
+{
+ if (window->bgConfig == NULL || window->bgId == 0xff || window->pixelBuffer == NULL)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+THUMB_FUNC void AddWindowParameterized(struct BgConfig *param0,
+ struct Window *window,
+ u8 bgId,
+ u8 tilemapLeft,
+ u8 tilemapTop,
+ u8 width,
+ u8 height,
+ u8 paletteNum,
+ u16 baseTile)
+{
+ if (param0->bgs[bgId].tilemapBuffer == NULL)
+ {
+ return;
+ }
+
+ void *ptr = AllocFromHeap(param0->heap_id, (u32)(width * height * param0->bgs[bgId].tileSize));
+
+ if (ptr == NULL)
+ {
+ return;
+ }
+ window->bgConfig = param0;
+ window->bgId = bgId;
+ window->tilemapLeft = tilemapLeft;
+ window->tilemapTop = tilemapTop;
+ window->width = width;
+ window->height = height;
+ window->paletteNum = paletteNum;
+
+ window->baseTile = baseTile;
+ window->pixelBuffer = ptr;
+
+ window->colorMode = param0->bgs[bgId].colorMode == GX_BG_COLORMODE_16 ? GF_BG_CLR_4BPP : GF_BG_CLR_8BPP;
+}
+
+THUMB_FUNC void AddTextWindowTopLeftCorner(struct BgConfig *param0,
+ struct Window *window,
+ u8 width,
+ u8 height,
+ u16 baseTile,
+ u8 paletteNum)
+{
+ u32 size = (u32)(width * height * 32);
+
+ void *ptr = AllocFromHeap(param0->heap_id, size);
+
+ paletteNum |= (paletteNum * 16);
+ memset(ptr, paletteNum, size);
+
+ if (ptr != NULL)
+ {
+ window->bgConfig = param0;
+ window->width = width;
+ window->height = height;
+ window->baseTile = baseTile;
+ window->pixelBuffer = ptr;
+ window->colorMode = GF_BG_CLR_4BPP;
+ }
+}
+
+THUMB_FUNC void AddWindow(
+ struct BgConfig *bgConfig, struct Window *window, const struct WindowTemplate *template)
+{
+
+ AddWindowParameterized(bgConfig,
+ window,
+ template->bgId,
+ template->tilemapLeft,
+ template->tilemapTop,
+ template->width,
+ template->height,
+ template->paletteNum,
+ template->baseTile);
+}
+
+THUMB_FUNC void RemoveWindow(struct Window *window)
+{
+ FreeToHeap(window->pixelBuffer);
+
+ window->bgConfig = NULL;
+ window->bgId = 0xff;
+ window->tilemapLeft = 0;
+ window->tilemapTop = 0;
+ window->width = 0;
+ window->height = 0;
+ window->paletteNum = 0;
+ window->baseTile = 0;
+ window->pixelBuffer = NULL;
+}
+
+THUMB_FUNC void WindowArray_dtor(struct Window *windows, int count)
+{
+ for (u16 i = 0; i < count; i++)
+ {
+ if (windows[i].pixelBuffer != NULL)
+ {
+ FreeToHeap(windows[i].pixelBuffer);
+ }
+ }
+
+ FreeToHeap(windows);
+}
+
+THUMB_FUNC void CopyWindowToVram(struct Window *window)
+{
+
+ GF_ASSERT(window != NULL);
+ GF_ASSERT(window->bgConfig != NULL);
+ GF_ASSERT(window->bgId < NELEMS(window->bgConfig->bgs));
+ GF_ASSERT(window->bgConfig->bgs[window->bgId].mode < NELEMS(sCopyWindowToVramFuncs));
+
+ sCopyWindowToVramFuncs[window->bgConfig->bgs[window->bgId].mode](window);
+}
+
+THUMB_FUNC void ScheduleWindowCopyToVram(struct Window *window)
+{
+
+ GF_ASSERT(window);
+ GF_ASSERT(window->bgConfig);
+ GF_ASSERT(window->bgId < NELEMS(window->bgConfig->bgs));
+ GF_ASSERT(window->bgConfig->bgs[window->bgId].mode < NELEMS(sScheduleWindowCopyToVramFuncs));
+
+ sScheduleWindowCopyToVramFuncs[window->bgConfig->bgs[window->bgId].mode](window);
+}
+
+THUMB_FUNC void PutWindowTilemap(struct Window *window)
+{
+ sPutWindowTilemapFuncs[window->bgConfig->bgs[window->bgId].mode](window);
+}
+
+THUMB_FUNC void PutWindowTilemapRectAnchoredTopLeft(struct Window *window, u8 width, u8 height)
+{
+ u8 widthBak = window->width;
+ u8 heightBak = window->height;
+
+ window->width = width;
+ window->height = height;
+ sPutWindowTilemapFuncs[window->bgConfig->bgs[window->bgId].mode](window);
+
+ window->width = widthBak;
+ window->height = heightBak;
+}
+
+THUMB_FUNC void ClearWindowTilemap(struct Window *window)
+{
+ sClearWindowTilemapFuncs[window->bgConfig->bgs[window->bgId].mode](window);
+}
+
+THUMB_FUNC void PutWindowTilemap_TextMode(struct Window *param0)
+{
+ u32 i, j;
+ u32 r3;
+ u32 iCount, jCount;
+ u16 *st4 = param0->bgConfig->bgs[param0->bgId].tilemapBuffer;
+
+ if (st4 == NULL)
+ {
+ return;
+ }
+
+ r3 = param0->baseTile;
+ jCount = (u32)(param0->tilemapLeft + param0->width);
+ iCount = (u32)(param0->tilemapTop + param0->height);
+
+ for (i = param0->tilemapTop; i < iCount; i++)
+ {
+ for (j = param0->tilemapLeft; j < jCount; j++)
+ {
+ st4[((i & 0x20) * 32) + ((j & 0x20) * 32) + ((i & 0x1f) << 5) + (j & 0x1f)] =
+ (u16)(r3 | (param0->paletteNum << 12));
+
+ r3++;
+ }
+ }
+}
+
+THUMB_FUNC void PutWindowTilemap_AffineMode(struct Window *window)
+{
+ int j, i;
+ u8 *dst;
+
+ int tileId;
+ int tilemapWidth;
+
+ if (window->bgConfig->bgs[window->bgId].tilemapBuffer == NULL)
+ {
+ return;
+ }
+
+ tilemapWidth = sTilemapWidthByBufferSize[window->bgConfig->bgs[window->bgId].size];
+
+ dst = window->bgConfig->bgs[window->bgId].tilemapBuffer + window->tilemapTop * tilemapWidth + window->tilemapLeft;
+ tileId = window->baseTile;
+
+ for (i = 0; i < window->height; i++)
+ {
+ for (j = 0; j < window->width; j++)
+ {
+ dst[j] = (u8)tileId;
+ tileId++;
+ }
+ dst += tilemapWidth;
+ }
+}
+
+THUMB_FUNC void ClearWindowTilemapText(struct Window *window)
+{
+
+ u32 i, j;
+
+ u32 yEnd, xEnd;
+ u32 tilemapWidth;
+
+ u16 *dst;
+
+ if (window->bgConfig->bgs[window->bgId].tilemapBuffer == NULL)
+ {
+ return;
+ }
+ dst = window->bgConfig->bgs[window->bgId].tilemapBuffer;
+
+ tilemapWidth = sTilemapWidthByBufferSize[window->bgConfig->bgs[window->bgId].size];
+ xEnd = (u32)(window->tilemapLeft + window->width);
+ yEnd = (u32)(window->tilemapTop + window->height);
+
+ for (i = window->tilemapTop; i < yEnd; i++)
+ {
+ for (j = window->tilemapLeft; j < xEnd; j++)
+ {
+ dst[((i & 0x20) * 32) + ((j & 0x20) * 32) + ((i & 0x1f) * tilemapWidth) + (j & 0x1f)] = 0;
+ }
+ }
+}
+
+THUMB_FUNC void ClearWindowTilemapAffine(struct Window *window)
+{
+
+ int j, i;
+ u8 *dstPos;
+
+ int tilemapWidth;
+
+ if (window->bgConfig->bgs[window->bgId].tilemapBuffer == NULL)
+ {
+ return;
+ }
+
+ tilemapWidth = sTilemapWidthByBufferSize[window->bgConfig->bgs[window->bgId].size];
+ dstPos = window->bgConfig->bgs[window->bgId].tilemapBuffer + window->tilemapTop * tilemapWidth + window->tilemapLeft;
+
+ for (i = 0; i < window->height; i++)
+ {
+ for (j = 0; j < window->width; j++)
+ {
+ dstPos[j] = 0;
+ }
+ dstPos += tilemapWidth;
+ }
+}
+
+THUMB_FUNC void CopyWindowToVram_TextMode(struct Window *window)
+{
+ PutWindowTilemap_TextMode(window);
+ CopyWindowPixelsToVram_TextMode(window);
+ BgCopyOrUncompressTilemapBufferRangeToVram(window->bgConfig,
+ window->bgId,
+ window->bgConfig->bgs[window->bgId].tilemapBuffer,
+ window->bgConfig->bgs[window->bgId].bufferSize,
+ window->bgConfig->bgs[window->bgId].baseTile);
+}
+
+THUMB_FUNC void ScheduleWindowCopyToVram_TextMode(struct Window *window)
+{
+ PutWindowTilemap_TextMode(window);
+ ScheduleBgTilemapBufferTransfer(window->bgConfig, window->bgId);
+ CopyWindowPixelsToVram_TextMode(window);
+}
+
+THUMB_FUNC void CopyWindowToVram_AffineMode(struct Window *window)
+{
+ PutWindowTilemap_AffineMode(window);
+ BgCopyOrUncompressTilemapBufferRangeToVram(window->bgConfig,
+ window->bgId,
+ window->bgConfig->bgs[window->bgId].tilemapBuffer,
+ window->bgConfig->bgs[window->bgId].bufferSize,
+ window->bgConfig->bgs[window->bgId].baseTile);
+
+ BG_LoadCharTilesData(window->bgConfig,
+ window->bgId,
+ window->pixelBuffer,
+ (u32)(window->width * window->height * 64),
+ window->baseTile);
+}
+
+THUMB_FUNC void ScheduleWindowCopyToVram_AffineMode(struct Window *window)
+{
+ PutWindowTilemap_AffineMode(window);
+ ScheduleBgTilemapBufferTransfer(window->bgConfig, window->bgId);
+ BG_LoadCharTilesData(window->bgConfig,
+ window->bgId,
+ window->pixelBuffer,
+ (u32)(window->width * window->height * 64),
+ window->baseTile);
+}
+
+THUMB_FUNC void CopyWindowPixelsToVram_TextMode(struct Window *window)
+{
+ BG_LoadCharTilesData(window->bgConfig,
+ window->bgId,
+ window->pixelBuffer,
+ (u32)(window->width * window->height * window->bgConfig->bgs[window->bgId].tileSize),
+ window->baseTile);
+}
+
+THUMB_FUNC void ClearWindowTilemapAndCopyToVram(struct Window *window)
+{
+ sClearWindowTilemapAndCopyToVramFuncs[window->bgConfig->bgs[window->bgId].mode](window);
+}
+
+THUMB_FUNC void ClearWindowTilemapAndScheduleTransfer(struct Window *window)
+{
+ sClearWindowTilemapAndScheduleTransferFuncs[window->bgConfig->bgs[window->bgId].mode](window);
+}
+
+THUMB_FUNC void ClearWindowTilemapAndCopyToVram_TextMode(struct Window *window)
+{
+ ClearWindowTilemapText(window);
+ BgCopyOrUncompressTilemapBufferRangeToVram(window->bgConfig,
+ window->bgId,
+ window->bgConfig->bgs[window->bgId].tilemapBuffer,
+ window->bgConfig->bgs[window->bgId].bufferSize,
+ window->bgConfig->bgs[window->bgId].baseTile);
+}
+
+THUMB_FUNC void ClearWindowTilemapAndScheduleTransfer_TextMode(struct Window *window)
+{
+ ClearWindowTilemapText(window);
+ ScheduleBgTilemapBufferTransfer(window->bgConfig, window->bgId);
+}
+
+THUMB_FUNC void ClearWindowTilemapAndCopyToVram_AffineMode(struct Window *window)
+{
+ ClearWindowTilemapAffine(window);
+ BgCopyOrUncompressTilemapBufferRangeToVram(window->bgConfig,
+ window->bgId,
+ window->bgConfig->bgs[window->bgId].tilemapBuffer,
+ window->bgConfig->bgs[window->bgId].bufferSize,
+ window->bgConfig->bgs[window->bgId].baseTile);
+}
+
+THUMB_FUNC void ClearWindowTilemapAndScheduleTransfer_AffineMode(struct Window *window)
+{
+ ClearWindowTilemapAffine(window);
+ ScheduleBgTilemapBufferTransfer(window->bgConfig, window->bgId);
+}
+
+THUMB_FUNC void FillWindowPixelBuffer(struct Window *window, u8 param1)
+{
+ if (window->bgConfig->bgs[window->bgId].tileSize == 0x20)
+ {
+ param1 |= param1 << 4;
+ }
+
+ MI_CpuFillFast(
+ window->pixelBuffer,
+ (u32)((param1 << 0x18) | (param1 << 0x10) | (param1 << 0x8) | param1),
+ (u32)(window->bgConfig->bgs[window->bgId].tileSize * 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 Bitmap st1c = { param1, param4, param5 };
+ struct Bitmap st14 = {
+ window->pixelBuffer, (u16)(window->width << 3), (u16)(window->height << 3)
+ };
+
+ if (window->bgConfig->bgs[window->bgId].colorMode == GX_BG_COLORMODE_16)
+ {
+ 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 Bitmap st8 = {
+ window->pixelBuffer, (u16)(window->width << 3), (u16)(window->height << 3)
+ };
+
+ if (window->bgConfig->bgs[window->bgId].colorMode == GX_BG_COLORMODE_16)
+ {
+ FillBitmapRect4Bit(&st8, x, y, width, height, fillValue);
+ }
+ else
+ {
+ FillBitmapRect8Bit(&st8, x, y, width, height, fillValue);
+ }
+}
+
+#ifdef NONMATCHING
+THUMB_FUNC void CopyGlyphToWindow(
+ 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: _0201A12C
+ }
+}
+#else
+asm void CopyGlyphToWindow(
+ struct Window *window, const char *param1, u16 param2, u16 param3, u16 param4, u16 param5, u16 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 _0201A12C
+_020197B8:
+ cmp r4, #0x3
+ bls _020197C0
+ bl _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 _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 _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 _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 _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}
+_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 Convert4bppTo8bpp
+ 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
+_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->bgConfig->bgs[window->bgId].colorMode == GX_BG_COLORMODE_16)
+ {
+ ScrollWindow4bpp(window, param1, param2, param3);
+ }
+ else
+ {
+ ScrollWindow8bpp(window, param1, param2, param3);
+ }
+}
+
+THUMB_FUNC void ScrollWindow4bpp(struct Window *window, u32 param1, u8 param2, u8 fillValue)
+{
+ void *r2;
+ int r5, r1, r3;
+ int st4, stc;
+ u32 st8;
+ int i, j;
+
+ r2 = window->pixelBuffer;
+ st4 = (fillValue << 0x18) | (fillValue << 0x10) | (fillValue << 0x8) | fillValue;
+ 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 ScrollWindow8bpp(struct Window *window, u32 param1, u8 param2, u8 fillValue)
+{
+
+ void *pixelBuffer;
+ int dstOffs, srcOffs, r3;
+ int st4, size;
+ u32 srcWidth;
+ int i, j;
+
+ pixelBuffer = (u8 *)window->pixelBuffer;
+ st4 = (fillValue << 0x18) | (fillValue << 0x10) | (fillValue << 0x8) | fillValue;
+ size = window->height * window->width * 64;
+ srcWidth = window->width;
+
+ switch (param1)
+ {
+ case 0:
+ for (i = 0; i < size; i += 64)
+ {
+ r3 = param2;
+ for (j = 0; j < 8; j++)
+ {
+ dstOffs = i + (j << 3);
+ srcOffs = i + (int)(((srcWidth * (r3 & ~7)) | (r3 & 7)) << 3);
+
+ if (srcOffs < size)
+ {
+ *(u32 *)(pixelBuffer + dstOffs) = *(u32 *)(pixelBuffer + srcOffs);
+ }
+ else
+ {
+ *(u32 *)(pixelBuffer + dstOffs) = (u32)st4;
+ }
+
+ dstOffs += 4;
+ srcOffs += 4;
+ if (srcOffs < size + 4)
+ {
+ *(u32 *)(pixelBuffer + dstOffs) = *(u32 *)(pixelBuffer + srcOffs);
+ }
+ else
+ {
+ *(u32 *)(pixelBuffer + dstOffs) = (u32)st4;
+ }
+
+ r3++;
+ }
+ }
+
+ break;
+ case 1:
+ pixelBuffer += size - 8;
+ for (i = 0; i < size; i += 64)
+ {
+ r3 = param2;
+ for (j = 0; j < 8; j++)
+ {
+ dstOffs = i + (j << 3);
+ srcOffs = i + (int)(((srcWidth * (r3 & ~7)) | (r3 & 7)) << 3);
+
+ if (srcOffs < size)
+ {
+ *(u32 *)(pixelBuffer - dstOffs) = *(u32 *)(pixelBuffer - srcOffs);
+ }
+ else
+ {
+ *(u32 *)(pixelBuffer - dstOffs) = (u32)st4;
+ }
+
+ dstOffs -= 4;
+ srcOffs -= 4;
+ if (srcOffs < size - 4)
+ {
+ *(u32 *)(pixelBuffer - dstOffs) = *(u32 *)(pixelBuffer - srcOffs);
+ }
+ else
+ {
+ *(u32 *)(pixelBuffer - dstOffs) = (u32)st4;
+ }
+
+ r3++;
+ }
+ }
+
+ break;
+ case 2:
+ case 3:
+ break;
+ }
+}
+
+THUMB_FUNC u8 GetWindowBgId(struct Window *window)
+{
+ return window->bgId;
+}
+
+THUMB_FUNC u8 GetWindowWidth(struct Window *window)
+{
+ return window->width;
+}
+THUMB_FUNC u8 GetWindowHeight(struct Window *window)
+{
+ return window->height;
+}
+THUMB_FUNC u8 GetWindowX(struct Window *window)
+{
+ return window->tilemapLeft;
+}
+THUMB_FUNC u8 GetWindowY(struct Window *window)
+{
+ return window->tilemapTop;
+}
+THUMB_FUNC void MoveWindowX(struct Window *window, u8 x)
+{
+ window->tilemapLeft = x;
+}
+THUMB_FUNC void MoveWindowY(struct Window *window, u8 y)
+{
+ window->tilemapTop = y;
+}
+THUMB_FUNC void SetWindowPaletteNum(struct Window *window, u8 paletteNum)
+{
+ window->paletteNum = paletteNum;
+}
+
+THUMB_FUNC NNSG2dCharacterData * LoadCharacterDataFromFile(void **char_ret, u32 heap_id, const char *path)
+{
+ void *ptr = AllocAndReadFile(heap_id, path);
+ *char_ret = ptr;
+ NNSG2dCharacterData *st0;
+ NNS_G2dGetUnpackedBGCharacterData(ptr, &st0);
+
+ return st0;
+}
+
+THUMB_FUNC NNSG2dPaletteData * LoadPaletteDataFromFile(void **pltt_ret, u32 heap_id, const char *path)
+{
+ void *ptr = AllocAndReadFile(heap_id, path);
+ *pltt_ret = ptr;
+ NNSG2dPaletteData *st0;
+ NNS_G2dGetUnpackedPaletteData(ptr, &st0);
+
+ return st0;
+}
+
+THUMB_FUNC void DoScheduledBgGpuUpdates(struct BgConfig *bgConfig)
+{
+ ApplyScheduledBgPosUpdate(bgConfig);
+ DoScheduledBgTilemapBufferTransfers(bgConfig);
+
+ bgConfig->scrollScheduled = 0;
+ bgConfig->bufferTransferScheduled = 0;
+}
+
+THUMB_FUNC void DoScheduledBgTilemapBufferTransfers(struct BgConfig *bgConfig)
+{
+ if ((bgConfig->bufferTransferScheduled & (1 << GF_BG_LYR_MAIN_0)) != 0)
+ {
+ LoadBgVramScr(GF_BG_LYR_MAIN_0, bgConfig->bgs[GF_BG_LYR_MAIN_0].tilemapBuffer, bgConfig->bgs[GF_BG_LYR_MAIN_0].baseTile * 2, bgConfig->bgs[GF_BG_LYR_MAIN_0].bufferSize);
+ }
+
+ if ((bgConfig->bufferTransferScheduled & (1 << GF_BG_LYR_MAIN_1)) != 0)
+ {
+ LoadBgVramScr(GF_BG_LYR_MAIN_1, bgConfig->bgs[GF_BG_LYR_MAIN_1].tilemapBuffer, bgConfig->bgs[GF_BG_LYR_MAIN_1].baseTile * 2, bgConfig->bgs[GF_BG_LYR_MAIN_1].bufferSize);
+ }
+
+ if ((bgConfig->bufferTransferScheduled & (1 << GF_BG_LYR_MAIN_2)) != 0)
+ {
+ LoadBgVramScr(GF_BG_LYR_MAIN_2, bgConfig->bgs[GF_BG_LYR_MAIN_2].tilemapBuffer, bgConfig->bgs[GF_BG_LYR_MAIN_2].baseTile * 2, bgConfig->bgs[GF_BG_LYR_MAIN_2].bufferSize);
+ }
+
+ if ((bgConfig->bufferTransferScheduled & (1 << GF_BG_LYR_MAIN_3)) != 0)
+ {
+ LoadBgVramScr(GF_BG_LYR_MAIN_3, bgConfig->bgs[GF_BG_LYR_MAIN_3].tilemapBuffer, bgConfig->bgs[GF_BG_LYR_MAIN_3].baseTile * 2, bgConfig->bgs[GF_BG_LYR_MAIN_3].bufferSize);
+ }
+
+ if ((bgConfig->bufferTransferScheduled & (1 << GF_BG_LYR_SUB_0)) != 0)
+ {
+ LoadBgVramScr(GF_BG_LYR_SUB_0, bgConfig->bgs[GF_BG_LYR_SUB_0].tilemapBuffer, bgConfig->bgs[GF_BG_LYR_SUB_0].baseTile * 2, bgConfig->bgs[GF_BG_LYR_SUB_0].bufferSize);
+ }
+
+ if ((bgConfig->bufferTransferScheduled & (1 << GF_BG_LYR_SUB_1)) != 0)
+ {
+ LoadBgVramScr(GF_BG_LYR_SUB_1, bgConfig->bgs[GF_BG_LYR_SUB_1].tilemapBuffer, bgConfig->bgs[GF_BG_LYR_SUB_1].baseTile * 2, bgConfig->bgs[GF_BG_LYR_SUB_1].bufferSize);
+ }
+
+ if ((bgConfig->bufferTransferScheduled & (1 << GF_BG_LYR_SUB_2)) != 0)
+ {
+ LoadBgVramScr(GF_BG_LYR_SUB_2, bgConfig->bgs[GF_BG_LYR_SUB_2].tilemapBuffer, bgConfig->bgs[GF_BG_LYR_SUB_2].baseTile * 2, bgConfig->bgs[GF_BG_LYR_SUB_2].bufferSize);
+ }
+
+ if ((bgConfig->bufferTransferScheduled & (1 << GF_BG_LYR_SUB_3)) != 0)
+ {
+ LoadBgVramScr(GF_BG_LYR_SUB_3, bgConfig->bgs[GF_BG_LYR_SUB_3].tilemapBuffer, bgConfig->bgs[GF_BG_LYR_SUB_3].baseTile * 2, bgConfig->bgs[GF_BG_LYR_SUB_3].bufferSize);
+ }
+}
+
+THUMB_FUNC void ScheduleBgTilemapBufferTransfer(struct BgConfig *bgConfig, u32 bgId)
+{
+ bgConfig->bufferTransferScheduled |= 1 << bgId;
+}
+
+THUMB_FUNC void ApplyScheduledBgPosUpdate(struct BgConfig *bgConfig)
+{
+ if ((bgConfig->scrollScheduled & (1 << GF_BG_LYR_MAIN_0)) != 0)
+ {
+ G2_SetBG0Offset(bgConfig->bgs[GF_BG_LYR_MAIN_0].hOffset, bgConfig->bgs[GF_BG_LYR_MAIN_0].vOffset);
+ }
+
+ if ((bgConfig->scrollScheduled & (1 << GF_BG_LYR_MAIN_1)) != 0)
+ {
+ G2_SetBG1Offset(bgConfig->bgs[GF_BG_LYR_MAIN_1].hOffset, bgConfig->bgs[GF_BG_LYR_MAIN_1].vOffset);
+ }
+
+ if ((bgConfig->scrollScheduled & (1 << GF_BG_LYR_MAIN_2)) != 0)
+ {
+ if (bgConfig->bgs[GF_BG_LYR_MAIN_2].mode == 0)
+ {
+ G2_SetBG2Offset(bgConfig->bgs[GF_BG_LYR_MAIN_2].hOffset, bgConfig->bgs[GF_BG_LYR_MAIN_2].vOffset);
+ }
+ else
+ {
+ struct Mtx22 st38;
+ MTX22_2DAffine(
+ &st38, bgConfig->bgs[GF_BG_LYR_MAIN_2].rotation, bgConfig->bgs[GF_BG_LYR_MAIN_2].xScale, bgConfig->bgs[GF_BG_LYR_MAIN_2].yScale, 2);
+ G2_SetBG2Affine(
+ &st38,
+ bgConfig->bgs[GF_BG_LYR_MAIN_2].centerX,
+ bgConfig->bgs[GF_BG_LYR_MAIN_2].centerY,
+ bgConfig->bgs[GF_BG_LYR_MAIN_2].hOffset,
+ bgConfig->bgs[GF_BG_LYR_MAIN_2].vOffset);
+ }
+ }
+
+ if ((bgConfig->scrollScheduled & (1 << GF_BG_LYR_MAIN_3)) != 0)
+ {
+ if (bgConfig->bgs[GF_BG_LYR_MAIN_3].mode == 0)
+ {
+ G2_SetBG3Offset(bgConfig->bgs[GF_BG_LYR_MAIN_3].hOffset, bgConfig->bgs[GF_BG_LYR_MAIN_3].vOffset);
+ }
+ else
+ {
+ struct Mtx22 st28;
+ MTX22_2DAffine(
+ &st28, bgConfig->bgs[GF_BG_LYR_MAIN_3].rotation, bgConfig->bgs[GF_BG_LYR_MAIN_3].xScale, bgConfig->bgs[GF_BG_LYR_MAIN_3].yScale, 2);
+ G2_SetBG3Affine(
+ &st28,
+ bgConfig->bgs[GF_BG_LYR_MAIN_3].centerX,
+ bgConfig->bgs[GF_BG_LYR_MAIN_3].centerY,
+ bgConfig->bgs[GF_BG_LYR_MAIN_3].hOffset,
+ bgConfig->bgs[GF_BG_LYR_MAIN_3].vOffset);
+ }
+ }
+
+ if ((bgConfig->scrollScheduled & (1 << GF_BG_LYR_SUB_0)) != 0)
+ {
+ G2S_SetBG0Offset(bgConfig->bgs[GF_BG_LYR_SUB_0].hOffset, bgConfig->bgs[GF_BG_LYR_SUB_0].vOffset);
+ }
+
+ if ((bgConfig->scrollScheduled & (1 << GF_BG_LYR_SUB_1)) != 0)
+ {
+ G2S_SetBG1Offset(bgConfig->bgs[GF_BG_LYR_SUB_1].hOffset, bgConfig->bgs[GF_BG_LYR_SUB_1].vOffset);
+ }
+
+ if ((bgConfig->scrollScheduled & (1 << GF_BG_LYR_SUB_2)) != 0)
+ {
+ if (bgConfig->bgs[GF_BG_LYR_SUB_2].mode == 0)
+ {
+ G2S_SetBG2Offset(bgConfig->bgs[GF_BG_LYR_SUB_2].hOffset, bgConfig->bgs[GF_BG_LYR_SUB_2].vOffset);
+ }
+ else
+ {
+ struct Mtx22 st18;
+ MTX22_2DAffine(
+ &st18, bgConfig->bgs[GF_BG_LYR_SUB_2].rotation, bgConfig->bgs[GF_BG_LYR_SUB_2].xScale, bgConfig->bgs[GF_BG_LYR_SUB_2].yScale, 2);
+ G2S_SetBG2Affine(
+ &st18,
+ bgConfig->bgs[GF_BG_LYR_SUB_2].centerX,
+ bgConfig->bgs[GF_BG_LYR_SUB_2].centerY,
+ bgConfig->bgs[GF_BG_LYR_SUB_2].hOffset,
+ bgConfig->bgs[GF_BG_LYR_SUB_2].vOffset);
+ }
+ }
+
+ if ((bgConfig->scrollScheduled & (1 << GF_BG_LYR_SUB_3)) != 0)
+ {
+ if (bgConfig->bgs[GF_BG_LYR_SUB_3].mode == 0)
+ {
+ G2S_SetBG3Offset(bgConfig->bgs[GF_BG_LYR_SUB_3].hOffset, bgConfig->bgs[GF_BG_LYR_SUB_3].vOffset);
+ }
+ else
+ {
+ struct Mtx22 st08;
+ MTX22_2DAffine(
+ &st08, bgConfig->bgs[GF_BG_LYR_SUB_3].rotation, bgConfig->bgs[GF_BG_LYR_SUB_3].xScale, bgConfig->bgs[GF_BG_LYR_SUB_3].yScale, 2);
+ G2S_SetBG3Affine(
+ &st08,
+ bgConfig->bgs[GF_BG_LYR_SUB_3].centerX,
+ bgConfig->bgs[GF_BG_LYR_SUB_3].centerY,
+ bgConfig->bgs[GF_BG_LYR_SUB_3].hOffset,
+ bgConfig->bgs[GF_BG_LYR_SUB_3].vOffset);
+ }
+ }
+}
+
+THUMB_FUNC void ScheduleSetBgPosText(
+ struct BgConfig *bgConfig, u32 bgId, u32 op, fx32 value)
+{
+ Bg_SetPosText(&bgConfig->bgs[bgId], op, value);
+ bgConfig->scrollScheduled |= 1 << bgId;
+}
+
+THUMB_FUNC void ScheduleSetBgAffineRotation(
+ struct BgConfig *bgConfig, u32 bgId, u32 op, u16 value)
+{
+ Bg_SetAffineRotation(&bgConfig->bgs[bgId], op, value);
+ bgConfig->scrollScheduled |= 1 << bgId;
+}
+
+THUMB_FUNC void Bg_SetAffineRotation(struct Bg *bg, u32 op, u16 val)
+{
+ switch (op)
+ {
+ case BG_POS_OP_SET_ROT:
+ bg->rotation = val;
+ break;
+ case BG_POS_OP_ADD_ROT:
+ bg->rotation += val;
+ break;
+ case BG_POS_OP_SUB_ROT:
+ bg->rotation -= val;
+ break;
+ }
+}
+
+THUMB_FUNC void ScheduleSetBgAffinePos(
+ struct BgConfig *bgConfig, u32 bgId, u32 op, fx32 value)
+{
+ Bg_SetAffinePos(&bgConfig->bgs[bgId], op, value);
+ bgConfig->scrollScheduled |= 1 << bgId;
+}
+
+THUMB_FUNC void Bg_SetAffinePos(struct Bg *bg, u32 op, fx32 val)
+{
+ switch (op)
+ {
+ case BG_POS_OP_SET_CENTERX:
+ bg->centerX = val;
+ break;
+ case BG_POS_OP_ADD_CENTERX:
+ bg->centerX += val;
+ break;
+ case BG_POS_OP_SUB_CENTERX:
+ bg->centerX -= val;
+ break;
+ case BG_POS_OP_SET_CENTERY:
+ bg->centerY = val;
+ break;
+ case BG_POS_OP_ADD_CENTERY:
+ bg->centerY += val;
+ break;
+ case BG_POS_OP_SUB_CENTERY:
+ bg->centerY -= val;
+ break;
+ }
+}
+
+THUMB_FUNC u32 DoesPixelAtScreenXYMatchPtrVal(
+ struct BgConfig *bgConfig, u8 bgId, u8 x, u8 y, u16 *src)
+{
+ void *bgCharPtr;
+ u16 tilemapIdx;
+ u8 xPixOffs;
+ u8 yPixOffs;
+ u8 pixelValue;
+ u8 i;
+
+ if (bgConfig->bgs[bgId].tilemapBuffer == NULL)
+ {
+ return 0;
+ }
+
+ tilemapIdx = GetTileMapIndexFromCoords((u8) (x >> 3), (u8) (y >> 3), bgConfig->bgs[bgId].size);
+ bgCharPtr = BgGetCharPtr(bgId);
+
+ xPixOffs = (u8)(x & 7);
+ yPixOffs = (u8)(y & 7);
+
+ if (bgConfig->bgs[bgId].colorMode == GX_BG_COLORMODE_16)
+ {
+ u16 *tilemapBuffer = bgConfig->bgs[bgId].tilemapBuffer;
+ u8 *ptr = AllocFromHeapAtEnd(bgConfig->heap_id, 0x40);
+
+ bgCharPtr += ((tilemapBuffer[tilemapIdx] & 0x3ff) << 5);
+ for (i = 0; i < 0x20; i++)
+ {
+ ptr[(i << 1)] = (u8)(((u8 *)bgCharPtr)[i] & 0xf);
+ ptr[(i << 1) + 1] = (u8)(((u8 *)bgCharPtr)[i] >> 4);
+ }
+
+ ApplyFlipFlagsToTile(bgConfig, (u8)((tilemapBuffer[tilemapIdx] >> 0xa) & 3), ptr);
+
+ pixelValue = ptr[xPixOffs + (yPixOffs << 3)];
+ FreeToHeap(ptr);
+
+ if ((src[0] & (1 << pixelValue)) != 0)
+ {
+ return 1;
+ }
+ }
+ else
+ {
+ if (bgConfig->bgs[bgId].mode != GF_BG_TYPE_AFFINE)
+ {
+ u16 *tilemapBuffer = bgConfig->bgs[bgId].tilemapBuffer;
+ u8 *ptr = AllocFromHeapAtEnd(bgConfig->heap_id, 0x40);
+
+ memcpy(ptr, bgCharPtr + ((tilemapBuffer[tilemapIdx] & 0x3ff) << 6), 0x40);
+
+ ApplyFlipFlagsToTile(bgConfig, (u8)((tilemapBuffer[tilemapIdx] >> 0xa) & 3), ptr);
+
+ pixelValue = ptr[xPixOffs + (yPixOffs << 3)];
+ FreeToHeap(ptr);
+ }
+ else
+ {
+ pixelValue = ((u8 *)bgCharPtr)[(((u8 *)bgConfig->bgs[bgId].tilemapBuffer)[tilemapIdx] << 6) + xPixOffs + (yPixOffs << 3)];
+ }
+
+ // BUG: Infinite loop
+ while (TRUE)
+ {
+ if (src[0] == 0xffff)
+ {
+ break;
+ }
+ if (pixelValue == (u8)(src[0]))
+ {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+THUMB_FUNC void ApplyFlipFlagsToTile(struct BgConfig *bgConfig, u8 flag, u8 *src)
+{
+ u8 i, j;
+ if (flag != 0)
+ {
+ u8 *ptr = AllocFromHeapAtEnd(bgConfig->heap_id, 0x40);
+
+ if ((flag & 1) != 0)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ ptr[i * 8 + j] = src[i * 8 + (7 - j)];
+ }
+ }
+
+ memcpy(src, ptr, 0x40);
+ }
+
+ if ((flag & 2) != 0)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ u8 *r3 = &ptr[i * 8];
+ u8 *r2 = &src[(7 - i) * 8];
+ for (u32 j = 8; j > 0; j--)
+ {
+ *r3++ = *r2++;
+ }
+ }
+
+ memcpy(src, ptr, 0x40);
+ }
+
+ FreeToHeap(ptr);
+ }
+}
diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c
index 28627d6b..e0d01bde 100644
--- a/arm9/src/error_message_reset.c
+++ b/arm9/src/error_message_reset.c
@@ -1,25 +1,48 @@
#include "error_message_reset.h"
#include "GX_layers.h"
+#include "gx.h"
#include "unk_02031734.h"
#include "unk_0202F150.h"
-#include "unk_02016B94.h"
-
-
-
-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 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 };
+#include "bg_window.h"
+#include "PAD_pad.h"
+
+
+const struct WindowTemplate UNK_020FF49C = {
+ .bgId = GF_BG_LYR_MAIN_0,
+ .tilemapLeft = 3,
+ .tilemapTop = 3,
+ .width = 26,
+ .height = 18,
+ .paletteNum = 1,
+ .baseTile = 0x23
+};
+
+const struct HeapParam UNK_020FF4A4[] = {
+ {0x00020000, OS_ARENA_MAIN}
+};
+
+const struct GraphicsModes UNK_020FF4AC = { .dispMode = GX_DISPMODE_GRAPHICS };
+
+const struct BgTemplate UNK_020FF4BC = {
+ .x = 0,
+ .y = 0,
+ .bufferSize = 0x800,
+ .baseTile = 0,
+ .size = GF_BG_SCR_SIZE_256x256,
+ .colorMode = GX_BG_COLORMODE_16,
+ .screenBase = GX_BG_SCRBASE_0x0000, .charBase = GX_BG_CHARBASE_0x18000,
+ .bgExtPltt = GX_BG_EXTPLTT_01,
+ .priority = 1,
+ .areaOver = 0,
+ .mosaic = FALSE
+};
+
+const struct GraphicsBanks UNK_020FF4D8 = { .bg = 3 };
u32 sErrorMessagePrinterLock;
extern void FUN_0200E3A0(PMLCDTarget, int);
-extern void FUN_0200CB00(struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
+extern void FUN_0200CB00(struct BgConfig *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2);
extern void FUN_0200CCA4(struct Window *param0, u32 param1, u32 param2, u32 param3);
extern void FUN_0200E394(u32 param0);
@@ -27,15 +50,14 @@ extern void FUN_0200A274(u32 param0, u32 param1, u32 param2);
THUMB_FUNC void VBlankHandler()
{
- *(vu32 *)HW_INTR_CHECK_BUF |= 1;
-
+ OS_SetIrqCheckFlag(OS_IE_V_BLANK);
MI_WaitDma(3);
}
THUMB_FUNC void PrintErrorMessageAndReset()
{
- struct UnkStruct_02016B94_2 *ptr;
+ struct BgConfig *ptr;
struct Window buf;
if (sErrorMessagePrinterLock != 1)
@@ -44,13 +66,13 @@ THUMB_FUNC void PrintErrorMessageAndReset()
OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN));
OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN));
- FUN_020166C8((u32 *)UNK_020FF4A4, 1, 1, 0);
+ InitHeapSystem(UNK_020FF4A4, NELEMS(UNK_020FF4A4), 1, 0);
FUN_0200E3A0(PM_LCD_TOP, 0);
FUN_0200E3A0(PM_LCD_BOTTOM, 0);
- OS_DisableIrqMask(1);
- OS_SetIrqFunction(1, &VBlankHandler);
- OS_EnableIrqMask(1);
+ OS_DisableIrqMask(OS_IE_V_BLANK);
+ OS_SetIrqFunction(OS_IE_V_BLANK, &VBlankHandler);
+ OS_EnableIrqMask(OS_IE_V_BLANK);
Main_SetVBlankIntrCB(NULL, NULL);
@@ -58,38 +80,39 @@ THUMB_FUNC void PrintErrorMessageAndReset()
GX_DisableEngineALayers();
GX_DisableEngineBLayers();
- reg_GX_DISPCNT &= 0xFFFFE0FF;
- reg_GXS_DB_DISPCNT &= 0xFFFFE0FF;
+ GX_SetVisiblePlane(0);
+ GXS_SetVisiblePlane(0);
- FUN_0201669C(4, 8);
+ SetKeyRepeatTimers(4, 8);
gMain.unk65 = 0;
GX_SwapDisplay();
- reg_G2_BLDCNT = 0;
- reg_G2S_DB_BLDCNT = 0;
- reg_GX_DISPCNT &= 0xFFFF1FFF;
- reg_GXS_DB_DISPCNT &= 0xFFFF1FFF;
+ G2_BlendNone();
+ G2S_BlendNone();
+
+ GX_SetVisibleWnd(0);
+ GXS_SetVisibleWnd(0);
GX_SetBanks(&UNK_020FF4D8);
- ptr = FUN_02016B94(0);
- FUN_02016BBC(&UNK_020FF4AC);
+ ptr = BgConfig_Alloc(0);
+ SetBothScreensModesAndDisable(&UNK_020FF4AC);
- FUN_02016C18(ptr, 0, &UNK_020FF4BC, 0);
- FUN_02018744(ptr, 0);
+ InitBgFromTemplate(ptr, 0, &UNK_020FF4BC, 0);
+ BgClearTilemapBufferAndCommit(ptr, 0);
FUN_0200CB00(ptr, 0, 503, 2, 0, 0);
FUN_02002ED0(0, 0x20, 0);
- FUN_02017F18(0, 0x20, 0, 0);
- FUN_02017FE4(0, 0x6C21);
- FUN_02017FE4(4, 0x6C21);
+ BG_ClearCharDataRange(0, 0x20, 0, 0);
+ BG_SetMaskColor(0, 0x6C21);
+ BG_SetMaskColor(4, 0x6C21);
struct MsgData *msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 0xc8, 0);
struct String *str = String_ctor(6 << 6, 0);
FUN_0201BD5C();
- FUN_02019150(ptr, &buf, &UNK_020FF49C);
+ AddWindow(ptr, &buf, &UNK_020FF49C);
FillWindowPixelRect(&buf, 15, 0, 0, 0xd0, 0x90);
FUN_0200CCA4(&buf, 0, 0x1f7, 2);
@@ -104,28 +127,26 @@ THUMB_FUNC void PrintErrorMessageAndReset()
FUN_0200A274(0, 0x3f, 3);
FUN_02032DAC();
- lid:
- HandleDSLidAction();
- FUN_0202FB80();
- if (!FUN_02033678())
+ while (1)
{
- OS_WaitIrq(1, 1);
- goto lid;
+ HandleDSLidAction();
+ FUN_0202FB80();
+ if (FUN_02033678())
+ break;
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
}
-
- lid2:
- HandleDSLidAction();
- if (!((u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ 0x2FFF) & 0x2FFF) & 1))
+ while (1)
{
- OS_WaitIrq(1, 1);
- goto lid2;
+ HandleDSLidAction();
+ if ((PAD_Read() & PAD_BUTTON_A))
+ break;
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
}
-
FUN_0200E3A0(PM_LCD_TOP, 0x7FFF);
FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF);
- FUN_02019178(&buf);
+ RemoveWindow(&buf);
DestroyMsgData(msg_data);
FreeToHeap(ptr);
diff --git a/arm9/src/filesystem.c b/arm9/src/filesystem.c
index ed82acb9..37d381a3 100644
--- a/arm9/src/filesystem.c
+++ b/arm9/src/filesystem.c
@@ -175,8 +175,7 @@ THUMB_FUNC void ReadFromNarcMemberByPathAndId(void * dest, const char * path, s3
FS_SeekFile(&file, (s32)(chunk_starts[0] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
FS_ReadFile(&file, &num_files, 2);
- if (num_files <= file_idx)
- GF_AssertFail();
+ GF_ASSERT(num_files > file_idx);
chunk_starts[1] = chunk_starts[0] + chunk_size;
FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
@@ -190,8 +189,7 @@ THUMB_FUNC void ReadFromNarcMemberByPathAndId(void * dest, const char * path, s3
chunk_size = file_end - file_start;
else
chunk_size = size;
- if (chunk_size == 0)
- GF_AssertFail();
+ GF_ASSERT(chunk_size != 0);
FS_ReadFile(&file, dest, (s32)chunk_size);
FS_CloseFile(&file);
}
@@ -216,8 +214,7 @@ THUMB_FUNC void * AllocAndReadFromNarcMemberByPathAndId(const char * path, s32 f
FS_SeekFile(&file, (s32)(chunk_starts[0] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
FS_ReadFile(&file, &num_files, 2);
- if (num_files <= file_idx)
- GF_AssertFail();
+ GF_ASSERT(num_files > file_idx);
chunk_starts[1] = chunk_starts[0] + chunk_size;
FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
@@ -231,8 +228,7 @@ THUMB_FUNC void * AllocAndReadFromNarcMemberByPathAndId(const char * path, s32 f
chunk_size = file_end - file_start;
else
chunk_size = size;
- if (chunk_size == 0)
- GF_AssertFail();
+ GF_ASSERT(chunk_size != 0);
switch (r4)
{
case 0:
@@ -296,8 +292,7 @@ THUMB_FUNC u32 GetNarcMemberSizeByIdPair(NarcId narc_id, s32 file_idx)
FS_SeekFile(&file, (s32)(chunk_starts[0] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
FS_ReadFile(&file, &num_files, 2);
- if (num_files <= file_idx)
- GF_AssertFail();
+ GF_ASSERT(num_files > file_idx);
chunk_starts[1] = chunk_starts[0] + chunk_size;
FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET);
FS_ReadFile(&file, &chunk_size, 4);
@@ -308,8 +303,7 @@ THUMB_FUNC u32 GetNarcMemberSizeByIdPair(NarcId narc_id, s32 file_idx)
chunk_starts[2] = chunk_starts[1] + btnf_size;
FS_SeekFile(&file, (s32)(chunk_starts[2] + 8 + file_start + 0), FS_SEEK_SET);
chunk_size = file_end - file_start;
- if (chunk_size == 0)
- GF_AssertFail();
+ GF_ASSERT(chunk_size != 0);
// Bug: File is never closed
return chunk_size;
}
@@ -348,8 +342,7 @@ THUMB_FUNC void * NARC_AllocAndReadWholeMember(NARC * narc, u32 file_id, u32 hea
u32 file_start;
u32 file_end;
void * dest;
- if (narc->num_files <= file_id)
- GF_AssertFail();
+ GF_ASSERT(narc->num_files > file_id);
FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET);
FS_ReadFile(&narc->file, &file_start, 4);
FS_ReadFile(&narc->file, &file_end, 4);
@@ -366,8 +359,7 @@ THUMB_FUNC void NARC_ReadWholeMember(NARC * narc, u32 file_id, void * dest)
{
u32 file_start;
u32 file_end;
- if (narc->num_files <= file_id)
- GF_AssertFail();
+ GF_ASSERT(narc->num_files > file_id);
FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET);
FS_ReadFile(&narc->file, &file_start, 4);
FS_ReadFile(&narc->file, &file_end, 4);
@@ -379,8 +371,7 @@ THUMB_FUNC u32 NARC_GetMemberSize(NARC * narc, u32 file_id)
{
u32 file_start;
u32 file_end;
- if (narc->num_files <= file_id)
- GF_AssertFail();
+ GF_ASSERT(narc->num_files > file_id);
FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET);
FS_ReadFile(&narc->file, &file_start, 4);
FS_ReadFile(&narc->file, &file_end, 4);
@@ -390,8 +381,7 @@ THUMB_FUNC u32 NARC_GetMemberSize(NARC * narc, u32 file_id)
THUMB_FUNC void NARC_ReadFromMember(NARC * narc, u32 file_id, u32 pos, u32 size, void * dest)
{
u32 file_start;
- if (narc->num_files <= file_id)
- GF_AssertFail();
+ GF_ASSERT(narc->num_files > file_id);
FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET);
FS_ReadFile(&narc->file, &file_start, 4);
FS_SeekFile(&narc->file, (s32)(narc->gmif_start + 8 + file_start + pos), FS_SEEK_SET);
diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c
index 64ea7a54..1c6098ea 100644
--- a/arm9/src/game_init.c
+++ b/arm9/src/game_init.c
@@ -10,6 +10,7 @@
#include "game_init.h"
#include "registers.h"
#include "heap.h"
+#include "OS_interrupt.h"
#pragma thumb on
@@ -30,11 +31,11 @@ OS_DTCM;
static struct {
void * contents;
u32 name_hash;
-} UNK_021C4928[128];
+} sFileCache[128];
struct Main gMain;
-void Main_HBlankIntr(BOOL);
+void Main_ToggleHBlankInterrupt(BOOL enableFlag);
void FUN_0201B5CC(void *);
void FUN_02015EA0(void)
@@ -66,7 +67,7 @@ void Main_SetVBlankIntrCB(void (*a0)(void *), void * a1)
void FUN_02015F1C(void)
{
- Main_HBlankIntr(FALSE);
+ Main_ToggleHBlankInterrupt(FALSE);
gMain.hBlankIntr = NULL;
gMain.hBlankIntrArg = NULL;
}
@@ -75,7 +76,7 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
{
if (a0 == 0)
{
- Main_HBlankIntr(FALSE);
+ Main_ToggleHBlankInterrupt(FALSE);
gMain.hBlankIntr = NULL;
gMain.hBlankIntrArg = NULL;
return TRUE;
@@ -84,7 +85,7 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
{
gMain.hBlankIntrArg = a1;
gMain.hBlankIntr = a0;
- Main_HBlankIntr(TRUE);
+ Main_ToggleHBlankInterrupt(TRUE);
return TRUE;
}
else
@@ -93,36 +94,36 @@ BOOL FUN_02015F34(void (*a0)(void *), void * a1)
}
}
-void FUN_02015F6C(void)
+void Main_CallHBlankCallback(void)
{
if (gMain.hBlankIntr != NULL)
gMain.hBlankIntr(gMain.hBlankIntrArg);
}
-void Main_HBlankIntr(BOOL a0)
+void Main_ToggleHBlankInterrupt(BOOL enableFlag)
{
(void)OS_DisableIrq();
- if (!a0)
+ if (!enableFlag)
{
(void)OS_GetIrqMask();
- OS_DisableIrqMask(2);
+ OS_DisableIrqMask(OS_IE_H_BLANK);
GX_HBlankIntr(FALSE);
}
else
{
(void)OS_GetIrqMask();
- OS_SetIrqFunction(2, FUN_02015F6C);
- OS_EnableIrqMask(2);
+ OS_SetIrqFunction(OS_IE_H_BLANK, Main_CallHBlankCallback);
+ OS_EnableIrqMask(OS_IE_H_BLANK);
GX_HBlankIntr(TRUE);
}
(void)OS_EnableIrq();
}
-const u32 UNK_020EDB10[][2] = {
- { 0x0000D000, 0x00000000 },
- { 0x00021000, 0x00000000 },
- { 0x00001000, 0x00000000 },
- { 0x0010D800, 0x00000000 }
+const struct HeapParam UNK_020EDB10[] = {
+ { 0x00D000, OS_ARENA_MAIN },
+ { 0x021000, OS_ARENA_MAIN },
+ { 0x001000, OS_ARENA_MAIN },
+ { 0x10D800, OS_ARENA_MAIN }
};
void FUN_02015FC8(void)
@@ -136,12 +137,12 @@ void FUN_02015FC8(void)
{
csum += digest[i];
}
- csum = (csum << 24) >> 24;
+ csum %= 256;
while (csum & 3)
{
csum++;
}
- FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, csum);
+ InitHeapSystem(UNK_020EDB10, NELEMS(UNK_020EDB10), 92, csum);
}
void InitSystemForTheGame(void)
@@ -189,7 +190,7 @@ void InitGraphicMemory(void)
MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE);
}
-void * FUN_020161A4(u32 heap_id, const char * path)
+void * AllocAndReadFile(u32 heap_id, const char * path)
{
void * ret;
@@ -214,7 +215,7 @@ void * FUN_020161A4(u32 heap_id, const char * path)
return ret;
}
-void FUN_020161F8(const char * path, void ** ptr)
+void OpenAndReadWholeFile(const char * path, void ** ptr)
{
FSFile file;
FS_InitFile(&file);
@@ -227,94 +228,94 @@ void FUN_020161F8(const char * path, void ** ptr)
}
}
-u32 FUN_02016230(const s8 * str)
+u32 GetFilenameHash(const s8 * str)
{
u16 len = (u16)strlen(str);
- u16 sp4;
+ u16 numWords;
if ((len % 4) != 0)
- sp4 = (u16)((len / 4) + 1);
+ numWords = (u16)((len / 4) + 1);
else
- sp4 = (u16)(len / 4);
- u32 r7 = 0;
+ numWords = (u16)(len / 4);
+ u32 hash = 0;
s32 i, j;
- for (i = 0; i < sp4; i++)
+ for (i = 0; i < numWords; i++)
{
- u32 r1 = 0;
+ u32 curWord = 0;
for (j = 0; j < 4; j++)
{
- int r5 = str[4 * i + j];
- if (r5 == 0)
+ int curChar = str[4 * i + j];
+ if (curChar == 0)
break;
- r1 |= r5 << (8 * j);
+ curWord |= curChar << (8 * j);
}
- r7 ^= r1;
+ hash ^= curWord;
}
- return r7;
+ return hash;
}
-int FUN_020162A0(u32 a0)
+int GetFileCacheId(u32 hash)
{
for (int i = 0; i < 128; i++)
{
- if (UNK_021C4928[i].name_hash == a0 && UNK_021C4928[i].contents != NULL)
+ if (sFileCache[i].name_hash == hash && sFileCache[i].contents != NULL)
return i;
}
return -1;
}
-int FUN_020162C8(void * a0, u32 a1)
+int AddFileToCache(void * contents, u32 hash)
{
for (int i = 0; i < 128; i++)
{
- if (UNK_021C4928[i].contents == NULL)
+ if (sFileCache[i].contents == NULL)
{
- UNK_021C4928[i].contents = a0;
- UNK_021C4928[i].name_hash = a1;
+ sFileCache[i].contents = contents;
+ sFileCache[i].name_hash = hash;
return i;
}
}
return -1;
}
-void FUN_020162FC(void)
+void ClearFileCache(void)
{
for (int i = 127; i > -1; i--)
{
- if (UNK_021C4928[i].contents != NULL)
+ if (sFileCache[i].contents != NULL)
{
- FreeToHeap(UNK_021C4928[i].contents);
- UNK_021C4928[i].contents = NULL;
- UNK_021C4928[i].name_hash = 0;
+ FreeToHeap(sFileCache[i].contents);
+ sFileCache[i].contents = NULL;
+ sFileCache[i].name_hash = 0;
}
}
}
-void * FUN_02016324(const s8 * str, u32 heap_id)
+void * OpenFileCached(const s8 * str, u32 heap_id)
{
- s8 sp0[32];
+ s8 filenameBuf[32];
FSFile file;
void * ret;
- int r5 = 0;
+ int skipCache = 0;
if (str[0] == '!')
{
- strcpy(sp0, str + 1);
- r5 = 1;
+ strcpy(filenameBuf, str + 1);
+ skipCache = 1;
}
else
{
- strcpy(sp0, str);
+ strcpy(filenameBuf, str);
}
- u32 r7 = FUN_02016230(sp0);
- s32 r0 = FUN_020162A0(r7);
- if (r0 >= 0 && r5 == 0)
+ u32 hash = GetFilenameHash(filenameBuf);
+ s32 cacheId = GetFileCacheId(hash);
+ if (cacheId >= 0 && skipCache == 0)
{
- ret = UNK_021C4928[r0].contents;
+ ret = sFileCache[cacheId].contents;
}
else
{
FS_InitFile(&file);
- if (FS_OpenFile(&file, (const char *)sp0))
+ if (FS_OpenFile(&file, (const char *)filenameBuf))
{
u32 size = file.prop.file.bottom - file.prop.file.top;
ret = AllocFromHeap(heap_id, size);
@@ -327,8 +328,8 @@ void * FUN_02016324(const s8 * str, u32 heap_id)
}
}
FS_CloseFile(&file);
- if (r5 == 0)
- FUN_020162C8(ret, r7);
+ if (skipCache == 0)
+ AddFileToCache(ret, hash);
}
else
ret = NULL;
@@ -336,24 +337,24 @@ void * FUN_02016324(const s8 * str, u32 heap_id)
return ret;
}
-void FUN_020163BC(void)
+void InitKeypadAndTouchpad(void)
{
TPCalibrateParam tp;
- gMain.unk34 = 0;
- gMain.unk38 = 0;
- gMain.unk3C = 0;
- gMain.unk40 = 0;
- gMain.unk44 = 0;
+ gMain.buttonMode = 0;
+ gMain.heldKeysRaw = 0;
+ gMain.newKeysRaw = 0;
+ gMain.newAndRepeatedKeysRaw = 0;
+ gMain.heldKeys = 0;
gMain.newKeys = 0;
gMain.newAndRepeatedKeys = 0;
- gMain.unk50 = 0;
- gMain.unk54 = 8;
- gMain.unk58 = 15;
- gMain.unk5C = 0;
- gMain.unk5E = 0;
- gMain.unk60 = 0;
- gMain.unk62 = 0;
- gMain.unk64 = 0;
+ gMain.keyRepeatCounter = 0;
+ gMain.keyRepeatContinueDelay = 8;
+ gMain.keyRepeatStartDelay = 15;
+ gMain.touchX = 0;
+ gMain.touchY = 0;
+ gMain.touchNew = 0;
+ gMain.touchHeld = 0;
+ gMain.touchpadReadAuto = 0;
TP_Init();
if (TP_GetUserInfo(&tp) == TRUE)
TP_SetCalibrateParam(&tp);
@@ -382,38 +383,53 @@ void FUN_02016454(u8 a0)
gMain.unk67 &= ~a0;
}
-void FUN_02016464(void)
+void ReadKeypadAndTocuhpad(void)
{
TPData raw, calib;
if (PAD_DetectFold())
{
+ // Can't press any buttons while the lid is closed.
gMain.newKeys = 0;
- gMain.unk44 = 0;
+ gMain.heldKeys = 0;
gMain.newAndRepeatedKeys = 0;
- gMain.unk60 = 0;
- gMain.unk62 = 0;
+ gMain.touchNew = 0;
+ gMain.touchHeld = 0;
return;
}
- u32 r0 = PAD_Read();
- gMain.unk40 = gMain.unk3C = (r0 ^ gMain.unk38) & r0;
- if (r0 != 0 && gMain.unk38 == r0)
+
+ u32 padRead = PAD_Read();
+
+ // newKeys is all keys that were pressed on this frame but
+ // not the last frame.
+ gMain.newAndRepeatedKeysRaw = gMain.newKeysRaw = (padRead ^ gMain.heldKeysRaw) & padRead;
+
+ // If you are holding down buttons, indicate them "repeated" every few frames
+ // as defined by .keyRepeatStartDelay and .keyRepeatContinueDelay.
+ // Same logic as gen3, but fixes the bug where the
+ // remapped keys are incorrectly used here.
+ // See also: pokeemerald/src/main.c:ReadKeys
+ if (padRead != 0 && gMain.heldKeysRaw == padRead)
{
- if (--gMain.unk50 == 0)
+ if (--gMain.keyRepeatCounter == 0)
{
- gMain.unk40 = r0;
- gMain.unk50 = gMain.unk54;
+ gMain.newAndRepeatedKeysRaw = padRead;
+ gMain.keyRepeatCounter = gMain.keyRepeatContinueDelay;
}
}
else
{
- gMain.unk50 = gMain.unk58;
+ gMain.keyRepeatCounter = gMain.keyRepeatStartDelay;
}
- gMain.unk38 = r0;
- gMain.newKeys = gMain.unk3C;
- gMain.unk44 = r0;
- gMain.newAndRepeatedKeys = gMain.unk40;
- FUN_02016568();
- if (gMain.unk64 == 0)
+ gMain.heldKeysRaw = padRead;
+
+ // Apply the button mode option to the read key input
+ gMain.newKeys = gMain.newKeysRaw;
+ gMain.heldKeys = padRead;
+ gMain.newAndRepeatedKeys = gMain.newAndRepeatedKeysRaw;
+ ApplyButtonModeToInput();
+
+ // Read the touchpad. New to gen 4.
+ if (gMain.touchpadReadAuto == 0)
{
while (TP_RequestRawSampling(&raw))
;
@@ -421,111 +437,117 @@ void FUN_02016464(void)
else
TP_GetLatestRawPointInAuto(&raw);
TP_GetCalibratedPoint(&calib, &raw);
- if (calib.validity == 0)
+
+ // If the touchpad is valid, we gucci.
+ if (calib.validity == TP_VALIDITY_VALID)
{
- gMain.unk5C = calib.x;
- gMain.unk5E = calib.y;
+ gMain.touchX = calib.x;
+ gMain.touchY = calib.y;
}
- else if (gMain.unk62)
+
+ // If the touchpad was used last frame, salvage what we can.
+ else if (gMain.touchHeld)
{
switch (calib.validity)
{
- case 1:
- gMain.unk5E = calib.y;
+ case TP_VALIDITY_INVALID_X:
+ gMain.touchY = calib.y;
break;
- case 2:
- gMain.unk5C = calib.x;
+ case TP_VALIDITY_INVALID_Y:
+ gMain.touchX = calib.x;
break;
- case 3:
+ case TP_VALIDITY_INVALID_XY:
break;
}
}
+ // What was read from the touchpad was not salvageable.
+ // Ignore touch input.
else
calib.touch = 0;
- gMain.unk60 = (u16)((gMain.unk62 ^ calib.touch) & calib.touch);
- gMain.unk62 = calib.touch;
+ gMain.touchNew = (u16)((gMain.touchHeld ^ calib.touch) & calib.touch);
+ gMain.touchHeld = calib.touch;
}
-void FUN_02016568(void)
+void ApplyButtonModeToInput(void)
{
- switch (gMain.unk34)
+ switch (gMain.buttonMode)
{
case 0: // Normal
break;
case 1: // Start = 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.heldKeys & PAD_BUTTON_START)
+ gMain.heldKeys |= 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;
+ u32 swapMask = 0;
if (gMain.newKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
if (gMain.newKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.newKeys &= 0xF3FF;
- gMain.newKeys |= r1;
+ gMain.newKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);;
+ gMain.newKeys |= swapMask;
}
{
- u32 r1 = 0;
- if (gMain.unk44 & PAD_BUTTON_X)
+ u32 swapMask = 0;
+ if (gMain.heldKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
- if (gMain.unk44 & PAD_BUTTON_Y)
+ if (gMain.heldKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.unk44 &= 0xF3FF;
- gMain.unk44 |= r1;
+ gMain.heldKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);
+ gMain.heldKeys |= swapMask;
}
{
- u32 r1 = 0;
+ u32 swapMask = 0;
if (gMain.newAndRepeatedKeys & PAD_BUTTON_X)
{
- r1 |= PAD_BUTTON_Y;
+ swapMask |= PAD_BUTTON_Y;
}
if (gMain.newAndRepeatedKeys & PAD_BUTTON_Y)
{
- r1 |= PAD_BUTTON_X;
+ swapMask |= PAD_BUTTON_X;
}
- gMain.newAndRepeatedKeys &= 0xF3FF;
- gMain.newAndRepeatedKeys |= r1;
+ gMain.newAndRepeatedKeys &= ((PAD_BUTTON_X | PAD_BUTTON_Y) ^ 0xFFFF);
+ gMain.newAndRepeatedKeys |= swapMask;
}
break;
case 3: // L = 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.heldKeys & PAD_BUTTON_L)
+ gMain.heldKeys |= PAD_BUTTON_A;
if (gMain.newAndRepeatedKeys & PAD_BUTTON_L)
gMain.newAndRepeatedKeys |= PAD_BUTTON_A;
- gMain.newKeys &= 0xFCFF;
- gMain.unk44 &= 0xFCFF;
- gMain.newAndRepeatedKeys &= 0xFCFF;
+ gMain.newKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
+ gMain.heldKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
+ gMain.newAndRepeatedKeys &= ((PAD_BUTTON_L | PAD_BUTTON_R) ^ 0xFFFF);
}
}
-void FUN_0201669C(int x, int y)
+void SetKeyRepeatTimers(int continueDelay, int startDelay)
{
- gMain.unk54 = x;
- gMain.unk58 = y;
+ gMain.keyRepeatContinueDelay = continueDelay;
+ gMain.keyRepeatStartDelay = startDelay;
}
-void FUN_020166A8(u8 a0)
+void SetSoftResetDisableMask(u8 a0)
{
- gMain.unk68 |= a0;
+ gMain.softResetDisabled |= a0;
}
-void FUN_020166B8(u8 a0)
+void ClearSoftResetDisableMask(u8 a0)
{
- gMain.unk68 &= ~a0;
+ gMain.softResetDisabled &= ~a0;
}
diff --git a/arm9/src/gf_gfx_loader.c b/arm9/src/gf_gfx_loader.c
index 769c90d9..0c6d593e 100644
--- a/arm9/src/gf_gfx_loader.c
+++ b/arm9/src/gf_gfx_loader.c
@@ -3,7 +3,7 @@
#include "NNS_g2d.h"
#include "gf_gfx_loader.h"
-THUMB_FUNC u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id)
+THUMB_FUNC u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct BgConfig * unkStruct02016B94_2, u32 layer, u32 numTiles, u32 szByte, BOOL isCompressed, u32 heap_id)
{
NNSG2dCharacterData * pCharData;
void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberNo, isCompressed, heap_id, FALSE);
@@ -13,14 +13,14 @@ THUMB_FUNC u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct UnkS
{
if (szByte == 0)
szByte = pCharData->szByte;
- FUN_02017E14(unkStruct02016B94_2, (u8)a3, pCharData->pRawData, szByte, a4);
+ BG_LoadCharTilesData(unkStruct02016B94_2, (u8)layer, pCharData->pRawData, szByte, numTiles);
}
FreeToHeap(pFile);
}
return szByte;
}
-THUMB_FUNC void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id)
+THUMB_FUNC void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct BgConfig * unkStruct02016B94_2, u32 layer, u32 tileOffset, u32 szByte, BOOL isCompressed, u32 heap_id)
{
NNSG2dScreenData * pScreenData;
void * pFile = GfGfxLoader_LoadFromNarc(narcId, memberNo, isCompressed, heap_id, TRUE);
@@ -30,20 +30,20 @@ THUMB_FUNC void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct Unk
{
if (szByte == 0)
szByte = pScreenData->szByte;
- if (FUN_0201886C(unkStruct02016B94_2, (u8)a3) != NULL)
- FUN_02017DFC(unkStruct02016B94_2, (u8)a3, pScreenData->rawData, szByte);
- FUN_02017CE8(unkStruct02016B94_2, (u8)a3, pScreenData->rawData, szByte, a4);
+ if (GetBgTilemapBuffer(unkStruct02016B94_2, (u8) layer) != NULL)
+ BG_LoadScreenTilemapData(unkStruct02016B94_2, (u8) layer, pScreenData->rawData, szByte);
+ BgCopyOrUncompressTilemapBufferRangeToVram(unkStruct02016B94_2, (u8) layer, pScreenData->rawData, szByte, tileOffset);
}
FreeToHeap(pFile);
}
}
-THUMB_FUNC void GfGfxLoader_GXLoadPal(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 baseAddr, u32 szByte, u32 heap_id)
+THUMB_FUNC void GfGfxLoader_GXLoadPal(NarcId narcId, s32 memberNo, u32 layer, u32 baseAddr, u32 szByte, u32 heap_id)
{
- GfGfxLoader_GXLoadPalWithSrcOffset(narcId, memberNo, whichRoutine, 0, baseAddr, szByte, heap_id);
+ GfGfxLoader_GXLoadPalWithSrcOffset(narcId, memberNo, layer, 0, baseAddr, szByte, heap_id);
}
-THUMB_FUNC void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 srcOffset, u32 baseAddr, u32 szByte, u32 heap_id)
+THUMB_FUNC void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, u32 layer, u32 srcOffset, u32 baseAddr, u32 szByte, u32 heap_id)
{
static void (*const load_funcs[])(void *, u32, u32) = {
GX_LoadBGPltt,
@@ -65,30 +65,30 @@ THUMB_FUNC void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo,
if (szByte == 0)
szByte = pPltData->szByte - srcOffset;
DC_FlushRange(pPltData->pRawData, szByte);
- switch (whichRoutine)
+ switch (layer)
{
case 2:
GX_BeginLoadBGExtPltt();
- load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ load_funcs[layer](pPltData->pRawData, baseAddr, szByte);
GX_EndLoadBGExtPltt();
break;
case 6:
GXS_BeginLoadBGExtPltt();
- load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ load_funcs[layer](pPltData->pRawData, baseAddr, szByte);
GXS_EndLoadBGExtPltt();
break;
case 3:
GX_BeginLoadOBJExtPltt();
- load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ load_funcs[layer](pPltData->pRawData, baseAddr, szByte);
GX_EndLoadOBJExtPltt();
break;
case 7:
GXS_BeginLoadOBJExtPltt();
- load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ load_funcs[layer](pPltData->pRawData, baseAddr, szByte);
GXS_EndLoadOBJExtPltt();
break;
default:
- load_funcs[whichRoutine](pPltData->pRawData, baseAddr, szByte);
+ load_funcs[layer](pPltData->pRawData, baseAddr, szByte);
break;
}
}
@@ -96,7 +96,7 @@ THUMB_FUNC void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo,
}
}
-THUMB_FUNC u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 whichRoutine, u32 baseAddr, u32 szByte, BOOL isCompressed, u32 heap_id)
+THUMB_FUNC u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 layer, u32 baseAddr, u32 szByte, BOOL isCompressed, u32 heap_id)
{
static void (*const load_funcs[])(void *, u32, u32) = {
GX_LoadOBJ,
@@ -112,7 +112,7 @@ THUMB_FUNC u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 whi
if (szByte == 0)
szByte = pCharData->szByte;
DC_FlushRange(pCharData->pRawData, szByte);
- load_funcs[whichRoutine](pCharData->pRawData, baseAddr, szByte);
+ load_funcs[layer](pCharData->pRawData, baseAddr, szByte);
}
FreeToHeap(pFile);
}
@@ -142,7 +142,7 @@ THUMB_FUNC void GfGfxLoader_PartiallyLoadPalette(NarcId narcId, s32 memberId, NN
}
}
-THUMB_FUNC u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy *pImgProxy)
+THUMB_FUNC u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 layer, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy *pImgProxy)
{
static void (*const load_funcs[])(const NNSG2dCharacterData *, u32, NNS_G2D_VRAM_TYPE, NNSG2dImageProxy *) = {
NNS_G2dLoadImage1DMapping,
@@ -158,7 +158,7 @@ THUMB_FUNC u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL is
{
if (szByte != 0)
pSrcData->szByte = szByte;
- load_funcs[whichRoutine](pSrcData, baseAddr, type, pImgProxy);
+ load_funcs[layer](pSrcData, baseAddr, type, pImgProxy);
retSize = pSrcData->szByte;
}
FreeToHeap(pFile);
@@ -166,7 +166,7 @@ THUMB_FUNC u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL is
return retSize;
}
-THUMB_FUNC void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy * pImageProxy)
+THUMB_FUNC void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 layer, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy * pImageProxy)
{
static void (*const load_funcs[])(const NNSG2dCharacterData *, u32, NNS_G2D_VRAM_TYPE, NNSG2dImageProxy *) = {
NNS_G2dLoadImage1DMapping,
@@ -191,7 +191,7 @@ THUMB_FUNC void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32
default:
;
}
- load_funcs[whichRoutine](pCharacterData, baseAddr, type, pImageProxy);
+ load_funcs[layer](pCharacterData, baseAddr, type, pImageProxy);
}
FreeToHeap(pFile);
}
diff --git a/arm9/src/heap.c b/arm9/src/heap.c
index 7f35fdcc..842fd33a 100644
--- a/arm9/src/heap.c
+++ b/arm9/src/heap.c
@@ -1,31 +1,45 @@
#include "heap.h"
#include "error_message_reset.h"
#include "unk_02031734.h"
+#include "NNS_FND_expheap.h"
+#include "NNS_FND_allocator.h"
+struct HeapInfo
+{
+ NNSFndHeapHandle *heapHandles;
+ NNSFndHeapHandle *parentHeapHandles;
+ void **subHeapRawPtrs;
+ u16 *numMemBlocks;
+ u8 *heapIdxs;
+ u16 totalNumHeaps;
+ u16 nTemplates;
+ u16 maxHeaps;
+ u16 unallocatedHeapId;
+};
+
+typedef struct MemoryBlock
+{
+ u8 filler_00[12];
+ u32 heapId:8;
+ u32 filler_0D:24;
+} MemoryBlock;
-extern void *NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2);
-extern void *NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2);
-extern void NNS_FndDestroyExpHeap();
-extern void NNS_FndFreeToExpHeap(void *ptr1, void *ptr2);
-extern u32 NNS_FndGetTotalFreeSizeForExpHeap(void *param0);
-extern void NNS_FndInitAllocatorForExpHeap(u32 param0, void *param1, u32 param2);
-extern u32 NNS_FndGetSizeForMBlockExpHeap(void *param0);
-extern void NNS_FndResizeForMBlockExpHeap(void *ptr1, void *ptr2, u32 param2);
-
-
-struct UnkStruct_020166C8 UNK_021C4D28;
-
+struct HeapInfo sHeapInfo;
-THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size)
+THUMB_FUNC void InitHeapSystem(const struct HeapParam *templates, u32 nTemplates, u32 totalNumHeaps, u32 pre_size)
{
- u32 unk_size = param1 + 24;
+ void * ptr;
+ u32 unk_size, i;
- if (param2 < unk_size)
+ unk_size = nTemplates + 24;
+
+ if (totalNumHeaps < unk_size)
{
- param2 = unk_size;
+ totalNumHeaps = unk_size;
}
if (pre_size != 0)
{
+ // force align
while (pre_size % 4 != 0)
{
pre_size++;
@@ -34,207 +48,196 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size)
OS_AllocFromArenaLo(OS_ARENA_MAIN, pre_size, 4);
}
- u32 r7 = param2 * 2;
-
- void *ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4);
- UNK_021C4D28.unk00 = ptr;
- ptr += (unk_size + 1) * 4;
- UNK_021C4D28.unk04 = ptr;
- ptr += unk_size * 4;
- UNK_021C4D28.unk08 = ptr;
- ptr += unk_size * 4;
- UNK_021C4D28.unk0c = ptr;
- ptr += r7;
- UNK_021C4D28.unk10 = ptr;
- UNK_021C4D28.unk14 = (u16)param2;
- UNK_021C4D28.unk16 = (u16)param1;
-
- r7 = 0;
- UNK_021C4D28.unk1a = (u16)unk_size;
- UNK_021C4D28.unk18 = (u16)unk_size;
-
- while (r7 < param1)
+ sHeapInfo.heapHandles = (NNSFndHeapHandle*) OS_AllocFromArenaLo(
+ OS_ARENA_MAIN,
+ (unk_size + 1) * sizeof(NNSFndHeapHandle)
+ + unk_size * sizeof(NNSFndHeapHandle)
+ + unk_size * sizeof(void *)
+ + totalNumHeaps * sizeof(u16)
+ + totalNumHeaps,
+ 4
+ );
+ sHeapInfo.parentHeapHandles = sHeapInfo.heapHandles + (unk_size + 1);
+ sHeapInfo.subHeapRawPtrs = (void **)(sHeapInfo.parentHeapHandles + unk_size);
+ sHeapInfo.numMemBlocks = (u16 *)(sHeapInfo.subHeapRawPtrs + unk_size);
+ sHeapInfo.heapIdxs = (u8 *)(sHeapInfo.numMemBlocks + totalNumHeaps);
+ sHeapInfo.totalNumHeaps = (u16)totalNumHeaps;
+ sHeapInfo.nTemplates = (u16)nTemplates;
+
+ sHeapInfo.unallocatedHeapId = (u16)unk_size;
+ sHeapInfo.maxHeaps = (u16)unk_size;
+
+ for (i = 0; i < nTemplates; i++)
{
- void *ptr;
- if (param0[1] == 0 || param0[1] != 2)
+ switch (templates[i].arena)
{
- ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, param0[0], 4);
- }
- else
- {
- ptr = OS_AllocFromArenaHi(OS_ARENA_MAINEX, param0[0], 4);
+ case OS_ARENA_MAIN:
+ default:
+ ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, templates[i].size, 4);
+ break;
+ case OS_ARENA_MAINEX:
+ ptr = OS_AllocFromArenaHi(OS_ARENA_MAINEX, templates[i].size, 4);
+ break;
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk00[r7] = NNS_FndCreateExpHeapEx(ptr, param0[0], 0);
- UNK_021C4D28.unk10[r7] = (u8)r7;
+ sHeapInfo.heapHandles[i] = NNS_FndCreateExpHeap(ptr, templates[i].size);
+ sHeapInfo.heapIdxs[i] = (u8)i;
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
-
- param0 += 2;
- r7++;
}
- while (param1 < unk_size + 1)
+ for (i = nTemplates; i < unk_size + 1; i++)
{
- UNK_021C4D28.unk00[param1] = 0;
- UNK_021C4D28.unk10[param1] = (u8)UNK_021C4D28.unk1a;
-
- param1++;
+ sHeapInfo.heapHandles[i] = NULL;
+ sHeapInfo.heapIdxs[i] = (u8)sHeapInfo.unallocatedHeapId;
}
- while (param1 < param2)
+ while (i < totalNumHeaps)
{
- UNK_021C4D28.unk10[param1] = (u8)UNK_021C4D28.unk1a;
+ sHeapInfo.heapIdxs[i] = (u8)sHeapInfo.unallocatedHeapId;
- param1++;
+ i++;
}
- for (param1 = 0; param1 < param2; param1++)
+ for (i = 0; i < totalNumHeaps; i++)
{
- UNK_021C4D28.unk0c[param1] = 0;
+ sHeapInfo.numMemBlocks[i] = 0;
}
}
-THUMB_FUNC s32 FUN_020167F4()
+THUMB_FUNC s32 FindFirstAvailableHeapHandle()
{
- s32 i = UNK_021C4D28.unk16;
- s32 j = UNK_021C4D28.unk18;
+ s32 i;
- if (i < j)
+ for (i = sHeapInfo.nTemplates; i < sHeapInfo.maxHeaps; i++)
{
- void **ptr = UNK_021C4D28.unk00 + i;
- do
- {
- if (*ptr == 0)
- {
- return i;
- }
- i++;
- ptr++;
- } while (i < j);
+ if (sHeapInfo.heapHandles[i] == NULL)
+ return i;
}
return -1;
}
-THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC BOOL CreateHeap(u32 parent, u32 child, u32 size)
{
- return FUN_02016834(param0, param1, param2, 4);
+ return CreateHeapInternal(parent, child, size, 4);
}
-THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC BOOL CreateHeapAtEnd(u32 parent, u32 child, u32 size)
{
- return FUN_02016834(param0, param1, param2, -4);
+ return CreateHeapInternal(parent, child, size, -4);
}
-THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3)
+THUMB_FUNC BOOL CreateHeapInternal(u32 parent, u32 child, u32 size, s32 alignment)
{
GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- u8 *ptr = UNK_021C4D28.unk10;
- if (UNK_021C4D28.unk1a == ptr[param1])
+ u8 *ptr = sHeapInfo.heapIdxs;
+ if (sHeapInfo.unallocatedHeapId == ptr[child])
{
- void *ptr2 = UNK_021C4D28.unk00[ptr[param0]];
- if (ptr2 != 0)
+ NNSFndHeapHandle parentHeap = sHeapInfo.heapHandles[ptr[parent]];
+ if (parentHeap != NULL)
{
- void *ptr3 = NNS_FndAllocFromExpHeapEx(ptr2, param2, param3);
- if (ptr3 != 0)
+ void *newHeapAddr = NNS_FndAllocFromExpHeapEx(parentHeap, size, alignment);
+ if (newHeapAddr != NULL)
{
- param3 = FUN_020167F4();
- if (param3 >= 0)
+ s32 i = FindFirstAvailableHeapHandle();
+ if (i >= 0)
{
- UNK_021C4D28.unk00[param3] = NNS_FndCreateExpHeapEx(ptr3, param2, 0);
+ sHeapInfo.heapHandles[i] = NNS_FndCreateExpHeap(newHeapAddr, size);
- if (UNK_021C4D28.unk00[param3] != 0)
+ if (sHeapInfo.heapHandles[i] != NULL)
{
- UNK_021C4D28.unk04[param3] = ptr2;
- UNK_021C4D28.unk08[param3] = ptr3;
- UNK_021C4D28.unk10[param1] = (u8)param3;
+ sHeapInfo.parentHeapHandles[i] = parentHeap;
+ sHeapInfo.subHeapRawPtrs[i] = newHeapAddr;
+ sHeapInfo.heapIdxs[child] = (u8)i;
- return 1;
+ return TRUE;
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
- return 0;
+ return FALSE;
}
-THUMB_FUNC void FUN_020168D0(u32 heap_id)
+THUMB_FUNC void DestroyHeap(u32 heap_id)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
+
+ NNSFndHeapHandle handle = sHeapInfo.heapHandles[sHeapInfo.heapIdxs[heap_id]];
- if (UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] != 0)
+ if (handle != NULL)
{
- NNS_FndDestroyExpHeap();
+ NNS_FndDestroyExpHeap(handle);
- u8 index = UNK_021C4D28.unk10[heap_id];
- void *ptr1 = UNK_021C4D28.unk04[index];
- void *ptr2 = UNK_021C4D28.unk08[index];
- if (ptr1 != 0 && ptr2 != 0)
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle parentHeap = sHeapInfo.parentHeapHandles[index];
+ void *childRaw = sHeapInfo.subHeapRawPtrs[index];
+ if (parentHeap != NULL && childRaw != NULL)
{
- NNS_FndFreeToExpHeap(ptr1, ptr2);
+ NNS_FndFreeToExpHeap(parentHeap, childRaw);
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
- UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] = 0;
- UNK_021C4D28.unk04[UNK_021C4D28.unk10[heap_id]] = 0;
- UNK_021C4D28.unk08[UNK_021C4D28.unk10[heap_id]] = 0;
+ sHeapInfo.heapHandles[sHeapInfo.heapIdxs[heap_id]] = NULL;
+ sHeapInfo.parentHeapHandles[sHeapInfo.heapIdxs[heap_id]] = NULL;
+ sHeapInfo.subHeapRawPtrs[sHeapInfo.heapIdxs[heap_id]] = NULL;
- UNK_021C4D28.unk10[heap_id] = (u8)UNK_021C4D28.unk1a;
+ sHeapInfo.heapIdxs[heap_id] = (u8)sHeapInfo.unallocatedHeapId;
}
}
-THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3)
+THUMB_FUNC void *AllocFromHeapInternal(NNSFndHeapHandle heap, u32 size, s32 alignment, u32 heap_id)
{
- GF_ASSERT(param0);
+ GF_ASSERT(heap);
OSIntrMode intr_mode = OS_DisableInterrupts();
- param1 += 16;
- u32 *ptr = (u32 *)NNS_FndAllocFromExpHeapEx(param0, param1, param2);
+ size += sizeof(MemoryBlock);
+ void *ptr = NNS_FndAllocFromExpHeapEx(heap, size, alignment);
OS_RestoreInterrupts(intr_mode);
- if (ptr != 0)
+ if (ptr != NULL)
{
- ptr[3] = (ptr[3] & ~0xff) | (param3 & 0xff);
+ ((MemoryBlock *)ptr)->heapId = heap_id;
- ptr += 4;
+ ptr += sizeof(MemoryBlock);
}
return ptr;
}
-THUMB_FUNC void FUN_02016988()
+THUMB_FUNC void AllocFail()
{
if (FUN_02031810() != 0)
{
@@ -244,19 +247,19 @@ THUMB_FUNC void FUN_02016988()
void *AllocFromHeap(u32 heap_id, u32 size)
{
- void *ptr = 0;
- if (heap_id < UNK_021C4D28.unk14)
+ void *ptr = NULL;
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- ptr = FUN_02016944(UNK_021C4D28.unk00[index], size, 4, heap_id);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ ptr = AllocFromHeapInternal(sHeapInfo.heapHandles[index], size, 4, heap_id);
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk0c[heap_id]++;
+ sHeapInfo.numMemBlocks[heap_id]++;
}
else
{
- FUN_02016988();
+ AllocFail();
}
return ptr;
@@ -264,20 +267,20 @@ void *AllocFromHeap(u32 heap_id, u32 size)
void *AllocFromHeapAtEnd(u32 heap_id, u32 size)
{
- void *ptr = 0;
- if (heap_id < UNK_021C4D28.unk14)
+ void *ptr = NULL;
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- ptr = FUN_02016944(UNK_021C4D28.unk00[index], size, -4, heap_id);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ ptr = AllocFromHeapInternal(sHeapInfo.heapHandles[index], size, -4, heap_id);
}
- if (ptr != 0)
+ if (ptr != NULL)
{
- UNK_021C4D28.unk0c[heap_id]++;
+ sHeapInfo.numMemBlocks[heap_id]++;
}
else
{
- FUN_02016988();
+ AllocFail();
}
return ptr;
@@ -285,97 +288,99 @@ void *AllocFromHeapAtEnd(u32 heap_id, u32 size)
void FreeToHeap(void *ptr)
{
- u8 heap_id = (u8)((u32 *)ptr)[-1];
+ ptr -= sizeof(MemoryBlock);
+ u32 heap_id = ((MemoryBlock *)ptr)->heapId;
- if ((u16)heap_id < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[heap_id];
- void *ptr2 = UNK_021C4D28.unk00[index];
- GF_ASSERT(ptr2);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle heap = sHeapInfo.heapHandles[index];
+ GF_ASSERT(heap != NULL);
- if (UNK_021C4D28.unk0c[heap_id] == 0)
+ if (sHeapInfo.numMemBlocks[heap_id] == 0)
{
- FUN_02016B90(heap_id);
+ GF_heap_c_dummy_return_true(heap_id);
}
- GF_ASSERT(UNK_021C4D28.unk0c[heap_id]);
+ GF_ASSERT(sHeapInfo.numMemBlocks[heap_id] != 0);
- UNK_021C4D28.unk0c[heap_id]--;
+ sHeapInfo.numMemBlocks[heap_id]--;
OSIntrMode intr_mode = OS_DisableInterrupts();
- NNS_FndFreeToExpHeap(ptr2, ptr - 16);
+ NNS_FndFreeToExpHeap(heap, ptr);
OS_RestoreInterrupts(intr_mode);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-void FreeToHeapExplicit(u32 param0, void *param1)
+void FreeToHeapExplicit(u32 heap_id, void *ptr)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- if (param0 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param0];
- void *ptr = UNK_021C4D28.unk00[index];
- GF_ASSERT (ptr );
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNSFndHeapHandle heap = sHeapInfo.heapHandles[index];
+ GF_ASSERT( heap != NULL );
- u8 heap_id = (u8)((u32 *)param1)[-1];
- GF_ASSERT (heap_id == param0);
+ ptr -= sizeof(MemoryBlock);
+ GF_ASSERT(((MemoryBlock *)ptr)->heapId == heap_id);
- NNS_FndFreeToExpHeap(ptr, param1 - 16);
- GF_ASSERT (UNK_021C4D28.unk0c[param0]);
+ NNS_FndFreeToExpHeap(heap, ptr);
+ GF_ASSERT(sHeapInfo.numMemBlocks[heap_id] != 0);
- UNK_021C4D28.unk0c[param0]--;
+ sHeapInfo.numMemBlocks[heap_id]--;
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC u32 FUN_02016AF8(u32 param0)
+THUMB_FUNC u32 GF_ExpHeap_FndGetTotalFreeSize(u32 heap_id)
{
- if (param0 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param0];
- return NNS_FndGetTotalFreeSizeForExpHeap(UNK_021C4D28.unk00[index]);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ return NNS_FndGetTotalFreeSizeForExpHeap(sHeapInfo.heapHandles[index]);
}
- GF_AssertFail();
+ GF_ASSERT(0);
return 0;
}
-THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2)
+THUMB_FUNC void GF_ExpHeap_FndInitAllocator(NNSFndAllocator * pAllocator, u32 heap_id, int alignment)
{
- if (param1 < UNK_021C4D28.unk14)
+ if (heap_id < sHeapInfo.totalNumHeaps)
{
- u8 index = UNK_021C4D28.unk10[param1];
- NNS_FndInitAllocatorForExpHeap(param0, UNK_021C4D28.unk00[index], param2);
+ u8 index = sHeapInfo.heapIdxs[heap_id];
+ NNS_FndInitAllocatorForExpHeap(pAllocator, sHeapInfo.heapHandles[index], alignment);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1)
+THUMB_FUNC void ReallocFromHeap(void *ptr, u32 newSize)
{
- GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ);
+ GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ);
- param1 += 16;
- if (NNS_FndGetSizeForMBlockExpHeap(ptr - 16) >= param1)
+ newSize += sizeof(MemoryBlock);
+ ptr -= sizeof(MemoryBlock);
+ if (NNS_FndGetSizeForMBlockExpHeap(ptr) >= newSize)
{
- u8 heap_id = (u8)((u32 *)ptr)[-1];
+ u32 heap_id = ((MemoryBlock *)ptr)->heapId;
- u8 index = UNK_021C4D28.unk10[heap_id];
+ u8 index = sHeapInfo.heapIdxs[heap_id];
- NNS_FndResizeForMBlockExpHeap(UNK_021C4D28.unk00[index], ptr - 16, param1);
+ NNS_FndResizeForMBlockExpHeap(sHeapInfo.heapHandles[index], ptr, newSize);
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
-THUMB_FUNC u32 FUN_02016B90(u32 param0)
+THUMB_FUNC BOOL GF_heap_c_dummy_return_true(u32 heap_id)
{
-#pragma unused(param0)
- return 1;
+#pragma unused(heap_id)
+ return TRUE;
}
diff --git a/arm9/src/mail_message.c b/arm9/src/mail_message.c
index a5837d89..751a3ff0 100644
--- a/arm9/src/mail_message.c
+++ b/arm9/src/mail_message.c
@@ -3,6 +3,7 @@
#include "script_buffers.h"
#include "unk_0201B8B8.h"
#include "mail_message.h"
+#include "msgdata/msg.naix"
#pragma thumb on
@@ -19,11 +20,11 @@ struct UnkStruct_020ED556
extern u16 GetECWordIndexByPair(s16 bank, u16 num);
const u16 UNK_020ED54C[] = {
- 397,
- 399,
- 395,
- 396,
- 398
+ NARC_msg_narc_0397_bin,
+ NARC_msg_narc_0399_bin,
+ NARC_msg_narc_0395_bin,
+ NARC_msg_narc_0396_bin,
+ NARC_msg_narc_0398_bin
};
const struct UnkStruct_020ED556 UNK_020ED556[] = {
@@ -155,7 +156,7 @@ u16 MailMsg_GetMsgNo(struct MailMessage * mailMsg)
return mailMsg->msg_no;
}
-BOOL MailMsg_compare(struct MailMessage * mailMsg, struct MailMessage * a1)
+BOOL MailMsg_compare(const struct MailMessage *mailMsg, const struct MailMessage *a1)
{
s32 i;
if (mailMsg->msg_bank != a1->msg_bank || mailMsg->msg_no != a1->msg_no)
diff --git a/arm9/src/main.c b/arm9/src/main.c
index 749bec41..979fb7ca 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -53,10 +53,10 @@ THUMB_FUNC void NitroMain(void)
{
InitSystemForTheGame();
InitGraphicMemory();
- FUN_020163BC();
+ InitKeypadAndTouchpad();
FUN_02016438(0);
- PM_GetBackLight((PMBackLightSwitch *)SDK_STATIC_BSS_START, NULL);
+ PM_GetBackLight(&gBacklightTop, NULL);
FUN_02022294();
GF_InitRTCWork();
@@ -104,8 +104,8 @@ THUMB_FUNC void NitroMain(void)
{
FUN_02000EE8();
HandleDSLidAction();
- FUN_02016464();
- if ((gMain.unk38 & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gMain.unk68) // soft reset?
+ ReadKeypadAndTocuhpad();
+ if ((gMain.heldKeysRaw & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gMain.softResetDisabled) // soft reset?
{
DoSoftReset(0); // soft reset?
}
@@ -168,8 +168,7 @@ THUMB_FUNC void Main_RunOverlayManager(void)
THUMB_FUNC void RegisterMainOverlay(FSOverlayID id, const struct Unk21DBE18 * arg1)
{
- if (UNK_02016FA8.unkC != NULL)
- GF_AssertFail();
+ GF_ASSERT(UNK_02016FA8.unkC == NULL);
UNK_02016FA8.unk8 = id;
UNK_02016FA8.unkC = arg1;
}
@@ -248,7 +247,7 @@ THUMB_FUNC void FUN_02000F4C(u32 arg0, u32 arg1)
while (1)
{
HandleDSLidAction();
- FUN_02016464();
+ ReadKeypadAndTocuhpad();
if (gMain.newKeys & 1)
break;
FUN_02000E9C();
diff --git a/arm9/src/options.c b/arm9/src/options.c
index 296b398a..03b63864 100644
--- a/arm9/src/options.c
+++ b/arm9/src/options.c
@@ -35,14 +35,14 @@ void Options_SetButtonModeOnMain(struct SaveBlock2 * sav2, u32 buttonMode) {
switch (buttonMode) {
case 1:
- gMain.unk34 = 1;
+ gMain.buttonMode = 1;
break;
case 2:
- gMain.unk34 = 3;
+ gMain.buttonMode = 3;
break;
case 0:
default:
- gMain.unk34 = 0;
+ gMain.buttonMode = 0;
break;
}
}
diff --git a/arm9/src/player_data.c b/arm9/src/player_data.c
index ea5802aa..182e99e8 100644
--- a/arm9/src/player_data.c
+++ b/arm9/src/player_data.c
@@ -111,12 +111,12 @@ u16 PlayerProfile_GetTrainerID_VisibleHalf(struct PlayerData * data)
return (u16)data->playerId;
}
-void PlayerProfile_SetTrainerGender(struct PlayerData * data, u8 gender)
+void PlayerProfile_SetTrainerGender(struct PlayerData * data, GenderEnum gender)
{
data->gender = gender;
}
-u32 PlayerProfile_GetTrainerGender(struct PlayerData * data)
+GenderEnum PlayerProfile_GetTrainerGender(struct PlayerData * data)
{
return data->gender;
}
diff --git a/arm9/src/poke_overlay.c b/arm9/src/poke_overlay.c
index e11ecbb6..bb5bb891 100644
--- a/arm9/src/poke_overlay.c
+++ b/arm9/src/poke_overlay.c
@@ -8,10 +8,8 @@ static struct LoadedOverlay gLoadedOverlays[3][8];
THUMB_FUNC void FreeOverlayAllocation(struct LoadedOverlay * loaded)
{
- if (loaded->active != TRUE)
- GF_AssertFail();
- if (FS_UnloadOverlay(MI_PROCESSOR_ARM9, loaded->id) != TRUE)
- GF_AssertFail();
+ GF_ASSERT(loaded->active == TRUE);
+ GF_ASSERT(FS_UnloadOverlay(MI_PROCESSOR_ARM9, loaded->id) == TRUE);
loaded->active = FALSE;
}
@@ -34,8 +32,7 @@ THUMB_FUNC s32 GetOverlayLoadDestination(FSOverlayID id)
FSOverlayInfo info;
u8 *end;
u8 *start;
- if (FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id) != TRUE)
- GF_AssertFail();
+ GF_ASSERT(FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id) == TRUE);
start = (u8 *)HW_ITCM_IMAGE;
end = (u8 *)HW_ITCM_END;
if (info.header.ram_address <= end && info.header.ram_address >= start)
@@ -72,7 +69,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1)
}
if (r6 >= 8)
{
- GF_AssertFail();
+ GF_ASSERT(0);
return FALSE;
}
if (r7 == OVERLAY_LOAD_ITCM || r7 == OVERLAY_LOAD_DTCM)
@@ -91,7 +88,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1)
result = LoadOverlayNoInitAsync(MI_PROCESSOR_ARM9, id);
break;
default:
- GF_AssertFail();
+ GF_ASSERT(0);
return FALSE;
}
if (r7 == OVERLAY_LOAD_ITCM || r7 == OVERLAY_LOAD_DTCM)
@@ -100,7 +97,7 @@ THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, s32 a1)
}
if (result == 0)
{
- GF_AssertFail();
+ GF_ASSERT(0);
return FALSE;
}
return TRUE;
@@ -120,7 +117,7 @@ THUMB_FUNC BOOL CanOverlayBeLoaded(FSOverlayID id)
{
if ((start >= start2 && start < end2) || (end > start2 && end <= end2) || (start <= start2 && end >= end2))
{
- GF_AssertFail();
+ GF_ASSERT(0);
return FALSE;
}
}
@@ -146,7 +143,7 @@ THUMB_FUNC BOOL GetOverlayRamBounds(FSOverlayID id, void ** start, void ** end)
{
FSOverlayInfo info;
if (!FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id)) {
- GF_AssertFail();
+ GF_ASSERT(0);
return FALSE;
}
*start = (void *)info.header.ram_address;
diff --git a/arm9/src/render_text.c b/arm9/src/render_text.c
new file mode 100644
index 00000000..af0218c8
--- /dev/null
+++ b/arm9/src/render_text.c
@@ -0,0 +1,502 @@
+#include "global.h"
+#include "render_text.h"
+#include "game_init.h"
+#include "string_util.h"
+#include "text.h"
+#include "unk_0201B8B8.h"
+
+u16 unk00;
+
+TextFlags gTextFlags;
+
+const u8 UNK_020ECB50[] = { 0, 1, 2, 1 };
+
+extern const char *FUN_02002D94(u8, u16);
+extern void PlaySE(u16);
+
+THUMB_FUNC u32 RenderText(struct TextPrinter *printer)
+{
+
+ struct TextPrinterSubStruct *subStruct =
+ (struct TextPrinterSubStruct *)(&printer->subStructFields);
+ u16 currentChar;
+
+ switch (printer->state)
+ {
+ case 0:
+ if (((gMain.heldKeys & 3) != 0 && subStruct->hasPrintBeenSpedUp != 0) ||
+ (gMain.touchHeld != 0 && gTextFlags.unk0_4 != 0))
+ {
+ printer->delayCounter = 0;
+ if (printer->textSpeedBottom != 0)
+ {
+ gTextFlags.unk0_6 = 1;
+ }
+ }
+
+ if (printer->delayCounter && printer->textSpeedBottom)
+ {
+ printer->delayCounter--;
+
+ if (gTextFlags.canABSpeedUpPrint != 0)
+ {
+ if ((gMain.newKeys & 3) || (gMain.touchNew != 0 && gTextFlags.unk0_4))
+ {
+ subStruct->hasPrintBeenSpedUp = 1;
+ printer->delayCounter = 0;
+ }
+ }
+
+ return 3;
+ }
+
+ printer->delayCounter = printer->textSpeedBottom;
+ currentChar = *printer->printerTemplate.currentChar.raw;
+ printer->printerTemplate.currentChar.raw++;
+
+ GF_ASSERT(currentChar != 0xF100);
+
+ switch (currentChar)
+ {
+ case EOS:
+ return 1;
+ case 0xE000:
+ printer->printerTemplate.currentX = printer->printerTemplate.x;
+ s32 fontAttribute = GetFontAttribute(printer->printerTemplate.fontId, 1);
+
+ printer->printerTemplate.currentY +=
+ printer->printerTemplate.lineSpacing + fontAttribute;
+
+ return 2;
+
+ case 0xF0FD:
+ printer->printerTemplate.currentChar.raw++;
+ return 2;
+ case 0xFFFE:
+ printer->printerTemplate.currentChar.raw--;
+ switch ((u16)MsgArray_GetControlCode(printer->printerTemplate.currentChar.raw))
+ {
+ case 0xFF00:
+ u16 field = (u16)MsgArray_ControlCodeGetField(
+ printer->printerTemplate.currentChar.raw, 0);
+ if (field == 0xff)
+ {
+ u8 r2 = printer->printerTemplate.unk4;
+ printer->printerTemplate.unk4 =
+ (u8)((printer->printerTemplate.fgColor - 1) / 2 + 100);
+
+ if (!(r2 >= 100 && r2 < 107))
+ {
+ break;
+ }
+
+ field = (u16)(r2 - 100);
+ }
+ else
+ {
+ if (field >= 0x64)
+ {
+ printer->printerTemplate.unk4 = (u8)field;
+ break;
+ }
+ }
+
+ printer->printerTemplate.fgColor = (u8)(field * 2 + 1);
+ printer->printerTemplate.shadowColor = (u8)(field * 2 + 2);
+
+ GenerateFontHalfRowLookupTable(printer->printerTemplate.fgColor,
+ printer->printerTemplate.bgColor,
+ printer->printerTemplate.shadowColor);
+
+ break;
+
+ case 0x200:
+ field = (u16)MsgArray_ControlCodeGetField(
+ printer->printerTemplate.currentChar.raw, 0);
+
+ FUN_0201C1EC(printer,
+ printer->printerTemplate.currentX,
+ printer->printerTemplate.currentY,
+ field);
+ if (printer->textSpeedTop != 0)
+ {
+ CopyWindowToVram(printer->printerTemplate.window);
+ }
+
+ break;
+ case 0x201:
+ printer->delayCounter = (u8)MsgArray_ControlCodeGetField(
+ printer->printerTemplate.currentChar.raw, 0);
+ printer->printerTemplate.currentChar.raw =
+ MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw);
+ printer->state = 6;
+
+ return 3;
+ case 0x202:
+ printer->Unk2A = (u16)MsgArray_ControlCodeGetField(
+ printer->printerTemplate.currentChar.raw, 0);
+ printer->printerTemplate.currentChar.raw =
+ MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw);
+
+ return 3;
+ case 0x203:
+ printer->printerTemplate.currentX = (u8)MsgArray_ControlCodeGetField(
+ printer->printerTemplate.currentChar.raw, 0);
+ break;
+ case 0x204:
+ printer->printerTemplate.currentY = (u8)MsgArray_ControlCodeGetField(
+ printer->printerTemplate.currentChar.raw, 0);
+ break;
+
+ case 0xFF01:
+ field = (u16)MsgArray_ControlCodeGetField(
+ printer->printerTemplate.currentChar.raw, 0);
+
+ switch (field)
+ {
+ case 100:
+ printer->printerTemplate.unk2 = 0;
+ printer->printerTemplate.unk3 = 0;
+ break;
+ case 200:
+ printer->printerTemplate.unk2 = 0xFFFC;
+ printer->printerTemplate.unk3 = 0;
+ break;
+ }
+
+ break;
+
+ case 0xFE06:
+ field = (u16)MsgArray_ControlCodeGetField(
+ printer->printerTemplate.currentChar.raw, 0);
+ if (field != 0xFE00)
+ {
+ if (field != 0xFE01)
+ {
+ break;
+ }
+
+ printer->state = 2;
+ TextPrinterInitDownArrowCounters(printer);
+ printer->printerTemplate.currentChar.raw = MsgArray_SkipControlCode(
+ printer->printerTemplate.currentChar.raw);
+
+ return 3;
+ }
+
+ printer->state = 3;
+ TextPrinterInitDownArrowCounters(printer);
+ printer->printerTemplate.currentChar.raw =
+ MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw);
+
+ return 3;
+ }
+
+ printer->printerTemplate.currentChar.raw =
+ MsgArray_SkipControlCode(printer->printerTemplate.currentChar.raw);
+ return 2;
+
+ case 0x25BC:
+ printer->state = 2;
+ TextPrinterInitDownArrowCounters(printer);
+ return 3;
+
+ case 0x25BD:
+ printer->state = 3;
+ TextPrinterInitDownArrowCounters(printer);
+ return 3;
+ }
+
+ const char *r5 = FUN_02002D94(subStruct->glyphId, currentChar);
+ CopyGlyphToWindow(printer->printerTemplate.window,
+ r5,
+ r5[0x80],
+ r5[0x81],
+ printer->printerTemplate.currentX,
+ printer->printerTemplate.currentY,
+ printer->printerTemplate.unk2);
+
+ printer->printerTemplate.currentX += r5[0x80] + printer->printerTemplate.letterSpacing;
+
+ return 0;
+ case 1:
+ if (TextPrinterWait(printer) != 0)
+ {
+ TextPrinterClearDownArrow(printer);
+
+ printer->state = 0;
+ }
+
+ return 3;
+ case 2:
+ if (TextPrinterWaitWithDownArrow(printer) != 0)
+ {
+ TextPrinterClearDownArrow(printer);
+ FillWindowPixelBuffer(
+ printer->printerTemplate.window, printer->printerTemplate.bgColor);
+ printer->printerTemplate.currentX = printer->printerTemplate.x;
+ printer->printerTemplate.currentY = printer->printerTemplate.y;
+ printer->state = 0;
+ }
+
+ return 3;
+ case 3:
+ if (TextPrinterWaitWithDownArrow(printer) != 0)
+ {
+ TextPrinterClearDownArrow(printer);
+ printer->scrollDistance =
+ (u8)(GetFontAttribute(printer->printerTemplate.fontId, 1) +
+ printer->printerTemplate.lineSpacing);
+ printer->printerTemplate.currentX = printer->printerTemplate.x;
+ printer->state = 4;
+ }
+
+ return 3;
+ case 4:
+ if (printer->scrollDistance != 0)
+ {
+ if ((int)printer->scrollDistance < 4)
+ {
+ ScrollWindow(printer->printerTemplate.window,
+ 0,
+ printer->scrollDistance,
+ (u8)(printer->printerTemplate.bgColor |
+ (printer->printerTemplate.bgColor << 4)));
+ printer->scrollDistance = 0;
+ }
+ else
+ {
+ ScrollWindow(printer->printerTemplate.window,
+ 0,
+ 4,
+ (u8)(printer->printerTemplate.bgColor |
+ (printer->printerTemplate.bgColor << 4)));
+
+ printer->scrollDistance -= 4;
+ }
+
+ CopyWindowToVram(printer->printerTemplate.window);
+ }
+ else
+ {
+ printer->state = 0;
+ }
+
+ return 3;
+ case 5:
+ printer->state = 0;
+ return 3;
+ case 6:
+ if (printer->delayCounter != 0)
+ {
+ printer->delayCounter--;
+ }
+ else
+ {
+ printer->state = 0;
+ }
+
+ return 3;
+ }
+
+ return 1;
+}
+
+THUMB_FUNC void FUN_02002840(u16 flag)
+{
+ unk00 = flag;
+}
+
+THUMB_FUNC void TextPrinterInitDownArrowCounters(struct TextPrinter *printer)
+{
+ struct TextPrinterSubStruct *subStruct =
+ (struct TextPrinterSubStruct *)(&printer->subStructFields);
+
+ if (gTextFlags.autoScroll)
+ {
+ subStruct->autoScrollDelay = 0;
+ return;
+ }
+
+ subStruct->downArrowYPosIdx = 0;
+ subStruct->downArrowDelay = 0;
+}
+
+THUMB_FUNC void TextPrinterDrawDownArrow(struct TextPrinter *printer)
+{
+ struct TextPrinterSubStruct *subStruct =
+ (struct TextPrinterSubStruct *)(&printer->subStructFields);
+
+ if (gTextFlags.autoScroll)
+ {
+ return;
+ }
+
+ if (subStruct->downArrowDelay != 0)
+ {
+ subStruct->downArrowDelay--;
+ return;
+ }
+
+ u8 bg_id = GetWindowBgId(printer->printerTemplate.window);
+ u8 x = GetWindowX(printer->printerTemplate.window);
+ u8 y = GetWindowY(printer->printerTemplate.window);
+ u8 width = GetWindowWidth(printer->printerTemplate.window);
+ u16 r6 = unk00;
+
+ FillBgTilemapRect(printer->printerTemplate.window->bgConfig,
+ bg_id,
+ (u16)(r6 + 18 + UNK_020ECB50[subStruct->downArrowYPosIdx] * 4),
+ (u8)(x + width + 1),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+
+ FillBgTilemapRect(printer->printerTemplate.window->bgConfig,
+ bg_id,
+ (u16)(r6 + 19 + UNK_020ECB50[subStruct->downArrowYPosIdx] * 4),
+ (u8)(x + width + 2),
+ (u8)(y + 2),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(printer->printerTemplate.window->bgConfig,
+ bg_id,
+ (u16)(r6 + 20 + UNK_020ECB50[subStruct->downArrowYPosIdx] * 4),
+ (u8)(x + width + 1),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+ FillBgTilemapRect(printer->printerTemplate.window->bgConfig,
+ bg_id,
+ (u16)(r6 + 21 + UNK_020ECB50[subStruct->downArrowYPosIdx] * 4),
+ (u8)(x + width + 2),
+ (u8)(y + 3),
+ 1,
+ 1,
+ 0x10);
+
+ BgCommitTilemapBufferToVram(printer->printerTemplate.window->bgConfig, bg_id);
+ subStruct->downArrowDelay = 8;
+ subStruct->downArrowYPosIdx++;
+}
+
+THUMB_FUNC void TextPrinterClearDownArrow(struct TextPrinter *printer)
+{
+ u8 bg_id = GetWindowBgId(printer->printerTemplate.window);
+ u8 x = GetWindowX(printer->printerTemplate.window);
+ u8 y = GetWindowY(printer->printerTemplate.window);
+ u8 width = GetWindowWidth(printer->printerTemplate.window);
+ u16 r6 = unk00;
+
+ FillBgTilemapRect(printer->printerTemplate.window->bgConfig,
+ bg_id,
+ (u16)(r6 + 10),
+ (u8)(x + width + 1),
+ (u8)(y + 2),
+ 1,
+ 2,
+ 0x10);
+ FillBgTilemapRect(printer->printerTemplate.window->bgConfig,
+ bg_id,
+ (u16)(r6 + 11),
+ (u8)(x + width + 2),
+ (u8)(y + 2),
+ 1,
+ 2,
+ 0x10);
+ BgCommitTilemapBufferToVram(printer->printerTemplate.window->bgConfig, bg_id);
+}
+
+THUMB_FUNC BOOL TextPrinterContinue(struct TextPrinter *printer)
+{
+#pragma unused(printer)
+ if ((gMain.newKeys & 3) != 0 || (gMain.touchNew != 0 && gTextFlags.unk0_4 != 0))
+ {
+ PlaySE(0x5DC);
+
+ gTextFlags.unk0_7 = 1;
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL TextPrinterWaitAutoMode(struct TextPrinter *printer)
+{
+ struct TextPrinterSubStruct *subStruct =
+ (struct TextPrinterSubStruct *)(&printer->subStructFields);
+
+ if (subStruct->autoScrollDelay == 100)
+ {
+ return TRUE;
+ }
+
+ subStruct->autoScrollDelay++;
+ if (gTextFlags.unk0_5)
+ {
+ return TextPrinterContinue(printer);
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL TextPrinterWaitWithDownArrow(struct TextPrinter *printer)
+{
+ if (gTextFlags.autoScroll)
+ {
+ return TextPrinterWaitAutoMode(printer);
+ }
+ TextPrinterDrawDownArrow(printer);
+
+ return TextPrinterContinue(printer);
+}
+
+THUMB_FUNC u8 TextPrinterWait(struct TextPrinter *printer)
+{
+ if (gTextFlags.autoScroll)
+ {
+ return (u8)TextPrinterWaitAutoMode(printer);
+ }
+
+ return (u8)TextPrinterContinue(printer);
+}
+
+THUMB_FUNC void TextFlags_SetCanABSpeedUpPrint(BOOL param0)
+{
+ gTextFlags.canABSpeedUpPrint = param0;
+}
+
+THUMB_FUNC void FUN_02002B7C(s32 param0)
+{
+ gTextFlags.autoScroll = param0 & 1;
+ gTextFlags.unk0_5 = (param0 >> 1) & 1;
+}
+
+THUMB_FUNC void FUN_02002BB8(u32 param0)
+{
+ gTextFlags.unk0_4 = param0;
+}
+
+THUMB_FUNC u8 FUN_02002BD4()
+{
+ return gTextFlags.unk0_6;
+}
+
+THUMB_FUNC void FUN_02002BE4()
+{
+ gTextFlags.unk0_6 = 0;
+}
+
+THUMB_FUNC u8 FUN_02002BF4()
+{
+ return gTextFlags.unk0_7;
+}
+
+THUMB_FUNC void FUN_02002C04()
+{
+ gTextFlags.unk0_7 = 0;
+}
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index 7adb1fe8..6287579c 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -4,7 +4,7 @@
#include "options.h"
#include "player_data.h"
#include "text.h"
-#include "unk_02016B94.h"
+#include "bg_window.h"
extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id);
extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id);
@@ -779,7 +779,7 @@ THUMB_FUNC BOOL ScrCmd_CloseMessageBox(struct ScriptContext* ctx)
struct Window *unk = FUN_02039438(unk80, 0x1);
u8 *unk2 = FUN_02039438(unk80, 0x6);
FUN_0200D0E0(unk, 0); //clear window?
- FUN_02019178(unk);
+ RemoveWindow(unk);
*unk2 = 0;
return FALSE;
}
@@ -789,7 +789,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0035(struct ScriptContext* ctx)
struct UnkSavStruct80 *unk80 = ctx->unk80;
struct Window *unk = FUN_02039438(unk80, 0x1);
u8 *unk2 = FUN_02039438(unk80, 0x6);
- FUN_02019178(unk);
+ RemoveWindow(unk);
*unk2 = 0;
return FALSE;
}
@@ -834,11 +834,11 @@ THUMB_FUNC static BOOL FUN_0203A6C8(struct ScriptContext* ctx)
{
if (*xdir == 0)
{
- FUN_020179E0(unk80->unk08, 3, 1, *xval);
+ BgSetPosTextAndCommit(unk80->unk08, 3, 1, *xval);
}
else
{
- FUN_020179E0(unk80->unk08, 3, 2, *xval);
+ BgSetPosTextAndCommit(unk80->unk08, 3, 2, *xval);
}
}
@@ -846,11 +846,11 @@ THUMB_FUNC static BOOL FUN_0203A6C8(struct ScriptContext* ctx)
{
if (*ydir == 0)
{
- FUN_020179E0(unk80->unk08, 3, 4, *yval);
+ BgSetPosTextAndCommit(unk80->unk08, 3, 4, *yval);
}
else
{
- FUN_020179E0(unk80->unk08, 3, 5, *yval);
+ BgSetPosTextAndCommit(unk80->unk08, 3, 5, *yval);
}
}
diff --git a/arm9/src/scrcmd_18_c.c b/arm9/src/scrcmd_18_c.c
deleted file mode 100644
index d4437c5f..00000000
--- a/arm9/src/scrcmd_18_c.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "global.h"
-#include "script.h"
-#include "party.h"
-#include "save_block_2.h"
-#include "unk_0204639C.h"
-#include "map_header.h"
-#include "scrcmd.h"
-
-extern BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u8 encounterType);
-
-THUMB_FUNC BOOL ScrCmd_GiveMon(struct ScriptContext* ctx)
-{
- u32 mapSec = MapHeader_GetMapSec(*(ctx->unk80->mapId));
- struct UnkSavStruct80 *savePtr = ctx->unk80;
- u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
- u16 level = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
- u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
- u16 * varPtr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
- struct PlayerParty * party = SavArray_PlayerParty_get(savePtr->saveBlock2);
- *varPtr = (u16)GiveMon(11, savePtr->saveBlock2, species, (u8)level, item, mapSec, 12);
- return FALSE;
-}
diff --git a/arm9/src/scrcmd_24.c b/arm9/src/scrcmd_24.c
index 9c8f8d4b..b38ed05a 100644
--- a/arm9/src/scrcmd_24.c
+++ b/arm9/src/scrcmd_24.c
@@ -25,11 +25,13 @@ THUMB_FUNC BOOL ScrCmd_Unk01C6(struct ScriptContext* ctx)
return TRUE;
}
-#ifdef NONMATCHING
THUMB_FUNC BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx)
{
- u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
- struct UnkStruct_02037CF0** unk_ptr = FUN_02039438(ctx->unk80, 19);
+ struct UnkStruct_02037CF0** unk_ptr;
+ u16* ret_ptr;
+
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ unk_ptr = FUN_02039438(ctx->unk80, 19);
GF_ASSERT(*unk_ptr != NULL);
*ret_ptr = FUN_02037D5C(*unk_ptr);
@@ -42,44 +44,6 @@ THUMB_FUNC BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx)
*unk_ptr = NULL;
return FALSE;
}
-#else
-THUMB_FUNC asm BOOL ScrCmd_Unk01C7(struct ScriptContext* ctx)
-{
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, #0x80
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- mov r1, #0x13
- bl FUN_02039438
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- bne _02045DFC
- bl GF_AssertFail
-_02045DFC:
- ldr r0, [r4, #0x0]
- bl FUN_02037D5C
- strh r0, [r5, #0x0]
- ldrh r0, [r5, #0x0]
- cmp r0, #0x4
- bne _02045E0E
- mov r0, #0xff
- strh r0, [r5, #0x0]
-_02045E0E:
- ldr r0, [r4, #0x0]
- bl FreeToHeap
- mov r0, #0x0
- str r0, [r4, #0x0]
- pop {r3-r5, pc}
-}
-#endif
THUMB_FUNC BOOL ScrCmd_Unk021E(struct ScriptContext* ctx)
{
@@ -159,12 +123,15 @@ THUMB_FUNC BOOL ScrCmd_Unk0222(struct ScriptContext* ctx)
return FALSE;
}
-#ifdef NONMATCHING
THUMB_FUNC BOOL ScrCmd_Unk0223(struct ScriptContext* ctx)
{
- u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
- struct UnkStruct_02037CF0** unk = FUN_02039438(ctx->unk80, 19);
- struct UnkStruct_02037CF0* unk_sub = *unk;
+ struct UnkStruct_02037CF0** unk;
+ struct UnkStruct_02037CF0* unk_sub;
+ u16* ret_ptr;
+
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ unk = FUN_02039438(ctx->unk80, 19);
+ unk_sub = *unk;
GF_ASSERT(unk_sub != NULL);
@@ -180,49 +147,16 @@ THUMB_FUNC BOOL ScrCmd_Unk0223(struct ScriptContext* ctx)
FUN_02088DF0(unk_sub);
return FALSE;
}
-#else
-THUMB_FUNC asm BOOL ScrCmd_Unk0223(struct ScriptContext* ctx)
-{
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, #0x80
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- mov r1, #0x13
- bl FUN_02039438
- ldr r4, [r0, #0x0]
- cmp r4, #0x0
- bne _02045FB2
- bl GF_AssertFail
-_02045FB2:
- ldrb r0, [r4, #0x16]
- cmp r0, #0x0
- bne _02045FBC
- mov r0, #0x0
- b _02045FBE
-_02045FBC:
- mov r0, #0xff
-_02045FBE:
- strh r0, [r5, #0x0]
- add r0, r4, #0x0
- bl FUN_02088DF0
- mov r0, #0x0
- pop {r3-r5, pc}
-}
-#endif
-#ifdef NONMATCHING
THUMB_FUNC BOOL ScrCmd_Unk0225(struct ScriptContext* ctx)
{
- u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
- struct UnkStruct_02037CF0** unk = FUN_02039438(ctx->unk80, 19);
- struct UnkStruct_02037CF0* unk_sub = *unk;
+ struct UnkStruct_02037CF0** unk;
+ struct UnkStruct_02037CF0* unk_sub;
+ u16* ret_ptr;
+
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ unk = FUN_02039438(ctx->unk80, 19);
+ unk_sub = *unk;
GF_ASSERT(unk_sub != NULL);
@@ -238,39 +172,3 @@ THUMB_FUNC BOOL ScrCmd_Unk0225(struct ScriptContext* ctx)
FUN_02088DF0(unk_sub);
return FALSE;
}
-#else
-THUMB_FUNC asm BOOL ScrCmd_Unk0225(struct ScriptContext* ctx)
-{
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl ScriptReadHalfword
- add r1, r0, #0x0
- add r0, r4, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- bl GetVarPointer
- add r4, #0x80
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- mov r1, #0x13
- bl FUN_02039438
- ldr r4, [r0, #0x0]
- cmp r4, #0x0
- bne _02045FB2
- bl GF_AssertFail
-_02045FB2:
- ldrb r0, [r4, #0x16]
- cmp r0, #0x0
- bne _02045FBC
- mov r0, #0x0
- b _02045FBE
-_02045FBC:
- mov r0, #0xff
-_02045FBE:
- strh r0, [r5, #0x0]
- add r0, r4, #0x0
- bl FUN_02088DF0
- mov r0, #0x0
- pop {r3-r5, pc}
-}
-#endif
diff --git a/arm9/src/scrcmd_party.c b/arm9/src/scrcmd_party.c
new file mode 100644
index 00000000..48d558c9
--- /dev/null
+++ b/arm9/src/scrcmd_party.c
@@ -0,0 +1,815 @@
+#include "scrcmd.h"
+#include "constants/moves.h"
+#include "itemtool.h"
+#include "map_header.h"
+#include "module_05.h"
+#include "party.h"
+#include "save_block_2.h"
+#include "script_pokemon_util.h"
+#include "unk_02015CC0.h"
+#include "unk_02022504.h"
+#include "unk_0204639C.h"
+#include "unk_0207FC5C.h"
+
+extern u16 FUN_02054DEC(struct SaveBlock2* sav2);
+
+THUMB_FUNC BOOL ScrCmd_GiveMon(struct ScriptContext* ctx)
+{
+ u32 mapSec = MapHeader_GetMapSec(*(ctx->unk80->mapId));
+ struct UnkSavStruct80 *savePtr = ctx->unk80;
+ u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 level = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 * varPtr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty * party = SavArray_PlayerParty_get(savePtr->saveBlock2);
+ *varPtr = (u16)GiveMon(11, savePtr->saveBlock2, species, (u8)level, item, mapSec, 12);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonSpecies(struct ScriptContext* ctx)
+{
+ u32 species;
+ u16* ret_ptr;
+
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* mon_slot = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, *mon_slot);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ species = GetMonData(party_mon, MON_DATA_SPECIES, NULL);
+ }
+ else
+ {
+ species = SPECIES_NONE;
+ }
+
+ *ret_ptr = (u16)species;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckPartyMonOTID(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr);
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(sav2);
+
+ u16* mon_slot = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, *mon_slot);
+
+ u16 party_mon_otid = (u16)GetMonData(party_mon, MON_DATA_OTID, NULL);
+ u16 player_otid = (u16)PlayerProfile_GetTrainerID(player);
+ if (party_mon_otid == player_otid)
+ {
+ *ret_ptr = 0;
+ }
+ else
+ {
+ *ret_ptr = 1;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GiveEgg(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(sav_ptr->saveBlock2);
+ u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ u8 party_count = (u8)GetPartyCount(party);
+
+ if (party_count < PARTY_SIZE)
+ {
+ struct Pokemon* egg = AllocMonZeroed(11);
+ ZeroMonData(egg);
+
+ s32 met_loc = FUN_02015CF8(1, unk);
+ MOD05_SetEggStats(egg, species, 1, player, 3, met_loc);
+
+ AddMonToParty(party, egg);
+ FreeToHeap(egg);
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SetPartyMonMove(struct ScriptContext* ctx)
+{
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 move_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 move = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+
+ PartyMonSetMoveInSlot(party, mon_slot, move_slot, move);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PartyMonHasMove(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 required_move = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = 0;
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg)
+ {
+ return FALSE;
+ }
+
+ if (required_move == GetMonData(party_mon, MON_DATA_MOVE1, NULL) ||
+ required_move == GetMonData(party_mon, MON_DATA_MOVE2, NULL) ||
+ required_move == GetMonData(party_mon, MON_DATA_MOVE3, NULL) ||
+ required_move == GetMonData(party_mon, MON_DATA_MOVE4, NULL))
+ {
+ *ret_ptr = 1;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_FindPartyMonWithMove(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 required_move = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u8 party_count = (u8)GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ u8 i;
+ for (i = 0, *ret_ptr = PARTY_SIZE; i < party_count; i++)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ if (required_move == GetMonData(party_mon, MON_DATA_MOVE1, NULL) ||
+ required_move == GetMonData(party_mon, MON_DATA_MOVE2, NULL) ||
+ required_move == GetMonData(party_mon, MON_DATA_MOVE3, NULL) ||
+ required_move == GetMonData(party_mon, MON_DATA_MOVE4, NULL))
+ {
+ *ret_ptr = i;
+ break;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SurvivePsn(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = (u16)SurvivePoisoning(party_mon);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CountPartyMonsAtOrBelowLevel(struct ScriptContext* ctx)
+{
+ u8 party_count;
+ u8 i;
+
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 highest_level = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ party_count = (u8)GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ u8 mons;
+ for (i = 0, mons = 0, *ret_ptr = 0; i < party_count; i++)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ u32 party_mon_level = GetMonData(party_mon, MON_DATA_LEVEL, NULL);
+ if (party_mon_level <= highest_level)
+ {
+ mons++;
+ }
+ }
+ }
+
+ *ret_ptr = mons;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonLevel(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = 0;
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ *ret_ptr = (u16)GetMonData(party_mon, MON_DATA_LEVEL, NULL);
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonNature(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u8 party_count = (u8)GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ if (mon_slot >= party_count)
+ {
+ *ret_ptr = 0;
+ return FALSE;
+ }
+
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg)
+ {
+ *ret_ptr = 0;
+ return FALSE;
+ }
+
+ *ret_ptr = GetMonNature(party_mon);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_FindPartyMonWithNature(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 required_nature = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u8 party_count = (u8)GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ u8 i;
+ for (i = 0, *ret_ptr = 0xFF; i < party_count; i++)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ u8 party_mon_nature = GetMonNature(party_mon);
+ if (required_nature == party_mon_nature)
+ {
+ *ret_ptr = i;
+ break;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonFriendship(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = (u16)GetMonData(party_mon, MON_DATA_FRIENDSHIP, NULL);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_AddPartyMonFriendship(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16 friendship_to_add = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 map_sec = MapHeader_GetMapSec(*ctx->unk80->mapId);
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ u16 friendship = (u16)GetMonData(party_mon, MON_DATA_FRIENDSHIP, NULL);
+
+ if (friendship_to_add != 0)
+ {
+ u16 party_mon_held_item = (u16)GetMonData(party_mon, MON_DATA_HELD_ITEM, NULL);
+ u32 held_item_hold_effect = GetItemAttr(party_mon_held_item, ITEMATTR_HOLD_EFFECT, 11);
+ if (held_item_hold_effect == HOLD_EFFECT_FRIENDSHIP_UP)
+ {
+ friendship_to_add = (u16)((friendship_to_add * 150) / 100);
+ }
+
+ u32 party_mon_pokeball = GetMonData(party_mon, MON_DATA_POKEBALL, NULL);
+ if (party_mon_pokeball == ITEM_LUXURY_BALL)
+ {
+ friendship_to_add++;
+ }
+
+ u32 party_mon_egg_met_location = GetMonData(party_mon, MON_DATA_EGG_MET_LOCATION, NULL);
+ if (map_sec == party_mon_egg_met_location)
+ {
+ friendship_to_add++;
+ }
+ }
+
+ friendship += friendship_to_add;
+ if (friendship > 0xFF)
+ {
+ friendship = 0xFF;
+ }
+
+ SetMonData(party_mon, MON_DATA_FRIENDSHIP, &friendship);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_SubtractPartyMonFriendship(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16 friendship_to_deplete = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ u16 friendship = (u16)GetMonData(party_mon, MON_DATA_FRIENDSHIP, NULL);
+ if (friendship_to_deplete > friendship)
+ {
+ friendship = 0;
+ }
+ else
+ {
+ friendship -= friendship_to_deplete;
+ }
+
+ SetMonData(party_mon, MON_DATA_FRIENDSHIP, &friendship);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonContestCondition(struct ScriptContext* ctx)
+{
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 contest_condition_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = (u16)GetMonData(party_mon, MON_DATA_COOL + contest_condition_id, NULL);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetLeadingPartyMonSlot(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+
+ *ret_ptr = FUN_02054DEC(ctx->unk80->saveBlock2);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonTypes(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* type1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* type2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *type1 = (u16)GetMonData(party_mon, MON_DATA_TYPE_1, NULL);
+ *type2 = (u16)GetMonData(party_mon, MON_DATA_TYPE_2, NULL);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CountPartyMons(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+
+ *ret_ptr = (u16)GetPartyCount(party);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CountPartyMons_OmitEggs(struct ScriptContext* ctx)
+{
+ u32 non_egg_mons;
+ s32 i;
+
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ s32 party_count = GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ for (i = 0, non_egg_mons = 0; i < party_count; i++)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ non_egg_mons++;
+ }
+
+ }
+
+ *ret_ptr = (u16)non_egg_mons;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CountAvailablePartyMons_IgnoreSlot(struct ScriptContext* ctx)
+{
+ u16 slot_to_ignore;
+ s32 party_count;
+
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ slot_to_ignore = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ party_count = GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ u32 available_mons;
+ s32 i;
+ for (i = 0, available_mons = 0; i < party_count; i++)
+ {
+ if (i != slot_to_ignore)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ u32 party_mon_hp = GetMonData(party_mon, MON_DATA_HP, NULL);
+ if (party_mon_hp != 0)
+ {
+ available_mons++;
+ }
+ }
+ }
+ }
+
+ *ret_ptr = (u16)available_mons;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CountAvailablePartyAndPCMons(struct ScriptContext* ctx)
+{
+ s32 party_count;
+ struct PCStorage* pc;
+
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ pc = GetStoragePCPointer(sav_ptr->saveBlock2);
+ party_count = GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ u32 mons;
+ s32 i;
+ for (i = 0, mons = 0; i < party_count; i++)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ u32 party_mon_hp = GetMonData(party_mon, MON_DATA_HP, NULL);
+ if (party_mon_hp != 0)
+ {
+ mons++;
+ }
+ }
+ }
+
+ *ret_ptr = (u16)(mons + PCStorage_CountMonsInAllBoxes(pc));
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyEggCount(struct ScriptContext* ctx)
+{
+ s32 party_count;
+ u32 eggs_in_party;
+
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ party_count = GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ s32 i;
+ for (i = 0, eggs_in_party = 0; i < party_count; i++)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg)
+ {
+ eggs_in_party++;
+ }
+ }
+
+ *ret_ptr = (u16)eggs_in_party;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckPartyForPokerus(struct ScriptContext* ctx)
+{
+ u16 party_count;
+ u16 i;
+
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ party_count = (u16)GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ for (i = 0, *ret_ptr = 0; i < party_count; i++)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_has_pokerus = (BOOL)GetMonData(party_mon, MON_DATA_POKERUS, NULL);
+ if (party_mon_has_pokerus)
+ {
+ *ret_ptr = 1;
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonGender(struct ScriptContext* ctx)
+{
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = (u16)GetMonData(party_mon, MON_DATA_GENDER, NULL);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CountPartyMonMoves(struct ScriptContext* ctx)
+{
+ struct Pokemon* party_mon;
+ u8 moves;
+
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg)
+ {
+ *ret_ptr = 0;
+ return FALSE;
+ }
+
+ moves = 0;
+
+ u32 move1 = GetMonData(party_mon, MON_DATA_MOVE1, NULL);
+ if (move1 != MOVE_NONE)
+ {
+ moves++;
+ }
+
+ u32 move2 = GetMonData(party_mon, MON_DATA_MOVE2, NULL);
+ if (move2 != MOVE_NONE)
+ {
+ moves++;
+ }
+
+ u32 move3 = GetMonData(party_mon, MON_DATA_MOVE3, NULL);
+ if (move3 != MOVE_NONE)
+ {
+ moves++;
+ }
+
+ u32 move4 = GetMonData(party_mon, MON_DATA_MOVE4, NULL);
+ if (move4 != MOVE_NONE)
+ {
+ moves++;
+ }
+
+ *ret_ptr = moves;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_ForgetPartyMonMove(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 move_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ FUN_020699A4(party_mon, move_slot);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonMove(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 move_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = (u16)GetMonData(party_mon, MON_DATA_MOVE1 + move_slot, NULL);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GetPartyMonHeldItem(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = (u16)GetMonData(party_mon, MON_DATA_HELD_ITEM, NULL);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_ResetPartyMonHeldItem(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ u16 party_mon_held_item = ITEM_NONE;
+ SetMonData(party_mon, MON_DATA_HELD_ITEM, &party_mon_held_item);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckPartyForSpecies(struct ScriptContext* ctx)
+{
+ struct UnkSavStruct80* sav_ptr = ctx->unk80;
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u8 party_count = (u8)GetPartyCount(SavArray_PlayerParty_get(sav_ptr->saveBlock2));
+
+ u8 i;
+ for (i = 0, *ret_ptr = 0; i < party_count; i++)
+ {
+ struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg == FALSE)
+ {
+ u16 party_mon_species = (u16)GetMonData(party_mon, MON_DATA_SPECIES, NULL);
+ if (species == party_mon_species)
+ {
+ *ret_ptr = 1;
+ break;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CountPartyMonRibbons(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ u16 ribbon_idx;
+ u16 ribbons;
+ for (ribbon_idx = 0, ribbons = 0; ribbon_idx < 80; ribbon_idx++)
+ {
+ BOOL party_mon_has_ribbon = (BOOL)GetMonData(party_mon, FUN_0207FC5C((u8)ribbon_idx, 0), NULL);
+ if (party_mon_has_ribbon)
+ {
+ ribbons++;
+ }
+ }
+
+ *ret_ptr = ribbons;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CountTotalPartyRibbons(struct ScriptContext* ctx)
+{
+ struct PlayerParty* party;
+ u16 ribbon_idx;
+ u16 ribbons;
+
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 party_count = (u16)GetPartyCount(SavArray_PlayerParty_get(ctx->unk80->saveBlock2));
+ party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+
+ for (ribbon_idx = 0, ribbons = 0; ribbon_idx < 80; ribbon_idx++)
+ {
+ for (u16 i = 0; i < party_count; i++)
+ {
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg)
+ {
+ // BUG: This `break` should be a `continue`, as any party mons after a detected
+ // egg would have their ribbons ignored.
+ break;
+ }
+
+ BOOL party_mon_has_ribbon = (BOOL)GetMonData(party_mon, FUN_0207FC5C((u8)ribbon_idx, 0), NULL);
+ if (party_mon_has_ribbon)
+ {
+ ribbons++;
+ break;
+ }
+ }
+ }
+
+ *ret_ptr = ribbons;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_PartyMonHasRibbon(struct ScriptContext* ctx)
+{
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 ribbon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ *ret_ptr = (u16)GetMonData(party_mon, FUN_0207FC5C((u8)ribbon_idx, 0), NULL);
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_GivePartyMonRibbon(struct ScriptContext* ctx)
+{
+ u16 mon_slot = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 ribbon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u8 mon_has_ribbon = TRUE;
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, mon_slot);
+
+ SetMonData(party_mon, (s32)FUN_0207FC5C((u8)ribbon_idx, 0), &mon_has_ribbon);
+
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_CheckPartyForBadEgg(struct ScriptContext* ctx)
+{
+ u16 ribbon_idx;
+
+ u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 party_count = (u16)GetPartyCount(SavArray_PlayerParty_get(ctx->unk80->saveBlock2));
+ struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
+
+ // BUG: Probably a copy-paste fail. Checks if your party has a Bad Egg in it,
+ // 80 times.
+ for (ribbon_idx = 0; ribbon_idx < 80; ribbon_idx++)
+ {
+ for (u16 i = 0; i < party_count; i++)
+ {
+ struct Pokemon* party_mon = GetPartyMonByIndex(party, i);
+ BOOL party_mon_is_egg = (BOOL)GetMonData(party_mon, MON_DATA_IS_EGG, NULL);
+ if (party_mon_is_egg)
+ {
+ BOOL party_mon_is_bad_egg = (BOOL)GetMonData(party_mon, MON_DATA_CHECKSUM_FAILED, NULL);
+ if (party_mon_is_bad_egg)
+ {
+ *ret_ptr = 1;
+ return FALSE;
+ }
+ }
+ }
+ }
+
+ *ret_ptr = 0;
+ return FALSE;
+}
+
+THUMB_FUNC BOOL ScrCmd_Unk00A0(struct ScriptContext* ctx)
+{
+#pragma unused(ctx)
+ return FALSE;
+}
diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c
index ec5ab7f8..1251c612 100644
--- a/arm9/src/scrcmd_sound.c
+++ b/arm9/src/scrcmd_sound.c
@@ -18,7 +18,7 @@ extern void FUN_0200538C(u32, u16, u32);
extern void FUN_020053CC(u16, u16);
extern BOOL FUN_02005404(void);
extern u16 FUN_02005410(u16);
-extern void FUN_020054C8(u16);
+extern void PlaySE(u16);
extern void FUN_020054F0(u16, u32);
extern void FUN_020047C8(u8, u8);
extern void FUN_020040F4(u8);
@@ -123,7 +123,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0058(struct ScriptContext* ctx)
THUMB_FUNC BOOL ScrCmd_PlayFanfare(struct ScriptContext* ctx)
{
u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
- FUN_020054C8(unk);
+ PlaySE(unk);
return FALSE;
}
@@ -263,4 +263,3 @@ THUMB_FUNC BOOL ScrCmd_SetVolume(struct ScriptContext* ctx)
return FALSE;
}
-
diff --git a/arm9/src/script.c b/arm9/src/script.c
index 3de2ee73..3e8cca58 100644
--- a/arm9/src/script.c
+++ b/arm9/src/script.c
@@ -76,7 +76,7 @@ THUMB_FUNC u8 RunScriptCommand(struct ScriptContext *ctx)
cmdCode = ScriptReadHalfword(ctx);
if (cmdCode >= ctx->cmdCount)
{
- GF_AssertFail();
+ GF_ASSERT(0);
ctx->mode = 0;
return FALSE;
}
diff --git a/arm9/src/script_pokemon_util.c b/arm9/src/script_pokemon_util.c
index 55519ca3..de78ae28 100644
--- a/arm9/src/script_pokemon_util.c
+++ b/arm9/src/script_pokemon_util.c
@@ -109,7 +109,7 @@ struct Pokemon * GetFirstAliveMonInParty_CrashIfNone(struct PlayerParty * party)
if(MonNotFaintedOrEgg(mon))
return mon;
}
- GF_AssertFail();
+ GF_ASSERT(0);
return 0;
}
diff --git a/arm9/src/text_02054590.c b/arm9/src/text_02054590.c
index dcbad024..f5527257 100644
--- a/arm9/src/text_02054590.c
+++ b/arm9/src/text_02054590.c
@@ -1,20 +1,17 @@
#include "text_02054590.h"
#include "text.h"
-#include "unk_02016B94.h"
+#include "bg_window.h"
+#include "render_text.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_0200CD68(
- struct UnkStruct_02016B94_2 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5);
+ struct BgConfig *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(struct UnkStruct_02016B94_2 *param0,
+extern void FUN_0200D300(struct BgConfig *param0,
u32 param1,
u32 param2,
u32 param3,
@@ -33,21 +30,21 @@ THUMB_FUNC void FUN_02054590(u32 param0, u32 param1)
FUN_02002EEC(param0, 384, 4);
}
-THUMB_FUNC void FUN_020545B8(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2)
+THUMB_FUNC void FUN_020545B8(struct BgConfig *param0, struct Window *param1, u32 param2)
{
if (param2 == 3)
{
- FUN_02019064(param0, param1, 3, 2, 19, 27, 4, 12, 813);
+ AddWindowParameterized(param0, param1, 3, 2, 19, 27, 4, 12, 813);
}
else
{
- FUN_02019064(param0, param1, 7, 2, 19, 27, 4, 12, 404);
+ AddWindowParameterized(param0, param1, 7, 2, 19, 27, 4, 12, 404);
}
}
THUMB_FUNC void FUN_02054608(struct Window *param0, struct Options *options)
{
- FUN_0200CD68(param0->unk00, FUN_0201AB08(param0), 994, 10, (u8)Options_GetFrame(options), 4);
+ FUN_0200CD68(param0->bgConfig, GetWindowBgId(param0), 994, 10, (u8)Options_GetFrame(options), 4);
FUN_0205464C(param0);
FUN_0200D0BC(param0, 0, 994, 10);
}
@@ -59,15 +56,15 @@ THUMB_FUNC void FUN_0205464C(struct Window *param0)
THUMB_FUNC u16 FUN_02054658(struct Window * window, struct String *str, struct Options *options, u8 param3)
{
- FUN_02002B60(param3);
+ TextFlags_SetCanABSpeedUpPrint(param3);
FUN_02002B7C(0);
FUN_02002BB8(0);
return AddTextPrinterParameterized(window, 1, str, 0, 0, (u32)Options_GetTextFrameDelay(options), NULL);
}
-THUMB_FUNC u16 DrawFieldMessage(struct Window * window, struct String *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, s32 a5)
{
- FUN_02002B60(a4);
+ TextFlags_SetCanABSpeedUpPrint(a4);
FUN_02002B7C(a5);
FUN_02002BB8(0);
return AddTextPrinterParameterized(window, fontId, str, 0, 0, speed, NULL);
@@ -79,7 +76,7 @@ THUMB_FUNC u8 FUN_020546C8(u32 param0) // bool8?
}
THUMB_FUNC void FUN_020546E0(
- struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2, u32 param3)
+ struct BgConfig *param0, struct Window *param1, u32 param2, u32 param3)
{
u32 r4 = 0;
u32 r5 = 0;
@@ -95,17 +92,17 @@ THUMB_FUNC void FUN_020546E0(
}
if (param3 == 3)
{
- FUN_02019064(param0, param1, 3, (u8)r4, 19, (u8)r5, 4, 9, 813);
+ AddWindowParameterized(param0, param1, 3, (u8) r4, 19, (u8) r5, 4, 9, 813);
}
else
{
- FUN_02019064(param0, param1, 7, (u8)r4, 19, (u8)r5, 4, 9, 404);
+ AddWindowParameterized(param0, param1, 7, (u8) r4, 19, (u8) r5, 4, 9, 404);
}
}
THUMB_FUNC void FUN_02054744(struct Window *param0, u32 param1, u32 param2)
{
- FUN_0200D300(param0->unk00, FUN_0201AB08(param0), 0x399, 9, (u8)param1, param2, 4);
+ FUN_0200D300(param0->bgConfig, GetWindowBgId(param0), 0x399, 9, (u8)param1, param2, 4);
FillWindowPixelBuffer(param0, 15);
FUN_0200D6F8(param0, 0, 0x399, 9, (u8)param1);
}
diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c
index 1799fd24..d4e8f8a1 100644
--- a/arm9/src/timer3.c
+++ b/arm9/src/timer3.c
@@ -1,37 +1,37 @@
#include "timer3.h"
-struct Timer3Data timer3_data;
+static BOOL timer3_needReset;
+static vu64 timer3_counter;
THUMB_FUNC void Init_Timer3()
{
- timer3_data.Timer3Counter = 0;
- timer3_data.NeedReset = FALSE;
+ timer3_counter = 0;
+ timer3_needReset = FALSE;
- reg_OS_TM3CNT_H = 0;
- reg_OS_TM3CNT_L = 0;
- reg_OS_TM3CNT_H = 0xc1; // start timer3 with f/64 and irq enable
+ OS_SetTimerControl(OS_TIMER_3, 0);
+ OS_SetTimerCount(OS_TIMER_3, 0);
+ OS_SetTimerControl(OS_TIMER_3, REG_OS_TM3CNT_H_E_MASK | REG_OS_TM3CNT_H_I_MASK | OS_TIMER_PRESCALER_64); // start timer3 with f/64 and irq enable
- OS_SetIrqFunction(0x40, &CountUpTimer3);
- OS_EnableIrqMask(0x40); // irq on timer3 overflow
+ OS_SetIrqFunction(OS_IE_TIMER3, &CountUpTimer3);
+ OS_EnableIrqMask(OS_IE_TIMER3); // irq on timer3 overflow
}
THUMB_FUNC void CountUpTimer3()
{
- timer3_data.Timer3Counter++;
+ timer3_counter++;
- if (timer3_data.NeedReset)
+ if (timer3_needReset)
{
- reg_OS_TM3CNT_H = 0;
- reg_OS_TM3CNT_L = 0;
- reg_OS_TM3CNT_H = 0xc1;
- timer3_data.NeedReset = FALSE;
+ OS_SetTimerControl(OS_TIMER_3, 0);
+ OS_SetTimerCount(OS_TIMER_3, 0);
+ OS_SetTimerControl(OS_TIMER_3, REG_OS_TM3CNT_H_E_MASK | REG_OS_TM3CNT_H_I_MASK | OS_TIMER_PRESCALER_64);
+ timer3_needReset = FALSE;
}
- *(vu32 *)HW_INTR_CHECK_BUF |= 0x40;
-
- OS_SetIrqFunction(0x40, &CountUpTimer3);
+ OS_SetIrqCheckFlag(OS_IE_TIMER3);
+ OS_SetIrqFunction(OS_IE_TIMER3, &CountUpTimer3);
}
THUMB_FUNC u64 internal_GetTimer3Count()
@@ -39,15 +39,15 @@ THUMB_FUNC u64 internal_GetTimer3Count()
OSIntrMode intr_mode = OS_DisableInterrupts();
vu16 timer3 = reg_OS_TM3CNT_L;
- vu64 timer3_counter = timer3_data.Timer3Counter & 0x0000ffffffffffff;
+ vu64 counter = timer3_counter & 0x0000ffffffffffff;
- if (reg_OS_IF & 0x40 && !(timer3 & 0x8000))
+ if (reg_OS_IF & OS_IE_TIMER3 && !(timer3 & 0x8000))
{
- timer3_counter++;
+ counter++;
}
OS_RestoreInterrupts(intr_mode);
- return (timer3_counter << 16) | timer3;
+ return (counter << 16) | timer3;
}
THUMB_FUNC u64 GetTimer3Count()
@@ -57,10 +57,10 @@ THUMB_FUNC u64 GetTimer3Count()
THUMB_FUNC u64 Timer3CountToMilliSeconds(u64 count)
{
- return (count *64) / 33514;
+ return (count * 64) / (HW_SYSTEM_CLOCK / 1000);
}
THUMB_FUNC u64 Timer3CountToSeconds(u64 count)
{
- return (count *64) / HW_SYSTEM_CLOCK;
+ return (count * 64) / HW_SYSTEM_CLOCK;
}
diff --git a/arm9/src/unk_0200BB14.c b/arm9/src/unk_0200BB14.c
index 45850885..4ed957d6 100644
--- a/arm9/src/unk_0200BB14.c
+++ b/arm9/src/unk_0200BB14.c
@@ -323,7 +323,7 @@ THUMB_FUNC BOOL FUN_0200BD20(
for (s32 i = 0; i < st14; i++)
{
u32 st18 = FUN_02009660(param1->unk08, i);
- void *st1c = FUN_020161A4(param0->unk000, st10[i]);
+ void *st1c = AllocAndReadFile(param0->unk000, st10[i]);
FUN_02009668(st1c, st18, param0->unk000);
FreeToHeap(st1c);
@@ -344,7 +344,7 @@ THUMB_FUNC BOOL FUN_0200BD20(
FUN_02009A90(param1->unk24[0]);
FUN_02009D34(param1->unk24[1]);
- void *r6 = FUN_020161A4(param0->unk000, st10[6]);
+ void *r6 = AllocAndReadFile(param0->unk000, st10[6]);
param1->unk04 = FUN_02008BE0(r6,
param0->unk000,
param1->unk0c[0],
@@ -517,13 +517,8 @@ THUMB_FUNC BOOL FUN_0200C00C(u32 *param0,
return TRUE;
}
- GF_AssertFail();
- if (r5 != 0)
- {
- return TRUE;
- }
-
- return FALSE;
+ GF_ASSERT(0);
+ return r5 != 0 ? TRUE : FALSE;
}
THUMB_FUNC s32 FUN_0200C06C(u32 *param0,
@@ -549,7 +544,7 @@ THUMB_FUNC s32 FUN_0200C06C(u32 *param0,
return (s8)FUN_02009E88(r5, param6);
}
- GF_AssertFail();
+ GF_ASSERT(0);
return -1;
}
@@ -721,7 +716,7 @@ THUMB_FUNC struct UnkStruct_0200BB14_5 *FUN_0200C154(
}
else
{
- GF_AssertFail();
+ GF_ASSERT(0);
}
return ptr;
@@ -805,13 +800,8 @@ THUMB_FUNC BOOL FUN_0200C404(u32 *param0,
GF_ASSERT(r4 == 1);
return r4;
}
- GF_AssertFail();
- if (r5 != 0)
- {
- return TRUE;
- }
-
- return FALSE;
+ GF_ASSERT(0);
+ return r5 != 0 ? TRUE : FALSE;
}
THUMB_FUNC BOOL FUN_0200C474(u32 *param0, u32 param1)
@@ -1259,13 +1249,8 @@ THUMB_FUNC BOOL FUN_0200C918(u32 *param0,
return TRUE;
}
- GF_AssertFail();
- if (r5 != 0)
- {
- return TRUE;
- }
-
- return FALSE;
+ GF_ASSERT(0);
+ return r5 != 0 ? TRUE : FALSE;
}
THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
@@ -1290,13 +1275,8 @@ THUMB_FUNC BOOL FUN_0200C978(u32 *param0,
return TRUE;
}
- GF_AssertFail();
- if (r5 != 0)
- {
- return TRUE;
- }
-
- return FALSE;
+ GF_ASSERT(0);
+ return r5 != 0 ? TRUE : FALSE;
}
THUMB_FUNC void FUN_0200C9D8(
diff --git a/arm9/src/unk_02016B94.c b/arm9/src/unk_02016B94.c
deleted file mode 100644
index 6a9dd194..00000000
--- a/arm9/src/unk_02016B94.c
+++ /dev/null
@@ -1,8110 +0,0 @@
-#include "global.h"
-#include "unk_02016B94.h"
-#include "GX_layers.h"
-#include "game_init.h"
-#include "gx.h"
-#include "heap.h"
-
-extern void NNS_G2dGetUnpackedBGCharacterData(void *param0, u32 *param1);
-extern void NNS_G2dGetUnpackedPaletteData(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);
-
- MI_CpuClear16(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)
- {
- MI_CpuCopy32(param0, param1, param2);
- return;
- }
-
- MI_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;
- }
-
- MI_CpuFillFast(st4, r5, 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)
- {
- MI_CpuClear16(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)
- {
- MI_CpuFill16(param0->unk08[param1].unk08, param2, 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)
- {
- MI_CpuFill16(param0->unk08[param1].unk08, param2, 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, u8 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;
- }
-
- MI_CpuFillFast(
- window->unk0c,
- (u32)((param1 << 0x18) | (param1 << 0x10) | (param1 << 0x8) | param1),
- (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;
- NNS_G2dGetUnpackedBGCharacterData(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;
- NNS_G2dGetUnpackedPaletteData(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_0201B8B8.c b/arm9/src/unk_0201B8B8.c
index c7f77f87..b8e978f2 100644
--- a/arm9/src/unk_0201B8B8.c
+++ b/arm9/src/unk_0201B8B8.c
@@ -14,7 +14,7 @@ const u16 * MsgArray_SkipControlCode(const u16 * r4)
return r4;
}
-u16 MsgArray_GetControlCode(const u16 * r4)
+u32 MsgArray_GetControlCode(const u16 * r4)
{
GF_ASSERT(*r4 == 0xFFFE);
return r4[1];
@@ -25,7 +25,7 @@ BOOL MsgArray_ControlCodeIsStrVar(const u16 * r4)
return (MsgArray_GetControlCode(r4) & 0xFF00) == 0x100;
}
-u16 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4)
+u32 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4)
{
GF_ASSERT(*r5 == 0xFFFE);
GF_ASSERT(r4 < r5[2]);
diff --git a/arm9/src/unk_0202E29C.c b/arm9/src/unk_0202E29C.c
index 2b088d6f..52ee3143 100644
--- a/arm9/src/unk_0202E29C.c
+++ b/arm9/src/unk_0202E29C.c
@@ -432,7 +432,7 @@ THUMB_FUNC s32 FUN_0202E844(u32 param0)
count++;
}
- GF_AssertFail();
+ GF_ASSERT(0);
return 0;
}
diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c
index 09b5b56f..e5188db2 100644
--- a/arm9/src/unk_0202F150.c
+++ b/arm9/src/unk_0202F150.c
@@ -93,10 +93,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1)
{
r4 = 1;
- if (UNK_021C59F4.unk04 == 0)
- {
- GF_AssertFail();
- }
+ GF_ASSERT(UNK_021C59F4.unk04 != 0);
}
UNK_021C59F4.unk04->unk65C = 0;
@@ -535,7 +532,7 @@ THUMB_FUNC BOOL FUN_0202FB80()
{
UNK_021C59F4.unk00 = 0;
FUN_0202F984();
- UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF;
+ UNK_021C59F4.unk04->unk628 |= gMain.heldKeys & 0x7FFF;
FUN_02030674();
FUN_0202FCCC();
@@ -1191,7 +1188,7 @@ THUMB_FUNC void FUN_020304D4(u32 param0)
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
THUMB_FUNC void FUN_020304F0(u32 param0)
@@ -1202,7 +1199,7 @@ THUMB_FUNC void FUN_020304F0(u32 param0)
return;
}
- GF_AssertFail();
+ GF_ASSERT(0);
}
THUMB_FUNC void FUN_0203050C()
@@ -1741,7 +1738,7 @@ THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2)
{
if (FUN_02031190() != 0)
{
- GF_AssertFail();
+ GF_ASSERT(0);
return 0;
}
diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c
index 57764b82..7d3b4c03 100644
--- a/arm9/src/unk_02031734.c
+++ b/arm9/src/unk_02031734.c
@@ -97,14 +97,14 @@ THUMB_FUNC void FUN_020317C0()
if (UNK_021C5A00->unk3F >= 0x13)
{
- FUN_020168D0(0x31);
+ DestroyHeap(0x31);
}
FUN_02033ED0();
FUN_0202E4F0();
FreeToHeap(UNK_021C5A00);
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
UNK_021C5A00 = NULL;
}
@@ -123,7 +123,7 @@ THUMB_FUNC void FUN_02031824(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0xe000);
+ CreateHeapAtEnd(3, 0xf, 0xe000);
FUN_02031734(sav2, 0xa);
UNK_021C5A00->unk40 = 0;
@@ -201,7 +201,7 @@ THUMB_FUNC void FUN_02031948(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
UNK_021C5A00->unk40 = param2;
UNK_021C5A00->unk30 = param3;
@@ -213,7 +213,7 @@ THUMB_FUNC void FUN_02031990(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
UNK_021C5A00->unk40 = param2;
UNK_021C5A00->unk30 = param3;
@@ -273,7 +273,7 @@ THUMB_FUNC void FUN_02031A7C(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- if (FUN_02016828(3, 0xf, 0x7080) == 0)
+ if (CreateHeapAtEnd(3, 0xf, 0x7080) == 0)
{
FUN_020335E0();
}
@@ -406,7 +406,7 @@ THUMB_FUNC void FUN_02031C74(struct SaveBlock2 *sav2, u8 param1)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
FUN_02031D20(FUN_02032E00, 0);
}
@@ -416,7 +416,7 @@ THUMB_FUNC void FUN_02031CA8(struct SaveBlock2 *sav2, u8 param1)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7080);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, param1);
FUN_02031D20(FUN_02032E48, 0);
}
@@ -1393,7 +1393,7 @@ THUMB_FUNC void FUN_02032BD0(struct SaveBlock2 *sav2)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7000);
+ CreateHeapAtEnd(3, 0xf, 0x7000);
FUN_02031734(sav2, 0xe);
UNK_021C5A00->unk40 = 0;
FUN_02031D20(FUN_02032B8C, 0);
@@ -1479,7 +1479,7 @@ THUMB_FUNC void FUN_02032D44(struct SaveBlock2 *sav2)
{
if (FUN_02030F40() == 0)
{
- FUN_02016828(3, 0xf, 0x7000);
+ CreateHeapAtEnd(3, 0xf, 0x7000);
FUN_02031734(sav2, 0x11);
UNK_021C5A00->unk40 = 0;
FUN_02031D20(FUN_02032CF4, 0);
@@ -1807,7 +1807,7 @@ THUMB_FUNC void FUN_020331C4()
{
if (UNK_021C5A00 != NULL)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_02031D20(FUN_02032440, 5);
}
}
@@ -1866,7 +1866,7 @@ THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0x100);
+ CreateHeapAtEnd(3, 0xf, 0x100);
UNK_021C5A00 =
(struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734));
@@ -1875,7 +1875,7 @@ THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2)
UNK_021C5A00->unk46 = 1;
UNK_021C5A00->unk28 = sav2;
FUN_020334E8(0, 1);
- FUN_020166A8(1);
+ SetSoftResetDisableMask(1);
}
}
@@ -1883,11 +1883,11 @@ THUMB_FUNC void FUN_020332DC()
{
if (UNK_021C5A00 != 0)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_020334E8(0, 0);
FreeToHeap(UNK_021C5A00);
UNK_021C5A00 = NULL;
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
}
}
@@ -1895,7 +1895,7 @@ THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2)
{
if (UNK_021C5A00 == NULL)
{
- FUN_02016828(3, 0xf, 0x100);
+ CreateHeapAtEnd(3, 0xf, 0x100);
UNK_021C5A00 =
(struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734));
MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734));
@@ -1903,7 +1903,7 @@ THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2)
UNK_021C5A00->unk46 = 1;
UNK_021C5A00->unk28 = sav2;
FUN_020334E8(0, 1);
- FUN_020166A8(1);
+ SetSoftResetDisableMask(1);
}
}
@@ -1911,11 +1911,11 @@ THUMB_FUNC void FUN_02033364()
{
if (UNK_021C5A00 != 0)
{
- FUN_020166B8(1);
+ ClearSoftResetDisableMask(1);
FUN_020334E8(0, 0);
FreeToHeap(UNK_021C5A00);
UNK_021C5A00 = NULL;
- FUN_020168D0(0xf);
+ DestroyHeap(0xf);
}
}
@@ -1966,7 +1966,7 @@ THUMB_FUNC void FUN_0203341C()
{
if (FUN_0202E4C8())
{
- FUN_02016828(3, 0x31, 0x31000);
+ CreateHeapAtEnd(3, 0x31, 0x31000);
if (FUN_0202F918(1, 1, 0x200, 1) != 0)
{
MOD05_021D74E0(UNK_021C5A00->unk28, 0x31);
@@ -1985,8 +1985,8 @@ THUMB_FUNC void *FUN_0203346C(struct SaveBlock2 *sav2, u32 param1)
return 0;
}
- FUN_020166A8(1);
- FUN_02016828(3, 0xf, 0x7080);
+ SetSoftResetDisableMask(1);
+ CreateHeapAtEnd(3, 0xf, 0x7080);
FUN_02031734(sav2, 0x17);
UNK_021C5A00->unk00 = AllocFromHeap(0xf, param1);
MI_CpuFill8(UNK_021C5A00->unk00, 0, param1);
@@ -2127,7 +2127,7 @@ THUMB_FUNC void FUN_020335F4()
FUN_0200541C();
FUN_0202287C(UNK_021C5A00->unk28);
- gMain.unk64 = 1;
+ gMain.touchpadReadAuto = 1;
if (UNK_021C5A00->unk4E == 3)
{
FUN_020335A4(3);
diff --git a/arm9/src/unk_0205EC84.c b/arm9/src/unk_0205EC84.c
new file mode 100644
index 00000000..a7e4531f
--- /dev/null
+++ b/arm9/src/unk_0205EC84.c
@@ -0,0 +1,436 @@
+#include "global.h"
+#include "proto.h"
+#include "unk_0205EC84.h"
+
+static THUMB_FUNC void _flag_set(struct ScriptState * state, u16 flag_id)
+{
+ SetFlagInArray(state, flag_id);
+}
+
+static THUMB_FUNC void _flag_clear(struct ScriptState * state, u16 flag_id)
+{
+ ClearFlagInArray(state, flag_id);
+}
+
+static THUMB_FUNC BOOL _flag_check(struct ScriptState * state, u16 flag_id)
+{
+ return CheckFlagInArray(state, flag_id);
+}
+
+static THUMB_FUNC BOOL _flag_op(struct ScriptState * state, u32 op, u32 flag_id)
+{
+ switch (op)
+ {
+ case 1:
+ _flag_set(state, (u16)flag_id);
+ break;
+ case 0:
+ _flag_clear(state, (u16)flag_id);
+ break;
+ case 2:
+ return _flag_check(state, (u16)flag_id);
+ default:
+ GF_ASSERT(0);
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0205ECD4(struct ScriptState * state)
+{
+ _flag_set(state, 0x960);
+}
+
+THUMB_FUNC BOOL FUN_0205ECE0(struct ScriptState * state)
+{
+ return _flag_check(state, 0x960);
+}
+
+THUMB_FUNC BOOL FUN_0205ECEC(struct ScriptState * state)
+{
+ return _flag_check(state, 0x98D);
+}
+
+THUMB_FUNC void FUN_0205ECFC(struct ScriptState * state)
+{
+ _flag_set(state, 0x964);
+}
+
+THUMB_FUNC BOOL FUN_0205ED0C(struct ScriptState * state)
+{
+ return _flag_check(state, 0x964);
+}
+
+THUMB_FUNC void FUN_0205ED1C(struct ScriptState * state)
+{
+ _flag_set(state, 0x961);
+}
+
+THUMB_FUNC void FUN_0205ED2C(struct ScriptState * state)
+{
+ _flag_clear(state, 0x961);
+}
+
+THUMB_FUNC BOOL FUN_0205ED3C(struct ScriptState * state)
+{
+ return _flag_check(state, 0x961);
+}
+
+THUMB_FUNC void FUN_0205ED4C(struct ScriptState * state)
+{
+ _flag_set(state, 0x965);
+}
+
+THUMB_FUNC void FUN_0205ED5C(struct ScriptState * state)
+{
+ _flag_clear(state, 0x965);
+}
+
+THUMB_FUNC BOOL FUN_0205ED6C(struct ScriptState * state)
+{
+ return _flag_check(state, 0x965);
+}
+
+THUMB_FUNC void FUN_0205ED7C(struct ScriptState * state)
+{
+ _flag_set(state, 0x96D);
+}
+
+THUMB_FUNC void FUN_0205ED8C(struct ScriptState * state)
+{
+ _flag_clear(state, 0x96D);
+}
+
+THUMB_FUNC BOOL FUN_0205ED9C(struct ScriptState * state)
+{
+ return _flag_check(state, 0x96D);
+}
+
+THUMB_FUNC void FUN_0205EDAC(struct ScriptState * state)
+{
+ _flag_set(state, 0x96E);
+}
+
+THUMB_FUNC void FUN_0205EDBC(struct ScriptState * state)
+{
+ _flag_set(state, 0x96F);
+}
+
+THUMB_FUNC void FUN_0205EDCC(struct ScriptState * state)
+{
+ _flag_set(state, 0x970);
+}
+
+THUMB_FUNC void FUN_0205EDD8(struct ScriptState * state)
+{
+ _flag_set(state, 0x971);
+}
+
+THUMB_FUNC void FUN_0205EDE8(struct ScriptState * state)
+{
+ _flag_set(state, 0x972);
+}
+
+THUMB_FUNC void FUN_0205EDF8(struct ScriptState * state)
+{
+ _flag_set(state, 0x973);
+}
+
+THUMB_FUNC void FUN_0205EE08(struct ScriptState * state, u32 a1)
+{
+ switch (a1)
+ {
+ case 0:
+ _flag_set(state, 0x968);
+ break;
+ case 1:
+ _flag_set(state, 0x969);
+ break;
+ case 2:
+ _flag_set(state, 0x96A);
+ break;
+ case 3:
+ _flag_set(state, 0x96B);
+ break;
+ case 4:
+ _flag_set(state, 0x96C);
+ break;
+ }
+}
+
+THUMB_FUNC BOOL FUN_0205EE60(struct ScriptState * state, u32 a1)
+{
+ switch (a1)
+ {
+ case 0:
+ return _flag_check(state, 0x968);
+ case 1:
+ return _flag_check(state, 0x969);
+ case 2:
+ return _flag_check(state, 0x96A);
+ case 3:
+ return _flag_check(state, 0x96B);
+ case 4:
+ return _flag_check(state, 0x96C);
+ }
+ // UB: No return value
+}
+
+THUMB_FUNC BOOL FUN_0205EEB8(struct ScriptState * state, u32 a1)
+{
+ BOOL ret = FALSE;
+ switch (a1)
+ {
+ case 0:
+ break;
+ case 1:
+ ret = _flag_check(state, 0x97F);
+ break;
+ case 2:
+ ret = _flag_check(state, 0x980);
+ break;
+ case 3:
+ ret = _flag_check(state, 0x981);
+ break;
+ case 4:
+ ret = _flag_check(state, 0x982);
+ break;
+ case 5:
+ ret = _flag_check(state, 0x983);
+ break;
+ }
+ return ret;
+}
+
+THUMB_FUNC s32 FUN_0205EF20(struct ScriptState * state, s32 a1)
+{
+ s32 ret = 0;
+ switch (a1)
+ {
+ case 314:
+ if (_flag_check(state, 0x984) == TRUE)
+ ret = 1070;
+ break;
+ case 316:
+ if (_flag_check(state, 0x984) == TRUE)
+ ret = 1065;
+ break;
+ case 312:
+ if (_flag_check(state, 0x98E) == TRUE)
+ ret = 1070;
+ break;
+ case 318:
+ if (_flag_check(state, 0x98F) == TRUE)
+ ret = 1070;
+ break;
+ case 251:
+ if (_flag_check(state, 0x995) == TRUE)
+ ret = 1069;
+ break;
+ case 422:
+ if (_flag_check(state, 0x993) == TRUE)
+ ret = 1098;
+ break;
+ case 305:
+ case 306:
+ case 307:
+ case 308:
+ case 309:
+ case 310:
+ case 494:
+ case 497:
+ if (_flag_check(state, 0x985) == TRUE)
+ {
+ if (!IsNighttime())
+ ret = 1016;
+ else
+ ret = 1045;
+ }
+ else if (a1 == 305)
+ {
+ if (_flag_check(state, 0x986) == TRUE)
+ ret = 1067;
+ }
+ break;
+ case 72:
+ case 73:
+ case 74:
+ case 75:
+ if (_flag_check(state, 0x987) == TRUE)
+ {
+ if (!IsNighttime())
+ ret = 1013;
+ else
+ ret = 1042;
+ }
+ break;
+ case 201:
+ if (_flag_check(state, 0x988) == TRUE)
+ {
+ if (!IsNighttime())
+ ret = 1023;
+ else
+ ret = 1052;
+ }
+ break;
+ case 256:
+ if (_flag_check(state, 0x989) == TRUE)
+ {
+ if (!IsNighttime())
+ ret = 1006;
+ else
+ ret = 1035;
+ }
+ break;
+ case 399:
+ if (_flag_check(state, 0x98A) == TRUE)
+ {
+ if (!IsNighttime())
+ ret = 1006;
+ else
+ ret = 1035;
+ }
+ break;
+ case 185:
+ if (_flag_check(state, 0x98B) == TRUE)
+ ret = 1001;
+ break;
+ }
+ return ret;
+}
+
+
+THUMB_FUNC void FUN_0205F154(struct ScriptState * state)
+{
+ _flag_set(state, 0x966);
+}
+
+THUMB_FUNC void FUN_0205F164(struct ScriptState * state)
+{
+ _flag_clear(state, 0x966);
+}
+
+THUMB_FUNC BOOL FUN_0205F174(struct ScriptState * state)
+{
+ return _flag_check(state, 0x966);
+}
+
+THUMB_FUNC BOOL FUN_0205F184(struct ScriptState * state)
+{
+ return _flag_check(state, 0x978);
+}
+
+THUMB_FUNC BOOL FUN_0205F194(struct ScriptState * state)
+{
+ return _flag_check(state, 0x992);
+}
+
+THUMB_FUNC BOOL FUN_0205F1A4(struct ScriptState * state)
+{
+ return _flag_check(state, 0x97D);
+}
+
+THUMB_FUNC BOOL FUN_0205F1B4(struct ScriptState * state)
+{
+ return _flag_check(state, 0x97E);
+}
+
+THUMB_FUNC void FUN_0205F1C4(struct ScriptState * state)
+{
+ _flag_set(state, 0x97C);
+}
+
+THUMB_FUNC void FUN_0205F1D4(struct ScriptState * state)
+{
+ _flag_clear(state, 0x97C);
+}
+
+THUMB_FUNC BOOL FUN_0205F1E4(struct ScriptState * state)
+{
+ return _flag_check(state, 0x97C);
+}
+
+THUMB_FUNC void FUN_0205F1F4(struct ScriptState * state)
+{
+ _flag_set(state, 0x967);
+}
+
+THUMB_FUNC void FUN_0205F204(struct ScriptState * state)
+{
+ _flag_clear(state, 0x967);
+}
+
+THUMB_FUNC BOOL FUN_0205F214(struct ScriptState * state)
+{
+ return _flag_check(state, 0x967);
+}
+
+THUMB_FUNC void FUN_0205F224(struct ScriptState * state)
+{
+ _flag_set(state, 0x979);
+}
+
+THUMB_FUNC void FUN_0205F234(struct ScriptState * state)
+{
+ _flag_clear(state, 0x979);
+}
+
+THUMB_FUNC BOOL FUN_0205F244(struct ScriptState * state)
+{
+ return _flag_check(state, 0x979);
+}
+
+THUMB_FUNC void FUN_0205F254(struct ScriptState * state)
+{
+ _flag_clear(state, 0x994);
+}
+
+THUMB_FUNC BOOL FUN_0205F264(struct ScriptState * state, u32 op)
+{
+ return _flag_op(state, op, 0x962);
+}
+
+THUMB_FUNC void FUN_0205F274(struct ScriptState * state)
+{
+ _flag_set(state, 0x97A);
+}
+
+THUMB_FUNC void FUN_0205F284(struct ScriptState * state)
+{
+ _flag_clear(state, 0x97A);
+}
+
+THUMB_FUNC BOOL FUN_0205F294(struct ScriptState * state)
+{
+ return _flag_check(state, 0x97A);
+}
+
+THUMB_FUNC void FUN_0205F2A4(struct ScriptState * state)
+{
+ _flag_set(state, 0x97B);
+}
+
+THUMB_FUNC void FUN_0205F2B4(struct ScriptState * state)
+{
+ _flag_clear(state, 0x97B);
+}
+
+THUMB_FUNC BOOL FUN_0205F2C4(struct ScriptState * state)
+{
+ return _flag_check(state, 0x97B);
+}
+
+THUMB_FUNC BOOL FUN_0205F2D4(struct ScriptState * state, u32 op)
+{
+ return _flag_op(state, op, 0x963);
+}
+
+THUMB_FUNC BOOL FUN_0205F2E4(struct ScriptState * state, u32 op, u16 flag_id)
+{
+ GF_ASSERT(flag_id < 69);
+ return _flag_op(state, op, 0x9B0 + flag_id);
+}
+
+THUMB_FUNC void FUN_0205F304(struct ScriptState * state)
+{
+ _flag_set(state, 0x98C);
+}
diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c
index a217f52c..0bf3a15a 100644
--- a/arm9/src/unk_0206015C.c
+++ b/arm9/src/unk_0206015C.c
@@ -21,7 +21,7 @@ extern THUMB_FUNC void MOD06_02245190(u32);
extern THUMB_FUNC void MOD06_02245198(u8, u32);
extern THUMB_FUNC u32 MOD06_022451F0(u32);
-extern THUMB_FUNC void FUN_020054C8(u32);
+extern THUMB_FUNC void PlaySE(u32);
extern THUMB_FUNC void FUN_02049160(struct UnkStruct_0204639C*, u32);
extern THUMB_FUNC void FUN_0204AF84(struct UnkStruct_0204639C*);
extern THUMB_FUNC void FUN_0204AF3C(struct UnkStruct_0204639C *);
@@ -97,7 +97,7 @@ THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C *unkStruct0)
MOD06_02244DC4(unkStruct1->unk0, unkAddr);
MOD06_02244EF8(unkStruct1->unk0);
unkStruct1->unkE = 0;
- FUN_020054C8(1657);
+ PlaySE(1657);
FUN_0204C1B4(unkStruct0, 0x3, 0x11, 0x0000FFFF, 0, 6, 1, 0xb);
unkStruct1->action = 5;
}
@@ -117,7 +117,7 @@ THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C *unkStruct0)
MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4);
unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4);
- FUN_020054C8(1657);
+ PlaySE(1657);
FUN_0204C1B4(unkStruct0, 0x3, 0x10, 0x0000FFFF, 0, 6, 1, 0xb);
unkStruct1->action = 6;
break;
diff --git a/arm9/src/unk_020851B8.c b/arm9/src/unk_020851B8.c
new file mode 100644
index 00000000..922ca2e4
--- /dev/null
+++ b/arm9/src/unk_020851B8.c
@@ -0,0 +1,45 @@
+#include "global.h"
+#include "unk_020851B8.h"
+#include "constants/items.h"
+#include "heap.h"
+
+THUMB_FUNC struct UnkStruct_020851B8 *FUN_020851B8(u32 heap_id)
+{
+ struct UnkStruct_020851B8 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_020851B8));
+ __builtin__clear(ptr, sizeof(struct UnkStruct_020851B8));
+ return ptr;
+}
+
+THUMB_FUNC void FUN_020851DC(struct UnkStruct_020851B8 *param0, u16 item_id, BOOL param2)
+{
+ u16 berry_id = item_id - FIRST_BERRY_IDX;
+ FUN_02085200(param0, berry_id);
+
+ if (param2 == TRUE)
+ {
+ param0->unk_8 = berry_id;
+ }
+}
+
+THUMB_FUNC void FUN_020851F8(struct UnkStruct_020851B8 *param0, u8 param1, u8 param2, u8 param3)
+{
+ param0->unk_9 = param1;
+ param0->unk_A = param2;
+ param0->unk_B = param3;
+}
+
+THUMB_FUNC void FUN_02085200(struct UnkStruct_020851B8 *param0, u16 berry_id)
+{
+ param0->flags[berry_id / 32] |= 1 << (berry_id % 32);
+}
+
+THUMB_FUNC u8 FUN_02085224(struct UnkStruct_020851B8 *param0, u16 berry_id)
+{
+ return param0->flags[berry_id / 32] & (1 << (berry_id % 32)) ? 1 : 0;
+}
+
+THUMB_FUNC void FUN_0208524C(struct UnkStruct_020851B8 *param0, u8 *param1, u8 *param2)
+{
+ *param1 = param0->unk_9;
+ *param2 = param0->unk_A;
+}
diff --git a/arm9/src/unk_02085338.c b/arm9/src/unk_02085338.c
new file mode 100644
index 00000000..b22b3974
--- /dev/null
+++ b/arm9/src/unk_02085338.c
@@ -0,0 +1,165 @@
+#include "global.h"
+#include "heap.h"
+#include "event_data.h"
+#include "unk_02085338.h"
+
+extern BOOL FUN_0205ED0C(struct ScriptState * state);
+
+THUMB_FUNC struct UnkStruct_02085338 * FUN_02085338(u8 r5, u8 r7, struct SaveBlock2 * sav2, u32 heap_id)
+{
+ struct UnkStruct_02085338 * ret = (struct UnkStruct_02085338 *) AllocFromHeap(heap_id, sizeof(struct UnkStruct_02085338));
+ ret->unk_00 = r5;
+ ret->unk_01 = r7;
+ ret->unk_0c = Sav2_Pokedex_get(sav2);
+ ret->unk_10 = FUN_02013B5C(sav2);
+ ret->unk_04 = (u8)FUN_0205ED0C(SavArray_Flags_get(sav2));
+ ret->unk_05 = 0;
+ ret->unk_02 = 1;
+ ret->unk_03 = 0;
+ ret->unk_08 = Options_GetFrame(Sav2_PlayerData_GetOptionsAddr(sav2));
+ if (r5 == 2)
+ {
+ MailMsg_init_withBank(&ret->unk_14, 3);
+ }
+ else
+ {
+ for (int i = 0; i < 2; i++)
+ {
+ ret->unk_1c[i] = 0xFFFF;
+ }
+ }
+ return ret;
+}
+
+THUMB_FUNC void FUN_020853A8(struct UnkStruct_02085338 * ptr)
+{
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void FUN_020853B0(struct UnkStruct_02085338 * ptr, u16 a1)
+{
+ ptr->unk_1c[0] = a1;
+}
+
+THUMB_FUNC void FUN_020853B4(struct UnkStruct_02085338 * ptr, u16 a1, u16 a2)
+{
+ ptr->unk_1c[0] = a1;
+ ptr->unk_1c[1] = a2;
+}
+
+THUMB_FUNC void FUN_020853BC(struct UnkStruct_02085338 * ptr, const struct MailMessage * a1)
+{
+ ptr->unk_14 = *a1;
+}
+
+THUMB_FUNC void FUN_020853D0(struct UnkStruct_02085338 * ptr)
+{
+ ptr->unk_02 = 1;
+ ptr->unk_03 = 0;
+}
+
+THUMB_FUNC void FUN_020853DC(struct UnkStruct_02085338 * ptr)
+{
+ ptr->unk_05 = 1;
+}
+
+THUMB_FUNC u8 FUN_020853E4(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_02;
+}
+
+THUMB_FUNC u8 FUN_020853E8(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_03;
+}
+
+THUMB_FUNC u16 FUN_020853EC(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_1c[0];
+}
+
+THUMB_FUNC void FUN_020853F0(struct UnkStruct_02085338 * ptr, u16 * a1)
+{
+ a1[0] = ptr->unk_1c[0];
+ a1[1] = ptr->unk_1c[1];
+}
+
+THUMB_FUNC void FUN_020853FC(struct UnkStruct_02085338 * ptr, struct MailMessage * a1)
+{
+ return MailMsg_copy(a1, &ptr->unk_14);
+}
+
+THUMB_FUNC u8 FUN_0208540C(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_00;
+}
+
+THUMB_FUNC u8 FUN_02085410(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_01;
+}
+
+THUMB_FUNC u32 FUN_02085414(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_08;
+}
+
+THUMB_FUNC struct Pokedex * FUN_02085418(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_0c;
+}
+
+THUMB_FUNC struct UnkStruct_02013B28 * FUN_0208541C(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_10;
+}
+
+THUMB_FUNC u8 FUN_02085420(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_04;
+}
+
+THUMB_FUNC u8 FUN_02085424(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_05;
+}
+
+THUMB_FUNC void FUN_02085428(struct UnkStruct_02085338 * ptr, u16 * a1, struct MailMessage * a2)
+{
+ switch (ptr->unk_00)
+ {
+ case 0:
+ a1[0] = ptr->unk_1c[0];
+ break;
+ case 1:
+ a1[0] = ptr->unk_1c[0];
+ a1[1] = ptr->unk_1c[1];
+ break;
+ case 2:
+ *a2 = ptr->unk_14;
+ break;
+ }
+}
+
+THUMB_FUNC BOOL FUN_0208545C(struct UnkStruct_02085338 * ptr, const u16 * a1, const struct MailMessage * a2)
+{
+ switch (ptr->unk_00)
+ {
+ case 0:
+ return a1[0] == ptr->unk_1c[0];
+ case 1:
+ return a1[0] == ptr->unk_1c[0] && a1[1] == ptr->unk_1c[1];
+ case 2:
+ default:
+ return MailMsg_compare(&ptr->unk_14, a2);
+ }
+}
+
+THUMB_FUNC void FUN_020854A0(struct UnkStruct_02085338 * r5, u16 * r4, struct MailMessage * r6)
+{
+ r5->unk_03 = (u8)(!FUN_0208545C(r5, r4, r6) ? 1 : 0);
+ r5->unk_02 = 0;
+ for (int i = 0; i < 2; i++)
+ r5->unk_1c[i] = r4[i];
+ r5->unk_14 = *r6;
+}
diff --git a/arm9/src/unk_02088AAC.c b/arm9/src/unk_02088AAC.c
new file mode 100644
index 00000000..c0419e09
--- /dev/null
+++ b/arm9/src/unk_02088AAC.c
@@ -0,0 +1,185 @@
+#include "global.h"
+#include "unk_02088AAC.h"
+#include "heap.h"
+#include "overlay_manager.h"
+#include "unk_020851B8.h"
+
+extern BOOL MOD68_021D74E0(struct UnkStruct_02006234 *, u32 *);
+extern BOOL MOD68_021D75D8(struct UnkStruct_02006234 *, u32 *);
+extern BOOL MOD68_021D762C(struct UnkStruct_02006234 *, u32 *);
+extern BOOL MOD73_021D74F0(struct UnkStruct_02006234 *, u32 *);
+extern BOOL MOD73_021D758C(struct UnkStruct_02006234 *, u32 *);
+extern BOOL MOD73_021D7640(struct UnkStruct_02006234 *, u32 *);
+extern BOOL MOD75_021E6BA0(struct UnkStruct_02006234 *, u32 *);
+extern BOOL MOD75_021E6D6C(struct UnkStruct_02006234 *, u32 *);
+extern BOOL MOD75_021E6F00(struct UnkStruct_02006234 *, u32 *);
+
+extern BOOL FUN_0208898C(struct UnkStruct_02006234 **r0);
+
+THUMB_FUNC u32 FUN_02088AAC(struct UnkStruct_02088AAC *r0, u32 *r1)
+{
+ switch (*r1)
+ {
+ case 0:
+ *r1 = FUN_02088B4C(r0);
+ break;
+ case 1:
+ *r1 = FUN_02088BA8(r0);
+ break;
+ case 2:
+ *r1 = FUN_02088C3C(r0);
+ break;
+ case 3:
+ *r1 = FUN_02088CDC(r0);
+ break;
+ case 4:
+ return 1;
+ case 5:
+ return 4;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC u32 FUN_02088AFC(struct UnkStruct_02088AAC *r0)
+{
+ FS_EXTERN_OVERLAY(MODULE_73);
+
+ const struct Unk21DBE18 OVERLAY_73_MANAGER = { .unk0 = MOD73_021D74F0,
+ .unk4 = MOD73_021D758C,
+ .unk8 = MOD73_021D7640,
+ .ovly = FS_OVERLAY_ID(MODULE_73) };
+ r0->ovly_data = OverlayManager_new(&OVERLAY_73_MANAGER, (s32 *)r0, r0->heap_id);
+
+ return 2;
+}
+
+THUMB_FUNC u32 FUN_02088B28(struct UnkStruct_02088AAC *r0)
+{
+ if (!FUN_0208898C(&r0->ovly_data))
+ {
+ return 2;
+ }
+
+ if (r0->unk20 == TRUE)
+ {
+ return 0;
+ }
+
+ return 3;
+}
+
+THUMB_FUNC u32 FUN_02088B48()
+{
+ return 4;
+}
+
+THUMB_FUNC u32 FUN_02088B4C(struct UnkStruct_02088AAC *r0)
+{
+ FS_EXTERN_OVERLAY(MODULE_75);
+
+ static const u8 UNK_020FD6F4[] = { 0x04, 0xFF };
+ const struct Unk21DBE18 OVERLAY_75_MANAGER = { .unk0 = MOD75_021E6BA0,
+ .unk4 = MOD75_021E6D6C,
+ .unk8 = MOD75_021E6F00,
+ .ovly = FS_OVERLAY_ID(MODULE_75) };
+ struct BagView *bag_view = CreateBagView(r0->unk10->bag, UNK_020FD6F4, r0->heap_id);
+
+ FUN_0206E314(bag_view, r0->unk10->sav2, (u8)((u8)r0->unk06 == 1 ? 5 : 4), r0->unk0C);
+
+ r0->ovly_data = OverlayManager_new(&OVERLAY_75_MANAGER, (s32 *)bag_view, r0->heap_id);
+ r0->ovly_param = bag_view;
+
+ return 1;
+}
+
+THUMB_FUNC u32 FUN_02088BA8(struct UnkStruct_02088AAC *r0)
+{
+ if (!FUN_0208898C(&r0->ovly_data))
+ {
+ return 1;
+ }
+
+ struct BagView *bag_view = BagView_New((u8)r0->heap_id);
+
+ memcpy(bag_view, r0->ovly_param, BagView_sizeof());
+ FreeToHeap(r0->ovly_param);
+
+ r0->ovly_param = NULL;
+ r0->item = FUN_0206E37C(bag_view);
+
+ FreeToHeap(bag_view);
+
+ switch (FUN_0206E384(bag_view))
+ {
+ case 1:
+ return 2;
+ case 5:
+ return 5;
+ default:
+ GF_AssertFail();
+ r0->item = FIRST_BERRY_IDX;
+ case 0:
+ case 2:
+ case 3:
+ case 4:
+ GF_ASSERT(Bag_TakeItem(r0->unk10->bag, (u16)r0->item, 1, r0->heap_id));
+ return 4;
+ }
+}
+
+THUMB_FUNC u32 FUN_02088C3C(struct UnkStruct_02088AAC *r0)
+{
+ FS_EXTERN_OVERLAY(MODULE_68);
+
+ struct Bag *bag = r0->unk10->bag;
+ const struct Unk21DBE18 OVERLAY_68_MANAGER = { .unk0 = MOD68_021D74E0,
+ .unk4 = MOD68_021D75D8,
+ .unk8 = MOD68_021D762C,
+ .ovly = FS_OVERLAY_ID(MODULE_68) };
+
+ r0->ovly_param = FUN_020851B8((u8)r0->heap_id);
+
+ FUN_020851DC(r0->ovly_param, (u16)r0->item, TRUE);
+
+ u8 berry_count = 0;
+ for (u8 berry_id = 0; berry_id < (u8)NUM_BERRIES; berry_id++)
+ {
+ u8 item_id = (u8)BerryToItemId(berry_id);
+ if (Bag_HasItem(bag, item_id, 1, r0->heap_id) == TRUE)
+ {
+ FUN_020851DC(r0->ovly_param, item_id, 0);
+
+ berry_count++;
+ }
+ }
+
+ u8 sp5;
+ u8 sp6;
+
+ FUN_0206F17C(r0->unk0C, 4, &sp6, &sp5);
+ FUN_020851F8(r0->ovly_param, sp5, sp6, (u8)(berry_count + 2));
+
+ r0->ovly_data = OverlayManager_new(&OVERLAY_68_MANAGER, (s32 *)r0->ovly_param, r0->heap_id);
+
+ return 3;
+}
+
+THUMB_FUNC u32 FUN_02088CDC(struct UnkStruct_02088AAC *r0)
+{
+ if (!FUN_0208898C(&r0->ovly_data))
+ {
+ return 3;
+ }
+
+ u8 sp0;
+ u8 sp1;
+
+ FUN_0208524C(r0->ovly_param, &sp0, &sp1);
+ FUN_0206F190(r0->unk0C, 4, sp1, sp0);
+ FreeToHeap(r0->ovly_param);
+
+ r0->ovly_param = NULL;
+
+ return 0;
+}
diff --git a/files/data/mmodel/fldeff/narc_0012.bin b/files/data/mmodel/fldeff/narc_0012.NSBTX
index 274610d1..274610d1 100644
--- a/files/data/mmodel/fldeff/narc_0012.bin
+++ b/files/data/mmodel/fldeff/narc_0012.NSBTX
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0013.bin b/files/data/mmodel/fldeff/narc_0013.NSBTX
index 719146e3..719146e3 100644
--- a/files/data/mmodel/fldeff/narc_0013.bin
+++ b/files/data/mmodel/fldeff/narc_0013.NSBTX
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0014.bin b/files/data/mmodel/fldeff/narc_0014.NSBTX
index 472bdcb2..472bdcb2 100644
--- a/files/data/mmodel/fldeff/narc_0014.bin
+++ b/files/data/mmodel/fldeff/narc_0014.NSBTX
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0015.bin b/files/data/mmodel/fldeff/narc_0015.NSBMD
index 410bf936..410bf936 100644
--- a/files/data/mmodel/fldeff/narc_0015.bin
+++ b/files/data/mmodel/fldeff/narc_0015.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0016.bin b/files/data/mmodel/fldeff/narc_0016.NSBMD
index a395e353..a395e353 100644
--- a/files/data/mmodel/fldeff/narc_0016.bin
+++ b/files/data/mmodel/fldeff/narc_0016.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0017.bin b/files/data/mmodel/fldeff/narc_0017.NSBMD
index e06c315f..e06c315f 100644
--- a/files/data/mmodel/fldeff/narc_0017.bin
+++ b/files/data/mmodel/fldeff/narc_0017.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0018.bin b/files/data/mmodel/fldeff/narc_0018.NSBMD
index 382c5a96..382c5a96 100644
--- a/files/data/mmodel/fldeff/narc_0018.bin
+++ b/files/data/mmodel/fldeff/narc_0018.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0019.bin b/files/data/mmodel/fldeff/narc_0019.NSBMD
index 81a72937..81a72937 100644
--- a/files/data/mmodel/fldeff/narc_0019.bin
+++ b/files/data/mmodel/fldeff/narc_0019.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0020.bin b/files/data/mmodel/fldeff/narc_0020.NSBMD
index b9ef2f24..b9ef2f24 100644
--- a/files/data/mmodel/fldeff/narc_0020.bin
+++ b/files/data/mmodel/fldeff/narc_0020.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0021.bin b/files/data/mmodel/fldeff/narc_0021.NSBMD
index 9e979e30..9e979e30 100644
--- a/files/data/mmodel/fldeff/narc_0021.bin
+++ b/files/data/mmodel/fldeff/narc_0021.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0022.bin b/files/data/mmodel/fldeff/narc_0022.NSBMD
index 12a95c6d..12a95c6d 100644
--- a/files/data/mmodel/fldeff/narc_0022.bin
+++ b/files/data/mmodel/fldeff/narc_0022.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0023.bin b/files/data/mmodel/fldeff/narc_0023.NSBMD
index d885b2a7..d885b2a7 100644
--- a/files/data/mmodel/fldeff/narc_0023.bin
+++ b/files/data/mmodel/fldeff/narc_0023.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0024.bin b/files/data/mmodel/fldeff/narc_0024.NSBMD
index a3b10045..a3b10045 100644
--- a/files/data/mmodel/fldeff/narc_0024.bin
+++ b/files/data/mmodel/fldeff/narc_0024.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0025.bin b/files/data/mmodel/fldeff/narc_0025.NSBMD
index 617c7861..617c7861 100644
--- a/files/data/mmodel/fldeff/narc_0025.bin
+++ b/files/data/mmodel/fldeff/narc_0025.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0026.bin b/files/data/mmodel/fldeff/narc_0026.NSBMD
index 878344a4..878344a4 100644
--- a/files/data/mmodel/fldeff/narc_0026.bin
+++ b/files/data/mmodel/fldeff/narc_0026.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0027.bin b/files/data/mmodel/fldeff/narc_0027.NSBMD
index 1d63ab7b..1d63ab7b 100644
--- a/files/data/mmodel/fldeff/narc_0027.bin
+++ b/files/data/mmodel/fldeff/narc_0027.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0028.bin b/files/data/mmodel/fldeff/narc_0028.NSBMD
index babf5b3e..babf5b3e 100644
--- a/files/data/mmodel/fldeff/narc_0028.bin
+++ b/files/data/mmodel/fldeff/narc_0028.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0029.bin b/files/data/mmodel/fldeff/narc_0029.NSBMD
index 8928ada6..8928ada6 100644
--- a/files/data/mmodel/fldeff/narc_0029.bin
+++ b/files/data/mmodel/fldeff/narc_0029.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0030.bin b/files/data/mmodel/fldeff/narc_0030.NSBMD
index c4a501e1..c4a501e1 100644
--- a/files/data/mmodel/fldeff/narc_0030.bin
+++ b/files/data/mmodel/fldeff/narc_0030.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0031.bin b/files/data/mmodel/fldeff/narc_0031.NSBMD
index e69da023..e69da023 100644
--- a/files/data/mmodel/fldeff/narc_0031.bin
+++ b/files/data/mmodel/fldeff/narc_0031.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0032.bin b/files/data/mmodel/fldeff/narc_0032.NSBMD
index 5119f07f..5119f07f 100644
--- a/files/data/mmodel/fldeff/narc_0032.bin
+++ b/files/data/mmodel/fldeff/narc_0032.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0033.bin b/files/data/mmodel/fldeff/narc_0033.NSBMD
index 0669c9d9..0669c9d9 100644
--- a/files/data/mmodel/fldeff/narc_0033.bin
+++ b/files/data/mmodel/fldeff/narc_0033.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0034.bin b/files/data/mmodel/fldeff/narc_0034.NSBMD
index 008feee3..008feee3 100644
--- a/files/data/mmodel/fldeff/narc_0034.bin
+++ b/files/data/mmodel/fldeff/narc_0034.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0035.bin b/files/data/mmodel/fldeff/narc_0035.NSBMD
index ffd79f3a..ffd79f3a 100644
--- a/files/data/mmodel/fldeff/narc_0035.bin
+++ b/files/data/mmodel/fldeff/narc_0035.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0036.bin b/files/data/mmodel/fldeff/narc_0036.NSBMD
index 9834ab90..9834ab90 100644
--- a/files/data/mmodel/fldeff/narc_0036.bin
+++ b/files/data/mmodel/fldeff/narc_0036.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0037.bin b/files/data/mmodel/fldeff/narc_0037.NSBMD
index 919c2265..919c2265 100644
--- a/files/data/mmodel/fldeff/narc_0037.bin
+++ b/files/data/mmodel/fldeff/narc_0037.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0038.bin b/files/data/mmodel/fldeff/narc_0038.NSBMD
index 8f8e7b00..8f8e7b00 100644
--- a/files/data/mmodel/fldeff/narc_0038.bin
+++ b/files/data/mmodel/fldeff/narc_0038.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0039.bin b/files/data/mmodel/fldeff/narc_0039.NSBMD
index dc42dd00..dc42dd00 100644
--- a/files/data/mmodel/fldeff/narc_0039.bin
+++ b/files/data/mmodel/fldeff/narc_0039.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0040.bin b/files/data/mmodel/fldeff/narc_0040.NSBMD
index f9ac63f3..f9ac63f3 100644
--- a/files/data/mmodel/fldeff/narc_0040.bin
+++ b/files/data/mmodel/fldeff/narc_0040.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0041.bin b/files/data/mmodel/fldeff/narc_0041.NSBMD
index 2fba5304..2fba5304 100644
--- a/files/data/mmodel/fldeff/narc_0041.bin
+++ b/files/data/mmodel/fldeff/narc_0041.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0042.bin b/files/data/mmodel/fldeff/narc_0042.NSBMD
index fe6c1ce0..fe6c1ce0 100644
--- a/files/data/mmodel/fldeff/narc_0042.bin
+++ b/files/data/mmodel/fldeff/narc_0042.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0043.bin b/files/data/mmodel/fldeff/narc_0043.NSBMD
index c0277fd5..c0277fd5 100644
--- a/files/data/mmodel/fldeff/narc_0043.bin
+++ b/files/data/mmodel/fldeff/narc_0043.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0044.bin b/files/data/mmodel/fldeff/narc_0044.NSBMD
index 0e5cdf8e..0e5cdf8e 100644
--- a/files/data/mmodel/fldeff/narc_0044.bin
+++ b/files/data/mmodel/fldeff/narc_0044.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0045.bin b/files/data/mmodel/fldeff/narc_0045.NSBMD
index d6462c76..d6462c76 100644
--- a/files/data/mmodel/fldeff/narc_0045.bin
+++ b/files/data/mmodel/fldeff/narc_0045.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0046.bin b/files/data/mmodel/fldeff/narc_0046.NSBMD
index 6bbda15e..6bbda15e 100644
--- a/files/data/mmodel/fldeff/narc_0046.bin
+++ b/files/data/mmodel/fldeff/narc_0046.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0047.bin b/files/data/mmodel/fldeff/narc_0047.NSBMD
index e0324eed..e0324eed 100644
--- a/files/data/mmodel/fldeff/narc_0047.bin
+++ b/files/data/mmodel/fldeff/narc_0047.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0048.bin b/files/data/mmodel/fldeff/narc_0048.NSBMD
index 65ee3fda..65ee3fda 100644
--- a/files/data/mmodel/fldeff/narc_0048.bin
+++ b/files/data/mmodel/fldeff/narc_0048.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0049.bin b/files/data/mmodel/fldeff/narc_0049.NSBMD
index 4e09879c..4e09879c 100644
--- a/files/data/mmodel/fldeff/narc_0049.bin
+++ b/files/data/mmodel/fldeff/narc_0049.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0050.bin b/files/data/mmodel/fldeff/narc_0050.NSBMD
index 629eb1b4..629eb1b4 100644
--- a/files/data/mmodel/fldeff/narc_0050.bin
+++ b/files/data/mmodel/fldeff/narc_0050.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0051.bin b/files/data/mmodel/fldeff/narc_0051.NSBMD
index 360941fc..360941fc 100644
--- a/files/data/mmodel/fldeff/narc_0051.bin
+++ b/files/data/mmodel/fldeff/narc_0051.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0052.bin b/files/data/mmodel/fldeff/narc_0052.NSBMD
index 8e0d0fb8..8e0d0fb8 100644
--- a/files/data/mmodel/fldeff/narc_0052.bin
+++ b/files/data/mmodel/fldeff/narc_0052.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0053.bin b/files/data/mmodel/fldeff/narc_0053.NSBMD
index c0141f83..c0141f83 100644
--- a/files/data/mmodel/fldeff/narc_0053.bin
+++ b/files/data/mmodel/fldeff/narc_0053.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0054.bin b/files/data/mmodel/fldeff/narc_0054.NSBMD
index 18a6ab39..18a6ab39 100644
--- a/files/data/mmodel/fldeff/narc_0054.bin
+++ b/files/data/mmodel/fldeff/narc_0054.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0055.bin b/files/data/mmodel/fldeff/narc_0055.NSBMD
index 3406b440..3406b440 100644
--- a/files/data/mmodel/fldeff/narc_0055.bin
+++ b/files/data/mmodel/fldeff/narc_0055.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0056.bin b/files/data/mmodel/fldeff/narc_0056.NSBMD
index e2ab3c0b..e2ab3c0b 100644
--- a/files/data/mmodel/fldeff/narc_0056.bin
+++ b/files/data/mmodel/fldeff/narc_0056.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0057.bin b/files/data/mmodel/fldeff/narc_0057.NSBMD
index c8ce8fda..c8ce8fda 100644
--- a/files/data/mmodel/fldeff/narc_0057.bin
+++ b/files/data/mmodel/fldeff/narc_0057.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0058.bin b/files/data/mmodel/fldeff/narc_0058.NSBMD
index 594e0e82..594e0e82 100644
--- a/files/data/mmodel/fldeff/narc_0058.bin
+++ b/files/data/mmodel/fldeff/narc_0058.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0059.bin b/files/data/mmodel/fldeff/narc_0059.NSBMD
index c4e2cf3b..c4e2cf3b 100644
--- a/files/data/mmodel/fldeff/narc_0059.bin
+++ b/files/data/mmodel/fldeff/narc_0059.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0103.bin b/files/data/mmodel/fldeff/narc_0103.NSBMD
index a47d56ba..a47d56ba 100644
--- a/files/data/mmodel/fldeff/narc_0103.bin
+++ b/files/data/mmodel/fldeff/narc_0103.NSBMD
Binary files differ
diff --git a/files/data/mmodel/fldeff/narc_0104.bin b/files/data/mmodel/fldeff/narc_0104.NSBMD
index b0f3dafb..b0f3dafb 100644
--- a/files/data/mmodel/fldeff/narc_0104.bin
+++ b/files/data/mmodel/fldeff/narc_0104.NSBMD
Binary files differ
diff --git a/files/data/mmodel/mmodel/narc_0001.bin b/files/data/mmodel/mmodel/narc_0001.NSBTX
index 4558d46b..4558d46b 100644
--- a/files/data/mmodel/mmodel/narc_0001.bin
+++ b/files/data/mmodel/mmodel/narc_0001.NSBTX
Binary files differ
diff --git a/files/data/mmodel/mmodel/narc_0002.bin b/files/data/mmodel/mmodel/narc_0002.NSBTX
index c9d4ea6d..c9d4ea6d 100644
--- a/files/data/mmodel/mmodel/narc_0002.bin
+++ b/files/data/mmodel/mmodel/narc_0002.NSBTX
Binary files differ
diff --git a/files/data/mmodel/mmodel/narc_0003.bin b/files/data/mmodel/mmodel/narc_0003.NSBTX
index b419b265..b419b265 100644
--- a/files/data/mmodel/mmodel/narc_0003.bin
+++ b/files/data/mmodel/mmodel/narc_0003.NSBTX
Binary files differ
diff --git a/files/data/mmodel/mmodel/narc_0004.bin b/files/data/mmodel/mmodel/narc_0004.NSBTX
index 340e7cf7..340e7cf7 100644
--- a/files/data/mmodel/mmodel/narc_0004.bin
+++ b/files/data/mmodel/mmodel/narc_0004.NSBTX
Binary files differ
diff --git a/files/data/mmodel/mmodel/narc_0005.bin b/files/data/mmodel/mmodel/narc_0005.NSBTX
index 92d5ffbd..92d5ffbd 100644
--- a/files/data/mmodel/mmodel/narc_0005.bin
+++ b/files/data/mmodel/mmodel/narc_0005.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0000.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0000.NSBTX
index 6089ee48..6089ee48 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0000.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0000.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0001.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0001.NSBTX
index becb97b7..becb97b7 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0001.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0001.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0002.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0002.NSBTX
index 7868c199..7868c199 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0002.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0002.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0003.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0003.NSBTX
index d5d1028f..d5d1028f 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0003.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0003.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0004.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0004.NSBTX
index d8598e1a..d8598e1a 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0004.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0004.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0005.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0005.NSBTX
index ef603e0f..ef603e0f 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0005.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0005.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0006.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0006.NSBTX
index 90cab132..90cab132 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0006.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0006.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0007.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0007.NSBTX
index 36c988fc..36c988fc 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0007.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0007.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0008.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0008.NSBTX
index a46fff6c..a46fff6c 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0008.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0008.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0009.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0009.NSBTX
index 6bb10353..6bb10353 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0009.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0009.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0010.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0010.NSBTX
index 3ec999d3..3ec999d3 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0010.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0010.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0011.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0011.NSBTX
index 19e7a9e9..19e7a9e9 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0011.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0011.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0012.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0012.NSBTX
index 70354f04..70354f04 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0012.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0012.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0013.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0013.NSBTX
index 2790f7a6..2790f7a6 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0013.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0013.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0014.bin b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0014.NSBTX
index 314da651..314da651 100644
--- a/files/fielddata/areadata/area_build_model/areabm_texset/narc_0014.bin
+++ b/files/fielddata/areadata/area_build_model/areabm_texset/narc_0014.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_map_tex/map_tex_set/narc_0000.bin b/files/fielddata/areadata/area_map_tex/map_tex_set/narc_0000.NSBTX
index ac02e25b..ac02e25b 100644
--- a/files/fielddata/areadata/area_map_tex/map_tex_set/narc_0000.bin
+++ b/files/fielddata/areadata/area_map_tex/map_tex_set/narc_0000.NSBTX
Binary files differ
diff --git a/files/fielddata/areadata/area_map_tex/map_tex_set/narc_0001.bin b/files/fielddata/areadata/area_map_tex/map_tex_set/narc_0001.NSBTX
index a848c8f1..a848c8f1 100644
--- a/files/fielddata/areadata/area_map_tex/map_tex_set/narc_0001.bin
+++ b/files/fielddata/areadata/area_map_tex/map_tex_set/narc_0001.NSBTX
Binary files differ
diff --git a/files/fielddata/build_model/build_model/narc_0000.bin b/files/fielddata/build_model/build_model/narc_0000.NSBMD
index df429436..df429436 100644
--- a/files/fielddata/build_model/build_model/narc_0000.bin
+++ b/files/fielddata/build_model/build_model/narc_0000.NSBMD
Binary files differ
diff --git a/files/fielddata/build_model/build_model/narc_0001.bin b/files/fielddata/build_model/build_model/narc_0001.NSMBD
index fed4005f..fed4005f 100644
--- a/files/fielddata/build_model/build_model/narc_0001.bin
+++ b/files/fielddata/build_model/build_model/narc_0001.NSMBD
Binary files differ
diff --git a/files/fielddata/build_model/build_model/narc_0002.bin b/files/fielddata/build_model/build_model/narc_0002.NSBMD
index 69993312..69993312 100644
--- a/files/fielddata/build_model/build_model/narc_0002.bin
+++ b/files/fielddata/build_model/build_model/narc_0002.NSBMD
Binary files differ
diff --git a/files/fielddata/build_model/build_model/narc_0003.bin b/files/fielddata/build_model/build_model/narc_0003.NSBMD
index e908385d..e908385d 100644
--- a/files/fielddata/build_model/build_model/narc_0003.bin
+++ b/files/fielddata/build_model/build_model/narc_0003.NSBMD
Binary files differ
diff --git a/files/fielddata/build_model/build_model/narc_0004.bin b/files/fielddata/build_model/build_model/narc_0004.NSBMD
index 147bf45b..147bf45b 100644
--- a/files/fielddata/build_model/build_model/narc_0004.bin
+++ b/files/fielddata/build_model/build_model/narc_0004.NSBMD
Binary files differ
diff --git a/files/fielddata/build_model/build_model/narc_0005.bin b/files/fielddata/build_model/build_model/narc_0005.NSBMD
index 944dc2bd..944dc2bd 100644
--- a/files/fielddata/build_model/build_model/narc_0005.bin
+++ b/files/fielddata/build_model/build_model/narc_0005.NSBMD
Binary files differ
diff --git a/files/fielddata/build_model/build_model/narc_0006.bin b/files/fielddata/build_model/build_model/narc_0006.NSBMD
index 933c5d1d..933c5d1d 100644
--- a/files/fielddata/build_model/build_model/narc_0006.bin
+++ b/files/fielddata/build_model/build_model/narc_0006.NSBMD
Binary files differ
diff --git a/files/graphic/demo_trade/narc_0027.bin b/files/graphic/demo_trade/narc_0027.NSBMD
index 3de52aa4..3de52aa4 100644
--- a/files/graphic/demo_trade/narc_0027.bin
+++ b/files/graphic/demo_trade/narc_0027.NSBMD
Binary files differ
diff --git a/files/graphic/ending/narc_0000.bin b/files/graphic/ending/narc_0000.NSBMD
index 19bc6489..19bc6489 100644
--- a/files/graphic/ending/narc_0000.bin
+++ b/files/graphic/ending/narc_0000.NSBMD
Binary files differ
diff --git a/files/graphic/ending/narc_0001.bin b/files/graphic/ending/narc_0001.NSBMD
index beb0ec8b..beb0ec8b 100644
--- a/files/graphic/ending/narc_0001.bin
+++ b/files/graphic/ending/narc_0001.NSBMD
Binary files differ
diff --git a/files/graphic/ending/narc_0002.bin b/files/graphic/ending/narc_0002.NSBMD
index 093d1a9d..093d1a9d 100644
--- a/files/graphic/ending/narc_0002.bin
+++ b/files/graphic/ending/narc_0002.NSBMD
Binary files differ
diff --git a/files/graphic/ending/narc_0003.bin b/files/graphic/ending/narc_0003.NSBTA
index bc2ec208..bc2ec208 100644
--- a/files/graphic/ending/narc_0003.bin
+++ b/files/graphic/ending/narc_0003.NSBTA
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0000.bin b/files/graphic/ev_pokeselect/narc_0000.NSBCA
index 4d53e5bf..4d53e5bf 100644
--- a/files/graphic/ev_pokeselect/narc_0000.bin
+++ b/files/graphic/ev_pokeselect/narc_0000.NSBCA
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0001.bin b/files/graphic/ev_pokeselect/narc_0001.NSBMD
index be54bee3..be54bee3 100644
--- a/files/graphic/ev_pokeselect/narc_0001.bin
+++ b/files/graphic/ev_pokeselect/narc_0001.NSBMD
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0002.bin b/files/graphic/ev_pokeselect/narc_0002.NSBCA
index 16adb461..16adb461 100644
--- a/files/graphic/ev_pokeselect/narc_0002.bin
+++ b/files/graphic/ev_pokeselect/narc_0002.NSBCA
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0003.bin b/files/graphic/ev_pokeselect/narc_0003.NSBMD
index 3d515b2d..3d515b2d 100644
--- a/files/graphic/ev_pokeselect/narc_0003.bin
+++ b/files/graphic/ev_pokeselect/narc_0003.NSBMD
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0004.bin b/files/graphic/ev_pokeselect/narc_0004.NSBCA
index 785d6908..785d6908 100644
--- a/files/graphic/ev_pokeselect/narc_0004.bin
+++ b/files/graphic/ev_pokeselect/narc_0004.NSBCA
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0005.bin b/files/graphic/ev_pokeselect/narc_0005.NSBMD
index 748dc501..748dc501 100644
--- a/files/graphic/ev_pokeselect/narc_0005.bin
+++ b/files/graphic/ev_pokeselect/narc_0005.NSBMD
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0006.bin b/files/graphic/ev_pokeselect/narc_0006.NSBCA
index 94bca388..94bca388 100644
--- a/files/graphic/ev_pokeselect/narc_0006.bin
+++ b/files/graphic/ev_pokeselect/narc_0006.NSBCA
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0007.bin b/files/graphic/ev_pokeselect/narc_0007.NSBMD
index 10d233c8..10d233c8 100644
--- a/files/graphic/ev_pokeselect/narc_0007.bin
+++ b/files/graphic/ev_pokeselect/narc_0007.NSBMD
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0008.bin b/files/graphic/ev_pokeselect/narc_0008.NSBMD
index 80725591..80725591 100644
--- a/files/graphic/ev_pokeselect/narc_0008.bin
+++ b/files/graphic/ev_pokeselect/narc_0008.NSBMD
Binary files differ
diff --git a/files/graphic/ev_pokeselect/narc_0009.bin b/files/graphic/ev_pokeselect/narc_0009.NSBMD
index 23c5d394..23c5d394 100644
--- a/files/graphic/ev_pokeselect/narc_0009.bin
+++ b/files/graphic/ev_pokeselect/narc_0009.NSBMD
Binary files differ
diff --git a/files/graphic/hiden_effect/narc_0000.bin b/files/graphic/hiden_effect/narc_0000.NSBCA
index c12ead76..c12ead76 100644
--- a/files/graphic/hiden_effect/narc_0000.bin
+++ b/files/graphic/hiden_effect/narc_0000.NSBCA
Binary files differ
diff --git a/files/graphic/hiden_effect/narc_0001.bin b/files/graphic/hiden_effect/narc_0001.NSBMA
index 70263d42..70263d42 100644
--- a/files/graphic/hiden_effect/narc_0001.bin
+++ b/files/graphic/hiden_effect/narc_0001.NSBMA
Binary files differ
diff --git a/files/graphic/hiden_effect/narc_0002.bin b/files/graphic/hiden_effect/narc_0002.NSBTA
index d4066c4e..d4066c4e 100644
--- a/files/graphic/hiden_effect/narc_0002.bin
+++ b/files/graphic/hiden_effect/narc_0002.NSBTA
Binary files differ
diff --git a/files/graphic/hiden_effect/narc_0003.bin b/files/graphic/hiden_effect/narc_0003.NSBMD
index adec36ef..adec36ef 100644
--- a/files/graphic/hiden_effect/narc_0003.bin
+++ b/files/graphic/hiden_effect/narc_0003.NSBMD
Binary files differ
diff --git a/files/graphic/poketch/.knarcignore b/files/graphic/poketch/.knarcignore
index 2856080a..25285fc7 100644
--- a/files/graphic/poketch/.knarcignore
+++ b/files/graphic/poketch/.knarcignore
@@ -1,2 +1,4 @@
*.png
*.pal
+narc_0010.NCGR
+narc_0011.NSCR
diff --git a/files/graphic/poketch/narc_0010.bin b/files/graphic/poketch/narc_0010.bin
deleted file mode 100644
index 75d87f58..00000000
--- a/files/graphic/poketch/narc_0010.bin
+++ /dev/null
Binary files differ
diff --git a/files/graphic/poketch/narc_0010.png b/files/graphic/poketch/narc_0010.png
new file mode 100644
index 00000000..0945423d
--- /dev/null
+++ b/files/graphic/poketch/narc_0010.png
Binary files differ
diff --git a/files/graphic/poketch/narc_0011.NSCR b/files/graphic/poketch/narc_0011.NSCR
index 97830501..d2f5f9df 100644
--- a/files/graphic/poketch/narc_0011.NSCR
+++ b/files/graphic/poketch/narc_0011.NSCR
Binary files differ
diff --git a/filesystem.mk b/filesystem.mk
index 387231bf..ce072c9c 100644
--- a/filesystem.mk
+++ b/filesystem.mk
@@ -3262,6 +3262,10 @@ files/msgdata/msg.narc: \
files/msgdata/msg/narc_0622.bin \
files/msgdata/msg/narc_0623.bin
+files/graphic/poketch.narc: \
+ files/graphic/poketch/narc_0010.NCGR.lz \
+ files/graphic/poketch/narc_0011.NSCR.lz
+
## Trainer names
files/msgdata/msg/narc_0559.txt: files/poketool/trainer/trdata.json
(echo " -"; $(GREP) -w '"name":' $< | cut -d'"' -f4) | $(SED) 's/^(.+)$$/{TRNAME}\1\r/g' > $@
diff --git a/graphics_rules.mk b/graphics_rules.mk
index 691a81f4..d36fa0c3 100644
--- a/graphics_rules.mk
+++ b/graphics_rules.mk
@@ -156,7 +156,8 @@ VERSION101_SOPC_8BPP_NCGR_FILES := files/demo/title/titledemo/narc_0001.NCGR \
VERSION101_SOPC_NCGR_FILES := files/application/wifi_earth/wifi_earth/narc_0005.NCGR \
files/demo/title/titledemo/narc_0007.NCGR \
files/demo/title/titledemo/narc_0011.NCGR \
- files/demo/title/titledemo/narc_0015.NCGR
+ files/demo/title/titledemo/narc_0015.NCGR \
+ files/graphic/poketch/narc_0010.NCGR
8BPP_COMP10_NOPAD_NCLR_PNG_FILES := files/poketool/trgra/trbgra/narc_0000.NCLR \
files/poketool/trgra/trbgra/narc_0002.NCLR \
diff --git a/include/GX_layers.h b/include/GX_layers.h
index 3943d582..03c20df6 100644
--- a/include/GX_layers.h
+++ b/include/GX_layers.h
@@ -3,12 +3,7 @@
#include "global.h"
-
-struct GX_LayerData
-{
- u32 EngineB_DISPCNT_LayerMask;
- u32 EngineA_DISPCNT_LayerMask;
-};
+#include "gx.h"
typedef enum {
@@ -33,10 +28,10 @@ struct GraphicsBanks
struct GraphicsModes {
- u32 mode1;
- u32 mode2;
- u32 mode3;
- u32 mode4;
+ GXDispMode dispMode;
+ GXBGMode bgMode;
+ GXBGMode subMode;
+ GXBG0As _2d3dMode;
};
diff --git a/include/bag.h b/include/bag.h
index 14735443..a785afc6 100644
--- a/include/bag.h
+++ b/include/bag.h
@@ -1,6 +1,7 @@
#ifndef POKEDIAMOND_BAG_H
#define POKEDIAMOND_BAG_H
+#include "bag_view.h"
#include "itemtool.h"
#include "save_block_2.h"
@@ -17,13 +18,6 @@ struct Bag
u32 registeredItem;
};
-struct BagView
-{
- struct ItemSlot * slots;
- u32 count;
- u8 pocket;
-};
-
struct UnkStruct_0206F164
{
u8 unk_00[8];
diff --git a/include/bag_view.h b/include/bag_view.h
new file mode 100644
index 00000000..423d2677
--- /dev/null
+++ b/include/bag_view.h
@@ -0,0 +1,56 @@
+#ifndef POKEDIAMOND_BAG_VIEW_H
+#define POKEDIAMOND_BAG_VIEW_H
+
+#include "player_data.h"
+#include "save_block_2.h"
+
+struct UnkStruct_0206F164;
+
+struct BagView_UnkSub
+{
+ struct ItemSlot *slot;
+ u8 padding[0x4];
+ u8 pocket;
+ u8 padding2[0x3];
+}; // total size = 0xC
+
+struct BagView
+{
+ struct SaveBlock2 *sav2;
+ struct BagView_UnkSub slots[8];
+ u8 padding;
+ u8 unk65;
+ u16 unk66;
+ u16 unk68;
+ u8 padding2[0x2];
+ struct UnkStruct_0206F164 *unk6C;
+ u32 unk70;
+ u8 unk74;
+ u8 unk75;
+ u16 unk76 : 1;
+ u16 unk76_2 : 15;
+}; // total size = 0x78
+
+struct BagView *BagView_New(u8 heap_id);
+u32 BagView_sizeof();
+void FUN_0206E30C(struct BagView *bag_view, u8 r1);
+void FUN_0206E314(
+ struct BagView *bag_view, struct SaveBlock2 *sav2, u8 r2, struct UnkStruct_0206F164 *r3);
+void BagView_SetItem(struct BagView *bag_view, struct ItemSlot *slot, u8 pocket, u8 idx);
+void FUN_0206E340(struct BagView *bag_view);
+void FUN_0206E354(struct BagView *bag_view, u32 r1);
+void FUN_0206E358(struct BagView *bag_view, u8 r1);
+void FUN_0206E360(struct BagView *bag_view, u16 r1);
+u16 FUN_0206E37C(struct BagView *bag_view);
+u16 FUN_0206E384(struct BagView *bag_view);
+u8 FUN_0206E38C(struct BagView *bag_view);
+u8 FUN_0206E394(struct BagView *bag_view);
+u32 FUN_0206E39C(struct SaveBlock2 *sav2);
+u32 FUN_0206E3A8(struct SaveBlock2 *sav2);
+u32 FUN_0206E3C8(struct SaveBlock2 *sav2);
+u32 FUN_0206E3D8(struct SaveBlock2 *sav2);
+u32 FUN_0206E3E8(struct SaveBlock2 *sav2);
+BOOL FUN_0206E3F8(struct SaveBlock2 *sav2, struct String *dest, u32 item_id, u32 heap_id);
+void FUN_0206E51C(struct PlayerData *playerData, struct String *dest, u32 r2, u32 r3, u32 heap_id);
+
+#endif // POKEDIAMOND_BAG_VIEW_H
diff --git a/include/bg_window.h b/include/bg_window.h
new file mode 100644
index 00000000..24ed152b
--- /dev/null
+++ b/include/bg_window.h
@@ -0,0 +1,424 @@
+#ifndef POKEDIAMOND_UNK_02016B94_H
+#define POKEDIAMOND_UNK_02016B94_H
+
+#include "NNS_g2d.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"
+
+struct BgTemplate
+{
+ u32 x;
+ u32 y;
+ u32 bufferSize;
+ u32 baseTile;
+
+ u8 size;
+ u8 colorMode;
+ u8 screenBase;
+ u8 charBase;
+ u8 bgExtPltt;
+ u8 priority;
+ u8 areaOver;
+ u8 unk17; // probably paddding
+ u32 mosaic;
+};
+
+struct Bg
+{
+ void *tilemapBuffer;
+ u32 bufferSize;
+ u32 baseTile;
+
+ fx32 hOffset;
+ fx32 vOffset;
+
+ u8 mode;
+ u8 size;
+ u8 colorMode;
+ u8 tileSize;
+ u16 rotation;
+ u16 unk22; // probably padding
+ fx32 xScale;
+ fx32 yScale;
+ fx32 centerX;
+ fx32 centerY;
+};
+
+struct BgConfig
+{
+ u32 heap_id;
+ u16 scrollScheduled;
+ u16 bufferTransferScheduled;
+ struct Bg bgs[8];
+};
+
+struct Bitmap
+{
+ const u8 *pixels;
+ u16 width;
+ u16 height;
+};
+
+struct WindowTemplate
+{
+ u8 bgId;
+ u8 tilemapLeft;
+ u8 tilemapTop;
+ u8 width;
+ u8 height;
+ u8 paletteNum;
+ u16 baseTile;
+};
+
+struct Window
+{
+ struct BgConfig *bgConfig;
+ u8 bgId;
+ u8 tilemapLeft;
+ u8 tilemapTop;
+ u8 width;
+ u8 height;
+ u8 paletteNum;
+ u16 baseTile : 15;
+ u16 colorMode : 1;
+ void *pixelBuffer;
+};
+
+enum GFBppMode
+{
+ GF_BG_CLR_4BPP = 0,
+ GF_BG_CLR_8BPP,
+};
+
+enum GFBgLayer
+{
+ GF_BG_LYR_MAIN_0 = 0,
+ GF_BG_LYR_MAIN_1,
+ GF_BG_LYR_MAIN_2,
+ GF_BG_LYR_MAIN_3,
+ GF_BG_LYR_SUB_0,
+ GF_BG_LYR_SUB_1,
+ GF_BG_LYR_SUB_2,
+ GF_BG_LYR_SUB_3,
+ GF_BG_LYR_MAIN_CNT = 4,
+ GF_BG_LYR_SUB_CNT = 4,
+ GF_BG_LYR_MAIN_FIRST = GF_BG_LYR_MAIN_0,
+ GF_BG_LYR_SUB_FIRST = GF_BG_LYR_SUB_0,
+
+ GF_BG_LYR_MAIN_0_F = 1 << (GF_BG_LYR_MAIN_0 - GF_BG_LYR_MAIN_FIRST),
+ GF_BG_LYR_MAIN_1_F = 1 << (GF_BG_LYR_MAIN_1 - GF_BG_LYR_MAIN_FIRST),
+ GF_BG_LYR_MAIN_2_F = 1 << (GF_BG_LYR_MAIN_2 - GF_BG_LYR_MAIN_FIRST),
+ GF_BG_LYR_MAIN_3_F = 1 << (GF_BG_LYR_MAIN_3 - GF_BG_LYR_MAIN_FIRST),
+ GF_BG_LYR_SUB_0_F = 1 << (GF_BG_LYR_SUB_0 - GF_BG_LYR_SUB_FIRST),
+ GF_BG_LYR_SUB_1_F = 1 << (GF_BG_LYR_SUB_1 - GF_BG_LYR_SUB_FIRST),
+ GF_BG_LYR_SUB_2_F = 1 << (GF_BG_LYR_SUB_2 - GF_BG_LYR_SUB_FIRST),
+ GF_BG_LYR_SUB_3_F = 1 << (GF_BG_LYR_SUB_3 - GF_BG_LYR_SUB_FIRST),
+
+ GF_BG_LYR_UNALLOC = 0xFF,
+};
+
+enum GFBgType
+{
+ GF_BG_TYPE_TEXT = 0,
+ GF_BG_TYPE_AFFINE,
+ GF_BG_TYPE_256x16PLTT,
+};
+
+enum GFBgCntSet
+{
+ GF_BG_CNT_SET_COLOR_MODE = 0,
+ GF_BG_CNT_SET_SCREEN_BASE,
+ GF_BG_CNT_SET_CHAR_BASE,
+};
+
+enum GFBgScreenSize
+{
+ GF_BG_SCR_SIZE_128x128 = 0,
+ GF_BG_SCR_SIZE_256x256,
+ GF_BG_SCR_SIZE_256x512,
+ GF_BG_SCR_SIZE_512x256,
+ GF_BG_SCR_SIZE_512x512,
+ GF_BG_SCR_SIZE_1024x1024
+};
+
+enum BgPosAdjustOp
+{
+ // Text layers
+ BG_POS_OP_SET_X = 0,
+ BG_POS_OP_ADD_X,
+ BG_POS_OP_SUB_X,
+ BG_POS_OP_SET_Y,
+ BG_POS_OP_ADD_Y,
+ BG_POS_OP_SUB_Y,
+
+ // Affine layers
+ BG_POS_OP_SET_ROT = 0,
+ BG_POS_OP_ADD_ROT,
+ BG_POS_OP_SUB_ROT,
+ BG_POS_OP_SET_CENTERX = 9,
+ BG_POS_OP_ADD_CENTERX,
+ BG_POS_OP_SUB_CENTERX,
+ BG_POS_OP_SET_CENTERY,
+ BG_POS_OP_ADD_CENTERY,
+ BG_POS_OP_SUB_CENTERY,
+};
+
+struct BgConfig *BgConfig_Alloc(u32 heap_id);
+u32 BgConfig_GetHeapId(struct BgConfig *bgConfig);
+void SetBothScreensModesAndDisable(const struct GraphicsModes *modes);
+void SetScreenModeAndDisable(const struct GraphicsModes *gfxModes, u32 whichScreen);
+void InitBgFromTemplate(
+ struct BgConfig *bgConfig, u8 bgId, const struct BgTemplate *template, u8 bgMode);
+void SetBgControlParam(struct BgConfig *config, u8 bgId, u32 attr, u8 value);
+u8 TranslateGFBgModePairToGXScreenSize(u8 size, u32 bgMode);
+void GetBgScreenDimensions(u32 screenSize, u8 *width_p, u8 *height_p);
+void FreeBgTilemapBuffer(struct BgConfig *bgConfig, u32 bgId);
+void SetBgPriority(u32 bgId, u16 priority);
+void ToggleBgLayer(u32 bgId, GX_LayerToggle toggle);
+void BgSetPosTextAndCommit(struct BgConfig *bgConfig, u32 bgId, u32 op, fx32 val);
+fx32 Bg_GetXpos(struct BgConfig *bgConfig, u32 bgId);
+fx32 Bg_GetYpos(struct BgConfig *bgConfig, u32 bgId);
+void Bg_SetTextDimAndAffineParams(struct BgConfig *bgConfig,
+ u32 bgId,
+ u32 txOp,
+ fx32 txVal,
+ struct Mtx22 *mtx,
+ fx32 centerX,
+ fx32 centerY);
+void Bg_SetPosText(struct Bg *bg, u32 op, fx32 val);
+void SetBgAffine(struct BgConfig *bgConfig,
+ u32 bgId,
+ struct Mtx22 *mtx,
+ fx32 centerX,
+ fx32 centerY);
+void BgAffineReset(struct BgConfig *bgConfig, u32 bgId);
+void CopyOrUncompressTilemapData(const void *src, void *dest, u32 size);
+void BgCommitTilemapBufferToVram(struct BgConfig *bgConfig, u32 bgId);
+void BgCopyOrUncompressTilemapBufferRangeToVram(
+ struct BgConfig *bgConfig, u32 bgId, u32 *src, u32 size, u32 tileOffset);
+void LoadBgVramScr(u32 bgId, void *buffer_p, u32 offset, u32 size);
+void BG_LoadScreenTilemapData(struct BgConfig *bgConfig, u32 bgId, void *src, u32 numTiles);
+void BG_LoadCharTilesData(
+ struct BgConfig *bgConfig, u32 bgId, u32 *charData, u32 offset, u32 numTiles);
+void BG_LoadCharPixelData(
+ struct BgConfig *bgConfig, u32 bgId, u32 *charData, u32 size, u32 offset);
+void LoadBgVramChar(u32 bgId, void *buffer_p, u32 offset, u32 size);
+void BG_ClearCharDataRange(u32 bgId, u32 size, u32 offset, u32 heap_id);
+void BG_FillCharDataRange(
+ struct BgConfig *param0, u32 bgId, u32 fillValue, u32 count, u32 offset);
+void BG_LoadPlttData(u32 bgId, void *plttData, u32 size, u32 offset);
+void BG_SetMaskColor(u32 bgId, u32 value);
+u16 GetTileMapIndexFromCoords(u8 x, u8 y, u8 screenSize);
+u16 GetSrcTileMapIndexFromCoords(u8 x, u8 y, u8 width, u8 height);
+void LoadRectToBgTilemapRect(struct BgConfig *bgConfig,
+ u32 bgId,
+ void *src,
+ u8 dstX,
+ u8 dstY,
+ u8 width,
+ u8 height);
+void CopyToBgTilemapRect(struct BgConfig *bgConfig,
+ u32 bgId,
+ u8 dstX,
+ u8 dstY,
+ u8 dstWidth,
+ u8 dstHeight,
+ void *src,
+ u8 srcX,
+ u8 srcY,
+ u8 srcWidth,
+ u8 srcHeight);
+void CopyRectToBgTilemapRect(struct BgConfig *bgConfig,
+ u32 bgId,
+ u8 dstX,
+ u8 dstY,
+ u8 dstWidth,
+ u8 dstHeight,
+ void *src,
+ u8 srcX,
+ u8 srcY,
+ u8 srcWidth,
+ u8 srcHeight);
+void CopyBgTilemapRectText(struct Bg *bg,
+ u8 dstX,
+ u8 dstY,
+ u8 dstWidth,
+ u8 dstHeight,
+ u16 *src,
+ u8 srcX,
+ u8 srcY,
+ u8 srcWidth,
+ u8 srcHeight,
+ u8 adjustForSrcDims);
+void CopyBgTilemapRectAffine(struct Bg *bg,
+ u8 dstX,
+ u8 dstY,
+ u8 dstWidth,
+ u8 dstHeight,
+ u8 *src,
+ u8 srcX,
+ u8 srcY,
+ u8 srcWidth,
+ u8 srcHeight,
+ u8 adjustForSrcDims);
+void FillBgTilemapRect(struct BgConfig *bgConfig,
+ u32 bgId,
+ u16 fillValue,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum);
+void FillBgTilemapRectText(struct Bg *bg,
+ u16 fillValue,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum);
+void FillBgTilemapRectAffine(
+ struct Bg *bg, u8 fillValue, u8 x, u8 y, u8 width, u8 height);
+void BgTilemapRectChangePalette(struct BgConfig *bgConfig,
+ u32 bgId,
+ u8 x,
+ u8 y,
+ u8 width,
+ u8 height,
+ u8 paletteNum);
+void BgClearTilemapBufferAndCommit(struct BgConfig *bgConfig, u32 bgId);
+void BgFillTilemapBufferAndCommit(struct BgConfig *bgConfig, u32 bgId, u16 fillValue);
+void BgFillTilemapBufferAndSchedule(struct BgConfig *bgConfig, u32 bgId, u16 fillValue);
+void *BgGetCharPtr(u32 bgId);
+void Convert4bppTo8bppInternal(u8 *src4bpp, u32 size, u8 (*dest8bpp), u8 paletteNum);
+u8 *Convert4bppTo8bpp(u8 *src4Bpp, u32 size, u8 paletteNum, u32 heap_id);
+void *GetBgTilemapBuffer(struct BgConfig *bgConfig, u8 bgId);
+u16 GetBgAffineRotation(struct BgConfig *bgConfig, u32 bgId);
+u8 GetBgPriority(struct BgConfig *bgConfig, u32 bgId);
+void BlitBitmapRect4Bit(const struct Bitmap *src,
+ const struct Bitmap *dst,
+ u16 srcX,
+ u16 srcY,
+ u16 dstX,
+ u16 dstY,
+ u16 width,
+ u16 height,
+ u16 colorKey);
+void BlitBitmapRect8Bit(const struct Bitmap *src,
+ const struct Bitmap *dst,
+ u16 srcX,
+ u16 srcY,
+ u16 dstX,
+ u16 dstY,
+ u16 width,
+ u16 height,
+ u16 colorKey);
+void FillBitmapRect4Bit(
+ struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
+void FillBitmapRect8Bit(
+ struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
+struct Window *AllocWindows(u32 heap_id, s32 size);
+void InitWindow(struct Window *window);
+BOOL WindowIsInUse(struct Window *window);
+void AddWindowParameterized(struct BgConfig *param0,
+ struct Window *window,
+ u8 bgId,
+ u8 tilemapLeft,
+ u8 tilemapTop,
+ u8 width,
+ u8 height,
+ u8 paletteNum,
+ u16 baseTile);
+void AddTextWindowTopLeftCorner(struct BgConfig *param0,
+ struct Window *window,
+ u8 width,
+ u8 height,
+ u16 baseTile,
+ u8 paletteNum);
+void AddWindow(struct BgConfig *bgConfig,
+ struct Window *window,
+ const struct WindowTemplate *template);
+void RemoveWindow(struct Window *window);
+void WindowArray_dtor(struct Window *windows, int count);
+void CopyWindowToVram(struct Window *window);
+void ScheduleWindowCopyToVram(struct Window *window);
+void PutWindowTilemap(struct Window *window);
+void PutWindowTilemapRectAnchoredTopLeft(struct Window *window, u8 width, u8 height);
+void ClearWindowTilemap(struct Window *window);
+void PutWindowTilemap_TextMode(struct Window *param0);
+void PutWindowTilemap_AffineMode(struct Window *window);
+void ClearWindowTilemapText(struct Window *window);
+void ClearWindowTilemapAffine(struct Window *window);
+void CopyWindowToVram_TextMode(struct Window *window);
+void ScheduleWindowCopyToVram_TextMode(struct Window *window);
+void CopyWindowToVram_AffineMode(struct Window *window);
+void ScheduleWindowCopyToVram_AffineMode(struct Window *window);
+void CopyWindowPixelsToVram_TextMode(struct Window *window);
+void ClearWindowTilemapAndCopyToVram(struct Window *window);
+void ClearWindowTilemapAndScheduleTransfer(struct Window *window);
+void ClearWindowTilemapAndCopyToVram_TextMode(struct Window *window);
+void ClearWindowTilemapAndScheduleTransfer_TextMode(struct Window *window);
+void ClearWindowTilemapAndCopyToVram_AffineMode(struct Window *window);
+void ClearWindowTilemapAndScheduleTransfer_AffineMode(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 CopyGlyphToWindow(
+ struct Window * window,
+ const char * src,
+ u16 srcWidth,
+ u16 srcHeight,
+ u16 width,
+ u16 height,
+ u16 glyph
+);
+void ScrollWindow(struct Window *window, u32 param1, u8 param2, u8 param3);
+void ScrollWindow4bpp(struct Window *window, u32 param1, u8 param2, u8 fillValue);
+void ScrollWindow8bpp(struct Window *window, u32 param1, u8 param2, u8 fillValue);
+u8 GetWindowBgId(struct Window *window);
+u8 GetWindowWidth(struct Window *window);
+u8 GetWindowHeight(struct Window *window);
+u8 GetWindowX(struct Window *window);
+u8 GetWindowY(struct Window *window);
+void MoveWindowX(struct Window *window, u8 x);
+void MoveWindowY(struct Window *window, u8 y);
+void SetWindowPaletteNum(struct Window *window, u8 paletteNum);
+NNSG2dCharacterData * LoadCharacterDataFromFile(void **char_ret, u32 heap_id, const char *path);
+NNSG2dPaletteData * LoadPaletteDataFromFile(void **pltt_ret, u32 heap_id, const char *path);
+void DoScheduledBgGpuUpdates(struct BgConfig *bgConfig);
+void DoScheduledBgTilemapBufferTransfers(struct BgConfig *bgConfig);
+void ScheduleBgTilemapBufferTransfer(struct BgConfig *bgConfig, u32 bgId);
+void ApplyScheduledBgPosUpdate(struct BgConfig *bgConfig);
+void ScheduleSetBgPosText(struct BgConfig *bgConfig, u32 bgId, u32 op, fx32 value);
+void ScheduleSetBgAffineRotation(struct BgConfig *bgConfig, u32 bgId, u32 op, u16 value);
+void Bg_SetAffineRotation(struct Bg *bg, u32 op, u16 val);
+void ScheduleSetBgAffinePos(struct BgConfig *bgConfig, u32 bgId, u32 op, fx32 value);
+void Bg_SetAffinePos(struct Bg *bg, u32 op, fx32 val);
+u32 DoesPixelAtScreenXYMatchPtrVal(struct BgConfig *bgConfig, u8 bgId, u8 x, u8 y, u16 *src);
+void ApplyFlipFlagsToTile(struct BgConfig *bgConfig, u8 flag, u8 *src);
+
+#endif // POKEDIAMOND_UNK_02016B94_H
diff --git a/include/game_init.h b/include/game_init.h
index 7a6e34fb..bf6569c4 100644
--- a/include/game_init.h
+++ b/include/game_init.h
@@ -9,26 +9,26 @@ void FUN_02015EF4(void);
void Main_SetVBlankIntrCB(void (*a0)(void *), void * a1);
void FUN_02015F1C(void);
BOOL FUN_02015F34(void (*a0)(void *), void * a1);
-void FUN_02015F6C(void);
-void Main_HBlankIntr(BOOL a0);
+void Main_CallHBlankCallback(void);
+void Main_ToggleHBlankInterrupt(BOOL enableFlag);
void FUN_02015FC8(void);
void InitSystemForTheGame(void);
void InitGraphicMemory(void);
-void * FUN_020161A4(u32 heap_id, const char * path);
-void FUN_020161F8(const char * path, void ** ptr);
-u32 FUN_02016230(const s8 * str);
-int FUN_020162A0(u32 a0);
-int FUN_020162C8(void * a0, u32 a1);
-void FUN_020162FC(void);
-void * FUN_02016324(const s8 * str, u32 heap_id);
-void FUN_020163BC(void);
+void * AllocAndReadFile(u32 heap_id, const char * path);
+void OpenAndReadWholeFile(const char * path, void ** ptr);
+u32 GetFilenameHash(const s8 * str);
+int GetFileCacheId(u32 hash);
+int AddFileToCache(void * contents, u32 hash);
+void ClearFileCache(void);
+void * OpenFileCached(const s8 * str, u32 heap_id);
+void InitKeypadAndTouchpad(void);
void FUN_02016438(u8 a0);
void FUN_02016444(u8 a0);
void FUN_02016454(u8 a0);
-void FUN_02016464(void);
-void FUN_02016568(void);
-void FUN_0201669C(int x, int y);
-void FUN_020166A8(u8 a0);
-void FUN_020166B8(u8 a0);
+void ReadKeypadAndTocuhpad(void);
+void ApplyButtonModeToInput(void);
+void SetKeyRepeatTimers(int continueDelay, int startDelay);
+void SetSoftResetDisableMask(u8 a0);
+void ClearSoftResetDisableMask(u8 a0);
#endif //POKEDIAMOND_GAME_INIT_H
diff --git a/include/gf_gfx_loader.h b/include/gf_gfx_loader.h
index b95075dc..32d63449 100644
--- a/include/gf_gfx_loader.h
+++ b/include/gf_gfx_loader.h
@@ -1,16 +1,17 @@
#ifndef POKEDIAMOND_GF_GFX_LOADER_H
#define POKEDIAMOND_GF_GFX_LOADER_H
-#include "unk_02016B94.h"
+#include "bg_window.h"
+#include "filesystem.h"
-u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id);
-void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct UnkStruct_02016B94_2 * unkStruct02016B94_2, u32 a3, u32 a4, u32 szByte, BOOL isCompressed, u32 heap_id);
-void GfGfxLoader_GXLoadPal(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 baseAddr, u32 szByte, u32 heap_id);
-void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, u32 whichRoutine, u32 srcOffset, u32 baseAddr, u32 szByte, u32 heap_id);
-u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 whichRoutine, u32 baseAddr, u32 szByte, BOOL isCompressed, u32 heap_id);
+u32 GfGfxLoader_LoadCharData(NarcId narcId, s32 memberNo, struct BgConfig * unkStruct02016B94_2, u32 layer, u32 numTiles, u32 szByte, BOOL isCompressed, u32 heap_id);
+void GfGfxLoader_LoadScrnData(NarcId narcId, s32 memberNo, struct BgConfig * unkStruct02016B94_2, u32 layer, u32 tileOffset, u32 szByte, BOOL isCompressed, u32 heap_id);
+void GfGfxLoader_GXLoadPal(NarcId narcId, s32 memberNo, u32 layer, u32 baseAddr, u32 szByte, u32 heap_id);
+void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, u32 layer, u32 srcOffset, u32 baseAddr, u32 szByte, u32 heap_id);
+u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 layer, u32 baseAddr, u32 szByte, BOOL isCompressed, u32 heap_id);
void GfGfxLoader_PartiallyLoadPalette(NarcId narcId, s32 memberId, NNS_G2D_VRAM_TYPE vramType, u32 baseAddr, u32 heap_id, NNSG2dImagePaletteProxy * pPltProxy);
-u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy *pImgProxy);
-void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 whichRoutine, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy * pImageProxy);
+u32 GfGfxLoader_LoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 layer, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy *pImgProxy);
+void GfGfxLoader_SetObjCntFlagsAndLoadImageMapping(NarcId narcId, s32 memberId, BOOL isCompressed, u32 layer, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, u32 heap_id, NNSG2dImageProxy * pImageProxy);
void * GfGfxLoader_GetCharData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dCharacterData ** ppCharData, u32 heap_id);
void * GfGfxLoader_GetScrnData(NarcId narcId, s32 memberId, BOOL isCompressed, NNSG2dScreenData ** ppScrData, u32 heap_id);
void * GfGfxLoader_GetPlttData(NarcId narcId, s32 memberId, NNSG2dPaletteData ** ppPltData, u32 heap_id);
diff --git a/include/heap.h b/include/heap.h
index de1f5f18..36c747a7 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -2,36 +2,30 @@
#define POKEDIAMOND_HEAP_H
#include "global.h"
+#include "NNS_FND_expheap.h"
+#include "NNS_FND_allocator.h"
-struct UnkStruct_020166C8
+struct HeapParam
{
- void **unk00;
- void **unk04;
- void **unk08;
- u16 *unk0c;
- u8 *unk10;
- u16 unk14;
- u16 unk16;
- u16 unk18;
- u16 unk1a;
+ u32 size;
+ OSArenaId arena;
};
-
-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 InitHeapSystem(const struct HeapParam *templates, u32 nTemplates, u32 totalNumHeaps, u32 pre_size);
+s32 FindFirstAvailableHeapHandle();
+BOOL CreateHeap(u32 parent, u32 child, u32 size);
+BOOL CreateHeapAtEnd(u32 parent, u32 child, u32 size);
+BOOL CreateHeapInternal(u32 parent, u32 child, u32 size, s32 alignment);
+void DestroyHeap(u32 heap_id);
+void *AllocFromHeapInternal(NNSFndHeapHandle heap, u32 size, s32 alignment, u32 heap_id);
+void AllocFail();
void *AllocFromHeap(u32 heap_id, u32 size);
void *AllocFromHeapAtEnd(u32 heap_id, u32 size);
void FreeToHeap(void *ptr);
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);
+u32 GF_ExpHeap_FndGetTotalFreeSize(u32 heap_id);
+void GF_ExpHeap_FndInitAllocator(NNSFndAllocator * pAllocator, u32 heap_id, int alignment);
+void ReallocFromHeap(void *ptr, u32 newSize);
+BOOL GF_heap_c_dummy_return_true(u32 heap_id);
#endif //POKEDIAMOND_HEAP_H
diff --git a/include/list_menu_cursor.h b/include/list_menu_cursor.h
index e4a4b6b9..a2337e9a 100644
--- a/include/list_menu_cursor.h
+++ b/include/list_menu_cursor.h
@@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_LIST_MENU_CURSOR_H
#define POKEDIAMOND_LIST_MENU_CURSOR_H
-#include "unk_02016B94.h"
+#include "bg_window.h"
// TODO: Move to its own header, and fill it out
struct ListMenuCursor
diff --git a/include/mail_message.h b/include/mail_message.h
index 5772fdd3..c0ea2039 100644
--- a/include/mail_message.h
+++ b/include/mail_message.h
@@ -20,7 +20,7 @@ u32 MailMsg_NumFields(u16 bank, u16 num);
u16 MailMsg_GetFieldI(struct MailMessage * mailMsg, u32 a1);
u16 MailMsg_GetMsgBank(struct MailMessage * mailMsg);
u16 MailMsg_GetMsgNo(struct MailMessage * mailMsg);
-BOOL MailMsg_compare(struct MailMessage * mailMsg, struct MailMessage * a1);
+BOOL MailMsg_compare(const struct MailMessage *mailMsg, const struct MailMessage *a1);
void MailMsg_copy(struct MailMessage * mailMsg, const struct MailMessage * a1);
u32 MailMsg_NumMsgsInBank(u16 bank);
void MailMsg_SetMsgBankAndNum(struct MailMessage * mailMsg, u16 bank, u16 num);
diff --git a/include/main.h b/include/main.h
index 9227d9a8..ba4d7bc2 100644
--- a/include/main.h
+++ b/include/main.h
@@ -79,26 +79,26 @@ struct Main
s32 unk28;
u32 unk2C;
s32 unk30;
- u32 unk34;
- u32 unk38;
- u32 unk3C;
- u32 unk40;
- u32 unk44;
+ u32 buttonMode;
+ u32 heldKeysRaw;
+ u32 newKeysRaw;
+ u32 newAndRepeatedKeysRaw;
+ u32 heldKeys;
u32 newKeys;
u32 newAndRepeatedKeys;
- s32 unk50;
- s32 unk54;
- s32 unk58;
- u16 unk5C;
- u16 unk5E;
- u16 unk60;
- u16 unk62;
- u8 unk64;
+ s32 keyRepeatCounter;
+ s32 keyRepeatContinueDelay;
+ s32 keyRepeatStartDelay;
+ u16 touchX;
+ u16 touchY;
+ u16 touchNew;
+ u16 touchHeld;
+ u8 touchpadReadAuto;
u8 unk65;
u8 unk66;
u8 unk67;
- u8 unk68;
- u8 padding_69[3];
+ u8 softResetDisabled;
+ u8 padding_69[3]; // nice
s32 unk6C;
};
diff --git a/include/player_data.h b/include/player_data.h
index 5095ea61..132eb6ae 100644
--- a/include/player_data.h
+++ b/include/player_data.h
@@ -7,6 +7,12 @@
struct SaveBlock2;
+typedef enum
+{
+ Male = 0,
+ Female = 1
+} GenderEnum;
+
struct PlayerData
{
/* 0x00 */ u16 playerName[OT_NAME_LENGTH + 1];
@@ -51,8 +57,8 @@ struct String * PlayerProfile_GetPlayerName_NewString(struct PlayerData * data,
void PlayerProfile_SetTrainerID(struct PlayerData * data, u32 otid);
u32 PlayerProfile_GetTrainerID(struct PlayerData * data);
u16 PlayerProfile_GetTrainerID_VisibleHalf(struct PlayerData * data);
-void PlayerProfile_SetTrainerGender(struct PlayerData * data, u8 gender);
-u32 PlayerProfile_GetTrainerGender(struct PlayerData * data);
+void PlayerProfile_SetTrainerGender(struct PlayerData * data, GenderEnum gender);
+GenderEnum PlayerProfile_GetTrainerGender(struct PlayerData * data);
BOOL PlayerProfile_TestBadgeFlag(struct PlayerData * data, u32 badgeno);
void PlayerProfile_SetBadgeFlag(struct PlayerData * data, u32 badgeno);
u32 PlayerProfile_CountBadges(struct PlayerData * data);
diff --git a/include/render_text.h b/include/render_text.h
new file mode 100644
index 00000000..e3e0f4c8
--- /dev/null
+++ b/include/render_text.h
@@ -0,0 +1,48 @@
+#ifndef POKEDIAMOND_RENDER_TEXT_H
+#define POKEDIAMOND_RENDER_TEXT_H
+
+#include "global.h"
+#include "text.h"
+
+typedef struct
+{
+ u8 canABSpeedUpPrint : 1;
+ u8 useAlternateDownArrow : 1;
+ u8 autoScroll : 1;
+ u8 forceMidTextSpeed : 1;
+ u8 unk0_4 : 1;
+ u8 unk0_5 : 1;
+ u8 unk0_6 : 1;
+ u8 unk0_7 : 1;
+ u8 unk1;
+} TextFlags;
+
+struct TextPrinterSubStruct
+{
+ u8 glyphId : 4; // 0x14
+ u8 hasPrintBeenSpedUp : 1;
+ u8 unk : 3;
+ u8 downArrowDelay : 5;
+ u8 downArrowYPosIdx : 2;
+ u8 hasGlyphIdBeenSet : 1;
+ u8 autoScrollDelay : 8;
+};
+
+u32 RenderText(struct TextPrinter *printer);
+void FUN_02002840(u16 flag);
+void TextPrinterInitDownArrowCounters(struct TextPrinter *printer);
+void TextPrinterDrawDownArrow(struct TextPrinter *printer);
+void TextPrinterClearDownArrow(struct TextPrinter *printer);
+BOOL TextPrinterContinue(struct TextPrinter *printer);
+BOOL TextPrinterWaitAutoMode(struct TextPrinter *printer);
+BOOL TextPrinterWaitWithDownArrow(struct TextPrinter *printer);
+u8 TextPrinterWait(struct TextPrinter *printer);
+void TextFlags_SetCanABSpeedUpPrint(BOOL param0);
+void FUN_02002B7C(s32 param0);
+void FUN_02002BB8(u32 param0);
+u8 FUN_02002BD4();
+void FUN_02002BE4();
+u8 FUN_02002BF4();
+void FUN_02002C04();
+
+#endif // POKEDIAMOND_RENDER_TEXT_H
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 91cb306c..826b74d3 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -249,6 +249,42 @@ BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx);
//scrcmd_18.c
BOOL ScrCmd_GiveMon(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonSpecies(struct ScriptContext* ctx);
+BOOL ScrCmd_CheckPartyMonOTID(struct ScriptContext* ctx);
+BOOL ScrCmd_GiveEgg(struct ScriptContext* ctx);
+BOOL ScrCmd_SetPartyMonMove(struct ScriptContext* ctx);
+BOOL ScrCmd_PartyMonHasMove(struct ScriptContext* ctx);
+BOOL ScrCmd_FindPartyMonWithMove(struct ScriptContext* ctx);
+BOOL ScrCmd_SurvivePsn(struct ScriptContext* ctx);
+BOOL ScrCmd_CountPartyMonsAtOrBelowLevel(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonLevel(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonNature(struct ScriptContext* ctx);
+BOOL ScrCmd_FindPartyMonWithNature(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonFriendship(struct ScriptContext* ctx);
+BOOL ScrCmd_AddPartyMonFriendship(struct ScriptContext* ctx);
+BOOL ScrCmd_SubtractPartyMonFriendship(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonContestCondition(struct ScriptContext* ctx);
+BOOL ScrCmd_GetLeadingPartyMonSlot(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonTypes(struct ScriptContext* ctx);
+BOOL ScrCmd_CountPartyMons(struct ScriptContext* ctx);
+BOOL ScrCmd_CountPartyMons_OmitEggs(struct ScriptContext* ctx);
+BOOL ScrCmd_CountAvailablePartyMons_IgnoreSlot(struct ScriptContext* ctx);
+BOOL ScrCmd_CountAvailablePartyAndPCMons(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyEggCount(struct ScriptContext* ctx);
+BOOL ScrCmd_CheckPartyForPokerus(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonGender(struct ScriptContext* ctx);
+BOOL ScrCmd_CountPartyMonMoves(struct ScriptContext* ctx);
+BOOL ScrCmd_ForgetPartyMonMove(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonMove(struct ScriptContext* ctx);
+BOOL ScrCmd_GetPartyMonHeldItem(struct ScriptContext* ctx);
+BOOL ScrCmd_ResetPartyMonHeldItem(struct ScriptContext* ctx);
+BOOL ScrCmd_CheckPartyForSpecies(struct ScriptContext* ctx);
+BOOL ScrCmd_CountPartyMonRibbons(struct ScriptContext* ctx);
+BOOL ScrCmd_CountTotalPartyRibbons(struct ScriptContext* ctx);
+BOOL ScrCmd_PartyMonHasRibbon(struct ScriptContext* ctx);
+BOOL ScrCmd_GivePartyMonRibbon(struct ScriptContext* ctx);
+BOOL ScrCmd_CheckPartyForBadEgg(struct ScriptContext* ctx);
+BOOL ScrCmd_Unk00A0(struct ScriptContext* ctx);
//scrcmd_fossils.c
BOOL ScrCmd_CountFossils(struct ScriptContext* ctx);
diff --git a/include/script.h b/include/script.h
index 01bba305..75b65f90 100644
--- a/include/script.h
+++ b/include/script.h
@@ -4,7 +4,7 @@
#include "global.h"
#include "msgdata.h"
#include "save_block_2.h"
-#include "unk_02016B94.h"
+#include "bg_window.h"
struct ScriptContext;
@@ -28,7 +28,7 @@ struct UnkStruct_02046444
struct UnkSavStruct80
{
u8 padding[0x8];
- struct UnkStruct_02016B94_2 *unk08;
+ struct BgConfig *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 9a742545..b9f0e268 100644
--- a/include/script_buffers.h
+++ b/include/script_buffers.h
@@ -4,7 +4,7 @@
#include "pokemon.h"
#include "pokemon_storage_system.h"
#include "trainer_data.h"
-#include "unk_02016B94.h"
+#include "bg_window.h"
struct UnkStruct_0200AA80_sub_sub
{
diff --git a/include/text.h b/include/text.h
index c9984d75..034447c7 100644
--- a/include/text.h
+++ b/include/text.h
@@ -3,7 +3,7 @@
#include "global.h"
#include "font.h"
-#include "unk_02016B94.h"
+#include "bg_window.h"
#define CHAR_0 0x00A2
diff --git a/include/text_02054590.h b/include/text_02054590.h
index 77170e70..4d05260a 100644
--- a/include/text_02054590.h
+++ b/include/text_02054590.h
@@ -3,18 +3,18 @@
#include "global.h"
#include "options.h"
-#include "unk_02016B94.h"
+#include "bg_window.h"
#include "string16.h"
void FUN_02054590(u32 param0, u32 param1);
-void FUN_020545B8(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2);
+void FUN_020545B8(struct BgConfig *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);
+u16 DrawFieldMessage(struct Window * window, struct String *str, u8 fontId, u32 speed, u8 a4, s32 a5);
u8 FUN_020546C8(u32 param0);
-void FUN_020546E0(struct UnkStruct_02016B94_2 *param0, struct Window *param1, u32 param2, u32 param3);
+void FUN_020546E0(struct BgConfig *param0, struct Window *param1, u32 param2, u32 param3);
void FUN_02054744(struct Window *param0, u32 param1, u32 param2);
#endif // POKEDIAMOND_UNK_02054590_H
diff --git a/include/timer3.h b/include/timer3.h
index 3220c7a3..a49cf3e6 100644
--- a/include/timer3.h
+++ b/include/timer3.h
@@ -4,12 +4,6 @@
#include "global.h"
-struct Timer3Data
-{
- BOOL NeedReset;
- vu64 Timer3Counter;
-};
-
void Init_Timer3();
void CountUpTimer3();
u64 internal_GetTimer3Count();
diff --git a/include/unk_02016B94.h b/include/unk_02016B94.h
deleted file mode 100644
index fec45cd8..00000000
--- a/include/unk_02016B94.h
+++ /dev/null
@@ -1,340 +0,0 @@
-#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, u8 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_0201B8B8.h b/include/unk_0201B8B8.h
index 13bc217b..26dd8017 100644
--- a/include/unk_0201B8B8.h
+++ b/include/unk_0201B8B8.h
@@ -2,8 +2,8 @@
#define POKEDIAMOND_UNK_0201B8B88_H
const u16 * MsgArray_SkipControlCode(const u16 * r4);
-u16 MsgArray_GetControlCode(const u16 * r4);
+u32 MsgArray_GetControlCode(const u16 * r4);
BOOL MsgArray_ControlCodeIsStrVar(const u16 * r4);
-u16 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4);
+u32 MsgArray_ControlCodeGetField(const u16 * r5, u32 r4);
#endif //POKEDIAMOND_UNK_0201B8B88_H
diff --git a/include/unk_0205EC84.h b/include/unk_0205EC84.h
new file mode 100644
index 00000000..0cbf6f77
--- /dev/null
+++ b/include/unk_0205EC84.h
@@ -0,0 +1,58 @@
+#ifndef POKEDIAMOND_UNK_0205EC84_H
+#define POKEDIAMOND_UNK_0205EC84_H
+
+#include "event_data.h"
+
+void FUN_0205ECD4(struct ScriptState * state);
+BOOL FUN_0205ECE0(struct ScriptState * state);
+BOOL FUN_0205ECEC(struct ScriptState * state);
+void FUN_0205ECFC(struct ScriptState * state);
+BOOL FUN_0205ED0C(struct ScriptState * state);
+void FUN_0205ED1C(struct ScriptState * state);
+void FUN_0205ED2C(struct ScriptState * state);
+BOOL FUN_0205ED3C(struct ScriptState * state);
+void FUN_0205ED4C(struct ScriptState * state);
+void FUN_0205ED5C(struct ScriptState * state);
+BOOL FUN_0205ED6C(struct ScriptState * state);
+void FUN_0205ED7C(struct ScriptState * state);
+void FUN_0205ED8C(struct ScriptState * state);
+BOOL FUN_0205ED9C(struct ScriptState * state);
+void FUN_0205EDAC(struct ScriptState * state);
+void FUN_0205EDBC(struct ScriptState * state);
+void FUN_0205EDCC(struct ScriptState * state);
+void FUN_0205EDD8(struct ScriptState * state);
+void FUN_0205EDE8(struct ScriptState * state);
+void FUN_0205EDF8(struct ScriptState * state);
+void FUN_0205EE08(struct ScriptState * state, u32 a1);
+BOOL FUN_0205EE60(struct ScriptState * state, u32 a1);
+BOOL FUN_0205EEB8(struct ScriptState * state, u32 a1);
+s32 FUN_0205EF20(struct ScriptState * state, s32 a1);
+void FUN_0205F154(struct ScriptState * state);
+void FUN_0205F164(struct ScriptState * state);
+BOOL FUN_0205F174(struct ScriptState * state);
+BOOL FUN_0205F184(struct ScriptState * state);
+BOOL FUN_0205F194(struct ScriptState * state);
+BOOL FUN_0205F1A4(struct ScriptState * state);
+BOOL FUN_0205F1B4(struct ScriptState * state);
+void FUN_0205F1C4(struct ScriptState * state);
+void FUN_0205F1D4(struct ScriptState * state);
+BOOL FUN_0205F1E4(struct ScriptState * state);
+void FUN_0205F1F4(struct ScriptState * state);
+void FUN_0205F204(struct ScriptState * state);
+BOOL FUN_0205F214(struct ScriptState * state);
+void FUN_0205F224(struct ScriptState * state);
+void FUN_0205F234(struct ScriptState * state);
+BOOL FUN_0205F244(struct ScriptState * state);
+void FUN_0205F254(struct ScriptState * state);
+BOOL FUN_0205F264(struct ScriptState * state, u32 op);
+void FUN_0205F274(struct ScriptState * state);
+void FUN_0205F284(struct ScriptState * state);
+BOOL FUN_0205F294(struct ScriptState * state);
+void FUN_0205F2A4(struct ScriptState * state);
+void FUN_0205F2B4(struct ScriptState * state);
+BOOL FUN_0205F2C4(struct ScriptState * state);
+BOOL FUN_0205F2D4(struct ScriptState * state, u32 op);
+BOOL FUN_0205F2E4(struct ScriptState * state, u32 op, u16 flag_id);
+void FUN_0205F304(struct ScriptState * state);
+
+#endif //POKEDIAMOND_UNK_0205EC84_H
diff --git a/include/unk_020851B8.h b/include/unk_020851B8.h
new file mode 100644
index 00000000..334ba4c8
--- /dev/null
+++ b/include/unk_020851B8.h
@@ -0,0 +1,19 @@
+#ifndef POKEDIAMOND_UNK_020851B8_H
+#define POKEDIAMOND_UNK_020851B8_H
+
+struct UnkStruct_020851B8 {
+ u32 flags[2];
+ u8 unk_8;
+ u8 unk_9;
+ u8 unk_A;
+ u8 unk_B;
+};
+
+struct UnkStruct_020851B8 *FUN_020851B8(u32 heap_id);
+void FUN_020851DC(struct UnkStruct_020851B8 *param0, u16 param1, BOOL param2);
+void FUN_020851F8(struct UnkStruct_020851B8 *param0, u8 param1, u8 param2, u8 param3);
+void FUN_02085200(struct UnkStruct_020851B8 *param0, u16 param1);
+u8 FUN_02085224(struct UnkStruct_020851B8 *param0, u16 param1);
+void FUN_0208524C(struct UnkStruct_020851B8 *param0, u8 *param1, u8 *param2);
+
+#endif // POKEDIAMOND_UNK_020851B8_H
diff --git a/include/unk_02085338.h b/include/unk_02085338.h
new file mode 100644
index 00000000..0517bf26
--- /dev/null
+++ b/include/unk_02085338.h
@@ -0,0 +1,47 @@
+#ifndef POKEDIAMOND_UNK_02085338_H
+#define POKEDIAMOND_UNK_02085338_H
+
+#include "save_block_2.h"
+#include "pokedex.h"
+#include "unk_020139D8.h"
+
+struct UnkStruct_02085338
+{
+ u8 unk_00;
+ u8 unk_01;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04;
+ u8 unk_05;
+ u32 unk_08;
+ struct Pokedex * unk_0c;
+ struct UnkStruct_02013B28 * unk_10;
+ struct MailMessage unk_14;
+ u16 unk_1c[2];
+ u8 padding_20[4];
+};
+
+struct UnkStruct_02085338 * FUN_02085338(u8 r5, u8 r7, struct SaveBlock2 * sav2, u32 heap_id);
+void FUN_020853A8(struct UnkStruct_02085338 * ptr);
+void FUN_020853B0(struct UnkStruct_02085338 * ptr, u16 a1);
+void FUN_020853B4(struct UnkStruct_02085338 * ptr, u16 a1, u16 a2);
+void FUN_020853BC(struct UnkStruct_02085338 * ptr, const struct MailMessage * a1);
+void FUN_020853D0(struct UnkStruct_02085338 * ptr);
+void FUN_020853DC(struct UnkStruct_02085338 * ptr);
+u8 FUN_020853E4(struct UnkStruct_02085338 * ptr);
+u8 FUN_020853E8(struct UnkStruct_02085338 * ptr);
+u16 FUN_020853EC(struct UnkStruct_02085338 * ptr);
+void FUN_020853F0(struct UnkStruct_02085338 * ptr, u16 * a1);
+void FUN_020853FC(struct UnkStruct_02085338 * ptr, struct MailMessage * a1);
+u8 FUN_0208540C(struct UnkStruct_02085338 * ptr);
+u8 FUN_02085410(struct UnkStruct_02085338 * ptr);
+u32 FUN_02085414(struct UnkStruct_02085338 * ptr);
+struct Pokedex * FUN_02085418(struct UnkStruct_02085338 * ptr);
+struct UnkStruct_02013B28 * FUN_0208541C(struct UnkStruct_02085338 * ptr);
+u8 FUN_02085420(struct UnkStruct_02085338 * ptr);
+u8 FUN_02085424(struct UnkStruct_02085338 * ptr);
+void FUN_02085428(struct UnkStruct_02085338 * ptr, u16 * a1, struct MailMessage * a2);
+BOOL FUN_0208545C(struct UnkStruct_02085338 * ptr, const u16 * a1, const struct MailMessage * a2);
+void FUN_020854A0(struct UnkStruct_02085338 * r5, u16 * r4, struct MailMessage * r6);
+
+#endif //POKEDIAMOND_UNK_02085338_H
diff --git a/include/unk_02088AAC.h b/include/unk_02088AAC.h
new file mode 100644
index 00000000..d4d7cf3e
--- /dev/null
+++ b/include/unk_02088AAC.h
@@ -0,0 +1,31 @@
+#ifndef POKEDIAMOND_UNK_02088AAC_H
+#define POKEDIAMOND_UNK_02088AAC_H
+
+#include "bag.h"
+#include "main.h"
+#include "unk_0208890C.h"
+
+struct UnkStruct_02088AAC
+{
+ u32 heap_id;
+ u16 unk04;
+ u16 unk06;
+ u32 item;
+ struct UnkStruct_0206F164 *unk0C;
+ struct UnkStruct_0208890C *unk10;
+ u32 unk14;
+ void *ovly_param;
+ struct UnkStruct_02006234 *ovly_data;
+ u32 unk20;
+};
+
+u32 FUN_02088AAC(struct UnkStruct_02088AAC *r0, u32 *r1);
+u32 FUN_02088AFC(struct UnkStruct_02088AAC *r0);
+u32 FUN_02088B28(struct UnkStruct_02088AAC *r0);
+u32 FUN_02088B48(void);
+u32 FUN_02088B4C(struct UnkStruct_02088AAC *r0);
+u32 FUN_02088BA8(struct UnkStruct_02088AAC *r0);
+u32 FUN_02088C3C(struct UnkStruct_02088AAC *r0);
+u32 FUN_02088CDC(struct UnkStruct_02088AAC *r0);
+
+#endif // POKEDIAMOND_UNK_02088AAC_H