summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-07-25 13:23:02 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-07-25 13:23:02 -0400
commit5e0e326b75402a36c4d31502b8b5a05b862ac23c (patch)
tree1b5807c1efb72dbdd9d01f329cefb41171913a64
parent1f9d4503c898f9138422215132b53224571a281a (diff)
parent68d7aa47cc52ef822220e0e35890863d7cad479f (diff)
Merge remote-tracking branch 'origin/master' into pikalax_work
-rw-r--r--.github/calcrom/calcrom.cpp2
-rw-r--r--Makefile6
-rw-r--r--arm7/lib/include/SND_alarm.h12
-rw-r--r--arm7/lib/include/SND_exChannel.h8
-rw-r--r--arm7/lib/include/SND_work.h4
-rw-r--r--arm9/CMakeLists.txt2
-rw-r--r--arm9/Makefile10
-rw-r--r--arm9/arm9.lsf160
-rw-r--r--arm9/asm/MSL_Common_arith.s11
-rw-r--r--arm9/asm/WM_ks.s26
-rw-r--r--arm9/asm/scrcmd_10.s26
-rw-r--r--arm9/asm/scrcmd_asm.s169
-rw-r--r--arm9/asm/unk_020030E8.s1424
-rw-r--r--arm9/asm/unk_020040F4.s2288
-rw-r--r--arm9/asm/unk_020051F4.s1319
-rw-r--r--arm9/asm/unk_02005CFC.s6
-rw-r--r--arm9/asm/unk_020061E8.s45
-rw-r--r--arm9/asm/unk_02006D98.s4
-rw-r--r--arm9/asm/unk_020142EC.s6
-rw-r--r--arm9/asm/unk_020144FC.s2
-rw-r--r--arm9/asm/unk_0201C6B4.s148
-rw-r--r--arm9/asm/unk_020222E8.s46
-rw-r--r--arm9/asm/unk_02022450.s94
-rw-r--r--arm9/asm/unk_0202A1E0.s1053
-rw-r--r--arm9/asm/unk_02033F50.s266
-rw-r--r--arm9/asm/unk_02034188.s242
-rw-r--r--arm9/asm/unk_020343A8.s481
-rw-r--r--arm9/asm/unk_02035068.s4
-rw-r--r--arm9/asm/unk_020372D4.s4
-rw-r--r--arm9/asm/unk_020377F0.s4
-rw-r--r--arm9/asm/unk_02038C78.s2
-rw-r--r--arm9/asm/unk_020476CC.s4
-rw-r--r--arm9/asm/unk_02048904.s6
-rw-r--r--arm9/asm/unk_0204A368.s6
-rw-r--r--arm9/asm/unk_0204A498.s8
-rw-r--r--arm9/asm/unk_0204AF24.s248
-rw-r--r--arm9/asm/unk_0205CE48.s8
-rw-r--r--arm9/asm/unk_0205DD18.s2
-rw-r--r--arm9/asm/unk_0205F7A0.s4
-rw-r--r--arm9/asm/unk_0206367C.s2
-rw-r--r--arm9/asm/unk_02063948.s2
-rw-r--r--arm9/asm/unk_02064E20.s25
-rw-r--r--arm9/asm/unk_02066840.s14
-rw-r--r--arm9/asm/unk_0206C700.s26
-rw-r--r--arm9/asm/unk_0207550C.s2
-rw-r--r--arm9/asm/unk_020859C0.s16
-rw-r--r--arm9/asm/unk_02086084.s16
-rw-r--r--arm9/asm/unk_02086414.s10
-rw-r--r--arm9/asm/unk_02088DD8.s172
-rw-r--r--arm9/asm/unk_0208A338.s10
-rw-r--r--arm9/global.inc217
-rw-r--r--arm9/lib/Makefile18
-rw-r--r--arm9/lib/NitroSDK/Makefile80
-rw-r--r--arm9/lib/NitroSDK/include/CARD_backup.h (renamed from arm9/lib/include/CARD_backup.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CARD_common.h (renamed from arm9/lib/include/CARD_common.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CARD_pullOut.h (renamed from arm9/lib/include/CARD_pullOut.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CARD_request.h (renamed from arm9/lib/include/CARD_request.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CARD_rom.h (renamed from arm9/lib/include/CARD_rom.h)1
-rw-r--r--arm9/lib/NitroSDK/include/CARD_spi.h (renamed from arm9/lib/include/CARD_spi.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CP_context.h (renamed from arm9/lib/include/CP_context.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CTRDG_backup.h (renamed from arm9/lib/include/CTRDG_backup.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CTRDG_common.h (renamed from arm9/lib/include/CTRDG_common.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CTRDG_flash.h (renamed from arm9/lib/include/CTRDG_flash.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CTRDG_flash_AT29LV512.h (renamed from arm9/lib/include/CTRDG_flash_AT29LV512.h)0
-rw-r--r--arm9/lib/NitroSDK/include/CTRDG_task.h (renamed from arm9/lib/include/CTRDG_task.h)0
-rw-r--r--arm9/lib/NitroSDK/include/DGT_common.h (renamed from arm9/lib/include/DGT_common.h)0
-rw-r--r--arm9/lib/NitroSDK/include/DGT_dgt.h (renamed from arm9/lib/include/DGT_dgt.h)0
-rw-r--r--arm9/lib/NitroSDK/include/FS_archive.h (renamed from arm9/lib/include/FS_archive.h)0
-rw-r--r--arm9/lib/NitroSDK/include/FS_command.h (renamed from arm9/lib/include/FS_command.h)0
-rw-r--r--arm9/lib/NitroSDK/include/FS_command_default.h (renamed from arm9/lib/include/FS_command_default.h)0
-rw-r--r--arm9/lib/NitroSDK/include/FS_file.h (renamed from arm9/lib/include/FS_file.h)0
-rw-r--r--arm9/lib/NitroSDK/include/FS_mw_dtor.h (renamed from arm9/lib/include/FS_mw_dtor.h)0
-rw-r--r--arm9/lib/NitroSDK/include/FS_overlay.h (renamed from arm9/lib/include/FS_overlay.h)0
-rw-r--r--arm9/lib/NitroSDK/include/FS_rom.h (renamed from arm9/lib/include/FS_rom.h)0
-rw-r--r--arm9/lib/NitroSDK/include/FSi_util.h (renamed from arm9/lib/include/FSi_util.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_asm.h (renamed from arm9/lib/include/GX_asm.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_bgcnt.h (renamed from arm9/lib/include/GX_bgcnt.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_dma.h (renamed from arm9/lib/include/GX_dma.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_g2.h (renamed from arm9/lib/include/GX_g2.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_g3.h (renamed from arm9/lib/include/GX_g3.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_g3_util.h (renamed from arm9/lib/include/GX_g3_util.h)2
-rw-r--r--arm9/lib/NitroSDK/include/GX_g3b.h (renamed from arm9/lib/include/GX_g3b.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_g3imm.h (renamed from arm9/lib/include/GX_g3imm.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_g3x.h (renamed from arm9/lib/include/GX_g3x.h)2
-rw-r--r--arm9/lib/NitroSDK/include/GX_load2d.h (renamed from arm9/lib/include/GX_load2d.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_load3d.h (renamed from arm9/lib/include/GX_load3d.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_state.h (renamed from arm9/lib/include/GX_state.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_struct_2d.h (renamed from arm9/lib/include/GX_struct_2d.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GX_vramcnt.h (renamed from arm9/lib/include/GX_vramcnt.h)0
-rw-r--r--arm9/lib/NitroSDK/include/GXcommon.h (renamed from arm9/lib/include/GXcommon.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MATH_crc.h (renamed from arm9/lib/include/MATH_crc.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MATH_dgt.h (renamed from arm9/lib/include/MATH_dgt.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MATH_pop.h (renamed from arm9/lib/include/MATH_pop.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MB_mb.h (renamed from arm9/lib/include/MB_mb.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_byteAccess.h (renamed from arm9/lib/include/MI_byteAccess.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_dma.h (renamed from arm9/lib/include/MI_dma.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_dma_card.h (renamed from arm9/lib/include/MI_dma_card.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_dma_gxcommand.h (renamed from arm9/lib/include/MI_dma_gxcommand.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_dma_hblank.h (renamed from arm9/lib/include/MI_dma_hblank.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_exMemory.h (renamed from arm9/lib/include/MI_exMemory.h)2
-rw-r--r--arm9/lib/NitroSDK/include/MI_init.h (renamed from arm9/lib/include/MI_init.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_memory.h (renamed from arm9/lib/include/MI_memory.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_swap.h (renamed from arm9/lib/include/MI_swap.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_uncompress.h (renamed from arm9/lib/include/MI_uncompress.h)0
-rw-r--r--arm9/lib/NitroSDK/include/MI_wram.h (renamed from arm9/lib/include/MI_wram.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_alarm.h (renamed from arm9/lib/include/OS_alarm.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_alloc.h (renamed from arm9/lib/include/OS_alloc.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_arena.h (renamed from arm9/lib/include/OS_arena.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_cache.h (renamed from arm9/lib/include/OS_cache.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_context.h (renamed from arm9/lib/include/OS_context.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_emulator.h (renamed from arm9/lib/include/OS_emulator.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_entropy.h (renamed from arm9/lib/include/OS_entropy.h)3
-rw-r--r--arm9/lib/NitroSDK/include/OS_exception.h (renamed from arm9/lib/include/OS_exception.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_init.h (renamed from arm9/lib/include/OS_init.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_interrupt.h (renamed from arm9/lib/include/OS_interrupt.h)2
-rw-r--r--arm9/lib/NitroSDK/include/OS_irqHandler.h (renamed from arm9/lib/include/OS_irqHandler.h)2
-rw-r--r--arm9/lib/NitroSDK/include/OS_irqTable.h (renamed from arm9/lib/include/OS_irqTable.h)2
-rw-r--r--arm9/lib/NitroSDK/include/OS_message.h (renamed from arm9/lib/include/OS_message.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_mutex.h (renamed from arm9/lib/include/OS_mutex.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_ownerInfo.h (renamed from arm9/lib/include/OS_ownerInfo.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_printf.h (renamed from arm9/lib/include/OS_printf.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_protectionRegion.h (renamed from arm9/lib/include/OS_protectionRegion.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_protectionUnit.h (renamed from arm9/lib/include/OS_protectionUnit.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_reset.h (renamed from arm9/lib/include/OS_reset.h)3
-rw-r--r--arm9/lib/NitroSDK/include/OS_spinLock.h (renamed from arm9/lib/include/OS_spinLock.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_system.h (renamed from arm9/lib/include/OS_system.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_tcm.h (renamed from arm9/lib/include/OS_tcm.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_terminate_proc.h (renamed from arm9/lib/include/OS_terminate_proc.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_thread.h (renamed from arm9/lib/include/OS_thread.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_tick.h (renamed from arm9/lib/include/OS_tick.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_timer.h (renamed from arm9/lib/include/OS_timer.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_valarm.h (renamed from arm9/lib/include/OS_valarm.h)0
-rw-r--r--arm9/lib/NitroSDK/include/OS_vramExclusive.h (renamed from arm9/lib/include/OS_vramExclusive.h)0
-rw-r--r--arm9/lib/NitroSDK/include/PAD_pad.h (renamed from arm9/lib/include/PAD_pad.h)2
-rw-r--r--arm9/lib/NitroSDK/include/PXI_fifo.h (renamed from arm9/lib/include/PXI_fifo.h)0
-rw-r--r--arm9/lib/NitroSDK/include/PXI_init.h (renamed from arm9/lib/include/PXI_init.h)0
-rw-r--r--arm9/lib/NitroSDK/include/RTC_api.h (renamed from arm9/lib/include/RTC_api.h)0
-rw-r--r--arm9/lib/NitroSDK/include/RTC_convert.h (renamed from arm9/lib/include/RTC_convert.h)0
-rw-r--r--arm9/lib/NitroSDK/include/RTC_internal.h (renamed from arm9/lib/include/RTC_internal.h)0
-rw-r--r--arm9/lib/NitroSDK/include/SND_alarm.h (renamed from arm9/lib/include/SND_alarm.h)13
-rw-r--r--arm9/lib/NitroSDK/include/SND_bank.h (renamed from arm9/lib/include/SND_bank.h)0
-rw-r--r--arm9/lib/NitroSDK/include/SND_command.h (renamed from arm9/lib/include/SND_command.h)0
-rw-r--r--arm9/lib/NitroSDK/include/SND_interface.h (renamed from arm9/lib/include/SND_interface.h)1
-rw-r--r--arm9/lib/NitroSDK/include/SND_main.h26
-rw-r--r--arm9/lib/NitroSDK/include/SND_util.h (renamed from arm9/lib/include/SND_util.h)0
-rw-r--r--arm9/lib/NitroSDK/include/SND_work.h (renamed from arm9/lib/include/SND_work.h)26
-rw-r--r--arm9/lib/NitroSDK/include/SPI_mic.h (renamed from arm9/lib/include/SPI_mic.h)0
-rw-r--r--arm9/lib/NitroSDK/include/SPI_pm.h (renamed from arm9/lib/include/SPI_pm.h)0
-rw-r--r--arm9/lib/NitroSDK/include/WM.h61
-rw-r--r--arm9/lib/NitroSDK/include/WM_ks.h9
-rw-r--r--arm9/lib/NitroSDK/include/consts.h (renamed from arm9/lib/include/consts.h)3
-rw-r--r--arm9/lib/NitroSDK/include/custom_allocator.h (renamed from arm9/lib/include/custom_allocator.h)0
-rw-r--r--arm9/lib/NitroSDK/include/dgt.h (renamed from arm9/lib/include/dgt.h)0
-rw-r--r--arm9/lib/NitroSDK/include/fx.h (renamed from arm9/lib/include/fx.h)2
-rw-r--r--arm9/lib/NitroSDK/include/gx.h (renamed from arm9/lib/include/gx.h)0
-rw-r--r--arm9/lib/NitroSDK/include/math.h (renamed from arm9/lib/include/math.h)0
-rw-r--r--arm9/lib/NitroSDK/include/mmap.h (renamed from arm9/lib/include/mmap.h)0
-rw-r--r--arm9/lib/NitroSDK/include/nitro.h (renamed from arm9/lib/include/nitro.h)0
-rw-r--r--arm9/lib/NitroSDK/include/registers.h (renamed from arm9/lib/include/registers.h)0
-rw-r--r--arm9/lib/NitroSDK/include/syscall.h (renamed from arm9/lib/include/syscall.h)0
-rw-r--r--arm9/lib/NitroSDK/include/systemWork.h (renamed from arm9/lib/include/systemWork.h)1
-rw-r--r--arm9/lib/NitroSDK/include/tp.h (renamed from arm9/lib/include/tp.h)0
-rw-r--r--arm9/lib/NitroSDK/include/userInfo.h (renamed from arm9/lib/include/userInfo.h)0
-rw-r--r--arm9/lib/NitroSDK/src/CARD_backup.c (renamed from arm9/lib/src/CARD_backup.c)0
-rw-r--r--arm9/lib/NitroSDK/src/CARD_common.c (renamed from arm9/lib/src/CARD_common.c)1
-rw-r--r--arm9/lib/NitroSDK/src/CARD_pullOut.c (renamed from arm9/lib/src/CARD_pullOut.c)1
-rw-r--r--arm9/lib/NitroSDK/src/CARD_request.c (renamed from arm9/lib/src/CARD_request.c)0
-rw-r--r--arm9/lib/NitroSDK/src/CARD_rom.c (renamed from arm9/lib/src/CARD_rom.c)0
-rw-r--r--arm9/lib/NitroSDK/src/CARD_spi.c (renamed from arm9/lib/src/CARD_spi.c)0
-rw-r--r--arm9/lib/NitroSDK/src/CP_context.c (renamed from arm9/lib/src/CP_context.c)2
-rw-r--r--arm9/lib/NitroSDK/src/CTRDG_backup.c (renamed from arm9/lib/src/CTRDG_backup.c)0
-rw-r--r--arm9/lib/NitroSDK/src/CTRDG_common.c (renamed from arm9/lib/src/CTRDG_common.c)1
-rw-r--r--arm9/lib/NitroSDK/src/CTRDG_flash_AT29LV512.c (renamed from arm9/lib/src/CTRDG_flash_AT29LV512.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FS_archive.c (renamed from arm9/lib/src/FS_archive.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FS_command.c (renamed from arm9/lib/src/FS_command.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FS_command_default.c (renamed from arm9/lib/src/FS_command_default.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FS_file.c (renamed from arm9/lib/src/FS_file.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FS_overlay.c (renamed from arm9/lib/src/FS_overlay.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FS_rom.c (renamed from arm9/lib/src/FS_rom.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FX.c (renamed from arm9/lib/src/FX.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FX_atan.c (renamed from arm9/lib/src/FX_atan.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FX_cp.c (renamed from arm9/lib/src/FX_cp.c)4
-rw-r--r--arm9/lib/NitroSDK/src/FX_mtx22.c (renamed from arm9/lib/src/FX_mtx22.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FX_mtx33.c (renamed from arm9/lib/src/FX_mtx33.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FX_mtx43.c (renamed from arm9/lib/src/FX_mtx43.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FX_mtx44.c (renamed from arm9/lib/src/FX_mtx44.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FX_sincos.c (renamed from arm9/lib/src/FX_sincos.c)0
-rw-r--r--arm9/lib/NitroSDK/src/FX_vec.c (renamed from arm9/lib/src/FX_vec.c)3
-rw-r--r--arm9/lib/NitroSDK/src/GX.c (renamed from arm9/lib/src/GX.c)5
-rw-r--r--arm9/lib/NitroSDK/src/GX_asm.c (renamed from arm9/lib/src/GX_asm.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_bgcnt.c (renamed from arm9/lib/src/GX_bgcnt.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_g2.c (renamed from arm9/lib/src/GX_g2.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_g3.c (renamed from arm9/lib/src/GX_g3.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_g3_util.c (renamed from arm9/lib/src/GX_g3_util.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_g3b.c (renamed from arm9/lib/src/GX_g3b.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_g3imm.c (renamed from arm9/lib/src/GX_g3imm.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_g3x.c (renamed from arm9/lib/src/GX_g3x.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_load2d.c (renamed from arm9/lib/src/GX_load2d.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_load3d.c (renamed from arm9/lib/src/GX_load3d.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_state.c (renamed from arm9/lib/src/GX_state.c)0
-rw-r--r--arm9/lib/NitroSDK/src/GX_vramcnt.c (renamed from arm9/lib/src/GX_vramcnt.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MATH_crc.c (renamed from arm9/lib/src/MATH_crc.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MATH_dgt.c (renamed from arm9/lib/src/MATH_dgt.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MATH_pop.c (renamed from arm9/lib/src/MATH_pop.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_dma.c (renamed from arm9/lib/src/MI_dma.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_dma_card.c (renamed from arm9/lib/src/MI_dma_card.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_dma_gxcommand.c (renamed from arm9/lib/src/MI_dma_gxcommand.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_dma_hblank.c (renamed from arm9/lib/src/MI_dma_hblank.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_init.c (renamed from arm9/lib/src/MI_init.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_memory.c (renamed from arm9/lib/src/MI_memory.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_swap.c (renamed from arm9/lib/src/MI_swap.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_uncompress.c (renamed from arm9/lib/src/MI_uncompress.c)0
-rw-r--r--arm9/lib/NitroSDK/src/MI_wram.c (renamed from arm9/lib/src/MI_wram.c)5
-rw-r--r--arm9/lib/NitroSDK/src/OS_alarm.c (renamed from arm9/lib/src/OS_alarm.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_alloc.c (renamed from arm9/lib/src/OS_alloc.c)334
-rw-r--r--arm9/lib/NitroSDK/src/OS_arena.c (renamed from arm9/lib/src/OS_arena.c)335
-rw-r--r--arm9/lib/NitroSDK/src/OS_cache.c (renamed from arm9/lib/src/OS_cache.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_context.c (renamed from arm9/lib/src/OS_context.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_emulator.c (renamed from arm9/lib/src/OS_emulator.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_entropy.c (renamed from arm9/lib/src/OS_entropy.c)7
-rw-r--r--arm9/lib/NitroSDK/src/OS_exception.c (renamed from arm9/lib/src/OS_exception.c)4
-rw-r--r--arm9/lib/NitroSDK/src/OS_init.c (renamed from arm9/lib/src/OS_init.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_interrupt.c (renamed from arm9/lib/src/OS_interrupt.c)6
-rw-r--r--arm9/lib/NitroSDK/src/OS_irqHandler.c (renamed from arm9/lib/src/OS_irqHandler.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_irqTable.c (renamed from arm9/lib/src/OS_irqTable.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_message.c (renamed from arm9/lib/src/OS_message.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_mutex.c (renamed from arm9/lib/src/OS_mutex.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_ownerInfo.c (renamed from arm9/lib/src/OS_ownerInfo.c)4
-rw-r--r--arm9/lib/NitroSDK/src/OS_printf.c (renamed from arm9/lib/src/OS_printf.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_protectionRegion.c (renamed from arm9/lib/src/OS_protectionRegion.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_protectionUnit.c (renamed from arm9/lib/src/OS_protectionUnit.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_reset.c (renamed from arm9/lib/src/OS_reset.c)3
-rw-r--r--arm9/lib/NitroSDK/src/OS_spinLock.c (renamed from arm9/lib/src/OS_spinLock.c)3
-rw-r--r--arm9/lib/NitroSDK/src/OS_system.c (renamed from arm9/lib/src/OS_system.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_tcm.c (renamed from arm9/lib/src/OS_tcm.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_terminate_proc.c (renamed from arm9/lib/src/OS_terminate_proc.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_thread.c (renamed from arm9/lib/src/OS_thread.c)3
-rw-r--r--arm9/lib/NitroSDK/src/OS_tick.c (renamed from arm9/lib/src/OS_tick.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_timer.c (renamed from arm9/lib/src/OS_timer.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_valarm.c (renamed from arm9/lib/src/OS_valarm.c)0
-rw-r--r--arm9/lib/NitroSDK/src/OS_vramExclusive.c (renamed from arm9/lib/src/OS_vramExclusive.c)0
-rw-r--r--arm9/lib/NitroSDK/src/PXI_fifo.c (renamed from arm9/lib/src/PXI_fifo.c)0
-rw-r--r--arm9/lib/NitroSDK/src/PXI_init.c (renamed from arm9/lib/src/PXI_init.c)0
-rw-r--r--arm9/lib/NitroSDK/src/RTC_convert.c (renamed from arm9/lib/src/RTC_convert.c)0
-rw-r--r--arm9/lib/NitroSDK/src/RTC_internal.c (renamed from arm9/lib/src/RTC_internal.c)0
-rw-r--r--arm9/lib/NitroSDK/src/SND_alarm.c (renamed from arm9/lib/src/SND_alarm.c)0
-rw-r--r--arm9/lib/NitroSDK/src/SND_bank.c (renamed from arm9/lib/src/SND_bank.c)0
-rw-r--r--arm9/lib/NitroSDK/src/SND_command.c (renamed from arm9/lib/src/SND_command.c)3
-rw-r--r--arm9/lib/NitroSDK/src/SND_interface.c (renamed from arm9/lib/src/SND_interface.c)0
-rw-r--r--arm9/lib/NitroSDK/src/SND_main.c (renamed from arm9/lib/src/SND_main.c)0
-rw-r--r--arm9/lib/NitroSDK/src/SND_util.c (renamed from arm9/lib/src/SND_util.c)0
-rw-r--r--arm9/lib/NitroSDK/src/SND_work.c (renamed from arm9/lib/src/SND_work.c)0
-rw-r--r--arm9/lib/NitroSDK/src/WM_ks.c15
-rw-r--r--arm9/lib/NitroSDK/src/crt0.c (renamed from arm9/lib/src/crt0.c)0
-rw-r--r--arm9/lib/NitroSDK/src/custom_allocator.c (renamed from arm9/lib/src/custom_allocator.c)4
-rw-r--r--arm9/lib/NitroSDK/src/version_1_dwc.c (renamed from arm9/lib/src/version_1_dwc.c)0
-rw-r--r--arm9/lib/NitroSDK/src/version_2_wifi.c (renamed from arm9/lib/src/version_2_wifi.c)0
-rw-r--r--arm9/lib/NitroSDK/src/version_3_cps.c (renamed from arm9/lib/src/version_3_cps.c)0
-rw-r--r--arm9/lib/NitroSDK/src/version_4_ssl.c (renamed from arm9/lib/src/version_4_ssl.c)0
-rw-r--r--arm9/lib/NitroSDK/src/version_5_vct.c (renamed from arm9/lib/src/version_5_vct.c)0
-rw-r--r--arm9/lib/NitroSDK/src/version_6_backup.c (renamed from arm9/lib/src/version_6_backup.c)0
-rw-r--r--arm9/lib/libc/Makefile80
-rw-r--r--arm9/lib/libc/include/MSL.h8
-rw-r--r--arm9/lib/libc/include/MSL_Common_arith.h8
-rw-r--r--arm9/lib/libc/src/MSL_Common_arith.c7
-rw-r--r--arm9/lib/libnns/Makefile81
-rw-r--r--arm9/lib/libnns/include/NNS_FND_allocator.h (renamed from arm9/lib/include/NNS_FND_allocator.h)68
-rw-r--r--arm9/lib/libnns/include/NNS_FND_expheap.h (renamed from arm9/lib/include/NNS_FND_expheap.h)110
-rw-r--r--arm9/lib/libnns/include/NNS_FND_heapcommon.h (renamed from arm9/lib/include/NNS_FND_heapcommon.h)52
-rw-r--r--arm9/lib/libnns/include/NNS_FND_list.h (renamed from arm9/lib/include/NNS_FND_list.h)40
-rw-r--r--arm9/lib/libnns/include/NNS_SND_arc.h (renamed from arm9/lib/include/NNS_SND_arc.h)3
-rw-r--r--arm9/lib/libnns/include/NNS_SND_arc_loader.h (renamed from arm9/lib/include/NNS_SND_arc_loader.h)24
-rw-r--r--arm9/lib/libnns/include/NNS_SND_heap.h (renamed from arm9/lib/include/NNS_SND_heap.h)22
-rw-r--r--arm9/lib/libnns/include/NNS_g2d.h (renamed from arm9/lib/include/NNS_g2d.h)424
-rw-r--r--arm9/lib/libnns/src/.gitkeep0
-rw-r--r--arm9/modules/05/asm/mod05_021D74E0.s4
-rw-r--r--arm9/modules/05/asm/mod05_021D80E8.s8
-rw-r--r--arm9/modules/05/asm/mod05_021E1AD8.s4
-rw-r--r--arm9/modules/05/asm/mod05_021E3444.s2
-rw-r--r--arm9/modules/05/asm/module_05.s20
-rw-r--r--arm9/modules/06/asm/module_06.s152
-rw-r--r--arm9/modules/06/include/module_06.h28
-rw-r--r--arm9/modules/07/asm/module_07.s6
-rw-r--r--arm9/modules/08/asm/module_08.s48
-rw-r--r--arm9/modules/09/asm/module_09.s26
-rw-r--r--arm9/modules/11/asm/module_11_thumb1.s44
-rw-r--r--arm9/modules/11/asm/module_11_thumb2.s56
-rw-r--r--arm9/modules/12/asm/module_12.s170
-rw-r--r--arm9/modules/16/asm/module_16.s30
-rw-r--r--arm9/modules/18/asm/module_18.s8
-rw-r--r--arm9/modules/19/src/module_19.c94
-rw-r--r--arm9/modules/21/src/mod21_02254854.c2
-rw-r--r--arm9/modules/21/src/mod21_02254A6C.c4
-rw-r--r--arm9/modules/26/asm/mod26_02254854.s (renamed from arm9/modules/26/asm/module_26.s)299
-rw-r--r--arm9/modules/26/asm/mod26_02254BD4.s305
-rw-r--r--arm9/modules/33/asm/mod33_02254854.s (renamed from arm9/modules/33/asm/module_33.s)186
-rw-r--r--arm9/modules/33/asm/mod33_022549AC.s192
-rw-r--r--arm9/modules/42/asm/module_42.s4
-rw-r--r--arm9/modules/43/asm/module_43.s4
-rw-r--r--arm9/modules/44/asm/mod44_02254854.s297
-rw-r--r--arm9/modules/44/asm/mod44_02254A54.s (renamed from arm9/modules/44/asm/module_44.s)291
-rw-r--r--arm9/modules/46/asm/mod46_02254854.s (renamed from arm9/modules/46/asm/module_46.s)186
-rw-r--r--arm9/modules/46/asm/mod46_022549AC.s192
-rw-r--r--arm9/modules/50/asm/mod50_02254854.s213
-rw-r--r--arm9/modules/50/asm/mod50_022549AC.s (renamed from arm9/modules/50/asm/module_50.s)207
-rw-r--r--arm9/modules/54/asm/module_54.s2
-rw-r--r--arm9/modules/56/asm/module_56.s2
-rw-r--r--arm9/modules/57/asm/module_57.s10
-rw-r--r--arm9/modules/60/asm/module_60.s4
-rw-r--r--arm9/modules/61/asm/module_61.s32
-rw-r--r--arm9/modules/62/asm/module_62.s22
-rw-r--r--arm9/modules/63/include/mod63_021DB450.h6
-rw-r--r--arm9/modules/63/src/mod63_021DB450.c4
-rw-r--r--arm9/modules/66/asm/module_66.s8
-rw-r--r--arm9/modules/74/asm/module_74.s8
-rw-r--r--arm9/modules/80/asm/module_80.s2
-rw-r--r--arm9/modules/82/asm/module_82.s10
-rw-r--r--arm9/modules/83/asm/module_83.s2
-rw-r--r--arm9/src/bag_view.c5
-rw-r--r--arm9/src/communication_error.c159
-rw-r--r--arm9/src/font.c66
-rw-r--r--arm9/src/game_init.c15
-rw-r--r--arm9/src/main.c13
-rw-r--r--arm9/src/map_header.c100
-rw-r--r--arm9/src/map_matrix.c231
-rw-r--r--arm9/src/palette.c692
-rw-r--r--arm9/src/save.c1
-rw-r--r--arm9/src/save_arrays.c5
-rw-r--r--arm9/src/scrcmd.c98
-rw-r--r--arm9/src/scrcmd_24.c8
-rw-r--r--arm9/src/scrcmd_sound.c7
-rw-r--r--arm9/src/sound.c16
-rw-r--r--arm9/src/text.c4
-rw-r--r--arm9/src/timer3.c6
-rw-r--r--arm9/src/unk_02002F08.c139
-rw-r--r--arm9/src/unk_020040F4.c1365
-rw-r--r--arm9/src/unk_020051F4.c716
-rw-r--r--arm9/src/unk_020061E8.c35
-rw-r--r--arm9/src/unk_0200CA44.c10
-rw-r--r--arm9/src/unk_0201C6B4.c80
-rw-r--r--arm9/src/unk_0201E7D8.c2
-rw-r--r--arm9/src/unk_020222E8.c33
-rw-r--r--arm9/src/unk_02022450.c45
-rw-r--r--arm9/src/unk_0202A1E0.c536
-rw-r--r--arm9/src/unk_02031734.c6
-rw-r--r--arm9/src/unk_0204AEA8.c2
-rw-r--r--arm9/src/unk_0204AF24.c135
-rw-r--r--arm9/src/unk_0205FA2C.c97
-rw-r--r--arm9/src/unk_0206015C.c49
-rw-r--r--arm9/src/unk_02064E20.c17
-rw-r--r--arm9/src/unk_02088DD8.c76
-rw-r--r--arm9/src/wfc_user_info_warning.c151
-rw-r--r--files/graphic/field_board/.gitignore52
-rw-r--r--files/graphic/field_board/narc_0000.NCGRbin640 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0000.pngbin0 -> 196 bytes
-rw-r--r--files/graphic/field_board/narc_0001.NCLRbin552 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0001.pal259
-rw-r--r--files/graphic/field_board/narc_0002.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0002.pngbin0 -> 136 bytes
-rw-r--r--files/graphic/field_board/narc_0003.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0003.pngbin0 -> 180 bytes
-rw-r--r--files/graphic/field_board/narc_0004.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0004.pngbin0 -> 182 bytes
-rw-r--r--files/graphic/field_board/narc_0005.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0005.pngbin0 -> 201 bytes
-rw-r--r--files/graphic/field_board/narc_0006.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0006.pngbin0 -> 203 bytes
-rw-r--r--files/graphic/field_board/narc_0007.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0007.pngbin0 -> 206 bytes
-rw-r--r--files/graphic/field_board/narc_0008.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0008.pngbin0 -> 212 bytes
-rw-r--r--files/graphic/field_board/narc_0009.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0009.pngbin0 -> 196 bytes
-rw-r--r--files/graphic/field_board/narc_0010.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0010.pngbin0 -> 214 bytes
-rw-r--r--files/graphic/field_board/narc_0011.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0011.pngbin0 -> 193 bytes
-rw-r--r--files/graphic/field_board/narc_0012.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0012.pngbin0 -> 208 bytes
-rw-r--r--files/graphic/field_board/narc_0013.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0013.pngbin0 -> 213 bytes
-rw-r--r--files/graphic/field_board/narc_0014.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0014.pngbin0 -> 194 bytes
-rw-r--r--files/graphic/field_board/narc_0015.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0015.pngbin0 -> 210 bytes
-rw-r--r--files/graphic/field_board/narc_0016.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0016.pngbin0 -> 200 bytes
-rw-r--r--files/graphic/field_board/narc_0017.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0017.pngbin0 -> 228 bytes
-rw-r--r--files/graphic/field_board/narc_0018.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0018.pngbin0 -> 233 bytes
-rw-r--r--files/graphic/field_board/narc_0019.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0019.pngbin0 -> 236 bytes
-rw-r--r--files/graphic/field_board/narc_0020.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0020.pngbin0 -> 226 bytes
-rw-r--r--files/graphic/field_board/narc_0021.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0021.pngbin0 -> 224 bytes
-rw-r--r--files/graphic/field_board/narc_0022.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0022.pngbin0 -> 234 bytes
-rw-r--r--files/graphic/field_board/narc_0023.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0023.pngbin0 -> 231 bytes
-rw-r--r--files/graphic/field_board/narc_0024.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0024.pngbin0 -> 232 bytes
-rw-r--r--files/graphic/field_board/narc_0025.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0025.pngbin0 -> 205 bytes
-rw-r--r--files/graphic/field_board/narc_0026.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0026.pngbin0 -> 192 bytes
-rw-r--r--files/graphic/field_board/narc_0027.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0027.pngbin0 -> 211 bytes
-rw-r--r--files/graphic/field_board/narc_0028.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0028.pngbin0 -> 191 bytes
-rw-r--r--files/graphic/field_board/narc_0029.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0029.pngbin0 -> 193 bytes
-rw-r--r--files/graphic/field_board/narc_0030.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0030.pngbin0 -> 209 bytes
-rw-r--r--files/graphic/field_board/narc_0031.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0031.pngbin0 -> 194 bytes
-rw-r--r--files/graphic/field_board/narc_0032.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0032.pngbin0 -> 210 bytes
-rw-r--r--files/graphic/field_board/narc_0033.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0033.pngbin0 -> 136 bytes
-rw-r--r--files/graphic/field_board/narc_0034.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0034.pngbin0 -> 180 bytes
-rw-r--r--files/graphic/field_board/narc_0035.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0035.pngbin0 -> 203 bytes
-rw-r--r--files/graphic/field_board/narc_0036.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0036.pngbin0 -> 201 bytes
-rw-r--r--files/graphic/field_board/narc_0037.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0037.pngbin0 -> 202 bytes
-rw-r--r--files/graphic/field_board/narc_0038.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0038.pngbin0 -> 182 bytes
-rw-r--r--files/graphic/field_board/narc_0039.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0039.pngbin0 -> 164 bytes
-rw-r--r--files/graphic/field_board/narc_0040.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0040.pngbin0 -> 205 bytes
-rw-r--r--files/graphic/field_board/narc_0041.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0041.pngbin0 -> 207 bytes
-rw-r--r--files/graphic/field_board/narc_0042.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0042.pngbin0 -> 190 bytes
-rw-r--r--files/graphic/field_board/narc_0043.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0043.pngbin0 -> 216 bytes
-rw-r--r--files/graphic/field_board/narc_0044.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0044.pngbin0 -> 215 bytes
-rw-r--r--files/graphic/field_board/narc_0045.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0045.pngbin0 -> 224 bytes
-rw-r--r--files/graphic/field_board/narc_0046.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0046.pngbin0 -> 212 bytes
-rw-r--r--files/graphic/field_board/narc_0047.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0047.pngbin0 -> 242 bytes
-rw-r--r--files/graphic/field_board/narc_0048.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0048.pngbin0 -> 218 bytes
-rw-r--r--files/graphic/field_board/narc_0049.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0049.pngbin0 -> 173 bytes
-rw-r--r--files/graphic/field_board/narc_0050.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0050.pngbin0 -> 190 bytes
-rw-r--r--files/graphic/field_board/narc_0051.NCGRbin832 -> 0 bytes
-rw-r--r--files/graphic/field_board/narc_0051.pngbin0 -> 188 bytes
-rw-r--r--files/graphic/poketch/.gitignore2
-rw-r--r--files/resource/eng/trial/trial/.gitignore8
-rw-r--r--files/resource/eng/trial/trial/.knarcignore1
-rw-r--r--files/resource/eng/trial/trial/narc_0000.NCLRbin552 -> 0 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0000.pal19
-rw-r--r--files/resource/eng/trial/trial/narc_0001.NCGRbin24640 -> 0 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0001.pngbin0 -> 1652 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0002.NSCRbin2084 -> 0 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0002_map.json32
-rw-r--r--files/resource/eng/trial/trial/narc_0002_tileset.json14
-rw-r--r--files/resource/eng/trial/trial/narc_0003.NCLRbin552 -> 0 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0003.pal19
-rw-r--r--files/resource/eng/trial/trial/narc_0004.NCGRbin24640 -> 0 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0004.pngbin0 -> 2095 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0005.NSCRbin2084 -> 0 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0005_map.json32
-rw-r--r--files/resource/eng/trial/trial/narc_0005_tileset.json14
-rw-r--r--files/resource/eng/trial/trial/narc_0006.NCLRbin552 -> 0 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0006.pal19
-rw-r--r--files/resource/eng/trial/trial/narc_0007.NCGRbin1072 -> 0 bytes
-rw-r--r--files/resource/eng/trial/trial/narc_0007.pngbin0 -> 376 bytes
-rw-r--r--filesystem.mk64
-rw-r--r--graphics_rules.mk127
-rw-r--r--include/communication_error.h7
-rw-r--r--include/font.h5
-rw-r--r--include/game_init.h12
-rw-r--r--include/global.h2
-rw-r--r--include/heap.h1
-rw-r--r--include/map_header.h26
-rw-r--r--include/map_matrix.h54
-rw-r--r--include/nitro/FX_types.h (renamed from arm9/lib/include/FX_types.h)3
-rw-r--r--include/nitro/NNS_g3d.h (renamed from arm9/lib/include/NNS_g3d.h)0
-rw-r--r--include/nitro/OS_alarm_shared.h1
-rw-r--r--include/nitro/OS_thread_shared.h3
-rw-r--r--include/nitro/SND_alarm_shared.h30
-rw-r--r--include/nitro/SND_main_shared.h (renamed from arm9/lib/include/SND_main.h)43
-rw-r--r--include/nitro/SND_work_shared.h46
-rw-r--r--include/palette.h141
-rw-r--r--include/scrcmd.h2
-rw-r--r--include/script.h3
-rw-r--r--include/sound.h5
-rw-r--r--include/text.h2
-rw-r--r--include/unk_02002F08.h38
-rw-r--r--include/unk_020040F4.h116
-rw-r--r--include/unk_020051F4.h45
-rw-r--r--include/unk_020061E8.h10
-rw-r--r--include/unk_0200CA44.h8
-rw-r--r--include/unk_0201C6B4.h10
-rw-r--r--include/unk_020222E8.h11
-rw-r--r--include/unk_02022450.h18
-rw-r--r--include/unk_0202A1E0.h209
-rw-r--r--include/unk_0204AF24.h19
-rw-r--r--include/unk_02064E20.h8
-rw-r--r--include/unk_02088DD8.h7
-rw-r--r--include/wfc_user_info_warning.h6
512 files changed, 9155 insertions, 11115 deletions
diff --git a/.github/calcrom/calcrom.cpp b/.github/calcrom/calcrom.cpp
index 2947f5e7..1cb6f9fe 100644
--- a/.github/calcrom/calcrom.cpp
+++ b/.github/calcrom/calcrom.cpp
@@ -64,7 +64,7 @@ void analyze(string basedir, string subdir, string version) {
size_t shstrsz = 0;
stringstream builddir;
builddir << subdir << "/build/" << version;
- pattern << basedir << "/" << subdir << "/{src,asm,lib/{src,asm},modules/*/{src,asm}}/*.{c,s,cpp}";
+ pattern << basedir << "/" << subdir << "/{src,asm,lib/src,lib/{libc,libnns,NitroSDK}/src,modules/*/{src,asm}}/*.{c,s,cpp}";
for (char const * & fname : Glob(pattern.str()))
{
string fname_s(fname);
diff --git a/Makefile b/Makefile
index e1a40cdb..c9be64f8 100644
--- a/Makefile
+++ b/Makefile
@@ -102,7 +102,7 @@ OBJCOPY := $(CROSS)objcopy
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
ASFLAGS = -proc arm5te
-CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i include -ir include-mw -ir arm9/lib/include -W all
+CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i include -ir include-mw -ir arm9/lib/libc/include -ir arm9/lib/libnns/include -ir arm9/lib/NitroSDK/include -W all
LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start
####################### Other Tools #########################
@@ -129,7 +129,7 @@ TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE))
export LM_LICENSE_FILE := $(TOOLS_DIR)/mwccarm/license.dat
-export MWCIncludes := arm9/lib/include
+export MWCIncludes := arm9/lib/libc/include arm9/lib/NitroSDK/include arm9/lib/libnns/include
export MWLibraries := arm9/lib
######################### Targets ###########################
@@ -194,7 +194,7 @@ patch_mwasmarm: tools/mwasmarm_patcher
ALL_DIRS := $(BUILD_DIR)
ifeq (,$(NODEP))
-$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I include -I include-mw -I arm9/lib/include $(filter $*.c,$(C_FILES)) $(filter $*.cpp,$(CXX_FILES)) $(filter $*.s,$(S_FILES)))
+$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I include -I include-mw -I arm9/lib/libc/include -I arm9/lib/libnns/include -I arm9/lib/NitroSDK/include $(filter $*.c,$(C_FILES)) $(filter $*.cpp,$(CXX_FILES)) $(filter $*.s,$(S_FILES)))
else
$(BUILD_DIR)/%.o: dep :=
endif
diff --git a/arm7/lib/include/SND_alarm.h b/arm7/lib/include/SND_alarm.h
new file mode 100644
index 00000000..195b90bb
--- /dev/null
+++ b/arm7/lib/include/SND_alarm.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_SND_ALARM_H
+#define GUARD_SND_ALARM_H
+
+#include "global.h"
+#include "SND_alarm_shared.h"
+
+void SND_StopAlarm(u32 idx);
+void SND_StartAlarm(u32 idx);
+void SND_SetupAlarm();
+void SND_AlarmInit();
+
+#endif //GUARD_SND_ALARM_H \ No newline at end of file
diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h
new file mode 100644
index 00000000..05fbe3d7
--- /dev/null
+++ b/arm7/lib/include/SND_exChannel.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_SND_EXCHANNEL_H
+#define GUARD_SND_EXCHANNEL_H
+
+#include "global.h"
+
+bool SND_IsChannelActive(u32 idx);
+
+#endif //GUARD_SND_EXCHANNEL_H \ No newline at end of file
diff --git a/arm7/lib/include/SND_work.h b/arm7/lib/include/SND_work.h
new file mode 100644
index 00000000..9b834c6c
--- /dev/null
+++ b/arm7/lib/include/SND_work.h
@@ -0,0 +1,4 @@
+#ifndef GUARD_SND_WORK_H
+#define GUARD_SND_WORK_H
+
+#endif //GUARD_SND_WORK_H \ No newline at end of file
diff --git a/arm9/CMakeLists.txt b/arm9/CMakeLists.txt
index 8bdaeba1..417dff56 100644
--- a/arm9/CMakeLists.txt
+++ b/arm9/CMakeLists.txt
@@ -15,5 +15,5 @@ file(GLOB_RECURSE SOURCES "*.c" "*.cpp" "*.s")
file(GLOB MODULE_INC modules/*/include)
add_executable(DP_Arm9 ${SOURCES})
-target_include_directories(DP_Arm9 PRIVATE ../include ../include-mw lib/include ${MODULE_INC} ../files)
+target_include_directories(DP_Arm9 PRIVATE ../include ../include-mw lib/NitroSDK/include lib/libc/include lib/libnns/include ${MODULE_INC} ../files)
target_compile_definitions(DP_Arm9 PUBLIC __CLION_IDE__)
diff --git a/arm9/Makefile b/arm9/Makefile
index 2ad29363..b48ac56c 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -50,10 +50,10 @@ LD_TEMPLATE := ARM9-TS.lcf.template
# Directories containing source files
# sorting wildcards required for versions of make >= 3.8.2 and < 4.3 for consistent builds
-SRC_DIRS := src lib lib/src $(sort $(wildcard modules/*/src))
+SRC_DIRS := src lib lib/libnns/src lib/NitroSDK/src lib/libc/src $(sort $(wildcard modules/*/src))
ASM_DIRS := asm data files $(sort $(wildcard modules/*/asm))
LIBASM_DIRS := lib/syscall
-INCLUDE_RECURSIVE_DIRS := ../include-mw lib/include
+INCLUDE_RECURSIVE_DIRS := ../include-mw lib/libc/include lib/libnns/include lib/NitroSDK/include
INCLUDE_DIRS := ../include $(sort $(wildcard modules/*/include)) ../files
C_FILES := $(foreach dir,$(SRC_DIRS),$(sort $(wildcard $(dir)/*.c)))
@@ -140,7 +140,7 @@ TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%)
TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE))
export LM_LICENSE_FILE := $(TOOLS_DIR)/mwccarm/license.dat
-export MWCIncludes := $(CURDIR)/lib/include
+export MWCIncludes := $(CURDIR)/lib/libc/include $(CURDIR)/lib/NitroSDK/include $(CURDIR)/lib/libnns/include
export MWLibraries := $(CURDIR)/lib
######################### Targets ###########################
@@ -192,7 +192,7 @@ ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS) $(LIB
# TODO: Move out to lib/Makefile
$(BUILD_DIR)/lib/%.o: MWCCVERSION = 1.2/sp2p3
-$(BUILD_DIR)/lib/%.o: CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -interworking -DFS_IMPLEMENT -enum int -W all -i ../include -ir ../include-mw -ir lib/include
+$(BUILD_DIR)/lib/%.o: CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -interworking -DFS_IMPLEMENT -enum int -W all -i ../include -ir ../include-mw -ir lib/libc/include -ir lib/libnns/include -ir lib/NitroSDK/include
# FIXME: Using -ipa file breaks .rodata alignment
$(BUILD_DIR)/src/math_util.o: CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE)
@@ -200,7 +200,7 @@ $(BUILD_DIR)/src/math_util.o: CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -
####################### Everything Else ######################
ifeq (,$(NODEP))
-$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $(filter $*.c,$(C_FILES)) $(filter $*.cpp,$(CXX_FILES)) $(filter $*.s,$(S_FILES)) $(filter $*.s,$(LIBS_FILES)))
+$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/libc/include -I lib/libnns/include -I lib/NitroSDK/include $(filter $*.c,$(C_FILES)) $(filter $*.cpp,$(CXX_FILES)) $(filter $*.s,$(S_FILES)) $(filter $*.s,$(LIBS_FILES)))
else
$(BUILD_DIR)/%.o: dep :=
endif
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 66c41c14..25689701 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -11,8 +11,7 @@ Static arm9
Object string_util.o
Object render_text.o
Object font.o
- Object unk_02002F08.o
- Object unk_020030E8.o
+ Object palette.o
Object sound.o
Object unk_020040F4.o
Object unk_020051F4.o
@@ -139,9 +138,9 @@ Static arm9
Object unk_020337E8.o
Object unk_02033874.o
Object unk_02033B68.o
- Object unk_02033F50.o
- Object unk_02034188.o
- Object unk_020343A8.o
+ Object communication_error.o
+ Object wfc_user_info_warning.o
+ Object map_matrix.o
Object map_header.o
Object unk_02034A28.o
Object unk_02034D7C.o
@@ -362,74 +361,74 @@ Static arm9
Object NNS_FND_frameheap.o
Object NNS_FND_allocator.o
Object NNS_GFD_gfd_texvramman.o
- Object NNS_GFD_gfd_plttvramman.o
- Object NNS_GFD_gfd_frametexvra.o
- Object NNS_GFD_gfd_frameplttvr.o
- Object NNS_GFD_gfd_vramtransfe.o
- Object NNS_GFD_gfdi_linkedlist.o
- Object NNS_GFD_gfd_linkedlistt.o
- Object NNS_GFD_gfd_linkedlistp.o
- Object NNS_G2D_g2d_nan_load.o
- Object NNS_G2D_g2d_nob_load.o
- Object NNS_G2D_g2d_nmc_load.o
- Object NNS_G2D_g2d_ncg_load.o
- Object NNS_G2D_g2d_ncl_load.o
- Object NNS_G2D_g2d_nsc_load.o
- Object NNS_G2D_g2d_load.o
- Object NNS_G2D_g2d_softsprite.o
- Object NNS_G2D_g2d_animation.o
- Object NNS_G2D_g2d_oam.o
- Object NNS_G2D_g2d_palettetabl.o
- Object NNS_G2D_g2d_image.o
- Object NNS_G2D_g2d_srtcontrol.o
- Object NNS_G2D_g2d_node.o
- Object NNS_G2D_g2d_cellanimati.o
- Object NNS_G2D_g2d_multicellan.o
- Object NNS_G2D_g2d_renderer.o
- Object NNS_G2D_g2di_mtx32.o
- Object NNS_G2D_g2d_celltransfe.o
- Object NNS_G2D_g2d_oamsoftware.o
- Object NNS_G2D_g2d_renderercor.o
- Object NNS_G2D_g2d_font.o
- Object NNS_G2D_g2d_charcanvas.o
- Object NNS_G2D_g2d_textcanvas.o
- Object NNS_G2D_g2d_nft_load.o
- Object NNS_G2D_g2di_bitreader.o
- Object NNS_G2D_g2di_splitchar.o
- Object NNS_G3D_kernel.o
- Object NNS_G3D_glbstate.o
- Object NNS_G3D_anm.o
- Object NNS_G3D_cgtool.o
- Object NNS_G3D_sbc.o
- Object NNS_G3D_1mat1shp.o
- Object NNS_G3D_gecom.o
- Object NNS_G3D_util.o
- Object NNS_G3D_mem.o
- Object NNS_G3D_model.o
- Object NNS_G3D_res_struct_acce.o
- Object NNS_G3D_nsbca.o
- Object NNS_G3D_nsbma.o
- Object NNS_G3D_nsbta.o
- Object NNS_G3D_nsbtp.o
- Object NNS_G3D_nsbva.o
- Object NNS_G3D_basic.o
- Object NNS_G3D_maya.o
- Object NNS_G3D_si3d.o
- Object NNS_G3D_3dsmax.o
- Object NNS_G3D_xsi.o
- Object NNS_SND_main.o
- Object NNS_SND_resource_mgr.o
- Object NNS_SND_waveout.o
- Object NNS_SND_player.o
- Object NNS_SND_stream.o
- Object NNS_SND_capture.o
- Object NNS_SND_sndarc.o
- Object NNS_SND_heap.o
- Object NNS_SND_sndarc_loader.o
- Object NNS_SND_sndarc_player.o
- Object NNS_SND_sndarc_stream.o
- Object NNS_SND_seqdata.o
- Object NNS_SND_fader.o
+ Object NNS_GFD_gfd_plttvramman.o
+ Object NNS_GFD_gfd_frametexvra.o
+ Object NNS_GFD_gfd_frameplttvr.o
+ Object NNS_GFD_gfd_vramtransfe.o
+ Object NNS_GFD_gfdi_linkedlist.o
+ Object NNS_GFD_gfd_linkedlistt.o
+ Object NNS_GFD_gfd_linkedlistp.o
+ Object NNS_G2D_g2d_nan_load.o
+ Object NNS_G2D_g2d_nob_load.o
+ Object NNS_G2D_g2d_nmc_load.o
+ Object NNS_G2D_g2d_ncg_load.o
+ Object NNS_G2D_g2d_ncl_load.o
+ Object NNS_G2D_g2d_nsc_load.o
+ Object NNS_G2D_g2d_load.o
+ Object NNS_G2D_g2d_softsprite.o
+ Object NNS_G2D_g2d_animation.o
+ Object NNS_G2D_g2d_oam.o
+ Object NNS_G2D_g2d_palettetabl.o
+ Object NNS_G2D_g2d_image.o
+ Object NNS_G2D_g2d_srtcontrol.o
+ Object NNS_G2D_g2d_node.o
+ Object NNS_G2D_g2d_cellanimati.o
+ Object NNS_G2D_g2d_multicellan.o
+ Object NNS_G2D_g2d_renderer.o
+ Object NNS_G2D_g2di_mtx32.o
+ Object NNS_G2D_g2d_celltransfe.o
+ Object NNS_G2D_g2d_oamsoftware.o
+ Object NNS_G2D_g2d_renderercor.o
+ Object NNS_G2D_g2d_font.o
+ Object NNS_G2D_g2d_charcanvas.o
+ Object NNS_G2D_g2d_textcanvas.o
+ Object NNS_G2D_g2d_nft_load.o
+ Object NNS_G2D_g2di_bitreader.o
+ Object NNS_G2D_g2di_splitchar.o
+ Object NNS_G3D_kernel.o
+ Object NNS_G3D_glbstate.o
+ Object NNS_G3D_anm.o
+ Object NNS_G3D_cgtool.o
+ Object NNS_G3D_sbc.o
+ Object NNS_G3D_1mat1shp.o
+ Object NNS_G3D_gecom.o
+ Object NNS_G3D_util.o
+ Object NNS_G3D_mem.o
+ Object NNS_G3D_model.o
+ Object NNS_G3D_res_struct_acce.o
+ Object NNS_G3D_nsbca.o
+ Object NNS_G3D_nsbma.o
+ Object NNS_G3D_nsbta.o
+ Object NNS_G3D_nsbtp.o
+ Object NNS_G3D_nsbva.o
+ Object NNS_G3D_basic.o
+ Object NNS_G3D_maya.o
+ Object NNS_G3D_si3d.o
+ Object NNS_G3D_3dsmax.o
+ Object NNS_G3D_xsi.o
+ Object NNS_SND_main.o
+ Object NNS_SND_resource_mgr.o
+ Object NNS_SND_waveout.o
+ Object NNS_SND_player.o
+ Object NNS_SND_stream.o
+ Object NNS_SND_capture.o
+ Object NNS_SND_sndarc.o
+ Object NNS_SND_heap.o
+ Object NNS_SND_sndarc_loader.o
+ Object NNS_SND_sndarc_player.o
+ Object NNS_SND_sndarc_stream.o
+ Object NNS_SND_seqdata.o
+ Object NNS_SND_fader.o
### Nitro SDK ###
Object FX_mtx22.o
Object FX_mtx33.o
@@ -849,7 +848,8 @@ Overlay MODULE_26
##Dot Artist##
After MODULE_20
Object module_26_sinit.o
- Object module_26.o
+ Object mod26_02254854.o
+ Object mod26_02254BD4.o
}
Overlay MODULE_27
@@ -902,7 +902,8 @@ Overlay MODULE_33
{
After MODULE_20
Object module_33_sinit.o
- Object module_33.o
+ Object mod33_02254854.o
+ Object mod33_022549AC.o
}
Overlay MODULE_34
@@ -984,7 +985,8 @@ Overlay MODULE_44
{
After MODULE_20
Object module_44_sinit.o
- Object module_44.o
+ Object mod44_02254854.o
+ Object mod44_02254A54.o
}
Overlay MODULE_45
@@ -998,7 +1000,8 @@ Overlay MODULE_46
{
After MODULE_20
Object module_46_sinit.o
- Object module_46.o
+ Object mod46_02254854.o
+ Object mod46_022549AC.o
}
Overlay MODULE_47
@@ -1028,7 +1031,8 @@ Overlay MODULE_50
{
After MODULE_20
Object module_50_sinit.o
- Object module_50.o
+ Object mod50_02254854.o
+ Object mod50_022549AC.o
}
Overlay MODULE_51
diff --git a/arm9/asm/MSL_Common_arith.s b/arm9/asm/MSL_Common_arith.s
deleted file mode 100644
index 5d93a4de..00000000
--- a/arm9/asm/MSL_Common_arith.s
+++ /dev/null
@@ -1,11 +0,0 @@
- .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/WM_ks.s b/arm9/asm/WM_ks.s
deleted file mode 100644
index 3dd46c1b..00000000
--- a/arm9/asm/WM_ks.s
+++ /dev/null
@@ -1,26 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start WM_EndKeySharing
-WM_EndKeySharing: ; 0x020DAD3C
- ldr ip, _020DAD44 ; =WM_EndDataSharing
- bx r12
- .balign 4
-_020DAD44: .word WM_EndDataSharing
-
- arm_func_start WM_StartKeySharing
-WM_StartKeySharing: ; 0x020DAD48
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, _020DAD70 ; =0x0000FFFF
- mov r12, #0x1
- mov r3, #0x2
- str r12, [sp, #0x0]
- bl WM_StartDataSharing
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020DAD70: .word 0x0000FFFF
diff --git a/arm9/asm/scrcmd_10.s b/arm9/asm/scrcmd_10.s
index e400a88b..87337ab8 100644
--- a/arm9/asm/scrcmd_10.s
+++ b/arm9/asm/scrcmd_10.s
@@ -243,12 +243,12 @@ _020424F6:
b _020426FA
_020424FC:
ldr r0, [r1, #0xc]
- bl FUN_0202A8CC
+ bl SaveStruct23_GetSubstruct1
bl MOD06_022433A8
b _020426FA
_02042508:
ldr r0, [r1, #0xc]
- bl FUN_0202A8CC
+ bl SaveStruct23_GetSubstruct1
bl MOD06_022433B0
strh r0, [r4, #0x0]
b _020426FA
@@ -717,7 +717,7 @@ ScrCmd_Unk01E3: ; 0x02042894
add r6, r0, #0x0
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_0202A8E4
+ bl SaveStruct23_GetSubstruct4
add r1, sp, #0x0
bl FUN_0202A864
add r0, sp, #0x0
@@ -743,8 +743,8 @@ ScrCmd_Unk01E4: ; 0x020428E0
add r4, r0, #0x0
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_0202A8E4
- bl FUN_0202A74C
+ bl SaveStruct23_GetSubstruct4
+ bl SaveStruct23_Substruct4_GetField_0xFF
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -862,10 +862,10 @@ ScrCmd_Unk0297: ; 0x020429B8
bl GetVarPointer
add r5, r0, #0x0
add r0, r4, #0x0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
mov r1, #0x0
add r2, r1, #0x0
- bl FUN_0202A3B4
+ bl SaveStruct23_Substruct2_SetField_0x0
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -885,10 +885,10 @@ ScrCmd_Unk0298: ; 0x020429E8
bl VarGet
add r5, r0, #0x0
add r0, r4, #0x0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
add r1, r5, #0x0
mov r2, #0x5
- bl FUN_0202A3B4
+ bl SaveStruct23_Substruct2_SetField_0x0
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
@@ -908,10 +908,10 @@ ScrCmd_Unk0299: ; 0x02042A18
bl VarGet
add r5, r0, #0x0
add r0, r4, #0x0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
add r1, r5, #0x0
mov r2, #0x6
- bl FUN_0202A3B4
+ bl SaveStruct23_Substruct2_SetField_0x0
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
@@ -939,10 +939,10 @@ ScrCmd_Unk029A: ; 0x02042A48
bl GetVarPointer
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
mov r1, #0x0
add r2, r1, #0x0
- bl FUN_0202A3B4
+ bl SaveStruct23_Substruct2_SetField_0x0
cmp r0, r6
bhs _02042A8E
mov r0, #0x0
diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s
index 26b3a3ef..8dcbdf20 100644
--- a/arm9/asm/scrcmd_asm.s
+++ b/arm9/asm/scrcmd_asm.s
@@ -14,175 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C
.text
- thumb_func_start ScrCmd_Unk02A1
-ScrCmd_Unk02A1: ; 0x0203B024
- push {r3-r7, lr}
- sub sp, #0x8
- 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
- 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 r7, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- bl FUN_0203B120
- str r0, [sp, #0x4]
- cmp r0, #0x0
- bne _0203B07A
- bl GF_AssertFail
-_0203B07A:
- mov r0, #0x4
- add r1, r0, #0x0
- add r1, #0xfc
- bl AllocFromHeap
- add r4, r0, #0x0
- ldr r0, [sp, #0x4]
- bl FUN_02058B2C
- lsl r0, r0, #0x10
- lsr r6, r0, #0x10
- ldr r0, [sp, #0x4]
- bl FUN_02058B4C
- lsl r0, r0, #0x10
- ldr r2, [sp, #0x0]
- lsr r0, r0, #0x10
- mov r1, #0x0
- cmp r6, r2
- bhs _0203B0B0
- mov r2, #0xf
- strh r2, [r4, #0x0]
- ldr r2, [sp, #0x0]
- add r1, r1, #0x1
- sub r2, r2, r6
- strh r2, [r4, #0x2]
- b _0203B0C0
-_0203B0B0:
- cmp r6, r2
- bls _0203B0C0
- mov r2, #0xe
- strh r2, [r4, #0x0]
- ldr r2, [sp, #0x0]
- add r1, r1, #0x1
- sub r2, r6, r2
- strh r2, [r4, #0x2]
-_0203B0C0:
- cmp r0, r7
- bhs _0203B0D4
- lsl r2, r1, #0x2
- mov r3, #0xc
- strh r3, [r4, r2]
- sub r3, r7, r0
- add r0, r4, r2
- strh r3, [r0, #0x2]
- add r1, r1, #0x1
- b _0203B0E6
-_0203B0D4:
- cmp r0, r7
- bls _0203B0E6
- lsl r2, r1, #0x2
- mov r3, #0xd
- strh r3, [r4, r2]
- sub r3, r0, r7
- add r0, r4, r2
- strh r3, [r0, #0x2]
- add r1, r1, #0x1
-_0203B0E6:
- lsl r2, r1, #0x2
- mov r0, #0xfe
- strh r0, [r4, r2]
- mov r1, #0x0
- add r0, r4, r2
- strh r1, [r0, #0x2]
- ldr r0, [sp, #0x4]
- add r1, r4, #0x0
- bl FUN_0205AEA4
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x4
- bl FUN_02039438
- ldrb r1, [r0, #0x0]
- add r5, #0x80
- add r2, r4, #0x0
- add r1, r1, #0x1
- strb r1, [r0, #0x0]
- ldr r0, [r5, #0x0]
- add r1, r6, #0x0
- bl FUN_0203B174
- mov r0, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0203B120
-FUN_0203B120: ; 0x0203B120
- push {r3, lr}
- cmp r1, #0xf2
- bne _0203B130
- ldr r0, [r0, #0x34]
- mov r1, #0x30
- bl FUN_020580B4
- pop {r3, pc}
-_0203B130:
- cmp r1, #0xf1
- bne _0203B13E
- mov r1, #0xb
- bl FUN_02039438
- ldr r0, [r0, #0x0]
- pop {r3, pc}
-_0203B13E:
- ldr r0, [r0, #0x34]
- bl FUN_02058060
- pop {r3, pc}
- .balign 4
-
- thumb_func_start ScrCmd_Unk005F
-ScrCmd_Unk005F: ; 0x0203B148
- push {r3, lr}
- ldr r1, _0203B154 ; =FUN_0203B158
- bl SetupNativeScript
- mov r0, #0x1
- pop {r3, pc}
- .balign 4
-_0203B154: .word FUN_0203B158
-
- thumb_func_start FUN_0203B158
-FUN_0203B158: ; 0x0203B158
- push {r3, lr}
- add r0, #0x80
- ldr r0, [r0, #0x0]
- mov r1, #0x4
- bl FUN_02039438
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0203B16E
- mov r0, #0x1
- pop {r3, pc}
-_0203B16E:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
thumb_func_start FUN_0203B174
FUN_0203B174: ; 0x0203B174
push {r3-r7, lr}
diff --git a/arm9/asm/unk_020030E8.s b/arm9/asm/unk_020030E8.s
deleted file mode 100644
index d304b14a..00000000
--- a/arm9/asm/unk_020030E8.s
+++ /dev/null
@@ -1,1424 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .text
-
- thumb_func_start FUN_02003108
-FUN_02003108: ; 0x02003108
- push {r3-r7, lr}
- add r4, r1, #0x0
- mov r1, #0x14
- add r6, r0, #0x0
- mul r1, r4
- add r5, r2, #0x0
- add r1, r6, r1
- add r7, r3, #0x0
- lsl r0, r5, #0x1
- ldr r1, [r1, #0x8]
- add r0, r7, r0
- cmp r0, r1
- bls _02003126
- bl GF_AssertFail
-_02003126:
- cmp r4, #0x3
- bhi _0200315E
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02003136: ; jump table (using 16-bit offset)
- .short _0200313E - _02003136 - 2; case 0
- .short _02003146 - _02003136 - 2; case 1
- .short _0200314E - _02003136 - 2; case 2
- .short _02003156 - _02003136 - 2; case 3
-_0200313E:
- bl FUN_020222E8
- add r1, r0, #0x0
- b _02003164
-_02003146:
- bl FUN_020222F8
- add r1, r0, #0x0
- b _02003164
-_0200314E:
- bl FUN_02022308
- add r1, r0, #0x0
- b _02003164
-_02003156:
- bl FUN_02022310
- add r1, r0, #0x0
- b _02003164
-_0200315E:
- bl GF_AssertFail
- pop {r3-r7, pc}
-_02003164:
- lsl r0, r7, #0x10
- lsr r0, r0, #0x10
- lsl r2, r5, #0x1
- str r0, [sp, #0x0]
- add r1, r1, r2
- add r0, r6, #0x0
- add r2, r4, #0x0
- add r3, r5, #0x0
- bl FUN_02003054
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200317C
-FUN_0200317C: ; 0x0200317C
- push {r3-r5, lr}
- add r4, r2, #0x0
- add r5, r3, #0x0
- add r2, sp, #0x0
- add r3, r4, #0x0
- bl GfGfxLoader_GetPlttData
- add r4, r0, #0x0
- bne _02003192
- bl GF_AssertFail
-_02003192:
- cmp r5, #0x0
- bne _0200319A
- ldr r0, [sp, #0x0]
- ldr r5, [r0, #0x8]
-_0200319A:
- ldr r0, [sp, #0x0]
- add r2, r5, #0x0
- ldr r1, [r0, #0xc]
- add r0, sp, #0x0
- ldrh r0, [r0, #0x10]
- lsl r0, r0, #0x1
- add r0, r1, r0
- ldr r1, [sp, #0x14]
- bl MIi_CpuCopy16
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020031B8
-FUN_020031B8: ; 0x020031B8
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, sp, #0x10
- add r5, r0, #0x0
- add r0, r1, #0x0
- ldrh r1, [r4, #0x14]
- add r6, r3, #0x0
- str r1, [sp, #0x0]
- ldrh r1, [r4, #0x10]
- lsl r4, r2, #0x1
- ldr r2, [sp, #0x0]
- lsl r7, r1, #0x1
- mov r1, #0x14
- mul r6, r1
- mul r1, r0
- ldr r0, [r5, r1]
- str r1, [sp, #0x4]
- ldr r1, [r5, r6]
- add r0, r0, r4
- add r1, r1, r7
- bl MIi_CpuCopy16
- ldr r0, [sp, #0x4]
- add r1, r5, r6
- ldr r0, [r5, r0]
- ldr r1, [r1, #0x4]
- ldr r2, [sp, #0x0]
- add r0, r0, r4
- add r1, r1, r7
- bl MIi_CpuCopy16
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020031FC
-FUN_020031FC: ; 0x020031FC
- mov r2, #0x14
- mul r2, r1
- ldr r0, [r0, r2]
- bx lr
-
- thumb_func_start FUN_02003204
-FUN_02003204: ; 0x02003204
- mov r2, #0x14
- mul r2, r1
- add r0, r0, r2
- ldr r0, [r0, #0x4]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02003210
-FUN_02003210: ; 0x02003210
- push {r0-r3}
- push {r3-r7, lr}
- sub sp, #0x10
- str r3, [sp, #0x8]
- add r5, r0, #0x0
- ldr r0, [sp, #0x38]
- mov r6, #0x0
- str r0, [sp, #0x38]
- ldr r0, [sp, #0x3c]
- add r7, r1, #0x0
- str r0, [sp, #0x3c]
- ldr r0, [sp, #0x40]
- add r4, r6, #0x0
- str r0, [sp, #0x40]
- add r0, sp, #0x28
- ldrh r0, [r0, #0x8]
- str r0, [sp, #0xc]
-_02003232:
- add r0, r7, #0x0
- add r1, r4, #0x0
- bl FUN_02003314
- cmp r0, #0x1
- bne _020032A6
- mov r0, #0x46
- lsl r0, r0, #0x2
- ldrh r0, [r5, r0]
- add r1, r4, #0x0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x12
- bl FUN_02003314
- cmp r0, #0x0
- bne _020032A6
- mov r0, #0x14
- add r6, r4, #0x0
- mul r6, r0
- add r0, r4, #0x0
- add r1, r5, r6
- add r2, sp, #0x30
- bl FUN_02003368
- ldr r0, [sp, #0x3c]
- add r1, sp, #0x28
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x40]
- str r0, [sp, #0x4]
- add r0, r5, r6
- ldrh r1, [r1, #0x8]
- ldr r2, [sp, #0x8]
- ldr r3, [sp, #0x38]
- add r0, #0xc
- bl FUN_020033A4
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02003328
- cmp r4, #0x4
- blo _02003294
- mov r2, #0x1
- add r0, r5, #0x0
- add r1, r4, #0x0
- lsl r2, r2, #0x8
- bl FUN_0200359C
- b _0200329E
-_02003294:
- add r0, r5, #0x0
- add r1, r4, #0x0
- mov r2, #0x10
- bl FUN_0200359C
-_0200329E:
- ldr r1, [sp, #0xc]
- add r0, sp, #0x28
- strh r1, [r0, #0x8]
- mov r6, #0x1
-_020032A6:
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0xe
- blo _02003232
- cmp r6, #0x1
- bne _02003300
- mov r0, #0x46
- lsl r0, r0, #0x2
- ldrh r2, [r5, r0]
- ldr r1, _0200330C ; =0xFFFF0003
- and r1, r2
- lsl r2, r2, #0x10
- lsr r2, r2, #0x12
- orr r2, r7
- lsl r2, r2, #0x12
- lsr r2, r2, #0x10
- orr r1, r2
- strh r1, [r5, r0]
- add r1, r0, #0x2
- ldrh r1, [r5, r1]
- lsl r1, r1, #0x11
- lsr r1, r1, #0x1f
- bne _02003300
- add r1, r0, #0x2
- ldrh r2, [r5, r1]
- mov r1, #0x1
- lsl r1, r1, #0xe
- orr r2, r1
- add r1, r0, #0x2
- strh r2, [r5, r1]
- ldrh r2, [r5, r0]
- mov r1, #0x3
- bic r2, r1
- mov r1, #0x1
- orr r1, r2
- strh r1, [r5, r0]
- mov r2, #0x0
- add r0, r0, #0x4
- strb r2, [r5, r0]
- ldr r0, _02003310 ; =FUN_02003464
- add r1, r5, #0x0
- sub r2, r2, #0x2
- bl FUN_0200CA44
-_02003300:
- add r0, r6, #0x0
- add sp, #0x10
- pop {r3-r7}
- pop {r3}
- add sp, #0x10
- bx r3
- .balign 4
-_0200330C: .word 0xFFFF0003
-_02003310: .word FUN_02003464
-
- thumb_func_start FUN_02003314
-FUN_02003314: ; 0x02003314
- mov r3, #0x1
- add r2, r3, #0x0
- lsl r2, r1
- tst r0, r2
- bne _02003320
- mov r3, #0x0
-_02003320:
- lsl r0, r3, #0x18
- lsr r0, r0, #0x18
- bx lr
- .balign 4
-
- thumb_func_start FUN_02003328
-FUN_02003328: ; 0x02003328
- push {r4-r6, lr}
- add r5, r0, #0x0
- ldr r0, _02003360 ; =0x0000011A
- add r4, r1, #0x0
- ldrh r0, [r5, r0]
- lsl r0, r0, #0x12
- lsr r0, r0, #0x12
- bl FUN_02003314
- cmp r0, #0x1
- beq _0200335E
- ldr r3, _02003360 ; =0x0000011A
- ldr r1, _02003364 ; =0xFFFFC000
- ldrh r2, [r5, r3]
- add r0, r2, #0x0
- lsl r2, r2, #0x12
- lsr r6, r2, #0x12
- mov r2, #0x1
- lsl r2, r4
- orr r2, r6
- lsl r2, r2, #0x10
- and r0, r1
- lsr r2, r2, #0x10
- lsr r1, r1, #0x12
- and r1, r2
- orr r0, r1
- strh r0, [r5, r3]
-_0200335E:
- pop {r4-r6, pc}
- .balign 4
-_02003360: .word 0x0000011A
-_02003364: .word 0xFFFFC000
-
- thumb_func_start FUN_02003368
-FUN_02003368: ; 0x02003368
- push {r4-r5}
- cmp r0, #0x4
- ldr r0, [r1, #0x8]
- bge _02003374
- lsl r0, r0, #0x13
- b _02003378
-_02003374:
- lsr r0, r0, #0x9
- lsl r0, r0, #0x18
-_02003378:
- mov r4, #0x0
- lsr r0, r0, #0x18
- add r5, r4, #0x0
- cmp r0, #0x0
- bls _02003398
- mov r3, #0x1
-_02003384:
- add r1, r3, #0x0
- lsl r1, r5
- add r1, r4, r1
- lsl r1, r1, #0x10
- lsr r4, r1, #0x10
- add r1, r5, #0x1
- lsl r1, r1, #0x18
- lsr r5, r1, #0x18
- cmp r5, r0
- blo _02003384
-_02003398:
- ldrh r0, [r2, #0x0]
- and r0, r4
- strh r0, [r2, #0x0]
- pop {r4-r5}
- bx lr
- .balign 4
-
- thumb_func_start FUN_020033A4
-FUN_020033A4: ; 0x020033A4
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r4, r3, #0x0
- cmp r2, #0x0
- bge _020033D4
- add r0, r2, #0x0
- bl abs
- add r0, r0, #0x2
- ldrh r1, [r5, #0x6]
- mov r2, #0xf
- lsl r0, r0, #0x10
- bic r1, r2
- lsr r2, r0, #0x10
- mov r0, #0xf
- and r0, r2
- orr r0, r1
- strh r0, [r5, #0x6]
- ldrh r1, [r5, #0x2]
- mov r0, #0x3f
- bic r1, r0
- strh r1, [r5, #0x2]
- b _020033F2
-_020033D4:
- ldrh r1, [r5, #0x6]
- mov r0, #0xf
- bic r1, r0
- mov r0, #0x2
- orr r0, r1
- strh r0, [r5, #0x6]
- ldrh r0, [r5, #0x2]
- mov r1, #0x3f
- bic r0, r1
- lsl r1, r2, #0x10
- lsr r2, r1, #0x10
- mov r1, #0x3f
- and r1, r2
- orr r0, r1
- strh r0, [r5, #0x2]
-_020033F2:
- strh r6, [r5, #0x0]
- ldrh r1, [r5, #0x2]
- ldr r0, _02003454 ; =0xFFFFF83F
- add r3, sp, #0x0
- and r1, r0
- lsl r0, r4, #0x1b
- lsr r0, r0, #0x15
- orr r0, r1
- strh r0, [r5, #0x2]
- ldrh r1, [r5, #0x2]
- ldr r0, _02003458 ; =0xFFFF07FF
- add r2, r1, #0x0
- ldrb r1, [r3, #0x10]
- and r2, r0
- lsl r0, r1, #0x1b
- lsr r0, r0, #0x10
- orr r0, r2
- strh r0, [r5, #0x2]
- ldrh r0, [r5, #0x4]
- ldr r2, _0200345C ; =0xFFFF8000
- ldrh r6, [r3, #0x14]
- lsr r3, r2, #0x11
- and r0, r2
- and r3, r6
- orr r0, r3
- strh r0, [r5, #0x4]
- ldrh r3, [r5, #0x6]
- ldr r0, _02003460 ; =0xFFFFFC0F
- and r0, r3
- ldrh r3, [r5, #0x2]
- lsl r3, r3, #0x1a
- lsr r3, r3, #0x1a
- lsl r3, r3, #0x1a
- lsr r3, r3, #0x16
- orr r0, r3
- strh r0, [r5, #0x6]
- cmp r4, r1
- ldrh r1, [r5, #0x4]
- bhs _02003448
- sub r0, r2, #0x1
- and r0, r1
- strh r0, [r5, #0x4]
- pop {r4-r6, pc}
-_02003448:
- mov r0, #0x2
- lsl r0, r0, #0xe
- orr r0, r1
- strh r0, [r5, #0x4]
- pop {r4-r6, pc}
- nop
-_02003454: .word 0xFFFFF83F
-_02003458: .word 0xFFFF07FF
-_0200345C: .word 0xFFFF8000
-_02003460: .word 0xFFFFFC0F
-
- thumb_func_start FUN_02003464
-FUN_02003464: ; 0x02003464
- push {r4-r6, lr}
- add r4, r1, #0x0
- mov r1, #0x47
- lsl r1, r1, #0x2
- ldrb r2, [r4, r1]
- add r5, r0, #0x0
- cmp r2, #0x1
- bne _020034A4
- mov r2, #0x0
- strb r2, [r4, r1]
- sub r2, r1, #0x2
- ldrh r3, [r4, r2]
- ldr r2, _020034F4 ; =0xFFFFC000
- add r5, r3, #0x0
- and r5, r2
- sub r3, r1, #0x2
- strh r5, [r4, r3]
- sub r3, r1, #0x4
- ldrh r5, [r4, r3]
- ldr r3, _020034F8 ; =0xFFFF0003
- sub r2, r2, #0x1
- and r5, r3
- sub r3, r1, #0x4
- strh r5, [r4, r3]
- sub r3, r1, #0x2
- ldrh r3, [r4, r3]
- sub r1, r1, #0x2
- and r2, r3
- strh r2, [r4, r1]
- bl FUN_0200CAB4
- pop {r4-r6, pc}
-_020034A4:
- sub r0, r1, #0x4
- ldrh r2, [r4, r0]
- lsl r0, r2, #0x1e
- lsr r0, r0, #0x1e
- cmp r0, #0x1
- bne _020034F0
- sub r0, r1, #0x2
- ldrh r0, [r4, r0]
- ldr r3, _020034F4 ; =0xFFFFC000
- lsl r2, r2, #0x10
- lsr r6, r2, #0x12
- lsr r2, r3, #0x12
- and r0, r3
- and r2, r6
- orr r2, r0
- sub r0, r1, #0x2
- strh r2, [r4, r0]
- add r0, r4, #0x0
- bl FUN_02003500
- add r0, r4, #0x0
- bl FUN_02003520
- mov r1, #0x46
- lsl r1, r1, #0x2
- ldrh r0, [r4, r1]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x12
- bne _020034F0
- add r0, r1, #0x2
- ldrh r2, [r4, r0]
- ldr r0, _020034FC ; =0xFFFFBFFF
- and r2, r0
- add r0, r1, #0x2
- strh r2, [r4, r0]
- add r0, r5, #0x0
- bl FUN_0200CAB4
-_020034F0:
- pop {r4-r6, pc}
- nop
-_020034F4: .word 0xFFFFC000
-_020034F8: .word 0xFFFF0003
-_020034FC: .word 0xFFFFBFFF
-
- thumb_func_start FUN_02003500
-FUN_02003500: ; 0x02003500
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r4, #0x0
- mov r6, #0x10
-_02003508:
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_02003540
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x4
- blo _02003508
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02003520
-FUN_02003520: ; 0x02003520
- push {r4-r6, lr}
- mov r4, #0x4
- add r6, r4, #0x0
- add r5, r0, #0x0
- add r6, #0xfc
-_0200352A:
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_02003540
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0xe
- blo _0200352A
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02003540
-FUN_02003540: ; 0x02003540
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r0, #0x46
- lsl r0, r0, #0x2
- ldrh r0, [r5, r0]
- add r4, r1, #0x0
- add r6, r2, #0x0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x12
- bl FUN_02003314
- cmp r0, #0x0
- beq _02003594
- mov r0, #0x14
- mul r0, r4
- add r2, r5, r0
- ldrh r0, [r2, #0x12]
- ldrh r3, [r2, #0xe]
- lsl r1, r0, #0x16
- lsl r3, r3, #0x1a
- lsr r1, r1, #0x1a
- lsr r3, r3, #0x1a
- cmp r1, r3
- bhs _02003584
- ldr r3, _02003598 ; =0xFFFFFC0F
- and r3, r0
- add r0, r1, #0x1
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- lsl r0, r0, #0x1a
- lsr r0, r0, #0x16
- orr r0, r3
- strh r0, [r2, #0x12]
- pop {r4-r6, pc}
-_02003584:
- ldr r1, _02003598 ; =0xFFFFFC0F
- and r0, r1
- strh r0, [r2, #0x12]
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_0200359C
-_02003594:
- pop {r4-r6, pc}
- nop
-_02003598: .word 0xFFFFFC0F
-
- thumb_func_start FUN_0200359C
-FUN_0200359C: ; 0x0200359C
- push {r4-r7, lr}
- sub sp, #0xc
- str r1, [sp, #0x4]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x4]
- mov r1, #0x14
- mul r1, r0
- ldr r0, [sp, #0x0]
- mov r6, #0x0
- add r5, r0, r1
- add r0, r5, #0x0
- str r0, [sp, #0x8]
- add r0, #0xc
- add r7, r2, #0x0
- add r4, r6, #0x0
- str r0, [sp, #0x8]
-_020035BC:
- ldrh r0, [r5, #0xc]
- lsl r1, r6, #0x10
- lsr r1, r1, #0x10
- bl FUN_02003314
- cmp r0, #0x0
- beq _020035DC
- ldr r0, [r5, #0x0]
- lsl r1, r4, #0x1
- ldr r2, [r5, #0x4]
- add r0, r0, r1
- add r1, r2, r1
- ldr r2, [sp, #0x8]
- add r3, r7, #0x0
- bl FUN_020035F8
-_020035DC:
- add r6, r6, #0x1
- add r4, r4, r7
- cmp r6, #0x10
- blo _020035BC
- ldr r1, [sp, #0x4]
- add r5, #0xc
- lsl r1, r1, #0x18
- ldr r0, [sp, #0x0]
- lsr r1, r1, #0x18
- add r2, r5, #0x0
- bl FUN_02003684
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_020035F8
-FUN_020035F8: ; 0x020035F8
- push {r3-r7, lr}
- sub sp, #0x8
- str r0, [sp, #0x4]
- mov r0, #0x0
- add r6, r1, #0x0
- mov r12, r0
- str r2, [sp, #0x0]
- mov lr, r3
- add r0, r3, #0x0
- beq _02003680
-_0200360C:
- ldr r0, [sp, #0x4]
- mov r1, #0x1f
- ldrh r0, [r0, #0x0]
- asr r2, r0, #0x5
- add r5, r2, #0x0
- and r5, r1
- ldr r1, [sp, #0x0]
- asr r4, r0, #0xa
- ldrh r1, [r1, #0x4]
- lsl r1, r1, #0x11
- lsr r3, r1, #0x11
- ldr r1, [sp, #0x0]
- ldrh r1, [r1, #0x2]
- lsl r1, r1, #0x15
- lsr r2, r1, #0x1b
- mov r1, #0x1f
- and r1, r4
- mov r4, #0x1f
- and r0, r4
- and r4, r3
- sub r4, r4, r0
- mul r4, r2
- asr r4, r4, #0x4
- add r0, r0, r4
- lsl r0, r0, #0x18
- lsr r7, r0, #0x18
- asr r4, r3, #0xa
- mov r0, #0x1f
- and r0, r4
- sub r0, r0, r1
- mul r0, r2
- asr r0, r0, #0x4
- add r0, r1, r0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- asr r3, r3, #0x5
- mov r1, #0x1f
- and r1, r3
- sub r1, r1, r5
- mul r1, r2
- asr r1, r1, #0x4
- add r1, r5, r1
- lsl r1, r1, #0x18
- lsl r0, r0, #0xa
- lsr r1, r1, #0x13
- orr r0, r1
- orr r0, r7
- strh r0, [r6, #0x0]
- ldr r0, [sp, #0x4]
- add r6, r6, #0x2
- add r0, r0, #0x2
- str r0, [sp, #0x4]
- mov r0, r12
- add r1, r0, #0x1
- mov r0, lr
- mov r12, r1
- cmp r1, r0
- blo _0200360C
-_02003680:
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02003684
-FUN_02003684: ; 0x02003684
- push {r4-r5}
- ldrh r4, [r2, #0x2]
- lsl r3, r4, #0x10
- lsl r4, r4, #0x15
- lsr r3, r3, #0x1b
- lsr r4, r4, #0x1b
- cmp r4, r3
- bne _020036BE
- mov r3, #0x46
- lsl r3, r3, #0x2
- ldrh r4, [r0, r3]
- mov r2, #0x1
- lsl r2, r1
- lsl r1, r4, #0x10
- lsr r5, r1, #0x12
- add r1, r5, #0x0
- tst r1, r2
- beq _0200371E
- eor r2, r5
- lsl r2, r2, #0x10
- ldr r1, _02003724 ; =0xFFFF0003
- lsr r2, r2, #0x10
- lsl r2, r2, #0x12
- and r1, r4
- lsr r2, r2, #0x10
- orr r1, r2
- strh r1, [r0, r3]
- pop {r4-r5}
- bx lr
-_020036BE:
- ldrh r0, [r2, #0x4]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x1f
- bne _020036F4
- lsl r0, r4, #0x10
- asr r1, r0, #0x10
- ldrh r0, [r2, #0x6]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- add r0, r1, r0
- lsl r0, r0, #0x10
- asr r4, r0, #0x10
- cmp r4, r3
- ble _020036DE
- lsl r0, r3, #0x10
- asr r4, r0, #0x10
-_020036DE:
- ldrh r1, [r2, #0x2]
- ldr r0, _02003728 ; =0xFFFFF83F
- and r1, r0
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x15
- orr r0, r1
- strh r0, [r2, #0x2]
- pop {r4-r5}
- bx lr
-_020036F4:
- lsl r0, r4, #0x10
- asr r1, r0, #0x10
- ldrh r0, [r2, #0x6]
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- sub r0, r1, r0
- lsl r0, r0, #0x10
- asr r4, r0, #0x10
- cmp r4, r3
- bge _0200370C
- lsl r0, r3, #0x10
- asr r4, r0, #0x10
-_0200370C:
- ldrh r1, [r2, #0x2]
- ldr r0, _02003728 ; =0xFFFFF83F
- and r1, r0
- lsl r0, r4, #0x10
- lsr r0, r0, #0x10
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x15
- orr r0, r1
- strh r0, [r2, #0x2]
-_0200371E:
- pop {r4-r5}
- bx lr
- nop
-_02003724: .word 0xFFFF0003
-_02003728: .word 0xFFFFF83F
-
- thumb_func_start FUN_0200372C
-FUN_0200372C: ; 0x0200372C
- push {r3-r7, lr}
- add r6, r0, #0x0
- ldr r0, _020038DC ; =0x0000011A
- ldrh r1, [r6, r0]
- lsl r1, r1, #0x10
- lsr r1, r1, #0x1f
- bne _02003748
- sub r0, r0, #0x2
- ldrh r0, [r6, r0]
- lsl r0, r0, #0x1e
- lsr r0, r0, #0x1e
- cmp r0, #0x1
- beq _02003748
- b _020038DA
-_02003748:
- mov r7, #0x2
- mov r5, #0x0
- add r4, r6, #0x0
- lsl r7, r7, #0xc
-_02003750:
- ldr r0, _020038DC ; =0x0000011A
- ldrh r1, [r6, r0]
- lsl r0, r1, #0x10
- lsr r0, r0, #0x1f
- bne _02003770
- ldr r0, [r4, #0x4]
- cmp r0, #0x0
- beq _0200377C
- lsl r0, r1, #0x12
- lsl r1, r5, #0x10
- lsr r0, r0, #0x12
- lsr r1, r1, #0x10
- bl FUN_02003314
- cmp r0, #0x0
- beq _0200377C
-_02003770:
- ldr r0, [r4, #0x4]
- ldr r1, [r4, #0x8]
- bl DC_FlushRange
- cmp r5, #0xd
- bls _0200377E
-_0200377C:
- b _020038A4
-_0200377E:
- add r0, r5, r5
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0200378A: ; jump table (using 16-bit offset)
- .short _020037A6 - _0200378A - 2; case 0
- .short _020037B2 - _0200378A - 2; case 1
- .short _020037BE - _0200378A - 2; case 2
- .short _020037CA - _0200378A - 2; case 3
- .short _020037D6 - _0200378A - 2; case 4
- .short _020037EA - _0200378A - 2; case 5
- .short _020037FE - _0200378A - 2; case 6
- .short _02003814 - _0200378A - 2; case 7
- .short _0200382A - _0200378A - 2; case 8
- .short _0200383E - _0200378A - 2; case 9
- .short _02003852 - _0200378A - 2; case 10
- .short _02003868 - _0200378A - 2; case 11
- .short _0200387E - _0200378A - 2; case 12
- .short _02003892 - _0200378A - 2; case 13
-_020037A6:
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- bl GX_LoadBGPltt
- b _020038A4
-_020037B2:
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- bl GXS_LoadBGPltt
- b _020038A4
-_020037BE:
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- bl GX_LoadOBJPltt
- b _020038A4
-_020037CA:
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- bl GXS_LoadOBJPltt
- b _020038A4
-_020037D6:
- bl GX_BeginLoadBGExtPltt
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- bl GX_LoadBGExtPltt
- bl GX_EndLoadBGExtPltt
- b _020038A4
-_020037EA:
- bl GX_BeginLoadBGExtPltt
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- add r1, r7, #0x0
- bl GX_LoadBGExtPltt
- bl GX_EndLoadBGExtPltt
- b _020038A4
-_020037FE:
- bl GX_BeginLoadBGExtPltt
- mov r1, #0x1
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- lsl r1, r1, #0xe
- bl GX_LoadBGExtPltt
- bl GX_EndLoadBGExtPltt
- b _020038A4
-_02003814:
- bl GX_BeginLoadBGExtPltt
- mov r1, #0x6
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- lsl r1, r1, #0xc
- bl GX_LoadBGExtPltt
- bl GX_EndLoadBGExtPltt
- b _020038A4
-_0200382A:
- bl GXS_BeginLoadBGExtPltt
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- bl GXS_LoadBGExtPltt
- bl GXS_EndLoadBGExtPltt
- b _020038A4
-_0200383E:
- bl GXS_BeginLoadBGExtPltt
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- add r1, r7, #0x0
- bl GXS_LoadBGExtPltt
- bl GXS_EndLoadBGExtPltt
- b _020038A4
-_02003852:
- bl GXS_BeginLoadBGExtPltt
- mov r1, #0x1
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- lsl r1, r1, #0xe
- bl GXS_LoadBGExtPltt
- bl GXS_EndLoadBGExtPltt
- b _020038A4
-_02003868:
- bl GXS_BeginLoadBGExtPltt
- mov r1, #0x6
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- lsl r1, r1, #0xc
- bl GXS_LoadBGExtPltt
- bl GXS_EndLoadBGExtPltt
- b _020038A4
-_0200387E:
- bl GX_BeginLoadOBJExtPltt
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- bl GX_LoadOBJExtPltt
- bl GX_EndLoadOBJExtPltt
- b _020038A4
-_02003892:
- bl GXS_BeginLoadOBJExtPltt
- ldr r0, [r4, #0x4]
- ldr r2, [r4, #0x8]
- mov r1, #0x0
- bl GXS_LoadOBJExtPltt
- bl GXS_EndLoadOBJExtPltt
-_020038A4:
- add r5, r5, #0x1
- add r4, #0x14
- cmp r5, #0xe
- bge _020038AE
- b _02003750
-_020038AE:
- ldr r3, _020038DC ; =0x0000011A
- ldr r1, _020038E0 ; =0xFFFFC000
- sub r2, r3, #0x2
- ldrh r2, [r6, r2]
- ldrh r0, [r6, r3]
- lsl r2, r2, #0x10
- and r0, r1
- lsr r2, r2, #0x12
- lsr r1, r1, #0x12
- and r1, r2
- orr r0, r1
- strh r0, [r6, r3]
- ldrh r0, [r6, r3]
- lsl r0, r0, #0x12
- lsr r0, r0, #0x12
- bne _020038DA
- sub r0, r3, #0x2
- ldrh r1, [r6, r0]
- mov r0, #0x3
- bic r1, r0
- sub r0, r3, #0x2
- strh r1, [r6, r0]
-_020038DA:
- pop {r3-r7, pc}
- .balign 4
-_020038DC: .word 0x0000011A
-_020038E0: .word 0xFFFFC000
-
- thumb_func_start FUN_020038E4
-FUN_020038E4: ; 0x020038E4
- mov r1, #0x46
- lsl r1, r1, #0x2
- ldrh r0, [r0, r1]
- lsl r0, r0, #0x10
- lsr r0, r0, #0x12
- bx lr
-
- thumb_func_start FUN_020038F0
-FUN_020038F0: ; 0x020038F0
- push {r3-r4}
- ldr r3, _0200390C ; =0x0000011A
- lsl r1, r1, #0x10
- ldrh r4, [r0, r3]
- ldr r2, _02003910 ; =0xFFFF7FFF
- lsr r1, r1, #0x10
- lsl r1, r1, #0x1f
- and r2, r4
- lsr r1, r1, #0x10
- orr r1, r2
- strh r1, [r0, r3]
- pop {r3-r4}
- bx lr
- nop
-_0200390C: .word 0x0000011A
-_02003910: .word 0xFFFF7FFF
-
- thumb_func_start FUN_02003914
-FUN_02003914: ; 0x02003914
- push {r3-r7, lr}
- sub sp, #0x8
- add r6, r0, #0x0
- str r3, [sp, #0x0]
- mov r0, #0x14
- add r4, r1, #0x0
- mul r4, r0
- add r0, sp, #0x10
- ldrh r0, [r0, #0x14]
- add r7, r2, #0x0
- ldr r5, [sp, #0x20]
- str r0, [sp, #0x4]
- lsl r1, r0, #0x1
- add r0, r6, r4
- ldr r0, [r0, #0x8]
- cmp r1, r0
- bls _0200393A
- bl GF_AssertFail
-_0200393A:
- sub r0, r7, #0x1
- cmp r0, #0x1
- bhi _02003952
- ldr r2, [r6, r4]
- lsl r1, r5, #0x1
- add r1, r2, r1
- ldr r2, [sp, #0x4]
- ldr r0, [sp, #0x0]
- sub r2, r2, r5
- lsl r2, r2, #0x1
- bl MIi_CpuClear16
-_02003952:
- cmp r7, #0x0
- beq _0200395A
- cmp r7, #0x2
- bne _0200396E
-_0200395A:
- add r1, r6, r4
- ldr r2, [r1, #0x4]
- lsl r1, r5, #0x1
- add r1, r2, r1
- ldr r2, [sp, #0x4]
- ldr r0, [sp, #0x0]
- sub r2, r2, r5
- lsl r2, r2, #0x1
- bl MIi_CpuClear16
-_0200396E:
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02003974
-FUN_02003974: ; 0x02003974
- push {r4-r7, lr}
- sub sp, #0xc
- str r0, [sp, #0x0]
- add r0, sp, #0x10
- ldrh r0, [r0, #0x10]
- str r1, [sp, #0x4]
- add r7, r2, #0x0
- lsl r1, r0, #0x1b
- lsr r1, r1, #0x1b
- mov r12, r1
- lsl r1, r0, #0x16
- lsl r0, r0, #0x11
- lsr r1, r1, #0x1b
- lsr r0, r0, #0x1b
- mov r2, #0x0
- mov lr, r1
- str r0, [sp, #0x8]
- cmp r7, #0x0
- bls _020039E2
-_0200399A:
- ldr r0, [sp, #0x0]
- lsl r6, r2, #0x1
- ldrh r4, [r0, r6]
- lsl r0, r4, #0x1b
- lsr r1, r0, #0x1b
- lsl r0, r4, #0x16
- lsl r4, r4, #0x11
- lsr r5, r4, #0x1b
- ldr r4, [sp, #0x8]
- lsr r0, r0, #0x1b
- sub r4, r4, r5
- mul r4, r3
- asr r4, r4, #0x4
- add r4, r5, r4
- lsl r5, r4, #0xa
- mov r4, r12
- sub r4, r4, r1
- mul r4, r3
- asr r4, r4, #0x4
- add r1, r1, r4
- mov r4, lr
- sub r4, r4, r0
- mul r4, r3
- asr r4, r4, #0x4
- add r0, r0, r4
- lsl r0, r0, #0x5
- orr r0, r1
- add r1, r5, #0x0
- orr r1, r0
- ldr r0, [sp, #0x4]
- strh r1, [r0, r6]
- add r0, r2, #0x1
- lsl r0, r0, #0x10
- lsr r2, r0, #0x10
- cmp r2, r7
- blo _0200399A
-_020039E2:
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020039E8
-FUN_020039E8: ; 0x020039E8
- push {r3-r7, lr}
- sub sp, #0x8
- add r7, r2, #0x0
- add r5, r0, #0x0
- mov r2, #0x14
- add r6, r1, #0x0
- mul r6, r2
- str r3, [sp, #0x4]
- ldr r1, [r5, r6]
- mov r0, #0x0
- add r4, r5, r6
- cmp r1, #0x0
- beq _02003A0A
- ldr r1, [r4, #0x4]
- cmp r1, #0x0
- beq _02003A0A
- mov r0, #0x1
-_02003A0A:
- cmp r0, #0x0
- bne _02003A12
- bl GF_AssertFail
-_02003A12:
- add r3, sp, #0x10
- ldrh r0, [r3, #0x14]
- add r2, r5, r6
- lsl r1, r7, #0x1
- str r0, [sp, #0x0]
- ldr r0, [r4, #0x0]
- ldr r2, [r2, #0x4]
- add r0, r0, r1
- add r1, r2, r1
- ldrb r3, [r3, #0x10]
- ldr r2, [sp, #0x4]
- bl FUN_02003974
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02003A30
-FUN_02003A30: ; 0x02003A30
- push {r3-r7, lr}
- sub sp, #0x8
- str r3, [sp, #0x4]
- add r5, r0, #0x0
- add r6, r1, #0x0
- add r4, r2, #0x0
- ldr r7, [sp, #0x20]
- beq _02003A60
-_02003A40:
- mov r0, #0x1
- tst r0, r4
- beq _02003A54
- str r7, [sp, #0x0]
- ldr r3, [sp, #0x4]
- add r0, r5, #0x0
- add r1, r6, #0x0
- mov r2, #0x10
- bl FUN_02003974
-_02003A54:
- lsl r0, r4, #0xf
- lsr r4, r0, #0x10
- add r6, #0x20
- add r5, #0x20
- cmp r4, #0x0
- bne _02003A40
-_02003A60:
- add sp, #0x8
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02003A64
-FUN_02003A64: ; 0x02003A64
- push {r4-r7, lr}
- sub sp, #0xc
- str r3, [sp, #0x8]
- add r6, r0, #0x0
- add r7, r1, #0x0
- ldr r0, [sp, #0x20]
- add r5, r2, #0x0
- mov r1, #0x14
- add r2, r7, #0x0
- str r0, [sp, #0x20]
- mul r2, r1
- mov r4, #0x0
- ldr r1, [r6, r2]
- add r0, r4, #0x0
- cmp r1, #0x0
- beq _02003A8E
- add r1, r6, r2
- ldr r1, [r1, #0x4]
- cmp r1, #0x0
- beq _02003A8E
- mov r0, #0x1
-_02003A8E:
- cmp r0, #0x0
- bne _02003A96
- bl GF_AssertFail
-_02003A96:
- cmp r5, #0x0
- beq _02003AC0
-_02003A9A:
- mov r0, #0x1
- tst r0, r5
- beq _02003AB6
- ldr r0, [sp, #0x8]
- lsl r2, r4, #0x10
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x20]
- add r1, r7, #0x0
- str r0, [sp, #0x4]
- add r0, r6, #0x0
- lsr r2, r2, #0x10
- mov r3, #0x10
- bl FUN_020039E8
-_02003AB6:
- lsl r0, r5, #0xf
- lsr r5, r0, #0x10
- add r4, #0x10
- cmp r5, #0x0
- bne _02003A9A
-_02003AC0:
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_02003AC4
-FUN_02003AC4: ; 0x02003AC4
- push {r3-r7, lr}
- mov lr, r1
- mov r12, r2
- add r7, r3, #0x0
- mov r4, #0x0
- cmp r1, #0x0
- ble _02003B3C
- ldr r6, [sp, #0x18]
-_02003AD4:
- ldrh r3, [r0, #0x0]
- mov r1, #0x1f
- add r2, r3, #0x0
- asr r5, r3, #0xa
- and r2, r1
- and r5, r1
- mov r1, #0x1d
- mul r1, r5
- mov r5, #0x4c
- mul r5, r2
- asr r3, r3, #0x5
- mov r2, #0x1f
- and r3, r2
- mov r2, #0x97
- mul r2, r3
- add r2, r5, r2
- add r1, r1, r2
- asr r3, r1, #0x8
- mov r1, r12
- add r2, r1, #0x0
- mul r2, r3
- lsl r1, r2, #0x10
- lsr r1, r1, #0x10
- asr r2, r1, #0x8
- add r1, r7, #0x0
- mul r1, r3
- mul r3, r6
- lsl r1, r1, #0x10
- lsl r3, r3, #0x10
- lsr r1, r1, #0x10
- lsr r3, r3, #0x10
- asr r1, r1, #0x8
- asr r3, r3, #0x8
- cmp r2, #0x1f
- ble _02003B1C
- mov r2, #0x1f
-_02003B1C:
- cmp r1, #0x1f
- ble _02003B22
- mov r1, #0x1f
-_02003B22:
- cmp r3, #0x1f
- ble _02003B28
- mov r3, #0x1f
-_02003B28:
- lsl r3, r3, #0xa
- lsl r1, r1, #0x5
- orr r1, r3
- orr r1, r2
- strh r1, [r0, #0x0]
- add r4, r4, #0x1
- mov r1, lr
- add r0, r0, #0x2
- cmp r4, r1
- blt _02003AD4
-_02003B3C:
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02003B40
-FUN_02003B40: ; 0x02003B40
- push {r3-r5, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- add r0, r1, #0x0
- add r1, r2, #0x0
- add r2, sp, #0x4
- bl GfGfxLoader_GetPlttData
- add r4, r0, #0x0
- bne _02003B58
- bl GF_AssertFail
-_02003B58:
- ldr r0, [sp, #0x1c]
- cmp r0, #0x0
- bne _02003B64
- ldr r0, [sp, #0x4]
- ldr r0, [r0, #0x8]
- str r0, [sp, #0x1c]
-_02003B64:
- ldr r0, [sp, #0x2c]
- ldr r2, [sp, #0x24]
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x4]
- ldr r3, [sp, #0x28]
- ldr r0, [r0, #0xc]
- mov r1, #0x10
- bl FUN_02003AC4
- ldr r0, [sp, #0x1c]
- add r3, sp, #0x8
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0x0]
- ldr r1, [sp, #0x4]
- ldrh r3, [r3, #0x18]
- ldr r1, [r1, #0xc]
- ldr r2, [sp, #0x18]
- add r0, r5, #0x0
- bl FUN_02003054
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x8
- pop {r3-r5, pc}
diff --git a/arm9/asm/unk_020040F4.s b/arm9/asm/unk_020040F4.s
deleted file mode 100644
index cfd9551f..00000000
--- a/arm9/asm/unk_020040F4.s
+++ /dev/null
@@ -1,2288 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .bss
- .global UNK_021C3DD8
-UNK_021C3DD8: ; 0x021C3DD8
- .space 0x8
-
- .global UNK_021C3DE0
-UNK_021C3DE0: ; 0x021C3DE0
- .space 0x7d0
-
- .section .rodata
-
- .global UNK_020ECB8C
-UNK_020ECB8C: ; 0x020ECB8C
- .byte 2, 3, 4, 5, 6, 7, 8, 9, 10
-
- .text
-
- thumb_func_start FUN_020040F4
-FUN_020040F4: ; 0x020040F4
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x5
- bl FUN_02003D38
- strb r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004104
-FUN_02004104: ; 0x02004104
- push {r3, lr}
- mov r0, #0x5
- bl FUN_02003D38
- ldrb r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_02004110
-FUN_02004110: ; 0x02004110
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x9
- bl FUN_02003D38
- strh r4, [r0, #0x0]
- mov r0, #0x0
- bl FUN_02004130
- pop {r4, pc}
-
- thumb_func_start FUN_02004124
-FUN_02004124: ; 0x02004124
- push {r3, lr}
- mov r0, #0x9
- bl FUN_02003D38
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_02004130
-FUN_02004130: ; 0x02004130
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0xa
- bl FUN_02003D38
- strh r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004140
-FUN_02004140: ; 0x02004140
- push {r3, lr}
- mov r0, #0xa
- bl FUN_02003D38
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_0200414C
-FUN_0200414C: ; 0x0200414C
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x1f
- bl FUN_02003D38
- strh r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0200415C
-FUN_0200415C: ; 0x0200415C
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x14
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x15
- bl FUN_02003D38
- cmp r5, #0x33
- bhs _0200417A
- strb r5, [r4, #0x0]
- mov r1, #0x0
- strb r1, [r0, #0x0]
- pop {r3-r5, pc}
-_0200417A:
- strb r5, [r0, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02004180
-FUN_02004180: ; 0x02004180
- push {r3, lr}
- cmp r0, #0x39
- bgt _020041DE
- blt _0200418A
- b _020042C8
-_0200418A:
- cmp r0, #0x35
- bgt _020041CC
- blt _02004192
- b _0200429A
-_02004192:
- cmp r0, #0x33
- bgt _020041C6
- bge _0200427C
- cmp r0, #0xe
- bhi _020041CA
- add r2, r0, r0
- add r2, pc
- ldrh r2, [r2, #0x6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_020041A8: ; jump table (using 16-bit offset)
- .short _0200432C - _020041A8 - 2; case 0
- .short _02004222 - _020041A8 - 2; case 1
- .short _0200422C - _020041A8 - 2; case 2
- .short _02004236 - _020041A8 - 2; case 3
- .short _02004240 - _020041A8 - 2; case 4
- .short _0200424A - _020041A8 - 2; case 5
- .short _0200425E - _020041A8 - 2; case 6
- .short _0200429A - _020041A8 - 2; case 7
- .short _02004268 - _020041A8 - 2; case 8
- .short _02004222 - _020041A8 - 2; case 9
- .short _02004222 - _020041A8 - 2; case 10
- .short _02004254 - _020041A8 - 2; case 11
- .short _02004272 - _020041A8 - 2; case 12
- .short _0200422C - _020041A8 - 2; case 13
- .short _02004222 - _020041A8 - 2; case 14
-_020041C6:
- cmp r0, #0x34
- beq _02004290
-_020041CA:
- b _0200432C
-_020041CC:
- cmp r0, #0x37
- bgt _020041D8
- bge _020042AE
- cmp r0, #0x36
- beq _020042A4
- b _0200432C
-_020041D8:
- cmp r0, #0x38
- beq _020042BE
- b _0200432C
-_020041DE:
- cmp r0, #0x3d
- bgt _020041F8
- blt _020041E6
- b _020042F0
-_020041E6:
- cmp r0, #0x3b
- bgt _020041F2
- bge _020042DC
- cmp r0, #0x3a
- beq _020042D2
- b _0200432C
-_020041F2:
- cmp r0, #0x3c
- beq _020042E6
- b _0200432C
-_020041F8:
- cmp r0, #0x3f
- bgt _02004206
- blt _02004200
- b _02004304
-_02004200:
- cmp r0, #0x3e
- beq _020042FA
- b _0200432C
-_02004206:
- sub r0, #0x40
- cmp r0, #0x3
- bls _0200420E
- b _0200432C
-_0200420E:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0200421A: ; jump table (using 16-bit offset)
- .short _0200430E - _0200421A - 2; case 0
- .short _0200431E - _0200421A - 2; case 1
- .short _02004286 - _0200421A - 2; case 2
- .short _020042AE - _0200421A - 2; case 3
-_02004222:
- mov r0, #0x1
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_0200422C:
- mov r0, #0x2
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_02004236:
- mov r0, #0xd
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_02004240:
- mov r0, #0x1
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_0200424A:
- mov r0, #0x2
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_02004254:
- mov r0, #0x1
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_0200425E:
- mov r0, #0xb
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_02004268:
- mov r0, #0x1
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_02004272:
- mov r0, #0xe
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_0200427C:
- mov r0, #0x3
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_02004286:
- mov r0, #0x6
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_02004290:
- mov r0, #0x5
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_0200429A:
- mov r0, #0x9
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_020042A4:
- mov r0, #0xa
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_020042AE:
- ldr r0, _02004330 ; =0x000005E5
- bl GF_Snd_LoadBank
- ldr r0, _02004330 ; =0x000005E5
- bl GF_Snd_LoadWaveArc
- add r1, r0, #0x0
- b _0200432C
-_020042BE:
- mov r0, #0xc
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_020042C8:
- mov r0, #0x7
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_020042D2:
- mov r0, #0x8
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_020042DC:
- mov r0, #0xf
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_020042E6:
- mov r0, #0x3
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_020042F0:
- mov r0, #0x5
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_020042FA:
- mov r0, #0xf
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_02004304:
- mov r0, #0x4
- bl GF_Snd_LoadGroup
- add r1, r0, #0x0
- b _0200432C
-_0200430E:
- ldr r0, _02004334 ; =0x000005ED
- bl GF_Snd_LoadBank
- ldr r0, _02004334 ; =0x000005ED
- bl GF_Snd_LoadWaveArc
- add r1, r0, #0x0
- b _0200432C
-_0200431E:
- ldr r0, _02004338 ; =0x000005EC
- bl GF_Snd_LoadBank
- ldr r0, _02004338 ; =0x000005EC
- bl GF_Snd_LoadWaveArc
- add r1, r0, #0x0
-_0200432C:
- add r0, r1, #0x0
- pop {r3, pc}
- .balign 4
-_02004330: .word 0x000005E5
-_02004334: .word 0x000005ED
-_02004338: .word 0x000005EC
-
- thumb_func_start FUN_0200433C
-FUN_0200433C: ; 0x0200433C
- push {r3-r7, lr}
- sub sp, #0x8
- add r4, r0, #0x0
- mov r0, #0x14
- add r5, r1, #0x0
- add r6, r2, #0x0
- bl FUN_02003D38
- str r0, [sp, #0x0]
- mov r0, #0x15
- bl FUN_02003D38
- str r0, [sp, #0x4]
- mov r0, #0xd
- bl FUN_02003D38
- add r7, r0, #0x0
- cmp r4, #0x33
- bhs _02004370
- ldr r0, [sp, #0x0]
- ldrb r0, [r0, #0x0]
- cmp r0, r4
- bne _0200437E
- add sp, #0x8
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004370:
- ldr r0, [sp, #0x4]
- ldrb r0, [r0, #0x0]
- cmp r0, r4
- bne _0200437E
- add sp, #0x8
- mov r0, #0x0
- pop {r3-r7, pc}
-_0200437E:
- add r0, r4, #0x0
- bl FUN_0200415C
- cmp r4, #0x39
- bgt _020043DC
- bge _02004458
- cmp r4, #0x35
- bgt _020043CA
- bge _02004458
- cmp r4, #0x33
- bgt _020043C4
- bge _02004458
- cmp r4, #0xe
- bhi _020043C8
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020043A6: ; jump table (using 16-bit offset)
- .short _020044A0 - _020043A6 - 2; case 0
- .short _02004460 - _020043A6 - 2; case 1
- .short _02004484 - _020043A6 - 2; case 2
- .short _02004496 - _020043A6 - 2; case 3
- .short _0200441C - _020043A6 - 2; case 4
- .short _02004430 - _020043A6 - 2; case 5
- .short _02004444 - _020043A6 - 2; case 6
- .short _0200444E - _020043A6 - 2; case 7
- .short _02004496 - _020043A6 - 2; case 8
- .short _02004496 - _020043A6 - 2; case 9
- .short _02004496 - _020043A6 - 2; case 10
- .short _0200443A - _020043A6 - 2; case 11
- .short _02004496 - _020043A6 - 2; case 12
- .short _02004496 - _020043A6 - 2; case 13
- .short _02004472 - _020043A6 - 2; case 14
-_020043C4:
- cmp r4, #0x34
- beq _02004458
-_020043C8:
- b _020044A0
-_020043CA:
- cmp r4, #0x37
- bgt _020043D6
- bge _02004458
- cmp r4, #0x36
- beq _02004458
- b _020044A0
-_020043D6:
- cmp r4, #0x38
- beq _02004458
- b _020044A0
-_020043DC:
- cmp r4, #0x3d
- bgt _020043F4
- bge _02004458
- cmp r4, #0x3b
- bgt _020043EE
- bge _02004458
- cmp r4, #0x3a
- beq _02004458
- b _020044A0
-_020043EE:
- cmp r4, #0x3c
- beq _02004458
- b _020044A0
-_020043F4:
- cmp r4, #0x3f
- bgt _02004400
- bge _02004458
- cmp r4, #0x3e
- beq _02004458
- b _020044A0
-_02004400:
- add r0, r4, #0x0
- sub r0, #0x40
- cmp r0, #0x3
- bhi _020044A0
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02004414: ; jump table (using 16-bit offset)
- .short _02004458 - _02004414 - 2; case 0
- .short _02004458 - _02004414 - 2; case 1
- .short _02004458 - _02004414 - 2; case 2
- .short _02004458 - _02004414 - 2; case 3
-_0200441C:
- mov r0, #0x0
- bl FUN_0200516C
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_020044D4
- mov r0, #0x0
- strh r0, [r7, #0x0]
- b _020044A0
-_02004430:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02004648
- b _020044A0
-_0200443A:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_02004680
- b _020044A0
-_02004444:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_020046A0
- b _020044A0
-_0200444E:
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_020046C4
- b _020044A0
-_02004458:
- add r0, r4, #0x0
- bl FUN_020046E8
- b _020044A0
-_02004460:
- mov r0, #0x1
- bl FUN_0200516C
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02004704
- b _020044A0
-_02004472:
- mov r0, #0x2
- bl FUN_0200516C
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02004704
- b _020044A0
-_02004484:
- mov r0, #0x0
- bl FUN_0200516C
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02004704
- b _020044A0
-_02004496:
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl FUN_02004704
-_020044A0:
- mov r0, #0x1
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020044A8
-FUN_020044A8: ; 0x020044A8
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- ldr r0, [r0, #0x0]
- bl GF_Snd_RestoreState
- mov r0, #0x18
- bl FUN_02003D38
- bl GF_Snd_SaveState
- add r0, r4, #0x0
- bl FUN_02004180
- mov r0, #0x19
- bl FUN_02003D38
- bl GF_Snd_SaveState
- pop {r4, pc}
-
- thumb_func_start FUN_020044D4
-FUN_020044D4: ; 0x020044D4
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r0, #0xb
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- mov r0, #0x1f
- bl FUN_02003D38
- mov r0, #0x0
- bl FUN_02003FF4
- bl FUN_020048EC
- add r4, r0, #0x0
- ldrb r0, [r6, #0x0]
- cmp r0, #0x0
- bne _0200450E
- cmp r4, r5
- bne _0200450E
- bl FUN_02004140
- mov r1, #0x12
- lsl r1, r1, #0x6
- cmp r0, r1
- bne _02004566
-_0200450E:
- mov r0, #0x1
- bl FUN_02004DBC
- bl FUN_02005454
- cmp r4, r5
- beq _02004528
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_020047C8
- bl FUN_0200541C
-_02004528:
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02004560
- mov r0, #0x2
- bl FUN_02004748
- bl GF_Snd_RestoreState
- mov r0, #0x4
- bl FUN_02004180
- mov r0, #0x19
- bl FUN_02003D38
- bl GF_Snd_SaveState
- cmp r4, r5
- beq _02004554
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_020047C8
-_02004554:
- lsl r1, r4, #0x10
- add r0, r5, #0x0
- lsr r1, r1, #0x10
- bl FUN_02004568
- pop {r4-r6, pc}
-_02004560:
- add r0, r5, #0x0
- bl FUN_0200521C
-_02004566:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004568
-FUN_02004568: ; 0x02004568
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x1f
- bl FUN_02003D38
- add r4, r0, #0x0
- ldrh r0, [r4, #0x0]
- bl FUN_02004900
- ldr r1, _020045C0 ; =0x000003E9
- cmp r0, r1
- beq _02004594
- add r1, r1, #0x2
- cmp r0, r1
- beq _02004594
- add r0, r5, #0x0
- mov r1, #0x4
- bl GF_Snd_LoadSeqEx
- bl GF_AssertFail
- b _0200459C
-_02004594:
- ldrh r0, [r4, #0x0]
- mov r1, #0x6
- bl GF_Snd_LoadSeqEx
-_0200459C:
- mov r0, #0x1a
- bl FUN_02003D38
- bl GF_Snd_SaveState
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_020047C8
- mov r0, #0x7f
- mov r1, #0x28
- mov r2, #0x0
- bl FUN_0200538C
- mov r0, #0x0
- bl FUN_02004DBC
- pop {r3-r5, pc}
- .balign 4
-_020045C0: .word 0x000003E9
-
- thumb_func_start FUN_020045C4
-FUN_020045C4: ; 0x020045C4
- push {r3-r7, lr}
- add r7, r0, #0x0
- mov r0, #0x12
- add r5, r1, #0x0
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x1f
- bl FUN_02003D38
- add r4, r0, #0x0
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- beq _020045E4
- cmp r5, #0x0
- bne _02004642
-_020045E4:
- mov r0, #0x1
- bl FUN_02004748
- bl GF_Snd_RestoreState
- ldrh r0, [r4, #0x0]
- mov r1, #0x2
- bl GF_Snd_LoadSeqEx
- mov r0, #0x18
- bl FUN_02003D38
- bl GF_Snd_SaveState
- mov r0, #0x4
- bl FUN_02004180
- mov r0, #0x19
- bl FUN_02003D38
- bl GF_Snd_SaveState
- ldrh r0, [r4, #0x0]
- bl FUN_02004900
- ldr r1, _02004644 ; =0x000003E9
- cmp r0, r1
- beq _02004630
- add r1, r1, #0x2
- cmp r0, r1
- beq _02004630
- add r0, r7, #0x0
- mov r1, #0x4
- bl GF_Snd_LoadSeqEx
- bl GF_AssertFail
- b _02004638
-_02004630:
- ldrh r0, [r4, #0x0]
- mov r1, #0x4
- bl GF_Snd_LoadSeqEx
-_02004638:
- mov r0, #0x1a
- bl FUN_02003D38
- bl GF_Snd_SaveState
-_02004642:
- pop {r3-r7, pc}
- .balign 4
-_02004644: .word 0x000003E9
-
- thumb_func_start FUN_02004648
-FUN_02004648: ; 0x02004648
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- bl FUN_020051AC
- mov r0, #0x2
- bl FUN_02004748
- bl GF_Snd_RestoreState
- mov r0, #0x5
- bl FUN_02004180
- mov r0, #0x19
- bl FUN_02003D38
- bl GF_Snd_SaveState
- mov r0, #0x1
- bl FUN_02004DBC
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004680
-FUN_02004680: ; 0x02004680
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- bl FUN_0200541C
- bl FUN_02004810
- mov r0, #0x4
- bl FUN_020044A8
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
-
- thumb_func_start FUN_020046A0
-FUN_020046A0: ; 0x020046A0
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- bl FUN_0200541C
- mov r0, #0x6
- bl FUN_020044A8
- mov r0, #0x1
- bl FUN_02004DBC
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020046C4
-FUN_020046C4: ; 0x020046C4
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x17
- bl FUN_02003D38
- bl FUN_0200541C
- mov r0, #0x7
- bl FUN_020044A8
- mov r0, #0x1
- bl FUN_02004DBC
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020046E8
-FUN_020046E8: ; 0x020046E8
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02004738
- add r0, r4, #0x0
- bl FUN_02004180
- mov r0, #0x1b
- bl FUN_02003D38
- bl GF_Snd_SaveState
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004704
-FUN_02004704: ; 0x02004704
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x17
- add r4, r1, #0x0
- bl FUN_02003D38
- bl FUN_0200541C
- add r0, r5, #0x0
- bl FUN_020044A8
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02004724
-FUN_02004724: ; 0x02004724
- push {r4, lr}
- add r4, r0, #0x0
- bl GetSoundDataPointer
- bl FUN_020051AC
- add r0, r4, #0x0
- bl FUN_0200521C
- pop {r4, pc}
-
- thumb_func_start FUN_02004738
-FUN_02004738: ; 0x02004738
- push {r3, lr}
- mov r0, #0x4
- bl FUN_02004748
- bl GF_Snd_RestoreState
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004748
-FUN_02004748: ; 0x02004748
- push {r3-r5, lr}
- add r4, r0, #0x0
- bl GetSoundDataPointer
- cmp r4, #0x7
- blt _02004762
- bl GF_AssertFail
- mov r0, #0x1a
- bl FUN_02003D38
- ldr r0, [r0, #0x0]
- pop {r3-r5, pc}
-_02004762:
- cmp r4, #0x6
- bhi _020047C4
- add r0, r4, r4
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02004772: ; jump table (using 16-bit offset)
- .short _02004780 - _02004772 - 2; case 0
- .short _0200478A - _02004772 - 2; case 1
- .short _02004794 - _02004772 - 2; case 2
- .short _0200479E - _02004772 - 2; case 3
- .short _020047A8 - _02004772 - 2; case 4
- .short _020047B2 - _02004772 - 2; case 5
- .short _020047BC - _02004772 - 2; case 6
-_02004780:
- mov r0, #0x16
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_0200478A:
- mov r0, #0x17
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_02004794:
- mov r0, #0x18
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_0200479E:
- mov r0, #0x19
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_020047A8:
- mov r0, #0x1a
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_020047B2:
- mov r0, #0x1b
- bl FUN_02003D38
- add r5, r0, #0x0
- b _020047C4
-_020047BC:
- mov r0, #0x1c
- bl FUN_02003D38
- add r5, r0, #0x0
-_020047C4:
- ldr r0, [r5, #0x0]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020047C8
-FUN_020047C8: ; 0x020047C8
- push {r4-r6, lr}
- add r5, r1, #0x0
- cmp r0, #0x1
- bne _020047DC
- mov r0, #0xb
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r4, #0x0
- b _020047EA
-_020047DC:
- cmp r0, #0x7
- bne _0200480E
- mov r0, #0xc
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r4, #0x7
-_020047EA:
- cmp r5, #0x0
- bne _02004800
- add r0, r4, #0x0
- bl FUN_02003FF4
- bl FUN_020048EC
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- bl FUN_02004110
-_02004800:
- add r0, r4, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- bl NNS_SndPlayerPause
- strb r5, [r6, #0x0]
-_0200480E:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004810
-FUN_02004810: ; 0x02004810
- push {r4, lr}
- mov r0, #0xb
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0xc
- bl FUN_02003D38
- mov r1, #0x0
- strb r1, [r4, #0x0]
- strb r1, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_02004828
-FUN_02004828: ; 0x02004828
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl NNS_SndPlayerMoveVolume
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200483C
-FUN_0200483C: ; 0x0200483C
- push {r4, lr}
- add r4, r1, #0x0
- bpl _02004844
- mov r4, #0x0
-_02004844:
- cmp r4, #0x7f
- ble _0200484A
- mov r4, #0x7f
-_0200484A:
- bl FUN_02003FF4
- add r1, r4, #0x0
- bl NNS_SndPlayerSetInitialVolume
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004858
-FUN_02004858: ; 0x02004858
- push {r3-r5, lr}
- add r5, r1, #0x0
- bl NNS_SndArcGetSeqParam
- cmp r5, #0x1
- beq _02004868
- cmp r5, #0x8
- bne _0200486C
-_02004868:
- mov r4, #0x7f
- b _02004872
-_0200486C:
- cmp r0, #0x0
- beq _0200488A
- ldrb r4, [r0, #0x2]
-_02004872:
- bl FUN_020313EC
- cmp r0, #0x1
- bne _0200488A
- add r0, r4, #0x0
- mov r1, #0x5
- bl _s32_div_f
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl FUN_0200483C
-_0200488A:
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200488C
-FUN_0200488C: ; 0x0200488C
- push {r4, lr}
- add r4, r1, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r1, r4, #0x0
- bl FUN_0200483C
- pop {r4, pc}
-
- thumb_func_start FUN_020048A0
-FUN_020048A0: ; 0x020048A0
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02003FF4
- mov r2, #0x0
- mvn r2, r2
- add r1, r5, #0x0
- add r3, r2, #0x0
- str r4, [sp, #0x0]
- bl NNS_SndArcPlayerStartSeqEx
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020048BC
-FUN_020048BC: ; 0x020048BC
- push {r4, lr}
- add r4, r0, #0x0
- bpl _020048C6
- bl GF_AssertFail
-_020048C6:
- add r0, r4, #0x0
- bl NNS_SndPlayerCountPlayingSeqByPlayerNo
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020048D0
-FUN_020048D0: ; 0x020048D0
- push {r3, lr}
- cmp r0, #0x0
- bne _020048DA
- mov r0, #0xff
- pop {r3, pc}
-_020048DA:
- bl NNS_SndArcGetSeqParam
- cmp r0, #0x0
- bne _020048E6
- mov r0, #0xff
- pop {r3, pc}
-_020048E6:
- ldrb r0, [r0, #0x5]
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020048EC
-FUN_020048EC: ; 0x020048EC
- ldr r3, _020048F0 ; =NNS_SndPlayerGetSeqNo
- bx r3
- .balign 4
-_020048F0: .word NNS_SndPlayerGetSeqNo
-
- thumb_func_start FUN_020048F4
-FUN_020048F4: ; 0x020048F4
- push {r3, lr}
- bl FUN_02004900
- bl NNS_SndArcGetBankInfo
- pop {r3, pc}
-
- thumb_func_start FUN_02004900
-FUN_02004900: ; 0x02004900
- push {r3, lr}
- bl NNS_SndArcGetSeqParam
- cmp r0, #0x0
- bne _0200490E
- mov r0, #0x0
- pop {r3, pc}
-_0200490E:
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004914
-FUN_02004914: ; 0x02004914
- ldr r3, _02004918 ; =MIC_StartAutoSampling
- bx r3
- .balign 4
-_02004918: .word MIC_StartAutoSampling
-
- thumb_func_start FUN_0200491C
-FUN_0200491C: ; 0x0200491C
- push {r3, lr}
- bl GetSoundDataPointer
- bl MIC_StopAutoSampling
- pop {r3, pc}
-
- thumb_func_start FUN_02004928
-FUN_02004928: ; 0x02004928
- push {r3, lr}
- bl MIC_DoSamplingAsync
- pop {r3, pc}
-
- thumb_func_start FUN_02004930
-FUN_02004930: ; 0x02004930
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl GetSoundDataPointer
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- cmp r5, #0xe
- beq _02004954
- cmp r5, #0xf
- beq _02004954
- bl GF_AssertFail
-_02004954:
- cmp r5, #0xe
- bne _02004962
- ldrb r0, [r6, #0x0]
- cmp r0, #0x0
- bne _02004962
- bl GF_AssertFail
-_02004962:
- cmp r5, #0xf
- bne _02004970
- ldrb r0, [r4, #0x0]
- cmp r0, #0x0
- bne _02004970
- bl GF_AssertFail
-_02004970:
- cmp r5, #0xe
- bne _0200497C
- mov r0, #0x0
- bl FUN_02003D38
- pop {r4-r6, pc}
-_0200497C:
- mov r0, #0x1
- bl FUN_02003D38
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004984
-FUN_02004984: ; 0x02004984
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl GetSoundDataPointer
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- cmp r5, #0xe
- beq _020049A8
- cmp r5, #0xf
- beq _020049A8
- bl GF_AssertFail
-_020049A8:
- cmp r5, #0xe
- bne _020049D6
- ldrb r0, [r6, #0x0]
- cmp r0, #0x0
- bne _020049D0
- mov r0, #0x0
- bl FUN_02003D38
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl NNS_SndWaveOutAllocChannel
- str r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020049CA
- mov r0, #0x0
- pop {r4-r6, pc}
-_020049CA:
- mov r0, #0x1
- strb r0, [r6, #0x0]
- b _020049FE
-_020049D0:
- bl GF_AssertFail
- b _020049FE
-_020049D6:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020049FA
- mov r0, #0x1
- bl FUN_02003D38
- add r6, r0, #0x0
- add r0, r5, #0x0
- bl NNS_SndWaveOutAllocChannel
- str r0, [r6, #0x0]
- cmp r0, #0x0
- bne _020049F4
- mov r0, #0x0
- pop {r4-r6, pc}
-_020049F4:
- mov r0, #0x1
- strb r0, [r4, #0x0]
- b _020049FE
-_020049FA:
- bl GF_AssertFail
-_020049FE:
- mov r0, #0x1
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02004A04
-FUN_02004A04: ; 0x02004A04
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl GetSoundDataPointer
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- cmp r5, #0xe
- beq _02004A2A
- cmp r5, #0xf
- beq _02004A2A
- bl GF_AssertFail
- pop {r4-r6, pc}
-_02004A2A:
- cmp r5, #0xe
- bne _02004A4C
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02004A46
- add r0, r5, #0x0
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- bl NNS_SndWaveOutFreeChannel
- mov r0, #0x0
- strb r0, [r6, #0x0]
- pop {r4-r6, pc}
-_02004A46:
- bl GF_AssertFail
- pop {r4-r6, pc}
-_02004A4C:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _02004A64
- add r0, r5, #0x0
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- bl NNS_SndWaveOutFreeChannel
- mov r0, #0x0
- strb r0, [r4, #0x0]
- pop {r4-r6, pc}
-_02004A64:
- bl GF_AssertFail
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02004A6C
-FUN_02004A6C: ; 0x02004A6C
- push {r3-r5, lr}
- sub sp, #0x18
- add r3, r0, #0x0
- ldr r0, [r3, #0x10]
- add r4, r1, #0x0
- str r0, [sp, #0x0]
- ldr r0, [r3, #0x14]
- str r0, [sp, #0x4]
- ldr r0, [r3, #0x18]
- str r0, [sp, #0x8]
- ldr r0, [r3, #0x1c]
- str r0, [sp, #0xc]
- ldr r0, [r3, #0x20]
- str r0, [sp, #0x10]
- ldr r0, [r3, #0x24]
- str r0, [sp, #0x14]
- ldr r0, [r3, #0x0]
- ldr r1, [r3, #0x4]
- ldr r2, [r3, #0x8]
- ldr r0, [r0, #0x0]
- ldr r3, [r3, #0xc]
- bl NNS_SndWaveOutStart
- add r5, r0, #0x0
- bne _02004AA4
- add r0, r4, #0x0
- bl FUN_02004A04
-_02004AA4:
- add r0, r5, #0x0
- add sp, #0x18
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02004AAC
-FUN_02004AAC: ; 0x02004AAC
- push {r3, lr}
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- bl NNS_SndWaveOutStop
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004ABC
-FUN_02004ABC: ; 0x02004ABC
- push {r3, lr}
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- bl NNS_SndWaveOutIsPlaying
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004ACC
-FUN_02004ACC: ; 0x02004ACC
- push {r4, lr}
- add r4, r1, #0x0
- cmp r4, #0x7f
- bls _02004AD6
- mov r4, #0x7f
-_02004AD6:
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- bl NNS_SndWaveOutSetPan
- pop {r4, pc}
-
- thumb_func_start FUN_02004AE4
-FUN_02004AE4: ; 0x02004AE4
- push {r4, lr}
- add r4, r1, #0x0
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- add r1, r4, #0x0
- bl NNS_SndWaveOutSetSpeed
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004AF8
-FUN_02004AF8: ; 0x02004AF8
- push {r3-r5, lr}
- add r4, r0, #0x0
- add r5, r1, #0x0
- bl FUN_020313EC
- cmp r0, #0x1
- bne _02004B20
- add r0, r4, #0x0
- bl FUN_02004930
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x5
- bl _s32_div_f
- add r1, r0, #0x0
- ldr r0, [r4, #0x0]
- bl NNS_SndWaveOutSetVolume
- pop {r3-r5, pc}
-_02004B20:
- add r0, r4, #0x0
- bl FUN_02004930
- ldr r0, [r0, #0x0]
- add r1, r5, #0x0
- bl NNS_SndWaveOutSetVolume
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02004B30
-FUN_02004B30: ; 0x02004B30
- push {r3-r7, lr}
- sub sp, #0x30
- add r6, r0, #0x0
- str r1, [sp, #0x0]
- str r2, [sp, #0x4]
- add r5, r3, #0x0
- bl GetSoundDataPointer
- mov r0, #0x21
- bl FUN_02003D38
- add r4, r0, #0x0
- cmp r5, #0xe
- beq _02004B54
- cmp r5, #0xf
- beq _02004B54
- bl GF_AssertFail
-_02004B54:
- add r0, r6, #0x0
- bl NNS_SndArcGetWaveArcInfo
- add r7, r0, #0x0
- bne _02004B68
- bl GF_AssertFail
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004B68:
- ldr r0, [r7, #0x0]
- lsl r0, r0, #0x8
- lsr r0, r0, #0x8
- bl NNS_SndArcGetFileSize
- add r6, r0, #0x0
- bne _02004B80
- bl GF_AssertFail
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004B80:
- cmp r5, #0xe
- bne _02004BCE
- ldr r0, [sp, #0x48]
- add r1, r6, #0x0
- bl AllocFromHeap
- str r0, [r4, #0x0]
- cmp r0, #0x0
- bne _02004B9C
- bl GF_AssertFail
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004B9C:
- mov r1, #0x0
- add r2, r6, #0x0
- bl memset
- ldr r0, [r7, #0x0]
- ldr r1, [r4, #0x0]
- lsl r0, r0, #0x8
- lsr r0, r0, #0x8
- add r2, r6, #0x0
- mov r3, #0x0
- bl NNS_SndArcReadFile
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- bne _02004BC6
- bl GF_AssertFail
- add sp, #0x30
- mov r0, #0x0
- pop {r3-r7, pc}
-_02004BC6:
- ldr r0, [r4, #0x0]
- add r1, r6, #0x0
- bl FUN_02004C1C
-_02004BCE:
- add r0, r5, #0x0
- bl FUN_02004930
- mov r1, #0x0
- str r1, [sp, #0xc]
- str r0, [sp, #0x8]
- ldr r0, [r4, #0x0]
- str r0, [sp, #0x10]
- ldr r0, _02004C18 ; =0x00003443
- str r1, [sp, #0x14]
- str r0, [sp, #0x20]
- ldr r0, [sp, #0x0]
- str r1, [sp, #0x18]
- str r0, [sp, #0x24]
- mov r0, #0x6
- lsl r0, r0, #0xc
- str r0, [sp, #0x28]
- ldr r0, [sp, #0x4]
- add r1, r5, #0x0
- str r0, [sp, #0x2c]
- add r0, sp, #0x8
- str r6, [sp, #0x1c]
- bl FUN_02004A6C
- add r4, r0, #0x0
- ldr r1, [sp, #0x0]
- add r0, r5, #0x0
- bl FUN_02004AF8
- mov r0, #0xe
- bl FUN_02003D38
- mov r1, #0x1
- strb r1, [r0, #0x0]
- add r0, r4, #0x0
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-_02004C18: .word 0x00003443
-
- thumb_func_start FUN_02004C1C
-FUN_02004C1C: ; 0x02004C1C
- push {r3-r6}
- mov r5, #0x0
- lsr r6, r1, #0x1
- beq _02004C36
- sub r2, r1, #0x1
-_02004C26:
- sub r3, r2, r5
- ldrb r4, [r0, r5]
- ldrb r1, [r0, r3]
- strb r1, [r0, r5]
- add r5, r5, #0x1
- strb r4, [r0, r3]
- cmp r5, r6
- blo _02004C26
-_02004C36:
- pop {r3-r6}
- bx lr
- .balign 4
-
- thumb_func_start FUN_02004C3C
-FUN_02004C3C: ; 0x02004C3C
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl GetSoundDataPointer
- mov r0, #0xe
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x21
- bl FUN_02003D38
- add r6, r0, #0x0
- cmp r5, #0xe
- beq _02004C60
- cmp r5, #0xf
- beq _02004C60
- bl GF_AssertFail
-_02004C60:
- add r0, r5, #0x0
- bl FUN_02004AAC
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _02004C76
- mov r0, #0x0
- strb r0, [r4, #0x0]
- ldr r0, [r6, #0x0]
- bl FreeToHeap
-_02004C76:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004C78
-FUN_02004C78: ; 0x02004C78
- ldr r3, _02004C7C ; =NNS_SndCaptureIsActive
- bx r3
- .balign 4
-_02004C7C: .word NNS_SndCaptureIsActive
-
- thumb_func_start FUN_02004C80
-FUN_02004C80: ; 0x02004C80
- push {r3-r4, lr}
- sub sp, #0x4
- add r4, r0, #0x0
- bl GetSoundDataPointer
- mov r0, #0x3
- bl FUN_02003D38
- mov r1, #0x1
- mov r3, #0xfa
- lsl r1, r1, #0xc
- mov r2, #0x0
- lsl r3, r3, #0x6
- str r4, [sp, #0x0]
- bl NNS_SndCaptureStartReverb
- add sp, #0x4
- pop {r3-r4, pc}
-
- thumb_func_start FUN_02004CA4
-FUN_02004CA4: ; 0x02004CA4
- ldr r3, _02004CA8 ; =NNS_SndCaptureStopReverb
- bx r3
- .balign 4
-_02004CA8: .word NNS_SndCaptureStopReverb
-
- thumb_func_start FUN_02004CAC
-FUN_02004CAC: ; 0x02004CAC
- ldr r3, _02004CB0 ; =NNS_SndCaptureSetReverbVolume
- bx r3
- .balign 4
-_02004CB0: .word NNS_SndCaptureSetReverbVolume
-
- thumb_func_start FUN_02004CB4
-FUN_02004CB4: ; 0x02004CB4
- push {r3-r4, lr}
- sub sp, #0xc
- bl GetSoundDataPointer
- mov r0, #0x4
- bl FUN_02003D38
- mov r1, #0x0
- mov r2, #0x1c
- bl MI_CpuFill8
- mov r0, #0x3
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x4
- bl FUN_02003D38
- mov r2, #0x2
- ldr r1, _02004CF4 ; =FUN_02005068
- str r2, [sp, #0x0]
- str r1, [sp, #0x4]
- str r0, [sp, #0x8]
- lsl r1, r2, #0xb
- ldr r3, _02004CF8 ; =0x000055F0
- add r0, r4, #0x0
- mov r2, #0x0
- bl NNS_SndCaptureStartEffect
- add sp, #0xc
- pop {r3-r4, pc}
- nop
-_02004CF4: .word FUN_02005068
-_02004CF8: .word 0x000055F0
-
- thumb_func_start FUN_02004CFC
-FUN_02004CFC: ; 0x02004CFC
- ldr r3, _02004D00 ; =NNS_SndCaptureStopEffect
- bx r3
- .balign 4
-_02004D00: .word NNS_SndCaptureStopEffect
-
- thumb_func_start FUN_02004D04
-FUN_02004D04: ; 0x02004D04
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x13
- bl FUN_02003D38
- cmp r4, #0x8
- ble _02004D16
- mov r4, #0x8
- b _02004D1C
-_02004D16:
- cmp r4, #0x0
- bge _02004D1C
- mov r4, #0x0
-_02004D1C:
- strb r4, [r0, #0x0]
- pop {r4, pc}
-
- thumb_func_start FUN_02004D20
-FUN_02004D20: ; 0x02004D20
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl NNS_SndPlayerSetTrackPitch
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02004D34
-FUN_02004D34: ; 0x02004D34
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl FUN_02004D20
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02004D4C
-FUN_02004D4C: ; 0x02004D4C
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl NNS_SndPlayerSetTrackPan
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02004D60
-FUN_02004D60: ; 0x02004D60
- push {r4, lr}
- add r4, r0, #0x0
- bl NNS_SndSetMonoFlag
- ldr r0, _02004D70 ; =UNK_021C3DD8
- str r4, [r0, #0x0]
- pop {r4, pc}
- nop
-_02004D70: .word UNK_021C3DD8
-
- thumb_func_start FUN_02004D74
-FUN_02004D74: ; 0x02004D74
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x6
- bl FUN_02003D38
- str r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004D84
-FUN_02004D84: ; 0x02004D84
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x7
- bl FUN_02003D38
- str r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004D94
-FUN_02004D94: ; 0x02004D94
- push {r3, lr}
- mov r0, #0x7
- bl FUN_02003D38
- ldrh r1, [r0, #0x0]
- cmp r1, #0x0
- bne _02004DAA
- mov r1, #0x0
- strh r1, [r0, #0x0]
- add r0, r1, #0x0
- pop {r3, pc}
-_02004DAA:
- sub r1, r1, #0x1
- strh r1, [r0, #0x0]
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02004DB4
-FUN_02004DB4: ; 0x02004DB4
- ldr r0, _02004DB8 ; =UNK_021C3DE0
- bx lr
- .balign 4
-_02004DB8: .word UNK_021C3DE0
-
- thumb_func_start FUN_02004DBC
-FUN_02004DBC: ; 0x02004DBC
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x12
- bl FUN_02003D38
- strb r4, [r0, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02004DCC
-FUN_02004DCC: ; 0x02004DCC
- push {r4-r7, lr}
- sub sp, #0xc
- add r5, r0, #0x0
- mov r0, #0x15
- add r6, r1, #0x0
- add r7, r2, #0x0
- str r3, [sp, #0x8]
- bl FUN_02003D38
- add r4, r0, #0x0
- add r0, sp, #0x10
- ldrb r0, [r0, #0x10]
- ldr r3, [sp, #0x8]
- add r1, r6, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x24]
- add r2, r7, #0x0
- str r0, [sp, #0x4]
- add r0, r5, #0x0
- bl FUN_02004E44
- mov r0, #0x0
- strb r0, [r4, #0x0]
- mov r0, #0x5
- bl FUN_02003CE8
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02004E08
-FUN_02004E08: ; 0x02004E08
- push {r4-r7, lr}
- sub sp, #0xc
- add r5, r0, #0x0
- mov r0, #0x8
- add r6, r1, #0x0
- add r7, r2, #0x0
- str r3, [sp, #0x8]
- bl FUN_02003D38
- add r4, r0, #0x0
- add r0, sp, #0x10
- ldrb r0, [r0, #0x14]
- ldr r3, [sp, #0x8]
- add r1, r6, #0x0
- str r0, [sp, #0x0]
- ldr r0, [sp, #0x28]
- add r2, r7, #0x0
- str r0, [sp, #0x4]
- add r0, r5, #0x0
- bl FUN_02004E44
- ldr r0, [sp, #0x20]
- str r0, [r4, #0x0]
- mov r0, #0x6
- bl FUN_02003CE8
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02004E44
-FUN_02004E44: ; 0x02004E44
- push {r3-r7, lr}
- add r6, r2, #0x0
- mov r0, #0x2
- add r5, r1, #0x0
- add r7, r3, #0x0
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x0
- add r1, r6, #0x0
- bl FUN_020053CC
- mov r0, #0x0
- bl FUN_02004110
- add r0, r5, #0x0
- bl FUN_02004130
- add r0, r7, #0x0
- bl FUN_02004D84
- add r0, r5, #0x0
- bl FUN_020048F4
- str r0, [r4, #0x0]
- add r0, sp, #0x8
- ldrb r0, [r0, #0x10]
- bl FUN_02004DBC
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02004E80
-FUN_02004E80: ; 0x02004E80
- cmp r0, #0x0
- bne _02004E88
- mov r0, #0x0
- bx lr
-_02004E88:
- add r0, #0xc
- bx lr
-
- thumb_func_start FUN_02004E8C
-FUN_02004E8C: ; 0x02004E8C
- cmp r0, #0x0
- bne _02004E94
- mov r0, #0x0
- bx lr
-_02004E94:
- ldr r0, [r0, #0x8]
- bx lr
-
- thumb_func_start FUN_02004E98
-FUN_02004E98: ; 0x02004E98
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x5
- bl FUN_02004748
- bl GF_Snd_RestoreState
- lsl r0, r5, #0x10
- lsr r4, r0, #0x10
- ldr r0, _02004ECC ; =0x000001B9
- cmp r4, r0
- beq _02004EBC
- add r0, #0x36
- cmp r5, r0
- bgt _02004EBA
- cmp r5, #0x0
- bne _02004EBC
-_02004EBA:
- mov r4, #0x1
-_02004EBC:
- add r0, r4, #0x0
- bl GF_Snd_LoadWaveArc
- add r0, r4, #0x0
- bl FUN_02004ED0
- pop {r3-r5, pc}
- nop
-_02004ECC: .word 0x000001B9
-
- thumb_func_start FUN_02004ED0
-FUN_02004ED0: ; 0x02004ED0
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x20
- bl FUN_02003D38
- add r4, r0, #0x0
- lsl r0, r5, #0x10
- ldr r1, _02004F24 ; =0x000001B9
- lsr r0, r0, #0x10
- cmp r0, r1
- beq _02004EF2
- add r1, #0x36
- cmp r5, r1
- bgt _02004EF0
- cmp r5, #0x0
- bne _02004EF2
-_02004EF0:
- mov r0, #0x1
-_02004EF2:
- bl NNS_SndArcGetWaveArcInfo
- cmp r0, #0x0
- bne _02004F02
- bl GF_AssertFail
- mov r0, #0x0
- pop {r3-r5, pc}
-_02004F02:
- ldr r0, [r0, #0x0]
- lsl r0, r0, #0x8
- lsr r0, r0, #0x8
- bl NNS_SndArcGetFileAddress
- cmp r0, #0x0
- bne _02004F18
- bl GF_AssertFail
- mov r0, #0x0
- pop {r3-r5, pc}
-_02004F18:
- mov r1, #0x0
- bl SND_GetWaveDataAddress
- str r0, [r4, #0x0]
- pop {r3-r5, pc}
- nop
-_02004F24: .word 0x000001B9
-
- thumb_func_start FUN_02004F28
-FUN_02004F28: ; 0x02004F28
- push {r4-r6, lr}
- mov r0, #0x1
- add r5, r1, #0x0
- add r6, r2, #0x0
- bl FUN_02004F64
- mov r1, #0x3
- add r4, r0, #0x0
- add r0, r6, #0x0
- lsl r1, r1, #0x8
- ldr r5, [r5, #0x8]
- bl _s32_div_f
- lsl r1, r0, #0x1
- bpl _02004F50
- mov r0, #0x20
- bl _s32_div_f
- neg r0, r0
- b _02004F5A
-_02004F50:
- cmp r1, #0x0
- bne _02004F58
- mov r0, #0x20
- b _02004F5A
-_02004F58:
- lsl r0, r1, #0x5
-_02004F5A:
- mul r0, r4
- cmp r0, r5
- blo _02004F62
- mov r0, #0x0
-_02004F62:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02004F64
-FUN_02004F64: ; 0x02004F64
- push {r3, lr}
- bl FUN_02003FF4
- bl NNS_SndPlayerGetTick
- pop {r3, pc}
-
- thumb_func_start FUN_02004F70
-FUN_02004F70: ; 0x02004F70
- push {r3-r7, lr}
- sub sp, #0x8
- str r0, [sp, #0x0]
- add r4, r1, #0x0
- add r6, r2, #0x0
- ldr r1, [sp, #0x0]
- mov r0, #0x1
- add r2, r3, #0x0
- bl FUN_02004F28
- add r1, r0, #0x0
- mov r12, r0
- sub r1, #0x64
- bpl _02004F8E
- mov r1, #0x0
-_02004F8E:
- ldr r0, [sp, #0x0]
- mov r3, #0x0
- add r0, r0, r1
- ldrb r0, [r0, #0xc]
- add r7, r3, #0x0
- cmp r0, #0x80
- bhs _02004FA0
- mov r0, #0x1
- b _02004FA2
-_02004FA0:
- sub r0, r3, #0x1
-_02004FA2:
- lsl r0, r0, #0x18
- asr r5, r0, #0x18
- mov r0, r12
- cmp r1, r0
- bhs _02005022
-_02004FAC:
- mov r0, #0x0
- cmp r5, #0x0
- ble _02004FC6
- ldr r2, [sp, #0x0]
- add r2, r2, r1
- str r2, [sp, #0x4]
- ldrb r2, [r2, #0xc]
- cmp r2, #0x80
- bls _02004FC2
- mov r0, #0x1
- b _02004FD8
-_02004FC2:
- add r3, r3, #0x1
- b _02004FD8
-_02004FC6:
- ldr r2, [sp, #0x0]
- add r2, r2, r1
- str r2, [sp, #0x4]
- ldrb r2, [r2, #0xc]
- cmp r2, #0x80
- bhs _02004FD6
- mov r0, #0x1
- b _02004FD8
-_02004FD6:
- add r3, r3, #0x1
-_02004FD8:
- cmp r0, #0x1
- bne _0200501A
- ldr r5, _02005064 ; =UNK_020ECB8C
- mov r2, #0x0
-_02004FE0:
- ldrb r0, [r5, #0x0]
- cmp r3, r0
- bge _02004FEA
- add r7, r2, #0x0
- b _02004FF2
-_02004FEA:
- add r2, r2, #0x1
- add r5, r5, #0x1
- cmp r2, #0x9
- blt _02004FE0
-_02004FF2:
- cmp r7, r6
- blt _02004FF8
- sub r7, r6, #0x1
-_02004FF8:
- cmp r3, #0x0
- beq _02005006
- sub r0, r6, #0x1
- sub r0, r0, r7
- ldrb r2, [r4, r0]
- add r2, r2, #0x1
- strb r2, [r4, r0]
-_02005006:
- ldr r0, [sp, #0x4]
- mov r3, #0x0
- ldrb r0, [r0, #0xc]
- cmp r0, #0x80
- bhs _02005014
- mov r0, #0x1
- b _02005016
-_02005014:
- sub r0, r3, #0x1
-_02005016:
- lsl r0, r0, #0x18
- asr r5, r0, #0x18
-_0200501A:
- add r1, r1, #0x2
- mov r0, r12
- cmp r1, r0
- blo _02004FAC
-_02005022:
- mov r2, #0x0
- cmp r6, #0x0
- ble _02005038
- mov r0, #0x9
-_0200502A:
- ldrb r1, [r4, r2]
- cmp r1, #0xa
- blo _02005032
- strb r0, [r4, r2]
-_02005032:
- add r2, r2, #0x1
- cmp r2, r6
- blt _0200502A
-_02005038:
- sub r2, r6, #0x1
- mov r3, #0x0
- cmp r2, #0x0
- ble _02005060
-_02005040:
- ldrb r0, [r4, r3]
- add r1, r4, r3
- cmp r0, #0x0
- bne _0200505A
- ldrb r0, [r1, #0x1]
- cmp r0, #0x0
- beq _0200505A
- add r0, r3, #0x1
- ldrb r0, [r4, r0]
- add sp, #0x8
- lsr r0, r0, #0x1
- strb r0, [r1, #0x0]
- pop {r3-r7, pc}
-_0200505A:
- add r3, r3, #0x1
- cmp r3, r2
- blt _02005040
-_02005060:
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-_02005064: .word UNK_020ECB8C
-
- thumb_func_start FUN_02005068
-FUN_02005068: ; 0x02005068
- push {r3-r7, lr}
- sub sp, #0x30
- add r5, r0, #0x0
- ldr r0, [sp, #0x48]
- add r6, r1, #0x0
- str r0, [sp, #0xc]
- mov r0, #0x13
- str r2, [sp, #0x0]
- add r4, r3, #0x0
- bl FUN_02003D38
- add r7, r0, #0x0
- cmp r4, #0x1
- beq _0200508A
- ldr r0, [sp, #0x0]
- lsr r0, r0, #0x1
- str r0, [sp, #0x0]
-_0200508A:
- ldrb r2, [r7, #0x0]
- cmp r2, #0x0
- beq _0200515A
- mov r0, #0x0
- cmp r2, #0x0
- ble _020050BC
- add r1, sp, #0x10
-_02005098:
- ldr r3, [sp, #0x0]
- sub r2, r3, r2
- add r2, r0, r2
- lsl r2, r2, #0x1
- ldrsh r2, [r5, r2]
- strh r2, [r1, #0x0]
- ldrb r3, [r7, #0x0]
- ldr r2, [sp, #0x0]
- sub r2, r2, r3
- add r2, r0, r2
- lsl r2, r2, #0x1
- ldrsh r2, [r6, r2]
- add r0, r0, #0x1
- strh r2, [r1, #0x2]
- ldrb r2, [r7, #0x0]
- add r1, r1, #0x4
- cmp r0, r2
- blt _02005098
-_020050BC:
- ldr r0, [sp, #0x0]
- sub r4, r0, #0x1
- sub r0, r2, #0x1
- cmp r4, r0
- blt _02005126
- lsl r1, r4, #0x1
- add r0, r5, r1
- str r0, [sp, #0x8]
- add r0, r6, r1
- str r0, [sp, #0x4]
-_020050D0:
- mov r0, #0x0
- add r1, r0, #0x0
- cmp r2, #0x0
- ble _020050E6
-_020050D8:
- sub r3, r4, r1
- lsl r3, r3, #0x1
- ldrsh r3, [r5, r3]
- add r1, r1, #0x1
- add r0, r0, r3
- cmp r1, r2
- blt _020050D8
-_020050E6:
- add r1, r2, #0x0
- bl _s32_div_f
- ldr r1, [sp, #0x8]
- strh r0, [r1, #0x0]
- mov r0, #0x0
- ldrb r1, [r7, #0x0]
- add r2, r0, #0x0
- cmp r1, #0x0
- ble _02005108
-_020050FA:
- sub r3, r4, r2
- lsl r3, r3, #0x1
- ldrsh r3, [r6, r3]
- add r2, r2, #0x1
- add r0, r0, r3
- cmp r2, r1
- blt _020050FA
-_02005108:
- bl _s32_div_f
- ldr r1, [sp, #0x4]
- sub r4, r4, #0x1
- strh r0, [r1, #0x0]
- ldr r0, [sp, #0x8]
- ldrb r2, [r7, #0x0]
- sub r0, r0, #0x2
- str r0, [sp, #0x8]
- add r0, r1, #0x0
- sub r0, r0, #0x2
- str r0, [sp, #0x4]
- sub r0, r2, #0x1
- cmp r4, r0
- bge _020050D0
-_02005126:
- mov r1, #0x0
- cmp r2, #0x0
- ble _0200514A
- add r0, sp, #0x10
- mov r4, #0x2
-_02005130:
- mov r2, #0x0
- ldrsh r3, [r0, r2]
- ldr r2, [sp, #0xc]
- add r1, r1, #0x1
- strh r3, [r2, #0x0]
- ldrsh r3, [r0, r4]
- add r0, r0, #0x4
- strh r3, [r2, #0x2]
- add r2, r2, #0x4
- str r2, [sp, #0xc]
- ldrb r2, [r7, #0x0]
- cmp r1, r2
- blt _02005130
-_0200514A:
- ldr r1, [sp, #0x0]
- add r0, r5, #0x0
- bl DC_FlushRange
- ldr r1, [sp, #0x0]
- add r0, r6, #0x0
- bl DC_FlushRange
-_0200515A:
- add sp, #0x30
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02005160
-FUN_02005160: ; 0x02005160
- ldr r3, _02005168 ; =NNS_SndPlayerSetAllocatableChannel
- add r1, r0, #0x0
- mov r0, #0x7
- bx r3
- .balign 4
-_02005168: .word NNS_SndPlayerSetAllocatableChannel
-
- thumb_func_start FUN_0200516C
-FUN_0200516C: ; 0x0200516C
- push {r3, lr}
- cmp r0, #0x0
- bne _02005180
- ldr r0, _020051A4 ; =0x000007FF
- bl FUN_02005160
- mov r0, #0x0
- bl FUN_02004CA4
- b _0200519C
-_02005180:
- cmp r0, #0x1
- ldr r0, _020051A8 ; =0x00007FFF
- bne _02005192
- bl FUN_02005160
- mov r0, #0x1e
- bl FUN_02004C80
- b _0200519C
-_02005192:
- bl FUN_02005160
- mov r0, #0xf
- bl FUN_02004C80
-_0200519C:
- bl FUN_02004C78
- pop {r3, pc}
- nop
-_020051A4: .word 0x000007FF
-_020051A8: .word 0x00007FFF
-
- thumb_func_start FUN_020051AC
-FUN_020051AC: ; 0x020051AC
- push {r3, lr}
- bl FUN_02005404
- cmp r0, #0x0
- bne _020051E0
- mov r0, #0x0
- bl FUN_02003FF4
- bl FUN_020048EC
- mov r1, #0x0
- mvn r1, r1
- cmp r0, r1
- beq _020051E0
- bl FUN_02004124
- ldr r1, _020051E8 ; =0x0000047E
- cmp r0, r1
- beq _020051E0
- bl FUN_02005454
- mov r0, #0x1
- add r1, r0, #0x0
- bl FUN_020047C8
- pop {r3, pc}
-_020051E0:
- bl FUN_0200541C
- pop {r3, pc}
- nop
-_020051E8: .word 0x0000047E
-
- thumb_func_start FUN_020051EC
-FUN_020051EC: ; 0x020051EC
- ldr r3, _020051F0 ; =NNS_SndPlayerSetPlayerVolume
- bx r3
- .balign 4
-_020051F0: .word NNS_SndPlayerSetPlayerVolume
diff --git a/arm9/asm/unk_020051F4.s b/arm9/asm/unk_020051F4.s
deleted file mode 100644
index d6d06005..00000000
--- a/arm9/asm/unk_020051F4.s
+++ /dev/null
@@ -1,1319 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020051F4
-FUN_020051F4: ; 0x020051F4
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r4, r0, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_0200526C
- add r0, r6, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200521C
-FUN_0200521C: ; 0x0200521C
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- add r4, r0, #0x0
- bl FUN_02004018
- add r6, r0, #0x0
- cmp r4, #0x7
- bne _0200523E
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_02005288
- add r4, r0, #0x0
- b _02005258
-_0200523E:
- cmp r4, #0x1
- bne _02005250
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_020052B8
- add r4, r0, #0x0
- b _02005258
-_02005250:
- bl GF_AssertFail
- mov r0, #0x0
- pop {r4-r6, pc}
-_02005258:
- mov r0, #0x0
- bl FUN_02004DBC
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl FUN_0200526C
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0200526C
-FUN_0200526C: ; 0x0200526C
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02004110
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- mov r0, #0x1
- bl FUN_02003CE8
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02005288
-FUN_02005288: ; 0x02005288
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x3
- add r4, r2, #0x0
- bl FUN_02004748
- bl GF_Snd_RestoreState
- add r0, r5, #0x0
- bl GF_Snd_LoadSeq
- mov r0, #0x1a
- bl FUN_02003D38
- bl GF_Snd_SaveState
- add r0, r4, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_020052B8
-FUN_020052B8: ; 0x020052B8
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- mov r0, #0x12
- add r6, r2, #0x0
- bl FUN_02003D38
- mov r0, #0x1f
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x0
- bl FUN_02003FF4
- bl FUN_020048EC
- bl FUN_02004900
- add r1, r0, #0x0
- add r0, r5, #0x0
- bl FUN_020045C4
- add r0, r6, #0x0
- bl FUN_02003FF4
- add r6, r0, #0x0
- ldrh r0, [r4, #0x0]
- bl FUN_02004900
- mov r1, #0x0
- mvn r1, r1
- add r2, r0, #0x0
- add r0, r6, #0x0
- add r3, r1, #0x0
- str r5, [sp, #0x0]
- bl NNS_SndArcPlayerStartSeqEx
- add sp, #0x4
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start FUN_02005308
-FUN_02005308: ; 0x02005308
- push {r3-r5, lr}
- add r5, r1, #0x0
- cmp r0, #0x4
- beq _02005318
- bl GF_AssertFail
- mov r0, #0x0
- pop {r3-r5, pc}
-_02005318:
- add r0, r5, #0x0
- bl FUN_020048D0
- cmp r0, #0x7
- beq _0200532A
- bl GF_AssertFail
- mov r0, #0x0
- pop {r3-r5, pc}
-_0200532A:
- add r0, r5, #0x0
- mov r1, #0x1
- bl GF_Snd_LoadSeqEx
- mov r0, #0x7
- bl FUN_02003FF4
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02004110
- mov r0, #0x1
- bl FUN_02003CE8
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005350
-FUN_02005350: ; 0x02005350
- push {r4, lr}
- add r4, r0, #0x0
- bl NNS_SndPlayerStopSeqBySeqNo
- add r0, r4, #0x0
- bl FUN_020048D0
- cmp r0, #0xff
- beq _0200536E
- bl FUN_02004018
- bl FUN_02003FF4
- bl NNS_SndHandleReleaseSeq
-_0200536E:
- bl FUN_02005374
- pop {r4, pc}
-
- thumb_func_start FUN_02005374
-FUN_02005374: ; 0x02005374
- push {r3, lr}
- mov r0, #0x0
- bl FUN_02004110
- mov r0, #0x0
- bl FUN_02004130
- mov r0, #0x0
- bl FUN_02003CE8
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0200538C
-FUN_0200538C: ; 0x0200538C
- push {r3-r7, lr}
- add r6, r0, #0x0
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _020053C8
- bl FUN_02004018
- add r7, r0, #0x0
- cmp r4, #0x0
- bne _020053B2
- mov r1, #0x0
- add r2, r1, #0x0
- bl FUN_02004828
-_020053B2:
- add r0, r7, #0x0
- add r1, r6, #0x0
- add r2, r5, #0x0
- bl FUN_02004828
- add r0, r5, #0x0
- bl FUN_02004D74
- mov r0, #0x3
- bl FUN_02003CE8
-_020053C8:
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_020053CC
-FUN_020053CC: ; 0x020053CC
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl FUN_02004124
- bl FUN_020048D0
- add r6, r0, #0x0
- cmp r6, #0xff
- beq _02005402
- bl FUN_02005404
- cmp r0, #0x0
- bne _020053FC
- add r0, r6, #0x0
- bl FUN_02004018
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl FUN_02004828
- add r0, r4, #0x0
- bl FUN_02004D74
-_020053FC:
- mov r0, #0x4
- bl FUN_02003CE8
-_02005402:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005404
-FUN_02005404: ; 0x02005404
- push {r3, lr}
- mov r0, #0x6
- bl FUN_02003D38
- ldrh r0, [r0, #0x0]
- pop {r3, pc}
-
- thumb_func_start FUN_02005410
-FUN_02005410: ; 0x02005410
- push {r3, lr}
- bl FUN_020048D0
- bl FUN_020048BC
- pop {r3, pc}
-
- thumb_func_start FUN_0200541C
-FUN_0200541C: ; 0x0200541C
- push {r3-r5, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r5, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x0
- bl NNS_SndPlayerStopSeqAll
- ldrb r0, [r5, #0x0]
- cmp r0, #0x1
- bne _02005440
- mov r0, #0xe
- bl FUN_02004AAC
-_02005440:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _0200544C
- mov r0, #0xf
- bl FUN_02004AAC
-_0200544C:
- mov r0, #0x0
- bl FUN_02003CE8
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005454
-FUN_02005454: ; 0x02005454
- push {r3-r7, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r7, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x7
- bl FUN_02003FF4
- mov r1, #0x0
- bl NNS_SndPlayerStopSeq
- bl FUN_02005374
- mov r5, #0x0
- add r4, r5, #0x0
-_0200547A:
- add r0, r5, #0x3
- add r1, r4, #0x0
- bl FUN_020054F8
- add r5, r5, #0x1
- cmp r5, #0x4
- blt _0200547A
- mov r0, #0x0
- bl FUN_02005614
- ldrb r0, [r7, #0x0]
- cmp r0, #0x1
- bne _0200549A
- mov r0, #0xe
- bl FUN_02004AAC
-_0200549A:
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _020054A6
- mov r0, #0xf
- bl FUN_02004AAC
-_020054A6:
- pop {r3-r7, pc}
-
- thumb_func_start FUN_020054A8
-FUN_020054A8: ; 0x020054A8
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl PlaySE
- add r6, r0, #0x0
- ldr r1, _020054C4 ; =0x0000FFFF
- add r0, r5, #0x0
- add r2, r4, #0x0
- bl FUN_02005530
- add r0, r6, #0x0
- pop {r4-r6, pc}
- nop
-_020054C4: .word 0x0000FFFF
-
- thumb_func_start PlaySE
-PlaySE: ; 0x020054C8
- push {r4-r6, lr}
- add r5, r0, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- add r4, r0, #0x0
- bl FUN_02003FF4
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- add r6, r0, #0x0
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- add r0, r6, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020054F0
-FUN_020054F0: ; 0x020054F0
- ldr r3, _020054F4 ; =NNS_SndPlayerStopSeqBySeqNo
- bx r3
- .balign 4
-_020054F4: .word NNS_SndPlayerStopSeqBySeqNo
-
- thumb_func_start FUN_020054F8
-FUN_020054F8: ; 0x020054F8
- push {r4, lr}
- add r4, r1, #0x0
- bl FUN_02003FF4
- add r1, r4, #0x0
- bl NNS_SndPlayerStopSeq
- pop {r4, pc}
-
- thumb_func_start FUN_02005508
-FUN_02005508: ; 0x02005508
- push {r3, lr}
- bl FUN_020048D0
- bl FUN_020048BC
- pop {r3, pc}
-
- thumb_func_start FUN_02005514
-FUN_02005514: ; 0x02005514
- push {r4, lr}
- mov r4, #0x0
-_02005518:
- add r0, r4, #0x3
- bl FUN_020048BC
- cmp r0, #0x1
- bne _02005526
- mov r0, #0x1
- pop {r4, pc}
-_02005526:
- add r4, r4, #0x1
- cmp r4, #0x4
- blt _02005518
- mov r0, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02005530
-FUN_02005530: ; 0x02005530
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r4, r2, #0x0
- bl FUN_020048D0
- bl FUN_02004018
- bl FUN_02003FF4
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl NNS_SndPlayerSetTrackPan
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0200554C
-FUN_0200554C: ; 0x0200554C
- push {r3-r7, lr}
- add r6, r0, #0x0
- mov r0, #0x3
- bl FUN_02004018
- ldr r7, _02005574 ; =0x0000FFFF
- add r4, r0, #0x0
- mov r5, #0x0
-_0200555C:
- add r0, r4, r5
- bl FUN_02003FF4
- add r1, r7, #0x0
- add r2, r6, #0x0
- bl NNS_SndPlayerSetTrackPan
- add r5, r5, #0x1
- cmp r5, #0x4
- blt _0200555C
- pop {r3-r7, pc}
- nop
-_02005574: .word 0x0000FFFF
-
- thumb_func_start FUN_02005578
-FUN_02005578: ; 0x02005578
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x11
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x23
- bl FUN_02003D38
- ldr r1, _02005610 ; =0x000001B9
- cmp r5, r1
- beq _0200559C
- add r1, #0x36
- cmp r5, r1
- bhi _0200559A
- cmp r5, #0x0
- bne _0200559C
-_0200559A:
- mov r5, #0x1
-_0200559C:
- ldr r1, _02005610 ; =0x000001B9
- cmp r5, r1
- bne _020055BC
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- mov r2, #0x7f
- add r3, r1, #0x0
- bl FUN_02005D48
- cmp r0, #0x1
- bne _020055BC
- mov r0, #0x0
- bl FUN_02005E80
- mov r0, #0x1
- pop {r3-r5, pc}
-_020055BC:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x0
- bne _020055E8
- mov r0, #0x0
- bl FUN_02005614
- mov r0, #0x1
- bl FUN_02003FF4
- mov r1, #0x2
- str r1, [sp, #0x0]
- sub r1, r1, #0x3
- add r2, r5, #0x0
- add r3, r1, #0x0
- bl NNS_SndArcPlayerStartSeqEx
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x1
- bl FUN_02004858
- b _02005606
-_020055E8:
- mov r0, #0x8
- bl FUN_02003FF4
- mov r1, #0x2
- str r1, [sp, #0x0]
- sub r1, r1, #0x3
- add r2, r5, #0x0
- add r3, r1, #0x0
- bl NNS_SndArcPlayerStartSeqEx
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x8
- bl FUN_02004858
-_02005606:
- mov r0, #0x0
- bl FUN_02005E80
- add r0, r4, #0x0
- pop {r3-r5, pc}
- .balign 4
-_02005610: .word 0x000001B9
-
- thumb_func_start FUN_02005614
-FUN_02005614: ; 0x02005614
- push {r4-r6, lr}
- add r5, r0, #0x0
- mov r0, #0xf
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0xe
- bl FUN_02003D38
- mov r0, #0x1
- bl FUN_02003FF4
- add r1, r5, #0x0
- bl NNS_SndPlayerStopSeq
- mov r0, #0x8
- bl FUN_02003FF4
- add r1, r5, #0x0
- bl NNS_SndPlayerStopSeq
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02005658
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005658:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _0200566A
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_0200566A:
- bl FUN_02005DFC
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005670
-FUN_02005670: ; 0x02005670
- push {r3-r5, lr}
- mov r0, #0xf
- bl FUN_02003D38
- add r5, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0xe
- bl FUN_02003D38
- ldrb r0, [r5, #0x0]
- cmp r0, #0x1
- bne _02005696
- mov r0, #0xe
- bl FUN_02004ABC
- pop {r3-r5, pc}
-_02005696:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _020056A4
- mov r0, #0xf
- bl FUN_02004ABC
- pop {r3-r5, pc}
-_020056A4:
- mov r0, #0x0
- bl FUN_020048BC
- pop {r3-r5, pc}
-
- thumb_func_start FUN_020056AC
-FUN_020056AC: ; 0x020056AC
- push {r3-r7, lr}
- sub sp, #0x20
- str r0, [sp, #0x4]
- mov r0, #0xf
- str r1, [sp, #0x8]
- add r5, r2, #0x0
- add r6, r3, #0x0
- ldr r7, [sp, #0x38]
- bl FUN_02003D38
- str r0, [sp, #0x14]
- mov r0, #0x10
- bl FUN_02003D38
- str r0, [sp, #0x10]
- mov r0, #0x11
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x1d
- bl FUN_02003D38
- str r0, [sp, #0xc]
- mov r0, #0x23
- bl FUN_02003D38
- lsr r0, r5, #0x1f
- add r0, r5, r0
- asr r0, r0, #0x1
- str r0, [sp, #0x1c]
- add r0, #0x40
- str r0, [sp, #0x1c]
- add r0, r6, #0x0
- str r0, [sp, #0x18]
- sub r0, #0x1e
- str r0, [sp, #0x18]
- cmp r0, #0x0
- bgt _020056FC
- mov r0, #0x1
- str r0, [sp, #0x18]
-_020056FC:
- mov r0, #0x0
- strb r0, [r4, #0x0]
- ldr r0, [sp, #0x14]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02005714
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005714:
- ldr r0, [sp, #0x10]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x1
- bne _02005728
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_02005728:
- ldr r4, [sp, #0x8]
- ldr r0, _02005AB4 ; =0x000001B9
- add r1, r4, #0x0
- cmp r1, r0
- beq _0200573E
- add r0, #0x36
- cmp r1, r0
- bhi _0200573C
- add r0, r4, #0x0
- bne _0200573E
-_0200573C:
- mov r4, #0x1
-_0200573E:
- ldr r0, _02005AB4 ; =0x000001B9
- ldr r1, [sp, #0x8]
- cmp r1, r0
- bne _020057B4
- ldr r1, [sp, #0x4]
- cmp r1, #0xc
- bhi _020057AE
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_02005758: ; jump table (using 16-bit offset)
- .short _02005772 - _02005758 - 2; case 0
- .short _02005772 - _02005758 - 2; case 1
- .short _02005772 - _02005758 - 2; case 2
- .short _020057AE - _02005758 - 2; case 3
- .short _020057AE - _02005758 - 2; case 4
- .short _02005772 - _02005758 - 2; case 5
- .short _020057AE - _02005758 - 2; case 6
- .short _020057AE - _02005758 - 2; case 7
- .short _020057AE - _02005758 - 2; case 8
- .short _020057AE - _02005758 - 2; case 9
- .short _020057AE - _02005758 - 2; case 10
- .short _02005772 - _02005758 - 2; case 11
- .short _02005772 - _02005758 - 2; case 12
-_02005772:
- bl FUN_02005578
- ldr r0, [sp, #0xc]
- ldrb r0, [r0, #0x0]
- cmp r0, #0x0
- bne _02005794
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- b _020057A8
-_02005794:
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xe
- add r1, r6, #0x0
- bl FUN_02004AF8
-_020057A8:
- add sp, #0x20
- mov r0, #0x1
- pop {r3-r7, pc}
-_020057AE:
- mov r0, #0x1
- bl FUN_02005E80
-_020057B4:
- ldr r0, [sp, #0x4]
- cmp r0, #0xe
- bls _020057BC
- b _02005AC2
-_020057BC:
- add r0, r0, r0
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_020057C8: ; jump table (using 16-bit offset)
- .short _020057E6 - _020057C8 - 2; case 0
- .short _02005802 - _020057C8 - 2; case 1
- .short _02005826 - _020057C8 - 2; case 2
- .short _02005868 - _020057C8 - 2; case 3
- .short _020058B2 - _020057C8 - 2; case 4
- .short _02005900 - _020057C8 - 2; case 5
- .short _02005928 - _020057C8 - 2; case 6
- .short _0200596C - _020057C8 - 2; case 7
- .short _0200599C - _020057C8 - 2; case 8
- .short _020059CA - _020057C8 - 2; case 9
- .short _020059FE - _020057C8 - 2; case 10
- .short _02005A2E - _020057C8 - 2; case 11
- .short _02005A56 - _020057C8 - 2; case 12
- .short _02005A86 - _020057C8 - 2; case 13
- .short _02005ABC - _020057C8 - 2; case 14
-_020057E6:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- b _02005AC2
-_02005802:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x14
- add r1, r7, #0x0
- bl FUN_02005AE0
- b _02005AC2
-_02005826:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x40
- bl FUN_02004D20
- add r0, r4, #0x0
- mov r1, #0x14
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl FUN_02004D4C
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_02005868:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1e
- add r1, r7, #0x0
- bl FUN_02005AE0
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0xc0
- bl FUN_02004D20
- add r0, r4, #0x0
- mov r1, #0x10
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl FUN_02004D4C
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_020058B2:
- mov r0, #0xe
- bl FUN_02004984
- ldr r2, [sp, #0x1c]
- add r0, r4, #0x0
- add r1, r6, #0x0
- mov r3, #0xe
- str r7, [sp, #0x0]
- bl FUN_02004B30
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xf
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r1, #0x86
- mov r0, #0xe
- lsl r1, r1, #0x8
- bl FUN_02004AE4
- mov r1, #0x3f
- ldr r2, [sp, #0x18]
- ldr r3, [sp, #0x1c]
- add r0, r4, #0x0
- mvn r1, r1
- str r7, [sp, #0x0]
- bl FUN_02005BF8
- mov r1, #0x86
- mov r0, #0xf
- lsl r1, r1, #0x8
- bl FUN_02004AE4
- b _02005AC2
-_02005900:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0xe1
- bl FUN_02004D20
- b _02005AC2
-_02005928:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x2c
- bl FUN_02004D20
- mov r1, #0x3f
- add r0, r4, #0x0
- mvn r1, r1
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl FUN_02004D4C
- ldr r2, [sp, #0x18]
- add r0, r4, #0x0
- mov r1, #0x8
- bl FUN_02005AC8
- b _02005AC2
-_0200596C:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0xb
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x81
- bl FUN_02004D20
- b _02005AC2
-_0200599C:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x3c
- add r1, r7, #0x0
- bl FUN_02005AE0
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- mov r2, #0x3c
- bl FUN_02004D20
- b _02005AC2
-_020059CA:
- mov r0, #0xe
- bl FUN_02004984
- ldr r2, [sp, #0x1c]
- add r0, r4, #0x0
- add r1, r6, #0x0
- mov r3, #0xe
- str r7, [sp, #0x0]
- bl FUN_02004B30
- ldr r1, [sp, #0x1c]
- mov r0, #0xe
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- bl FUN_02004ACC
- mov r0, #0xd
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r1, #0x1a
- mov r0, #0xe
- lsl r1, r1, #0xa
- bl FUN_02004AE4
- b _02005AC2
-_020059FE:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x64
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x2d
- bl FUN_02004D20
- b _02005AC2
-_02005A2E:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x61
- bl FUN_02004D20
- b _02005AC2
-_02005A56:
- add r0, r4, #0x0
- bl FUN_02005578
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x1
- add r2, r5, #0x0
- bl FUN_02004D4C
- add r0, r4, #0x0
- mov r1, #0x1
- add r2, r6, #0x0
- bl FUN_02005AC8
- mov r0, #0x14
- add r1, r7, #0x0
- bl FUN_02005AE0
- mov r0, #0x1
- add r2, r0, #0x0
- ldr r1, _02005AB8 ; =0x0000FFFF
- sub r2, #0x61
- bl FUN_02004D20
- b _02005AC2
-_02005A86:
- add r0, r4, #0x0
- bl FUN_02005578
- add r0, r4, #0x0
- mov r1, #0x1
- mov r2, #0x7f
- bl FUN_02005AC8
- add r0, r4, #0x0
- mov r1, #0x14
- bl FUN_02005BC8
- ldr r1, _02005AB8 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r5, #0x0
- bl FUN_02004D4C
- mov r0, #0x8
- add r1, r6, #0x0
- mov r2, #0x0
- bl FUN_02004828
- b _02005AC2
- .balign 4
-_02005AB4: .word 0x000001B9
-_02005AB8: .word 0x0000FFFF
-_02005ABC:
- add r0, r4, #0x0
- bl FUN_02005578
-_02005AC2:
- mov r0, #0x1
- add sp, #0x20
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02005AC8
-FUN_02005AC8: ; 0x02005AC8
- push {r3-r5, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r0, r4, #0x0
- add r1, r2, #0x0
- bl FUN_0200483C
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02004858
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005AE0
-FUN_02005AE0: ; 0x02005AE0
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- mov r0, #0x22
- bl FUN_02003D38
- add r6, r0, #0x0
- bl FUN_02005BA0
- add r0, r4, #0x0
- mov r1, #0x8
- bl AllocFromHeap
- add r4, r0, #0x0
- bne _02005B04
- bl GF_AssertFail
- pop {r4-r6, pc}
-_02005B04:
- mov r2, #0x0
- 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]
- ldr r0, _02005B28 ; =FUN_02005B2C
- add r1, r4, #0x0
- str r5, [r4, #0x0]
- bl FUN_0200CA44
- str r0, [r4, #0x4]
- str r0, [r6, #0x0]
- pop {r4-r6, pc}
- nop
-_02005B28: .word FUN_02005B2C
-
- thumb_func_start FUN_02005B2C
-FUN_02005B2C: ; 0x02005B2C
- push {r4-r6, lr}
- mov r0, #0xf
- add r5, r1, #0x0
- bl FUN_02003D38
- add r6, r0, #0x0
- mov r0, #0x10
- bl FUN_02003D38
- ldr r2, [r5, #0x0]
- add r4, r0, #0x0
- cmp r2, #0xa
- bne _02005B58
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_02004828
- ldr r2, [r5, #0x0]
- mov r0, #0x8
- mov r1, #0x0
- bl FUN_02004828
-_02005B58:
- ldr r0, [r5, #0x0]
- sub r0, r0, #0x1
- str r0, [r5, #0x0]
- bl FUN_02005670
- cmp r0, #0x0
- bne _02005B6A
- mov r0, #0x0
- str r0, [r5, #0x0]
-_02005B6A:
- ldr r0, [r5, #0x0]
- cmp r0, #0x0
- bgt _02005B9E
- mov r0, #0x0
- bl FUN_02005614
- ldrb r0, [r6, #0x0]
- cmp r0, #0x1
- bne _02005B88
- mov r0, #0xe
- bl FUN_02004C3C
- mov r0, #0xe
- bl FUN_02004A04
-_02005B88:
- ldrb r0, [r4, #0x0]
- cmp r0, #0x1
- bne _02005B9A
- mov r0, #0xf
- bl FUN_02004C3C
- mov r0, #0xf
- bl FUN_02004A04
-_02005B9A:
- bl FUN_02005BA0
-_02005B9E:
- pop {r4-r6, pc}
-
- thumb_func_start FUN_02005BA0
-FUN_02005BA0: ; 0x02005BA0
- push {r3-r5, lr}
- mov r0, #0x22
- bl FUN_02003D38
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _02005BC2
- bl FUN_0201B6C8
- add r5, r0, #0x0
- ldr r0, [r4, #0x0]
- bl FUN_0200CAB4
- add r0, r5, #0x0
- bl FreeToHeap
-_02005BC2:
- mov r0, #0x0
- str r0, [r4, #0x0]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005BC8
-FUN_02005BC8: ; 0x02005BC8
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r0, #0x11
- add r4, r1, #0x0
- bl FUN_02003D38
- mov r1, #0x1
- strb r1, [r0, #0x0]
- add r0, r1, #0x0
- bl FUN_02005E80
- add r0, r5, #0x0
- bl FUN_02005578
- add r5, r0, #0x0
- ldr r1, _02005BF4 ; =0x0000FFFF
- mov r0, #0x8
- add r2, r4, #0x0
- bl FUN_02004D20
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-_02005BF4: .word 0x0000FFFF
-
- thumb_func_start FUN_02005BF8
-FUN_02005BF8: ; 0x02005BF8
- push {r3-r6, lr}
- sub sp, #0x4
- add r5, r0, #0x0
- mov r0, #0x11
- add r4, r2, #0x0
- add r6, r3, #0x0
- bl FUN_02003D38
- mov r1, #0x1
- strb r1, [r0, #0x0]
- mov r0, #0xf
- bl FUN_02004984
- ldr r0, [sp, #0x18]
- add r1, r4, #0x0
- str r0, [sp, #0x0]
- add r0, r5, #0x0
- add r2, r6, #0x0
- mov r3, #0xf
- bl FUN_02004B30
- add sp, #0x4
- pop {r3-r6, pc}
- .balign 4
-
- thumb_func_start PlaySound
-PlaySound: ; 0x02005C28
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_020048F4
- add r0, r5, #0x0
- bl FUN_02005CEC
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _02005C48
- mov r1, #0x1
- bl FUN_020047C8
-_02005C48:
- mov r0, #0x1c
- bl FUN_02003D38
- bl GF_Snd_SaveState
- add r0, r5, #0x0
- mov r1, #0x3
- bl GF_Snd_LoadSeqEx
- mov r0, #0x2
- bl FUN_02003FF4
- add r1, r5, #0x0
- bl NNS_SndArcPlayerStartSeq
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x2
- bl FUN_02004858
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02005C74
-FUN_02005C74: ; 0x02005C74
- push {r4, lr}
- mov r0, #0xd
- bl FUN_02003D38
- add r4, r0, #0x0
- mov r0, #0x2
- bl FUN_020048BC
- cmp r0, #0x0
- beq _02005C8C
- mov r0, #0x1
- pop {r4, pc}
-_02005C8C:
- ldrh r0, [r4, #0x0]
- cmp r0, #0x0
- beq _02005C9A
- sub r0, r0, #0x1
- strh r0, [r4, #0x0]
- mov r0, #0x1
- pop {r4, pc}
-_02005C9A:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02005CA0
-FUN_02005CA0: ; 0x02005CA0
- push {r4, lr}
- add r4, r0, #0x0
- mov r0, #0x2
- bl FUN_02003FF4
- add r1, r4, #0x0
- bl NNS_SndPlayerStopSeq
- mov r0, #0x6
- bl FUN_02004748
- bl GF_Snd_RestoreState
- pop {r4, pc}
-
- thumb_func_start FUN_02005CBC
-FUN_02005CBC: ; 0x02005CBC
- push {r3, lr}
- mov r0, #0xd
- bl FUN_02003D38
- bl FUN_02005C74
- cmp r0, #0x1
- bne _02005CD0
- mov r0, #0x1
- pop {r3, pc}
-_02005CD0:
- mov r0, #0x0
- bl FUN_02005CA0
- bl FUN_02004124
- bl FUN_020048D0
- cmp r0, #0xff
- beq _02005CE8
- mov r1, #0x0
- bl FUN_020047C8
-_02005CE8:
- mov r0, #0x0
- pop {r3, pc}
-
- thumb_func_start FUN_02005CEC
-FUN_02005CEC: ; 0x02005CEC
- push {r3, lr}
- mov r0, #0xd
- bl FUN_02003D38
- mov r1, #0xf
- strh r1, [r0, #0x0]
- pop {r3, pc}
- .balign 4
diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s
index 8e521c5c..e56b613f 100644
--- a/arm9/asm/unk_02005CFC.s
+++ b/arm9/asm/unk_02005CFC.s
@@ -172,7 +172,7 @@ _02005E48:
str r0, [sp, #0x14]
str r0, [sp, #0x18]
add r0, sp, #0x0
- bl FUN_02004914
+ bl GF_MIC_StartAutoSampling
add sp, #0x1c
pop {pc}
nop
@@ -180,10 +180,10 @@ _02005E60: .word 0x00004174
thumb_func_start FUN_02005E64
FUN_02005E64: ; 0x02005E64
- ldr r3, _02005E68 ; =FUN_0200491C
+ ldr r3, _02005E68 ; =GF_MIC_StopAutoSampling
bx r3
.balign 4
-_02005E68: .word FUN_0200491C
+_02005E68: .word GF_MIC_StopAutoSampling
thumb_func_start FUN_02005E6C
FUN_02005E6C: ; 0x02005E6C
diff --git a/arm9/asm/unk_020061E8.s b/arm9/asm/unk_020061E8.s
deleted file mode 100644
index 22f390c7..00000000
--- a/arm9/asm/unk_020061E8.s
+++ /dev/null
@@ -1,45 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .text
-
- thumb_func_start FUN_020061E8
-FUN_020061E8: ; 0x020061E8
- push {r3-r7, lr}
- add r5, r1, #0x0
- add r6, r0, #0x0
- add r7, r2, #0x0
- cmp r5, #0x0
- beq _0200620C
- add r0, r3, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- bne _02006202
- mov r0, #0x0
- pop {r3-r7, pc}
-_02006202:
- mov r1, #0x0
- add r2, r5, #0x0
- bl memset
- b _0200620E
-_0200620C:
- mov r4, #0x0
-_0200620E:
- add r0, r6, #0x0
- add r1, r4, #0x0
- add r2, r7, #0x0
- bl FUN_0200CA44
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200621C
-FUN_0200621C: ; 0x0200621C
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_0201B6C8
- cmp r0, #0x0
- beq _0200622C
- bl FreeToHeap
-_0200622C:
- add r0, r4, #0x0
- bl FUN_0200CAB4
- pop {r4, pc}
diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s
index 526c52c7..01721a1a 100644
--- a/arm9/asm/unk_02006D98.s
+++ b/arm9/asm/unk_02006D98.s
@@ -3724,7 +3724,7 @@ _020087E0:
add r1, r2, r1
ldrb r3, [r3, #0x0]
mov r2, #0x10
- bl FUN_02003974
+ bl BlendPalette
add r0, r4, #0x0
add r0, #0x6c
ldrh r0, [r0, #0x0]
@@ -3748,7 +3748,7 @@ _020087E0:
add r1, r2, r1
ldrb r3, [r3, #0x0]
mov r2, #0x10
- bl FUN_02003974
+ bl BlendPalette
_02008862:
add r0, r4, #0x0
add r0, #0x49
diff --git a/arm9/asm/unk_020142EC.s b/arm9/asm/unk_020142EC.s
index 5526b320..3a0426d5 100644
--- a/arm9/asm/unk_020142EC.s
+++ b/arm9/asm/unk_020142EC.s
@@ -23,7 +23,7 @@ FUN_020142EC: ; 0x020142EC
bne _02014320
add r0, r5, #0x0
mov r1, #0x0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
str r0, [sp, #0x0]
ldr r0, _02014398 ; =FUN_020144E0
str r0, [r4, #0x4]
@@ -31,7 +31,7 @@ FUN_020142EC: ; 0x020142EC
_02014320:
add r0, r5, #0x0
mov r1, #0x1
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
str r0, [sp, #0x0]
ldr r0, _0201439C ; =FUN_020144FC
str r0, [r4, #0x4]
@@ -288,6 +288,6 @@ FUN_020144E0: ; 0x020144E0
mov r2, #0x0
lsl r3, r3, #0x14
lsr r3, r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
pop {r3, pc}
.balign 4
diff --git a/arm9/asm/unk_020144FC.s b/arm9/asm/unk_020144FC.s
index e3677eca..9d52898d 100644
--- a/arm9/asm/unk_020144FC.s
+++ b/arm9/asm/unk_020144FC.s
@@ -15,7 +15,7 @@ FUN_020144FC: ; 0x020144FC
mov r2, #0x1
lsl r3, r3, #0x14
lsr r3, r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
pop {r3, pc}
.balign 4
diff --git a/arm9/asm/unk_0201C6B4.s b/arm9/asm/unk_0201C6B4.s
deleted file mode 100644
index 6ee6910b..00000000
--- a/arm9/asm/unk_0201C6B4.s
+++ /dev/null
@@ -1,148 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0201C6B4
-FUN_0201C6B4: ; 0x0201C6B4
- mov r2, #0x0
- ldrsb r1, [r0, r2]
- cmp r1, #0x0
- beq _0201C6C4
-_0201C6BC:
- add r2, r2, #0x1
- ldrsb r1, [r0, r2]
- cmp r1, #0x0
- bne _0201C6BC
-_0201C6C4:
- add r0, r2, #0x0
- bx lr
-
- thumb_func_start FUN_0201C6C8
-FUN_0201C6C8: ; 0x0201C6C8
- push {r4-r5}
- mov r4, #0x1
- mov r3, #0x0
- lsl r4, r4, #0x8
-_0201C6D0:
- ldrsb r5, [r0, r3]
- strb r5, [r1, r3]
- ldrsb r5, [r0, r3]
- cmp r2, r5
- beq _0201C6DE
- cmp r5, #0x0
- bne _0201C6FE
-_0201C6DE:
- mov r4, #0x0
- strb r4, [r1, r3]
- cmp r2, #0xd
- bne _0201C6F6
- add r1, r3, #0x1
- ldrsb r1, [r0, r1]
- cmp r1, #0xa
- bne _0201C6F6
- add r1, r3, #0x2
- add r0, r0, r1
- pop {r4-r5}
- bx lr
-_0201C6F6:
- add r1, r3, #0x1
- add r0, r0, r1
- pop {r4-r5}
- bx lr
-_0201C6FE:
- add r3, r3, #0x1
- cmp r3, r4
- blt _0201C6D0
- mov r0, #0x0
- pop {r4-r5}
- bx lr
- .balign 4
-
- thumb_func_start FUN_0201C70C
-FUN_0201C70C: ; 0x0201C70C
- push {r4-r6, lr}
- add r4, r0, #0x0
- bl FUN_0201C6B4
- mov r5, #0x1
- mov r6, #0x0
- sub r3, r0, #0x1
- bmi _0201C74A
- sub r1, r6, #0x1
- mov r0, #0xa
-_0201C720:
- ldrsb r2, [r4, r3]
- cmp r2, #0x30
- blt _0201C732
- cmp r2, #0x39
- bgt _0201C732
- sub r2, #0x30
- mul r2, r5
- add r6, r6, r2
- b _0201C744
-_0201C732:
- cmp r3, #0x0
- bne _0201C73E
- cmp r2, #0x2d
- bne _0201C744
- mul r6, r1
- b _0201C744
-_0201C73E:
- mov r0, #0x0
- mvn r0, r0
- pop {r4-r6, pc}
-_0201C744:
- mul r5, r0
- sub r3, r3, #0x1
- bpl _0201C720
-_0201C74A:
- add r0, r6, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_0201C750
-FUN_0201C750: ; 0x0201C750
- push {r3-r5, lr}
- mov r2, #0x0
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r1, r2, #0x0
-_0201C75A:
- lsl r0, r2, #0x2
- str r1, [r5, r0]
- add r0, r2, #0x1
- lsl r0, r0, #0x18
- lsr r2, r0, #0x18
- cmp r2, #0x4
- blo _0201C75A
- add r0, r4, #0x0
- bl FUN_0201C6B4
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- ldr r2, _0201C788 ; =0x00000000
- beq _0201C784
-_0201C776:
- ldrsb r0, [r4, r2]
- strb r0, [r5, r2]
- add r0, r2, #0x1
- lsl r0, r0, #0x18
- lsr r2, r0, #0x18
- cmp r2, r1
- blo _0201C776
-_0201C784:
- pop {r3-r5, pc}
- nop
-_0201C788: .word 0x00000000
-
- thumb_func_start FUN_0201C78C
-FUN_0201C78C: ; 0x0201C78C
- ldr r1, _0201C79C ; =0x00000121
- cmp r0, r1
- bhs _0201C796
- mov r0, #0x1
- bx lr
-_0201C796:
- mov r0, #0x0
- bx lr
- nop
-_0201C79C: .word 0x00000121
diff --git a/arm9/asm/unk_020222E8.s b/arm9/asm/unk_020222E8.s
deleted file mode 100644
index 047712a5..00000000
--- a/arm9/asm/unk_020222E8.s
+++ /dev/null
@@ -1,46 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020222E8
-FUN_020222E8: ; 0x020222E8
- mov r0, #0x5
- lsl r0, r0, #0x18
- bx lr
- .balign 4
-
- thumb_func_start FUN_020222F0
-FUN_020222F0: ; 0x020222F0
- mov r0, #0x2
- lsl r0, r0, #0x8
- bx lr
- .balign 4
-
- thumb_func_start FUN_020222F8
-FUN_020222F8: ; 0x020222F8
- ldr r0, _020222FC ; =0x05000400
- bx lr
- .balign 4
-_020222FC: .word 0x05000400
-
- thumb_func_start FUN_02022300
-FUN_02022300: ; 0x02022300
- mov r0, #0x2
- lsl r0, r0, #0x8
- bx lr
- .balign 4
-
- thumb_func_start FUN_02022308
-FUN_02022308: ; 0x02022308
- ldr r0, _0202230C ; =0x05000200
- bx lr
- .balign 4
-_0202230C: .word 0x05000200
-
- thumb_func_start FUN_02022310
-FUN_02022310: ; 0x02022310
- ldr r0, _02022314 ; =0x05000600
- bx lr
- .balign 4
-_02022314: .word 0x05000600
diff --git a/arm9/asm/unk_02022450.s b/arm9/asm/unk_02022450.s
deleted file mode 100644
index fd6aacb5..00000000
--- a/arm9/asm/unk_02022450.s
+++ /dev/null
@@ -1,94 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020EE6D4
-UNK_020EE6D4: ; 0x020EE6D4
- .asciz "rom"
-
- .text
-
- thumb_func_start FUN_02022450
-FUN_02022450: ; 0x02022450
- push {r3, lr}
- bl FS_IsAvailable
- cmp r0, #0x0
- bne _02022460
- bl OS_Terminate
- pop {r3, pc}
-_02022460:
- ldr r0, _020224BC ; =0x027FF00C
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- bne _0202248A
- bl CARD_Init
- mov r2, #0x16
- ldr r0, _020224C0 ; =0x027FFE00
- ldr r1, _020224C4 ; =0x027FF000
- lsl r2, r2, #0x4
- bl MI_CpuCopy8
- mov r2, #0x16
- ldr r0, _020224C0 ; =0x027FFE00
- ldr r1, _020224C8 ; =0x027FFA80
- lsl r2, r2, #0x4
- bl MI_CpuCopy8
- ldr r1, _020224CC ; =0x4A414441
- ldr r0, _020224BC ; =0x027FF00C
- str r1, [r0, #0x0]
-_0202248A:
- ldr r0, _020224D0 ; =UNK_020EE6D4
- mov r1, #0x3
- bl FS_FindArchive
- ldr r1, _020224C4 ; =0x027FF000
- ldr r2, [r1, #0x48]
- str r2, [r0, #0x2c]
- ldr r2, [r1, #0x4c]
- str r2, [r0, #0x30]
- ldr r2, [r1, #0x40]
- str r2, [r0, #0x34]
- ldr r2, [r1, #0x44]
- str r2, [r0, #0x38]
- ldr r2, [r1, #0xc]
- ldr r0, _020224CC ; =0x4A414441
- cmp r2, r0
- bne _020224B4
- ldrh r1, [r1, #0x10]
- ldr r0, _020224D4 ; =0x00003130
- cmp r1, r0
- beq _020224B8
-_020224B4:
- bl OS_Terminate
-_020224B8:
- pop {r3, pc}
- nop
-_020224BC: .word 0x027FF00C
-_020224C0: .word 0x027FFE00
-_020224C4: .word 0x027FF000
-_020224C8: .word 0x027FFA80
-_020224CC: .word 0x4A414441
-_020224D0: .word UNK_020EE6D4
-_020224D4: .word 0x00003130
-
- thumb_func_start FUN_020224D8
-FUN_020224D8: ; 0x020224D8
- push {r4, lr}
- sub sp, #0x48
- add r4, r0, #0x0
- add r0, sp, #0x0
- bl FS_InitFile
- add r0, sp, #0x0
- add r1, r4, #0x0
- bl FS_OpenFile
- cmp r0, #0x0
- beq _020224FC
- ldr r1, [sp, #0x24]
- ldr r0, _02022500 ; =0x027FFC2C
- str r1, [r0, #0x0]
- mov r0, #0x0
- bl OS_ResetSystem
-_020224FC:
- add sp, #0x48
- pop {r4, pc}
- .balign 4
-_02022500: .word 0x027FFC2C
diff --git a/arm9/asm/unk_0202A1E0.s b/arm9/asm/unk_0202A1E0.s
deleted file mode 100644
index d3555bd5..00000000
--- a/arm9/asm/unk_0202A1E0.s
+++ /dev/null
@@ -1,1053 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0202A1E0
-FUN_0202A1E0: ; 0x0202A1E0
- mov r0, #0xe4
- bx lr
-
- thumb_func_start FUN_0202A1E4
-FUN_0202A1E4: ; 0x0202A1E4
- ldr r3, _0202A1EC ; =MI_CpuFill8
- mov r1, #0x0
- mov r2, #0x3c
- bx r3
- .balign 4
-_0202A1EC: .word MI_CpuFill8
-
- thumb_func_start FUN_0202A1F0
-FUN_0202A1F0: ; 0x0202A1F0
- push {r4, lr}
- mov r2, #0x5a
- mov r1, #0x0
- lsl r2, r2, #0x2
- add r4, r0, #0x0
- bl MI_CpuFill8
- mov r0, #0x1
- strb r0, [r4, #0x3]
- pop {r4, pc}
-
- thumb_func_start FUN_0202A204
-FUN_0202A204: ; 0x0202A204
- push {r4, lr}
- add r4, r0, #0x0
- mov r1, #0x0
- bl MailMsg_init_fromTemplate
- add r0, r4, #0x0
- add r0, #0x8
- mov r1, #0x1
- bl MailMsg_init_fromTemplate
- add r0, r4, #0x0
- add r0, #0x10
- mov r1, #0x2
- bl MailMsg_init_fromTemplate
- add r4, #0x18
- add r0, r4, #0x0
- mov r1, #0x3
- bl MailMsg_init_fromTemplate
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0202A230
-FUN_0202A230: ; 0x0202A230
- ldr r3, _0202A238 ; =MI_CpuFill8
- mov r1, #0x0
- ldr r2, _0202A23C ; =0x00000B3C
- bx r3
- .balign 4
-_0202A238: .word MI_CpuFill8
-_0202A23C: .word 0x00000B3C
-
- thumb_func_start FUN_0202A240
-FUN_0202A240: ; 0x0202A240
- push {r3, lr}
- cmp r1, #0xa
- bhi _0202A2BE
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0202A252: ; jump table (using 16-bit offset)
- .short _0202A268 - _0202A252 - 2; case 0
- .short _0202A270 - _0202A252 - 2; case 1
- .short _0202A274 - _0202A252 - 2; case 2
- .short _0202A278 - _0202A252 - 2; case 3
- .short _0202A27C - _0202A252 - 2; case 4
- .short _0202A280 - _0202A252 - 2; case 5
- .short _0202A28E - _0202A252 - 2; case 6
- .short _0202A29C - _0202A252 - 2; case 7
- .short _0202A2A4 - _0202A252 - 2; case 8
- .short _0202A2B2 - _0202A252 - 2; case 9
- .short _0202A2BA - _0202A252 - 2; case 10
-_0202A268:
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1b
- lsr r0, r0, #0x1d
- pop {r3, pc}
-_0202A270:
- ldrb r0, [r0, #0x2]
- pop {r3, pc}
-_0202A274:
- ldrb r0, [r0, #0x3]
- pop {r3, pc}
-_0202A278:
- ldrh r0, [r0, #0x4]
- pop {r3, pc}
-_0202A27C:
- ldrh r0, [r0, #0x6]
- pop {r3, pc}
-_0202A280:
- add r1, r2, #0x0
- add r0, #0x8
- mov r2, #0x4
- bl MI_CpuCopy8
- mov r0, #0x0
- pop {r3, pc}
-_0202A28E:
- add r1, r2, #0x0
- add r0, #0x2c
- mov r2, #0x10
- bl MI_CpuCopy8
- mov r0, #0x0
- pop {r3, pc}
-_0202A29C:
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- pop {r3, pc}
-_0202A2A4:
- add r1, r2, #0x0
- add r0, #0xc
- mov r2, #0x1c
- bl MI_CpuCopy8
- mov r0, #0x0
- pop {r3, pc}
-_0202A2B2:
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x18
- lsr r0, r0, #0x1d
- pop {r3, pc}
-_0202A2BA:
- ldr r0, [r0, #0x28]
- pop {r3, pc}
-_0202A2BE:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0202A2C4
-FUN_0202A2C4: ; 0x0202A2C4
- push {r4, lr}
- add r3, r0, #0x0
- cmp r1, #0xa
- bhi _0202A36A
- add r0, r1, r1
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_0202A2D8: ; jump table (using 16-bit offset)
- .short _0202A2EE - _0202A2D8 - 2; case 0
- .short _0202A300 - _0202A2D8 - 2; case 1
- .short _0202A306 - _0202A2D8 - 2; case 2
- .short _0202A30C - _0202A2D8 - 2; case 3
- .short _0202A312 - _0202A2D8 - 2; case 4
- .short _0202A318 - _0202A2D8 - 2; case 5
- .short _0202A326 - _0202A2D8 - 2; case 6
- .short _0202A334 - _0202A2D8 - 2; case 7
- .short _0202A346 - _0202A2D8 - 2; case 8
- .short _0202A35A - _0202A2D8 - 2; case 9
- .short _0202A354 - _0202A2D8 - 2; case 10
-_0202A2EE:
- ldrb r1, [r3, #0x0]
- mov r0, #0x1c
- bic r1, r0
- ldrb r0, [r2, #0x0]
- lsl r0, r0, #0x1d
- lsr r0, r0, #0x1b
- orr r0, r1
- strb r0, [r3, #0x0]
- pop {r4, pc}
-_0202A300:
- ldrb r0, [r2, #0x0]
- strb r0, [r3, #0x2]
- pop {r4, pc}
-_0202A306:
- ldrb r0, [r2, #0x0]
- strb r0, [r3, #0x3]
- pop {r4, pc}
-_0202A30C:
- ldrh r0, [r2, #0x0]
- strh r0, [r3, #0x4]
- pop {r4, pc}
-_0202A312:
- ldrh r0, [r2, #0x0]
- strh r0, [r3, #0x6]
- pop {r4, pc}
-_0202A318:
- add r3, #0x8
- add r0, r2, #0x0
- add r1, r3, #0x0
- mov r2, #0x4
- bl MI_CpuCopy8
- pop {r4, pc}
-_0202A326:
- add r3, #0x2c
- add r0, r2, #0x0
- add r1, r3, #0x0
- mov r2, #0x10
- bl MI_CpuCopy8
- pop {r4, pc}
-_0202A334:
- ldrb r4, [r3, #0x0]
- ldrb r1, [r2, #0x0]
- mov r0, #0x1
- bic r4, r0
- mov r0, #0x1
- and r0, r1
- orr r0, r4
- strb r0, [r3, #0x0]
- pop {r4, pc}
-_0202A346:
- add r3, #0xc
- add r0, r2, #0x0
- add r1, r3, #0x0
- mov r2, #0x1c
- bl MI_CpuCopy8
- pop {r4, pc}
-_0202A354:
- ldr r0, [r2, #0x0]
- str r0, [r3, #0x28]
- pop {r4, pc}
-_0202A35A:
- ldrb r1, [r3, #0x0]
- mov r0, #0xe0
- bic r1, r0
- ldrb r0, [r2, #0x0]
- lsl r0, r0, #0x1d
- lsr r0, r0, #0x18
- orr r0, r1
- strb r0, [r3, #0x0]
-_0202A36A:
- pop {r4, pc}
-
- thumb_func_start FUN_0202A36C
-FUN_0202A36C: ; 0x0202A36C
- push {r3-r4}
- ldrb r4, [r0, #0x3]
- add r1, r4, r1
- cmp r1, #0xff
- bge _0202A378
- strb r1, [r0, #0x3]
-_0202A378:
- ldrh r1, [r0, #0x4]
- add r2, r1, r2
- ldr r1, _0202A394 ; =0x0000FFFF
- cmp r2, r1
- bge _0202A384
- strh r2, [r0, #0x4]
-_0202A384:
- ldrh r1, [r0, #0x6]
- add r2, r1, r3
- ldr r1, _0202A394 ; =0x0000FFFF
- cmp r2, r1
- bge _0202A390
- strh r2, [r0, #0x6]
-_0202A390:
- pop {r3-r4}
- bx lr
- .balign 4
-_0202A394: .word 0x0000FFFF
-
- thumb_func_start FUN_0202A398
-FUN_0202A398: ; 0x0202A398
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1e
- lsr r0, r0, #0x1f
- bx lr
-
- thumb_func_start FUN_0202A3A0
-FUN_0202A3A0: ; 0x0202A3A0
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- lsl r1, r1, #0x1f
- ldrb r3, [r0, #0x0]
- mov r2, #0x2
- lsr r1, r1, #0x1e
- bic r3, r2
- orr r1, r3
- strb r1, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_0202A3B4
-FUN_0202A3B4: ; 0x0202A3B4
- cmp r2, #0x6
- bhi _0202A402
- add r2, r2, r2
- add r2, pc
- ldrh r2, [r2, #0x6]
- lsl r2, r2, #0x10
- asr r2, r2, #0x10
- add pc, r2
-_0202A3C4: ; jump table (using 16-bit offset)
- .short _0202A402 - _0202A3C4 - 2; case 0
- .short _0202A3D2 - _0202A3C4 - 2; case 1
- .short _0202A402 - _0202A3C4 - 2; case 2
- .short _0202A402 - _0202A3C4 - 2; case 3
- .short _0202A402 - _0202A3C4 - 2; case 4
- .short _0202A3E0 - _0202A3C4 - 2; case 5
- .short _0202A3F2 - _0202A3C4 - 2; case 6
-_0202A3D2:
- ldr r2, _0202A408 ; =0x0000270F
- cmp r1, r2
- bls _0202A3DC
- strh r2, [r0, #0x0]
- b _0202A402
-_0202A3DC:
- strh r1, [r0, #0x0]
- b _0202A402
-_0202A3E0:
- ldrh r2, [r0, #0x0]
- add r2, r2, r1
- ldr r1, _0202A408 ; =0x0000270F
- cmp r2, r1
- ble _0202A3EE
- strh r1, [r0, #0x0]
- b _0202A402
-_0202A3EE:
- strh r2, [r0, #0x0]
- b _0202A402
-_0202A3F2:
- ldrh r2, [r0, #0x0]
- cmp r2, r1
- bhs _0202A3FE
- mov r1, #0x0
- strh r1, [r0, #0x0]
- b _0202A402
-_0202A3FE:
- sub r1, r2, r1
- strh r1, [r0, #0x0]
-_0202A402:
- ldrh r0, [r0, #0x0]
- bx lr
- nop
-_0202A408: .word 0x0000270F
-
- thumb_func_start FUN_0202A40C
-FUN_0202A40C: ; 0x0202A40C
- cmp r1, #0x2
- beq _0202A416
- cmp r1, #0x3
- beq _0202A424
- b _0202A440
-_0202A416:
- mov r1, #0x0
- strb r1, [r0, #0x2]
- ldrh r2, [r0, #0x8]
- mov r1, #0x10
- bic r2, r1
- strh r2, [r0, #0x8]
- b _0202A440
-_0202A424:
- ldrh r1, [r0, #0x8]
- lsl r1, r1, #0x1b
- lsr r1, r1, #0x1f
- beq _0202A434
- ldrb r1, [r0, #0x2]
- add r1, r1, #0x1
- strb r1, [r0, #0x2]
- b _0202A440
-_0202A434:
- mov r1, #0x1
- strb r1, [r0, #0x2]
- ldrh r2, [r0, #0x8]
- mov r1, #0x10
- orr r1, r2
- strh r1, [r0, #0x8]
-_0202A440:
- ldrb r0, [r0, #0x2]
- bx lr
-
- thumb_func_start FUN_0202A444
-FUN_0202A444: ; 0x0202A444
- cmp r1, #0x2
- beq _0202A452
- cmp r1, #0x3
- beq _0202A458
- cmp r1, #0x4
- beq _0202A464
- b _0202A46E
-_0202A452:
- mov r1, #0x1
- strb r1, [r0, #0x3]
- b _0202A46E
-_0202A458:
- ldrb r1, [r0, #0x3]
- cmp r1, #0xa
- bhs _0202A46E
- add r1, r1, #0x1
- strb r1, [r0, #0x3]
- b _0202A46E
-_0202A464:
- ldrb r1, [r0, #0x3]
- cmp r1, #0x1
- bls _0202A46E
- sub r1, r1, #0x1
- strb r1, [r0, #0x3]
-_0202A46E:
- ldrb r0, [r0, #0x3]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0202A474
-FUN_0202A474: ; 0x0202A474
- push {r3, lr}
- add r3, r0, #0x0
- cmp r1, #0x0
- bne _0202A48A
- add r3, #0xc0
- add r0, r2, #0x0
- add r1, r3, #0x0
- mov r2, #0xa8
- bl MI_CpuCopy8
- pop {r3, pc}
-_0202A48A:
- add r3, #0x18
- add r0, r2, #0x0
- add r1, r3, #0x0
- mov r2, #0xa8
- bl MI_CpuCopy8
- pop {r3, pc}
-
- thumb_func_start FUN_0202A498
-FUN_0202A498: ; 0x0202A498
- push {r3, lr}
- cmp r1, #0x0
- bne _0202A4AA
- add r1, r2, #0x0
- add r0, #0xc0
- mov r2, #0xa8
- bl MI_CpuCopy8
- pop {r3, pc}
-_0202A4AA:
- add r1, r2, #0x0
- add r0, #0x18
- mov r2, #0xa8
- bl MI_CpuCopy8
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0202A4B8
-FUN_0202A4B8: ; 0x0202A4B8
- push {r4-r6, lr}
- add r6, r0, #0x0
- ldrb r0, [r1, #0x2]
- mov r2, #0xfa
- lsl r2, r2, #0x2
- sub r0, r0, #0x1
- add r3, r0, #0x0
- mul r3, r2
- lsl r0, r3, #0x10
- lsr r4, r0, #0x10
- ldrh r3, [r1, #0x4]
- mov r0, #0xa
- ldrb r5, [r1, #0x3]
- mul r0, r3
- mov r3, #0x14
- mul r3, r5
- lsl r0, r0, #0x10
- lsl r3, r3, #0x10
- lsr r0, r0, #0x10
- lsr r3, r3, #0x10
- add r3, r0, r3
- add r0, r2, #0x0
- sub r0, #0x32
- cmp r3, r0
- ble _0202A4EE
- mov r5, #0x0
- b _0202A4F6
-_0202A4EE:
- sub r2, #0x32
- sub r0, r2, r3
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
-_0202A4F6:
- ldrh r1, [r1, #0x6]
- ldr r0, _0202A51C ; =0x000003CA
- cmp r1, r0
- bls _0202A502
- mov r1, #0x0
- b _0202A510
-_0202A502:
- add r0, #0x1e
- sub r0, r0, r1
- mov r1, #0x1e
- bl _s32_div_f
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
-_0202A510:
- add r0, r4, r5
- add r0, r1, r0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- strh r0, [r6, #0x16]
- pop {r4-r6, pc}
- .balign 4
-_0202A51C: .word 0x000003CA
-
- thumb_func_start FUN_0202A520
-FUN_0202A520: ; 0x0202A520
- ldrh r0, [r0, #0x16]
- bx lr
-
- thumb_func_start FUN_0202A524
-FUN_0202A524: ; 0x0202A524
- push {r3, lr}
- ldrh r0, [r0, #0x16]
- mov r1, #0xfa
- lsl r1, r1, #0x2
- bl _s32_div_f
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0202A538
-FUN_0202A538: ; 0x0202A538
- push {r4-r5}
- cmp r1, #0x5
- bne _0202A544
- mov r0, #0x0
- pop {r4-r5}
- bx lr
-_0202A544:
- cmp r2, #0x2
- beq _0202A54E
- cmp r2, #0x3
- beq _0202A558
- b _0202A56A
-_0202A54E:
- lsl r2, r1, #0x1
- mov r3, #0x0
- add r2, r0, r2
- strh r3, [r2, #0xc]
- b _0202A56A
-_0202A558:
- add r5, r0, #0x0
- add r5, #0xc
- lsl r4, r1, #0x1
- ldrh r3, [r5, r4]
- ldr r2, _0202A574 ; =0x0000FFFE
- cmp r3, r2
- bhs _0202A56A
- add r2, r3, #0x1
- strh r2, [r5, r4]
-_0202A56A:
- lsl r1, r1, #0x1
- add r0, r0, r1
- ldrh r0, [r0, #0xc]
- pop {r4-r5}
- bx lr
- .balign 4
-_0202A574: .word 0x0000FFFE
-
- thumb_func_start FUN_0202A578
-FUN_0202A578: ; 0x0202A578
- push {r3-r4}
- mov r3, #0x1
- mov r4, #0x0
- cmp r1, #0x0
- bls _0202A590
-_0202A582:
- add r4, r4, #0x1
- lsl r4, r4, #0x10
- lsl r3, r3, #0x11
- lsr r4, r4, #0x10
- lsr r3, r3, #0x10
- cmp r4, r1
- blo _0202A582
-_0202A590:
- cmp r2, #0x0
- beq _0202A5B4
- cmp r2, #0x1
- beq _0202A5AC
- cmp r2, #0x2
- bne _0202A5C2
- ldr r1, _0202A5C8 ; =0x0000FFFF
- eor r1, r3
- lsl r1, r1, #0x10
- lsr r2, r1, #0x10
- ldrh r1, [r0, #0x8]
- and r1, r2
- strh r1, [r0, #0x8]
- b _0202A5C2
-_0202A5AC:
- ldrh r1, [r0, #0x8]
- orr r1, r3
- strh r1, [r0, #0x8]
- b _0202A5C2
-_0202A5B4:
- ldrh r0, [r0, #0x8]
- add r2, r0, #0x0
- asr r2, r1
- mov r0, #0x1
- and r0, r2
- pop {r3-r4}
- bx lr
-_0202A5C2:
- mov r0, #0x0
- pop {r3-r4}
- bx lr
- .balign 4
-_0202A5C8: .word 0x0000FFFF
-
- thumb_func_start FUN_0202A5CC
-FUN_0202A5CC: ; 0x0202A5CC
- str r1, [r0, #0x4]
- bx lr
-
- thumb_func_start FUN_0202A5D0
-FUN_0202A5D0: ; 0x0202A5D0
- ldr r0, [r0, #0x4]
- bx lr
-
- thumb_func_start FUN_0202A5D4
-FUN_0202A5D4: ; 0x0202A5D4
- push {r3-r5, lr}
- add r5, r1, #0x0
- mov r1, #0x17
- add r4, r2, #0x0
- bl SavArray_get
- mov r1, #0x69
- lsl r1, r1, #0x2
- add r1, r0, r1
- lsl r0, r5, #0x3
- add r0, r1, r0
- add r1, r4, #0x0
- bl MailMsg_copy
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0202A5F4
-FUN_0202A5F4: ; 0x0202A5F4
- push {r4, lr}
- add r4, r1, #0x0
- mov r1, #0x17
- bl SavArray_get
- mov r1, #0x69
- lsl r1, r1, #0x2
- add r1, r0, r1
- lsl r0, r4, #0x3
- add r0, r1, r0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0202A60C
-FUN_0202A60C: ; 0x0202A60C
- push {r3-r6}
- add r4, r3, #0x0
- mov r3, #0x1
- cmp r2, #0x0
- beq _0202A66C
- cmp r2, #0xc8
- bhi _0202A66C
- cmp r1, #0x0
- beq _0202A66C
- cmp r1, #0xa
- bhi _0202A66C
- sub r5, r2, #0x1
- sub r2, r1, #0x1
- mov r1, #0xc8
- mul r1, r2
- add r1, r5, r1
- lsl r1, r1, #0x10
- lsr r1, r1, #0x10
- lsr r6, r1, #0x1f
- lsl r5, r1, #0x1d
- sub r5, r5, r6
- mov r2, #0x1d
- ror r5, r2
- add r2, r6, r5
- lsl r2, r2, #0x18
- lsr r2, r2, #0x18
- lsl r3, r2
- lsl r2, r3, #0x18
- lsl r1, r1, #0x15
- lsr r5, r2, #0x18
- add r3, r0, #0x4
- lsr r2, r1, #0x18
- ldrb r1, [r3, r2]
- orr r1, r5
- strb r1, [r3, r2]
- ldr r3, [r4, #0x0]
- ldr r1, [r4, #0x8]
- lsl r5, r3, #0x18
- ldr r3, [r4, #0x4]
- lsl r1, r1, #0x18
- lsl r3, r3, #0x18
- lsr r3, r3, #0x8
- ldr r2, [r4, #0xc]
- lsr r1, r1, #0x10
- orr r3, r5
- orr r1, r3
- orr r1, r2
- str r1, [r0, #0x0]
-_0202A66C:
- pop {r3-r6}
- bx lr
-
- thumb_func_start FUN_0202A670
-FUN_0202A670: ; 0x0202A670
- push {r4, lr}
- add r4, r0, #0x0
- add r0, r4, #0x4
- mov r1, #0x0
- mov r2, #0xfa
- bl MI_CpuFill8
- add r0, r4, #0x0
- mov r1, #0x0
- mov r2, #0x4
- bl MI_CpuFill8
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0202A68C
-FUN_0202A68C: ; 0x0202A68C
- ldr r3, [r0, #0x0]
- ldr r2, [r1, #0x0]
- cmp r3, r2
- bls _0202A698
- mov r0, #0x1
- bx lr
-_0202A698:
- ldr r3, [r0, #0x4]
- ldr r2, [r1, #0x4]
- cmp r3, r2
- bls _0202A6A4
- mov r0, #0x1
- bx lr
-_0202A6A4:
- ldr r2, [r0, #0x8]
- ldr r0, [r1, #0x8]
- cmp r2, r0
- bls _0202A6B0
- mov r0, #0x1
- bx lr
-_0202A6B0:
- mov r0, #0x0
- bx lr
-
- thumb_func_start FUN_0202A6B4
-FUN_0202A6B4: ; 0x0202A6B4
- push {r3-r7, lr}
- sub sp, #0x10
- add r6, r2, #0x0
- add r5, r0, #0x0
- add r4, r1, #0x0
- mov r7, #0x1
- cmp r6, #0xc8
- bhi _0202A6C8
- cmp r4, #0xa
- bls _0202A6CE
-_0202A6C8:
- add sp, #0x10
- mov r0, #0x0
- pop {r3-r7, pc}
-_0202A6CE:
- ldr r0, [r5, #0x0]
- lsr r1, r0, #0x18
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x0]
- lsr r1, r0, #0x10
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- str r1, [sp, #0x4]
- lsr r1, r0, #0x8
- lsl r1, r1, #0x18
- lsl r0, r0, #0x18
- lsr r1, r1, #0x18
- lsr r0, r0, #0x18
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- add r0, r3, #0x0
- add r1, sp, #0x0
- bl FUN_0202A68C
- cmp r0, #0x0
- beq _0202A706
- add r0, r5, #0x0
- bl FUN_0202A670
- add sp, #0x10
- mov r0, #0x0
- pop {r3-r7, pc}
-_0202A706:
- sub r1, r4, #0x1
- mov r0, #0xc8
- mul r0, r1
- sub r2, r6, #0x1
- add r0, r2, r0
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- lsr r3, r0, #0x1f
- lsl r2, r0, #0x1d
- lsl r0, r0, #0x15
- lsr r0, r0, #0x18
- add r0, r5, r0
- sub r2, r2, r3
- mov r1, #0x1d
- ror r2, r1
- add r1, r3, r2
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- add r2, r7, #0x0
- lsl r2, r1
- lsl r1, r2, #0x18
- ldrb r0, [r0, #0x4]
- lsr r1, r1, #0x18
- tst r0, r1
- beq _0202A73E
- add sp, #0x10
- add r0, r7, #0x0
- pop {r3-r7, pc}
-_0202A73E:
- mov r0, #0x0
- add sp, #0x10
- pop {r3-r7, pc}
-
- thumb_func_start FUN_0202A744
-FUN_0202A744: ; 0x0202A744
- add r0, #0xfe
- ldrb r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0202A74C
-FUN_0202A74C: ; 0x0202A74C
- add r0, #0xff
- ldrb r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0202A754
-FUN_0202A754: ; 0x0202A754
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r0, r1, #0x0
- mov r1, #0x41
- add r4, r2, #0x0
- lsl r1, r1, #0x2
- ldr r2, _0202A77C ; =0x0000063C
- add r1, r5, r1
- add r6, r3, #0x0
- bl MI_CpuCopy8
- ldr r0, _0202A780 ; =0x00000101
- strb r4, [r5, r0]
- sub r0, r0, #0x1
- strb r6, [r5, r0]
- mov r0, #0x1
- add r5, #0xfe
- strb r0, [r5, #0x0]
- pop {r4-r6, pc}
- nop
-_0202A77C: .word 0x0000063C
-_0202A780: .word 0x00000101
-
- thumb_func_start FUN_0202A784
-FUN_0202A784: ; 0x0202A784
- ldr r2, _0202A794 ; =0x00000101
- ldrb r3, [r0, r2]
- sub r2, r2, #0x1
- strb r3, [r1, #0x0]
- ldrb r0, [r0, r2]
- strb r0, [r1, #0x1]
- bx lr
- nop
-_0202A794: .word 0x00000101
-
- thumb_func_start FUN_0202A798
-FUN_0202A798: ; 0x0202A798
- push {r3-r7, lr}
- add r6, r1, #0x0
- mov r1, #0x41
- lsl r1, r1, #0x2
- add r5, r0, r1
- mov r0, #0xe4
- add r4, r2, #0x0
- mul r4, r0
- ldr r0, _0202A834 ; =0x00002710
- add r7, r6, #0x0
- str r0, [r6, #0x0]
- add r0, r5, r4
- add r0, #0xc9
- ldrb r0, [r0, #0x0]
- add r7, #0x30
- strh r0, [r6, #0x4]
- add r0, r5, r4
- add r0, #0xc8
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- beq _0202A7EE
- mov r0, #0x0
- mov r1, #0x1a
- mov r2, #0x11
- mov r3, #0xb
- bl NewMsgDataFromNarc
- add r1, r5, r4
- add r1, #0xc8
- ldrb r1, [r1, #0x0]
- add r2, r6, #0x0
- str r0, [sp, #0x0]
- lsl r1, r1, #0x1e
- lsr r1, r1, #0x1f
- add r1, #0x16
- add r2, #0x8
- bl ReadMsgDataIntoU16Array
- ldr r0, [sp, #0x0]
- bl DestroyMsgData
- b _0202A7FC
-_0202A7EE:
- add r0, r5, r4
- add r1, r6, #0x0
- add r0, #0xa8
- add r1, #0x8
- mov r2, #0x10
- bl MI_CpuCopy8
-_0202A7FC:
- add r0, r5, r4
- add r1, r6, #0x0
- add r0, #0xca
- add r1, #0x18
- mov r2, #0x8
- bl MI_CpuCopy8
- add r0, r5, r4
- add r1, r6, #0x0
- add r0, #0xd2
- add r1, #0x20
- mov r2, #0x8
- bl MI_CpuCopy8
- add r0, r5, r4
- add r6, #0x28
- add r0, #0xda
- add r1, r6, #0x0
- mov r2, #0x8
- bl MI_CpuCopy8
- add r0, r5, r4
- add r1, r7, #0x0
- mov r2, #0xa8
- bl MI_CpuCopy8
- pop {r3-r7, pc}
- nop
-_0202A834: .word 0x00002710
-
- thumb_func_start FUN_0202A838
-FUN_0202A838: ; 0x0202A838
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r0, r1, #0x0
- mov r1, #0x1d
- add r4, r2, #0x0
- lsl r1, r1, #0x6
- mov r2, #0xff
- add r1, r5, r1
- lsl r2, r2, #0x2
- add r6, r3, #0x0
- bl MI_CpuCopy8
- ldr r0, _0202A860 ; =0x00000103
- strb r4, [r5, r0]
- sub r0, r0, #0x1
- strb r6, [r5, r0]
- mov r0, #0x1
- add r5, #0xff
- strb r0, [r5, #0x0]
- pop {r4-r6, pc}
- .balign 4
-_0202A860: .word 0x00000103
-
- thumb_func_start FUN_0202A864
-FUN_0202A864: ; 0x0202A864
- ldr r2, _0202A874 ; =0x00000103
- ldrb r3, [r0, r2]
- sub r2, r2, #0x1
- strb r3, [r1, #0x0]
- ldrb r0, [r0, r2]
- strb r0, [r1, #0x1]
- bx lr
- nop
-_0202A874: .word 0x00000103
-
- thumb_func_start FUN_0202A878
-FUN_0202A878: ; 0x0202A878
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r0, r1, #0x0
- mov r1, #0xff
- lsl r1, r1, #0x2
- bl AllocFromHeap
- add r4, r0, #0x0
- mov r0, #0x1d
- lsl r0, r0, #0x6
- mov r2, #0xff
- add r0, r5, r0
- add r1, r4, #0x0
- lsl r2, r2, #0x2
- bl MI_CpuCopy8
- add r0, r4, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0202A89C
-FUN_0202A89C: ; 0x0202A89C
- mov r0, #0xd
- lsl r0, r0, #0x8
- bx lr
- .balign 4
-
- thumb_func_start FUN_0202A8A4
-FUN_0202A8A4: ; 0x0202A8A4
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_0202A1E4
- add r0, r4, #0x0
- add r0, #0x3c
- bl FUN_0202A1F0
- mov r0, #0x69
- lsl r0, r0, #0x2
- add r0, r4, r0
- bl FUN_0202A204
- mov r0, #0x71
- lsl r0, r0, #0x2
- add r0, r4, r0
- bl FUN_0202A230
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0202A8CC
-FUN_0202A8CC: ; 0x0202A8CC
- ldr r3, _0202A8D4 ; =SavArray_get
- mov r1, #0x17
- bx r3
- nop
-_0202A8D4: .word SavArray_get
-
- thumb_func_start FUN_0202A8D8
-FUN_0202A8D8: ; 0x0202A8D8
- push {r3, lr}
- mov r1, #0x17
- bl SavArray_get
- add r0, #0x3c
- pop {r3, pc}
-
- thumb_func_start FUN_0202A8E4
-FUN_0202A8E4: ; 0x0202A8E4
- push {r3, lr}
- mov r1, #0x17
- bl SavArray_get
- mov r1, #0x71
- lsl r1, r1, #0x2
- add r0, r0, r1
- pop {r3, pc}
diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s
deleted file mode 100644
index 7240c93f..00000000
--- a/arm9/asm/unk_02033F50.s
+++ /dev/null
@@ -1,266 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern gMain
-
- .section .rodata
-
- .global UNK_020EEC9C
-UNK_020EEC9C: ; 0x020EEC9C
- .byte 0x00, 0x03, 0x03, 0x1A, 0x12, 0x01, 0x23, 0x00
-
- .global UNK_020EECA4
-UNK_020EECA4: ; 0x020EECA4
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EECB4
-UNK_020EECB4: ; 0x020EECB4
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EECD0
-UNK_020EECD0: ; 0x020EECD0
- .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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
-
- .text
-
- thumb_func_start FUN_02033F50
-FUN_02033F50: ; 0x02033F50
- ldr r3, _02033F64 ; =0x027E0000
- ldr r1, _02033F68 ; =0x00003FF8
- mov r0, #0x1
- ldr r2, [r3, r1]
- orr r0, r2
- str r0, [r3, r1]
- ldr r3, _02033F6C ; =MI_WaitDma
- mov r0, #0x3
- bx r3
- nop
-_02033F64: .word 0x027E0000
-_02033F68: .word 0x00003FF8
-_02033F6C: .word MI_WaitDma
-
- thumb_func_start FUN_02033F70
-FUN_02033F70: ; 0x02033F70
- push {r3-r7, lr}
- sub sp, #0x28
- add r4, r0, #0x0
- str r2, [sp, #0xc]
- cmp r1, #0x4
- bhi _02033F92
- add r0, r1, r1
- add r0, pc
- ldrh r0, [r0, #0x6]
- lsl r0, r0, #0x10
- asr r0, r0, #0x10
- add pc, r0
-_02033F88: ; jump table (using 16-bit offset)
- .short _02033F92 - _02033F88 - 2; case 0
- .short _02033F96 - _02033F88 - 2; case 1
- .short _02033F9A - _02033F88 - 2; case 2
- .short _02033F9E - _02033F88 - 2; case 3
- .short _02033FA2 - _02033F88 - 2; case 4
-_02033F92:
- mov r5, #0x1
- b _02033FA4
-_02033F96:
- mov r5, #0x2
- b _02033FA4
-_02033F9A:
- mov r5, #0x3
- b _02033FA4
-_02033F9E:
- mov r5, #0x4
- b _02033FA4
-_02033FA2:
- mov r5, #0x5
-_02033FA4:
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_0200E3A0
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_0200E3A0
- mov r0, #0x1
- bl OS_DisableIrqMask
- ldr r1, _02034154 ; =FUN_02033F50
- mov r0, #0x1
- bl OS_SetIrqFunction
- mov r0, #0x1
- bl OS_EnableIrqMask
- mov r0, #0x0
- add r1, r0, #0x0
- bl Main_SetVBlankIntrCB
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_02015F34
- bl GX_DisableEngineALayers
- bl GX_DisableEngineBLayers
- mov r2, #0x1
- lsl r2, r2, #0x1a
- ldr r1, [r2, #0x0]
- ldr r0, _02034158 ; =0xFFFFE0FF
- and r1, r0
- str r1, [r2, #0x0]
- ldr r2, _0203415C ; =0x04001000
- ldr r1, [r2, #0x0]
- and r0, r1
- str r0, [r2, #0x0]
- mov r0, #0x4
- mov r1, #0x8
- bl SetKeyRepeatTimers
- ldr r0, _02034160 ; =gMain + 0x60
- mov r1, #0x0
- strb r1, [r0, #0x5]
- bl GX_SwapDisplay
- ldr r3, _02034164 ; =0x04000050
- mov r1, #0x0
- strh r1, [r3, #0x0]
- ldr r0, _02034168 ; =0x04001050
- sub r3, #0x50
- strh r1, [r0, #0x0]
- ldr r2, [r3, #0x0]
- ldr r1, _0203416C ; =0xFFFF1FFF
- sub r0, #0x50
- and r2, r1
- str r2, [r3, #0x0]
- ldr r2, [r0, #0x0]
- and r1, r2
- str r1, [r0, #0x0]
- ldr r0, _02034170 ; =UNK_020EECD0
- bl GX_SetBanks
- add r0, r4, #0x0
- bl BgConfig_Alloc
- add r6, r0, #0x0
- ldr r0, _02034174 ; =UNK_020EECA4
- bl SetBothScreensModesAndDisable
- mov r1, #0x0
- ldr r2, _02034178 ; =UNK_020EECB4
- add r0, r6, #0x0
- add r3, r1, #0x0
- bl InitBgFromTemplate
- add r0, r6, #0x0
- mov r1, #0x0
- bl BgClearTilemapBufferAndCommit
- mov r1, #0x0
- str r1, [sp, #0x0]
- ldr r2, _0203417C ; =0x000001F7
- add r0, r6, #0x0
- mov r3, #0x2
- str r4, [sp, #0x4]
- bl FUN_0200CB00
- mov r0, #0x0
- mov r1, #0x20
- add r2, r4, #0x0
- bl FUN_02002ED0
- mov r0, #0x0
- mov r1, #0x20
- add r2, r0, #0x0
- add r3, r4, #0x0
- bl BG_ClearCharDataRange
- ldr r1, _02034180 ; =0x00006C21
- mov r0, #0x0
- bl BG_SetMaskColor
- ldr r1, _02034180 ; =0x00006C21
- mov r0, #0x4
- bl BG_SetMaskColor
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0xc8
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- str r0, [sp, #0x10]
- mov r0, #0x6
- lsl r0, r0, #0x6
- add r1, r4, #0x0
- bl String_ctor
- add r7, r0, #0x0
- mov r0, #0x6
- lsl r0, r0, #0x6
- add r1, r4, #0x0
- bl String_ctor
- str r0, [sp, #0x14]
- bl FUN_0201BD5C
- add r0, r4, #0x0
- bl ScrStrBufs_new
- add r4, r0, #0x0
- ldr r2, _02034184 ; =UNK_020EEC9C
- add r0, r6, #0x0
- add r1, sp, #0x18
- bl AddWindow
- mov r0, #0xd0
- str r0, [sp, #0x0]
- mov r0, #0x90
- mov r2, #0x0
- str r0, [sp, #0x4]
- add r0, sp, #0x18
- mov r1, #0xf
- add r3, r2, #0x0
- bl FillWindowPixelRect
- ldr r2, _0203417C ; =0x000001F7
- add r0, sp, #0x18
- mov r1, #0x0
- mov r3, #0x2
- bl FUN_0200CCA4
- mov r0, #0x2
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- ldr r2, [sp, #0xc]
- add r0, r4, #0x0
- mov r1, #0x0
- mov r3, #0x5
- bl BufferIntegerAsString
- ldr r0, [sp, #0x10]
- ldr r2, [sp, #0x14]
- add r1, r5, #0x0
- bl ReadMsgDataIntoString
- ldr r2, [sp, #0x14]
- add r0, r4, #0x0
- add r1, r7, #0x0
- bl StringExpandPlaceholders
- mov r1, #0x0
- str r1, [sp, #0x0]
- str r1, [sp, #0x4]
- add r0, sp, #0x18
- add r2, r7, #0x0
- add r3, r1, #0x0
- str r1, [sp, #0x8]
- bl AddTextPrinterParameterized
- add r0, r7, #0x0
- bl String_dtor
- bl GX_BothDispOn
- mov r0, #0x0
- bl FUN_0200E394
- mov r0, #0x1
- bl FUN_0200E394
- mov r0, #0x0
- mov r1, #0x3f
- mov r2, #0x3
- bl FUN_0200A274
- add r0, sp, #0x18
- bl RemoveWindow
- ldr r0, [sp, #0x10]
- bl DestroyMsgData
- add r0, r4, #0x0
- bl ScrStrBufs_delete
- add r0, r6, #0x0
- bl FreeToHeap
- add sp, #0x28
- pop {r3-r7, pc}
- nop
-_02034154: .word FUN_02033F50
-_02034158: .word 0xFFFFE0FF
-_0203415C: .word 0x04001000
-_02034160: .word gMain + 0x60
-_02034164: .word 0x04000050
-_02034168: .word 0x04001050
-_0203416C: .word 0xFFFF1FFF
-_02034170: .word UNK_020EECD0
-_02034174: .word UNK_020EECA4
-_02034178: .word UNK_020EECB4
-_0203417C: .word 0x000001F7
-_02034180: .word 0x00006C21
-_02034184: .word UNK_020EEC9C
diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s
deleted file mode 100644
index 66bb542c..00000000
--- a/arm9/asm/unk_02034188.s
+++ /dev/null
@@ -1,242 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .extern gMain
-
- .section .rodata
-
- .global UNK_020EECF8
-UNK_020EECF8: ; 0x020EECF8
- .byte 0x00, 0x03, 0x03, 0x1A, 0x12, 0x01, 0x23, 0x00
-
- .global UNK_020EED00
-UNK_020EED00: ; 0x020EED00
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EED10
-UNK_020EED10: ; 0x020EED10
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_020EED2C
-UNK_020EED2C: ; 0x020EED2C
- .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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
-
- .text
-
- thumb_func_start FUN_02034188
-FUN_02034188: ; 0x02034188
- push {r4-r7, lr}
- sub sp, #0x24
- add r4, r0, #0x0
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_0200E3A0
- mov r0, #0x1
- mov r1, #0x0
- bl FUN_0200E3A0
- bl FUN_02015EF4
- mov r0, #0x0
- add r1, r0, #0x0
- bl Main_SetVBlankIntrCB
- mov r0, #0x0
- add r1, r0, #0x0
- bl FUN_02015F34
- bl GX_DisableEngineALayers
- bl GX_DisableEngineBLayers
- mov r2, #0x1
- lsl r2, r2, #0x1a
- ldr r1, [r2, #0x0]
- ldr r0, _02034368 ; =0xFFFFE0FF
- and r1, r0
- str r1, [r2, #0x0]
- ldr r2, _0203436C ; =0x04001000
- ldr r1, [r2, #0x0]
- and r0, r1
- str r0, [r2, #0x0]
- mov r0, #0x4
- mov r1, #0x8
- bl SetKeyRepeatTimers
- ldr r0, _02034370 ; =gMain + 0x60
- mov r1, #0x0
- strb r1, [r0, #0x5]
- bl GX_SwapDisplay
- ldr r3, _02034374 ; =0x04000050
- mov r0, #0x0
- strh r0, [r3, #0x0]
- ldr r2, _02034378 ; =0x04001050
- sub r3, #0x50
- strh r0, [r2, #0x0]
- ldr r1, [r3, #0x0]
- ldr r0, _0203437C ; =0xFFFF1FFF
- sub r2, #0x50
- and r1, r0
- str r1, [r3, #0x0]
- ldr r1, [r2, #0x0]
- and r0, r1
- str r0, [r2, #0x0]
- ldr r0, _02034380 ; =UNK_020EED2C
- bl GX_SetBanks
- add r0, r4, #0x0
- bl BgConfig_Alloc
- str r0, [sp, #0x10]
- ldr r0, _02034384 ; =UNK_020EED00
- bl SetBothScreensModesAndDisable
- mov r1, #0x0
- ldr r0, [sp, #0x10]
- ldr r2, _02034388 ; =UNK_020EED10
- add r3, r1, #0x0
- bl InitBgFromTemplate
- ldr r0, [sp, #0x10]
- mov r1, #0x0
- bl BgClearTilemapBufferAndCommit
- mov r1, #0x0
- str r1, [sp, #0x0]
- ldr r0, [sp, #0x10]
- ldr r2, _0203438C ; =0x000001F7
- mov r3, #0x2
- str r4, [sp, #0x4]
- bl FUN_0200CB00
- mov r0, #0x0
- mov r1, #0x20
- add r2, r4, #0x0
- bl FUN_02002ED0
- mov r0, #0x0
- mov r1, #0x20
- add r2, r0, #0x0
- add r3, r4, #0x0
- bl BG_ClearCharDataRange
- ldr r1, _02034390 ; =0x00006C21
- mov r0, #0x0
- bl BG_SetMaskColor
- ldr r1, _02034390 ; =0x00006C21
- mov r0, #0x4
- bl BG_SetMaskColor
- ldr r2, _02034394 ; =0x00000265
- mov r0, #0x1
- mov r1, #0x1a
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- str r0, [sp, #0xc]
- mov r0, #0x6
- lsl r0, r0, #0x6
- add r1, r4, #0x0
- bl String_ctor
- add r4, r0, #0x0
- bl FUN_0201BD5C
- ldr r0, [sp, #0x10]
- ldr r2, _02034398 ; =UNK_020EECF8
- add r1, sp, #0x14
- bl AddWindow
- mov r0, #0xd0
- str r0, [sp, #0x0]
- mov r0, #0x90
- mov r2, #0x0
- str r0, [sp, #0x4]
- add r0, sp, #0x14
- mov r1, #0xf
- add r3, r2, #0x0
- bl FillWindowPixelRect
- ldr r2, _0203438C ; =0x000001F7
- add r0, sp, #0x14
- mov r1, #0x0
- mov r3, #0x2
- bl FUN_0200CCA4
- ldr r0, [sp, #0xc]
- mov r1, #0xf
- add r2, r4, #0x0
- bl ReadMsgDataIntoString
- mov r1, #0x0
- str r1, [sp, #0x0]
- str r1, [sp, #0x4]
- add r0, sp, #0x14
- add r2, r4, #0x0
- add r3, r1, #0x0
- str r1, [sp, #0x8]
- bl AddTextPrinterParameterized
- add r0, r4, #0x0
- bl String_dtor
- bl GX_BothDispOn
- mov r0, #0x0
- bl FUN_0200E394
- mov r0, #0x1
- bl FUN_0200E394
- mov r0, #0x0
- mov r1, #0x3f
- mov r2, #0x3
- bl FUN_0200A274
- ldr r4, _0203439C ; =0x04000130
- ldr r6, _020343A0 ; =0x027FFFA8
- mov r7, #0x1
-_020342E4:
- ldrh r1, [r4, #0x0]
- ldrh r0, [r6, #0x0]
- orr r1, r0
- ldr r0, _020343A4 ; =0x00002FFF
- eor r1, r0
- and r0, r1
- lsl r0, r0, #0x10
- lsr r5, r0, #0x10
- bl HandleDSLidAction
- add r0, r5, #0x0
- tst r0, r7
- bne _02034308
- mov r0, #0x1
- add r1, r0, #0x0
- bl OS_WaitIrq
- b _020342E4
-_02034308:
- add r0, sp, #0x14
- bl RemoveWindow
- ldr r0, [sp, #0xc]
- bl DestroyMsgData
- mov r0, #0x0
- add r1, r0, #0x0
- bl ToggleBgLayer
- mov r0, #0x1
- mov r1, #0x0
- bl ToggleBgLayer
- mov r0, #0x2
- mov r1, #0x0
- bl ToggleBgLayer
- mov r0, #0x3
- mov r1, #0x0
- bl ToggleBgLayer
- mov r0, #0x4
- mov r1, #0x0
- bl ToggleBgLayer
- mov r0, #0x5
- mov r1, #0x0
- bl ToggleBgLayer
- mov r0, #0x6
- mov r1, #0x0
- bl ToggleBgLayer
- mov r0, #0x7
- mov r1, #0x0
- bl ToggleBgLayer
- ldr r0, [sp, #0x10]
- mov r1, #0x0
- bl FreeBgTilemapBuffer
- ldr r0, [sp, #0x10]
- bl FreeToHeap
- add sp, #0x24
- pop {r4-r7, pc}
- nop
-_02034368: .word 0xFFFFE0FF
-_0203436C: .word 0x04001000
-_02034370: .word gMain + 0x60
-_02034374: .word 0x04000050
-_02034378: .word 0x04001050
-_0203437C: .word 0xFFFF1FFF
-_02034380: .word UNK_020EED2C
-_02034384: .word UNK_020EED00
-_02034388: .word UNK_020EED10
-_0203438C: .word 0x000001F7
-_02034390: .word 0x00006C21
-_02034394: .word 0x00000265
-_02034398: .word UNK_020EECF8
-_0203439C: .word 0x04000130
-_020343A0: .word 0x027FFFA8
-_020343A4: .word 0x00002FFF
diff --git a/arm9/asm/unk_020343A8.s b/arm9/asm/unk_020343A8.s
deleted file mode 100644
index 38e95c4f..00000000
--- a/arm9/asm/unk_020343A8.s
+++ /dev/null
@@ -1,481 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020343A8
-FUN_020343A8: ; 0x020343A8
- push {r4-r7, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- str r2, [sp, #0x0]
- mov r2, #0x0
- strb r2, [r4, #0x1]
- mov r0, #0xe1
- ldr r7, _02034488 ; =0x0000070A
- ldr r6, _0203448C ; =0x00000A8E
- mov r12, r1
- strb r2, [r4, #0x0]
- add r3, r4, #0x0
- add r5, r2, #0x0
- lsl r0, r0, #0x2
-_020343C4:
- add r1, r4, r2
- strh r5, [r3, #0x2]
- strb r5, [r1, r7]
- strh r5, [r3, r6]
- add r2, r2, #0x1
- add r3, r3, #0x2
- cmp r2, r0
- blt _020343C4
- ldr r0, _02034490 ; =0x00001196
- mov r2, #0x0
-_020343D8:
- add r1, r4, r5
- add r5, r5, #0x1
- strb r2, [r1, r0]
- cmp r5, #0x10
- blt _020343D8
- mov r0, #0x29
- mov r1, r12
- mov r2, #0xb
- bl AllocAtEndAndReadWholeNarcMemberByIdPair
- add r6, r0, #0x0
- ldrb r0, [r6, #0x0]
- add r5, r6, #0x5
- strb r0, [r4, #0x1]
- ldrb r0, [r6, #0x1]
- strb r0, [r4, #0x0]
- ldrb r0, [r6, #0x2]
- str r0, [sp, #0x8]
- ldrb r0, [r6, #0x3]
- str r0, [sp, #0x4]
- ldrb r7, [r6, #0x4]
- cmp r7, #0x10
- bls _0203440A
- bl GF_AssertFail
-_0203440A:
- ldr r1, _02034490 ; =0x00001196
- add r0, r5, #0x0
- add r1, r4, r1
- add r2, r7, #0x0
- bl MI_CpuCopy8
- ldr r0, [sp, #0x8]
- add r5, r5, r7
- cmp r0, #0x0
- beq _0203443A
- ldrb r3, [r4, #0x1]
- ldrb r2, [r4, #0x0]
- add r0, r5, #0x0
- add r1, r4, #0x2
- mul r2, r3
- lsl r2, r2, #0x1
- bl MI_CpuCopy8
- ldrb r1, [r4, #0x1]
- ldrb r0, [r4, #0x0]
- mul r0, r1
- lsl r0, r0, #0x1
- add r5, r5, r0
- b _0203444E
-_0203443A:
- ldrb r3, [r4, #0x1]
- ldrb r2, [r4, #0x0]
- ldr r0, [sp, #0x0]
- add r1, r4, #0x2
- lsl r0, r0, #0x10
- mul r2, r3
- lsr r0, r0, #0x10
- lsl r2, r2, #0x1
- bl MIi_CpuClear16
-_0203444E:
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- beq _0203446C
- ldrb r3, [r4, #0x1]
- ldrb r2, [r4, #0x0]
- ldr r1, _02034488 ; =0x0000070A
- add r0, r5, #0x0
- add r1, r4, r1
- mul r2, r3
- bl MI_CpuCopy8
- ldrb r1, [r4, #0x1]
- ldrb r0, [r4, #0x0]
- mul r0, r1
- add r5, r5, r0
-_0203446C:
- ldrb r3, [r4, #0x1]
- ldrb r2, [r4, #0x0]
- ldr r1, _0203448C ; =0x00000A8E
- add r0, r5, #0x0
- mul r2, r3
- add r1, r4, r1
- lsl r2, r2, #0x1
- bl MI_CpuCopy8
- add r0, r6, #0x0
- bl FreeToHeap
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-_02034488: .word 0x0000070A
-_0203448C: .word 0x00000A8E
-_02034490: .word 0x00001196
-
- thumb_func_start FUN_02034494
-FUN_02034494: ; 0x02034494
- push {r3, lr}
- ldr r1, _020344A8 ; =0x000011AA
- mov r0, #0xb
- bl AllocFromHeap
- mov r1, #0x0
- strb r1, [r0, #0x0]
- strb r1, [r0, #0x1]
- strb r1, [r0, #0x2]
- pop {r3, pc}
- .balign 4
-_020344A8: .word 0x000011AA
-
- thumb_func_start FUN_020344AC
-FUN_020344AC: ; 0x020344AC
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bl MapHeader_GetMatrixId
- add r6, r0, #0x0
- add r0, r4, #0x4
- add r1, r6, #0x0
- add r2, r5, #0x0
- bl FUN_020343A8
- strb r6, [r4, #0x2]
- ldrb r0, [r4, #0x4]
- strb r0, [r4, #0x1]
- ldrb r0, [r4, #0x5]
- strb r0, [r4, #0x0]
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start FUN_020344D0
-FUN_020344D0: ; 0x020344D0
- ldr r3, _020344D4 ; =FreeToHeap
- bx r3
- .balign 4
-_020344D4: .word FreeToHeap
-
- thumb_func_start FUN_020344D8
-FUN_020344D8: ; 0x020344D8
- push {r3-r5, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- ldrb r1, [r4, #0x0]
- ldrb r0, [r4, #0x1]
- mul r0, r1
- cmp r5, r0
- blt _020344EC
- bl GF_AssertFail
-_020344EC:
- lsl r0, r5, #0x1
- add r1, r4, r0
- ldr r0, _020344F8 ; =0x00000A92
- ldrh r0, [r1, r0]
- pop {r3-r5, pc}
- nop
-_020344F8: .word 0x00000A92
-
- thumb_func_start FUN_020344FC
-FUN_020344FC: ; 0x020344FC
- push {r4, lr}
- add r4, r0, #0x0
- bne _02034506
- bl GF_AssertFail
-_02034506:
- ldrb r0, [r4, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0203450C
-FUN_0203450C: ; 0x0203450C
- push {r4, lr}
- add r4, r0, #0x0
- bne _02034516
- bl GF_AssertFail
-_02034516:
- ldrb r0, [r4, #0x1]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0203451C
-FUN_0203451C: ; 0x0203451C
- push {r3-r7, lr}
- add r7, r0, #0x0
- ldrb r0, [r7, #0x1]
- add r5, r1, #0x0
- add r4, r2, #0x0
- ldrb r6, [r7, #0x0]
- str r0, [sp, #0x0]
- cmp r5, #0x0
- blt _02034532
- cmp r5, r6
- blt _02034536
-_02034532:
- bl GF_AssertFail
-_02034536:
- cmp r4, #0x0
- blt _02034540
- ldr r0, [sp, #0x0]
- cmp r4, r0
- blt _02034544
-_02034540:
- bl GF_AssertFail
-_02034544:
- add r0, r4, #0x0
- mul r0, r6
- add r0, r5, r0
- lsl r0, r0, #0x1
- add r0, r7, r0
- ldrh r0, [r0, #0x6]
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02034554
-FUN_02034554: ; 0x02034554
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- ldrb r1, [r5, #0x0]
- ldrb r0, [r5, #0x1]
- mul r0, r1
- cmp r4, #0x0
- blt _02034568
- cmp r4, r0
- blt _0203456C
-_02034568:
- bl GF_AssertFail
-_0203456C:
- lsl r0, r4, #0x1
- add r0, r5, r0
- ldrh r0, [r0, #0x6]
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02034574
-FUN_02034574: ; 0x02034574
- ldrb r0, [r0, #0x2]
- bx lr
-
- thumb_func_start FUN_02034578
-FUN_02034578: ; 0x02034578
- push {r4-r6, lr}
- add r5, r0, #0x0
- ldr r0, [sp, #0x10]
- add r4, r2, #0x0
- add r6, r3, #0x0
- cmp r4, r0
- blt _0203458A
- bl GF_AssertFail
-_0203458A:
- ldr r0, [sp, #0x10]
- mul r0, r6
- add r4, r4, r0
- mov r0, #0xe1
- lsl r0, r0, #0x2
- cmp r4, r0
- blt _0203459C
- bl GF_AssertFail
-_0203459C:
- ldr r0, _020345A4 ; =0x0000070E
- add r1, r5, r4
- ldrb r0, [r1, r0]
- pop {r4-r6, pc}
- .balign 4
-_020345A4: .word 0x0000070E
-
- thumb_func_start FUN_020345A8
-FUN_020345A8: ; 0x020345A8
- push {r3-r5, lr}
- ldr r1, _020345D8 ; =0x00000708
- add r4, r0, #0x0
- bl AllocFromHeap
- add r5, r0, #0x0
- mov r0, #0x29
- mov r1, #0x0
- add r2, r4, #0x0
- bl AllocAtEndAndReadWholeNarcMemberByIdPair
- add r4, r0, #0x0
- ldrb r1, [r4, #0x4]
- add r0, r4, #0x5
- ldr r2, _020345D8 ; =0x00000708
- add r0, r0, r1
- add r1, r5, #0x0
- bl MI_CpuCopy8
- add r0, r4, #0x0
- bl FreeToHeap
- add r0, r5, #0x0
- pop {r3-r5, pc}
- .balign 4
-_020345D8: .word 0x00000708
-
- thumb_func_start FUN_020345DC
-FUN_020345DC: ; 0x020345DC
- push {r4, lr}
- add r4, r0, #0x0
- bne _020345E6
- bl GF_AssertFail
-_020345E6:
- add r0, r4, #0x0
- bl FreeToHeap
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_020345F0
-FUN_020345F0: ; 0x020345F0
- mov r3, #0x1e
- mul r3, r2
- add r1, r1, r3
- lsl r1, r1, #0x1
- ldrh r0, [r0, r1]
- bx lr
-
- thumb_func_start FUN_020345FC
-FUN_020345FC: ; 0x020345FC
- push {r3-r5, lr}
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1fc
- sub sp, #0x1c8
- add r3, r0, #0x0
- add r5, r1, #0x0
- lsl r1, r3, #0x10
- add r4, r2, #0x0
- add r0, sp, #0x0
- lsr r1, r1, #0x10
- mov r2, #0x0
- bl FUN_020343A8
- add r0, sp, #0x0
- ldrb r0, [r0, #0x1]
- cmp r5, r0
- blt _0203462E
- bl GF_AssertFail
-_0203462E:
- add r0, sp, #0x0
- ldrb r0, [r0, #0x0]
- cmp r4, r0
- blt _0203463A
- bl GF_AssertFail
-_0203463A:
- add r0, sp, #0x0
- ldrb r0, [r0, #0x1]
- mul r0, r4
- add r0, r5, r0
- lsl r1, r0, #0x1
- add r0, sp, #0x0
- add r0, #0x2
- ldrh r0, [r0, r1]
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1fc
- add sp, #0x1c8
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02034660
-FUN_02034660: ; 0x02034660
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bne _0203466C
- bl GF_AssertFail
-_0203466C:
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_020344D8
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02034678
-FUN_02034678: ; 0x02034678
- push {r4-r7}
- ldr r1, _020346C4 ; =0x00000A92
- ldrb r7, [r0, #0x0]
- add r2, r0, r1
- ldr r1, _020346C8 ; =0x0000070E
- add r1, r0, r1
- ldrb r0, [r0, #0x2]
- cmp r0, #0x0
- bne _020346BE
- mov r0, #0x15
- add r6, r7, #0x0
- mul r6, r0
- add r5, r6, #0x0
- add r5, #0x17
- mov r4, #0xb0
- lsl r0, r5, #0x1
- add r6, #0x18
- strh r4, [r2, r0]
- lsl r0, r6, #0x1
- strh r4, [r2, r0]
- mov r0, #0x16
- add r3, r7, #0x0
- mul r3, r0
- add r0, r3, #0x0
- add r0, #0x17
- lsl r7, r0, #0x1
- add r3, #0x18
- strh r4, [r2, r7]
- lsl r7, r3, #0x1
- strh r4, [r2, r7]
- mov r2, #0x2
- strb r2, [r1, r5]
- strb r2, [r1, r6]
- strb r2, [r1, r0]
- strb r2, [r1, r3]
-_020346BE:
- pop {r4-r7}
- bx lr
- nop
-_020346C4: .word 0x00000A92
-_020346C8: .word 0x0000070E
-
- thumb_func_start FUN_020346CC
-FUN_020346CC: ; 0x020346CC
- push {r3-r4}
- ldr r1, _0203470C ; =0x00000A92
- add r2, r0, r1
- ldrb r1, [r0, #0x0]
- ldrb r0, [r0, #0x2]
- cmp r0, #0x0
- bne _02034706
- mov r0, #0xf
- mul r0, r1
- add r0, #0x1c
- mov r3, #0x77
- lsl r0, r0, #0x1
- strh r3, [r2, r0]
- lsl r0, r1, #0x4
- add r3, r0, #0x0
- add r3, #0x1b
- mov r4, #0x78
- lsl r3, r3, #0x1
- strh r4, [r2, r3]
- add r3, r0, #0x0
- add r3, #0x1c
- add r0, r1, r0
- add r0, #0x1b
- mov r4, #0x79
- lsl r3, r3, #0x1
- strh r4, [r2, r3]
- mov r3, #0x7a
- lsl r0, r0, #0x1
- strh r3, [r2, r0]
-_02034706:
- pop {r3-r4}
- bx lr
- nop
-_0203470C: .word 0x00000A92
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index f2ef44dc..94c65983 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -341,7 +341,7 @@ _0203529A:
_020352AC:
ldr r0, [r5, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_020349CC
+ bl MapHeader_MapIsAmitySquare
cmp r0, #0x1
bne _020352BC
mov r0, #0x6
@@ -2145,7 +2145,7 @@ _02036170:
add r7, r0, #0x0
ldr r0, [r5, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_02034A04
+ bl MapHeader_GetMapEvolutionMethod
strh r0, [r7, #0x2]
mov r0, #0x0
strb r0, [r7, #0x1]
diff --git a/arm9/asm/unk_020372D4.s b/arm9/asm/unk_020372D4.s
index 88845239..42b6d930 100644
--- a/arm9/asm/unk_020372D4.s
+++ b/arm9/asm/unk_020372D4.s
@@ -227,7 +227,7 @@ FUN_02037400: ; 0x02037400
bl FUN_02034E30
bl FUN_02034DC0
str r0, [r4, #0x1c]
- bl FUN_02034494
+ bl MapMatrix_New
str r0, [r4, #0x28]
add r0, r4, #0x0
mov r1, #0xb
@@ -262,7 +262,7 @@ FUN_020374B0: ; 0x020374B0
bl OverlayManager_GetData
add r4, r0, #0x0
ldr r0, [r4, #0x28]
- bl FUN_020344D0
+ bl MapMatrix_Free
add r0, r4, #0x0
bl FUN_02034A48
add r0, r4, #0x0
diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s
index 7c9cc030..5ac3b4c2 100644
--- a/arm9/asm/unk_020377F0.s
+++ b/arm9/asm/unk_020377F0.s
@@ -2193,10 +2193,10 @@ FUN_02038790: ; 0x02038790
bl AllocFromHeapAtEnd
add r4, r0, #0x0
ldr r0, [r5, #0xc]
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
str r0, [r4, #0x0]
ldr r0, [r5, #0xc]
- bl FUN_0202A8E4
+ bl SaveStruct23_GetSubstruct4
str r0, [r4, #0x4]
ldr r0, [r5, #0xc]
bl Sav2_SysInfo_get
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index e40bd803..aea1dbf8 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -244,7 +244,7 @@ gScriptCmdTable: ; 0x020F355C
.word ScrCmd_SaveChatotCry
.word ScrCmd_Unk005D
.word ScrCmd_Unk005E
- .word ScrCmd_Unk005F
+ .word ScrCmd_WaitForMovement
.word ScrCmd_Unk0060
.word ScrCmd_Unk0061
.word ScrCmd_Unk0062
diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s
index be2b4770..cfbae230 100644
--- a/arm9/asm/unk_020476CC.s
+++ b/arm9/asm/unk_020476CC.s
@@ -536,7 +536,7 @@ FUN_02047A78: ; 0x02047A78
str r0, [r5, r1]
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_02034A04
+ bl MapHeader_GetMapEvolutionMethod
mov r1, #0x59
lsl r1, r1, #0x2
str r0, [r5, r1]
@@ -1161,7 +1161,7 @@ FUN_0204806C: ; 0x0204806C
add r6, r0, #0x0
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
- bl MapHeader_GetField17_0
+ bl MapHeader_GetBattleBg
mov r1, #0x15
lsl r1, r1, #0x4
str r0, [r5, r1]
diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s
index 597444e9..8cf0ee61 100644
--- a/arm9/asm/unk_02048904.s
+++ b/arm9/asm/unk_02048904.s
@@ -346,7 +346,7 @@ _02048BA2:
ldr r0, [r4, #0x1c]
ldr r1, [r4, #0x28]
ldr r0, [r0, #0x0]
- bl FUN_020344AC
+ bl MapMatrix_Load
ldr r0, [r4, #0xc]
bl SavArray_Flags_get
mov r1, #0x3
@@ -506,7 +506,7 @@ FUN_02048CDC: ; 0x02048CDC
add r4, r0, #0x0
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_020349E4
+ bl MapHeader_MapIsPokemonCenterSecondFloor
cmp r0, #0x0
beq _02048CFE
ldr r1, [r4, #0x1c]
@@ -860,7 +860,7 @@ FUN_02048FC8: ; 0x02048FC8
add r4, r0, #0x0
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_02034998
+ bl MapHeader_MapIsUnionRoom
cmp r0, #0x0
bne _02049000
add r0, r4, #0x0
diff --git a/arm9/asm/unk_0204A368.s b/arm9/asm/unk_0204A368.s
index 4b9f5a98..dee2d54b 100644
--- a/arm9/asm/unk_0204A368.s
+++ b/arm9/asm/unk_0204A368.s
@@ -56,10 +56,10 @@ FUN_0204A3B0: ; 0x0204A3B0
mov r2, #0x0
add r1, sp, #0x18
strb r2, [r1, #0x0]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r6, r0, #0x0
ldr r0, [sp, #0x4]
- bl FUN_0203450C
+ bl MapMatrix_GetHeight
str r0, [sp, #0x10]
mov r0, #0x0
str r0, [sp, #0x14]
@@ -77,7 +77,7 @@ _0204A3E0:
lsr r4, r0, #0x10
ldr r1, [sp, #0x4]
add r0, r4, #0x0
- bl FUN_020344D8
+ bl MapMatrix_GetMapData
add r1, sp, #0x18
add r1, #0x2
add r2, sp, #0x18
diff --git a/arm9/asm/unk_0204A498.s b/arm9/asm/unk_0204A498.s
index 3e0580b3..6b7e034d 100644
--- a/arm9/asm/unk_0204A498.s
+++ b/arm9/asm/unk_0204A498.s
@@ -39,7 +39,7 @@ FUN_0204A4A4: ; 0x0204A4A4
str r1, [sp, #0x4]
str r0, [sp, #0x8]
ldr r0, [r5, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
str r0, [sp, #0x24]
lsl r0, r0, #0x5
str r0, [sp, #0xc]
@@ -247,7 +247,7 @@ FUN_0204A640: ; 0x0204A640
add r4, r2, #0x0
add r5, r1, #0x0
add r7, r3, #0x0
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
asr r2, r4, #0x4
asr r1, r5, #0x4
lsr r2, r2, #0x1b
@@ -617,7 +617,7 @@ _0204A8D4:
add r4, r0, #0x0
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r0, #0x0
add r0, r4, #0x0
add r2, sp, #0x10
@@ -685,7 +685,7 @@ _0204A95C:
add r6, r0, #0x0
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r0, #0x0
add r0, r6, #0x0
add r2, sp, #0x10
diff --git a/arm9/asm/unk_0204AF24.s b/arm9/asm/unk_0204AF24.s
deleted file mode 100644
index e0a88f0f..00000000
--- a/arm9/asm/unk_0204AF24.s
+++ /dev/null
@@ -1,248 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_0204AF24
-FUN_0204AF24: ; 0x0204AF24
- push {r3, lr}
- bl FUN_02046528
- bl FUN_0203739C
- cmp r0, #0x0
- bne _0204AF36
- mov r0, #0x1
- pop {r3, pc}
-_0204AF36:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0204AF3C
-FUN_0204AF3C: ; 0x0204AF3C
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02046528
- add r4, r0, #0x0
- bl FUN_0203739C
- cmp r0, #0x0
- bne _0204AF54
- bl GF_AssertFail
- pop {r3-r5, pc}
-_0204AF54:
- add r0, r4, #0x0
- bl FUN_02037394
- ldr r1, _0204AF68 ; =FUN_0204AF24
- add r0, r5, #0x0
- mov r2, #0x0
- bl FUN_0204640C
- pop {r3-r5, pc}
- nop
-_0204AF68: .word FUN_0204AF24
-
- thumb_func_start FUN_0204AF6C
-FUN_0204AF6C: ; 0x0204AF6C
- push {r3, lr}
- bl FUN_02046528
- bl FUN_020464A4
- cmp r0, #0x0
- beq _0204AF7E
- mov r0, #0x1
- pop {r3, pc}
-_0204AF7E:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0204AF84
-FUN_0204AF84: ; 0x0204AF84
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02046528
- add r4, r0, #0x0
- bl FUN_0203739C
- cmp r0, #0x0
- beq _0204AF9C
- bl GF_AssertFail
- pop {r3-r5, pc}
-_0204AF9C:
- add r0, r4, #0x0
- bl FUN_0204649C
- ldr r1, _0204AFB0 ; =FUN_0204AF6C
- add r0, r5, #0x0
- mov r2, #0x0
- bl FUN_0204640C
- pop {r3-r5, pc}
- nop
-_0204AFB0: .word FUN_0204AF6C
-
- thumb_func_start FUN_0204AFB4
-FUN_0204AFB4: ; 0x0204AFB4
- push {r3, lr}
- bl FUN_0200E308
- cmp r0, #0x0
- beq _0204AFC2
- mov r0, #0x1
- pop {r3, pc}
-_0204AFC2:
- mov r0, #0x0
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_0204AFC8
-FUN_0204AFC8: ; 0x0204AFC8
- push {r3-r4, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- bl FUN_02046528
- bl FUN_0203739C
- cmp r0, #0x0
- bne _0204AFE2
- bl GF_AssertFail
- add sp, #0xc
- pop {r3-r4, pc}
-_0204AFE2:
- mov r0, #0x6
- str r0, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- mov r0, #0x4
- str r0, [sp, #0x8]
- mov r0, #0x0
- add r1, r0, #0x0
- add r2, r0, #0x0
- add r3, r0, #0x0
- bl FUN_0200E1D0
- ldr r1, _0204B008 ; =FUN_0204AFB4
- add r0, r4, #0x0
- mov r2, #0x0
- bl FUN_0204640C
- add sp, #0xc
- pop {r3-r4, pc}
- .balign 4
-_0204B008: .word FUN_0204AFB4
-
- thumb_func_start FUN_0204B00C
-FUN_0204B00C: ; 0x0204B00C
- push {r3-r4, lr}
- sub sp, #0xc
- add r4, r0, #0x0
- bl FUN_02046528
- bl FUN_0203739C
- cmp r0, #0x0
- bne _0204B026
- bl GF_AssertFail
- add sp, #0xc
- pop {r3-r4, pc}
-_0204B026:
- mov r0, #0x6
- str r0, [sp, #0x0]
- mov r1, #0x1
- str r1, [sp, #0x4]
- mov r0, #0x4
- str r0, [sp, #0x8]
- mov r0, #0x0
- add r2, r1, #0x0
- add r3, r0, #0x0
- bl FUN_0200E1D0
- ldr r1, _0204B04C ; =FUN_0204AFB4
- add r0, r4, #0x0
- mov r2, #0x0
- bl FUN_0204640C
- add sp, #0xc
- pop {r3-r4, pc}
- nop
-_0204B04C: .word FUN_0204AFB4
-
- thumb_func_start FUN_0204B050
-FUN_0204B050: ; 0x0204B050
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02046530
- add r4, r0, #0x0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- beq _0204B06A
- cmp r0, #0x1
- beq _0204B078
- cmp r0, #0x2
- beq _0204B086
- b _0204B08A
-_0204B06A:
- add r0, r5, #0x0
- bl FUN_0204AFC8
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- b _0204B08A
-_0204B078:
- add r0, r5, #0x0
- bl FUN_0204AF3C
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- b _0204B08A
-_0204B086:
- mov r0, #0x1
- pop {r3-r5, pc}
-_0204B08A:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0204B090
-FUN_0204B090: ; 0x0204B090
- ldr r3, _0204B098 ; =FUN_0204640C
- ldr r1, _0204B09C ; =FUN_0204B050
- mov r2, #0x0
- bx r3
- .balign 4
-_0204B098: .word FUN_0204640C
-_0204B09C: .word FUN_0204B050
-
- thumb_func_start FUN_0204B0A0
-FUN_0204B0A0: ; 0x0204B0A0
- push {r3-r5, lr}
- add r5, r0, #0x0
- bl FUN_02046530
- add r4, r0, #0x0
- add r0, r5, #0x0
- bl FUN_02046528
- ldr r1, [r4, #0x0]
- cmp r1, #0x0
- beq _0204B0C0
- cmp r1, #0x1
- beq _0204B0CE
- cmp r1, #0x2
- beq _0204B0E0
- b _0204B0E4
-_0204B0C0:
- add r0, r5, #0x0
- bl FUN_0204AF84
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- b _0204B0E4
-_0204B0CE:
- bl MOD05_021E331C
- add r0, r5, #0x0
- bl FUN_0204B00C
- ldr r0, [r4, #0x0]
- add r0, r0, #0x1
- str r0, [r4, #0x0]
- b _0204B0E4
-_0204B0E0:
- mov r0, #0x1
- pop {r3-r5, pc}
-_0204B0E4:
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0204B0E8
-FUN_0204B0E8: ; 0x0204B0E8
- ldr r3, _0204B0F0 ; =FUN_0204640C
- ldr r1, _0204B0F4 ; =FUN_0204B0A0
- mov r2, #0x0
- bx r3
- .balign 4
-_0204B0F0: .word FUN_0204640C
-_0204B0F4: .word FUN_0204B0A0
diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s
index ba92a404..ccff7b32 100644
--- a/arm9/asm/unk_0205CE48.s
+++ b/arm9/asm/unk_0205CE48.s
@@ -440,7 +440,7 @@ FUN_0205D170: ; 0x0205D170
pop {r3-r5, pc}
_0205D184:
ldr r0, [r5, #0x0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0x0
bne _0205D194
mov r0, #0x0
@@ -1178,7 +1178,7 @@ _0205D730: .word 0x000022F6
FUN_0205D734: ; 0x0205D734
push {r3, lr}
ldr r0, [r0, #0x0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0x0
beq _0205D744
mov r0, #0x0
@@ -1595,7 +1595,7 @@ _0205DA8E:
cmp r0, #0x1
bne _0205DAA6
ldr r0, [r4, #0x0]
- bl MapHeader_GetField17_6
+ bl MapHeader_IsEscapeRopeAllowed
cmp r0, #0x1
bne _0205DAA6
mov r0, #0x0
@@ -1675,7 +1675,7 @@ _0205DB1A:
pop {r3-r5, pc}
_0205DB30:
ldr r0, [r4, #0x0]
- bl FUN_020349D8
+ bl MapHeader_MapIsSpearPillar
cmp r0, #0x0
beq _0205DB3E
mov r0, #0x0
diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s
index 5f01125f..b5431d9c 100644
--- a/arm9/asm/unk_0205DD18.s
+++ b/arm9/asm/unk_0205DD18.s
@@ -622,7 +622,7 @@ _0205E180:
ldr r0, [r7, #0x28]
asr r1, r1, #0x5
asr r2, r2, #0x5
- bl FUN_0203451C
+ bl MapMatrix_GetMapHeader
ldr r1, [r7, #0x1c]
ldr r1, [r1, #0x0]
cmp r1, r0
diff --git a/arm9/asm/unk_0205F7A0.s b/arm9/asm/unk_0205F7A0.s
index 60706108..67b26aea 100644
--- a/arm9/asm/unk_0205F7A0.s
+++ b/arm9/asm/unk_0205F7A0.s
@@ -54,8 +54,8 @@ FUN_0205F7A0: ; 0x0205F7A0
ldr r0, [r0, #0x28]
asr r1, r1, #0x5
asr r2, r2, #0x5
- bl FUN_0203451C
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapMatrix_GetMapHeader
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0x0
beq _0205F806
str r4, [r5, #0x0]
diff --git a/arm9/asm/unk_0206367C.s b/arm9/asm/unk_0206367C.s
index b475c1e5..3a92648f 100644
--- a/arm9/asm/unk_0206367C.s
+++ b/arm9/asm/unk_0206367C.s
@@ -122,7 +122,7 @@ _0206377C:
_02063786:
ldr r0, [r5, #0x1c]
ldr r0, [r0, #0x0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0x0
beq _020637A6
ldr r0, [r5, #0xc]
diff --git a/arm9/asm/unk_02063948.s b/arm9/asm/unk_02063948.s
index 1b2bc0a5..632e129d 100644
--- a/arm9/asm/unk_02063948.s
+++ b/arm9/asm/unk_02063948.s
@@ -1129,7 +1129,7 @@ _020641BE:
cmp r0, #0x1
bne _020641D2
ldr r0, [r4, #0x0]
- bl MapHeader_GetField17_6
+ bl MapHeader_IsEscapeRopeAllowed
cmp r0, #0x1
beq _020641D6
_020641D2:
diff --git a/arm9/asm/unk_02064E20.s b/arm9/asm/unk_02064E20.s
deleted file mode 100644
index 19ada5a3..00000000
--- a/arm9/asm/unk_02064E20.s
+++ /dev/null
@@ -1,25 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02064E20
-FUN_02064E20: ; 0x02064E20
- push {r4, lr}
- bl ScriptEnvironment_GetSav2Ptr
- bl FUN_02024ED8
- add r4, r0, #0x0
- bl FUN_020254B4
- cmp r0, #0x6
- beq _02064E48
- add r0, r4, #0x0
- mov r1, #0x6
- bl FUN_02025490
- add r0, r4, #0x0
- mov r1, #0x6
- bl FUN_020254A0
- mov r1, #0x2
- strh r1, [r0, #0x0]
-_02064E48:
- pop {r4, pc}
- .balign 4
diff --git a/arm9/asm/unk_02066840.s b/arm9/asm/unk_02066840.s
index 598a4989..149a4d9e 100644
--- a/arm9/asm/unk_02066840.s
+++ b/arm9/asm/unk_02066840.s
@@ -19,7 +19,7 @@ FUN_02066840: ; 0x02066840
bl FUN_02029AFC
add r5, r0, #0x0
add r0, r6, #0x0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
str r0, [sp, #0x4]
add r0, r7, #0x0
mov r1, #0x0
@@ -93,7 +93,7 @@ FUN_02066840: ; 0x02066840
_020668FC:
add r0, r6, #0x0
add r1, r4, #0x0
- bl FUN_0202A5F4
+ bl SaveStruct23_GetMessage
ldr r1, [sp, #0x8]
mov r2, #0x8
add r1, r1, r5
@@ -104,7 +104,7 @@ _020668FC:
blt _020668FC
add r0, r6, #0x0
mov r1, #0x3
- bl FUN_0202A5F4
+ bl SaveStruct23_GetMessage
add r1, r7, #0x0
add r1, #0xc0
mov r2, #0x8
@@ -115,7 +115,7 @@ _020668FC:
ldr r0, [sp, #0x4]
mov r1, #0x7
mov r2, #0x0
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
add r1, r7, #0x0
add r1, #0xe2
strh r0, [r1, #0x0]
@@ -127,19 +127,19 @@ _020668FC:
ldr r0, [sp, #0x4]
ldr r1, [sp, #0x0]
add r2, r7, #0x0
- bl FUN_0202A498
+ bl SaveStruct23_Substruct2_GetArray
add sp, #0xc
pop {r4-r7, pc}
_02066956:
ldr r0, [sp, #0x4]
- bl FUN_0202A520
+ bl SaveStruct23_Substruct2_GetField_0x16
add r1, r7, #0x0
add r1, #0xe2
strh r0, [r1, #0x0]
ldr r0, [sp, #0x4]
ldr r1, [sp, #0x0]
add r2, r7, #0x0
- bl FUN_0202A498
+ bl SaveStruct23_Substruct2_GetArray
_0206696C:
add sp, #0xc
pop {r4-r7, pc}
diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s
index e742f202..90e19c61 100644
--- a/arm9/asm/unk_0206C700.s
+++ b/arm9/asm/unk_0206C700.s
@@ -94,24 +94,24 @@ FUN_0206C700: ; 0x0206C700
mov r1, #0x0
lsl r2, r2, #0x8
add r3, r5, #0x0
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r1, #0x1
ldr r0, [r4, #0x14]
lsl r2, r1, #0x9
add r3, r5, #0x0
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #0x7
ldr r0, [r4, #0x14]
mov r1, #0x2
lsl r2, r2, #0x6
add r3, r5, #0x0
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #0x2
ldr r0, [r4, #0x14]
mov r1, #0x3
lsl r2, r2, #0x8
add r3, r5, #0x0
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r5, #0x0
bl BgConfig_Alloc
str r0, [r4, #0x0]
@@ -300,16 +300,16 @@ FUN_0206C92C: ; 0x0206C92C
bl WindowArray_dtor
ldr r0, [r4, #0x14]
mov r1, #0x0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x14]
mov r1, #0x1
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x14]
mov r1, #0x2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x14]
mov r1, #0x3
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x14]
bl FUN_02002FEC
ldr r0, [r4, #0x18]
@@ -2386,7 +2386,7 @@ _0206DA26:
ldr r3, [r5, #0x5c]
mov r1, #0x76
mov r2, #0x8
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add r0, r6, #0x0
bl FUN_0200CD64
add r2, r0, #0x0
@@ -2399,7 +2399,7 @@ _0206DA26:
ldr r0, [r5, #0x14]
ldr r3, [r5, #0x5c]
mov r1, #0x26
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x20
@@ -2410,7 +2410,7 @@ _0206DA26:
ldr r3, [r5, #0x5c]
mov r1, #0xe
mov r2, #0x7
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r0, [r5, #0x5c]
mov r1, #0x2
str r0, [sp, #0x0]
@@ -2429,7 +2429,7 @@ _0206DA26:
ldr r0, [r5, #0x14]
ldr r3, [r5, #0x5c]
mov r1, #0x26
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -2464,7 +2464,7 @@ _0206DA26:
ldr r0, [r5, #0x14]
ldr r3, [r5, #0x5c]
add r2, r1, #0x0
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x1
lsl r0, r0, #0x1a
ldr r1, [r0, #0x0]
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index ee3ba62f..0ad8aad2 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -2248,7 +2248,7 @@ _02076814:
ldr r0, [r0, #0x1c]
ldr r0, [r0, #0x1c]
ldr r0, [r0, #0x0]
- bl FUN_02034A04
+ bl MapHeader_GetMapEvolutionMethod
add r3, r0, #0x0
ldr r0, _02076878 ; =0x000005A4
lsl r3, r3, #0x10
diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s
index 162a8aca..c6e0a621 100644
--- a/arm9/asm/unk_020859C0.s
+++ b/arm9/asm/unk_020859C0.s
@@ -306,21 +306,21 @@ _02085A9A:
mov r1, #0x0
lsl r2, r2, #0x8
mov r3, #0x35
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r4, #0x0
add r0, #0xe8
mov r1, #0x1
ldr r0, [r0, #0x0]
lsl r2, r1, #0x9
mov r3, #0x35
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r4, #0x0
add r0, #0xe8
mov r1, #0x2
ldr r0, [r0, #0x0]
lsl r2, r1, #0x8
mov r3, #0x35
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r4, #0x0
add r0, #0xe8
mov r2, #0x2
@@ -328,7 +328,7 @@ _02085A9A:
mov r1, #0x3
lsl r2, r2, #0x8
mov r3, #0x35
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r4, #0x0
add r0, #0xe4
ldr r0, [r0, #0x0]
@@ -510,22 +510,22 @@ FUN_02085C08: ; 0x02085C08
add r0, #0xe8
ldr r0, [r0, #0x0]
mov r1, #0x0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0x0
add r0, #0xe8
ldr r0, [r0, #0x0]
mov r1, #0x1
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0x0
add r0, #0xe8
ldr r0, [r0, #0x0]
mov r1, #0x2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0x0
add r0, #0xe8
ldr r0, [r0, #0x0]
mov r1, #0x3
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0x0
add r0, #0xe8
ldr r0, [r0, #0x0]
diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s
index d110b7f1..3d88cc10 100644
--- a/arm9/asm/unk_02086084.s
+++ b/arm9/asm/unk_02086084.s
@@ -68,23 +68,23 @@ FUN_02086084: ; 0x02086084
mov r1, #0x0
lsl r2, r2, #0x8
mov r3, #0x47
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r1, #0x2
ldr r0, [r4, #0x8]
lsl r2, r1, #0x8
mov r3, #0x47
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r1, #0x1
ldr r0, [r4, #0x8]
lsl r2, r1, #0x9
mov r3, #0x47
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #0x2
ldr r0, [r4, #0x8]
mov r1, #0x3
lsl r2, r2, #0x8
mov r3, #0x47
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
bl FUN_02086414
bl FUN_0208643C
bl FUN_0208650C
@@ -183,16 +183,16 @@ FUN_020861DC: ; 0x020861DC
bl GX_EngineBToggleLayers
ldr r0, [r4, #0x8]
mov r1, #0x0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x8]
mov r1, #0x2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x8]
mov r1, #0x1
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x8]
mov r1, #0x3
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x8]
bl FUN_02002FEC
ldr r0, [r4, #0x4]
diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s
index 00825639..f5e751fa 100644
--- a/arm9/asm/unk_02086414.s
+++ b/arm9/asm/unk_02086414.s
@@ -472,7 +472,7 @@ FUN_020866FC: ; 0x020866FC
add r0, r4, #0x0
mov r1, #0x26
mov r3, #0x47
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x47
@@ -493,7 +493,7 @@ FUN_020866FC: ; 0x020866FC
add r0, r4, #0x0
mov r1, #0x26
mov r3, #0x47
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x20
@@ -504,7 +504,7 @@ FUN_020866FC: ; 0x020866FC
mov r1, #0xe
mov r2, #0x7
mov r3, #0x47
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0xc
pop {r3-r6, pc}
@@ -793,7 +793,7 @@ FUN_0208699C: ; 0x0208699C
mov r1, #0x76
mov r2, #0x8
mov r3, #0x47
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0x10
pop {r3-r5, pc}
.balign 4
@@ -838,7 +838,7 @@ FUN_020869F0: ; 0x020869F0
add r0, r4, #0x0
add r2, r1, #0x0
mov r3, #0x47
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0x10
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_02088DD8.s b/arm9/asm/unk_02088DD8.s
deleted file mode 100644
index 3df58ffe..00000000
--- a/arm9/asm/unk_02088DD8.s
+++ /dev/null
@@ -1,172 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02088DD8
-FUN_02088DD8: ; 0x02088DD8
- push {r3, lr}
- mov r1, #0x18
- bl AllocFromHeap
- add r3, r0, #0x0
- mov r2, #0x18
- mov r1, #0x0
-_02088DE6:
- strb r1, [r3, #0x0]
- add r3, r3, #0x1
- sub r2, r2, #0x1
- bne _02088DE6
- pop {r3, pc}
-
- thumb_func_start FUN_02088DF0
-FUN_02088DF0: ; 0x02088DF0
- ldr r3, _02088DF4 ; =FreeToHeap
- bx r3
- .balign 4
-_02088DF4: .word FreeToHeap
-
- thumb_func_start FUN_02088DF8
-FUN_02088DF8: ; 0x02088DF8
- push {r3-r7, lr}
- sub sp, #0x18
- str r1, [sp, #0x0]
- mov r1, #0x5
- mov r2, #0x0
- add r5, r0, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- str r0, [sp, #0xc]
- add r0, r5, #0x0
- mov r1, #0x70
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- str r0, [sp, #0x8]
- add r0, r5, #0x0
- mov r1, #0xa0
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- mov r4, #0x0
- str r0, [sp, #0x4]
- add r7, r4, #0x0
- add r6, sp, #0x10
-_02088E34:
- add r1, r4, #0x0
- add r0, r5, #0x0
- add r1, #0x36
- add r2, r7, #0x0
- bl GetMonData
- lsl r1, r4, #0x1
- strh r0, [r6, r1]
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- cmp r4, #0x4
- blo _02088E34
- ldr r0, [sp, #0x0]
- mov r1, #0x2c
- bl AllocFromHeap
- add r7, r0, #0x0
- ldr r0, [sp, #0x0]
- mov r1, #0x2c
- bl AllocFromHeap
- add r4, r0, #0x0
- ldr r0, [sp, #0xc]
- ldr r1, [sp, #0x8]
- add r2, r7, #0x0
- bl LoadWotbl_HandleAlternateForme
- mov r2, #0x0
- mov r12, r2
-_02088E70:
- mov r0, r12
- lsl r0, r0, #0x1
- ldrh r5, [r7, r0]
- ldr r6, _02088EF4 ; =0x0000FFFF
- cmp r5, r6
- bne _02088E82
- lsl r0, r2, #0x1
- strh r6, [r4, r0]
- b _02088EE8
-_02088E82:
- mov r1, #0xfe
- lsl r1, r1, #0x8
- and r1, r5
- asr r3, r1, #0x9
- ldr r1, [sp, #0x4]
- cmp r3, r1
- bgt _02088EDA
- lsr r1, r6, #0x7
- and r1, r5
- strh r1, [r7, r0]
- ldrh r3, [r7, r0]
- mov r1, #0x0
- add r6, sp, #0x10
-_02088E9C:
- lsl r5, r1, #0x1
- ldrh r5, [r6, r5]
- cmp r3, r5
- beq _02088EAE
- add r1, r1, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- cmp r1, #0x4
- blo _02088E9C
-_02088EAE:
- cmp r1, #0x4
- bne _02088EDA
- mov r1, #0x0
- cmp r2, #0x0
- bls _02088ECA
-_02088EB8:
- lsl r5, r1, #0x1
- ldrh r5, [r4, r5]
- cmp r5, r3
- beq _02088ECA
- add r1, r1, #0x1
- lsl r1, r1, #0x18
- lsr r1, r1, #0x18
- cmp r1, r2
- blo _02088EB8
-_02088ECA:
- cmp r1, r2
- bne _02088EDA
- ldrh r1, [r7, r0]
- lsl r0, r2, #0x1
- strh r1, [r4, r0]
- add r0, r2, #0x1
- lsl r0, r0, #0x18
- lsr r2, r0, #0x18
-_02088EDA:
- mov r0, r12
- add r0, r0, #0x1
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- mov r12, r0
- cmp r0, #0x16
- blo _02088E70
-_02088EE8:
- add r0, r7, #0x0
- bl FreeToHeap
- add r0, r4, #0x0
- add sp, #0x18
- pop {r3-r7, pc}
- .balign 4
-_02088EF4: .word 0x0000FFFF
-
- thumb_func_start FUN_02088EF8
-FUN_02088EF8: ; 0x02088EF8
- ldrh r1, [r0, #0x0]
- ldr r0, _02088F08 ; =0x0000FFFF
- cmp r1, r0
- beq _02088F04
- mov r0, #0x1
- bx lr
-_02088F04:
- mov r0, #0x0
- bx lr
- .balign 4
-_02088F08: .word 0x0000FFFF
diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s
index 7cd4ef75..8cc2030f 100644
--- a/arm9/asm/unk_0208A338.s
+++ b/arm9/asm/unk_0208A338.s
@@ -208,7 +208,7 @@ _0208A4E8:
ldr r0, [r4, #0x0]
mov r1, #0x0
ldr r0, [r0, #0xc]
- bl FUN_0202A5F4
+ bl SaveStruct23_GetMessage
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x48
@@ -220,7 +220,7 @@ _0208A502:
ldr r0, [r4, #0x0]
mov r1, #0x1
ldr r0, [r0, #0xc]
- bl FUN_0202A5F4
+ bl SaveStruct23_GetMessage
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x48
@@ -232,7 +232,7 @@ _0208A51C:
ldr r0, [r4, #0x0]
mov r1, #0x2
ldr r0, [r0, #0xc]
- bl FUN_0202A5F4
+ bl SaveStruct23_GetMessage
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x48
@@ -244,7 +244,7 @@ _0208A536:
ldr r0, [r4, #0x0]
mov r1, #0x3
ldr r0, [r0, #0xc]
- bl FUN_0202A5F4
+ bl SaveStruct23_GetMessage
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x48
@@ -335,7 +335,7 @@ _0208A5EC:
ldr r0, [r0, #0xc]
ldr r1, [r4, #0x64]
add r2, #0x48
- bl FUN_0202A5D4
+ bl SaveStruct23_SetMessage
add r0, r4, #0x0
mov r1, #0x6
mov r2, #0x0
diff --git a/arm9/global.inc b/arm9/global.inc
index 6f47d473..08f7a73d 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -245,25 +245,25 @@
.extern FUN_02002F9C
.extern FUN_02002FD0
.extern FUN_02002FEC
-.extern FUN_02003008
-.extern FUN_02003038
-.extern FUN_02003054
-.extern FUN_02003084
-.extern FUN_020030E8
+.extern PaletteData_AllocBuffers
+.extern PaletteData_FreeBuffers
+.extern PaletteData_LoadPalette
+.extern PaletteData_LoadFromNarc
+.extern PaletteData_LoadNarc
.extern FUN_02003108
-.extern FUN_0200317C
-.extern FUN_020031B8
-.extern FUN_020031FC
-.extern FUN_02003204
+.extern CopyPaletteFromNarc
+.extern PaletteData_CopyPalette
+.extern PaletteData_GetUnfadedBuf
+.extern PaletteData_GetFadedBuf
.extern FUN_02003210
.extern FUN_0200372C
.extern FUN_020038E4
.extern FUN_020038F0
-.extern FUN_02003914
-.extern FUN_02003974
-.extern FUN_020039E8
-.extern FUN_02003A30
-.extern FUN_02003A64
+.extern PaletteData_FillPalette
+.extern BlendPalette
+.extern BlendPaletteUnfaded
+.extern BlendPalettes
+.extern BlendPalettesUnfaded
.extern FUN_02003B40
.extern InitSoundData
.extern DoSoundUpdateFrame
@@ -276,7 +276,7 @@
.extern GF_Snd_LoadSeqEx
.extern GF_Snd_LoadWaveArc
.extern GF_Snd_LoadBank
-.extern FUN_02003FF4
+.extern GetSoundPlayer
.extern FUN_02004018
.extern FUN_020040F4
.extern FUN_02004104
@@ -291,19 +291,19 @@
.extern FUN_02004748
.extern FUN_020047C8
.extern FUN_02004810
-.extern FUN_02004828
-.extern FUN_0200483C
+.extern GF_SndPlayerMoveVolume
+.extern GF_SndPlayerSetInitialVolume
.extern FUN_02004858
.extern FUN_0200488C
-.extern FUN_020048A0
-.extern FUN_020048BC
+.extern GF_SndArcPlayerStartSeqEx
+.extern GF_SndPlayerCountPlayingSeqByPlayerNo
.extern FUN_020048D0
-.extern FUN_020048EC
+.extern GF_SndPlayerGetSeqNo
.extern FUN_020048F4
.extern FUN_02004900
-.extern FUN_02004914
-.extern FUN_0200491C
-.extern FUN_02004928
+.extern GF_MIC_StartAutoSampling
+.extern GF_MIC_StopAutoSampling
+.extern GF_MIC_DoSamplingAsync
.extern FUN_02004930
.extern FUN_02004984
.extern FUN_02004A04
@@ -315,16 +315,16 @@
.extern FUN_02004AF8
.extern FUN_02004B30
.extern FUN_02004C3C
-.extern FUN_02004C80
-.extern FUN_02004CA4
-.extern FUN_02004CAC
+.extern GF_SndCaptureStartReverb
+.extern GF_SndCaptureStopReverb
+.extern GF_SndCaptureSetReverbVolume
.extern FUN_02004CB4
-.extern FUN_02004CFC
+.extern GF_SndCaptureStopEffect
.extern FUN_02004D04
-.extern FUN_02004D20
+.extern GF_SndPlayerSetTrackPitch
.extern FUN_02004D34
-.extern FUN_02004D4C
-.extern FUN_02004D60
+.extern GF_SndPlayerSetTrackPan
+.extern GF_SndSetMonoFlag
.extern FUN_02004D74
.extern FUN_02004D94
.extern FUN_02004DB4
@@ -335,10 +335,10 @@
.extern FUN_02004E8C
.extern FUN_02004E98
.extern FUN_02004F28
-.extern FUN_02004F64
+.extern GF_SndPlayerGetTick
.extern FUN_02004F70
.extern FUN_0200516C
-.extern FUN_020051EC
+.extern GF_SndPlayerSetPlayerVolume
.extern FUN_020051F4
.extern FUN_0200521C
.extern FUN_02005308
@@ -1425,7 +1425,7 @@
.extern FUN_02022318
.extern FUN_020223BC
.extern FUN_02022450
-.extern FUN_020224D8
+.extern Reset_To_File
.extern FUN_02022504
.extern GetStoragePCPointer
.extern FUN_0202251C
@@ -1998,42 +1998,45 @@
.extern FUN_0202A170
.extern FUN_0202A1B8
.extern FUN_0202A1C4
-.extern FUN_0202A1E0
-.extern FUN_0202A1E4
-.extern FUN_0202A240
-.extern FUN_0202A2C4
+.extern SaveStruct23_Substruct4_Substruct1_sizeof
+.extern SaveStruct23_Substruct1_Init
+.extern SaveStruct23_Substruct2_Init
+.extern SaveStruct23_Messages_Init
+.extern SaveStruct23_Substruct4_Init
+.extern SaveStruct23_Substruct1_GetField
+.extern SaveStruct23_Substruct1_SetField
.extern FUN_0202A36C
-.extern FUN_0202A398
-.extern FUN_0202A3A0
-.extern FUN_0202A3B4
-.extern FUN_0202A40C
-.extern FUN_0202A444
-.extern FUN_0202A474
-.extern FUN_0202A498
-.extern FUN_0202A4B8
-.extern FUN_0202A520
+.extern SaveStruct23_Substruct1_GetFlag1
+.extern SaveStruct23_Substruct1_SetFlag1
+.extern SaveStruct23_Substruct2_SetField_0x0
+.extern SaveStruct23_Substruct2_SetField_0x2
+.extern SaveStruct23_Substruct2_SetField_0x3
+.extern SaveStruct23_Substruct2_SetArray
+.extern SaveStruct23_Substruct2_GetArray
+.extern SaveStruct23_Substruct2_SetField_0x16
+.extern SaveStruct23_Substruct2_GetField_0x16
.extern FUN_0202A524
-.extern FUN_0202A538
-.extern FUN_0202A578
-.extern FUN_0202A5CC
-.extern FUN_0202A5D0
-.extern FUN_0202A5D4
-.extern FUN_0202A5F4
-.extern FUN_0202A60C
-.extern FUN_0202A6B4
-.extern FUN_0202A744
-.extern FUN_0202A74C
-.extern FUN_0202A754
+.extern SaveStruct23_Substruct2_SetField_0xC
+.extern SaveStruct23_Substruct2_SetFlag
+.extern SaveStruct23_Substruct2_SetField_0x4
+.extern SaveStruct23_Substruct2_GetField_0x4
+.extern SaveStruct23_SetMessage
+.extern SaveStruct23_GetMessage
+.extern SaveStruct23_Substruct4_SetArrayFlag
+.extern SaveStruct23_Substruct4_GetArrayFlag
+.extern SaveStruct23_Substruct4_GetField_0xFE
+.extern SaveStruct23_Substruct4_GetField_0xFF
+.extern SaveStruct23_Substruct4_SetSubstruct1
.extern FUN_0202A784
.extern FUN_0202A798
.extern FUN_0202A838
.extern FUN_0202A864
.extern FUN_0202A878
-.extern FUN_0202A89C
-.extern FUN_0202A8A4
-.extern FUN_0202A8CC
-.extern FUN_0202A8D8
-.extern FUN_0202A8E4
+.extern SaveStruct23_sizeof
+.extern SaveStruct23_Init
+.extern SaveStruct23_GetSubstruct1
+.extern SaveStruct23_GetSubstruct2
+.extern SaveStruct23_GetSubstruct4
.extern FUN_0202A8F4
.extern FUN_0202A8F8
.extern FUN_0202A918
@@ -2468,23 +2471,23 @@
.extern FUN_02033EEC
.extern FUN_02033F04
.extern FUN_02033F20
-.extern FUN_02033F70
-.extern FUN_02034188
-.extern FUN_02034494
-.extern FUN_020344AC
-.extern FUN_020344D0
-.extern FUN_020344D8
-.extern FUN_020344FC
-.extern FUN_0203450C
-.extern FUN_0203451C
-.extern FUN_02034554
-.extern FUN_02034574
-.extern FUN_02034578
-.extern FUN_020345A8
-.extern FUN_020345DC
-.extern FUN_020345F0
-.extern FUN_020345FC
-.extern FUN_02034660
+.extern ShowCommunicationError
+.extern ShowWFCUserInfoWarning
+.extern MapMatrix_New
+.extern MapMatrix_Load
+.extern MapMatrix_Free
+.extern MapMatrix_GetMapData
+.extern MapMatrix_GetWidth
+.extern MapMatrix_GetHeight
+.extern MapMatrix_GetMapHeader
+.extern MapMatrix_GetMapHeaderFromID
+.extern MapMatrix_GetMatrixID
+.extern MapMatrix_GetMapAltitude
+.extern MapMatrix_MapData_New
+.extern MapMatrix_MapData_Free
+.extern MapMatrix_MapData_GetData
+.extern GetMapHeader
+.extern GetMapData
.extern FUN_02034678
.extern FUN_020346CC
.extern MapHeader_GetAreaDataBank
@@ -2501,23 +2504,23 @@
.extern MapHeader_GetMapSec
.extern MapHeader_GetWeatherType
.extern MapHeader_GetCameraType
-.extern MapHeader_GetField17_0
-.extern MapHeader_GetField17_6
+.extern MapHeader_GetBattleBg
+.extern MapHeader_IsEscapeRopeAllowed
.extern MapHeader_IsFlyAllowed
.extern MapHeader_IsBikeAllowed
.extern FUN_020348E4
-.extern MapHeader_MapIsOnOverworldMatrix
+.extern MapHeader_MapIsOnMainMatrix
.extern FUN_02034930
.extern FUN_02034944
.extern FUN_02034964
.extern FUN_02034984
-.extern FUN_02034998
-.extern FUN_020349AC
-.extern FUN_020349B8
-.extern FUN_020349CC
-.extern FUN_020349D8
-.extern FUN_020349E4
-.extern FUN_02034A04
+.extern MapHeader_MapIsUnionRoom
+.extern MapHeader_MapIsMtCoronetFeebasRoom
+.extern MapHeader_MapIsTrophyGarden
+.extern MapHeader_MapIsAmitySquare
+.extern MapHeader_MapIsSpearPillar
+.extern MapHeader_MapIsPokemonCenterSecondFloor
+.extern MapHeader_GetMapEvolutionMethod
.extern FUN_02034A28
.extern FUN_02034A48
.extern FUN_02034A60
@@ -2785,7 +2788,7 @@
.extern ScrCmd_Unk02D0
.extern ScrCmd_Unk005E
.extern ScrCmd_Unk02A1
-.extern ScrCmd_Unk005F
+.extern ScrCmd_WaitForMovement
.extern ScrCmd_Unk0060
.extern ScrCmd_Unk02B4
.extern ScrCmd_Unk0061
@@ -5447,7 +5450,7 @@
.extern FUN_02088DBC
.extern FUN_02088DD8
.extern FUN_02088DF0
-.extern FUN_02088DF8
+.extern GetEligibleLevelUpMoves
.extern FUN_02088EF8
.extern FUN_02088F0C
.extern FUN_02088F4C
@@ -7441,6 +7444,38 @@
.extern MOD21_02254B10
.extern MOD21_02254B34
.extern MOD21_02254B40
+.extern MOD26_02254BD4
+.extern MOD26_02254C04
+.extern MOD26_02254C10
+.extern MOD26_02254C34
+.extern MOD26_02254C40
+.extern MOD33_022549AC
+.extern MOD33_022549DC
+.extern MOD33_022549E8
+.extern MOD33_02254A0C
+.extern MOD33_02254A18
+.extern MOD33_02254A38
+.extern MOD33_02254AD8
+.extern MOD44_02254A54
+.extern MOD44_02254B00
+.extern MOD44_02254B14
+.extern MOD44_02254B38
+.extern MOD44_02254B44
+.extern MOD44_02254B64
+.extern MOD44_02254BF8
+.extern MOD44_02254C14
+.extern MOD46_022549AC
+.extern MOD46_022549DC
+.extern MOD46_022549E8
+.extern MOD46_02254A0C
+.extern MOD46_02254A18
+.extern MOD50_022549AC
+.extern MOD50_022549E0
+.extern MOD50_022549F8
+.extern MOD50_02254A1C
+.extern MOD50_02254A28
+.extern MOD50_02254A48
+.extern MOD50_02254AE8
.extern MOD51_02254A68
.extern MOD51_02254AB8
.extern MOD52_021D76C8
diff --git a/arm9/lib/Makefile b/arm9/lib/Makefile
index 0ff7e9e4..ebe143f2 100644
--- a/arm9/lib/Makefile
+++ b/arm9/lib/Makefile
@@ -1,5 +1,3 @@
-
-
# Try to include devkitarm if installed
TOOLCHAIN := $(DEVKITARM)
@@ -56,22 +54,30 @@ OBJCOPY := $(CROSS)objcopy
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
ASFLAGS = -proc arm5te -ir ../..
-CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i include -ir include-mw -ir arm9/lib/include -W all
+CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i include -ir include-mw -ir arm9/lib/libc/include -ir arm9/lib/libnns/include -ir arm9/lib/NitroSDK/include -W all
LDFLAGS = -library -nodead -w off -proc v5te -interworking -pic
ARFLAGS = rcS
-export MWCIncludes := include
+export MWCIncludes := libc/include libnns/include NitroSDK/include
################ Targets #################
LIBS := libsyscall.a
.PHONY: all clean
-all: $(LIBS)
+all: libs $(LIBS)
@:
+libs:
+ $(MAKE) -C libc
+ $(MAKE) -C libnns
+ $(MAKE) -C NitroSDK
+
clean:
- $(RM) $(LIBS) $(LIBS:%.a=%/*.o)
+ $(MAKE) clean -C libc
+ $(MAKE) clean -C libnns
+ $(MAKE) clean -C NitroSDK
+ $(RM) $(LIBS)
libsyscall.a: syscall/_svc_mw.o
diff --git a/arm9/lib/NitroSDK/Makefile b/arm9/lib/NitroSDK/Makefile
new file mode 100644
index 00000000..37490838
--- /dev/null
+++ b/arm9/lib/NitroSDK/Makefile
@@ -0,0 +1,80 @@
+# Try to include devkitarm if installed
+TOOLCHAIN := $(DEVKITARM)
+
+ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
+include $(TOOLCHAIN)/base_tools
+endif
+
+# If you are using WSL, it is recommended you build with NOWINE=1.
+WSLENV ?= no
+ifeq ($(WSLENV),)
+NOWINE = 1
+else
+NOWINE = 0
+endif
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+WINE :=
+else
+EXE :=
+WINE := wine
+endif
+
+ifeq ($(NOWINE),1)
+WINE :=
+endif
+
+# Compare result of arm9, arm7, and ROM to sha1 hash(s)
+COMPARE ?= 1
+
+##################### Compiler Options #######################
+
+MWCCVERSION = 1.2/sp2p3
+
+CROSS := arm-none-eabi-
+
+MWCCARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwccarm.exe
+# Argh... due to EABI version shenanigans, we can't use GNU LD to link together
+# MWCC built objects and GNU built ones. mwldarm, however, doesn't care, so we
+# have to use mwldarm for now.
+# TODO: Is there a hack workaround to let us go back to GNU LD? Ideally, the
+# only dependency should be MWCCARM.
+MWLDARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwldarm.exe
+MWASMARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwasmarm.exe
+SCANINC = ../../../tools/scaninc/scaninc$(EXE)
+
+AS = $(WINE) $(MWASMARM)
+CC = $(WINE) $(MWCCARM)
+CPP := cpp -P
+LD = $(WINE) $(MWLDARM)
+AR := $(CROSS)ar
+OBJDUMP := $(CROSS)objdump
+OBJCOPY := $(CROSS)objcopy
+
+# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
+ASFLAGS = -proc arm5te -ir ../../..
+CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i include -ir include-mw -ir arm9/lib/libc/include -ir arm9/lib/libnns/include -ir arm9/lib/NitroSDK/include -W all
+LDFLAGS = -library -nodead -w off -proc v5te -interworking -pic
+ARFLAGS = rcS
+
+export MWCIncludes := include
+
+################ Targets #################
+
+.PHONY: all clean
+
+all:
+ @:
+
+clean:
+ $(RM) $(%.a=%/*.o)
+
+%.a:
+ $(AR) $(ARFLAGS) -o $@ $^
+
+%.o: %.c
+ $(CC) $(CFLAGS) -o $@ $<
+
+%.o: %.s
+ $(AS) $(ASFLAGS) -o $@ $<
diff --git a/arm9/lib/include/CARD_backup.h b/arm9/lib/NitroSDK/include/CARD_backup.h
index e5c0c0cd..e5c0c0cd 100644
--- a/arm9/lib/include/CARD_backup.h
+++ b/arm9/lib/NitroSDK/include/CARD_backup.h
diff --git a/arm9/lib/include/CARD_common.h b/arm9/lib/NitroSDK/include/CARD_common.h
index 1ae31b7a..1ae31b7a 100644
--- a/arm9/lib/include/CARD_common.h
+++ b/arm9/lib/NitroSDK/include/CARD_common.h
diff --git a/arm9/lib/include/CARD_pullOut.h b/arm9/lib/NitroSDK/include/CARD_pullOut.h
index bfc0e6d2..bfc0e6d2 100644
--- a/arm9/lib/include/CARD_pullOut.h
+++ b/arm9/lib/NitroSDK/include/CARD_pullOut.h
diff --git a/arm9/lib/include/CARD_request.h b/arm9/lib/NitroSDK/include/CARD_request.h
index 1bae75d0..1bae75d0 100644
--- a/arm9/lib/include/CARD_request.h
+++ b/arm9/lib/NitroSDK/include/CARD_request.h
diff --git a/arm9/lib/include/CARD_rom.h b/arm9/lib/NitroSDK/include/CARD_rom.h
index e72d653f..b6fca60b 100644
--- a/arm9/lib/include/CARD_rom.h
+++ b/arm9/lib/NitroSDK/include/CARD_rom.h
@@ -6,6 +6,7 @@
#include "MI_dma.h"
#include "CARD_common.h"
#include "OS_tcm.h"
+#include "mmap.h"
#define CARD_ROM_PAGE_SIZE 512
diff --git a/arm9/lib/include/CARD_spi.h b/arm9/lib/NitroSDK/include/CARD_spi.h
index 0181e39f..0181e39f 100644
--- a/arm9/lib/include/CARD_spi.h
+++ b/arm9/lib/NitroSDK/include/CARD_spi.h
diff --git a/arm9/lib/include/CP_context.h b/arm9/lib/NitroSDK/include/CP_context.h
index 9d392352..9d392352 100644
--- a/arm9/lib/include/CP_context.h
+++ b/arm9/lib/NitroSDK/include/CP_context.h
diff --git a/arm9/lib/include/CTRDG_backup.h b/arm9/lib/NitroSDK/include/CTRDG_backup.h
index 8b95a7aa..8b95a7aa 100644
--- a/arm9/lib/include/CTRDG_backup.h
+++ b/arm9/lib/NitroSDK/include/CTRDG_backup.h
diff --git a/arm9/lib/include/CTRDG_common.h b/arm9/lib/NitroSDK/include/CTRDG_common.h
index 2d37c6f8..2d37c6f8 100644
--- a/arm9/lib/include/CTRDG_common.h
+++ b/arm9/lib/NitroSDK/include/CTRDG_common.h
diff --git a/arm9/lib/include/CTRDG_flash.h b/arm9/lib/NitroSDK/include/CTRDG_flash.h
index aa02d951..aa02d951 100644
--- a/arm9/lib/include/CTRDG_flash.h
+++ b/arm9/lib/NitroSDK/include/CTRDG_flash.h
diff --git a/arm9/lib/include/CTRDG_flash_AT29LV512.h b/arm9/lib/NitroSDK/include/CTRDG_flash_AT29LV512.h
index 64f3efdb..64f3efdb 100644
--- a/arm9/lib/include/CTRDG_flash_AT29LV512.h
+++ b/arm9/lib/NitroSDK/include/CTRDG_flash_AT29LV512.h
diff --git a/arm9/lib/include/CTRDG_task.h b/arm9/lib/NitroSDK/include/CTRDG_task.h
index 2cf7a233..2cf7a233 100644
--- a/arm9/lib/include/CTRDG_task.h
+++ b/arm9/lib/NitroSDK/include/CTRDG_task.h
diff --git a/arm9/lib/include/DGT_common.h b/arm9/lib/NitroSDK/include/DGT_common.h
index c74ae7cd..c74ae7cd 100644
--- a/arm9/lib/include/DGT_common.h
+++ b/arm9/lib/NitroSDK/include/DGT_common.h
diff --git a/arm9/lib/include/DGT_dgt.h b/arm9/lib/NitroSDK/include/DGT_dgt.h
index 95c7c4e2..95c7c4e2 100644
--- a/arm9/lib/include/DGT_dgt.h
+++ b/arm9/lib/NitroSDK/include/DGT_dgt.h
diff --git a/arm9/lib/include/FS_archive.h b/arm9/lib/NitroSDK/include/FS_archive.h
index 3987341c..3987341c 100644
--- a/arm9/lib/include/FS_archive.h
+++ b/arm9/lib/NitroSDK/include/FS_archive.h
diff --git a/arm9/lib/include/FS_command.h b/arm9/lib/NitroSDK/include/FS_command.h
index b5e73bcf..b5e73bcf 100644
--- a/arm9/lib/include/FS_command.h
+++ b/arm9/lib/NitroSDK/include/FS_command.h
diff --git a/arm9/lib/include/FS_command_default.h b/arm9/lib/NitroSDK/include/FS_command_default.h
index 20e20f8f..20e20f8f 100644
--- a/arm9/lib/include/FS_command_default.h
+++ b/arm9/lib/NitroSDK/include/FS_command_default.h
diff --git a/arm9/lib/include/FS_file.h b/arm9/lib/NitroSDK/include/FS_file.h
index f870ad2a..f870ad2a 100644
--- a/arm9/lib/include/FS_file.h
+++ b/arm9/lib/NitroSDK/include/FS_file.h
diff --git a/arm9/lib/include/FS_mw_dtor.h b/arm9/lib/NitroSDK/include/FS_mw_dtor.h
index a746ed19..a746ed19 100644
--- a/arm9/lib/include/FS_mw_dtor.h
+++ b/arm9/lib/NitroSDK/include/FS_mw_dtor.h
diff --git a/arm9/lib/include/FS_overlay.h b/arm9/lib/NitroSDK/include/FS_overlay.h
index 7853e4ae..7853e4ae 100644
--- a/arm9/lib/include/FS_overlay.h
+++ b/arm9/lib/NitroSDK/include/FS_overlay.h
diff --git a/arm9/lib/include/FS_rom.h b/arm9/lib/NitroSDK/include/FS_rom.h
index bd0cd73b..bd0cd73b 100644
--- a/arm9/lib/include/FS_rom.h
+++ b/arm9/lib/NitroSDK/include/FS_rom.h
diff --git a/arm9/lib/include/FSi_util.h b/arm9/lib/NitroSDK/include/FSi_util.h
index 2357b446..2357b446 100644
--- a/arm9/lib/include/FSi_util.h
+++ b/arm9/lib/NitroSDK/include/FSi_util.h
diff --git a/arm9/lib/include/GX_asm.h b/arm9/lib/NitroSDK/include/GX_asm.h
index d2622508..d2622508 100644
--- a/arm9/lib/include/GX_asm.h
+++ b/arm9/lib/NitroSDK/include/GX_asm.h
diff --git a/arm9/lib/include/GX_bgcnt.h b/arm9/lib/NitroSDK/include/GX_bgcnt.h
index b64d4432..b64d4432 100644
--- a/arm9/lib/include/GX_bgcnt.h
+++ b/arm9/lib/NitroSDK/include/GX_bgcnt.h
diff --git a/arm9/lib/include/GX_dma.h b/arm9/lib/NitroSDK/include/GX_dma.h
index 98f6a4a2..98f6a4a2 100644
--- a/arm9/lib/include/GX_dma.h
+++ b/arm9/lib/NitroSDK/include/GX_dma.h
diff --git a/arm9/lib/include/GX_g2.h b/arm9/lib/NitroSDK/include/GX_g2.h
index 97fa0e10..97fa0e10 100644
--- a/arm9/lib/include/GX_g2.h
+++ b/arm9/lib/NitroSDK/include/GX_g2.h
diff --git a/arm9/lib/include/GX_g3.h b/arm9/lib/NitroSDK/include/GX_g3.h
index 765ecc64..765ecc64 100644
--- a/arm9/lib/include/GX_g3.h
+++ b/arm9/lib/NitroSDK/include/GX_g3.h
diff --git a/arm9/lib/include/GX_g3_util.h b/arm9/lib/NitroSDK/include/GX_g3_util.h
index 7a35f545..8b66aee7 100644
--- a/arm9/lib/include/GX_g3_util.h
+++ b/arm9/lib/NitroSDK/include/GX_g3_util.h
@@ -1,7 +1,7 @@
#ifndef GUARD_GX_G3_UTIL_H
#define GUARD_GX_G3_UTIL_H
-#include "FX_types.h"
+#include "nitro/FX_types.h"
void G3i_PerspectiveW_(fx32 fovsin, fx32 fovcos, fx32 ratio, fx32 near, fx32 far, fx32 scale, u32 load, struct Mtx44 *mtx);
void G3i_OrthoW_(fx32 top, fx32 bottom, fx32 left, fx32 right, fx32 near, fx32 far, fx32 scale, u32 load, struct Mtx44 *mtx);
diff --git a/arm9/lib/include/GX_g3b.h b/arm9/lib/NitroSDK/include/GX_g3b.h
index d299ea34..d299ea34 100644
--- a/arm9/lib/include/GX_g3b.h
+++ b/arm9/lib/NitroSDK/include/GX_g3b.h
diff --git a/arm9/lib/include/GX_g3imm.h b/arm9/lib/NitroSDK/include/GX_g3imm.h
index f811dc68..f811dc68 100644
--- a/arm9/lib/include/GX_g3imm.h
+++ b/arm9/lib/NitroSDK/include/GX_g3imm.h
diff --git a/arm9/lib/include/GX_g3x.h b/arm9/lib/NitroSDK/include/GX_g3x.h
index a0512b28..aa65a190 100644
--- a/arm9/lib/include/GX_g3x.h
+++ b/arm9/lib/NitroSDK/include/GX_g3x.h
@@ -3,6 +3,8 @@
#include "fx.h"
+#include "registers.h"
+
void GXi_NopClearFifo128_(void *reg);
void G3X_Init();
void G3X_ResetMtxStack();
diff --git a/arm9/lib/include/GX_load2d.h b/arm9/lib/NitroSDK/include/GX_load2d.h
index 3c9fb5cb..3c9fb5cb 100644
--- a/arm9/lib/include/GX_load2d.h
+++ b/arm9/lib/NitroSDK/include/GX_load2d.h
diff --git a/arm9/lib/include/GX_load3d.h b/arm9/lib/NitroSDK/include/GX_load3d.h
index 09fd296a..09fd296a 100644
--- a/arm9/lib/include/GX_load3d.h
+++ b/arm9/lib/NitroSDK/include/GX_load3d.h
diff --git a/arm9/lib/include/GX_state.h b/arm9/lib/NitroSDK/include/GX_state.h
index c94b6c07..c94b6c07 100644
--- a/arm9/lib/include/GX_state.h
+++ b/arm9/lib/NitroSDK/include/GX_state.h
diff --git a/arm9/lib/include/GX_struct_2d.h b/arm9/lib/NitroSDK/include/GX_struct_2d.h
index 3b544927..3b544927 100644
--- a/arm9/lib/include/GX_struct_2d.h
+++ b/arm9/lib/NitroSDK/include/GX_struct_2d.h
diff --git a/arm9/lib/include/GX_vramcnt.h b/arm9/lib/NitroSDK/include/GX_vramcnt.h
index 3b82d28c..3b82d28c 100644
--- a/arm9/lib/include/GX_vramcnt.h
+++ b/arm9/lib/NitroSDK/include/GX_vramcnt.h
diff --git a/arm9/lib/include/GXcommon.h b/arm9/lib/NitroSDK/include/GXcommon.h
index a83f4384..a83f4384 100644
--- a/arm9/lib/include/GXcommon.h
+++ b/arm9/lib/NitroSDK/include/GXcommon.h
diff --git a/arm9/lib/include/MATH_crc.h b/arm9/lib/NitroSDK/include/MATH_crc.h
index 4f06fa75..4f06fa75 100644
--- a/arm9/lib/include/MATH_crc.h
+++ b/arm9/lib/NitroSDK/include/MATH_crc.h
diff --git a/arm9/lib/include/MATH_dgt.h b/arm9/lib/NitroSDK/include/MATH_dgt.h
index 140b4f98..140b4f98 100644
--- a/arm9/lib/include/MATH_dgt.h
+++ b/arm9/lib/NitroSDK/include/MATH_dgt.h
diff --git a/arm9/lib/include/MATH_pop.h b/arm9/lib/NitroSDK/include/MATH_pop.h
index 29a42b22..29a42b22 100644
--- a/arm9/lib/include/MATH_pop.h
+++ b/arm9/lib/NitroSDK/include/MATH_pop.h
diff --git a/arm9/lib/include/MB_mb.h b/arm9/lib/NitroSDK/include/MB_mb.h
index 5bccaf8b..5bccaf8b 100644
--- a/arm9/lib/include/MB_mb.h
+++ b/arm9/lib/NitroSDK/include/MB_mb.h
diff --git a/arm9/lib/include/MI_byteAccess.h b/arm9/lib/NitroSDK/include/MI_byteAccess.h
index cad4d518..cad4d518 100644
--- a/arm9/lib/include/MI_byteAccess.h
+++ b/arm9/lib/NitroSDK/include/MI_byteAccess.h
diff --git a/arm9/lib/include/MI_dma.h b/arm9/lib/NitroSDK/include/MI_dma.h
index 99d1cb84..99d1cb84 100644
--- a/arm9/lib/include/MI_dma.h
+++ b/arm9/lib/NitroSDK/include/MI_dma.h
diff --git a/arm9/lib/include/MI_dma_card.h b/arm9/lib/NitroSDK/include/MI_dma_card.h
index efd70ba6..efd70ba6 100644
--- a/arm9/lib/include/MI_dma_card.h
+++ b/arm9/lib/NitroSDK/include/MI_dma_card.h
diff --git a/arm9/lib/include/MI_dma_gxcommand.h b/arm9/lib/NitroSDK/include/MI_dma_gxcommand.h
index 7cc32ba2..7cc32ba2 100644
--- a/arm9/lib/include/MI_dma_gxcommand.h
+++ b/arm9/lib/NitroSDK/include/MI_dma_gxcommand.h
diff --git a/arm9/lib/include/MI_dma_hblank.h b/arm9/lib/NitroSDK/include/MI_dma_hblank.h
index 1c83ef3e..1c83ef3e 100644
--- a/arm9/lib/include/MI_dma_hblank.h
+++ b/arm9/lib/NitroSDK/include/MI_dma_hblank.h
diff --git a/arm9/lib/include/MI_exMemory.h b/arm9/lib/NitroSDK/include/MI_exMemory.h
index aa90a73c..5e21d7e6 100644
--- a/arm9/lib/include/MI_exMemory.h
+++ b/arm9/lib/NitroSDK/include/MI_exMemory.h
@@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_MI_EXMEMORY_H
#define POKEDIAMOND_MI_EXMEMORY_H
-#include "consts.h"
+#include "registers.h"
typedef enum {
MI_PROCESSOR_ARM9 = 0,
diff --git a/arm9/lib/include/MI_init.h b/arm9/lib/NitroSDK/include/MI_init.h
index a338ab6b..a338ab6b 100644
--- a/arm9/lib/include/MI_init.h
+++ b/arm9/lib/NitroSDK/include/MI_init.h
diff --git a/arm9/lib/include/MI_memory.h b/arm9/lib/NitroSDK/include/MI_memory.h
index 4e5722bb..4e5722bb 100644
--- a/arm9/lib/include/MI_memory.h
+++ b/arm9/lib/NitroSDK/include/MI_memory.h
diff --git a/arm9/lib/include/MI_swap.h b/arm9/lib/NitroSDK/include/MI_swap.h
index 433b5804..433b5804 100644
--- a/arm9/lib/include/MI_swap.h
+++ b/arm9/lib/NitroSDK/include/MI_swap.h
diff --git a/arm9/lib/include/MI_uncompress.h b/arm9/lib/NitroSDK/include/MI_uncompress.h
index defafa8c..defafa8c 100644
--- a/arm9/lib/include/MI_uncompress.h
+++ b/arm9/lib/NitroSDK/include/MI_uncompress.h
diff --git a/arm9/lib/include/MI_wram.h b/arm9/lib/NitroSDK/include/MI_wram.h
index fa445a8a..fa445a8a 100644
--- a/arm9/lib/include/MI_wram.h
+++ b/arm9/lib/NitroSDK/include/MI_wram.h
diff --git a/arm9/lib/include/OS_alarm.h b/arm9/lib/NitroSDK/include/OS_alarm.h
index 00a3c3d3..00a3c3d3 100644
--- a/arm9/lib/include/OS_alarm.h
+++ b/arm9/lib/NitroSDK/include/OS_alarm.h
diff --git a/arm9/lib/include/OS_alloc.h b/arm9/lib/NitroSDK/include/OS_alloc.h
index e73c2971..e73c2971 100644
--- a/arm9/lib/include/OS_alloc.h
+++ b/arm9/lib/NitroSDK/include/OS_alloc.h
diff --git a/arm9/lib/include/OS_arena.h b/arm9/lib/NitroSDK/include/OS_arena.h
index a26cf3bd..a26cf3bd 100644
--- a/arm9/lib/include/OS_arena.h
+++ b/arm9/lib/NitroSDK/include/OS_arena.h
diff --git a/arm9/lib/include/OS_cache.h b/arm9/lib/NitroSDK/include/OS_cache.h
index 425eab3f..425eab3f 100644
--- a/arm9/lib/include/OS_cache.h
+++ b/arm9/lib/NitroSDK/include/OS_cache.h
diff --git a/arm9/lib/include/OS_context.h b/arm9/lib/NitroSDK/include/OS_context.h
index d3e24673..d3e24673 100644
--- a/arm9/lib/include/OS_context.h
+++ b/arm9/lib/NitroSDK/include/OS_context.h
diff --git a/arm9/lib/include/OS_emulator.h b/arm9/lib/NitroSDK/include/OS_emulator.h
index 30acec16..30acec16 100644
--- a/arm9/lib/include/OS_emulator.h
+++ b/arm9/lib/NitroSDK/include/OS_emulator.h
diff --git a/arm9/lib/include/OS_entropy.h b/arm9/lib/NitroSDK/include/OS_entropy.h
index b0f2781a..7c39aadd 100644
--- a/arm9/lib/include/OS_entropy.h
+++ b/arm9/lib/NitroSDK/include/OS_entropy.h
@@ -5,8 +5,7 @@
#ifndef POKEDIAMOND_OS_ENTROPY_H
#define POKEDIAMOND_OS_ENTROPY_H
-#include "consts.h"
-#include "userInfo.h"
+#include "registers.h"
void OS_GetLowEntropyData(u32 * arr);
diff --git a/arm9/lib/include/OS_exception.h b/arm9/lib/NitroSDK/include/OS_exception.h
index 26fc3525..26fc3525 100644
--- a/arm9/lib/include/OS_exception.h
+++ b/arm9/lib/NitroSDK/include/OS_exception.h
diff --git a/arm9/lib/include/OS_init.h b/arm9/lib/NitroSDK/include/OS_init.h
index f0b80220..f0b80220 100644
--- a/arm9/lib/include/OS_init.h
+++ b/arm9/lib/NitroSDK/include/OS_init.h
diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/NitroSDK/include/OS_interrupt.h
index 130ad2de..19dd0da2 100644
--- a/arm9/lib/include/OS_interrupt.h
+++ b/arm9/lib/NitroSDK/include/OS_interrupt.h
@@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_ARM9_OS_INTERRUPT_H
#define POKEDIAMOND_ARM9_OS_INTERRUPT_H
-#include "consts.h"
+#include "registers.h"
#include "nitro/OS_interrupt_shared.h"
#define REG_OS_IME_IME_SHIFT 0
diff --git a/arm9/lib/include/OS_irqHandler.h b/arm9/lib/NitroSDK/include/OS_irqHandler.h
index ea12a0ad..e845298b 100644
--- a/arm9/lib/include/OS_irqHandler.h
+++ b/arm9/lib/NitroSDK/include/OS_irqHandler.h
@@ -1,8 +1,8 @@
#ifndef POKEDIAMOND_OS_IRQHANDLER_H
#define POKEDIAMOND_OS_IRQHANDLER_H
-#include "consts.h"
#include "OS_interrupt.h"
+#include "mmap.h"
static inline void OS_ClearIrqCheckFlag(OSIrqMask intr)
{
diff --git a/arm9/lib/include/OS_irqTable.h b/arm9/lib/NitroSDK/include/OS_irqTable.h
index 10165a11..ba8b45a8 100644
--- a/arm9/lib/include/OS_irqTable.h
+++ b/arm9/lib/NitroSDK/include/OS_irqTable.h
@@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_ARM9_OS_IRQTABLE_H
#define POKEDIAMOND_ARM9_OS_IRQTABLE_H
-#include "consts.h"
+#include "mmap.h"
#include "OS_interrupt.h"
void OS_IrqDummy(void);
diff --git a/arm9/lib/include/OS_message.h b/arm9/lib/NitroSDK/include/OS_message.h
index b9c570db..b9c570db 100644
--- a/arm9/lib/include/OS_message.h
+++ b/arm9/lib/NitroSDK/include/OS_message.h
diff --git a/arm9/lib/include/OS_mutex.h b/arm9/lib/NitroSDK/include/OS_mutex.h
index 23e4337e..23e4337e 100644
--- a/arm9/lib/include/OS_mutex.h
+++ b/arm9/lib/NitroSDK/include/OS_mutex.h
diff --git a/arm9/lib/include/OS_ownerInfo.h b/arm9/lib/NitroSDK/include/OS_ownerInfo.h
index 13bae06e..13bae06e 100644
--- a/arm9/lib/include/OS_ownerInfo.h
+++ b/arm9/lib/NitroSDK/include/OS_ownerInfo.h
diff --git a/arm9/lib/include/OS_printf.h b/arm9/lib/NitroSDK/include/OS_printf.h
index acb7f8c7..acb7f8c7 100644
--- a/arm9/lib/include/OS_printf.h
+++ b/arm9/lib/NitroSDK/include/OS_printf.h
diff --git a/arm9/lib/include/OS_protectionRegion.h b/arm9/lib/NitroSDK/include/OS_protectionRegion.h
index 00b7ae63..00b7ae63 100644
--- a/arm9/lib/include/OS_protectionRegion.h
+++ b/arm9/lib/NitroSDK/include/OS_protectionRegion.h
diff --git a/arm9/lib/include/OS_protectionUnit.h b/arm9/lib/NitroSDK/include/OS_protectionUnit.h
index e7dc32d8..e7dc32d8 100644
--- a/arm9/lib/include/OS_protectionUnit.h
+++ b/arm9/lib/NitroSDK/include/OS_protectionUnit.h
diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/NitroSDK/include/OS_reset.h
index b5d43bad..756de9fb 100644
--- a/arm9/lib/include/OS_reset.h
+++ b/arm9/lib/NitroSDK/include/OS_reset.h
@@ -1,9 +1,8 @@
#ifndef POKEDIAMOND_ARM9_OS_RESET_H
#define POKEDIAMOND_ARM9_OS_RESET_H
-#include "consts.h"
#include "nitro/OS_reset_shared.h"
-#include "PXI_fifo.h"
+#include "mmap.h"
void OS_InitReset(void);
void OS_ResetSystem(u32 parameter);
diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/NitroSDK/include/OS_spinLock.h
index 09c2cf2c..09c2cf2c 100644
--- a/arm9/lib/include/OS_spinLock.h
+++ b/arm9/lib/NitroSDK/include/OS_spinLock.h
diff --git a/arm9/lib/include/OS_system.h b/arm9/lib/NitroSDK/include/OS_system.h
index 37dbbd76..37dbbd76 100644
--- a/arm9/lib/include/OS_system.h
+++ b/arm9/lib/NitroSDK/include/OS_system.h
diff --git a/arm9/lib/include/OS_tcm.h b/arm9/lib/NitroSDK/include/OS_tcm.h
index 66f8ec59..66f8ec59 100644
--- a/arm9/lib/include/OS_tcm.h
+++ b/arm9/lib/NitroSDK/include/OS_tcm.h
diff --git a/arm9/lib/include/OS_terminate_proc.h b/arm9/lib/NitroSDK/include/OS_terminate_proc.h
index b4553fb4..b4553fb4 100644
--- a/arm9/lib/include/OS_terminate_proc.h
+++ b/arm9/lib/NitroSDK/include/OS_terminate_proc.h
diff --git a/arm9/lib/include/OS_thread.h b/arm9/lib/NitroSDK/include/OS_thread.h
index e330e219..e330e219 100644
--- a/arm9/lib/include/OS_thread.h
+++ b/arm9/lib/NitroSDK/include/OS_thread.h
diff --git a/arm9/lib/include/OS_tick.h b/arm9/lib/NitroSDK/include/OS_tick.h
index e0b6ea39..e0b6ea39 100644
--- a/arm9/lib/include/OS_tick.h
+++ b/arm9/lib/NitroSDK/include/OS_tick.h
diff --git a/arm9/lib/include/OS_timer.h b/arm9/lib/NitroSDK/include/OS_timer.h
index 4a10041b..4a10041b 100644
--- a/arm9/lib/include/OS_timer.h
+++ b/arm9/lib/NitroSDK/include/OS_timer.h
diff --git a/arm9/lib/include/OS_valarm.h b/arm9/lib/NitroSDK/include/OS_valarm.h
index b4850f9d..b4850f9d 100644
--- a/arm9/lib/include/OS_valarm.h
+++ b/arm9/lib/NitroSDK/include/OS_valarm.h
diff --git a/arm9/lib/include/OS_vramExclusive.h b/arm9/lib/NitroSDK/include/OS_vramExclusive.h
index d7c3ef92..d7c3ef92 100644
--- a/arm9/lib/include/OS_vramExclusive.h
+++ b/arm9/lib/NitroSDK/include/OS_vramExclusive.h
diff --git a/arm9/lib/include/PAD_pad.h b/arm9/lib/NitroSDK/include/PAD_pad.h
index a4b5d570..f3de4198 100644
--- a/arm9/lib/include/PAD_pad.h
+++ b/arm9/lib/NitroSDK/include/PAD_pad.h
@@ -1,7 +1,7 @@
#ifndef NITRO_PAD_PAD_H_
#define NITRO_PAD_PAD_H_
-#include "consts.h"
+#include "registers.h"
//================================================================================
// BUTTONS
diff --git a/arm9/lib/include/PXI_fifo.h b/arm9/lib/NitroSDK/include/PXI_fifo.h
index b1ca33f3..b1ca33f3 100644
--- a/arm9/lib/include/PXI_fifo.h
+++ b/arm9/lib/NitroSDK/include/PXI_fifo.h
diff --git a/arm9/lib/include/PXI_init.h b/arm9/lib/NitroSDK/include/PXI_init.h
index 5c330c9c..5c330c9c 100644
--- a/arm9/lib/include/PXI_init.h
+++ b/arm9/lib/NitroSDK/include/PXI_init.h
diff --git a/arm9/lib/include/RTC_api.h b/arm9/lib/NitroSDK/include/RTC_api.h
index 09efde7e..09efde7e 100644
--- a/arm9/lib/include/RTC_api.h
+++ b/arm9/lib/NitroSDK/include/RTC_api.h
diff --git a/arm9/lib/include/RTC_convert.h b/arm9/lib/NitroSDK/include/RTC_convert.h
index a75928b9..a75928b9 100644
--- a/arm9/lib/include/RTC_convert.h
+++ b/arm9/lib/NitroSDK/include/RTC_convert.h
diff --git a/arm9/lib/include/RTC_internal.h b/arm9/lib/NitroSDK/include/RTC_internal.h
index 440d8b95..440d8b95 100644
--- a/arm9/lib/include/RTC_internal.h
+++ b/arm9/lib/NitroSDK/include/RTC_internal.h
diff --git a/arm9/lib/include/SND_alarm.h b/arm9/lib/NitroSDK/include/SND_alarm.h
index cf5db862..07b77f45 100644
--- a/arm9/lib/include/SND_alarm.h
+++ b/arm9/lib/NitroSDK/include/SND_alarm.h
@@ -2,24 +2,13 @@
#define GUARD_SND_ALARM_H
#include "global.h"
-#include "OS_alarm.h"
+#include "nitro/SND_alarm_shared.h"
typedef void (*SNDAlarmCallback)(void *);
-struct SNDAlarm {
- u8 enable; // 0x00
- u8 id; // 0x01
- u16 unk_2; // 0x02
- OSTick tick; // 0x04
- OSTick period; // 0x0C
- OSAlarm alarm; // 0x14
-}; // size = 0x40
-
void SND_AlarmInit(void);
void SNDi_IncAlarmId(u32 idx);
u8 SNDi_SetAlarmHandler(u32 idx, SNDAlarmCallback cb, void *data);
void SNDi_CallAlarmHandler(s32 idx);
-#define SND_ALARM_COUNT 8
-
#endif
diff --git a/arm9/lib/include/SND_bank.h b/arm9/lib/NitroSDK/include/SND_bank.h
index b9000d57..b9000d57 100644
--- a/arm9/lib/include/SND_bank.h
+++ b/arm9/lib/NitroSDK/include/SND_bank.h
diff --git a/arm9/lib/include/SND_command.h b/arm9/lib/NitroSDK/include/SND_command.h
index ff392833..ff392833 100644
--- a/arm9/lib/include/SND_command.h
+++ b/arm9/lib/NitroSDK/include/SND_command.h
diff --git a/arm9/lib/include/SND_interface.h b/arm9/lib/NitroSDK/include/SND_interface.h
index bd2c3869..d0898f85 100644
--- a/arm9/lib/include/SND_interface.h
+++ b/arm9/lib/NitroSDK/include/SND_interface.h
@@ -4,6 +4,7 @@
#include "global.h"
#include "SND_bank.h"
#include "SND_work.h"
+#include "SND_alarm.h"
void SND_StartSeq(s32 player, const void *seqBasePtr, u32 seqOffset, struct SNDBankData *bankData);
void SND_StopSeq(s32 player);
diff --git a/arm9/lib/NitroSDK/include/SND_main.h b/arm9/lib/NitroSDK/include/SND_main.h
new file mode 100644
index 00000000..8fa9364e
--- /dev/null
+++ b/arm9/lib/NitroSDK/include/SND_main.h
@@ -0,0 +1,26 @@
+#ifndef GUARD_SND_MAIN_H
+#define GUARD_SND_MAIN_H
+
+#include "global.h"
+
+#include "nitro/SND_main_shared.h"
+
+void SNDi_UnlockMutex(void);
+void SNDi_LockMutex(void);
+void SND_Init(void);
+
+struct SNDBinaryFileHeader {
+ s8 signature[4]; // 0x0
+ u16 byteOrder; // 0x4
+ u16 version; // 0x6
+ u32 fileSize; // 0x8
+ u16 headerSize; // 0xC
+ u16 dataBlocks; // 0xE
+}; // size = 0x10
+
+typedef struct SNDBinaryBlockHeader {
+ u32 type; // 0x0
+ u32 size; // 0x4
+} SNDBinaryBlockHeader; // size = 0x8
+
+#endif // GUARD_SND_MAIN_H
diff --git a/arm9/lib/include/SND_util.h b/arm9/lib/NitroSDK/include/SND_util.h
index 4137459a..4137459a 100644
--- a/arm9/lib/include/SND_util.h
+++ b/arm9/lib/NitroSDK/include/SND_util.h
diff --git a/arm9/lib/include/SND_work.h b/arm9/lib/NitroSDK/include/SND_work.h
index dec2bd71..a8a3d62b 100644
--- a/arm9/lib/include/SND_work.h
+++ b/arm9/lib/NitroSDK/include/SND_work.h
@@ -4,31 +4,7 @@
#include "global.h"
#include "SND_main.h"
-#include "SND_alarm.h"
-
-#define SND_PLAYER_COUNT 16
-#define SND_CHANNEL_COUNT 16
-#define SND_TRACK_COUNT 32
-
-struct SNDWork {
- struct SNDExChannel channels[SND_CHANNEL_COUNT]; // 0x00
- struct SNDPlayer players[SND_PLAYER_COUNT]; // 0x540
- struct SNDTrack tracks[SND_TRACK_COUNT]; // 0x780
- struct SNDAlarm alarms[SND_ALARM_COUNT]; // 0xF80
-}; // size = 0x1180
-
-struct SNDSharedWork {
- u32 finishedCommandTag; // 0x0
- u32 playerStatus; // 0x4
- u16 channelStatus; // 0x8
- u16 captureStatus; // 0xA
- u8 unk_C[0x14]; // 0xC
- struct {
- s16 localVars[16]; // local 0x0
- u32 tickCounter; // local 0x20
- } players[SND_PLAYER_COUNT]; // 0x20
- s16 globalVars[16]; // 0x260
-}; // size = 0x280
+#include "nitro/SND_work_shared.h"
struct SNDDriverInfo {
struct SNDWork work; // 0x0000
diff --git a/arm9/lib/include/SPI_mic.h b/arm9/lib/NitroSDK/include/SPI_mic.h
index 79588fe9..79588fe9 100644
--- a/arm9/lib/include/SPI_mic.h
+++ b/arm9/lib/NitroSDK/include/SPI_mic.h
diff --git a/arm9/lib/include/SPI_pm.h b/arm9/lib/NitroSDK/include/SPI_pm.h
index 95f94f24..95f94f24 100644
--- a/arm9/lib/include/SPI_pm.h
+++ b/arm9/lib/NitroSDK/include/SPI_pm.h
diff --git a/arm9/lib/NitroSDK/include/WM.h b/arm9/lib/NitroSDK/include/WM.h
new file mode 100644
index 00000000..ad287292
--- /dev/null
+++ b/arm9/lib/NitroSDK/include/WM.h
@@ -0,0 +1,61 @@
+#ifndef POKEDIAMOND_WM_H
+#define POKEDIAMOND_WM_H
+
+#include "nitro/types.h"
+
+typedef struct WMDataSet
+{
+ u16 aidBitmap;
+ u16 receivedBitmap;
+ u16 data[508 / sizeof(u16)];
+} WMDataSet;
+
+typedef struct WMDataSharingInfo
+{
+ WMDataSet ds[4];
+ u16 seqNum[4];
+ u16 writeIndex;
+ u16 sendIndex;
+ u16 readIndex;
+ u16 aidBitmap;
+ u16 dataLength;
+ u16 stationNumber;
+ u16 dataSetLength;
+ u16 port;
+ u16 doubleMode;
+ u16 currentSeqNum;
+ u16 state;
+ u16 reserved[1];
+} WMDataSharingInfo;
+
+typedef WMDataSharingInfo WMKeySetBuf;
+
+typedef enum WMErrCode
+{
+ WM_ERRCODE_SUCCESS = 0,
+ WM_ERRCODE_FAILED = 1,
+ WM_ERRCODE_OPERATING = 2,
+ WM_ERRCODE_ILLEGAL_STATE = 3,
+ WM_ERRCODE_WM_DISABLE = 4,
+ WM_ERRCODE_NO_KEYSET = 5,
+ WM_ERRCODE_NO_DATASET = 5,
+ WM_ERRCODE_INVALID_PARAM = 6,
+ WM_ERRCODE_NO_CHILD = 7,
+ WM_ERRCODE_FIFO_ERROR = 8,
+ WM_ERRCODE_TIMEOUT = 9,
+ WM_ERRCODE_SEND_QUEUE_FULL = 10,
+ WM_ERRCODE_NO_ENTRY = 11,
+ WM_ERRCODE_OVER_MAX_ENTRY = 12,
+ WM_ERRCODE_INVALID_POLLBITMAP = 13,
+ WM_ERRCODE_NO_DATA = 14,
+ WM_ERRCODE_SEND_FAILED = 15,
+
+ WM_ERRCODE_DCF_TEST,
+ WM_ERRCODE_WL_INVALID_PARAM,
+ WM_ERRCODE_WL_LENGTH_ERR,
+
+ WM_ERRCODE_FLASH_ERROR,
+ WM_ERRCODE_MAX
+} WMErrCode;
+
+#endif //POKEDIAMOND_WM_H
diff --git a/arm9/lib/NitroSDK/include/WM_ks.h b/arm9/lib/NitroSDK/include/WM_ks.h
new file mode 100644
index 00000000..0eeb6b1b
--- /dev/null
+++ b/arm9/lib/NitroSDK/include/WM_ks.h
@@ -0,0 +1,9 @@
+#ifndef POKEDIAMOND_WM_KS_H
+#define POKEDIAMOND_WM_KS_H
+
+#include "WM.h"
+
+WMErrCode WM_StartKeySharing(WMKeySetBuf *buf, u16 port);
+WMErrCode WM_EndKeySharing(WMKeySetBuf *buf);
+
+#endif //POKEDIAMOND_WM_KS_H
diff --git a/arm9/lib/include/consts.h b/arm9/lib/NitroSDK/include/consts.h
index 1ad79b93..127339ca 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/NitroSDK/include/consts.h
@@ -2,9 +2,6 @@
#define POKEDIAMOND_ARM9_CONSTS_H
#include "nitro/consts_shared.h"
-#include "mmap.h"
-#include "registers.h"
-#include "systemWork.h"
#define HW_C5_PERMIT_MASK 0xf
diff --git a/arm9/lib/include/custom_allocator.h b/arm9/lib/NitroSDK/include/custom_allocator.h
index 0a42ae13..0a42ae13 100644
--- a/arm9/lib/include/custom_allocator.h
+++ b/arm9/lib/NitroSDK/include/custom_allocator.h
diff --git a/arm9/lib/include/dgt.h b/arm9/lib/NitroSDK/include/dgt.h
index 97916f1b..97916f1b 100644
--- a/arm9/lib/include/dgt.h
+++ b/arm9/lib/NitroSDK/include/dgt.h
diff --git a/arm9/lib/include/fx.h b/arm9/lib/NitroSDK/include/fx.h
index de851f62..59c759ab 100644
--- a/arm9/lib/include/fx.h
+++ b/arm9/lib/NitroSDK/include/fx.h
@@ -1,7 +1,7 @@
#ifndef GUARD_FX_H
#define GUARD_FX_H
-#include "FX_types.h"
+#include "nitro/FX_types.h"
#include "GX_g3_util.h"
//FX
diff --git a/arm9/lib/include/gx.h b/arm9/lib/NitroSDK/include/gx.h
index 7e6606fa..7e6606fa 100644
--- a/arm9/lib/include/gx.h
+++ b/arm9/lib/NitroSDK/include/gx.h
diff --git a/arm9/lib/include/math.h b/arm9/lib/NitroSDK/include/math.h
index 085aa24f..085aa24f 100644
--- a/arm9/lib/include/math.h
+++ b/arm9/lib/NitroSDK/include/math.h
diff --git a/arm9/lib/include/mmap.h b/arm9/lib/NitroSDK/include/mmap.h
index 69e9c696..69e9c696 100644
--- a/arm9/lib/include/mmap.h
+++ b/arm9/lib/NitroSDK/include/mmap.h
diff --git a/arm9/lib/include/nitro.h b/arm9/lib/NitroSDK/include/nitro.h
index ea7503cc..ea7503cc 100644
--- a/arm9/lib/include/nitro.h
+++ b/arm9/lib/NitroSDK/include/nitro.h
diff --git a/arm9/lib/include/registers.h b/arm9/lib/NitroSDK/include/registers.h
index b4fd8ce7..b4fd8ce7 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/NitroSDK/include/registers.h
diff --git a/arm9/lib/include/syscall.h b/arm9/lib/NitroSDK/include/syscall.h
index 8e7962df..8e7962df 100644
--- a/arm9/lib/include/syscall.h
+++ b/arm9/lib/NitroSDK/include/syscall.h
diff --git a/arm9/lib/include/systemWork.h b/arm9/lib/NitroSDK/include/systemWork.h
index b7660985..1e3ba46b 100644
--- a/arm9/lib/include/systemWork.h
+++ b/arm9/lib/NitroSDK/include/systemWork.h
@@ -1,7 +1,6 @@
#ifndef POKEDIAMOND_ARM9_SYSTEMWORK_H
#define POKEDIAMOND_ARM9_SYSTEMWORK_H
-#include "OS_context.h"
#include "nitro/OS_systemWork_shared.h"
#endif //POKEDIAMOND_ARM9_SYSTEMWORK_H
diff --git a/arm9/lib/include/tp.h b/arm9/lib/NitroSDK/include/tp.h
index dc762f10..dc762f10 100644
--- a/arm9/lib/include/tp.h
+++ b/arm9/lib/NitroSDK/include/tp.h
diff --git a/arm9/lib/include/userInfo.h b/arm9/lib/NitroSDK/include/userInfo.h
index 690dcf54..690dcf54 100644
--- a/arm9/lib/include/userInfo.h
+++ b/arm9/lib/NitroSDK/include/userInfo.h
diff --git a/arm9/lib/src/CARD_backup.c b/arm9/lib/NitroSDK/src/CARD_backup.c
index 714ac479..714ac479 100644
--- a/arm9/lib/src/CARD_backup.c
+++ b/arm9/lib/NitroSDK/src/CARD_backup.c
diff --git a/arm9/lib/src/CARD_common.c b/arm9/lib/NitroSDK/src/CARD_common.c
index f820027e..fd66c7ce 100644
--- a/arm9/lib/src/CARD_common.c
+++ b/arm9/lib/NitroSDK/src/CARD_common.c
@@ -8,6 +8,7 @@
#include "OS_cache.h"
#include "MB_mb.h"
#include "PXI_fifo.h"
+#include "mmap.h"
CARDiCommon cardi_common ALIGN(32);
static CARDiCommandArg cardi_arg ALIGN(32);
diff --git a/arm9/lib/src/CARD_pullOut.c b/arm9/lib/NitroSDK/src/CARD_pullOut.c
index 3456df48..d5c7737f 100644
--- a/arm9/lib/src/CARD_pullOut.c
+++ b/arm9/lib/NitroSDK/src/CARD_pullOut.c
@@ -8,6 +8,7 @@
#include "PAD_pad.h"
#include "SPI_pm.h"
#include "syscall.h"
+#include "mmap.h"
static CARDPulledOutCallback CARD_UserCallback;
static BOOL CARDi_IsPulledOutFlag = FALSE;
diff --git a/arm9/lib/src/CARD_request.c b/arm9/lib/NitroSDK/src/CARD_request.c
index 098fe7a5..098fe7a5 100644
--- a/arm9/lib/src/CARD_request.c
+++ b/arm9/lib/NitroSDK/src/CARD_request.c
diff --git a/arm9/lib/src/CARD_rom.c b/arm9/lib/NitroSDK/src/CARD_rom.c
index 6d6b1ff8..6d6b1ff8 100644
--- a/arm9/lib/src/CARD_rom.c
+++ b/arm9/lib/NitroSDK/src/CARD_rom.c
diff --git a/arm9/lib/src/CARD_spi.c b/arm9/lib/NitroSDK/src/CARD_spi.c
index 5f02b276..5f02b276 100644
--- a/arm9/lib/src/CARD_spi.c
+++ b/arm9/lib/NitroSDK/src/CARD_spi.c
diff --git a/arm9/lib/src/CP_context.c b/arm9/lib/NitroSDK/src/CP_context.c
index 4e928c06..6567f516 100644
--- a/arm9/lib/src/CP_context.c
+++ b/arm9/lib/NitroSDK/src/CP_context.c
@@ -1,6 +1,6 @@
#include "CP_context.h"
#include "function_target.h"
-#include "consts.h"
+#include "registers.h"
ARM_FUNC asm void CP_SaveContext(register CPContext *context)
{
diff --git a/arm9/lib/src/CTRDG_backup.c b/arm9/lib/NitroSDK/src/CTRDG_backup.c
index dc1a3f4b..dc1a3f4b 100644
--- a/arm9/lib/src/CTRDG_backup.c
+++ b/arm9/lib/NitroSDK/src/CTRDG_backup.c
diff --git a/arm9/lib/src/CTRDG_common.c b/arm9/lib/NitroSDK/src/CTRDG_common.c
index 3d80cf24..df3ec0b6 100644
--- a/arm9/lib/src/CTRDG_common.c
+++ b/arm9/lib/NitroSDK/src/CTRDG_common.c
@@ -7,6 +7,7 @@
#include "PXI_fifo.h"
#include "MI_dma.h"
#include "MI_memory.h"
+#include "mmap.h"
CTRDGWork CTRDGi_Work;
diff --git a/arm9/lib/src/CTRDG_flash_AT29LV512.c b/arm9/lib/NitroSDK/src/CTRDG_flash_AT29LV512.c
index b1d09738..b1d09738 100644
--- a/arm9/lib/src/CTRDG_flash_AT29LV512.c
+++ b/arm9/lib/NitroSDK/src/CTRDG_flash_AT29LV512.c
diff --git a/arm9/lib/src/FS_archive.c b/arm9/lib/NitroSDK/src/FS_archive.c
index 01f794f8..01f794f8 100644
--- a/arm9/lib/src/FS_archive.c
+++ b/arm9/lib/NitroSDK/src/FS_archive.c
diff --git a/arm9/lib/src/FS_command.c b/arm9/lib/NitroSDK/src/FS_command.c
index e677f6c6..e677f6c6 100644
--- a/arm9/lib/src/FS_command.c
+++ b/arm9/lib/NitroSDK/src/FS_command.c
diff --git a/arm9/lib/src/FS_command_default.c b/arm9/lib/NitroSDK/src/FS_command_default.c
index 0cdc91fc..0cdc91fc 100644
--- a/arm9/lib/src/FS_command_default.c
+++ b/arm9/lib/NitroSDK/src/FS_command_default.c
diff --git a/arm9/lib/src/FS_file.c b/arm9/lib/NitroSDK/src/FS_file.c
index 11595c02..11595c02 100644
--- a/arm9/lib/src/FS_file.c
+++ b/arm9/lib/NitroSDK/src/FS_file.c
diff --git a/arm9/lib/src/FS_overlay.c b/arm9/lib/NitroSDK/src/FS_overlay.c
index de64d97d..de64d97d 100644
--- a/arm9/lib/src/FS_overlay.c
+++ b/arm9/lib/NitroSDK/src/FS_overlay.c
diff --git a/arm9/lib/src/FS_rom.c b/arm9/lib/NitroSDK/src/FS_rom.c
index 09098dfe..09098dfe 100644
--- a/arm9/lib/src/FS_rom.c
+++ b/arm9/lib/NitroSDK/src/FS_rom.c
diff --git a/arm9/lib/src/FX.c b/arm9/lib/NitroSDK/src/FX.c
index ea730538..ea730538 100644
--- a/arm9/lib/src/FX.c
+++ b/arm9/lib/NitroSDK/src/FX.c
diff --git a/arm9/lib/src/FX_atan.c b/arm9/lib/NitroSDK/src/FX_atan.c
index ef2a662d..ef2a662d 100644
--- a/arm9/lib/src/FX_atan.c
+++ b/arm9/lib/NitroSDK/src/FX_atan.c
diff --git a/arm9/lib/src/FX_cp.c b/arm9/lib/NitroSDK/src/FX_cp.c
index c8069146..0c5d4ff8 100644
--- a/arm9/lib/src/FX_cp.c
+++ b/arm9/lib/NitroSDK/src/FX_cp.c
@@ -1,6 +1,8 @@
-#include "global.h"
#include "fx.h"
+#include "global.h"
+#include "registers.h"
+
ARM_FUNC fx32 FX_Div(fx32 numerator, fx32 denominator){
FX_DivAsync(numerator, denominator);
diff --git a/arm9/lib/src/FX_mtx22.c b/arm9/lib/NitroSDK/src/FX_mtx22.c
index a74bb25c..a74bb25c 100644
--- a/arm9/lib/src/FX_mtx22.c
+++ b/arm9/lib/NitroSDK/src/FX_mtx22.c
diff --git a/arm9/lib/src/FX_mtx33.c b/arm9/lib/NitroSDK/src/FX_mtx33.c
index 86169ea0..86169ea0 100644
--- a/arm9/lib/src/FX_mtx33.c
+++ b/arm9/lib/NitroSDK/src/FX_mtx33.c
diff --git a/arm9/lib/src/FX_mtx43.c b/arm9/lib/NitroSDK/src/FX_mtx43.c
index 693dddff..693dddff 100644
--- a/arm9/lib/src/FX_mtx43.c
+++ b/arm9/lib/NitroSDK/src/FX_mtx43.c
diff --git a/arm9/lib/src/FX_mtx44.c b/arm9/lib/NitroSDK/src/FX_mtx44.c
index c72f6158..c72f6158 100644
--- a/arm9/lib/src/FX_mtx44.c
+++ b/arm9/lib/NitroSDK/src/FX_mtx44.c
diff --git a/arm9/lib/src/FX_sincos.c b/arm9/lib/NitroSDK/src/FX_sincos.c
index 89c8fc78..89c8fc78 100644
--- a/arm9/lib/src/FX_sincos.c
+++ b/arm9/lib/NitroSDK/src/FX_sincos.c
diff --git a/arm9/lib/src/FX_vec.c b/arm9/lib/NitroSDK/src/FX_vec.c
index 8550b54a..18d0939f 100644
--- a/arm9/lib/src/FX_vec.c
+++ b/arm9/lib/NitroSDK/src/FX_vec.c
@@ -1,4 +1,5 @@
-#include "global.h"
+#include "function_target.h"
+#include "registers.h"
#include "fx.h"
ARM_FUNC void VEC_Add(const struct Vecx32 *a, const struct Vecx32 *b, struct Vecx32 *dst){
diff --git a/arm9/lib/src/GX.c b/arm9/lib/NitroSDK/src/GX.c
index 688e41b7..f47c0131 100644
--- a/arm9/lib/src/GX.c
+++ b/arm9/lib/NitroSDK/src/GX.c
@@ -1,6 +1,9 @@
-#include "global.h"
#include "gx.h"
+#include "global.h"
+#include "OS_spinLock.h"
+#include "OS_terminate_proc.h"
+
u32 GXi_DmaId = 3;
vu16 GXi_VRamLockId = 0;
diff --git a/arm9/lib/src/GX_asm.c b/arm9/lib/NitroSDK/src/GX_asm.c
index 1eb0a011..1eb0a011 100644
--- a/arm9/lib/src/GX_asm.c
+++ b/arm9/lib/NitroSDK/src/GX_asm.c
diff --git a/arm9/lib/src/GX_bgcnt.c b/arm9/lib/NitroSDK/src/GX_bgcnt.c
index 91a67655..91a67655 100644
--- a/arm9/lib/src/GX_bgcnt.c
+++ b/arm9/lib/NitroSDK/src/GX_bgcnt.c
diff --git a/arm9/lib/src/GX_g2.c b/arm9/lib/NitroSDK/src/GX_g2.c
index 39b8bff4..39b8bff4 100644
--- a/arm9/lib/src/GX_g2.c
+++ b/arm9/lib/NitroSDK/src/GX_g2.c
diff --git a/arm9/lib/src/GX_g3.c b/arm9/lib/NitroSDK/src/GX_g3.c
index 45b6b11b..45b6b11b 100644
--- a/arm9/lib/src/GX_g3.c
+++ b/arm9/lib/NitroSDK/src/GX_g3.c
diff --git a/arm9/lib/src/GX_g3_util.c b/arm9/lib/NitroSDK/src/GX_g3_util.c
index b4fdd0cc..b4fdd0cc 100644
--- a/arm9/lib/src/GX_g3_util.c
+++ b/arm9/lib/NitroSDK/src/GX_g3_util.c
diff --git a/arm9/lib/src/GX_g3b.c b/arm9/lib/NitroSDK/src/GX_g3b.c
index a3b96a0b..a3b96a0b 100644
--- a/arm9/lib/src/GX_g3b.c
+++ b/arm9/lib/NitroSDK/src/GX_g3b.c
diff --git a/arm9/lib/src/GX_g3imm.c b/arm9/lib/NitroSDK/src/GX_g3imm.c
index 1798338e..1798338e 100644
--- a/arm9/lib/src/GX_g3imm.c
+++ b/arm9/lib/NitroSDK/src/GX_g3imm.c
diff --git a/arm9/lib/src/GX_g3x.c b/arm9/lib/NitroSDK/src/GX_g3x.c
index 9954c4cb..9954c4cb 100644
--- a/arm9/lib/src/GX_g3x.c
+++ b/arm9/lib/NitroSDK/src/GX_g3x.c
diff --git a/arm9/lib/src/GX_load2d.c b/arm9/lib/NitroSDK/src/GX_load2d.c
index 6bff54be..6bff54be 100644
--- a/arm9/lib/src/GX_load2d.c
+++ b/arm9/lib/NitroSDK/src/GX_load2d.c
diff --git a/arm9/lib/src/GX_load3d.c b/arm9/lib/NitroSDK/src/GX_load3d.c
index ae15f32e..ae15f32e 100644
--- a/arm9/lib/src/GX_load3d.c
+++ b/arm9/lib/NitroSDK/src/GX_load3d.c
diff --git a/arm9/lib/src/GX_state.c b/arm9/lib/NitroSDK/src/GX_state.c
index 003e42b5..003e42b5 100644
--- a/arm9/lib/src/GX_state.c
+++ b/arm9/lib/NitroSDK/src/GX_state.c
diff --git a/arm9/lib/src/GX_vramcnt.c b/arm9/lib/NitroSDK/src/GX_vramcnt.c
index abfcd77e..abfcd77e 100644
--- a/arm9/lib/src/GX_vramcnt.c
+++ b/arm9/lib/NitroSDK/src/GX_vramcnt.c
diff --git a/arm9/lib/src/MATH_crc.c b/arm9/lib/NitroSDK/src/MATH_crc.c
index cf8cc64c..cf8cc64c 100644
--- a/arm9/lib/src/MATH_crc.c
+++ b/arm9/lib/NitroSDK/src/MATH_crc.c
diff --git a/arm9/lib/src/MATH_dgt.c b/arm9/lib/NitroSDK/src/MATH_dgt.c
index 6bb90d99..6bb90d99 100644
--- a/arm9/lib/src/MATH_dgt.c
+++ b/arm9/lib/NitroSDK/src/MATH_dgt.c
diff --git a/arm9/lib/src/MATH_pop.c b/arm9/lib/NitroSDK/src/MATH_pop.c
index 18582494..18582494 100644
--- a/arm9/lib/src/MATH_pop.c
+++ b/arm9/lib/NitroSDK/src/MATH_pop.c
diff --git a/arm9/lib/src/MI_dma.c b/arm9/lib/NitroSDK/src/MI_dma.c
index f322f87f..f322f87f 100644
--- a/arm9/lib/src/MI_dma.c
+++ b/arm9/lib/NitroSDK/src/MI_dma.c
diff --git a/arm9/lib/src/MI_dma_card.c b/arm9/lib/NitroSDK/src/MI_dma_card.c
index c3b8b897..c3b8b897 100644
--- a/arm9/lib/src/MI_dma_card.c
+++ b/arm9/lib/NitroSDK/src/MI_dma_card.c
diff --git a/arm9/lib/src/MI_dma_gxcommand.c b/arm9/lib/NitroSDK/src/MI_dma_gxcommand.c
index 26231999..26231999 100644
--- a/arm9/lib/src/MI_dma_gxcommand.c
+++ b/arm9/lib/NitroSDK/src/MI_dma_gxcommand.c
diff --git a/arm9/lib/src/MI_dma_hblank.c b/arm9/lib/NitroSDK/src/MI_dma_hblank.c
index 67e579fe..67e579fe 100644
--- a/arm9/lib/src/MI_dma_hblank.c
+++ b/arm9/lib/NitroSDK/src/MI_dma_hblank.c
diff --git a/arm9/lib/src/MI_init.c b/arm9/lib/NitroSDK/src/MI_init.c
index 4c861286..4c861286 100644
--- a/arm9/lib/src/MI_init.c
+++ b/arm9/lib/NitroSDK/src/MI_init.c
diff --git a/arm9/lib/src/MI_memory.c b/arm9/lib/NitroSDK/src/MI_memory.c
index a97ff167..a97ff167 100644
--- a/arm9/lib/src/MI_memory.c
+++ b/arm9/lib/NitroSDK/src/MI_memory.c
diff --git a/arm9/lib/src/MI_swap.c b/arm9/lib/NitroSDK/src/MI_swap.c
index b72e1386..b72e1386 100644
--- a/arm9/lib/src/MI_swap.c
+++ b/arm9/lib/NitroSDK/src/MI_swap.c
diff --git a/arm9/lib/src/MI_uncompress.c b/arm9/lib/NitroSDK/src/MI_uncompress.c
index c6ad7e4e..c6ad7e4e 100644
--- a/arm9/lib/src/MI_uncompress.c
+++ b/arm9/lib/NitroSDK/src/MI_uncompress.c
diff --git a/arm9/lib/src/MI_wram.c b/arm9/lib/NitroSDK/src/MI_wram.c
index a65bbb6f..c1433f07 100644
--- a/arm9/lib/src/MI_wram.c
+++ b/arm9/lib/NitroSDK/src/MI_wram.c
@@ -1,7 +1,8 @@
-#include "function_target.h"
-#include "consts.h"
#include "MI_wram.h"
+#include "global.h"
+#include "registers.h"
+
ARM_FUNC void MI_SetWramBank(MIWram cnt)
{
reg_GX_VRAMCNT_WRAM = (u8)cnt;
diff --git a/arm9/lib/src/OS_alarm.c b/arm9/lib/NitroSDK/src/OS_alarm.c
index a8c1fedd..a8c1fedd 100644
--- a/arm9/lib/src/OS_alarm.c
+++ b/arm9/lib/NitroSDK/src/OS_alarm.c
diff --git a/arm9/lib/src/OS_alloc.c b/arm9/lib/NitroSDK/src/OS_alloc.c
index 00028d3c..dc84151b 100644
--- a/arm9/lib/src/OS_alloc.c
+++ b/arm9/lib/NitroSDK/src/OS_alloc.c
@@ -1,167 +1,167 @@
-//
-// Created by mart on 4/23/20.
-//
-#include "function_target.h"
-#include "OS_alloc.h"
-#include "consts.h"
-#include "OS_system.h"
-
-void* OSiHeapInfo[OS_ARENA_MAX];
-
-ARM_FUNC Cell* DLAddFront(Cell* list, Cell* cell)
-{
- cell->next = list;
- cell->prev = NULL;
-
- if (list != NULL)
- list->prev = cell;
- return cell;
-}
-
-ARM_FUNC Cell* DLExtract(Cell* list, Cell* cell)
-{
- if (cell->next) {
- cell->next->prev = cell->prev;
- }
- if (cell->prev == NULL) {
- list = cell->next;
- } else {
- cell->prev->next = cell->next;
- }
- return list;
-}
-
-ARM_FUNC Cell *DLInsert(Cell *original, Cell *inserted)
-{
- Cell *prevCell = NULL;
- Cell *nextCell = original;
-
-
- for (nextCell = original, prevCell = NULL; nextCell; prevCell = nextCell, nextCell = nextCell->next)
- {
- if (inserted <= nextCell)
- break;
- }
-
- inserted->next = nextCell;
- inserted->prev = prevCell;
-
- if (nextCell != NULL)
- {
- nextCell->prev = inserted;
- Cell * temp = (Cell *)((char *)inserted + inserted->size);
- if (temp == nextCell)
- {
- inserted->size += nextCell->size;
- nextCell = nextCell->next;
- inserted->next = nextCell;
- if (nextCell != NULL)
- nextCell->prev = inserted;
- }
- }
-
- if (prevCell != NULL)
- {
- prevCell->next = inserted;
- Cell * temp = (Cell *)((char *)prevCell + prevCell->size);
-
- if (temp != inserted)
- return original;
-
- prevCell->size += inserted->size;
- prevCell->next = nextCell;
- if (nextCell != NULL)
- nextCell->prev = prevCell;
-
- return original;
- }
-
- return inserted;
-}
-
-#define HEADERSIZE OSi_ROUND(sizeof(Cell), 32)
-#define MINOBJSIZE (HEADERSIZE+32)
-
-ARM_FUNC void* OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size) {
- OSHeapInfo* heapInfo;
- HeapDesc* hd;
- Cell* cell;
- Cell* newCell;
- long leftoverSize;
-
- OSIntrMode enabled = OS_DisableInterrupts();
- heapInfo = OSiHeapInfo[id];
- if (!heapInfo) {
- (void)OS_RestoreInterrupts(enabled);
- return NULL;
- }
-
- if (heap < 0) {
- heap = heapInfo->currentHeap;
- }
-
- hd = &heapInfo->heapArray[heap];
-
- size += HEADERSIZE;
- size = OSi_ROUND(size, 32);
-
- for (cell = hd->free; cell != NULL; cell = cell->next) {
- if ((long)size <= cell->size) {
- break;
- }
- }
-
- if (cell == NULL) {
- (void)OS_RestoreInterrupts(enabled);
- return NULL;
- }
-
- leftoverSize = cell->size - (long)size;
- if (leftoverSize < MINOBJSIZE) {
- hd->free = DLExtract(hd->free, cell);
- } else {
- cell->size = (long)size;
-
- newCell = (Cell *) ((char *)cell + size);
- newCell->size = leftoverSize;
-
- newCell->prev = cell->prev;
- newCell->next = cell->next;
-
- if (newCell->next != NULL) {
- newCell->next->prev = newCell;
- }
-
- if (newCell->prev != NULL) {
- newCell->prev->next = newCell;
- } else {
- hd->free = newCell;
- }
- }
-
- hd->allocated = DLAddFront(hd->allocated, cell);
-
- (void)OS_RestoreInterrupts(enabled);
- return (void *)((char *)cell + HEADERSIZE);
-}
-
-ARM_FUNC void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void* ptr) {
- OSHeapInfo *heapInfo;
- HeapDesc *hd;
- Cell *cell;
-
- OSIntrMode enabled = OS_DisableInterrupts();
- heapInfo = OSiHeapInfo[id];
-
- if (heap < 0) {
- heap = heapInfo->currentHeap;
- }
-
- cell = (Cell *) ((char *)ptr - HEADERSIZE);
- hd = &heapInfo->heapArray[heap];
-
- hd->allocated = DLExtract(hd->allocated, cell);
- hd->free = DLInsert(hd->free, cell);
-
- (void)OS_RestoreInterrupts(enabled);
-}
+//
+// Created by mart on 4/23/20.
+//
+#include "function_target.h"
+#include "OS_alloc.h"
+#include "consts.h"
+#include "OS_system.h"
+
+void* OSiHeapInfo[OS_ARENA_MAX];
+
+ARM_FUNC Cell* DLAddFront(Cell* list, Cell* cell)
+{
+ cell->next = list;
+ cell->prev = NULL;
+
+ if (list != NULL)
+ list->prev = cell;
+ return cell;
+}
+
+ARM_FUNC Cell* DLExtract(Cell* list, Cell* cell)
+{
+ if (cell->next) {
+ cell->next->prev = cell->prev;
+ }
+ if (cell->prev == NULL) {
+ list = cell->next;
+ } else {
+ cell->prev->next = cell->next;
+ }
+ return list;
+}
+
+ARM_FUNC Cell *DLInsert(Cell *original, Cell *inserted)
+{
+ Cell *prevCell = NULL;
+ Cell *nextCell = original;
+
+
+ for (nextCell = original, prevCell = NULL; nextCell; prevCell = nextCell, nextCell = nextCell->next)
+ {
+ if (inserted <= nextCell)
+ break;
+ }
+
+ inserted->next = nextCell;
+ inserted->prev = prevCell;
+
+ if (nextCell != NULL)
+ {
+ nextCell->prev = inserted;
+ Cell * temp = (Cell *)((char *)inserted + inserted->size);
+ if (temp == nextCell)
+ {
+ inserted->size += nextCell->size;
+ nextCell = nextCell->next;
+ inserted->next = nextCell;
+ if (nextCell != NULL)
+ nextCell->prev = inserted;
+ }
+ }
+
+ if (prevCell != NULL)
+ {
+ prevCell->next = inserted;
+ Cell * temp = (Cell *)((char *)prevCell + prevCell->size);
+
+ if (temp != inserted)
+ return original;
+
+ prevCell->size += inserted->size;
+ prevCell->next = nextCell;
+ if (nextCell != NULL)
+ nextCell->prev = prevCell;
+
+ return original;
+ }
+
+ return inserted;
+}
+
+#define HEADERSIZE OSi_ROUND(sizeof(Cell), 32)
+#define MINOBJSIZE (HEADERSIZE+32)
+
+ARM_FUNC void* OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size) {
+ OSHeapInfo* heapInfo;
+ HeapDesc* hd;
+ Cell* cell;
+ Cell* newCell;
+ long leftoverSize;
+
+ OSIntrMode enabled = OS_DisableInterrupts();
+ heapInfo = OSiHeapInfo[id];
+ if (!heapInfo) {
+ (void)OS_RestoreInterrupts(enabled);
+ return NULL;
+ }
+
+ if (heap < 0) {
+ heap = heapInfo->currentHeap;
+ }
+
+ hd = &heapInfo->heapArray[heap];
+
+ size += HEADERSIZE;
+ size = OSi_ROUND(size, 32);
+
+ for (cell = hd->free; cell != NULL; cell = cell->next) {
+ if ((long)size <= cell->size) {
+ break;
+ }
+ }
+
+ if (cell == NULL) {
+ (void)OS_RestoreInterrupts(enabled);
+ return NULL;
+ }
+
+ leftoverSize = cell->size - (long)size;
+ if (leftoverSize < MINOBJSIZE) {
+ hd->free = DLExtract(hd->free, cell);
+ } else {
+ cell->size = (long)size;
+
+ newCell = (Cell *) ((char *)cell + size);
+ newCell->size = leftoverSize;
+
+ newCell->prev = cell->prev;
+ newCell->next = cell->next;
+
+ if (newCell->next != NULL) {
+ newCell->next->prev = newCell;
+ }
+
+ if (newCell->prev != NULL) {
+ newCell->prev->next = newCell;
+ } else {
+ hd->free = newCell;
+ }
+ }
+
+ hd->allocated = DLAddFront(hd->allocated, cell);
+
+ (void)OS_RestoreInterrupts(enabled);
+ return (void *)((char *)cell + HEADERSIZE);
+}
+
+ARM_FUNC void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void* ptr) {
+ OSHeapInfo *heapInfo;
+ HeapDesc *hd;
+ Cell *cell;
+
+ OSIntrMode enabled = OS_DisableInterrupts();
+ heapInfo = OSiHeapInfo[id];
+
+ if (heap < 0) {
+ heap = heapInfo->currentHeap;
+ }
+
+ cell = (Cell *) ((char *)ptr - HEADERSIZE);
+ hd = &heapInfo->heapArray[heap];
+
+ hd->allocated = DLExtract(hd->allocated, cell);
+ hd->free = DLInsert(hd->free, cell);
+
+ (void)OS_RestoreInterrupts(enabled);
+}
diff --git a/arm9/lib/src/OS_arena.c b/arm9/lib/NitroSDK/src/OS_arena.c
index df9c2fd8..cc9694c2 100644
--- a/arm9/lib/src/OS_arena.c
+++ b/arm9/lib/NitroSDK/src/OS_arena.c
@@ -1,167 +1,168 @@
-#include "function_target.h"
-#include "consts.h"
-#include "OS_arena.h"
-#include "OS_protectionRegion.h"
-#include "OS_emulator.h"
-
-static BOOL OSi_Initialized = FALSE;
-static BOOL OSi_MainExArenaEnabled = FALSE;
-
-void SDK_MAIN_ARENA_LO(); // TODO: technically this should be defined in the lcf
-extern void SDK_SECTION_ARENA_EX_START(); // TODO: technically this should be defined in the lcf
-extern void SDK_SECTION_ARENA_ITCM_START(); // TODO: technically this should be defined in the lcf
-extern void SDK_SECTION_ARENA_DTCM_START(); // TODO: technically this should be defined in the lcf
-extern void SDK_IRQ_STACKSIZE(); // TODO: technically this should be defined in the lcf
-extern void SDK_SYS_STACKSIZE(); // TODO: technically this should be defined in the lcf
-
-ARM_FUNC void OS_InitArena(void) {
- if (OSi_Initialized) {
- return;
- }
- OSi_Initialized = TRUE;
-
- OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN));
- OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN));
-
- OS_SetArenaLo(OS_ARENA_MAINEX, (void *)0);
- OS_SetArenaHi(OS_ARENA_MAINEX, (void *)0);
-
- OS_SetArenaHi(OS_ARENA_ITCM, OS_GetInitArenaHi(OS_ARENA_ITCM));
- OS_SetArenaLo(OS_ARENA_ITCM, OS_GetInitArenaLo(OS_ARENA_ITCM));
-
- OS_SetArenaHi(OS_ARENA_DTCM, OS_GetInitArenaHi(OS_ARENA_DTCM));
- OS_SetArenaLo(OS_ARENA_DTCM, OS_GetInitArenaLo(OS_ARENA_DTCM));
-
- OS_SetArenaHi(OS_ARENA_SHARED, OS_GetInitArenaHi(OS_ARENA_SHARED));
- OS_SetArenaLo(OS_ARENA_SHARED, OS_GetInitArenaLo(OS_ARENA_SHARED));
-
- OS_SetArenaHi(OS_ARENA_WRAM_MAIN, OS_GetInitArenaHi(OS_ARENA_WRAM_MAIN));
- OS_SetArenaLo(OS_ARENA_WRAM_MAIN, OS_GetInitArenaLo(OS_ARENA_WRAM_MAIN));
-}
-
-ARM_FUNC void OS_InitArenaEx(void) {
- OS_SetArenaHi(OS_ARENA_MAINEX, OS_GetInitArenaHi(OS_ARENA_MAINEX));
- OS_SetArenaLo(OS_ARENA_MAINEX, OS_GetInitArenaLo(OS_ARENA_MAINEX));
-
- if (!OSi_MainExArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) {
- OS_SetProtectionRegion(1, HW_MAIN_MEM, 4MB);
- OS_SetProtectionRegion(2, HW_MAIN_MEM_MAIN_END, 128KB);
- }
-}
-
-ARM_FUNC void* OS_GetArenaHi(OSArenaId id) {
- return OSi_GetArenaInfo().hi[id];
-}
-
-ARM_FUNC void* OS_GetArenaLo(OSArenaId id) {
- return OSi_GetArenaInfo().lo[id];
-}
-
-ARM_FUNC void* OS_GetInitArenaHi(OSArenaId id) {
- switch (id) {
- case OS_ARENA_MAIN:
- return (void *)OSi_MAIN_ARENA_HI_DEFAULT;
- case OS_ARENA_MAINEX:
- if (!OSi_MainExArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) {
- return (void *)0;
- } else {
- return (void *)OSi_MAINEX_ARENA_HI_DEFAULT;
- }
- case OS_ARENA_ITCM:
- return (void *)HW_ITCM_ARENA_HI_DEFAULT;
- case OS_ARENA_DTCM:
- {
- u32 irqStackLo = (u32) HW_DTCM_IRQ_STACK_END - (s32) SDK_IRQ_STACKSIZE;
- u32 sysStackLo;
-
- if (!(s32) SDK_SYS_STACKSIZE) {
- sysStackLo = HW_DTCM;
- if (sysStackLo < (u32) SDK_SECTION_ARENA_DTCM_START) {
- sysStackLo = (u32) SDK_SECTION_ARENA_DTCM_START;
- }
- } else if ((s32) SDK_SYS_STACKSIZE < 0) {
- sysStackLo = (u32) SDK_SECTION_ARENA_DTCM_START - (s32) SDK_SYS_STACKSIZE;
- } else {
- sysStackLo = irqStackLo - (s32) SDK_SYS_STACKSIZE;
- }
- return (void *) sysStackLo;
- }
- case OS_ARENA_SHARED:
- return (void *)HW_SHARED_ARENA_HI_DEFAULT;
- case OS_ARENA_WRAM_MAIN:
- return (void *)OSi_WRAM_MAIN_ARENA_HI_DEFAULT;
- default:
- return NULL;
- }
-}
-
-ARM_FUNC void* OS_GetInitArenaLo(OSArenaId id) {
- switch (id) {
- case OS_ARENA_MAIN:
- return (void *)SDK_MAIN_ARENA_LO;
- case OS_ARENA_MAINEX:
- if (!OSi_MainExArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) {
- return NULL;
- } else {
- return (void *)SDK_SECTION_ARENA_EX_START;
- }
- case OS_ARENA_ITCM:
- return (void *)SDK_SECTION_ARENA_ITCM_START;
- case OS_ARENA_DTCM:
- return (void *)SDK_SECTION_ARENA_DTCM_START;
- case OS_ARENA_SHARED:
- return (void *)HW_SHARED_ARENA_LO_DEFAULT;
- case OS_ARENA_WRAM_MAIN:
- return (void *)OSi_WRAM_MAIN_ARENA_LO_DEFAULT;
- default:
- return NULL;
- }
-}
-
-ARM_FUNC void OS_SetArenaHi(OSArenaId id, void* newHi) {
- OSi_GetArenaInfo().hi[id] = newHi;
-}
-
-ARM_FUNC void OS_SetArenaLo(OSArenaId id, void* newLo) {
- OSi_GetArenaInfo().lo[id] = newLo;
-}
-
-ARM_FUNC void* OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align) {
- void* ptr;
- u8* arenaLo;
- ptr = OS_GetArenaLo(id);
- if (!ptr) {
- return NULL;
- }
- arenaLo = ptr = (void *)OSi_ROUND(ptr, align);
- arenaLo += size;
- arenaLo = (u8 *)OSi_ROUND(arenaLo, align);
- if (arenaLo > (u8*)OS_GetArenaHi(id)) {
- return NULL;
- }
- OS_SetArenaLo(id, arenaLo);
-
- return ptr;
-}
-
-ARM_FUNC void* OS_AllocFromArenaHi(OSArenaId id, u32 size, u32 align) {
- void* ptr;
- u8* arenaHi;
-
- arenaHi = OS_GetArenaHi(id);
- if (!arenaHi) {
- return NULL;
- }
-
- arenaHi = (u8 *)OSi_TRUNC(arenaHi, align);
- arenaHi -= size;
- arenaHi = ptr = (void *)OSi_TRUNC(arenaHi, align);
-
- if (arenaHi < (u8*)OS_GetArenaLo(id)) {
- return NULL;
- }
-
- OS_SetArenaHi(id, arenaHi);
-
- return ptr;
-}
+#include "OS_arena.h"
+
+#include "global.h"
+#include "OS_protectionRegion.h"
+#include "OS_emulator.h"
+#include "mmap.h"
+
+static BOOL OSi_Initialized = FALSE;
+static BOOL OSi_MainExArenaEnabled = FALSE;
+
+void SDK_MAIN_ARENA_LO(); // TODO: technically this should be defined in the lcf
+extern void SDK_SECTION_ARENA_EX_START(); // TODO: technically this should be defined in the lcf
+extern void SDK_SECTION_ARENA_ITCM_START(); // TODO: technically this should be defined in the lcf
+extern void SDK_SECTION_ARENA_DTCM_START(); // TODO: technically this should be defined in the lcf
+extern void SDK_IRQ_STACKSIZE(); // TODO: technically this should be defined in the lcf
+extern void SDK_SYS_STACKSIZE(); // TODO: technically this should be defined in the lcf
+
+ARM_FUNC void OS_InitArena(void) {
+ if (OSi_Initialized) {
+ return;
+ }
+ OSi_Initialized = TRUE;
+
+ OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN));
+ OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN));
+
+ OS_SetArenaLo(OS_ARENA_MAINEX, (void *)0);
+ OS_SetArenaHi(OS_ARENA_MAINEX, (void *)0);
+
+ OS_SetArenaHi(OS_ARENA_ITCM, OS_GetInitArenaHi(OS_ARENA_ITCM));
+ OS_SetArenaLo(OS_ARENA_ITCM, OS_GetInitArenaLo(OS_ARENA_ITCM));
+
+ OS_SetArenaHi(OS_ARENA_DTCM, OS_GetInitArenaHi(OS_ARENA_DTCM));
+ OS_SetArenaLo(OS_ARENA_DTCM, OS_GetInitArenaLo(OS_ARENA_DTCM));
+
+ OS_SetArenaHi(OS_ARENA_SHARED, OS_GetInitArenaHi(OS_ARENA_SHARED));
+ OS_SetArenaLo(OS_ARENA_SHARED, OS_GetInitArenaLo(OS_ARENA_SHARED));
+
+ OS_SetArenaHi(OS_ARENA_WRAM_MAIN, OS_GetInitArenaHi(OS_ARENA_WRAM_MAIN));
+ OS_SetArenaLo(OS_ARENA_WRAM_MAIN, OS_GetInitArenaLo(OS_ARENA_WRAM_MAIN));
+}
+
+ARM_FUNC void OS_InitArenaEx(void) {
+ OS_SetArenaHi(OS_ARENA_MAINEX, OS_GetInitArenaHi(OS_ARENA_MAINEX));
+ OS_SetArenaLo(OS_ARENA_MAINEX, OS_GetInitArenaLo(OS_ARENA_MAINEX));
+
+ if (!OSi_MainExArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) {
+ OS_SetProtectionRegion(1, HW_MAIN_MEM, 4MB);
+ OS_SetProtectionRegion(2, HW_MAIN_MEM_MAIN_END, 128KB);
+ }
+}
+
+ARM_FUNC void* OS_GetArenaHi(OSArenaId id) {
+ return OSi_GetArenaInfo().hi[id];
+}
+
+ARM_FUNC void* OS_GetArenaLo(OSArenaId id) {
+ return OSi_GetArenaInfo().lo[id];
+}
+
+ARM_FUNC void* OS_GetInitArenaHi(OSArenaId id) {
+ switch (id) {
+ case OS_ARENA_MAIN:
+ return (void *)OSi_MAIN_ARENA_HI_DEFAULT;
+ case OS_ARENA_MAINEX:
+ if (!OSi_MainExArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) {
+ return (void *)0;
+ } else {
+ return (void *)OSi_MAINEX_ARENA_HI_DEFAULT;
+ }
+ case OS_ARENA_ITCM:
+ return (void *)HW_ITCM_ARENA_HI_DEFAULT;
+ case OS_ARENA_DTCM:
+ {
+ u32 irqStackLo = (u32) HW_DTCM_IRQ_STACK_END - (s32) SDK_IRQ_STACKSIZE;
+ u32 sysStackLo;
+
+ if (!(s32) SDK_SYS_STACKSIZE) {
+ sysStackLo = HW_DTCM;
+ if (sysStackLo < (u32) SDK_SECTION_ARENA_DTCM_START) {
+ sysStackLo = (u32) SDK_SECTION_ARENA_DTCM_START;
+ }
+ } else if ((s32) SDK_SYS_STACKSIZE < 0) {
+ sysStackLo = (u32) SDK_SECTION_ARENA_DTCM_START - (s32) SDK_SYS_STACKSIZE;
+ } else {
+ sysStackLo = irqStackLo - (s32) SDK_SYS_STACKSIZE;
+ }
+ return (void *) sysStackLo;
+ }
+ case OS_ARENA_SHARED:
+ return (void *)HW_SHARED_ARENA_HI_DEFAULT;
+ case OS_ARENA_WRAM_MAIN:
+ return (void *)OSi_WRAM_MAIN_ARENA_HI_DEFAULT;
+ default:
+ return NULL;
+ }
+}
+
+ARM_FUNC void* OS_GetInitArenaLo(OSArenaId id) {
+ switch (id) {
+ case OS_ARENA_MAIN:
+ return (void *)SDK_MAIN_ARENA_LO;
+ case OS_ARENA_MAINEX:
+ if (!OSi_MainExArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) {
+ return NULL;
+ } else {
+ return (void *)SDK_SECTION_ARENA_EX_START;
+ }
+ case OS_ARENA_ITCM:
+ return (void *)SDK_SECTION_ARENA_ITCM_START;
+ case OS_ARENA_DTCM:
+ return (void *)SDK_SECTION_ARENA_DTCM_START;
+ case OS_ARENA_SHARED:
+ return (void *)HW_SHARED_ARENA_LO_DEFAULT;
+ case OS_ARENA_WRAM_MAIN:
+ return (void *)OSi_WRAM_MAIN_ARENA_LO_DEFAULT;
+ default:
+ return NULL;
+ }
+}
+
+ARM_FUNC void OS_SetArenaHi(OSArenaId id, void* newHi) {
+ OSi_GetArenaInfo().hi[id] = newHi;
+}
+
+ARM_FUNC void OS_SetArenaLo(OSArenaId id, void* newLo) {
+ OSi_GetArenaInfo().lo[id] = newLo;
+}
+
+ARM_FUNC void* OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align) {
+ void* ptr;
+ u8* arenaLo;
+ ptr = OS_GetArenaLo(id);
+ if (!ptr) {
+ return NULL;
+ }
+ arenaLo = ptr = (void *)OSi_ROUND(ptr, align);
+ arenaLo += size;
+ arenaLo = (u8 *)OSi_ROUND(arenaLo, align);
+ if (arenaLo > (u8*)OS_GetArenaHi(id)) {
+ return NULL;
+ }
+ OS_SetArenaLo(id, arenaLo);
+
+ return ptr;
+}
+
+ARM_FUNC void* OS_AllocFromArenaHi(OSArenaId id, u32 size, u32 align) {
+ void* ptr;
+ u8* arenaHi;
+
+ arenaHi = OS_GetArenaHi(id);
+ if (!arenaHi) {
+ return NULL;
+ }
+
+ arenaHi = (u8 *)OSi_TRUNC(arenaHi, align);
+ arenaHi -= size;
+ arenaHi = ptr = (void *)OSi_TRUNC(arenaHi, align);
+
+ if (arenaHi < (u8*)OS_GetArenaLo(id)) {
+ return NULL;
+ }
+
+ OS_SetArenaHi(id, arenaHi);
+
+ return ptr;
+}
diff --git a/arm9/lib/src/OS_cache.c b/arm9/lib/NitroSDK/src/OS_cache.c
index 8b202fda..8b202fda 100644
--- a/arm9/lib/src/OS_cache.c
+++ b/arm9/lib/NitroSDK/src/OS_cache.c
diff --git a/arm9/lib/src/OS_context.c b/arm9/lib/NitroSDK/src/OS_context.c
index 38b722ba..38b722ba 100644
--- a/arm9/lib/src/OS_context.c
+++ b/arm9/lib/NitroSDK/src/OS_context.c
diff --git a/arm9/lib/src/OS_emulator.c b/arm9/lib/NitroSDK/src/OS_emulator.c
index e92a7d9d..e92a7d9d 100644
--- a/arm9/lib/src/OS_emulator.c
+++ b/arm9/lib/NitroSDK/src/OS_emulator.c
diff --git a/arm9/lib/src/OS_entropy.c b/arm9/lib/NitroSDK/src/OS_entropy.c
index b33781cc..5d466f82 100644
--- a/arm9/lib/src/OS_entropy.c
+++ b/arm9/lib/NitroSDK/src/OS_entropy.c
@@ -2,10 +2,13 @@
// Created by red031000 on 2020-05-03.
//
-#include "function_target.h"
-#include "consts.h"
#include "OS_entropy.h"
+#include "global.h"
+#include "registers.h"
+#include "systemWork.h"
+#include "userInfo.h"
+
ARM_FUNC void OS_GetLowEntropyData(u32 * arr)
{
const OSSystemWork* work = OS_GetSystemWork();
diff --git a/arm9/lib/src/OS_exception.c b/arm9/lib/NitroSDK/src/OS_exception.c
index 3aaaa2f2..63cd6d58 100644
--- a/arm9/lib/src/OS_exception.c
+++ b/arm9/lib/NitroSDK/src/OS_exception.c
@@ -1,6 +1,8 @@
#include "OS_exception.h"
-#include "function_target.h"
+
+#include "global.h"
#include "OS_protectionUnit.h"
+#include "mmap.h"
static OSiExContext OSi_ExContext;
diff --git a/arm9/lib/src/OS_init.c b/arm9/lib/NitroSDK/src/OS_init.c
index d1465625..d1465625 100644
--- a/arm9/lib/src/OS_init.c
+++ b/arm9/lib/NitroSDK/src/OS_init.c
diff --git a/arm9/lib/src/OS_interrupt.c b/arm9/lib/NitroSDK/src/OS_interrupt.c
index c7c0704d..699c7929 100644
--- a/arm9/lib/src/OS_interrupt.c
+++ b/arm9/lib/NitroSDK/src/OS_interrupt.c
@@ -1,6 +1,8 @@
-#include "consts.h"
-#include "function_target.h"
#include "OS_interrupt.h"
+
+#include "global.h"
+#include "registers.h"
+#include "mmap.h"
#include "OS_thread.h"
#pragma optimize_for_size on
diff --git a/arm9/lib/src/OS_irqHandler.c b/arm9/lib/NitroSDK/src/OS_irqHandler.c
index b4e2d232..b4e2d232 100644
--- a/arm9/lib/src/OS_irqHandler.c
+++ b/arm9/lib/NitroSDK/src/OS_irqHandler.c
diff --git a/arm9/lib/src/OS_irqTable.c b/arm9/lib/NitroSDK/src/OS_irqTable.c
index cc2a3a55..cc2a3a55 100644
--- a/arm9/lib/src/OS_irqTable.c
+++ b/arm9/lib/NitroSDK/src/OS_irqTable.c
diff --git a/arm9/lib/src/OS_message.c b/arm9/lib/NitroSDK/src/OS_message.c
index 3b5c33b0..3b5c33b0 100644
--- a/arm9/lib/src/OS_message.c
+++ b/arm9/lib/NitroSDK/src/OS_message.c
diff --git a/arm9/lib/src/OS_mutex.c b/arm9/lib/NitroSDK/src/OS_mutex.c
index 5eb999a9..5eb999a9 100644
--- a/arm9/lib/src/OS_mutex.c
+++ b/arm9/lib/NitroSDK/src/OS_mutex.c
diff --git a/arm9/lib/src/OS_ownerInfo.c b/arm9/lib/NitroSDK/src/OS_ownerInfo.c
index 10a638fb..6693f73f 100644
--- a/arm9/lib/src/OS_ownerInfo.c
+++ b/arm9/lib/NitroSDK/src/OS_ownerInfo.c
@@ -1,5 +1,7 @@
-#include "function_target.h"
#include "OS_ownerInfo.h"
+
+#include "global.h"
+#include "systemWork.h"
#include "MI_memory.h"
ARM_FUNC void OS_GetMacAddress(u8 *macAddress)
diff --git a/arm9/lib/src/OS_printf.c b/arm9/lib/NitroSDK/src/OS_printf.c
index 414f0db9..414f0db9 100644
--- a/arm9/lib/src/OS_printf.c
+++ b/arm9/lib/NitroSDK/src/OS_printf.c
diff --git a/arm9/lib/src/OS_protectionRegion.c b/arm9/lib/NitroSDK/src/OS_protectionRegion.c
index 4b8d8297..4b8d8297 100644
--- a/arm9/lib/src/OS_protectionRegion.c
+++ b/arm9/lib/NitroSDK/src/OS_protectionRegion.c
diff --git a/arm9/lib/src/OS_protectionUnit.c b/arm9/lib/NitroSDK/src/OS_protectionUnit.c
index 66811a1e..66811a1e 100644
--- a/arm9/lib/src/OS_protectionUnit.c
+++ b/arm9/lib/NitroSDK/src/OS_protectionUnit.c
diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/NitroSDK/src/OS_reset.c
index 45d2bb13..083f2321 100644
--- a/arm9/lib/src/OS_reset.c
+++ b/arm9/lib/NitroSDK/src/OS_reset.c
@@ -1,5 +1,6 @@
-#include "function_target.h"
#include "OS_reset.h"
+
+#include "global.h"
#include "MB_mb.h"
#include "OS_terminate_proc.h"
#include "OS_interrupt.h"
diff --git a/arm9/lib/src/OS_spinLock.c b/arm9/lib/NitroSDK/src/OS_spinLock.c
index c0398be9..576e03ad 100644
--- a/arm9/lib/src/OS_spinLock.c
+++ b/arm9/lib/NitroSDK/src/OS_spinLock.c
@@ -3,9 +3,10 @@
//
#include "OS_spinLock.h"
+
#include "OS_system.h"
#include "function_target.h"
-#include "consts.h"
+#include "mmap.h"
#include "MI_exMemory.h"
extern void MIi_CpuClear32(u32 param1, void * addr, u32 length); //not too sure about names
diff --git a/arm9/lib/src/OS_system.c b/arm9/lib/NitroSDK/src/OS_system.c
index f5f5faba..f5f5faba 100644
--- a/arm9/lib/src/OS_system.c
+++ b/arm9/lib/NitroSDK/src/OS_system.c
diff --git a/arm9/lib/src/OS_tcm.c b/arm9/lib/NitroSDK/src/OS_tcm.c
index 5b6ab552..5b6ab552 100644
--- a/arm9/lib/src/OS_tcm.c
+++ b/arm9/lib/NitroSDK/src/OS_tcm.c
diff --git a/arm9/lib/src/OS_terminate_proc.c b/arm9/lib/NitroSDK/src/OS_terminate_proc.c
index fdc4dbff..fdc4dbff 100644
--- a/arm9/lib/src/OS_terminate_proc.c
+++ b/arm9/lib/NitroSDK/src/OS_terminate_proc.c
diff --git a/arm9/lib/src/OS_thread.c b/arm9/lib/NitroSDK/src/OS_thread.c
index 35e91c22..a52b1f6d 100644
--- a/arm9/lib/src/OS_thread.c
+++ b/arm9/lib/NitroSDK/src/OS_thread.c
@@ -6,7 +6,8 @@
#include "OS_system.h"
#include "OS_context.h"
#include "OS_terminate_proc.h"
-#include "consts.h"
+#include "systemWork.h"
+#include "mmap.h"
extern void SDK_SYS_STACKSIZE(void);
extern void SDK_IRQ_STACKSIZE(void);
diff --git a/arm9/lib/src/OS_tick.c b/arm9/lib/NitroSDK/src/OS_tick.c
index b0e81054..b0e81054 100644
--- a/arm9/lib/src/OS_tick.c
+++ b/arm9/lib/NitroSDK/src/OS_tick.c
diff --git a/arm9/lib/src/OS_timer.c b/arm9/lib/NitroSDK/src/OS_timer.c
index 69a1a6cd..69a1a6cd 100644
--- a/arm9/lib/src/OS_timer.c
+++ b/arm9/lib/NitroSDK/src/OS_timer.c
diff --git a/arm9/lib/src/OS_valarm.c b/arm9/lib/NitroSDK/src/OS_valarm.c
index 37329147..37329147 100644
--- a/arm9/lib/src/OS_valarm.c
+++ b/arm9/lib/NitroSDK/src/OS_valarm.c
diff --git a/arm9/lib/src/OS_vramExclusive.c b/arm9/lib/NitroSDK/src/OS_vramExclusive.c
index 5ce10f4a..5ce10f4a 100644
--- a/arm9/lib/src/OS_vramExclusive.c
+++ b/arm9/lib/NitroSDK/src/OS_vramExclusive.c
diff --git a/arm9/lib/src/PXI_fifo.c b/arm9/lib/NitroSDK/src/PXI_fifo.c
index 35db1c7f..35db1c7f 100644
--- a/arm9/lib/src/PXI_fifo.c
+++ b/arm9/lib/NitroSDK/src/PXI_fifo.c
diff --git a/arm9/lib/src/PXI_init.c b/arm9/lib/NitroSDK/src/PXI_init.c
index d70ca3b0..d70ca3b0 100644
--- a/arm9/lib/src/PXI_init.c
+++ b/arm9/lib/NitroSDK/src/PXI_init.c
diff --git a/arm9/lib/src/RTC_convert.c b/arm9/lib/NitroSDK/src/RTC_convert.c
index 3d0bb2ce..3d0bb2ce 100644
--- a/arm9/lib/src/RTC_convert.c
+++ b/arm9/lib/NitroSDK/src/RTC_convert.c
diff --git a/arm9/lib/src/RTC_internal.c b/arm9/lib/NitroSDK/src/RTC_internal.c
index e3a132ab..e3a132ab 100644
--- a/arm9/lib/src/RTC_internal.c
+++ b/arm9/lib/NitroSDK/src/RTC_internal.c
diff --git a/arm9/lib/src/SND_alarm.c b/arm9/lib/NitroSDK/src/SND_alarm.c
index e216c02c..e216c02c 100644
--- a/arm9/lib/src/SND_alarm.c
+++ b/arm9/lib/NitroSDK/src/SND_alarm.c
diff --git a/arm9/lib/src/SND_bank.c b/arm9/lib/NitroSDK/src/SND_bank.c
index 44075454..44075454 100644
--- a/arm9/lib/src/SND_bank.c
+++ b/arm9/lib/NitroSDK/src/SND_bank.c
diff --git a/arm9/lib/src/SND_command.c b/arm9/lib/NitroSDK/src/SND_command.c
index 4ad80be5..044d960f 100644
--- a/arm9/lib/src/SND_command.c
+++ b/arm9/lib/NitroSDK/src/SND_command.c
@@ -1,7 +1,10 @@
+#include "SND_alarm.h"
#include "SND_command.h"
#include "SND_work.h"
+#include "OS_emulator.h"
#include "OS_system.h"
#include "OS_cache.h"
+#include "PXI_fifo.h"
#define SND_CMD_WAIT_QUEUE_COUNT 8
diff --git a/arm9/lib/src/SND_interface.c b/arm9/lib/NitroSDK/src/SND_interface.c
index 42b5ff42..42b5ff42 100644
--- a/arm9/lib/src/SND_interface.c
+++ b/arm9/lib/NitroSDK/src/SND_interface.c
diff --git a/arm9/lib/src/SND_main.c b/arm9/lib/NitroSDK/src/SND_main.c
index f97b0873..f97b0873 100644
--- a/arm9/lib/src/SND_main.c
+++ b/arm9/lib/NitroSDK/src/SND_main.c
diff --git a/arm9/lib/src/SND_util.c b/arm9/lib/NitroSDK/src/SND_util.c
index 6ff8cb14..6ff8cb14 100644
--- a/arm9/lib/src/SND_util.c
+++ b/arm9/lib/NitroSDK/src/SND_util.c
diff --git a/arm9/lib/src/SND_work.c b/arm9/lib/NitroSDK/src/SND_work.c
index ca9208d6..ca9208d6 100644
--- a/arm9/lib/src/SND_work.c
+++ b/arm9/lib/NitroSDK/src/SND_work.c
diff --git a/arm9/lib/NitroSDK/src/WM_ks.c b/arm9/lib/NitroSDK/src/WM_ks.c
new file mode 100644
index 00000000..93e96f89
--- /dev/null
+++ b/arm9/lib/NitroSDK/src/WM_ks.c
@@ -0,0 +1,15 @@
+#include "WM_ks.h"
+#include "function_target.h"
+
+extern WMErrCode WM_StartDataSharing(WMKeySetBuf *buf, u16 port, u16 aidBitmap, u16 dataLength, BOOL doubleMode);
+extern WMErrCode WM_EndDataSharing(WMKeySetBuf *buf);
+
+ARM_FUNC WMErrCode WM_StartKeySharing(WMKeySetBuf *buf, u16 port)
+{
+ return WM_StartDataSharing(buf, port, 0xffff, 2, TRUE);
+}
+
+ARM_FUNC WMErrCode WM_EndKeySharing(WMKeySetBuf *buf)
+{
+ return WM_EndDataSharing(buf);
+}
diff --git a/arm9/lib/src/crt0.c b/arm9/lib/NitroSDK/src/crt0.c
index 4e46cb63..4e46cb63 100644
--- a/arm9/lib/src/crt0.c
+++ b/arm9/lib/NitroSDK/src/crt0.c
diff --git a/arm9/lib/src/custom_allocator.c b/arm9/lib/NitroSDK/src/custom_allocator.c
index 1b1375bc..283c3500 100644
--- a/arm9/lib/src/custom_allocator.c
+++ b/arm9/lib/NitroSDK/src/custom_allocator.c
@@ -1,6 +1,8 @@
-#include "global.h"
#include "custom_allocator.h"
+#include "global.h"
+#include "OS_alloc.h"
+
static FreeFunc sDestructor;
static AllocFunc sAllocator;
diff --git a/arm9/lib/src/version_1_dwc.c b/arm9/lib/NitroSDK/src/version_1_dwc.c
index 713aed0d..713aed0d 100644
--- a/arm9/lib/src/version_1_dwc.c
+++ b/arm9/lib/NitroSDK/src/version_1_dwc.c
diff --git a/arm9/lib/src/version_2_wifi.c b/arm9/lib/NitroSDK/src/version_2_wifi.c
index e5db89e4..e5db89e4 100644
--- a/arm9/lib/src/version_2_wifi.c
+++ b/arm9/lib/NitroSDK/src/version_2_wifi.c
diff --git a/arm9/lib/src/version_3_cps.c b/arm9/lib/NitroSDK/src/version_3_cps.c
index 5918341e..5918341e 100644
--- a/arm9/lib/src/version_3_cps.c
+++ b/arm9/lib/NitroSDK/src/version_3_cps.c
diff --git a/arm9/lib/src/version_4_ssl.c b/arm9/lib/NitroSDK/src/version_4_ssl.c
index f1bf08ce..f1bf08ce 100644
--- a/arm9/lib/src/version_4_ssl.c
+++ b/arm9/lib/NitroSDK/src/version_4_ssl.c
diff --git a/arm9/lib/src/version_5_vct.c b/arm9/lib/NitroSDK/src/version_5_vct.c
index a13caf88..a13caf88 100644
--- a/arm9/lib/src/version_5_vct.c
+++ b/arm9/lib/NitroSDK/src/version_5_vct.c
diff --git a/arm9/lib/src/version_6_backup.c b/arm9/lib/NitroSDK/src/version_6_backup.c
index 3cbe3e37..3cbe3e37 100644
--- a/arm9/lib/src/version_6_backup.c
+++ b/arm9/lib/NitroSDK/src/version_6_backup.c
diff --git a/arm9/lib/libc/Makefile b/arm9/lib/libc/Makefile
new file mode 100644
index 00000000..5a993851
--- /dev/null
+++ b/arm9/lib/libc/Makefile
@@ -0,0 +1,80 @@
+# Try to include devkitarm if installed
+TOOLCHAIN := $(DEVKITARM)
+
+ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
+include $(TOOLCHAIN)/base_tools
+endif
+
+# If you are using WSL, it is recommended you build with NOWINE=1.
+WSLENV ?= no
+ifeq ($(WSLENV),)
+NOWINE = 1
+else
+NOWINE = 0
+endif
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+WINE :=
+else
+EXE :=
+WINE := wine
+endif
+
+ifeq ($(NOWINE),1)
+WINE :=
+endif
+
+# Compare result of arm9, arm7, and ROM to sha1 hash(s)
+COMPARE ?= 1
+
+##################### Compiler Options #######################
+
+MWCCVERSION = 2.0/sp1
+
+CROSS := arm-none-eabi-
+
+MWCCARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwccarm.exe
+# Argh... due to EABI version shenanigans, we can't use GNU LD to link together
+# MWCC built objects and GNU built ones. mwldarm, however, doesn't care, so we
+# have to use mwldarm for now.
+# TODO: Is there a hack workaround to let us go back to GNU LD? Ideally, the
+# only dependency should be MWCCARM.
+MWLDARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwldarm.exe
+MWASMARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwasmarm.exe
+SCANINC = ../../../tools/scaninc/scaninc$(EXE)
+
+AS = $(WINE) $(MWASMARM)
+CC = $(WINE) $(MWCCARM)
+CPP := cpp -P
+LD = $(WINE) $(MWLDARM)
+AR := $(CROSS)ar
+OBJDUMP := $(CROSS)objdump
+OBJCOPY := $(CROSS)objcopy
+
+# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
+ASFLAGS = -proc arm5te -ir ../../..
+CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -i include -ir include-mw -ir arm9/lib/libc/include -ir arm9/lib/libnns/include -ir arm9/lib/NitroSDK/include -W all
+LDFLAGS = -library -nodead -w off -proc v5te -interworking -pic
+ARFLAGS = rcS
+
+export MWCIncludes := include
+
+################ Targets #################
+
+.PHONY: all clean
+
+all:
+ @:
+
+clean:
+ $(RM) $(%.a=%/*.o)
+
+%.a:
+ $(AR) $(ARFLAGS) -o $@ $^
+
+%.o: %.c
+ $(CC) $(CFLAGS) -o $@ $<
+
+%.o: %.s
+ $(AS) $(ASFLAGS) -o $@ $<
diff --git a/arm9/lib/libc/include/MSL.h b/arm9/lib/libc/include/MSL.h
new file mode 100644
index 00000000..a1709bc4
--- /dev/null
+++ b/arm9/lib/libc/include/MSL.h
@@ -0,0 +1,8 @@
+#ifndef MSL_H
+#define MSL_H
+
+//include all msl files here
+
+#include "MSL_Common_arith.h"
+
+#endif //MSL_H
diff --git a/arm9/lib/libc/include/MSL_Common_arith.h b/arm9/lib/libc/include/MSL_Common_arith.h
new file mode 100644
index 00000000..3ec6bdbc
--- /dev/null
+++ b/arm9/lib/libc/include/MSL_Common_arith.h
@@ -0,0 +1,8 @@
+#ifndef MSL_COMMON_ARITH_H
+#define MSL_COMMON_ARITH_H
+
+#include "nitro/types.h"
+
+s32 abs(s32 val);
+
+#endif //MSL_COMMON_ARITH_H
diff --git a/arm9/lib/libc/src/MSL_Common_arith.c b/arm9/lib/libc/src/MSL_Common_arith.c
new file mode 100644
index 00000000..d4a2e834
--- /dev/null
+++ b/arm9/lib/libc/src/MSL_Common_arith.c
@@ -0,0 +1,7 @@
+#include "MSL_Common_arith.h"
+#include "function_target.h"
+
+ARM_FUNC s32 abs(s32 val)
+{
+ return val < 0 ? -val : val;
+}
diff --git a/arm9/lib/libnns/Makefile b/arm9/lib/libnns/Makefile
new file mode 100644
index 00000000..029dda4d
--- /dev/null
+++ b/arm9/lib/libnns/Makefile
@@ -0,0 +1,81 @@
+# Try to include devkitarm if installed
+TOOLCHAIN := $(DEVKITARM)
+
+ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
+include $(TOOLCHAIN)/base_tools
+endif
+
+# If you are using WSL, it is recommended you build with NOWINE=1.
+WSLENV ?= no
+ifeq ($(WSLENV),)
+NOWINE = 1
+else
+NOWINE = 0
+endif
+
+ifeq ($(OS),Windows_NT)
+EXE := .exe
+WINE :=
+else
+EXE :=
+WINE := wine
+endif
+
+ifeq ($(NOWINE),1)
+WINE :=
+endif
+
+# Compare result of arm9, arm7, and ROM to sha1 hash(s)
+COMPARE ?= 1
+
+##################### Compiler Options #######################
+
+# TODO: this is likely 2.0 for libnns
+MWCCVERSION = 1.2/sp2p3
+
+CROSS := arm-none-eabi-
+
+MWCCARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwccarm.exe
+# Argh... due to EABI version shenanigans, we can't use GNU LD to link together
+# MWCC built objects and GNU built ones. mwldarm, however, doesn't care, so we
+# have to use mwldarm for now.
+# TODO: Is there a hack workaround to let us go back to GNU LD? Ideally, the
+# only dependency should be MWCCARM.
+MWLDARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwldarm.exe
+MWASMARM = ../../../tools/mwccarm/$(MWCCVERSION)/mwasmarm.exe
+SCANINC = ../../../tools/scaninc/scaninc$(EXE)
+
+AS = $(WINE) $(MWASMARM)
+CC = $(WINE) $(MWCCARM)
+CPP := cpp -P
+LD = $(WINE) $(MWLDARM)
+AR := $(CROSS)ar
+OBJDUMP := $(CROSS)objdump
+OBJCOPY := $(CROSS)objcopy
+
+# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
+ASFLAGS = -proc arm5te -ir ../../..
+CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i include -ir include-mw -ir arm9/lib/libc/include -ir arm9/lib/libnns/include -ir arm9/lib/NitroSDK/include -W all
+LDFLAGS = -library -nodead -w off -proc v5te -interworking -pic
+ARFLAGS = rcS
+
+export MWCIncludes := include
+
+################ Targets #################
+
+.PHONY: all clean
+
+all:
+ @:
+
+clean:
+ $(RM) $(%.a=%/*.o)
+
+%.a:
+ $(AR) $(ARFLAGS) -o $@ $^
+
+%.o: %.c
+ $(CC) $(CFLAGS) -o $@ $<
+
+%.o: %.s
+ $(AS) $(ASFLAGS) -o $@ $<
diff --git a/arm9/lib/include/NNS_FND_allocator.h b/arm9/lib/libnns/include/NNS_FND_allocator.h
index 48df282a..eb17fa70 100644
--- a/arm9/lib/include/NNS_FND_allocator.h
+++ b/arm9/lib/libnns/include/NNS_FND_allocator.h
@@ -1,34 +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
+#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/libnns/include/NNS_FND_expheap.h
index c0008f28..bdc3fcc4 100644
--- a/arm9/lib/include/NNS_FND_expheap.h
+++ b/arm9/lib/libnns/include/NNS_FND_expheap.h
@@ -1,55 +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
+#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/libnns/include/NNS_FND_heapcommon.h
index eb6f1bdb..e6fab69c 100644
--- a/arm9/lib/include/NNS_FND_heapcommon.h
+++ b/arm9/lib/libnns/include/NNS_FND_heapcommon.h
@@ -1,26 +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
+#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/libnns/include/NNS_FND_list.h
index 5df01e5f..5fec2fdf 100644
--- a/arm9/lib/include/NNS_FND_list.h
+++ b/arm9/lib/libnns/include/NNS_FND_list.h
@@ -1,20 +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
+#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/NNS_SND_arc.h b/arm9/lib/libnns/include/NNS_SND_arc.h
index 95b33141..5298d805 100644
--- a/arm9/lib/include/NNS_SND_arc.h
+++ b/arm9/lib/libnns/include/NNS_SND_arc.h
@@ -2,6 +2,7 @@
#define GUARD_NNS_SND_ARC_H
#include "SND_main.h"
+#include "FS_file.h"
typedef struct NNSSndArcHeader
{
@@ -33,6 +34,6 @@ void NNS_SndArcPlayerSetup(void *);
void NNS_SndMain(void);
void NNS_SndHandleInit(u32 *);
void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame);
-void NNS_SndHandleReleaseSeq(void);
+void NNS_SndHandleReleaseSeq(u32 *);
#endif //GUARD_NNS_SND_ARC_H
diff --git a/arm9/lib/include/NNS_SND_arc_loader.h b/arm9/lib/libnns/include/NNS_SND_arc_loader.h
index 851c08ab..7d1e2787 100644
--- a/arm9/lib/include/NNS_SND_arc_loader.h
+++ b/arm9/lib/libnns/include/NNS_SND_arc_loader.h
@@ -1,12 +1,12 @@
-#ifndef GUARD_NNS_SND_ARC_LOADER_H
-#define GUARD_NNS_SND_ARC_LOADER_H
-
-#include "NNS_SND_heap.h"
-
-BOOL NNS_SndArcLoadGroup(int groupNo, NNSSndHeapHandle * heap);
-BOOL NNS_SndArcLoadSeq(int seqNo, NNSSndHeapHandle * heap);
-BOOL NNS_SndArcLoadSeqEx(int seqNo, u32 loadFlag, NNSSndHeapHandle * heap);
-BOOL NNS_SndArcLoadWaveArc(int waveArcNo, NNSSndHeapHandle * heap);
-BOOL NNS_SndArcLoadBank(int bankNo, NNSSndHeapHandle * heap);
-
-#endif //GUARD_NNS_SND_ARC_LOADER_H
+#ifndef GUARD_NNS_SND_ARC_LOADER_H
+#define GUARD_NNS_SND_ARC_LOADER_H
+
+#include "NNS_SND_heap.h"
+
+BOOL NNS_SndArcLoadGroup(int groupNo, NNSSndHeapHandle * heap);
+BOOL NNS_SndArcLoadSeq(int seqNo, NNSSndHeapHandle * heap);
+BOOL NNS_SndArcLoadSeqEx(int seqNo, u32 loadFlag, NNSSndHeapHandle * heap);
+BOOL NNS_SndArcLoadWaveArc(int waveArcNo, NNSSndHeapHandle * heap);
+BOOL NNS_SndArcLoadBank(int bankNo, NNSSndHeapHandle * heap);
+
+#endif //GUARD_NNS_SND_ARC_LOADER_H
diff --git a/arm9/lib/include/NNS_SND_heap.h b/arm9/lib/libnns/include/NNS_SND_heap.h
index 2929d1bb..2909d662 100644
--- a/arm9/lib/include/NNS_SND_heap.h
+++ b/arm9/lib/libnns/include/NNS_SND_heap.h
@@ -1,11 +1,11 @@
-#ifndef GUARD_NNS_SND_HEAP_H
-#define GUARD_NNS_SND_HEAP_H
-
-struct NNSSndHeap;
-typedef struct NNSSndHeap* NNSSndHeapHandle;
-
-NNSSndHeapHandle * NNS_SndHeapCreate(void * start, u32 size);
-int NNS_SndHeapSaveState(NNSSndHeapHandle * heap);
-void NNS_SndHeapLoadState(NNSSndHeapHandle * heap, int level);
-
-#endif //GUARD_NNS_SND_HEAP_H
+#ifndef GUARD_NNS_SND_HEAP_H
+#define GUARD_NNS_SND_HEAP_H
+
+struct NNSSndHeap;
+typedef struct NNSSndHeap* NNSSndHeapHandle;
+
+NNSSndHeapHandle * NNS_SndHeapCreate(void * start, u32 size);
+int NNS_SndHeapSaveState(NNSSndHeapHandle * heap);
+void NNS_SndHeapLoadState(NNSSndHeapHandle * heap, int level);
+
+#endif //GUARD_NNS_SND_HEAP_H
diff --git a/arm9/lib/include/NNS_g2d.h b/arm9/lib/libnns/include/NNS_g2d.h
index 483f254a..f7eed210 100644
--- a/arm9/lib/include/NNS_g2d.h
+++ b/arm9/lib/libnns/include/NNS_g2d.h
@@ -1,212 +1,212 @@
-#ifndef NNSYS_NNS_G2D_H
-#define NNSYS_NNS_G2D_H
-
-#include "gx.h"
-
-typedef struct NNSG2dCharacterData
-{
- u16 H;
- u16 W;
- GXTexFmt pixelFmt;
- GXOBJVRamModeChar mapingType;
- u32 characterFmt;
- u32 szByte;
- void * pRawData;
-} NNSG2dCharacterData;
-
-typedef struct NNSG2dScreenData
-{
- u16 screenWidth;
- u16 screenHeight;
- u16 colorMode;
- u16 screenFormat;
- u32 szByte;
- u32 rawData[1];
-} NNSG2dScreenData;
-
-typedef struct NNSG2dPaletteData
-{
- GXTexFmt fmt;
- BOOL bExtendedPlt;
- u32 szByte;
- void * pRawData;
-
-} NNSG2dPaletteData;
-
-typedef enum NNS_G2D_VRAM_TYPE
-{
- NNS_G2D_VRAM_TYPE_3DMAIN = 0,
- NNS_G2D_VRAM_TYPE_2DMAIN = 1,
- NNS_G2D_VRAM_TYPE_2DSUB = 2,
- NNS_G2D_VRAM_TYPE_MAX = 3
-} NNS_G2D_VRAM_TYPE;
-
-typedef enum NNSG2dCharacterDataMapingType
-{
- NNS_G2D_CHARACTERMAPING_1D_32,
- NNS_G2D_CHARACTERMAPING_1D_64,
- NNS_G2D_CHARACTERMAPING_1D_128,
- NNS_G2D_CHARACTERMAPING_1D_256,
- NNS_G2D_CHARACTERMAPING_2D,
- NNS_G2D_CHARACTERMAPING_MAX
-
-} NNSG2dCharacterDataMapingType;
-
-typedef struct NNSG2dImageAttr
-{
- GXTexSizeS sizeS;
- GXTexSizeT sizeT;
- GXTexFmt fmt;
- BOOL bExtendedPlt;
- GXTexPlttColor0 plttUse;
- GXOBJVRamModeChar mappingType;
-} NNSG2dImageAttr;
-
-typedef struct NNSG2dVRamLocation
-{
- u32 baseAddrOfVram[ NNS_G2D_VRAM_TYPE_MAX ];
-} NNSG2dVRamLocation;
-
-typedef struct NNSG2dImageProxy
-{
- NNSG2dVRamLocation vramLocation;
- NNSG2dImageAttr attr;
-} NNSG2dImageProxy;
-
-typedef struct NNSG2dPaletteCompressInfo
-{
- u16 numPalette;
- u16 pad16;
- void * pPlttIdxTbl;
-
-} NNSG2dPaletteCompressInfo;
-
-void NNS_G2dLoadImage1DMapping
-(
- const NNSG2dCharacterData * pSrcData,
- u32 baseAddr,
- NNS_G2D_VRAM_TYPE type,
- NNSG2dImageProxy * pImgProxy
-);
-
-void NNS_G2dLoadImage2DMapping
-(
- const NNSG2dCharacterData * pSrcData,
- u32 baseAddr,
- NNS_G2D_VRAM_TYPE type,
- NNSG2dImageProxy * pImgProxy
-);
-
-typedef struct NNSG2dImagePaletteProxy
-{
- GXTexFmt fmt;
- BOOL bExtendedPlt;
- NNSG2dVRamLocation vramLocation;
-} NNSG2dImagePaletteProxy;
-
-void NNS_G2dLoadPalette
-(
- const NNSG2dPaletteData * pSrcData,
- u32 addr,
- NNS_G2D_VRAM_TYPE type,
- NNSG2dImagePaletteProxy * pPltProxy
-);
-
-void NNS_G2dLoadPaletteEx
-(
- const NNSG2dPaletteData * pSrcData,
- const NNSG2dPaletteCompressInfo * pCmpInfo,
- u32 addr,
- NNS_G2D_VRAM_TYPE type,
- NNSG2dImagePaletteProxy * pPltProxy
-);
-
-typedef struct NNSG2dCellVramTransferData
-{
- u32 srcDataOffset;
- u32 szByte;
-} NNSG2dCellVramTransferData;
-
-typedef struct NNSG2dVramTransferData
-{
- u32 szByteMax;
- NNSG2dCellVramTransferData * pCellTransferDataArray;
-} NNSG2dVramTransferData;
-
-typedef struct NNSG2dCellOAMAttrData
-{
- u16 attr0;
- u16 attr1;
- u16 attr2;
-} NNSG2dCellOAMAttrData;
-
-typedef struct NNSG2dCellData
-{
- u16 numOAMAttrs;
- u16 cellAttr;
- NNSG2dCellOAMAttrData * pOamAttrArray;
-
-} NNSG2dCellData;
-
-typedef struct NNSG2dCellDataBank
-{
- u16 numCells;
- u16 cellBankAttr;
- NNSG2dCellData * pCellDataArrayHead;
- NNSG2dCharacterDataMapingType mappingMode;
- NNSG2dVramTransferData * pVramTransferData;
- void * pStringBank;
- void * pExtendedData;
-
-} NNSG2dCellDataBank;
-
-typedef enum NNSG2dAnimationPlayMode
-{
- NNS_G2D_ANIMATIONPLAYMODE_INVALID = 0x0,
- NNS_G2D_ANIMATIONPLAYMODE_FORWARD,
- NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP,
- NNS_G2D_ANIMATIONPLAYMODE_REVERSE,
- NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP,
- NNS_G2D_ANIMATIONPLAYMODE_MAX
-} NNSG2dAnimationPlayMode;
-
-typedef struct NNSG2dAnimFrameData
-{
- void * pContent;
- u16 frames;
- u16 pad16;
-} NNSG2dAnimFrameData;
-
-typedef struct NNSG2dAnimSequenceData
-{
- u16 numFrames;
- u16 loopStartFrameIdx;
- u32 animType;
- NNSG2dAnimationPlayMode playMode;
- NNSG2dAnimFrameData * pAnmFrameArray;
-
-} NNSG2dAnimSequenceData;
-
-typedef struct NNSG2dAnimBankData
-{
-
- u16 numSequences;
- u16 numTotalFrames;
- NNSG2dAnimSequenceData * pSequenceArrayHead;
- NNSG2dAnimFrameData * pFrameArrayHead;
- void * pAnimContents;
- void * pStringBank;
- void * pExtendedData;
-
-} NNSG2dAnimBankData;
-
-BOOL NNS_G2dGetUnpackedBGCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData);
-BOOL NNS_G2dGetUnpackedCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData);
-BOOL NNS_G2dGetUnpackedScreenData(void * pNscrFile, NNSG2dScreenData ** ppScrData);
-BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData);
-BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData);
-BOOL NNS_G2dGetUnpackedPaletteCompressInfo(void * pNclrFile, NNSG2dPaletteCompressInfo ** ppPltCmpInfo);
-BOOL NNS_G2dGetUnpackedCellBank(void * pNcerFile, NNSG2dCellDataBank ** ppCellBank);
-BOOL NNS_G2dGetUnpackedAnimBank(void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank);
-
-#endif //NNSYS_NNS_G2D_H
+#ifndef NNSYS_NNS_G2D_H
+#define NNSYS_NNS_G2D_H
+
+#include "gx.h"
+
+typedef struct NNSG2dCharacterData
+{
+ u16 H;
+ u16 W;
+ GXTexFmt pixelFmt;
+ GXOBJVRamModeChar mapingType;
+ u32 characterFmt;
+ u32 szByte;
+ void * pRawData;
+} NNSG2dCharacterData;
+
+typedef struct NNSG2dScreenData
+{
+ u16 screenWidth;
+ u16 screenHeight;
+ u16 colorMode;
+ u16 screenFormat;
+ u32 szByte;
+ u32 rawData[1];
+} NNSG2dScreenData;
+
+typedef struct NNSG2dPaletteData
+{
+ GXTexFmt fmt;
+ BOOL bExtendedPlt;
+ u32 szByte;
+ void * pRawData;
+
+} NNSG2dPaletteData;
+
+typedef enum NNS_G2D_VRAM_TYPE
+{
+ NNS_G2D_VRAM_TYPE_3DMAIN = 0,
+ NNS_G2D_VRAM_TYPE_2DMAIN = 1,
+ NNS_G2D_VRAM_TYPE_2DSUB = 2,
+ NNS_G2D_VRAM_TYPE_MAX = 3
+} NNS_G2D_VRAM_TYPE;
+
+typedef enum NNSG2dCharacterDataMapingType
+{
+ NNS_G2D_CHARACTERMAPING_1D_32,
+ NNS_G2D_CHARACTERMAPING_1D_64,
+ NNS_G2D_CHARACTERMAPING_1D_128,
+ NNS_G2D_CHARACTERMAPING_1D_256,
+ NNS_G2D_CHARACTERMAPING_2D,
+ NNS_G2D_CHARACTERMAPING_MAX
+
+} NNSG2dCharacterDataMapingType;
+
+typedef struct NNSG2dImageAttr
+{
+ GXTexSizeS sizeS;
+ GXTexSizeT sizeT;
+ GXTexFmt fmt;
+ BOOL bExtendedPlt;
+ GXTexPlttColor0 plttUse;
+ GXOBJVRamModeChar mappingType;
+} NNSG2dImageAttr;
+
+typedef struct NNSG2dVRamLocation
+{
+ u32 baseAddrOfVram[ NNS_G2D_VRAM_TYPE_MAX ];
+} NNSG2dVRamLocation;
+
+typedef struct NNSG2dImageProxy
+{
+ NNSG2dVRamLocation vramLocation;
+ NNSG2dImageAttr attr;
+} NNSG2dImageProxy;
+
+typedef struct NNSG2dPaletteCompressInfo
+{
+ u16 numPalette;
+ u16 pad16;
+ void * pPlttIdxTbl;
+
+} NNSG2dPaletteCompressInfo;
+
+void NNS_G2dLoadImage1DMapping
+(
+ const NNSG2dCharacterData * pSrcData,
+ u32 baseAddr,
+ NNS_G2D_VRAM_TYPE type,
+ NNSG2dImageProxy * pImgProxy
+);
+
+void NNS_G2dLoadImage2DMapping
+(
+ const NNSG2dCharacterData * pSrcData,
+ u32 baseAddr,
+ NNS_G2D_VRAM_TYPE type,
+ NNSG2dImageProxy * pImgProxy
+);
+
+typedef struct NNSG2dImagePaletteProxy
+{
+ GXTexFmt fmt;
+ BOOL bExtendedPlt;
+ NNSG2dVRamLocation vramLocation;
+} NNSG2dImagePaletteProxy;
+
+void NNS_G2dLoadPalette
+(
+ const NNSG2dPaletteData * pSrcData,
+ u32 addr,
+ NNS_G2D_VRAM_TYPE type,
+ NNSG2dImagePaletteProxy * pPltProxy
+);
+
+void NNS_G2dLoadPaletteEx
+(
+ const NNSG2dPaletteData * pSrcData,
+ const NNSG2dPaletteCompressInfo * pCmpInfo,
+ u32 addr,
+ NNS_G2D_VRAM_TYPE type,
+ NNSG2dImagePaletteProxy * pPltProxy
+);
+
+typedef struct NNSG2dCellVramTransferData
+{
+ u32 srcDataOffset;
+ u32 szByte;
+} NNSG2dCellVramTransferData;
+
+typedef struct NNSG2dVramTransferData
+{
+ u32 szByteMax;
+ NNSG2dCellVramTransferData * pCellTransferDataArray;
+} NNSG2dVramTransferData;
+
+typedef struct NNSG2dCellOAMAttrData
+{
+ u16 attr0;
+ u16 attr1;
+ u16 attr2;
+} NNSG2dCellOAMAttrData;
+
+typedef struct NNSG2dCellData
+{
+ u16 numOAMAttrs;
+ u16 cellAttr;
+ NNSG2dCellOAMAttrData * pOamAttrArray;
+
+} NNSG2dCellData;
+
+typedef struct NNSG2dCellDataBank
+{
+ u16 numCells;
+ u16 cellBankAttr;
+ NNSG2dCellData * pCellDataArrayHead;
+ NNSG2dCharacterDataMapingType mappingMode;
+ NNSG2dVramTransferData * pVramTransferData;
+ void * pStringBank;
+ void * pExtendedData;
+
+} NNSG2dCellDataBank;
+
+typedef enum NNSG2dAnimationPlayMode
+{
+ NNS_G2D_ANIMATIONPLAYMODE_INVALID = 0x0,
+ NNS_G2D_ANIMATIONPLAYMODE_FORWARD,
+ NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP,
+ NNS_G2D_ANIMATIONPLAYMODE_REVERSE,
+ NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP,
+ NNS_G2D_ANIMATIONPLAYMODE_MAX
+} NNSG2dAnimationPlayMode;
+
+typedef struct NNSG2dAnimFrameData
+{
+ void * pContent;
+ u16 frames;
+ u16 pad16;
+} NNSG2dAnimFrameData;
+
+typedef struct NNSG2dAnimSequenceData
+{
+ u16 numFrames;
+ u16 loopStartFrameIdx;
+ u32 animType;
+ NNSG2dAnimationPlayMode playMode;
+ NNSG2dAnimFrameData * pAnmFrameArray;
+
+} NNSG2dAnimSequenceData;
+
+typedef struct NNSG2dAnimBankData
+{
+
+ u16 numSequences;
+ u16 numTotalFrames;
+ NNSG2dAnimSequenceData * pSequenceArrayHead;
+ NNSG2dAnimFrameData * pFrameArrayHead;
+ void * pAnimContents;
+ void * pStringBank;
+ void * pExtendedData;
+
+} NNSG2dAnimBankData;
+
+BOOL NNS_G2dGetUnpackedBGCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData);
+BOOL NNS_G2dGetUnpackedCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData);
+BOOL NNS_G2dGetUnpackedScreenData(void * pNscrFile, NNSG2dScreenData ** ppScrData);
+BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData);
+BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData);
+BOOL NNS_G2dGetUnpackedPaletteCompressInfo(void * pNclrFile, NNSG2dPaletteCompressInfo ** ppPltCmpInfo);
+BOOL NNS_G2dGetUnpackedCellBank(void * pNcerFile, NNSG2dCellDataBank ** ppCellBank);
+BOOL NNS_G2dGetUnpackedAnimBank(void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank);
+
+#endif //NNSYS_NNS_G2D_H
diff --git a/arm9/lib/libnns/src/.gitkeep b/arm9/lib/libnns/src/.gitkeep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/arm9/lib/libnns/src/.gitkeep
diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s
index 8bebb5b3..52073cac 100644
--- a/arm9/modules/05/asm/mod05_021D74E0.s
+++ b/arm9/modules/05/asm/mod05_021D74E0.s
@@ -424,7 +424,7 @@ MOD05_021D7894: ; 0x021D7894
asr r2, r1, #5
ldr r0, [r5, #0x28]
add r1, r4, #0
- bl FUN_0203451C
+ bl MapMatrix_GetMapHeader
add r4, r0, #0
ldr r0, [r5, #0x1c]
ldr r6, [r0]
@@ -542,7 +542,7 @@ MOD05_021D79B4: ; 0x021D79B4
add r5, r0, #0
ldr r0, [r5, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _021D79FE
ldr r0, [r5, #0xc]
diff --git a/arm9/modules/05/asm/mod05_021D80E8.s b/arm9/modules/05/asm/mod05_021D80E8.s
index bda94277..7af8c0ec 100644
--- a/arm9/modules/05/asm/mod05_021D80E8.s
+++ b/arm9/modules/05/asm/mod05_021D80E8.s
@@ -2216,11 +2216,11 @@ MOD05_021D9290: ; 0x021D9290
beq _021D92DA
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #1
bne _021D931C
ldr r0, [sp, #8]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
bne _021D931C
ldr r0, [r4, #0x38]
@@ -2246,11 +2246,11 @@ _021D92DA:
beq _021D931C
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #1
bne _021D931C
ldr r0, [sp, #8]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
bne _021D931C
ldr r0, [r4, #0x38]
diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s
index 79954077..20fc2752 100644
--- a/arm9/modules/05/asm/mod05_021E1AD8.s
+++ b/arm9/modules/05/asm/mod05_021E1AD8.s
@@ -2073,10 +2073,10 @@ MOD05_021E2AD4: ; 0x021E2AD4
bl NewString_ReadMsgData
str r0, [sp, #0x10]
ldr r0, [r6, #0xc]
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
mov r1, #0
add r2, r1, #0
- bl FUN_0202A3B4
+ bl SaveStruct23_Substruct2_SetField_0x0
add r2, r0, #0
mov r0, #1
str r0, [sp]
diff --git a/arm9/modules/05/asm/mod05_021E3444.s b/arm9/modules/05/asm/mod05_021E3444.s
index 9bd14da2..0537d0db 100644
--- a/arm9/modules/05/asm/mod05_021E3444.s
+++ b/arm9/modules/05/asm/mod05_021E3444.s
@@ -1474,7 +1474,7 @@ MOD05_021E3F68: ; 0x021E3F68
ldr r0, [sp, #4]
add r3, r7, #0
ldr r0, [r0, #0xc]
- bl FUN_02003974
+ bl BlendPalette
add r0, r6, #0
add r1, r5, #0
mov r2, #0x20
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 47360829..3cc1b9fe 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -11251,7 +11251,7 @@ MOD05_021EE114: ; 0x021EE114
cmp r0, r1
bge _021EE1D0
add r1, r2, #0
- bl FUN_02034660
+ bl GetMapData
add r1, r0, #0
ldr r0, _021EE1D4 ; =0x0000FFFF
cmp r1, r0
@@ -11356,7 +11356,7 @@ MOD05_021EE1E4: ; 0x021EE1E4
mul r3, r2
cmp r0, r3
bge _021EE286
- bl FUN_02034660
+ bl GetMapData
add r1, r0, #0
ldr r0, _021EE298 ; =0x0000FFFF
cmp r1, r0
@@ -11440,7 +11440,7 @@ MOD05_021EE2A4: ; 0x021EE2A4
cmp r1, r5
bge _021EE37A
add r1, r3, #0
- bl FUN_02034660
+ bl GetMapData
add r1, r0, #0
ldr r0, _021EE380 ; =0x0000FFFF
cmp r1, r0
@@ -11556,7 +11556,7 @@ MOD05_021EE38C: ; 0x021EE38C
cmp r1, r2
bge _021EE43E
add r1, r3, #0
- bl FUN_02034660
+ bl GetMapData
add r1, r0, #0
ldr r0, _021EE450 ; =0x0000FFFF
cmp r1, r0
@@ -13633,17 +13633,17 @@ MOD05_021EF300: ; 0x021EF300
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r7, #0
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
str r0, [sp, #8]
add r0, r7, #0
- bl FUN_02034574
+ bl MapMatrix_GetMatrixID
add r1, r0, #0
ldr r0, [sp, #8]
add r2, r6, #0
str r0, [sp]
add r0, r7, #0
add r3, r4, #0
- bl FUN_02034578
+ bl MapMatrix_GetMapAltitude
lsl r0, r0, #0xf
str r0, [r5, #4]
ldr r1, [r5]
@@ -13707,12 +13707,12 @@ _021EF3AE:
add r0, #0xbc
str r5, [r0]
add r0, r5, #0
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r4, #0
add r1, #0xc0
str r0, [r1]
add r0, r5, #0
- bl FUN_0203450C
+ bl MapMatrix_GetHeight
add r1, r4, #0
add r1, #0xc4
str r0, [r1]
@@ -25857,7 +25857,7 @@ MOD05_021F5068: ; 0x021F5068
ldr r0, [r5, #0x28]
add r7, r1, #0
add r1, r2, #0
- bl FUN_02034554
+ bl MapMatrix_GetMapHeaderFromID
bl MOD05_021F50FC
add r4, r0, #0
cmp r4, #0x15
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index ad23df94..13b58921 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -4775,7 +4775,7 @@ MOD06_0223B9A8: ; 0x0223B9A8
ldr r0, [r0]
add r6, r2, #0
add r7, r3, #0
- bl FUN_020349B8
+ bl MapHeader_MapIsTrophyGarden
cmp r0, #0
beq _0223B9FC
add r1, sp, #0
@@ -5248,7 +5248,7 @@ _0223BD8A:
ldr r0, [sp, #8]
ldr r0, [r0, #0x1c]
ldr r0, [r0]
- bl FUN_020349AC
+ bl MapHeader_MapIsMtCoronetFeebasRoom
cmp r0, #0
beq _0223BDFC
ldr r0, [sp, #8]
@@ -19893,17 +19893,17 @@ _022433A4: .word OS_ResetSystem
thumb_func_start MOD06_022433A8
MOD06_022433A8: ; 0x022433A8
- ldr r3, _022433AC ; =FUN_0202A1E4
+ ldr r3, _022433AC ; =SaveStruct23_Substruct1_Init
bx r3
.align 2, 0
-_022433AC: .word FUN_0202A1E4
+_022433AC: .word SaveStruct23_Substruct1_Init
thumb_func_start MOD06_022433B0
MOD06_022433B0: ; 0x022433B0
- ldr r3, _022433B4 ; =FUN_0202A398
+ ldr r3, _022433B4 ; =SaveStruct23_Substruct1_GetFlag1
bx r3
.align 2, 0
-_022433B4: .word FUN_0202A398
+_022433B4: .word SaveStruct23_Substruct1_GetFlag1
thumb_func_start MOD06_022433B8
MOD06_022433B8: ; 0x022433B8
@@ -19965,26 +19965,26 @@ _02243414:
MOD06_02243428: ; 0x02243428
push {r4, lr}
add r4, r1, #0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
cmp r4, #0
bne _0224343E
mov r1, #5
mov r2, #2
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
pop {r4, pc}
_0224343E:
mov r1, #5
mov r2, #1
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
pop {r4, pc}
thumb_func_start MOD06_02243448
MOD06_02243448: ; 0x02243448
push {r3, lr}
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
mov r1, #5
mov r2, #0
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r3, pc}
@@ -19993,15 +19993,15 @@ MOD06_02243448: ; 0x02243448
MOD06_0224345C: ; 0x0224345C
push {r4, r5, r6, lr}
add r5, r0, #0
- bl FUN_0202A8CC
+ bl SaveStruct23_GetSubstruct1
add r4, r0, #0
add r0, r5, #0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
mov r1, #0
add r6, r0, #0
add r0, r4, #0
add r2, r1, #0
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
lsl r0, r0, #0x18
lsr r4, r0, #0x18
cmp r4, #5
@@ -20015,11 +20015,11 @@ _02243484:
add r0, r6, #0
lsr r1, r1, #0x10
mov r2, #2
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
add r0, r6, #0
add r1, r4, #0
mov r2, #2
- bl FUN_0202A538
+ bl SaveStruct23_Substruct2_SetField_0xC
cmp r4, #4
beq _022434A8
add r0, r5, #0
@@ -20031,8 +20031,8 @@ _022434A8:
thumb_func_start MOD06_022434AC
MOD06_022434AC: ; 0x022434AC
push {r3, lr}
- bl FUN_0202A8E4
- bl FUN_0202A744
+ bl SaveStruct23_GetSubstruct4
+ bl SaveStruct23_Substruct4_GetField_0xFE
lsl r0, r0, #0x10
lsr r0, r0, #0x10
pop {r3, pc}
@@ -20072,16 +20072,16 @@ MOD06_022434D0: ; 0x022434D0
mov r0, #0x3b
str r0, [r4, #4]
add r0, r6, #0
- bl FUN_0202A8CC
+ bl SaveStruct23_GetSubstruct1
str r0, [r4, #0x70]
add r0, r6, #0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
str r0, [r4, #0x74]
ldr r0, _02243688 ; =0x12345678
mov r1, #0
str r0, [r4]
ldr r0, [r4, #0x70]
- bl FUN_0202A3A0
+ bl SaveStruct23_Substruct1_SetFlag1
cmp r5, #0
bne _0224356C
strb r7, [r4, #0xf]
@@ -20114,25 +20114,25 @@ _02243544:
cmp r2, #0xe
blo _02243544
ldr r0, [r4, #0x70]
- bl FUN_0202A1E4
+ bl SaveStruct23_Substruct1_Init
ldrb r1, [r4, #0xf]
add r0, sp, #8
add r2, sp, #8
strb r1, [r0]
ldr r0, [r4, #0x70]
mov r1, #0
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
b _0224362A
_0224356C:
mov r1, #0
ldr r0, [r4, #0x70]
add r2, r1, #0
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
strb r0, [r4, #0xf]
ldr r0, [r4, #0x70]
mov r1, #1
mov r2, #0
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xc]
sub r0, r0, #1
@@ -20144,16 +20144,16 @@ _0224356C:
ldr r0, [r4, #0x70]
mov r1, #5
add r2, #0x2a
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
add r2, r4, #0
ldr r0, [r4, #0x70]
mov r1, #8
add r2, #0x3e
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
ldr r0, [r4, #0x70]
mov r1, #0xa
mov r2, #0
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
str r0, [r4, #8]
ldrb r0, [r4, #0xf]
cmp r0, #2
@@ -20161,7 +20161,7 @@ _0224356C:
ldr r0, [r4, #0x70]
mov r1, #9
mov r2, #0
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r0, r0, #0x1d
@@ -20180,14 +20180,14 @@ _0224356C:
lsl r3, r3, #4
mov r1, #6
add r2, r2, r3
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
ldrb r0, [r4, #0x10]
mov r1, #7
mov r2, #0
lsl r0, r0, #0x18
lsr r5, r0, #0x1d
ldr r0, [r4, #0x70]
- bl FUN_0202A240
+ bl SaveStruct23_Substruct1_GetField
add r3, r0, #0
ldr r0, _02243690 ; =0x000007E8
mov r1, #0xa6
@@ -20226,7 +20226,7 @@ _0224362A:
lsl r1, r1, #0x10
lsr r1, r1, #0x10
mov r2, #0
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
lsl r0, r0, #0x10
lsr r0, r0, #0x10
beq _02243668
@@ -20244,7 +20244,7 @@ _02243668:
ldrb r1, [r4, #0xf]
ldr r0, [r4, #0x74]
mov r2, #0
- bl FUN_0202A538
+ bl SaveStruct23_Substruct2_SetField_0xC
strh r0, [r4, #0x1c]
_0224367E:
add r0, r4, #0
@@ -20707,17 +20707,17 @@ _022439B8:
strb r1, [r0]
ldr r0, [r5, #0x70]
mov r1, #0
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
ldrb r1, [r5, #0xc]
add r0, sp, #0
add r2, sp, #0
strb r1, [r0]
ldr r0, [r5, #0x70]
mov r1, #1
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
ldr r0, [r5, #0x74]
ldr r1, [r5, #0x70]
- bl FUN_0202A4B8
+ bl SaveStruct23_Substruct2_SetField_0x16
_022439F6:
pop {r3, r4, r5, r6, r7, pc}
@@ -20771,7 +20771,7 @@ _02243A52:
add r1, #8
lsl r1, r1, #0x10
lsr r1, r1, #0x10
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
lsl r0, r0, #0x10
lsr r0, r0, #0x10
beq _02243A74
@@ -20793,7 +20793,7 @@ _02243A7E:
lsl r1, r1, #0x10
lsr r1, r1, #0x10
mov r2, #2
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
ldrb r2, [r5, #0xd]
ldr r0, [sp, #4]
mov r1, #0x1d
@@ -20801,7 +20801,7 @@ _02243A7E:
ldrb r1, [r5, #0xf]
ldr r0, [r5, #0x74]
mov r2, #2
- bl FUN_0202A538
+ bl SaveStruct23_Substruct2_SetField_0xC
ldr r0, [sp, #8]
bl FUN_02029FC8
mov r1, #0xf
@@ -20849,7 +20849,7 @@ MOD06_02243AD8: ; 0x02243AD8
lsr r1, r1, #0x10
mov r2, #0
add r4, #0x35
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
lsl r0, r0, #0x10
lsr r0, r0, #0x10
beq _02243B1A
@@ -20872,7 +20872,7 @@ _02243B26:
add r1, #8
lsl r1, r1, #0x10
lsr r1, r1, #0x10
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
add r0, r6, #0
add r1, r4, #0
bl FUN_0202A150
@@ -20887,7 +20887,7 @@ _02243B26:
ldrb r1, [r5, #0xf]
ldr r0, [r5, #0x74]
mov r2, #3
- bl FUN_0202A538
+ bl SaveStruct23_Substruct2_SetField_0xC
add r0, r6, #0
mov r1, #0xf
mov r2, #1
@@ -20933,19 +20933,19 @@ MOD06_02243BA8: ; 0x02243BA8
strb r1, [r0]
ldr r0, [r4, #0x70]
mov r1, #0
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
ldrb r1, [r4, #0xc]
add r0, sp, #0
add r2, sp, #0
strb r1, [r0]
ldr r0, [r4, #0x70]
mov r1, #1
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
add r2, r4, #0
ldr r0, [r4, #0x70]
mov r1, #5
add r2, #0x2a
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
ldrh r1, [r4, #0x28]
ldrh r2, [r4, #0x24]
ldrh r3, [r4, #0x26]
@@ -20957,15 +20957,15 @@ MOD06_02243BA8: ; 0x02243BA8
ldr r0, [r4, #0x70]
mov r1, #8
add r2, #0x3e
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
add r2, r4, #0
ldr r0, [r4, #0x70]
mov r1, #0xa
add r2, #8
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
ldr r0, [r4, #0x70]
mov r1, #1
- bl FUN_0202A3A0
+ bl SaveStruct23_Substruct1_SetFlag1
ldrb r0, [r4, #0xf]
cmp r0, #2
bne _02243C4E
@@ -20977,7 +20977,7 @@ MOD06_02243BA8: ; 0x02243BA8
strb r1, [r0]
ldr r0, [r4, #0x70]
mov r1, #9
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
ldrb r3, [r4, #0x10]
ldr r2, _02243C54 ; =0x000007E8
ldr r0, [r4, #0x70]
@@ -20987,7 +20987,7 @@ MOD06_02243BA8: ; 0x02243BA8
lsl r3, r3, #4
mov r1, #6
add r2, r2, r3
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
ldr r2, _02243C58 ; =0x00000838
ldr r0, [r4, #0x70]
add r3, r4, r2
@@ -20996,7 +20996,7 @@ MOD06_02243BA8: ; 0x02243BA8
lsl r2, r2, #0x18
lsr r2, r2, #0x1d
add r2, r3, r2
- bl FUN_0202A2C4
+ bl SaveStruct23_Substruct1_SetField
_02243C4E:
add sp, #4
pop {r3, r4, pc}
@@ -21234,13 +21234,13 @@ _02243DEE:
ldr r0, [r4, #0x74]
bne _02243E00
mov r1, #0
- bl FUN_0202A444
+ bl SaveStruct23_Substruct2_SetField_0x3
ldr r1, _02243E2C ; =0x02250C5C
ldrb r5, [r1, r0]
b _02243E1E
_02243E00:
mov r2, #0
- bl FUN_0202A538
+ bl SaveStruct23_Substruct2_SetField_0xC
ldrb r1, [r4, #0x10]
lsl r1, r1, #0x1d
lsr r1, r1, #0x1e
@@ -21259,7 +21259,7 @@ _02243E1E:
ldr r0, [r4, #0x74]
add r1, r5, #0
mov r2, #5
- bl FUN_0202A3B4
+ bl SaveStruct23_Substruct2_SetField_0x0
add r0, r5, #0
pop {r3, r4, r5, pc}
.align 2, 0
@@ -21283,7 +21283,7 @@ _02243E48:
blo _02243E5E
mov r1, #1
mov r2, #0
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
cmp r0, #0
beq _02243E6E
mov r0, #0
@@ -21291,7 +21291,7 @@ _02243E48:
_02243E5E:
mov r1, #0
add r2, r1, #0
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
cmp r0, #0
beq _02243E6E
mov r0, #0
@@ -21307,7 +21307,7 @@ MOD06_02243E74: ; 0x02243E74
add r6, r0, #0
add r0, r1, #0
add r5, r2, #0
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
add r4, r0, #0
cmp r5, #0
beq _02243E90
@@ -21318,15 +21318,15 @@ MOD06_02243E74: ; 0x02243E74
b _02243F10
_02243E90:
mov r1, #0
- bl FUN_0202A444
+ bl SaveStruct23_Substruct2_SetField_0x3
pop {r4, r5, r6, pc}
_02243E98:
mov r1, #4
mov r2, #2
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
add r0, r4, #0
mov r1, #0
- bl FUN_0202A444
+ bl SaveStruct23_Substruct2_SetField_0x3
add r5, r0, #0
cmp r5, #0xa
bne _02243EB2
@@ -21335,7 +21335,7 @@ _02243E98:
_02243EB2:
add r0, r4, #0
mov r1, #3
- bl FUN_0202A444
+ bl SaveStruct23_Substruct2_SetField_0x3
add r0, r5, #1
cmp r0, #5
blt _02243EC8
@@ -21348,11 +21348,11 @@ _02243EC8:
pop {r4, r5, r6, pc}
_02243ECC:
mov r1, #3
- bl FUN_0202A40C
+ bl SaveStruct23_Substruct2_SetField_0x2
add r5, r0, #0
add r0, r4, #0
mov r1, #0
- bl FUN_0202A444
+ bl SaveStruct23_Substruct2_SetField_0x3
cmp r0, #1
bne _02243EE4
mov r0, #0
@@ -21365,14 +21365,14 @@ _02243EE4:
blo _02243F0C
add r0, r4, #0
mov r1, #4
- bl FUN_0202A444
+ bl SaveStruct23_Substruct2_SetField_0x3
add r0, r4, #0
mov r1, #2
- bl FUN_0202A40C
+ bl SaveStruct23_Substruct2_SetField_0x2
add r0, r4, #0
mov r1, #4
mov r2, #2
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
mov r0, #1
pop {r4, r5, r6, pc}
_02243F0C:
@@ -21476,7 +21476,7 @@ MOD06_02243F9C: ; 0x02243F9C
add r1, #8
lsl r1, r1, #0x10
lsr r1, r1, #0x10
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bne _02243FC0
@@ -21749,7 +21749,7 @@ _022441B8:
ldr r0, [r6, #0x74]
ldr r1, [sp]
ldr r2, [sp, #4]
- bl FUN_0202A474
+ bl SaveStruct23_Substruct2_SetArray
ldr r0, [sp, #4]
mov r1, #0
mov r2, #0xa8
@@ -21939,9 +21939,9 @@ MOD06_0224434C: ; 0x0224434C
lsl r2, r2, #4
bl MI_CpuFill8
add r0, r6, #0
- bl FUN_0202A8E4
+ bl SaveStruct23_GetSubstruct4
add r6, r0, #0
- bl FUN_0202A744
+ bl SaveStruct23_Substruct4_GetField_0xFE
cmp r0, #0
bne _0224437A
add r0, r5, #0
@@ -22424,7 +22424,7 @@ _0224471C:
ldr r0, [r6, #0x74]
mov r1, #3
mov r2, #0
- bl FUN_0202A538
+ bl SaveStruct23_Substruct2_SetField_0xC
ldr r1, _02244754 ; =0x00000844
strh r0, [r6, r1]
pop {r3, r4, r5, r6, r7, pc}
@@ -23774,7 +23774,7 @@ MOD06_02245198: ; 0x02245198
lsl r2, r2, #0xb
lsr r1, r1, #0x10
lsr r2, r2, #0x10
- bl FUN_020345FC
+ bl GetMapHeader
b _022451D6
_022451BA:
cmp r5, #5
@@ -23790,7 +23790,7 @@ _022451C2:
ldr r0, [r0, #0x28]
lsr r1, r1, #5
lsr r2, r2, #5
- bl FUN_0203451C
+ bl MapMatrix_GetMapHeader
_022451D6:
lsl r3, r5, #2
add r1, r4, r3
@@ -38544,7 +38544,7 @@ MOD06_0224C27C: ; 0x0224C27C
strb r0, [r4, #0xe]
strb r0, [r4, #0xf]
ldr r0, [r5, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r0, #0
ldr r0, [sp]
add r2, sp, #0x14
@@ -39797,7 +39797,7 @@ _0224CC80:
add r2, sp, #0x14
bl FUN_020572B8
ldr r0, [r5, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
str r0, [sp]
mov r0, #0
str r0, [sp, #4]
@@ -42943,7 +42943,7 @@ MOD06_0224E554: ; 0x0224E554
strb r0, [r4, #0xe]
strb r0, [r4, #0xf]
ldr r0, [r5, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
add r1, r0, #0
ldr r0, [sp]
add r2, sp, #0x14
diff --git a/arm9/modules/06/include/module_06.h b/arm9/modules/06/include/module_06.h
index d9915f00..3942b1ce 100644
--- a/arm9/modules/06/include/module_06.h
+++ b/arm9/modules/06/include/module_06.h
@@ -1,14 +1,14 @@
-#ifndef POKEDIAMOND_MODULE_06_H
-#define POKEDIAMOND_MODULE_06_H
-
-enum MartType
-{
- MART_ITEMS = 0,
- MART_GOODS,
- MART_SEALS,
- MART_DECORATIONS = MART_GOODS,
-};
-
-void MOD06_0223D3D0(struct UnkStruct_0204639C *, struct UnkSavStruct80 *, const u16 *, enum MartType, u32);
-
-#endif //POKEDIAMOND_MODULE_06_H
+#ifndef POKEDIAMOND_MODULE_06_H
+#define POKEDIAMOND_MODULE_06_H
+
+enum MartType
+{
+ MART_ITEMS = 0,
+ MART_GOODS,
+ MART_SEALS,
+ MART_DECORATIONS = MART_GOODS,
+};
+
+void MOD06_0223D3D0(struct UnkStruct_0204639C *, struct UnkSavStruct80 *, const u16 *, enum MartType, u32);
+
+#endif //POKEDIAMOND_MODULE_06_H
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index e4400e3e..bc0d71b9 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -156,7 +156,7 @@ MOD07_02211F34: ; 0x02211F34
mov r1, #0
ldr r3, [r3, #0x24]
mov r2, #0x60
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
ldr r0, _02211FEC ; =0x00000B82
mov r3, #0
strb r3, [r4, r0]
@@ -1641,7 +1641,7 @@ _02212BA8:
bl FUN_0201C29C
ldr r0, [r4, #8]
mov r1, #0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #8]
bl FUN_02002FEC
ldr r0, [r4]
@@ -5037,7 +5037,7 @@ MOD07_02214720: ; 0x02214720
mov r0, #0x57
lsl r0, r0, #2
ldr r0, [r1, r0]
- bl FUN_02034998
+ bl MapHeader_MapIsUnionRoom
cmp r0, #1
bne _0221479C
mov r0, #1
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s
index 44194a24..acd698d5 100644
--- a/arm9/modules/08/asm/module_08.s
+++ b/arm9/modules/08/asm/module_08.s
@@ -35,7 +35,7 @@ MOD08_02211E7C: ; 0x02211E7C
add r0, r5, #0
add r2, r4, #0
lsr r3, r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
pop {r3, r4, r5, pc}
.align 2, 0
@@ -3185,7 +3185,7 @@ _02213500:
ldr r1, [sp, #0x14]
ldr r2, [sp, #0x10]
ldr r3, [r5]
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3650,7 +3650,7 @@ _022138F0:
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
ldr r3, [r4]
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
_02213926:
ldr r0, [sp, #0xc]
lsl r5, r0, #2
@@ -4160,7 +4160,7 @@ MOD08_02213C94: ; 0x02213C94
ldr r0, [r0]
ldr r3, [r5]
mov r1, #7
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add r0, r5, #0
add r0, #0xc4
lsl r1, r4, #0x18
@@ -4663,7 +4663,7 @@ _02214078:
ldr r1, [r3, r1]
ldr r2, [r3, r2]
ldr r3, [r3]
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
_022140CC:
ldr r2, [r4, #0x48]
mov r0, #0
@@ -4754,7 +4754,7 @@ _02214142:
ldr r0, [r0]
add r2, #0x64
mov r3, #0x10
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
b _022141B8
_02214180:
mov r3, #0
@@ -4782,7 +4782,7 @@ _02214180:
ldr r0, [r0]
add r2, #0x64
mov r3, #0x10
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
_022141B8:
ldrb r0, [r4, #5]
add r0, r0, #1
@@ -4917,7 +4917,7 @@ _02214286:
ldr r0, [r0]
lsr r2, r2, #0x10
mov r3, #0x10
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
b _022142FA
_022142C2:
mov r3, #0
@@ -4945,7 +4945,7 @@ _022142C2:
mov r1, #0
lsr r2, r2, #0x10
mov r3, #0x10
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
_022142FA:
ldrb r0, [r4, #5]
add r0, r0, #1
@@ -5039,7 +5039,7 @@ _0221436A:
ldr r1, [r3, r1]
ldr r2, [r3, r2]
ldr r3, [r3]
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
_022143BE:
ldr r2, [r4, #0x48]
mov r0, #0
@@ -7574,7 +7574,7 @@ MOD08_02215660: ; 0x02215660
mov r2, #0
ldr r0, [r0]
add r3, r2, #0
- bl FUN_02003054
+ bl PaletteData_LoadPalette
pop {r3, pc}
thumb_func_start MOD08_02215680
@@ -7875,7 +7875,7 @@ _022158C2:
ldr r1, [sp, #0x20]
ldr r2, [sp, #0x1c]
ldr r3, [r4]
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
_022158EC:
ldr r0, [sp, #0x24]
add r7, r7, #4
@@ -14563,7 +14563,7 @@ MOD08_02218A84: ; 0x02218A84
ldrh r3, [r4, #0xe]
ldr r0, [r4, #0x18]
ldr r1, [r4, #8]
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
ldrb r3, [r4, #0x13]
ldrb r1, [r4, #0x14]
cmp r1, r3
@@ -14728,7 +14728,7 @@ MOD08_02218BD4: ; 0x02218BD4
add r5, r0, #0
bl MOD08_02215504
mov r1, #0
- bl FUN_02003204
+ bl PaletteData_GetFadedBuf
add r4, r0, #0
add r0, r5, #0
bl MOD08_02212004
@@ -14763,7 +14763,7 @@ MOD08_02218C04: ; 0x02218C04
add r0, r4, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_020031B8
+ bl PaletteData_CopyPalette
add sp, #8
pop {r3, r4, r5, pc}
_02218C30:
@@ -14775,7 +14775,7 @@ _02218C30:
add r0, r4, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_020031B8
+ bl PaletteData_CopyPalette
add sp, #8
pop {r3, r4, r5, pc}
@@ -15602,7 +15602,7 @@ _02219228:
ldr r0, [r4, #0x34]
mov r1, #7
add r2, r6, #0
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r0, [r4, #0x30]
mov r1, #2
bl BgClearTilemapBufferAndCommit
@@ -16006,7 +16006,7 @@ _02219550:
ldr r0, [r4, #0x34]
mov r1, #7
add r2, r6, #0
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r0, [r4, #0x30]
mov r1, #2
bl BgClearTilemapBufferAndCommit
@@ -26031,7 +26031,7 @@ _0221E796:
mov r2, #0xff
mov r3, #0xa
str r1, [sp]
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
b _0221E7DA
_0221E7C8:
bl MOD08_02215504
@@ -26040,7 +26040,7 @@ _0221E7C8:
str r1, [sp]
mov r1, #0
mov r3, #0xa
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
_0221E7DA:
mov r0, #3
strb r0, [r4, #3]
@@ -26085,7 +26085,7 @@ _0221E810:
mov r2, #0xff
add r3, r1, #0
str r1, [sp]
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
_0221E832:
mov r6, #0
add r5, r4, #0
@@ -34520,7 +34520,7 @@ _02222DA6:
ldr r0, [r4, #0x18]
lsl r2, r2, #8
mov r3, #8
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
ldr r0, [r4]
ldr r1, _02222E18 ; =MOD08_02222BF4
add r2, r4, #0
@@ -38691,7 +38691,7 @@ MOD08_02224F74: ; 0x02224F74
mov r1, #2
lsr r2, r2, #0x10
mov r3, #8
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
add sp, #4
pop {r3, r4, pc}
.align 2, 0
@@ -42756,7 +42756,7 @@ MOD08_02227068: ; 0x02227068
ldr r1, [r5]
ldr r2, [r2, r3]
add r3, r6, #0
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
lsl r1, r4, #0x18
ldr r0, [r5, #0x2c]
lsr r1, r1, #0x18
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 07d0fa04..c5b40b5e 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -2219,12 +2219,12 @@ MOD09_02212F8C: ; 0x02212F8C
ldr r3, [r3, #0xc]
mov r1, #0x48
mov r2, #0x17
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #1
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r2, r0, #0
ldr r0, _02213134 ; =0x00001F60
mov r1, #6
@@ -2246,7 +2246,7 @@ MOD09_02212F8C: ; 0x02212F8C
ldr r3, [r3, #0xc]
mov r1, #0xe
mov r2, #6
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #1
str r0, [sp]
mov r0, #0x20
@@ -2259,7 +2259,7 @@ MOD09_02212F8C: ; 0x02212F8C
ldr r3, [r3, #0xc]
mov r1, #0xe
mov r2, #7
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r0, [r5]
ldr r0, [r0, #8]
bl MOD11_02230E44
@@ -2295,12 +2295,12 @@ MOD09_02212F8C: ; 0x02212F8C
ldr r0, [r5, r0]
ldr r3, [r3, #0xc]
mov r1, #0x26
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x7a
lsl r0, r0, #2
ldr r0, [r5, r0]
mov r1, #1
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r6, r0, #0
ldr r0, [r5]
mov r1, #0x20
@@ -2343,7 +2343,7 @@ MOD09_02212F8C: ; 0x02212F8C
str r0, [sp]
ldr r0, [r5, r2]
mov r2, #1
- bl FUN_02003054
+ bl PaletteData_LoadPalette
add r0, r4, #0
bl FreeToHeap
add sp, #0x14
@@ -12567,7 +12567,7 @@ MOD09_02218640: ; 0x02218640
add r1, r2, r1
mov r2, #1
mov r3, #0xc0
- bl FUN_02003054
+ bl PaletteData_LoadPalette
pop {r3, pc}
_02218662:
mov r0, #0x20
@@ -12579,7 +12579,7 @@ _02218662:
add r1, r2, r1
mov r2, #1
mov r3, #0xc0
- bl FUN_02003054
+ bl PaletteData_LoadPalette
pop {r3, pc}
nop
_0221867C: .word 0x00001F60
@@ -14029,7 +14029,7 @@ MOD09_022191C0: ; 0x022191C0
ldr r3, [r3, #0xc]
mov r1, #0x4d
mov r2, #3
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #1
str r0, [sp]
mov r0, #0x20
@@ -14041,7 +14041,7 @@ MOD09_022191C0: ; 0x022191C0
ldr r3, [r3, #0xc]
mov r1, #0xe
mov r2, #7
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r0, [r5]
ldr r0, [r0]
bl MOD11_02230E44
@@ -14073,7 +14073,7 @@ MOD09_022191C0: ; 0x022191C0
ldr r0, [r5, #8]
ldr r3, [r3, #0xc]
mov r1, #0x26
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0x14
pop {r4, r5, pc}
.align 2, 0
@@ -15664,7 +15664,7 @@ MOD09_02219F24: ; 0x02219F24
ldr r0, [r5, #8]
ldr r3, [r3, #0xc]
mov r1, #0x10
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0xc
pop {r4, r5, pc}
diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s
index 23f0a76c..1040df95 100644
--- a/arm9/modules/11/asm/module_11_thumb1.s
+++ b/arm9/modules/11/asm/module_11_thumb1.s
@@ -545,7 +545,7 @@ _0222D99A:
add r2, r3, r2
mov r1, #7
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add r0, r4, #0
bl FUN_0200CD64
add r2, r0, #0
@@ -558,7 +558,7 @@ _0222D99A:
ldr r0, [r5, #0x28]
mov r1, #0x26
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -569,7 +569,7 @@ _0222D99A:
mov r1, #0xe
mov r2, #7
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -723,24 +723,24 @@ MOD11_0222DB50: ; 0x0222DB50
mov r1, #0
lsl r2, r2, #8
mov r3, #5
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r1, #1
ldr r0, [r4, #0x28]
lsl r2, r1, #9
mov r3, #5
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #7
ldr r0, [r4, #0x28]
mov r1, #2
lsl r2, r2, #6
mov r3, #5
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #2
ldr r0, [r4, #0x28]
mov r1, #3
lsl r2, r2, #8
mov r3, #5
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r0, #5
bl BgConfig_Alloc
str r0, [r4, #4]
@@ -911,14 +911,14 @@ _0222DC42:
str r0, [r4, #0x18]
ldr r0, [r4, #0x28]
mov r1, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
ldr r1, _0222DF24 ; =0x00002224
mov r2, #0xe0
add r1, r4, r1
bl MIi_CpuCopy16
ldr r0, [r4, #0x28]
mov r1, #2
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
ldr r1, _0222DF28 ; =0x00002304
mov r2, #0xe0
add r1, r4, r1
@@ -942,7 +942,7 @@ _0222DC42:
mov r2, #2
lsl r3, r3, #0x10
lsr r3, r3, #0x10
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r0, #0xc0
str r0, [sp]
add r0, #0x40
@@ -960,7 +960,7 @@ _0222DC42:
lsl r3, r3, #0x10
mov r2, #2
lsr r3, r3, #0x10
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r0, #0
str r0, [sp]
mov r0, #0xdf
@@ -978,7 +978,7 @@ _0222DC42:
add r2, r1, #0
lsl r3, r3, #0x10
lsr r3, r3, #0x10
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r1, #0
mov r0, #0xa0
str r0, [sp]
@@ -987,7 +987,7 @@ _0222DC42:
ldr r0, [r4, #0x28]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r2, #0
str r2, [sp]
mov r0, #0xff
@@ -995,7 +995,7 @@ _0222DC42:
ldr r0, [r4, #0x28]
ldr r3, _0222DF30 ; =0x0000FFFF
mov r1, #1
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r2, #0
str r2, [sp]
mov r0, #0xff
@@ -1003,7 +1003,7 @@ _0222DC42:
ldr r0, [r4, #0x28]
ldr r3, _0222DF30 ; =0x0000FFFF
mov r1, #3
- bl FUN_02003914
+ bl PaletteData_FillPalette
ldr r0, [r4, #0x28]
mov r1, #0
mov r2, #0xb
@@ -1290,16 +1290,16 @@ _0222E10A:
bl FreeToHeap
ldr r0, [r4, #0x28]
mov r1, #0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x28]
mov r1, #1
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x28]
mov r1, #2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x28]
mov r1, #3
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x28]
bl FUN_02002FEC
ldr r0, [r4, #0xc]
@@ -1565,7 +1565,7 @@ _0222E2F0:
mov r1, #7
add r2, r2, r6
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add r0, r7, #0
bl FUN_0200CD64
add r2, r0, #0
@@ -1578,7 +1578,7 @@ _0222E2F0:
ldr r0, [r5, #0x28]
mov r1, #0x26
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -1589,7 +1589,7 @@ _0222E2F0:
mov r1, #0xe
mov r2, #7
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s
index 9b184cfc..1905bce4 100644
--- a/arm9/modules/11/asm/module_11_thumb2.s
+++ b/arm9/modules/11/asm/module_11_thumb2.s
@@ -30,7 +30,7 @@ MOD11_0222F29C: ; 0x0222F29C
mov r1, #0
lsl r2, r2, #8
mov r3, #5
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r1, #0
mov r0, #1
str r1, [sp]
@@ -39,7 +39,7 @@ MOD11_0222F29C: ; 0x0222F29C
ldr r0, [r5, #0xc]
mov r2, #2
add r3, r1, #0
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r0, #5
bl BgConfig_Alloc
str r0, [r5, #4]
@@ -142,7 +142,7 @@ _0222F30E:
mov r1, #0xe
mov r2, #7
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add r0, r4, #0
bl FUN_0200CD64
add r2, r0, #0
@@ -155,7 +155,7 @@ _0222F30E:
ldr r0, [r5, #0xc]
mov r1, #0x26
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r1, #0
mov r0, #1
str r1, [sp]
@@ -164,7 +164,7 @@ _0222F30E:
ldr r0, [r5, #0xc]
add r2, r1, #0
add r3, r1, #0
- bl FUN_02003914
+ bl PaletteData_FillPalette
bl GX_BothDispOn
mov r0, #0x10
mov r1, #1
@@ -805,7 +805,7 @@ MOD11_0222F93C: ; 0x0222F93C
bl FUN_0200E3A0
ldr r0, [r4, #0xc]
mov r1, #0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0xc]
bl FUN_02002FEC
ldr r0, [r4, #8]
@@ -3859,7 +3859,7 @@ MOD11_02230FCC: ; 0x02230FCC
ldr r5, [r4, r0]
ldr r0, [r4, #0x28]
mov r1, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
mov r2, #2
add r1, r5, #0
lsl r2, r2, #8
@@ -23844,7 +23844,7 @@ _0223AC50:
add r0, r7, #0
mov r1, #0x26
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #7
str r0, [sp]
mov r0, #0xe
@@ -73745,7 +73745,7 @@ _0225319A:
bne _02253286
add r0, r5, #0
mov r1, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r7, r0, #0
ldr r0, [r4]
bl MOD11_02231244
@@ -73758,7 +73758,7 @@ _0225319A:
bne _022531DC
add r0, r5, #0
mov r1, #2
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r7, r0, #0
ldr r0, [r4]
bl MOD11_02231250
@@ -73773,7 +73773,7 @@ _022531DC:
tst r0, r1
beq _02253200
add r0, r5, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r7, r0, #0
ldr r0, [r4]
bl MOD11_02231250
@@ -73789,7 +73789,7 @@ _02253200:
beq _02253226
add r0, r5, #0
mov r1, #2
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r7, r0, #0
ldr r0, [r4]
bl MOD11_02231250
@@ -73800,7 +73800,7 @@ _02253200:
_02253226:
add r0, r5, #0
mov r1, #2
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r7, r0, #0
ldr r0, [r4]
bl MOD11_02231250
@@ -73897,7 +73897,7 @@ _022532E4:
_022532F6:
add r0, r5, #0
mov r1, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r6, r0, #0
ldr r0, [r4]
bl MOD11_02231244
@@ -73910,7 +73910,7 @@ _022532F6:
bne _02253332
add r0, r5, #0
mov r1, #2
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r6, r0, #0
ldr r0, [r4]
bl MOD11_02231250
@@ -73925,7 +73925,7 @@ _02253332:
tst r0, r1
beq _02253356
add r0, r5, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r6, r0, #0
ldr r0, [r4]
bl MOD11_02231250
@@ -73941,7 +73941,7 @@ _02253356:
beq _0225337C
add r0, r5, #0
mov r1, #2
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r6, r0, #0
ldr r0, [r4]
bl MOD11_02231250
@@ -73952,7 +73952,7 @@ _02253356:
_0225337C:
add r0, r5, #0
mov r1, #2
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r6, r0, #0
ldr r0, [r4]
bl MOD11_02231250
@@ -83966,7 +83966,7 @@ _022580F2:
add r2, #0xf
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_02258112:
@@ -83995,7 +83995,7 @@ _0225812A:
add r2, #0xf
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
_0225814A:
@@ -84214,7 +84214,7 @@ _02258288:
add r2, r2, r3
ldrh r2, [r5, r2]
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #1
str r0, [sp]
ldr r0, [sp, #0x20]
@@ -84523,10 +84523,10 @@ _0225854E:
mov r1, #7
mov r2, #0xc3
mov r3, #5
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r0, [sp, #0x10]
mov r1, #1
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
mov r2, #2
ldr r1, [r6, #0x58]
lsl r2, r2, #8
@@ -84881,7 +84881,7 @@ _02258874:
ldr r1, [r7, #0x58]
mov r2, #1
mov r3, #0
- bl FUN_02003054
+ bl PaletteData_LoadPalette
ldr r6, [sp, #0x2c]
mov r4, #0
_0225889A:
@@ -89160,7 +89160,7 @@ _0225AB62:
add r0, r6, #0
mov r2, #1
lsr r3, r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
add r4, r4, #1
_0225AB96:
cmp r4, #4
@@ -89215,7 +89215,7 @@ MOD11_0225ABA4: ; 0x0225ABA4
add r0, r7, #0
mov r2, #1
lsr r3, r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
add r0, r6, #0
mov r1, #4
bl ScheduleBgTilemapBufferTransfer
@@ -90735,7 +90735,7 @@ MOD11_0225B794: ; 0x0225B794
ldr r0, _0225B81C ; =0x00007FFF
str r0, [sp, #4]
add r0, r4, #0
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
ldr r1, _0225B820 ; =0x000006A8
_0225B7C8:
ldrb r0, [r5, r1]
@@ -90805,7 +90805,7 @@ MOD11_0225B824: ; 0x0225B824
bne _0225B8A8
add r0, r4, #0
mov r1, #1
- bl FUN_02003204
+ bl PaletteData_GetFadedBuf
add r4, r0, #0
ldr r0, _0225B8AC ; =gMain + 0x40
ldrh r0, [r0, #0x22]
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index e86aa9ee..c035be6d 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -76,24 +76,24 @@ MOD12_0222D5C0: ; 0x0222D5C0
mov r1, #0
lsl r2, r2, #8
mov r3, #0x15
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r1, #1
ldr r0, [r4, #0x5c]
lsl r2, r1, #9
mov r3, #0x15
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #7
ldr r0, [r4, #0x5c]
mov r1, #2
lsl r2, r2, #6
mov r3, #0x15
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #2
ldr r0, [r4, #0x5c]
mov r1, #3
lsl r2, r2, #8
mov r3, #0x15
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r0, #0x15
bl BgConfig_Alloc
str r0, [r4, #0x30]
@@ -483,16 +483,16 @@ MOD12_0222D9B0: ; 0x0222D9B0
bl FUN_020117BC
ldr r0, [r4, #0x5c]
mov r1, #0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x5c]
mov r1, #1
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x5c]
mov r1, #2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x5c]
mov r1, #3
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x5c]
bl FUN_02002FEC
ldr r0, [r4, #0x58]
@@ -1164,7 +1164,7 @@ MOD12_0222DFC4: ; 0x0222DFC4
mov r1, #0x2d
mov r2, #0x1d
mov r3, #0x15
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x15
mov r1, #0x20
bl AllocFromHeap
@@ -1175,11 +1175,11 @@ MOD12_0222DFC4: ; 0x0222DFC4
str r0, [sp, #0x10]
ldr r0, [r5, #0x5c]
mov r1, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
add r4, r0, #0
ldr r0, [r5, #0x5c]
mov r1, #0
- bl FUN_02003204
+ bl PaletteData_GetFadedBuf
str r0, [sp, #0x14]
ldr r0, _0222E0EC ; =MOD12_022451D0
add r1, r7, #0
@@ -3211,24 +3211,24 @@ MOD12_0222EF04: ; 0x0222EF04
mov r1, #0
lsl r2, r2, #8
mov r3, #0x16
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r1, #1
ldr r0, [r5, #0x50]
lsl r2, r1, #9
mov r3, #0x16
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #7
ldr r0, [r5, #0x50]
mov r1, #2
lsl r2, r2, #6
mov r3, #0x16
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r2, #2
ldr r0, [r5, #0x50]
mov r1, #3
lsl r2, r2, #8
mov r3, #0x16
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r0, #0x16
bl BgConfig_Alloc
str r0, [r5, #0x30]
@@ -3311,7 +3311,7 @@ MOD12_0222EF04: ; 0x0222EF04
ldr r0, [r5, #0x50]
ldr r3, _0222F17C ; =0x00007FFF
add r2, r1, #0
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r1, #1
add r0, r1, #0
str r1, [sp]
@@ -3320,7 +3320,7 @@ MOD12_0222EF04: ; 0x0222EF04
ldr r0, [r5, #0x50]
ldr r3, _0222F17C ; =0x00007FFF
mov r2, #0
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r2, #0
str r2, [sp]
mov r0, #0xe0
@@ -3328,7 +3328,7 @@ MOD12_0222EF04: ; 0x0222EF04
ldr r0, [r5, #0x50]
ldr r3, _0222F17C ; =0x00007FFF
mov r1, #2
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r2, #0
mov r0, #1
str r2, [sp]
@@ -3337,7 +3337,7 @@ MOD12_0222EF04: ; 0x0222EF04
ldr r0, [r5, #0x50]
ldr r3, _0222F17C ; =0x00007FFF
mov r1, #3
- bl FUN_02003914
+ bl PaletteData_FillPalette
bl FUN_02033E74
mov r0, #6
str r0, [sp]
@@ -3654,16 +3654,16 @@ _0222F3AE:
bl FUN_02002CF8
ldr r0, [r4, #0x50]
mov r1, #0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x50]
mov r1, #1
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x50]
mov r1, #2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x50]
mov r1, #3
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x50]
bl FUN_02002FEC
ldr r0, [r4, #0x48]
@@ -4209,7 +4209,7 @@ MOD12_0222F834: ; 0x0222F834
mov r1, #0x2d
mov r2, #0x22
mov r3, #0x16
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -4220,7 +4220,7 @@ MOD12_0222F834: ; 0x0222F834
mov r1, #0x2d
mov r2, #0x23
mov r3, #0x16
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r1, [r5]
ldr r0, _0222F930 ; =0x00001988
ldr r0, [r1, r0]
@@ -4248,7 +4248,7 @@ MOD12_0222F834: ; 0x0222F834
ldr r0, [r5, #0x50]
mov r1, #0x26
mov r3, #0x16
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -4283,7 +4283,7 @@ MOD12_0222F834: ; 0x0222F834
mov r1, #0x2d
mov r2, #0x24
mov r3, #0x16
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -4332,7 +4332,7 @@ MOD12_0222F938: ; 0x0222F938
mov r1, #0x2d
mov r2, #0x21
mov r3, #0x16
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0x10
pop {r4, pc}
@@ -5058,14 +5058,14 @@ MOD12_0222FE4C: ; 0x0222FE4C
mov r1, #0
lsl r2, r2, #8
mov r3, #0x17
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r5, #0
add r0, #0xa4
mov r1, #1
ldr r0, [r0]
lsl r2, r1, #9
mov r3, #0x17
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r5, #0
add r0, #0xa4
mov r2, #7
@@ -5073,7 +5073,7 @@ MOD12_0222FE4C: ; 0x0222FE4C
mov r1, #2
lsl r2, r2, #6
mov r3, #0x17
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r5, #0
add r0, #0xa4
mov r2, #2
@@ -5081,7 +5081,7 @@ MOD12_0222FE4C: ; 0x0222FE4C
mov r1, #3
lsl r2, r2, #8
mov r3, #0x17
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r1, #2
mov r0, #0x17
lsl r1, r1, #8
@@ -5484,22 +5484,22 @@ _02230296:
add r0, #0xa4
ldr r0, [r0]
mov r1, #0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0
add r0, #0xa4
ldr r0, [r0]
mov r1, #1
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0
add r0, #0xa4
ldr r0, [r0]
mov r1, #2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0
add r0, #0xa4
ldr r0, [r0]
mov r1, #3
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0
add r0, #0xa4
ldr r0, [r0]
@@ -5564,7 +5564,7 @@ MOD12_022303C0: ; 0x022303C0
str r2, [r4, r0]
mov r0, #7
str r1, [r3, #4]
- bl FUN_02004F64
+ bl GF_SndPlayerGetTick
ldr r1, _02230498 ; =0x00000AF8
ldr r1, [r4, r1]
mul r0, r1
@@ -5670,7 +5670,7 @@ MOD12_022304B0: ; 0x022304B0
add r0, #0xa4
ldr r0, [r0]
mov r1, #0
- bl FUN_02003204
+ bl PaletteData_GetFadedBuf
add r4, r0, #0
mov r2, #2
ldr r0, [r5]
@@ -5689,7 +5689,7 @@ MOD12_022304B0: ; 0x022304B0
asr r3, r3, #8
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02003A30
+ bl BlendPalettes
ldrh r3, [r5, #0xa]
ldrh r1, [r5, #8]
cmp r1, r3
@@ -6207,7 +6207,7 @@ MOD12_022308F0: ; 0x022308F0
mov r1, #0x2d
mov r2, #0x1f
mov r3, #0x17
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -6220,7 +6220,7 @@ MOD12_022308F0: ; 0x022308F0
mov r1, #0x2d
mov r2, #0x23
mov r3, #0x17
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r1, [r5]
ldr r0, _022309C4 ; =0x00001988
ldr r0, [r1, r0]
@@ -6250,14 +6250,14 @@ MOD12_022308F0: ; 0x022308F0
ldr r0, [r0]
mov r1, #0x26
mov r3, #0x17
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add r0, r5, #0
bl MOD12_0223E734
add r0, r5, #0
add r0, #0xa4
ldr r0, [r0]
mov r1, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
ldr r1, _022309C8 ; =0x0000110C
mov r2, #2
ldr r1, [r5, r1]
@@ -8479,10 +8479,10 @@ _02231A98:
add r0, r6, #0
mov r1, #0x2d
mov r3, #0x15
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add r0, r6, #0
mov r1, #1
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
lsl r1, r5, #2
add r1, r4, r1
ldr r1, [r1, #0x34]
@@ -8607,7 +8607,7 @@ _02231B90:
add r1, r7, r1
ldr r1, [r1, #0x34]
mov r3, #0
- bl FUN_02003054
+ bl PaletteData_LoadPalette
ldr r6, [sp, #0x14]
ldr r4, [sp, #0x10]
mov r5, #0
@@ -8910,7 +8910,7 @@ MOD12_02231D5C: ; 0x02231D5C
str r0, [sp, #0xc]
ldr r0, [r2, #0x50]
mov r2, #0x25
- bl FUN_02003084
+ bl PaletteData_LoadFromNarc
add sp, #0x1c
pop {r3, r4, r5, r6, pc}
nop
@@ -9143,7 +9143,7 @@ _02231FC0:
ldr r0, [r0, #0x50]
mov r2, #1
lsr r3, r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
ldr r0, _022320A0 ; =0x000002E1
ldrb r0, [r6, r0]
cmp r0, #0xff
@@ -9927,7 +9927,7 @@ MOD12_022325AC: ; 0x022325AC
ldr r1, [r7, r1]
mov r2, #1
lsr r3, r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_022325EC:
@@ -9953,7 +9953,7 @@ _022325EC:
ldr r0, [r0, #0x50]
mov r2, #1
lsr r3, r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -10644,7 +10644,7 @@ _02232B46:
mov r3, #0x10
lsl r2, r2, #0x14
lsr r2, r2, #0x10
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
cmp r4, #1
bne _02232B70
add r0, r5, #0
@@ -12129,7 +12129,7 @@ MOD12_02233648: ; 0x02233648
add r2, r2, #1
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
mov r1, #8
ldrsh r2, [r4, r1]
cmp r2, #0
@@ -15894,7 +15894,7 @@ _02235402:
str r0, [sp, #4]
ldr r0, [r4]
ldr r0, [r0, #0x5c]
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
add sp, #0x10
pop {r3, r4, r5, pc}
_0223541C:
@@ -15922,7 +15922,7 @@ _02235438:
str r0, [sp, #4]
ldr r0, [r4]
ldr r0, [r0, #0x5c]
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
add sp, #0x10
pop {r3, r4, r5, pc}
_02235452:
@@ -25922,14 +25922,14 @@ _02239E14:
ldr r2, _02239E8C ; =0x00001FFF
ldr r0, [r0, #0x50]
add r3, r1, #0
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
mov r3, #0
str r3, [sp]
ldr r0, [r4]
ldr r2, _02239E90 ; =0x00003FFF
ldr r0, [r0, #0x50]
mov r1, #2
- bl FUN_02003A64
+ bl BlendPalettesUnfaded
ldr r0, _02239E94 ; =0x000006EC
bl PlaySE
ldrb r0, [r4, #0x10]
@@ -28300,7 +28300,7 @@ _0223B06C:
add r2, r1, #0
ldr r0, [r0, #0x50]
add r3, r1, #0
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r2, #0
str r2, [sp]
mov r0, #0xe0
@@ -28309,7 +28309,7 @@ _0223B06C:
mov r1, #2
ldr r0, [r0, #0x50]
add r3, r2, #0
- bl FUN_02003914
+ bl PaletteData_FillPalette
ldrb r0, [r4, #0x10]
add sp, #8
add r0, r0, #1
@@ -29079,7 +29079,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
mov r1, #0x1e
mov r2, #0x17
lsl r3, r3, #8
- bl FUN_0200317C
+ bl CopyPaletteFromNarc
ldr r0, [r4, #4]
mov r2, #0x17
ldr r1, [r0]
@@ -29096,7 +29096,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
add r0, #0x40
str r0, [sp, #4]
mov r0, #0x2d
- bl FUN_0200317C
+ bl CopyPaletteFromNarc
mov r0, #0
mov r1, #0x20
add r4, #0xf0
@@ -29106,7 +29106,7 @@ MOD12_0223B4F8: ; 0x0223B4F8
str r0, [sp, #4]
mov r0, #0x2d
lsl r3, r1, #4
- bl FUN_0200317C
+ bl CopyPaletteFromNarc
add sp, #0x10
pop {r3, r4, r5, pc}
.align 2, 0
@@ -29230,7 +29230,7 @@ _0223B7D6:
ldr r1, [r1]
mov r2, #1
mov r3, #0
- bl FUN_02003054
+ bl PaletteData_LoadPalette
_0223B7F2:
ldr r4, [sp, #0x10]
mov r5, #0
@@ -30553,7 +30553,7 @@ MOD12_0223C1F4: ; 0x0223C1F4
ldr r0, [r0]
mov r2, #0
mov r3, #0x40
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
add sp, #8
pop {r3, pc}
@@ -35423,7 +35423,7 @@ MOD12_0223E750: ; 0x0223E750
add r5, r1, #0
ldr r0, [r0]
mov r1, #0
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
ldr r3, _0223E77C ; =MOD12_0224620C
lsl r5, r5, #2
ldrh r1, [r3, r5]
@@ -35435,7 +35435,7 @@ MOD12_0223E750: ; 0x0223E750
lsl r3, r3, #0x18
ldr r1, [r4, r1]
lsr r3, r3, #0x18
- bl FUN_02003A30
+ bl BlendPalettes
pop {r3, r4, r5, pc}
.align 2, 0
_0223E77C: .word MOD12_0224620C
@@ -35646,7 +35646,7 @@ MOD12_0223E8EC: ; 0x0223E8EC
mov r1, #0
add r0, #0xa4
ldr r0, [r0]
- bl FUN_020031FC
+ bl PaletteData_GetUnfadedBuf
ldrb r1, [r4, #0xa]
lsl r3, r1, #1
ldr r1, _0223E94C ; =0x00007FFF
@@ -35661,7 +35661,7 @@ MOD12_0223E8EC: ; 0x0223E8EC
asr r3, r3, #8
lsl r3, r3, #0x18
lsr r3, r3, #0x18
- bl FUN_02003974
+ bl BlendPalette
ldrh r1, [r4, #8]
cmp r1, #0
bne _0223E932
@@ -36309,7 +36309,7 @@ _0223EE30:
add r0, #8
mov r2, #1
lsr r3, r3, #0x18
- bl FUN_02003974
+ bl BlendPalette
add r1, sp, #4
ldrh r1, [r1]
ldr r0, [r5]
@@ -41150,14 +41150,14 @@ MOD12_02241210: ; 0x02241210
mov r1, #0
lsl r2, r2, #8
mov r3, #0x18
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r5, #0
add r0, #0xd0
mov r1, #1
ldr r0, [r0]
lsl r2, r1, #9
mov r3, #0x18
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r5, #0
add r0, #0xd0
mov r2, #7
@@ -41165,7 +41165,7 @@ MOD12_02241210: ; 0x02241210
mov r1, #2
lsl r2, r2, #6
mov r3, #0x18
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
add r0, r5, #0
add r0, #0xd0
mov r2, #2
@@ -41173,7 +41173,7 @@ MOD12_02241210: ; 0x02241210
mov r1, #3
lsl r2, r2, #8
mov r3, #0x18
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r0, #0x18
bl BgConfig_Alloc
str r0, [r5, #0x30]
@@ -41519,22 +41519,22 @@ _022415D4:
add r0, #0xd0
ldr r0, [r0]
mov r1, #0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0
add r0, #0xd0
ldr r0, [r0]
mov r1, #1
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0
add r0, #0xd0
ldr r0, [r0]
mov r1, #2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0
add r0, #0xd0
ldr r0, [r0]
mov r1, #3
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
add r0, r4, #0
add r0, #0xd0
ldr r0, [r0]
@@ -42193,7 +42193,7 @@ MOD12_02241BA0: ; 0x02241BA0
mov r1, #0x2d
mov r2, #0x21
mov r3, #0x18
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -43656,7 +43656,7 @@ MOD12_022426BC: ; 0x022426BC
mov r1, #0x2d
mov r2, #0x22
mov r3, #0x18
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -43669,7 +43669,7 @@ MOD12_022426BC: ; 0x022426BC
mov r1, #0x2d
mov r2, #0x23
mov r3, #0x18
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r1, [r5]
ldr r0, _02242784 ; =0x00001988
ldr r0, [r1, r0]
@@ -43699,7 +43699,7 @@ MOD12_022426BC: ; 0x022426BC
ldr r0, [r0]
mov r1, #0x26
mov r3, #0x18
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r0, [r5, #0x30]
mov r1, #2
bl BgClearTilemapBufferAndCommit
@@ -43826,7 +43826,7 @@ MOD12_02242804: ; 0x02242804
mov r1, #0x2d
mov r2, #0x26
mov r3, #0x18
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -43839,7 +43839,7 @@ MOD12_02242804: ; 0x02242804
mov r1, #0x2d
mov r2, #0x23
mov r3, #0x18
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
ldr r1, [r6]
ldr r0, _022429D0 ; =0x00001988
ldr r0, [r1, r0]
@@ -43869,7 +43869,7 @@ MOD12_02242804: ; 0x02242804
ldr r0, [r0]
mov r1, #0x26
mov r3, #0x18
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0xc
mov r1, #0x18
bl String_ctor
@@ -44010,7 +44010,7 @@ MOD12_022429E0: ; 0x022429E0
ldr r0, [r0]
mov r1, #1
mov r2, #2
- bl FUN_02003914
+ bl PaletteData_FillPalette
mov r3, #0
mov r0, #1
str r3, [sp]
@@ -44020,7 +44020,7 @@ MOD12_022429E0: ; 0x022429E0
ldr r0, [r4]
mov r1, #3
mov r2, #2
- bl FUN_02003914
+ bl PaletteData_FillPalette
add sp, #8
pop {r4, pc}
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index 480aa929..16b3c00d 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -71,7 +71,7 @@ _021D7546:
str r0, [r4]
mov r0, #1
mov r1, #0x2a
- bl FUN_020051EC
+ bl GF_SndPlayerSetPlayerVolume
mov r0, #1
add sp, #0x20
pop {r3, r4, r5, pc}
@@ -171,7 +171,7 @@ _021D7630:
bl DestroyHeap
mov r0, #1
mov r1, #0x7f
- bl FUN_020051EC
+ bl GF_SndPlayerSetPlayerVolume
mov r0, #1
pop {r4, pc}
thumb_func_end MOD16_021D7614
@@ -44271,7 +44271,7 @@ _021EBCD4:
cmp r0, #1
bne _021EBCE6
mov r0, #0
- bl FUN_02004CA4
+ bl GF_SndCaptureStopReverb
_021EBCE6:
ldr r0, [r4, #0x50]
cmp r0, #2
@@ -44291,13 +44291,13 @@ _021EBD02:
ldr r0, [r4, #0x50]
cmp r0, #2
bne _021EBD0C
- bl FUN_02004CFC
+ bl GF_SndCaptureStopEffect
_021EBD0C:
ldr r0, [r4, #0x50]
cmp r0, #1
beq _021EBD1C
mov r0, #0
- bl FUN_02004C80
+ bl GF_SndCaptureStartReverb
mov r0, #1
str r0, [r4, #0x50]
_021EBD1C:
@@ -44316,7 +44316,7 @@ _021EBD26:
sub r0, r0, #1
_021EBD34:
mov r1, #0
- bl FUN_02004CAC
+ bl GF_SndCaptureSetReverbVolume
pop {r4, pc}
thumb_func_end MOD16_021EBCC4
@@ -44710,12 +44710,12 @@ MOD16_021EC010: ; 0x021EC010
cmp r0, #1
bne _021EC020
mov r0, #0
- bl FUN_02004CA4
+ bl GF_SndCaptureStopReverb
_021EC020:
ldr r0, [r4, #0x50]
cmp r0, #2
bne _021EC02A
- bl FUN_02004CFC
+ bl GF_SndCaptureStopEffect
_021EC02A:
mov r0, #0
str r0, [r4, #0x50]
@@ -44855,7 +44855,7 @@ MOD16_021EC0E8: ; 0x021EC0E8
ldr r1, _021EC10C ; =0x0000FFFF
ldr r2, [r4, #0x40]
mov r0, #1
- bl FUN_02004D4C
+ bl GF_SndPlayerSetTrackPan
ldr r0, [r4, #0x44]
bl MOD16_021EC110
_021EC108:
@@ -44866,13 +44866,13 @@ _021EC10C: .word 0x0000FFFF
thumb_func_start MOD16_021EC110
MOD16_021EC110: ; 0x021EC110
- ldr r3, _021EC11C ; =FUN_02004828
+ ldr r3, _021EC11C ; =GF_SndPlayerMoveVolume
add r1, r0, #0
mov r0, #8
mov r2, #0
bx r3
nop
-_021EC11C: .word FUN_02004828
+_021EC11C: .word GF_SndPlayerMoveVolume
thumb_func_end MOD16_021EC110
thumb_func_start MOD16_021EC120
@@ -44988,12 +44988,12 @@ MOD16_021EC1DC: ; 0x021EC1DC
ldr r1, _021EC1F8 ; =0x0000FFFF
mov r0, #1
add r2, r4, #0
- bl FUN_02004D20
+ bl GF_SndPlayerSetTrackPitch
add r4, #0x14
ldr r1, _021EC1F8 ; =0x0000FFFF
mov r0, #8
add r2, r4, #0
- bl FUN_02004D20
+ bl GF_SndPlayerSetTrackPitch
pop {r4, pc}
.align 2, 0
_021EC1F8: .word 0x0000FFFF
@@ -49734,7 +49734,7 @@ MOD16_021EE5D0: ; 0x021EE5D0
ldr r1, [r1]
mov r2, #0x30
add r3, r7, #0
- bl FUN_02003974
+ bl BlendPalette
ldr r0, [sp, #4]
mov r1, #1
bl NNS_G2dGetImagePaletteLocation
@@ -49759,7 +49759,7 @@ MOD16_021EE5D0: ; 0x021EE5D0
ldr r1, [r1]
mov r2, #0x50
add r3, r7, #0
- bl FUN_02003974
+ bl BlendPalette
ldr r0, [sp, #8]
mov r1, #1
bl NNS_G2dGetImagePaletteLocation
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index e75f620e..f30d7e23 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -405,7 +405,7 @@ MOD18_02239994: ; 0x02239994
ldr r0, [r0]
ldr r0, [r0]
ldr r0, [r0, #0x28]
- bl FUN_020344FC
+ bl MapMatrix_GetWidth
sub r0, r0, #2
lsl r0, r0, #0x15
lsr r6, r0, #0x10
@@ -413,7 +413,7 @@ MOD18_02239994: ; 0x02239994
ldr r0, [r0]
ldr r0, [r0]
ldr r0, [r0, #0x28]
- bl FUN_0203450C
+ bl MapMatrix_GetHeight
sub r0, r0, #2
lsl r0, r0, #0x15
lsr r4, r0, #0x10
@@ -17263,7 +17263,7 @@ MOD18_02241AD0: ; 0x02241AD0
ldr r2, _02241D24 ; =MOD18_02241AB4
mov r3, #0
mov r0, #2
- bl FUN_02004928
+ bl GF_MIC_DoSamplingAsync
ldr r0, _02241D28 ; =0x022513A0
ldr r2, [r0, #4]
ldr r0, _02241D2C ; =0x00000B3B
@@ -20447,7 +20447,7 @@ _02243402:
ldr r2, _02243530 ; =MOD18_02241AB4
mov r0, #2
mov r3, #0
- bl FUN_02004928
+ bl GF_MIC_DoSamplingAsync
ldr r0, [r5, #0x14]
add r0, r0, #1
str r0, [r5, #0x14]
diff --git a/arm9/modules/19/src/module_19.c b/arm9/modules/19/src/module_19.c
index 1fc6197e..b8426d9f 100644
--- a/arm9/modules/19/src/module_19.c
+++ b/arm9/modules/19/src/module_19.c
@@ -1,47 +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;
-}
+#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/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c
index 1c91afde..2b7e36ec 100644
--- a/arm9/modules/21/src/mod21_02254854.c
+++ b/arm9/modules/21/src/mod21_02254854.c
@@ -29,7 +29,7 @@ THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param
UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854));
if (alloced != NULL)
{
- if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, struct TextPrinter *))MOD21_02254930, (struct TextPrinter *)alloced, 1))
+ if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, (void *)alloced, 1))
{
*param0 = alloced;
return TRUE;
diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c
index 45b11873..681186f2 100644
--- a/arm9/modules/21/src/mod21_02254A6C.c
+++ b/arm9/modules/21/src/mod21_02254A6C.c
@@ -1,6 +1,8 @@
+#include "mod21_02254A6C.h"
+
#include "global.h"
#include "heap.h"
-#include "mod21_02254A6C.h"
+#include "registers.h"
#include "MI_memory.h"
extern void MOD20_022536F4(u32 *param0, u32 param1);
diff --git a/arm9/modules/26/asm/module_26.s b/arm9/modules/26/asm/mod26_02254854.s
index 251ea218..8f6576b7 100644
--- a/arm9/modules/26/asm/module_26.s
+++ b/arm9/modules/26/asm/mod26_02254854.s
@@ -493,289 +493,6 @@ _02254BCE:
.align 2, 0
thumb_func_end MOD26_02254B98
- thumb_func_start MOD26_02254BD4
-MOD26_02254BD4: ; 0x02254BD4
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r6, r1, #0
- mov r0, #8
- mov r1, #0x30
- bl AllocFromHeap
- add r4, r0, #0
- beq _02254C00
- add r0, #8
- mov r1, #8
- bl MOD20_022536F4
- str r6, [r4]
- bl MOD20_02252D34
- str r0, [r4, #4]
- cmp r0, #0
- beq _02254C00
- str r4, [r5]
- mov r0, #1
- pop {r4, r5, r6, pc}
-_02254C00:
- mov r0, #0
- pop {r4, r5, r6, pc}
- thumb_func_end MOD26_02254BD4
-
- thumb_func_start MOD26_02254C04
-MOD26_02254C04: ; 0x02254C04
- push {r3, lr}
- cmp r0, #0
- beq _02254C0E
- bl FreeToHeap
-_02254C0E:
- pop {r3, pc}
- thumb_func_end MOD26_02254C04
-
- thumb_func_start MOD26_02254C10
-MOD26_02254C10: ; 0x02254C10
- push {lr}
- sub sp, #0xc
- add r2, r0, #0
- add r0, #8
- str r0, [sp]
- mov r0, #2
- str r0, [sp, #4]
- mov r0, #8
- str r0, [sp, #8]
- ldr r0, _02254C30 ; =MOD26_02254FF0
- ldr r3, [r2]
- bl MOD20_022537E0
- add sp, #0xc
- pop {pc}
- nop
-_02254C30: .word MOD26_02254FF0
- thumb_func_end MOD26_02254C10
-
- thumb_func_start MOD26_02254C34
-MOD26_02254C34: ; 0x02254C34
- ldr r3, _02254C3C ; =MOD20_02253794
- add r0, #8
- bx r3
- nop
-_02254C3C: .word MOD20_02253794
- thumb_func_end MOD26_02254C34
-
- thumb_func_start MOD26_02254C40
-MOD26_02254C40: ; 0x02254C40
- ldr r3, _02254C48 ; =MOD20_022537B8
- add r0, #8
- bx r3
- nop
-_02254C48: .word MOD20_022537B8
- thumb_func_end MOD26_02254C40
-
- thumb_func_start MOD26_02254C4C
-MOD26_02254C4C: ; 0x02254C4C
- push {r4, lr}
- add r4, r0, #0
- bl MOD20_022538A0
- add r0, #8
- add r1, r4, #0
- bl MOD20_02253888
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD26_02254C4C
-
- thumb_func_start MOD26_02254C60
-MOD26_02254C60: ; 0x02254C60
- push {r3, r4, r5, lr}
- add r4, r1, #0
- add r0, r4, #0
- bl MOD20_022538A0
- add r5, r0, #0
- ldr r0, [r5, #4]
- ldr r2, _02254CB8 ; =MOD26_02254FD4
- mov r1, #6
- mov r3, #0
- bl InitBgFromTemplate
- ldr r0, [r5, #4]
- bl MOD26_02254CC4
- ldr r0, [r5, #4]
- ldr r1, [r5]
- bl MOD26_02254DAC
- mov r0, #0
- add r1, r0, #0
- bl MOD20_02252D7C
- ldr r0, [r5, #4]
- mov r1, #6
- bl BgCommitTilemapBufferToVram
- ldr r1, _02254CBC ; =0x04001000
- ldr r0, _02254CC0 ; =0xFFFFE0FF
- ldr r3, [r1]
- ldr r2, [r1]
- str r3, [sp]
- and r0, r2
- lsl r2, r3, #0x13
- lsr r3, r2, #0x1b
- mov r2, #4
- orr r2, r3
- lsl r2, r2, #8
- orr r0, r2
- str r0, [r1]
- add r0, r4, #0
- bl MOD26_02254C4C
- pop {r3, r4, r5, pc}
- .align 2, 0
-_02254CB8: .word MOD26_02254FD4
-_02254CBC: .word 0x04001000
-_02254CC0: .word 0xFFFFE0FF
- thumb_func_end MOD26_02254C60
-
- thumb_func_start MOD26_02254CC4
-MOD26_02254CC4: ; 0x02254CC4
- push {r3, r4, r5, r6, r7, lr}
- sub sp, #0x20
- str r0, [sp, #4]
- mov r0, #8
- lsl r1, r0, #6
- bl AllocFromHeap
- str r0, [sp, #0x1c]
- cmp r0, #0
- beq _02254D68
- mov r0, #0
- str r0, [sp, #0x18]
- str r0, [sp, #0x14]
- str r0, [sp, #0x10]
- str r0, [sp, #0xc]
- str r0, [sp, #8]
- add r7, r0, #0
- add r6, r0, #0
- add r4, r0, #0
- add r5, r0, #0
-_02254CEC:
- ldr r1, [sp, #0xc]
- ldr r0, [sp, #0x10]
- ldr r2, [sp, #0x1c]
- orr r1, r0
- ldr r0, [sp, #8]
- orr r0, r1
- orr r0, r7
- orr r0, r6
- orr r0, r4
- add r1, r5, #0
- orr r1, r0
- ldr r0, [sp, #0x18]
- orr r0, r1
- ldr r1, [sp, #0x14]
- add r1, r2, r1
- mov r2, #0x20
- bl MIi_CpuClearFast
- ldr r0, [sp, #0x14]
- ldr r1, [sp, #0x10]
- add r0, #0x20
- str r0, [sp, #0x14]
- mov r0, #1
- lsl r0, r0, #0x18
- add r0, r1, r0
- str r0, [sp, #0x10]
- mov r0, #1
- ldr r1, [sp, #0xc]
- lsl r0, r0, #0x1c
- add r0, r1, r0
- str r0, [sp, #0xc]
- mov r0, #1
- ldr r1, [sp, #8]
- lsl r0, r0, #0x14
- add r0, r1, r0
- str r0, [sp, #8]
- mov r0, #1
- lsl r0, r0, #0x10
- add r7, r7, r0
- lsr r0, r0, #4
- add r6, r6, r0
- mov r0, #1
- lsl r0, r0, #8
- add r4, r4, r0
- ldr r0, [sp, #0x18]
- add r5, #0x10
- add r0, r0, #1
- str r0, [sp, #0x18]
- cmp r0, #0x10
- blt _02254CEC
- mov r0, #0
- str r0, [sp]
- mov r3, #2
- ldr r0, [sp, #4]
- ldr r2, [sp, #0x1c]
- mov r1, #6
- lsl r3, r3, #8
- bl BG_LoadCharTilesData
- ldr r0, [sp, #0x1c]
- bl FreeToHeap
-_02254D68:
- add sp, #0x20
- pop {r3, r4, r5, r6, r7, pc}
- thumb_func_end MOD26_02254CC4
-
- thumb_func_start MOD26_02254D6C
-MOD26_02254D6C: ; 0x02254D6C
- push {r3, r4, r5, lr}
- add r5, r1, #0
- add r0, r5, #0
- bl MOD20_022538A0
- add r4, r0, #0
- ldr r0, [r4, #4]
- ldr r1, [r4]
- bl MOD26_02254DAC
- ldr r0, [r4, #4]
- mov r1, #6
- bl BgCommitTilemapBufferToVram
- add r0, r5, #0
- bl MOD26_02254C4C
- pop {r3, r4, r5, pc}
- thumb_func_end MOD26_02254D6C
-
- thumb_func_start MOD26_02254D90
-MOD26_02254D90: ; 0x02254D90
- push {r4, lr}
- add r4, r1, #0
- add r0, r4, #0
- bl MOD20_022538A0
- ldr r0, [r0, #4]
- mov r1, #6
- bl FreeBgTilemapBuffer
- add r0, r4, #0
- bl MOD26_02254C4C
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD26_02254D90
-
- thumb_func_start MOD26_02254DAC
-MOD26_02254DAC: ; 0x02254DAC
- push {r3, r4, r5, r6, r7, lr}
- add r4, r1, #0
- mov r1, #6
- bl GetBgTilemapBuffer
- mov r5, #0
- ldr r1, _02254DE0 ; =MOD26_02254FD0
- add r0, #0x84
- add r2, r5, #0
-_02254DBE:
- add r3, r2, #0
- add r6, r0, #0
-_02254DC2:
- ldrb r7, [r4, r3]
- add r3, r3, #1
- add r7, r1, r7
- sub r7, r7, #1
- ldrb r7, [r7]
- strh r7, [r6]
- add r6, r6, #2
- cmp r3, #0x18
- blt _02254DC2
- add r5, r5, #1
- add r0, #0x40
- add r4, #0x18
- cmp r5, #0x14
- blt _02254DBE
- pop {r3, r4, r5, r6, r7, pc}
- .align 2, 0
-_02254DE0: .word MOD26_02254FD0
- thumb_func_end MOD26_02254DAC
-
.section .rodata
.global MOD26_02254DE4
@@ -804,19 +521,3 @@ MOD26_02254DF0: ; 0x02254DF0
.byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-
- .global MOD26_02254FD0
-MOD26_02254FD0: ; 0x02254FD0
- .byte 0x04, 0x0F, 0x08, 0x01
-
- .global MOD26_02254FD4
-MOD26_02254FD4: ; 0x02254FD4
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD26_02254FF0
-MOD26_02254FF0: ; 0x02254FF0
- .word 0x00, MOD26_02254C60, 0x00
- .word 0x01, MOD26_02254D6C, 0x00
- .word 0x02, MOD26_02254D90, 0x00
- .word 0x00, 0x00000000, 0x00
diff --git a/arm9/modules/26/asm/mod26_02254BD4.s b/arm9/modules/26/asm/mod26_02254BD4.s
new file mode 100644
index 00000000..b305807a
--- /dev/null
+++ b/arm9/modules/26/asm/mod26_02254BD4.s
@@ -0,0 +1,305 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD26_02254BD4
+MOD26_02254BD4: ; 0x02254BD4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl AllocFromHeap
+ add r4, r0, #0
+ beq _02254C00
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _02254C00
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C00:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD26_02254BD4
+
+ thumb_func_start MOD26_02254C04
+MOD26_02254C04: ; 0x02254C04
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254C0E
+ bl FreeToHeap
+_02254C0E:
+ pop {r3, pc}
+ thumb_func_end MOD26_02254C04
+
+ thumb_func_start MOD26_02254C10
+MOD26_02254C10: ; 0x02254C10
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254C30 ; =MOD26_02254FF0
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C30: .word MOD26_02254FF0
+ thumb_func_end MOD26_02254C10
+
+ thumb_func_start MOD26_02254C34
+MOD26_02254C34: ; 0x02254C34
+ ldr r3, _02254C3C ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254C3C: .word MOD20_02253794
+ thumb_func_end MOD26_02254C34
+
+ thumb_func_start MOD26_02254C40
+MOD26_02254C40: ; 0x02254C40
+ ldr r3, _02254C48 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C48: .word MOD20_022537B8
+ thumb_func_end MOD26_02254C40
+
+ thumb_func_start MOD26_02254C4C
+MOD26_02254C4C: ; 0x02254C4C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD26_02254C4C
+
+ thumb_func_start MOD26_02254C60
+MOD26_02254C60: ; 0x02254C60
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254CB8 ; =MOD26_02254FD4
+ mov r1, #6
+ mov r3, #0
+ bl InitBgFromTemplate
+ ldr r0, [r5, #4]
+ bl MOD26_02254CC4
+ ldr r0, [r5, #4]
+ ldr r1, [r5]
+ bl MOD26_02254DAC
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl BgCommitTilemapBufferToVram
+ ldr r1, _02254CBC ; =0x04001000
+ ldr r0, _02254CC0 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD26_02254C4C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254CB8: .word MOD26_02254FD4
+_02254CBC: .word 0x04001000
+_02254CC0: .word 0xFFFFE0FF
+ thumb_func_end MOD26_02254C60
+
+ thumb_func_start MOD26_02254CC4
+MOD26_02254CC4: ; 0x02254CC4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #4]
+ mov r0, #8
+ lsl r1, r0, #6
+ bl AllocFromHeap
+ str r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _02254D68
+ mov r0, #0
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0xc]
+ str r0, [sp, #8]
+ add r7, r0, #0
+ add r6, r0, #0
+ add r4, r0, #0
+ add r5, r0, #0
+_02254CEC:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x1c]
+ orr r1, r0
+ ldr r0, [sp, #8]
+ orr r0, r1
+ orr r0, r7
+ orr r0, r6
+ orr r0, r4
+ add r1, r5, #0
+ orr r1, r0
+ ldr r0, [sp, #0x18]
+ orr r0, r1
+ ldr r1, [sp, #0x14]
+ add r1, r2, r1
+ mov r2, #0x20
+ bl MIi_CpuClearFast
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ add r0, #0x20
+ str r0, [sp, #0x14]
+ mov r0, #1
+ lsl r0, r0, #0x18
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ mov r0, #1
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0x1c
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ mov r0, #1
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0x14
+ add r0, r1, r0
+ str r0, [sp, #8]
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r7, r7, r0
+ lsr r0, r0, #4
+ add r6, r6, r0
+ mov r0, #1
+ lsl r0, r0, #8
+ add r4, r4, r0
+ ldr r0, [sp, #0x18]
+ add r5, #0x10
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, #0x10
+ blt _02254CEC
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #2
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #0x1c]
+ mov r1, #6
+ lsl r3, r3, #8
+ bl BG_LoadCharTilesData
+ ldr r0, [sp, #0x1c]
+ bl FreeToHeap
+_02254D68:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD26_02254CC4
+
+ thumb_func_start MOD26_02254D6C
+MOD26_02254D6C: ; 0x02254D6C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r1, [r4]
+ bl MOD26_02254DAC
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl BgCommitTilemapBufferToVram
+ add r0, r5, #0
+ bl MOD26_02254C4C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD26_02254D6C
+
+ thumb_func_start MOD26_02254D90
+MOD26_02254D90: ; 0x02254D90
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FreeBgTilemapBuffer
+ add r0, r4, #0
+ bl MOD26_02254C4C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD26_02254D90
+
+ thumb_func_start MOD26_02254DAC
+MOD26_02254DAC: ; 0x02254DAC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ mov r1, #6
+ bl GetBgTilemapBuffer
+ mov r5, #0
+ ldr r1, _02254DE0 ; =MOD26_02254FD0
+ add r0, #0x84
+ add r2, r5, #0
+_02254DBE:
+ add r3, r2, #0
+ add r6, r0, #0
+_02254DC2:
+ ldrb r7, [r4, r3]
+ add r3, r3, #1
+ add r7, r1, r7
+ sub r7, r7, #1
+ ldrb r7, [r7]
+ strh r7, [r6]
+ add r6, r6, #2
+ cmp r3, #0x18
+ blt _02254DC2
+ add r5, r5, #1
+ add r0, #0x40
+ add r4, #0x18
+ cmp r5, #0x14
+ blt _02254DBE
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254DE0: .word MOD26_02254FD0
+ thumb_func_end MOD26_02254DAC
+
+ .section .rodata
+
+ .global MOD26_02254FD0
+MOD26_02254FD0: ; 0x02254FD0
+ .byte 0x04, 0x0F, 0x08, 0x01
+
+ .global MOD26_02254FD4
+MOD26_02254FD4: ; 0x02254FD4
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD26_02254FF0
+MOD26_02254FF0: ; 0x02254FF0
+ .word 0x00, MOD26_02254C60, 0x00
+ .word 0x01, MOD26_02254D6C, 0x00
+ .word 0x02, MOD26_02254D90, 0x00
+ .word 0x00, 0x00000000, 0x00
diff --git a/arm9/modules/33/asm/module_33.s b/arm9/modules/33/asm/mod33_02254854.s
index a0c3782f..a3b102fb 100644
--- a/arm9/modules/33/asm/module_33.s
+++ b/arm9/modules/33/asm/mod33_02254854.s
@@ -205,194 +205,8 @@ _022549A6:
.align 2, 0
thumb_func_end MOD33_02254978
- thumb_func_start MOD33_022549AC
-MOD33_022549AC: ; 0x022549AC
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r6, r1, #0
- mov r0, #8
- mov r1, #0x30
- bl AllocFromHeap
- add r4, r0, #0
- beq _022549D8
- add r0, #8
- mov r1, #8
- bl MOD20_022536F4
- str r6, [r4]
- bl MOD20_02252D34
- str r0, [r4, #4]
- cmp r0, #0
- beq _022549D8
- str r4, [r5]
- mov r0, #1
- pop {r4, r5, r6, pc}
-_022549D8:
- mov r0, #0
- pop {r4, r5, r6, pc}
- thumb_func_end MOD33_022549AC
-
- thumb_func_start MOD33_022549DC
-MOD33_022549DC: ; 0x022549DC
- push {r3, lr}
- cmp r0, #0
- beq _022549E6
- bl FreeToHeap
-_022549E6:
- pop {r3, pc}
- thumb_func_end MOD33_022549DC
-
- thumb_func_start MOD33_022549E8
-MOD33_022549E8: ; 0x022549E8
- push {lr}
- sub sp, #0xc
- add r2, r0, #0
- add r0, #8
- str r0, [sp]
- mov r0, #2
- str r0, [sp, #4]
- mov r0, #8
- str r0, [sp, #8]
- ldr r0, _02254A08 ; =MOD33_02254B1C
- ldr r3, [r2]
- bl MOD20_022537E0
- add sp, #0xc
- pop {pc}
- nop
-_02254A08: .word MOD33_02254B1C
- thumb_func_end MOD33_022549E8
-
- thumb_func_start MOD33_02254A0C
-MOD33_02254A0C: ; 0x02254A0C
- ldr r3, _02254A14 ; =MOD20_02253794
- add r0, #8
- bx r3
- nop
-_02254A14: .word MOD20_02253794
- thumb_func_end MOD33_02254A0C
-
- thumb_func_start MOD33_02254A18
-MOD33_02254A18: ; 0x02254A18
- ldr r3, _02254A20 ; =MOD20_022537B8
- add r0, #8
- bx r3
- nop
-_02254A20: .word MOD20_022537B8
- thumb_func_end MOD33_02254A18
-
- thumb_func_start MOD33_02254A24
-MOD33_02254A24: ; 0x02254A24
- push {r4, lr}
- add r4, r0, #0
- bl MOD20_022538A0
- add r0, #8
- add r1, r4, #0
- bl MOD20_02253888
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD33_02254A24
-
- thumb_func_start MOD33_02254A38
-MOD33_02254A38: ; 0x02254A38
- push {r4, r5, lr}
- sub sp, #0x14
- add r4, r1, #0
- add r0, r4, #0
- bl MOD20_022538A0
- add r5, r0, #0
- ldr r0, [r5, #4]
- ldr r2, _02254ACC ; =MOD33_02254B00
- mov r1, #6
- mov r3, #0
- bl InitBgFromTemplate
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- mov r1, #8
- str r1, [sp, #0xc]
- ldr r2, [r5, #4]
- mov r0, #0xc
- mov r3, #6
- bl GfGfxLoader_LoadCharData
- mov r2, #0
- str r2, [sp]
- mov r0, #0x20
- str r0, [sp, #4]
- mov r0, #0x18
- str r0, [sp, #8]
- str r2, [sp, #0xc]
- ldr r0, [r5, #4]
- mov r1, #6
- add r3, r2, #0
- bl FillBgTilemapRect
- mov r0, #0x20
- str r0, [sp]
- mov r0, #8
- str r0, [sp, #4]
- mov r0, #0xc
- mov r1, #9
- mov r2, #4
- mov r3, #0
- bl GfGfxLoader_GXLoadPal
- ldr r0, [r5, #4]
- mov r1, #0xc
- mov r2, #6
- bl MOD20_02253AA4
- ldr r0, [r5, #4]
- mov r1, #6
- bl BgCommitTilemapBufferToVram
- ldr r1, _02254AD0 ; =0x04001000
- ldr r0, _02254AD4 ; =0xFFFFE0FF
- ldr r3, [r1]
- ldr r2, [r1]
- str r3, [sp, #0x10]
- and r0, r2
- lsl r2, r3, #0x13
- lsr r3, r2, #0x1b
- mov r2, #4
- orr r2, r3
- lsl r2, r2, #8
- orr r0, r2
- str r0, [r1]
- add r0, r4, #0
- bl MOD33_02254A24
- add sp, #0x14
- pop {r4, r5, pc}
- nop
-_02254ACC: .word MOD33_02254B00
-_02254AD0: .word 0x04001000
-_02254AD4: .word 0xFFFFE0FF
- thumb_func_end MOD33_02254A38
-
- thumb_func_start MOD33_02254AD8
-MOD33_02254AD8: ; 0x02254AD8
- push {r4, lr}
- add r4, r1, #0
- add r0, r4, #0
- bl MOD20_022538A0
- ldr r0, [r0, #4]
- mov r1, #6
- bl FreeBgTilemapBuffer
- add r0, r4, #0
- bl MOD33_02254A24
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD33_02254AD8
-
.section .rodata
.global MOD33_02254AF4
MOD33_02254AF4: ; 0x02254AF4
.word MOD33_02254924, MOD33_02254964, MOD33_02254978
-
- .global MOD33_02254B00
-MOD33_02254B00: ; 0x02254B00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00
- .byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD33_02254B1C
-MOD33_02254B1C: ; 0x02254B1C
- .word 0x00, MOD33_02254A38, 0x00
- .word 0x01, MOD33_02254AD8, 0x00
- .word 0x00, 0x00000000, 0x00
diff --git a/arm9/modules/33/asm/mod33_022549AC.s b/arm9/modules/33/asm/mod33_022549AC.s
new file mode 100644
index 00000000..c280b622
--- /dev/null
+++ b/arm9/modules/33/asm/mod33_022549AC.s
@@ -0,0 +1,192 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD33_022549AC
+MOD33_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl AllocFromHeap
+ add r4, r0, #0
+ beq _022549D8
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549D8
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549D8:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD33_022549AC
+
+ thumb_func_start MOD33_022549DC
+MOD33_022549DC: ; 0x022549DC
+ push {r3, lr}
+ cmp r0, #0
+ beq _022549E6
+ bl FreeToHeap
+_022549E6:
+ pop {r3, pc}
+ thumb_func_end MOD33_022549DC
+
+ thumb_func_start MOD33_022549E8
+MOD33_022549E8: ; 0x022549E8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254A08 ; =MOD33_02254B1C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A08: .word MOD33_02254B1C
+ thumb_func_end MOD33_022549E8
+
+ thumb_func_start MOD33_02254A0C
+MOD33_02254A0C: ; 0x02254A0C
+ ldr r3, _02254A14 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A14: .word MOD20_02253794
+ thumb_func_end MOD33_02254A0C
+
+ thumb_func_start MOD33_02254A18
+MOD33_02254A18: ; 0x02254A18
+ ldr r3, _02254A20 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A20: .word MOD20_022537B8
+ thumb_func_end MOD33_02254A18
+
+ thumb_func_start MOD33_02254A24
+MOD33_02254A24: ; 0x02254A24
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254A24
+
+ thumb_func_start MOD33_02254A38
+MOD33_02254A38: ; 0x02254A38
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254ACC ; =MOD33_02254B00
+ mov r1, #6
+ mov r3, #0
+ bl InitBgFromTemplate
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl GfGfxLoader_LoadCharData
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FillBgTilemapRect
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl GfGfxLoader_GXLoadPal
+ ldr r0, [r5, #4]
+ mov r1, #0xc
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl BgCommitTilemapBufferToVram
+ ldr r1, _02254AD0 ; =0x04001000
+ ldr r0, _02254AD4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD33_02254A24
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254ACC: .word MOD33_02254B00
+_02254AD0: .word 0x04001000
+_02254AD4: .word 0xFFFFE0FF
+ thumb_func_end MOD33_02254A38
+
+ thumb_func_start MOD33_02254AD8
+MOD33_02254AD8: ; 0x02254AD8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FreeBgTilemapBuffer
+ add r0, r4, #0
+ bl MOD33_02254A24
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254AD8
+
+ .section .rodata
+
+ .global MOD33_02254B00
+MOD33_02254B00: ; 0x02254B00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00
+ .byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD33_02254B1C
+MOD33_02254B1C: ; 0x02254B1C
+ .word 0x00, MOD33_02254A38, 0x00
+ .word 0x01, MOD33_02254AD8, 0x00
+ .word 0x00, 0x00000000, 0x00
diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s
index 9e502906..3a2eb2e3 100644
--- a/arm9/modules/42/asm/module_42.s
+++ b/arm9/modules/42/asm/module_42.s
@@ -139,7 +139,7 @@ _02254932:
add r6, r0, #0
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _02254984
ldr r0, [r4, #0x1c]
@@ -527,7 +527,7 @@ MOD42_02254C04: ; 0x02254C04
add r6, r0, #0
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _02254C3C
ldr r1, [r4, #0x1c]
diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s
index 59f7e81d..cb9d4f4d 100644
--- a/arm9/modules/43/asm/module_43.s
+++ b/arm9/modules/43/asm/module_43.s
@@ -62,7 +62,7 @@ MOD43_0225489C: ; 0x0225489C
add r6, r0, #0
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _022548E0
ldr r0, [r4, #0x1c]
@@ -395,7 +395,7 @@ MOD43_02254AF8: ; 0x02254AF8
add r7, r0, #0
ldr r0, [r4, #0x1c]
ldr r0, [r0]
- bl MapHeader_MapIsOnOverworldMatrix
+ bl MapHeader_MapIsOnMainMatrix
cmp r0, #0
beq _02254B36
ldr r1, [r4, #0x1c]
diff --git a/arm9/modules/44/asm/mod44_02254854.s b/arm9/modules/44/asm/mod44_02254854.s
new file mode 100644
index 00000000..5abb4074
--- /dev/null
+++ b/arm9/modules/44/asm/mod44_02254854.s
@@ -0,0 +1,297 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD44_02254854
+MOD44_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x14
+ add r7, r2, #0
+ str r3, [sp]
+ bl AllocFromHeap
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD44_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD44_022548EC
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FreeToHeap
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD44_022548EC
+ thumb_func_end MOD44_02254854
+
+ thumb_func_start MOD44_0225489C
+MOD44_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r6, r2, #0
+ bl MOD20_02252C3C
+ str r0, [r5, #0x10]
+ bl Sav2_Poketch_GetScreenTint
+ str r0, [r5, #4]
+ strb r0, [r5, #3]
+ add r0, r5, #0
+ add r0, #8
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD44_02254A54
+ cmp r0, #0
+ beq _022548D2
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548D2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD44_0225489C
+
+ thumb_func_start MOD44_022548D8
+MOD44_022548D8: ; 0x022548D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD44_02254B00
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_022548D8
+
+ thumb_func_start MOD44_022548EC
+MOD44_022548EC: ; 0x022548EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254918
+ lsl r2, r1, #2
+ ldr r1, _0225491C ; =MOD44_02254C54
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254918
+ add r0, r4, #0
+ bl MOD44_022548D8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254918:
+ pop {r3, r4, r5, pc}
+ nop
+_0225491C: .word MOD44_02254C54
+ thumb_func_end MOD44_022548EC
+
+ thumb_func_start MOD44_02254920
+MOD44_02254920: ; 0x02254920
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD44_02254920
+
+ thumb_func_start MOD44_02254928
+MOD44_02254928: ; 0x02254928
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254930
+ b _02254932
+_02254930:
+ mov r1, #2
+_02254932:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD44_02254928
+
+ thumb_func_start MOD44_0225493C
+MOD44_0225493C: ; 0x0225493C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _0225494C
+ cmp r0, #1
+ beq _0225495C
+ b _02254976
+_0225494C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254976
+_0225495C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD44_02254B38
+ cmp r0, #0
+ beq _02254976
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD44_02254928
+_02254976:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_0225493C
+
+ thumb_func_start MOD44_0225497C
+MOD44_0225497C: ; 0x0225497C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254990
+ mov r1, #2
+ bl MOD44_02254928
+ mov r0, #0
+ pop {r4, pc}
+_02254990:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _0225499C
+ cmp r1, #1
+ beq _022549B4
+ b _022549C4
+_0225499C:
+ bl MOD44_022549C8
+ cmp r0, #0
+ beq _022549C4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549C4
+_022549B4:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD44_02254B38
+ cmp r0, #0
+ beq _022549C4
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549C4:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD44_0225497C
+
+ thumb_func_start MOD44_022549C8
+MOD44_022549C8: ; 0x022549C8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A18
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020AB0
+ cmp r0, #0
+ beq _02254A18
+ ldr r0, [sp]
+ cmp r0, #0x88
+ blo _02254A18
+ cmp r0, #0xa0
+ bhs _02254A18
+ ldr r0, [sp, #4]
+ cmp r0, #0x30
+ blo _02254A18
+ cmp r0, #0xb8
+ bhs _02254A18
+ sub r0, #0x30
+ lsr r1, r0, #4
+ cmp r1, #8
+ blo _02254A02
+ mov r1, #7
+_02254A02:
+ ldrb r0, [r4, #3]
+ cmp r1, r0
+ beq _02254A18
+ str r1, [r4, #4]
+ strb r1, [r4, #3]
+ ldr r0, [r4, #0x10]
+ bl Sav2_Poketch_SetScreenTint
+ add sp, #8
+ mov r0, #1
+ pop {r4, pc}
+_02254A18:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_022549C8
+
+ thumb_func_start MOD44_02254A20
+MOD44_02254A20: ; 0x02254A20
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A30
+ cmp r0, #1
+ beq _02254A40
+ b _02254A4E
+_02254A30:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4E
+_02254A40:
+ ldr r0, [r4, #8]
+ bl MOD44_02254B44
+ cmp r0, #0
+ beq _02254A4E
+ mov r0, #1
+ pop {r4, pc}
+_02254A4E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254A20
+
+ .section .rodata
+
+ .global MOD44_02254C54
+MOD44_02254C54: ; 0x02254C54
+ .word MOD44_0225493C, MOD44_0225497C, MOD44_02254A20
diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/mod44_02254A54.s
index b8f5aa0b..13d6529c 100644
--- a/arm9/modules/44/asm/module_44.s
+++ b/arm9/modules/44/asm/mod44_02254A54.s
@@ -3,293 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD44_02254854
-MOD44_02254854: ; 0x02254854
- push {r3, r4, r5, r6, r7, lr}
- add r5, r0, #0
- add r6, r1, #0
- mov r0, #8
- mov r1, #0x14
- add r7, r2, #0
- str r3, [sp]
- bl AllocFromHeap
- add r4, r0, #0
- beq _02254892
- ldr r3, [sp]
- add r1, r6, #0
- add r2, r7, #0
- bl MOD44_0225489C
- cmp r0, #0
- beq _0225488C
- ldr r0, _02254898 ; =MOD44_022548EC
- add r1, r4, #0
- mov r2, #1
- bl FUN_0200CA44
- cmp r0, #0
- beq _0225488C
- str r4, [r5]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_0225488C:
- add r0, r4, #0
- bl FreeToHeap
-_02254892:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- nop
-_02254898: .word MOD44_022548EC
- thumb_func_end MOD44_02254854
-
- thumb_func_start MOD44_0225489C
-MOD44_0225489C: ; 0x0225489C
- push {r4, r5, r6, lr}
- add r4, r1, #0
- add r5, r0, #0
- add r0, r4, #0
- add r6, r2, #0
- bl MOD20_02252C3C
- str r0, [r5, #0x10]
- bl Sav2_Poketch_GetScreenTint
- str r0, [r5, #4]
- strb r0, [r5, #3]
- add r0, r5, #0
- add r0, #8
- add r1, r5, #4
- add r2, r6, #0
- bl MOD44_02254A54
- cmp r0, #0
- beq _022548D2
- mov r0, #0
- strb r0, [r5]
- strb r0, [r5, #1]
- strb r0, [r5, #2]
- str r4, [r5, #0xc]
- mov r0, #1
- pop {r4, r5, r6, pc}
-_022548D2:
- mov r0, #0
- pop {r4, r5, r6, pc}
- .align 2, 0
- thumb_func_end MOD44_0225489C
-
- thumb_func_start MOD44_022548D8
-MOD44_022548D8: ; 0x022548D8
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #8]
- bl MOD44_02254B00
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD44_022548D8
-
- thumb_func_start MOD44_022548EC
-MOD44_022548EC: ; 0x022548EC
- push {r3, r4, r5, lr}
- add r4, r1, #0
- ldrb r1, [r4]
- add r5, r0, #0
- cmp r1, #3
- bhs _02254918
- lsl r2, r1, #2
- ldr r1, _0225491C ; =MOD44_02254C54
- add r0, r4, #0
- ldr r1, [r1, r2]
- blx r1
- cmp r0, #0
- beq _02254918
- add r0, r4, #0
- bl MOD44_022548D8
- add r0, r5, #0
- bl FUN_0200CAB4
- ldr r0, [r4, #0xc]
- bl MOD20_022529A0
-_02254918:
- pop {r3, r4, r5, pc}
- nop
-_0225491C: .word MOD44_02254C54
- thumb_func_end MOD44_022548EC
-
- thumb_func_start MOD44_02254920
-MOD44_02254920: ; 0x02254920
- mov r1, #1
- strb r1, [r0, #2]
- bx lr
- .align 2, 0
- thumb_func_end MOD44_02254920
-
- thumb_func_start MOD44_02254928
-MOD44_02254928: ; 0x02254928
- ldrb r2, [r0, #2]
- cmp r2, #0
- bne _02254930
- b _02254932
-_02254930:
- mov r1, #2
-_02254932:
- strb r1, [r0]
- mov r1, #0
- strb r1, [r0, #1]
- bx lr
- .align 2, 0
- thumb_func_end MOD44_02254928
-
- thumb_func_start MOD44_0225493C
-MOD44_0225493C: ; 0x0225493C
- push {r4, lr}
- add r4, r0, #0
- ldrb r0, [r4, #1]
- cmp r0, #0
- beq _0225494C
- cmp r0, #1
- beq _0225495C
- b _02254976
-_0225494C:
- ldr r0, [r4, #8]
- mov r1, #0
- bl MOD44_02254B14
- ldrb r0, [r4, #1]
- add r0, r0, #1
- strb r0, [r4, #1]
- b _02254976
-_0225495C:
- ldr r0, [r4, #8]
- mov r1, #0
- bl MOD44_02254B38
- cmp r0, #0
- beq _02254976
- ldr r0, [r4, #0xc]
- bl MOD20_0225298C
- add r0, r4, #0
- mov r1, #1
- bl MOD44_02254928
-_02254976:
- mov r0, #0
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD44_0225493C
-
- thumb_func_start MOD44_0225497C
-MOD44_0225497C: ; 0x0225497C
- push {r4, lr}
- add r4, r0, #0
- ldrb r1, [r4, #2]
- cmp r1, #0
- beq _02254990
- mov r1, #2
- bl MOD44_02254928
- mov r0, #0
- pop {r4, pc}
-_02254990:
- ldrb r1, [r4, #1]
- cmp r1, #0
- beq _0225499C
- cmp r1, #1
- beq _022549B4
- b _022549C4
-_0225499C:
- bl MOD44_022549C8
- cmp r0, #0
- beq _022549C4
- ldr r0, [r4, #8]
- mov r1, #2
- bl MOD44_02254B14
- ldrb r0, [r4, #1]
- add r0, r0, #1
- strb r0, [r4, #1]
- b _022549C4
-_022549B4:
- ldr r0, [r4, #8]
- mov r1, #2
- bl MOD44_02254B38
- cmp r0, #0
- beq _022549C4
- mov r0, #0
- strb r0, [r4, #1]
-_022549C4:
- mov r0, #0
- pop {r4, pc}
- thumb_func_end MOD44_0225497C
-
- thumb_func_start MOD44_022549C8
-MOD44_022549C8: ; 0x022549C8
- push {r4, lr}
- sub sp, #8
- add r4, r0, #0
- ldr r0, [r4, #0xc]
- bl MOD20_02252C08
- cmp r0, #0
- bne _02254A18
- add r0, sp, #4
- add r1, sp, #0
- bl FUN_02020AB0
- cmp r0, #0
- beq _02254A18
- ldr r0, [sp]
- cmp r0, #0x88
- blo _02254A18
- cmp r0, #0xa0
- bhs _02254A18
- ldr r0, [sp, #4]
- cmp r0, #0x30
- blo _02254A18
- cmp r0, #0xb8
- bhs _02254A18
- sub r0, #0x30
- lsr r1, r0, #4
- cmp r1, #8
- blo _02254A02
- mov r1, #7
-_02254A02:
- ldrb r0, [r4, #3]
- cmp r1, r0
- beq _02254A18
- str r1, [r4, #4]
- strb r1, [r4, #3]
- ldr r0, [r4, #0x10]
- bl Sav2_Poketch_SetScreenTint
- add sp, #8
- mov r0, #1
- pop {r4, pc}
-_02254A18:
- mov r0, #0
- add sp, #8
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD44_022549C8
-
- thumb_func_start MOD44_02254A20
-MOD44_02254A20: ; 0x02254A20
- push {r4, lr}
- add r4, r0, #0
- ldrb r0, [r4, #1]
- cmp r0, #0
- beq _02254A30
- cmp r0, #1
- beq _02254A40
- b _02254A4E
-_02254A30:
- ldr r0, [r4, #8]
- mov r1, #1
- bl MOD44_02254B14
- ldrb r0, [r4, #1]
- add r0, r0, #1
- strb r0, [r4, #1]
- b _02254A4E
-_02254A40:
- ldr r0, [r4, #8]
- bl MOD44_02254B44
- cmp r0, #0
- beq _02254A4E
- mov r0, #1
- pop {r4, pc}
-_02254A4E:
- mov r0, #0
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD44_02254A20
-
thumb_func_start MOD44_02254A54
MOD44_02254A54: ; 0x02254A54
push {r4, r5, r6, lr}
@@ -557,10 +270,6 @@ _02254C50: .word 0x00000663
.section .rodata
- .global MOD44_02254C54
-MOD44_02254C54: ; 0x02254C54
- .word MOD44_0225493C, MOD44_0225497C, MOD44_02254A20
-
.global MOD44_02254C60
MOD44_02254C60: ; 0x02254C60
.byte 0x00, 0x80, 0x03, 0x00
diff --git a/arm9/modules/46/asm/module_46.s b/arm9/modules/46/asm/mod46_02254854.s
index aecfd51d..931d2e3e 100644
--- a/arm9/modules/46/asm/module_46.s
+++ b/arm9/modules/46/asm/mod46_02254854.s
@@ -205,194 +205,8 @@ _022549A6:
.align 2, 0
thumb_func_end MOD46_02254978
- thumb_func_start MOD46_022549AC
-MOD46_022549AC: ; 0x022549AC
- push {r4, r5, r6, lr}
- add r5, r0, #0
- add r6, r1, #0
- mov r0, #8
- mov r1, #0x30
- bl AllocFromHeap
- add r4, r0, #0
- beq _022549D8
- add r0, #8
- mov r1, #8
- bl MOD20_022536F4
- str r6, [r4]
- bl MOD20_02252D34
- str r0, [r4, #4]
- cmp r0, #0
- beq _022549D8
- str r4, [r5]
- mov r0, #1
- pop {r4, r5, r6, pc}
-_022549D8:
- mov r0, #0
- pop {r4, r5, r6, pc}
- thumb_func_end MOD46_022549AC
-
- thumb_func_start MOD46_022549DC
-MOD46_022549DC: ; 0x022549DC
- push {r3, lr}
- cmp r0, #0
- beq _022549E6
- bl FreeToHeap
-_022549E6:
- pop {r3, pc}
- thumb_func_end MOD46_022549DC
-
- thumb_func_start MOD46_022549E8
-MOD46_022549E8: ; 0x022549E8
- push {lr}
- sub sp, #0xc
- add r2, r0, #0
- add r0, #8
- str r0, [sp]
- mov r0, #2
- str r0, [sp, #4]
- mov r0, #8
- str r0, [sp, #8]
- ldr r0, _02254A08 ; =MOD46_02254B1C
- ldr r3, [r2]
- bl MOD20_022537E0
- add sp, #0xc
- pop {pc}
- nop
-_02254A08: .word MOD46_02254B1C
- thumb_func_end MOD46_022549E8
-
- thumb_func_start MOD46_02254A0C
-MOD46_02254A0C: ; 0x02254A0C
- ldr r3, _02254A14 ; =MOD20_02253794
- add r0, #8
- bx r3
- nop
-_02254A14: .word MOD20_02253794
- thumb_func_end MOD46_02254A0C
-
- thumb_func_start MOD46_02254A18
-MOD46_02254A18: ; 0x02254A18
- ldr r3, _02254A20 ; =MOD20_022537B8
- add r0, #8
- bx r3
- nop
-_02254A20: .word MOD20_022537B8
- thumb_func_end MOD46_02254A18
-
- thumb_func_start MOD46_02254A24
-MOD46_02254A24: ; 0x02254A24
- push {r4, lr}
- add r4, r0, #0
- bl MOD20_022538A0
- add r0, #8
- add r1, r4, #0
- bl MOD20_02253888
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD46_02254A24
-
- thumb_func_start MOD46_02254A38
-MOD46_02254A38: ; 0x02254A38
- push {r4, r5, lr}
- sub sp, #0x14
- add r4, r1, #0
- add r0, r4, #0
- bl MOD20_022538A0
- add r5, r0, #0
- ldr r0, [r5, #4]
- ldr r2, _02254ACC ; =MOD46_02254B00
- mov r1, #6
- mov r3, #0
- bl InitBgFromTemplate
- mov r0, #0
- str r0, [sp]
- str r0, [sp, #4]
- str r0, [sp, #8]
- mov r1, #8
- str r1, [sp, #0xc]
- ldr r2, [r5, #4]
- mov r0, #0xc
- mov r3, #6
- bl GfGfxLoader_LoadCharData
- mov r2, #0
- str r2, [sp]
- mov r0, #0x20
- str r0, [sp, #4]
- mov r0, #0x18
- str r0, [sp, #8]
- str r2, [sp, #0xc]
- ldr r0, [r5, #4]
- mov r1, #6
- add r3, r2, #0
- bl FillBgTilemapRect
- mov r0, #0x20
- str r0, [sp]
- mov r0, #8
- str r0, [sp, #4]
- mov r0, #0xc
- mov r1, #9
- mov r2, #4
- mov r3, #0
- bl GfGfxLoader_GXLoadPal
- ldr r0, [r5, #4]
- mov r1, #0x1a
- mov r2, #6
- bl MOD20_02253AA4
- ldr r0, [r5, #4]
- mov r1, #6
- bl BgCommitTilemapBufferToVram
- ldr r1, _02254AD0 ; =0x04001000
- ldr r0, _02254AD4 ; =0xFFFFE0FF
- ldr r3, [r1]
- ldr r2, [r1]
- str r3, [sp, #0x10]
- and r0, r2
- lsl r2, r3, #0x13
- lsr r3, r2, #0x1b
- mov r2, #4
- orr r2, r3
- lsl r2, r2, #8
- orr r0, r2
- str r0, [r1]
- add r0, r4, #0
- bl MOD46_02254A24
- add sp, #0x14
- pop {r4, r5, pc}
- nop
-_02254ACC: .word MOD46_02254B00
-_02254AD0: .word 0x04001000
-_02254AD4: .word 0xFFFFE0FF
- thumb_func_end MOD46_02254A38
-
- thumb_func_start MOD46_02254AD8
-MOD46_02254AD8: ; 0x02254AD8
- push {r4, lr}
- add r4, r1, #0
- add r0, r4, #0
- bl MOD20_022538A0
- ldr r0, [r0, #4]
- mov r1, #6
- bl FreeBgTilemapBuffer
- add r0, r4, #0
- bl MOD46_02254A24
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD46_02254AD8
-
.section .rodata
.global MOD46_02254AF4
MOD46_02254AF4: ; 0x02254AF4
.word MOD46_02254924, MOD46_02254964, MOD46_02254978
-
- .global MOD46_02254B00
-MOD46_02254B00: ; 0x02254B00
- .byte 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00
- .byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .global MOD46_02254B1C
-MOD46_02254B1C: ; 0x02254B1C
- .word 0x00, MOD46_02254A38, 0x00
- .word 0x01, MOD46_02254AD8, 0x00
- .word 0x00, 0x00000000, 0x00
diff --git a/arm9/modules/46/asm/mod46_022549AC.s b/arm9/modules/46/asm/mod46_022549AC.s
new file mode 100644
index 00000000..d3290c07
--- /dev/null
+++ b/arm9/modules/46/asm/mod46_022549AC.s
@@ -0,0 +1,192 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD46_022549AC
+MOD46_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl AllocFromHeap
+ add r4, r0, #0
+ beq _022549D8
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549D8
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549D8:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD46_022549AC
+
+ thumb_func_start MOD46_022549DC
+MOD46_022549DC: ; 0x022549DC
+ push {r3, lr}
+ cmp r0, #0
+ beq _022549E6
+ bl FreeToHeap
+_022549E6:
+ pop {r3, pc}
+ thumb_func_end MOD46_022549DC
+
+ thumb_func_start MOD46_022549E8
+MOD46_022549E8: ; 0x022549E8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254A08 ; =MOD46_02254B1C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A08: .word MOD46_02254B1C
+ thumb_func_end MOD46_022549E8
+
+ thumb_func_start MOD46_02254A0C
+MOD46_02254A0C: ; 0x02254A0C
+ ldr r3, _02254A14 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A14: .word MOD20_02253794
+ thumb_func_end MOD46_02254A0C
+
+ thumb_func_start MOD46_02254A18
+MOD46_02254A18: ; 0x02254A18
+ ldr r3, _02254A20 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A20: .word MOD20_022537B8
+ thumb_func_end MOD46_02254A18
+
+ thumb_func_start MOD46_02254A24
+MOD46_02254A24: ; 0x02254A24
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254A24
+
+ thumb_func_start MOD46_02254A38
+MOD46_02254A38: ; 0x02254A38
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254ACC ; =MOD46_02254B00
+ mov r1, #6
+ mov r3, #0
+ bl InitBgFromTemplate
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl GfGfxLoader_LoadCharData
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FillBgTilemapRect
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl GfGfxLoader_GXLoadPal
+ ldr r0, [r5, #4]
+ mov r1, #0x1a
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl BgCommitTilemapBufferToVram
+ ldr r1, _02254AD0 ; =0x04001000
+ ldr r0, _02254AD4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD46_02254A24
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254ACC: .word MOD46_02254B00
+_02254AD0: .word 0x04001000
+_02254AD4: .word 0xFFFFE0FF
+ thumb_func_end MOD46_02254A38
+
+ thumb_func_start MOD46_02254AD8
+MOD46_02254AD8: ; 0x02254AD8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FreeBgTilemapBuffer
+ add r0, r4, #0
+ bl MOD46_02254A24
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254AD8
+
+ .section .rodata
+
+ .global MOD46_02254B00
+MOD46_02254B00: ; 0x02254B00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00
+ .byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+ .global MOD46_02254B1C
+MOD46_02254B1C: ; 0x02254B1C
+ .word 0x00, MOD46_02254A38, 0x00
+ .word 0x01, MOD46_02254AD8, 0x00
+ .word 0x00, 0x00000000, 0x00
diff --git a/arm9/modules/50/asm/mod50_02254854.s b/arm9/modules/50/asm/mod50_02254854.s
new file mode 100644
index 00000000..aeca2cc0
--- /dev/null
+++ b/arm9/modules/50/asm/mod50_02254854.s
@@ -0,0 +1,213 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD50_02254854
+MOD50_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #8
+ mov r1, #0x10
+ str r2, [sp]
+ add r5, r3, #0
+ bl AllocFromHeap
+ add r4, r0, #0
+ beq _02254894
+ ldr r2, [sp]
+ add r1, r7, #0
+ add r3, r5, #0
+ bl MOD50_0225489C
+ cmp r0, #0
+ beq _0225488E
+ ldr r0, _02254898 ; =MOD50_022548D4
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488E
+ str r4, [r6]
+ str r5, [r4, #4]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488E:
+ add r0, r4, #0
+ bl FreeToHeap
+_02254894:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254898: .word MOD50_022548D4
+ thumb_func_end MOD50_02254854
+
+ thumb_func_start MOD50_0225489C
+MOD50_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD50_022549AC
+ cmp r0, #0
+ beq _022548BC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD50_0225489C
+
+ thumb_func_start MOD50_022548C0
+MOD50_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD50_022549E0
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_022548C0
+
+ thumb_func_start MOD50_022548D4
+MOD50_022548D4: ; 0x022548D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254900
+ lsl r2, r1, #2
+ ldr r1, _02254904 ; =MOD50_02254B04
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254900
+ add r0, r4, #0
+ bl MOD50_022548C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254900:
+ pop {r3, r4, r5, pc}
+ nop
+_02254904: .word MOD50_02254B04
+ thumb_func_end MOD50_022548D4
+
+ thumb_func_start MOD50_02254908
+MOD50_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD50_02254908
+
+ thumb_func_start MOD50_02254910
+MOD50_02254910: ; 0x02254910
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254918
+ b _0225491A
+_02254918:
+ mov r1, #2
+_0225491A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD50_02254910
+
+ thumb_func_start MOD50_02254924
+MOD50_02254924: ; 0x02254924
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254934
+ cmp r0, #1
+ beq _02254944
+ b _0225495E
+_02254934:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD50_022549F8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD50_02254A1C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD50_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254924
+
+ thumb_func_start MOD50_02254964
+MOD50_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD50_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254964
+
+ thumb_func_start MOD50_02254978
+MOD50_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549A6
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD50_022549F8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD50_02254A28
+ cmp r0, #0
+ beq _022549A6
+ mov r0, #1
+ pop {r4, pc}
+_022549A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254978
+
+ .section .rodata
+
+ .global MOD50_02254B04
+MOD50_02254B04: ; 0x02254B04
+ .word MOD50_02254924, MOD50_02254964, MOD50_02254978
diff --git a/arm9/modules/50/asm/module_50.s b/arm9/modules/50/asm/mod50_022549AC.s
index fc52f7fa..8051918a 100644
--- a/arm9/modules/50/asm/module_50.s
+++ b/arm9/modules/50/asm/mod50_022549AC.s
@@ -3,209 +3,6 @@
.section .text
.balign 4, 0
- thumb_func_start MOD50_02254854
-MOD50_02254854: ; 0x02254854
- push {r3, r4, r5, r6, r7, lr}
- add r6, r0, #0
- add r7, r1, #0
- mov r0, #8
- mov r1, #0x10
- str r2, [sp]
- add r5, r3, #0
- bl AllocFromHeap
- add r4, r0, #0
- beq _02254894
- ldr r2, [sp]
- add r1, r7, #0
- add r3, r5, #0
- bl MOD50_0225489C
- cmp r0, #0
- beq _0225488E
- ldr r0, _02254898 ; =MOD50_022548D4
- add r1, r4, #0
- mov r2, #1
- bl FUN_0200CA44
- cmp r0, #0
- beq _0225488E
- str r4, [r6]
- str r5, [r4, #4]
- mov r0, #1
- pop {r3, r4, r5, r6, r7, pc}
-_0225488E:
- add r0, r4, #0
- bl FreeToHeap
-_02254894:
- mov r0, #0
- pop {r3, r4, r5, r6, r7, pc}
- .align 2, 0
-_02254898: .word MOD50_022548D4
- thumb_func_end MOD50_02254854
-
- thumb_func_start MOD50_0225489C
-MOD50_0225489C: ; 0x0225489C
- push {r3, r4, r5, lr}
- add r5, r0, #0
- add r4, r1, #0
- add r0, #8
- add r1, r5, #4
- bl MOD50_022549AC
- cmp r0, #0
- beq _022548BC
- mov r0, #0
- strb r0, [r5]
- strb r0, [r5, #1]
- strb r0, [r5, #2]
- str r4, [r5, #0xc]
- mov r0, #1
- pop {r3, r4, r5, pc}
-_022548BC:
- mov r0, #0
- pop {r3, r4, r5, pc}
- thumb_func_end MOD50_0225489C
-
- thumb_func_start MOD50_022548C0
-MOD50_022548C0: ; 0x022548C0
- push {r4, lr}
- add r4, r0, #0
- ldr r0, [r4, #8]
- bl MOD50_022549E0
- add r0, r4, #0
- bl FreeToHeap
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD50_022548C0
-
- thumb_func_start MOD50_022548D4
-MOD50_022548D4: ; 0x022548D4
- push {r3, r4, r5, lr}
- add r4, r1, #0
- ldrb r1, [r4]
- add r5, r0, #0
- cmp r1, #3
- bhs _02254900
- lsl r2, r1, #2
- ldr r1, _02254904 ; =MOD50_02254B04
- add r0, r4, #0
- ldr r1, [r1, r2]
- blx r1
- cmp r0, #0
- beq _02254900
- add r0, r4, #0
- bl MOD50_022548C0
- add r0, r5, #0
- bl FUN_0200CAB4
- ldr r0, [r4, #0xc]
- bl MOD20_022529A0
-_02254900:
- pop {r3, r4, r5, pc}
- nop
-_02254904: .word MOD50_02254B04
- thumb_func_end MOD50_022548D4
-
- thumb_func_start MOD50_02254908
-MOD50_02254908: ; 0x02254908
- mov r1, #1
- strb r1, [r0, #2]
- bx lr
- .align 2, 0
- thumb_func_end MOD50_02254908
-
- thumb_func_start MOD50_02254910
-MOD50_02254910: ; 0x02254910
- ldrb r2, [r0, #2]
- cmp r2, #0
- bne _02254918
- b _0225491A
-_02254918:
- mov r1, #2
-_0225491A:
- strb r1, [r0]
- mov r1, #0
- strb r1, [r0, #1]
- bx lr
- .align 2, 0
- thumb_func_end MOD50_02254910
-
- thumb_func_start MOD50_02254924
-MOD50_02254924: ; 0x02254924
- push {r4, lr}
- add r4, r0, #0
- ldrb r0, [r4, #1]
- cmp r0, #0
- beq _02254934
- cmp r0, #1
- beq _02254944
- b _0225495E
-_02254934:
- ldr r0, [r4, #8]
- mov r1, #0
- bl MOD50_022549F8
- ldrb r0, [r4, #1]
- add r0, r0, #1
- strb r0, [r4, #1]
- b _0225495E
-_02254944:
- ldr r0, [r4, #8]
- mov r1, #0
- bl MOD50_02254A1C
- cmp r0, #0
- beq _0225495E
- ldr r0, [r4, #0xc]
- bl MOD20_0225298C
- add r0, r4, #0
- mov r1, #1
- bl MOD50_02254910
-_0225495E:
- mov r0, #0
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD50_02254924
-
- thumb_func_start MOD50_02254964
-MOD50_02254964: ; 0x02254964
- push {r3, lr}
- ldrb r1, [r0, #2]
- cmp r1, #0
- beq _02254972
- mov r1, #2
- bl MOD50_02254910
-_02254972:
- mov r0, #0
- pop {r3, pc}
- .align 2, 0
- thumb_func_end MOD50_02254964
-
- thumb_func_start MOD50_02254978
-MOD50_02254978: ; 0x02254978
- push {r4, lr}
- add r4, r0, #0
- ldrb r0, [r4, #1]
- cmp r0, #0
- beq _02254988
- cmp r0, #1
- beq _02254998
- b _022549A6
-_02254988:
- ldr r0, [r4, #8]
- mov r1, #1
- bl MOD50_022549F8
- ldrb r0, [r4, #1]
- add r0, r0, #1
- strb r0, [r4, #1]
- b _022549A6
-_02254998:
- ldr r0, [r4, #8]
- bl MOD50_02254A28
- cmp r0, #0
- beq _022549A6
- mov r0, #1
- pop {r4, pc}
-_022549A6:
- mov r0, #0
- pop {r4, pc}
- .align 2, 0
- thumb_func_end MOD50_02254978
-
thumb_func_start MOD50_022549AC
MOD50_022549AC: ; 0x022549AC
push {r4, r5, r6, lr}
@@ -391,10 +188,6 @@ MOD50_02254AE8: ; 0x02254AE8
.section .rodata
- .global MOD50_02254B04
-MOD50_02254B04: ; 0x02254B04
- .word MOD50_02254924, MOD50_02254964, MOD50_02254978
-
.global MOD50_02254B10
MOD50_02254B10: ; 0x02254B10
.byte 0x00, 0x00, 0x00, 0x00
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
index 6840cd32..8795cd7f 100644
--- a/arm9/modules/54/asm/module_54.s
+++ b/arm9/modules/54/asm/module_54.s
@@ -4440,7 +4440,7 @@ MOD54_021D9780: ; 0x021D9780
.word MOD54_021D9488, MOD54_021D94B4, MOD54_021D91B4, MOD54_021D9274
.word MOD54_021D94D0, MOD54_021D91BC, MOD54_021D92AC, MOD54_021D94E8
.word MOD54_021D91AC, MOD54_021D9238, MOD54_021D9500, FUN_0202B934
- .word MOD54_021D9518, MOD54_021D9520, FUN_0202A1E0, MOD54_021D9544
+ .word MOD54_021D9518, MOD54_021D9520, SaveStruct23_Substruct4_Substruct1_sizeof, MOD54_021D9544
.word MOD54_021D956C
.data
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index 7e036d8c..61f44b88 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -8528,7 +8528,7 @@ _022161A8:
mov r0, #7
mov r1, #0x12
mov r2, #0
- bl FUN_02004828
+ bl GF_SndPlayerMoveVolume
mov r0, #0x7f
mov r1, #0x1e
mov r2, #1
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
index 52ef15ff..bbf164b2 100644
--- a/arm9/modules/57/asm/module_57.s
+++ b/arm9/modules/57/asm/module_57.s
@@ -225,7 +225,7 @@ _021D76A8:
bl FUN_02033F20
mov r0, #1
mov r1, #0x2a
- bl FUN_020051EC
+ bl GF_SndPlayerSetPlayerVolume
mov r0, #6
str r0, [sp]
mov r0, #1
@@ -564,7 +564,7 @@ MOD57_021D7944: ; 0x021D7944
bl DestroyHeap
mov r0, #1
mov r1, #0x7f
- bl FUN_020051EC
+ bl GF_SndPlayerSetPlayerVolume
mov r0, #1
pop {r3, r4, r5, pc}
.align 2, 0
@@ -4129,7 +4129,7 @@ _021D95FE:
beq _021D9612
ldrb r0, [r5]
add r0, r0, #3
- bl FUN_020048BC
+ bl GF_SndPlayerCountPlayingSeqByPlayerNo
cmp r0, #0
bne _021D9612
strb r6, [r5, #1]
@@ -4279,7 +4279,7 @@ MOD57_021D96F4: ; 0x021D96F4
add r4, r1, #0
ldr r2, _021D9720 ; =0x00000694
add r1, r0, #0
- bl FUN_020048A0
+ bl GF_SndArcPlayerStartSeqEx
ldr r2, _021D9724 ; =0x021D9A00
lsl r3, r4, #1
ldrh r2, [r2, r3]
@@ -4290,7 +4290,7 @@ MOD57_021D96F4: ; 0x021D96F4
ldr r1, _021D9728 ; =0x0000FFFF
add r0, r5, #3
sub r2, r2, r3
- bl FUN_02004D20
+ bl GF_SndPlayerSetTrackPitch
pop {r4, r5, r6, pc}
.align 2, 0
_021D9720: .word 0x00000694
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
index bce93cc6..6d3eade4 100644
--- a/arm9/modules/60/asm/module_60.s
+++ b/arm9/modules/60/asm/module_60.s
@@ -205,7 +205,7 @@ _021D7680:
ldrh r0, [r4, #0x18]
lsl r0, r0, #0x1a
lsr r0, r0, #0x1e
- bl FUN_02004D60
+ bl GF_SndSetMonoFlag
ldrh r1, [r4, #0x18]
mov r0, #0
lsl r1, r1, #0x16
@@ -1257,7 +1257,7 @@ _021D7F26:
add r0, r0, r1
add r0, #0x5e
ldrh r0, [r0]
- bl FUN_02004D60
+ bl GF_SndSetMonoFlag
b _021D7F54
_021D7F3C:
cmp r0, #4
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
index cbb58d60..d58310fa 100644
--- a/arm9/modules/61/asm/module_61.s
+++ b/arm9/modules/61/asm/module_61.s
@@ -466,7 +466,7 @@ _021D77F2:
add r2, #0x22
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
ldrb r0, [r5, #0x16]
strb r0, [r5, #0x17]
mov r0, #0
@@ -780,7 +780,7 @@ _021D7ABC:
lsl r2, r3, #0x10
lsr r2, r2, #0x10
mov r3, #1
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
ldrb r0, [r4, #0x16]
strb r0, [r4, #0x17]
mov r0, #0
@@ -798,7 +798,7 @@ _021D7AEA:
add r2, #0x22
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
ldrb r0, [r4, #0x15]
ldrb r1, [r4, #0x14]
cmp r0, #0
@@ -1134,12 +1134,12 @@ MOD61_021D7CE8: ; 0x021D7CE8
ldr r3, [r5]
mov r1, #0
mov r2, #0xe0
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
ldr r0, [r5, #0x30]
ldr r3, [r5]
mov r1, #2
mov r2, #0x60
- bl FUN_02003008
+ bl PaletteData_AllocBuffers
mov r0, #0x60
str r0, [sp]
ldr r1, [sp, #0x24]
@@ -1147,7 +1147,7 @@ MOD61_021D7CE8: ; 0x021D7CE8
ldr r0, [r5, #0x30]
ldr r1, [r1, #0xc]
add r3, r2, #0
- bl FUN_02003054
+ bl PaletteData_LoadPalette
ldrb r0, [r5, #0xc]
cmp r0, #1
bne _021D7E00
@@ -1159,7 +1159,7 @@ MOD61_021D7CE8: ; 0x021D7CE8
mov r2, #0
add r1, #0x60
mov r3, #0x10
- bl FUN_02003054
+ bl PaletteData_LoadPalette
_021D7E00:
mov r0, #2
str r0, [sp]
@@ -1170,7 +1170,7 @@ _021D7E00:
ldr r0, [r5, #0x30]
ldr r3, [r5]
mov r1, #0x13
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -1181,7 +1181,7 @@ _021D7E00:
ldr r3, [r5]
mov r1, #0xe
mov r2, #6
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -1192,7 +1192,7 @@ _021D7E00:
ldr r3, [r5]
mov r1, #0xe
mov r2, #7
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -1203,7 +1203,7 @@ _021D7E00:
ldr r3, [r5]
mov r1, #0x26
mov r2, #0x18
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -1215,7 +1215,7 @@ _021D7E00:
ldr r3, [r5]
mov r1, #0x26
add r2, #0x19
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0x10
mov r1, #0
str r0, [sp]
@@ -1223,7 +1223,7 @@ _021D7E00:
ldr r0, [r5, #0x30]
add r2, r1, #0
mov r3, #0x70
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
mov r0, #0x10
str r0, [sp]
mov r2, #0
@@ -1231,7 +1231,7 @@ _021D7E00:
ldr r0, [r5, #0x30]
mov r1, #2
mov r3, #0x30
- bl FUN_020039E8
+ bl BlendPaletteUnfaded
ldr r0, [r5, #0x30]
mov r1, #1
bl FUN_020038F0
@@ -1365,10 +1365,10 @@ MOD61_021D7FB4: ; 0x021D7FB4
bl FreeToHeap
ldr r0, [r4, #0x30]
mov r1, #2
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x30]
mov r1, #0
- bl FUN_02003038
+ bl PaletteData_FreeBuffers
ldr r0, [r4, #0x30]
bl FUN_02002FEC
mov r1, #0
diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s
index 313e1dd9..35c6e17d 100644
--- a/arm9/modules/62/asm/module_62.s
+++ b/arm9/modules/62/asm/module_62.s
@@ -3115,7 +3115,7 @@ MOD62_0222ED34: ; 0x0222ED34
add r0, r4, #0
mov r1, #0x26
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x35
@@ -3136,7 +3136,7 @@ MOD62_0222ED34: ; 0x0222ED34
add r0, r4, #0
mov r1, #0x26
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x20
@@ -3147,7 +3147,7 @@ MOD62_0222ED34: ; 0x0222ED34
mov r1, #0xe
mov r2, #7
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0xc
pop {r3, r4, r5, r6, pc}
thumb_func_end MOD62_0222ED34
@@ -3180,7 +3180,7 @@ MOD62_0222EDBC: ; 0x0222EDBC
add r0, r4, #0
mov r1, #0x26
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
mov r0, #0x35
@@ -3201,7 +3201,7 @@ MOD62_0222EDBC: ; 0x0222EDBC
add r0, r4, #0
mov r1, #0x26
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #1
str r0, [sp]
mov r0, #0x20
@@ -3212,7 +3212,7 @@ MOD62_0222EDBC: ; 0x0222EDBC
mov r1, #0xe
mov r2, #7
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #1
str r0, [sp]
mov r0, #0x20
@@ -3223,7 +3223,7 @@ MOD62_0222EDBC: ; 0x0222EDBC
mov r1, #0xe
mov r2, #7
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #1
str r0, [sp]
mov r0, #0x20
@@ -3235,7 +3235,7 @@ MOD62_0222EDBC: ; 0x0222EDBC
add r0, r4, #0
add r2, #0xcb
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0xc
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -3829,7 +3829,7 @@ MOD62_0222F2C8: ; 0x0222F2C8
ldr r0, [r0]
add r2, #0xc5
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
mov r0, #0
str r0, [sp]
str r0, [sp, #4]
@@ -3910,7 +3910,7 @@ MOD62_0222F36C: ; 0x0222F36C
ldr r0, [r4]
add r2, #0xc4
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0x10
pop {r4, pc}
.align 2, 0
@@ -3963,7 +3963,7 @@ MOD62_0222F3D4: ; 0x0222F3D4
ldr r0, [r4]
add r2, #0xc4
mov r3, #0x35
- bl FUN_020030E8
+ bl PaletteData_LoadNarc
add sp, #0x10
pop {r4, pc}
.align 2, 0
diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h
index e5ecc7df..ac3da1b6 100644
--- a/arm9/modules/63/include/mod63_021DB450.h
+++ b/arm9/modules/63/include/mod63_021DB450.h
@@ -3,10 +3,10 @@
#include "global.h"
-typedef struct UnkStruct63_021DB450
+typedef struct UnkStruct63_021DB450 //intro base struct type
{
- struct UnkStruct63_021DB450 * field_00;
- u32 field_04[3];
+ struct UnkStruct63_021DB450 * field_00; //oddly requires this to be set to progress past copyright/pokemon screen.
+ u32 field_04[3]; //mon animations?
u32 field_10;
void * field_14;
void * field_18;
diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c
index 4164ac76..31917596 100644
--- a/arm9/modules/63/src/mod63_021DB450.c
+++ b/arm9/modules/63/src/mod63_021DB450.c
@@ -69,12 +69,12 @@ THUMB_FUNC u32 MOD63_021DB498(void)
return 32;
}
-THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB450 * arg0)
+THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB450 * arg0) //TODO: this does a lot more than setup anim sprites
{
struct UnkStruct63_021DB49C sp1C;
int introMonArray[3] = {SPECIES_TURTWIG, SPECIES_CHIMCHAR, SPECIES_PIPLUP};
- arg0->field_00 = FUN_02006D98(76);
+ arg0->field_00 = FUN_02006D98(76); //this is needed to get into the world view, otherwise it is just black
for (u8 i = 0; i < 3; i++) //some kind of animation assignment TODO: investigate further
{
diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s
index 95660bd2..ca8faeb0 100644
--- a/arm9/modules/66/asm/module_66.s
+++ b/arm9/modules/66/asm/module_66.s
@@ -259,7 +259,7 @@ _021D7694:
add r1, #0x88
str r0, [r1]
ldr r0, [r4, #4]
- bl FUN_020345A8
+ bl MapMatrix_MapData_New
str r0, [r4, #0x30]
ldr r0, _021D7744 ; =0x021D9AA0
ldr r1, [r4, #4]
@@ -345,7 +345,7 @@ _021D7782:
ldr r0, [r5, #0x40]
bl MOD66_021D9544
ldr r0, [r5, #0x30]
- bl FUN_020345DC
+ bl MapMatrix_MapData_Free
add r0, r5, #0
add r0, #0x88
ldr r0, [r0]
@@ -1648,7 +1648,7 @@ MOD66_021D818C: ; 0x021D818C
ldr r0, [r5, #0x30]
ldr r1, [r4, #0x18]
ldr r2, [r4, #0x1c]
- bl FUN_020345F0
+ bl MapMatrix_MapData_GetData
str r0, [r4, #0x20]
ldrh r3, [r5, #2]
ldr r0, [r5, #0x40]
@@ -1932,7 +1932,7 @@ MOD66_021D8380: ; 0x021D8380
ldr r0, [r6, #0x30]
ldr r1, [sp, #4]
add r2, r7, #0
- bl FUN_020345F0
+ bl MapMatrix_MapData_GetData
add r1, r5, #0
add r2, r0, #0
ldr r3, [sp, #4]
diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s
index 16e58c34..26a78f49 100644
--- a/arm9/modules/74/asm/module_74.s
+++ b/arm9/modules/74/asm/module_74.s
@@ -35,10 +35,10 @@ MOD74_021D74E0: ; 0x021D74E0
bl FUN_02029FC8
str r0, [r4, #0x1c]
ldr r0, [r5]
- bl FUN_0202A8D8
+ bl SaveStruct23_GetSubstruct2
str r0, [r4, #0x20]
ldr r0, [r5]
- bl FUN_0202A8E4
+ bl SaveStruct23_GetSubstruct4
str r0, [r4, #0x24]
mov r0, #0x4a
str r0, [r4]
@@ -967,7 +967,7 @@ MOD74_021D7C10: ; 0x021D7C10
ldr r0, [r5, #0x20]
lsr r1, r1, #0x10
mov r2, #0
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
lsl r2, r0, #0x10
add r0, sp, #0x18
ldrb r6, [r0, #0x10]
@@ -1195,7 +1195,7 @@ _021D7E04:
bl AddTextPrinterParameterized2
ldr r0, [r4, #0x20]
mov r1, #0
- bl FUN_0202A444
+ bl SaveStruct23_Substruct2_SetField_0x3
mov r1, #0
add r2, r0, #0
str r1, [sp]
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index a1fe2ee3..fae0c264 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -15323,7 +15323,7 @@ _02234FFC:
mov r0, #3
mov r1, #1
mov r2, #0
- bl FUN_02033F70
+ bl ShowCommunicationError
_02235006:
mov r0, #3
pop {r3, r4, r5, pc}
diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s
index b7ad2955..01d50253 100644
--- a/arm9/modules/82/asm/module_82.s
+++ b/arm9/modules/82/asm/module_82.s
@@ -1400,7 +1400,7 @@ MOD82_0222E050: ; 0x0222E050
ldr r0, [r4]
mov r1, #0
ldr r0, [r0]
- bl FUN_0202A444
+ bl SaveStruct23_Substruct2_SetField_0x3
str r0, [r4, #0x38]
str r0, [r4, #0x3c]
mov r0, #1
@@ -2629,7 +2629,7 @@ _0222EA38:
lsr r1, r1, #0x18
lsr r2, r2, #0x18
add r3, sp, #0
- bl FUN_0202A6B4
+ bl SaveStruct23_Substruct4_GetArrayFlag
cmp r0, #0
beq _0222EA66
mov r0, #0x12
@@ -2795,7 +2795,7 @@ _0222EB94:
add r1, #0x48
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_0202A754
+ bl SaveStruct23_Substruct4_SetSubstruct1
add r0, r4, #0
mov r1, #0x25
mov r2, #0x11
@@ -2812,7 +2812,7 @@ _0222EB94:
lsr r1, r1, #0x18
lsr r2, r2, #0x18
add r3, sp, #0
- bl FUN_0202A60C
+ bl SaveStruct23_Substruct4_SetArrayFlag
b _0222EC44
_0222EBD6:
mov r1, #0x3b
@@ -2995,7 +2995,7 @@ _0222ED32:
mov r1, #5
ldr r0, [r0]
mov r2, #2
- bl FUN_0202A578
+ bl SaveStruct23_Substruct2_SetFlag
add r0, r4, #0
mov r1, #0x25
mov r2, #0x1a
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index d58de0be..06fa49b6 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -2334,7 +2334,7 @@ _0222E7F8:
pop {r3, pc}
_0222E802:
ldr r0, _0222E840 ; =MOD83_0223A8C4
- bl FUN_020224D8
+ bl Reset_To_File
pop {r3, pc}
_0222E80A:
bl FUN_0200541C
diff --git a/arm9/src/bag_view.c b/arm9/src/bag_view.c
index 91bbafd2..31d53861 100644
--- a/arm9/src/bag_view.c
+++ b/arm9/src/bag_view.c
@@ -7,14 +7,13 @@
#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);
-extern u32 FUN_0202A8D8(struct SaveBlock2 *);
-extern u16 FUN_0202A3B4(u32, u32, u32);
THUMB_FUNC struct BagView *BagView_New(u8 heap_id)
{
@@ -122,7 +121,7 @@ THUMB_FUNC u32 FUN_0206E3D8(struct SaveBlock2 *sav2)
THUMB_FUNC u32 FUN_0206E3E8(struct SaveBlock2 *sav2)
{
- return FUN_0202A3B4(FUN_0202A8D8(sav2), 0, 0);
+ 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)
diff --git a/arm9/src/communication_error.c b/arm9/src/communication_error.c
new file mode 100644
index 00000000..0ea26458
--- /dev/null
+++ b/arm9/src/communication_error.c
@@ -0,0 +1,159 @@
+#include "global.h"
+#include "bg_window.h"
+#include "communication_error.h"
+#include "game_init.h"
+#include "MI_dma.h"
+#include "msgdata.h"
+#include "msgdata/msg.naix"
+#include "text.h"
+
+extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id);
+extern void FUN_0200A274(fx32 brightness, fx32, u32);
+extern void FUN_0200CB00(struct BgConfig* bg_config, enum GFBgLayer layer, u32 num_tiles, u32, u8, u32 heap_id);
+extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_value, u32 palette_num);
+extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen);
+extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32);
+
+static const struct WindowTemplate sCommunicationErrorWindowTemplate = {
+ .bgId = GF_BG_LYR_MAIN_0,
+ .tilemapLeft = 3,
+ .tilemapTop = 3,
+ .width = 26,
+ .height = 18,
+ .paletteNum = 0x01,
+ .baseTile = 0x23,
+};
+
+static const struct GraphicsModes sCommunicationErrorGraphicsModes = {
+ .dispMode = GX_DISPMODE_GRAPHICS,
+ .bgMode = GX_BGMODE_0,
+ .subMode = GX_BGMODE_0,
+ ._2d3dMode = GX_BG0_AS_2D,
+};
+
+static const struct BgTemplate sCommunicationErrorBgTemplate = {
+ .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 = GX_BG_AREAOVER_XLU,
+ .unk17 = 0,
+ .mosaic = FALSE,
+};
+
+static const struct GraphicsBanks sCommunicationErrorGraphicsBanks = {
+ .bg = 3,
+ .bgextpltt = 0,
+ .subbg = 0,
+ .subbgextpltt = 0,
+ .obj = 0,
+ .objextpltt = 0,
+ .subobj = 0,
+ .subobjextpltt = 0,
+ .tex = 0,
+ .texpltt = 0,
+};
+
+THUMB_FUNC void FUN_02033F50(void)
+{
+ DTCM.intr_check |= 1;
+ MI_WaitDma(3);
+}
+
+THUMB_FUNC void ShowCommunicationError(u32 heap_id, u32 error, u32 error_code)
+{
+ struct Window window;
+
+ u32 error_message_no;
+ switch (error)
+ {
+ default:
+ case 0:
+ error_message_no = 1;
+ break;
+ case 1:
+ error_message_no = 2;
+ break;
+ case 2:
+ error_message_no = 3;
+ break;
+ case 3:
+ error_message_no = 4;
+ break;
+ case 4:
+ error_message_no = 5;
+ break;
+ }
+
+ FUN_0200E3A0(PM_LCD_TOP, 0);
+ FUN_0200E3A0(PM_LCD_BOTTOM, 0);
+
+ OS_DisableIrqMask(OS_IE_V_BLANK);
+ OS_SetIrqFunction(OS_IE_V_BLANK, FUN_02033F50);
+ OS_EnableIrqMask(OS_IE_V_BLANK);
+
+ Main_SetVBlankIntrCB(NULL, NULL);
+ FUN_02015F34(NULL, NULL);
+
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+
+ SetKeyRepeatTimers(4, 8);
+
+ gMain.unk65 = 0;
+
+ GX_SwapDisplay();
+ reg_G2_BLDCNT = 0;
+ reg_G2S_DB_BLDCNT = 0;
+ reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
+ reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
+ GX_SetBanks(&sCommunicationErrorGraphicsBanks);
+
+ struct BgConfig* bg_config = BgConfig_Alloc(heap_id);
+
+ SetBothScreensModesAndDisable(&sCommunicationErrorGraphicsModes);
+
+ InitBgFromTemplate(bg_config, 0, &sCommunicationErrorBgTemplate, 0);
+ BgClearTilemapBufferAndCommit(bg_config, 0);
+ FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id);
+ FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id);
+ BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id);
+ BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21);
+ BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21);
+
+ struct MsgData* error_message_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0200_bin, heap_id);
+ struct String* error_message_str = String_ctor(384, heap_id);
+ struct String* tmp_str = String_ctor(384, heap_id);
+ FUN_0201BD5C();
+ struct ScrStrBufs* mgr = ScrStrBufs_new(heap_id);
+
+ AddWindow(bg_config, &window, &sCommunicationErrorWindowTemplate);
+ FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
+ FUN_0200CCA4(&window, FALSE, 0x01F7, 2);
+
+ BufferIntegerAsString(mgr, 0, (s32)error_code, 5, 2, 1);
+ ReadMsgDataIntoString(error_message_data, error_message_no, tmp_str);
+ StringExpandPlaceholders(mgr, error_message_str, tmp_str);
+
+ AddTextPrinterParameterized(&window, 0, error_message_str, 0, 0, 0, NULL);
+ String_dtor(error_message_str);
+ // BUG: tmp_str is never destroyed.
+
+ GX_BothDispOn();
+ FUN_0200E394(PM_LCD_TOP);
+ FUN_0200E394(PM_LCD_BOTTOM);
+ FUN_0200A274(0, 0x3F, 3);
+
+ RemoveWindow(&window);
+ DestroyMsgData(error_message_data);
+ ScrStrBufs_delete(mgr);
+ FreeToHeap(bg_config);
+}
diff --git a/arm9/src/font.c b/arm9/src/font.c
index e09b0341..6c838892 100644
--- a/arm9/src/font.c
+++ b/arm9/src/font.c
@@ -1,16 +1,17 @@
#include "global.h"
#include "font.h"
#include "gf_gfx_loader.h"
+#include "graphic/font.naix"
#include "render_text.h"
#include "string16.h"
#include "text.h"
-#include "graphic/font.naix"
+#include "unk_0201B8B8.h"
struct UnkStruct_02002C14 *UNK_02106FC8;
struct UnkStruct_02002C14 UNK_02106FCC;
-const u16 UNK_020ECB54[4][2] = { {0, 0}, {1, 0}, {2, 0}, {3, 0} };
+const u16 UNK_020ECB54[4][2] = { { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 } };
const struct FontInfo gFontInfos[5] = {
{ 0x0B, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02 },
@@ -164,10 +165,67 @@ THUMB_FUNC s32 GetFontAttribute(u8 fontId, s32 attr)
THUMB_FUNC void FUN_02002ED0(u32 layer, u32 baseAddr, u32 heap_id)
{
- GfGfxLoader_GXLoadPal(NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, layer, baseAddr, 0x20, heap_id);
+ GfGfxLoader_GXLoadPal(
+ NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, layer, baseAddr, 0x20, heap_id);
}
THUMB_FUNC void FUN_02002EEC(u32 layer, u32 baseAddr, u32 heap_id)
{
- GfGfxLoader_GXLoadPal(NARC_GRAPHIC_FONT, NARC_font_narc_0007_NCLR, layer, baseAddr, 0x20, heap_id);
+ GfGfxLoader_GXLoadPal(
+ NARC_GRAPHIC_FONT, NARC_font_narc_0007_NCLR, layer, baseAddr, 0x20, heap_id);
+}
+
+THUMB_FUNC s32 FUN_02002F08(u32 param0, struct String *str, u32 param2)
+{
+ GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL);
+
+ return StringGetWidth(UNK_02106FC8->unk94[param0], String_c_str(str), param2);
+}
+
+THUMB_FUNC u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3)
+{
+ u32 r0 = FUN_02002E14(param0, str, param2);
+ if (r0 < param3)
+ {
+ return (param3 - r0) / 2;
+ }
+
+ return 0;
+}
+
+THUMB_FUNC u32 FUN_02002F58(const u16 *str)
+{
+ u32 r5 = 1;
+ while (*str != EOS)
+ {
+ if (*str == 0xFFFE)
+ {
+ str = MsgArray_SkipControlCode(str);
+ continue;
+ }
+
+ if (*str == 0xE000)
+ {
+ r5++;
+ str++;
+ continue;
+ }
+
+ str++;
+ }
+
+ return r5;
+}
+
+THUMB_FUNC u32 FUN_02002F90(struct String *str)
+{
+ return FUN_02002F58(String_c_str(str));
+}
+
+THUMB_FUNC s32 FUN_02002F9C(u32 param0, struct String *str)
+{
+ GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL);
+
+ return StringGetWidth_SingleLine_HandleClearToControlCode(
+ UNK_02106FC8->unk94[param0], String_c_str(str));
}
diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c
index 1c6098ea..44dcc111 100644
--- a/arm9/src/game_init.c
+++ b/arm9/src/game_init.c
@@ -7,6 +7,7 @@
#include "MWC_string.h"
#include "tp.h"
#include "unk_0201B4E8.h"
+#include "unk_02022450.h"
#include "game_init.h"
#include "registers.h"
#include "heap.h"
@@ -14,20 +15,6 @@
#pragma thumb on
-extern void FUN_02022450(void);
-
-typedef volatile struct
-{
- u8 sys_and_irq_stack[0x3F80];
- u8 svc_stack[0x40];
- u8 reserved[0x38];
- u32 intr_check;
- void * intr_vector;
-}
-OS_DTCM;
-
-#define DTCM (*(OS_DTCM *)HW_DTCM)
-
static struct {
void * contents;
u32 name_hash;
diff --git a/arm9/src/main.c b/arm9/src/main.c
index 46f8add7..fb4f8707 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -5,6 +5,7 @@
#include "CARD_backup.h"
#include "CARD_pullOut.h"
#include "CTRDG_common.h"
+#include "communication_error.h"
#include "PAD_pad.h"
#include "main.h"
#include "game_init.h"
@@ -14,6 +15,7 @@
#include "timer3.h"
#include "unk_02031734.h"
#include "unk_0202F150.h"
+#include "wfc_user_info_warning.h"
#include "module_52.h"
#include "font.h"
@@ -29,7 +31,6 @@ struct UnkStruct_02016FA8 UNK_02016FA8;
extern void FUN_02022294(void);
extern void GF_InitRTCWork(void);
extern int FUN_020337E8(int);
-extern void FUN_02034188(int, int);
extern void FUN_02089D90(int);
extern void FUN_0200A2AC(void);
extern void FUN_02015E30(void);
@@ -69,7 +70,7 @@ THUMB_FUNC void NitroMain(void)
InitSoundData(Sav2_Chatot_get(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18));
Init_Timer3();
if (FUN_020337E8(3) == 3)
- FUN_02034188(3, 0);
+ ShowWFCUserInfoWarning(3, 0);
if (FUN_020227FC(UNK_02016FA8.unk18) == 0)
{
FUN_02089D90(0);
@@ -226,21 +227,19 @@ THUMB_FUNC void DoSoftReset(u32 parameter)
} while (1);
}
-extern void FUN_02033F70(int, int, int);
-
THUMB_FUNC void FUN_02000F4C(u32 arg0, u32 arg1)
{
if (arg1 == 3)
{
- FUN_02033F70(0, 3, 0);
+ ShowCommunicationError(0, 3, 0);
}
else if (arg0 == 0)
{
- FUN_02033F70(0, 2, 0);
+ ShowCommunicationError(0, 2, 0);
}
else
{
- FUN_02033F70(0, 0, 0);
+ ShowCommunicationError(0, 0, 0);
}
FUN_02032DAC();
while (1)
diff --git a/arm9/src/map_header.c b/arm9/src/map_header.c
index 644a590b..49f8e986 100644
--- a/arm9/src/map_header.c
+++ b/arm9/src/map_header.c
@@ -1,39 +1,55 @@
#include "global.h"
#include "map_header.h"
#include "constants/map_sections.h"
+#include "pokemon.h"
#pragma thumb on
// Static decls
u32 MapNumberBoundsCheck(u32 mapno);
-const u16 UNK_020EED54[] = {
- 0x01A5, 0x01AD, 0x01B4, 0x01BC, 0x01C5, 0x01CC, 0x0007, 0x0025,
- 0x0031, 0x01EF, 0x0046, 0x0066, 0x007C, 0x0087, 0x0098, 0x00A9,
- 0x00AE, 0x00BE
+static const u16 sPokemonCenterSecondFloorMaps[] = {
+ 421,
+ 429,
+ 436,
+ 444,
+ 453,
+ 460,
+ 7,
+ 37,
+ 49,
+ 495,
+ 70,
+ 102,
+ 124,
+ 135,
+ 152,
+ 169,
+ 174,
+ 190
};
-const u16 UNK_020EED78[] = {
- 0x0181, 0x001A,
- 0x00CB, 0x0019,
- 0x00CF, 0x0018,
- 0x00D0, 0x0018,
- 0x00D1, 0x0018,
- 0x00D2, 0x0018,
- 0x00D3, 0x0018,
- 0x00D4, 0x0018,
- 0x00D5, 0x0018,
- 0x00D6, 0x0018,
- 0x00D7, 0x0018,
- 0x00D8, 0x0018,
- 0x00D9, 0x0018,
- 0x00DA, 0x0018,
- 0x00DB, 0x0018,
- 0x00DC, 0x0018,
- 0x00DD, 0x0018,
+static const u16 sMapEvolutionMethods[] = {
+ 385, EVO_ROUTE217,
+ 203, EVO_ETERNA,
+ 207, EVO_CORONET,
+ 208, EVO_CORONET,
+ 209, EVO_CORONET,
+ 210, EVO_CORONET,
+ 211, EVO_CORONET,
+ 212, EVO_CORONET,
+ 213, EVO_CORONET,
+ 214, EVO_CORONET,
+ 215, EVO_CORONET,
+ 216, EVO_CORONET,
+ 217, EVO_CORONET,
+ 218, EVO_CORONET,
+ 219, EVO_CORONET,
+ 220, EVO_CORONET,
+ 221, EVO_CORONET,
};
-const struct MapHeader sMapHeaders[] = {
+static const struct MapHeader sMapHeaders[] = {
{ 0x0, 0x0, 0x0, 0x170, 0x33b, 0x12, 0x3e8, 0x3e8, 0xffff, 0x0, MAPSEC_MYSTERY_ZONE, 0x0, 0x0, 0x2, 3, TRUE, TRUE, TRUE, FALSE },
{ 0x0, 0x0, 0x0, 0x170, 0x33b, 0x12, 0x3e8, 0x3e8, 0xffff, 0x0, MAPSEC_MYSTERY_ZONE, 0x0, 0x0, 0x0, 3, FALSE, FALSE, FALSE, FALSE },
{ 0x2, 0x2, 0x2, 0x413, 0x3ca, 0x236, 0x424, 0x424, 0xffff, 0x1, MAPSEC_MYSTERY_ZONE, 0x0, 0x0, 0x6, 3, FALSE, FALSE, FALSE, FALSE },
@@ -694,16 +710,16 @@ u8 MapHeader_GetCameraType(u32 mapno)
return sMapHeaders[mapno].camera_type;
}
-u8 MapHeader_GetField17_0(u32 mapno)
+u8 MapHeader_GetBattleBg(u32 mapno)
{
mapno = MapNumberBoundsCheck(mapno);
- return sMapHeaders[mapno].unk17_0;
+ return sMapHeaders[mapno].battle_bg;
}
-u8 MapHeader_GetField17_6(u32 mapno)
+u8 MapHeader_IsEscapeRopeAllowed(u32 mapno)
{
mapno = MapNumberBoundsCheck(mapno);
- return sMapHeaders[mapno].unk17_6;
+ return sMapHeaders[mapno].is_escape_rope_allowed;
}
u8 MapHeader_IsFlyAllowed(u32 mapno)
@@ -733,7 +749,7 @@ BOOL FUN_020348E4(u32 mapno)
return FALSE;
}
-BOOL MapHeader_MapIsOnOverworldMatrix(u32 mapno)
+BOOL MapHeader_MapIsOnMainMatrix(u32 mapno)
{
return MapHeader_GetMatrixId(mapno) == 0;
}
@@ -760,56 +776,56 @@ BOOL FUN_02034964(u32 mapno)
BOOL FUN_02034984(u32 mapno)
{
- return !!FUN_0203491C(mapno);
+ return FUN_0203491C(mapno) != FALSE;
}
-BOOL FUN_02034998(u32 mapno)
+BOOL MapHeader_MapIsUnionRoom(u32 mapno)
{
return mapno == 466;
}
-BOOL FUN_020349AC(u32 mapno)
+BOOL MapHeader_MapIsMtCoronetFeebasRoom(u32 mapno)
{
return mapno == 219;
}
-BOOL FUN_020349B8(u32 mapno)
+BOOL MapHeader_MapIsTrophyGarden(u32 mapno)
{
return mapno == 287;
}
-BOOL FUN_020349CC(u32 mapno)
+BOOL MapHeader_MapIsAmitySquare(u32 mapno)
{
return mapno == 253;
}
-BOOL FUN_020349D8(u32 mapno)
+BOOL MapHeader_MapIsSpearPillar(u32 mapno)
{
return mapno == 220;
}
-BOOL FUN_020349E4(u16 a0)
+BOOL MapHeader_MapIsPokemonCenterSecondFloor(u32 mapno)
{
int i;
- for (i = 0; i < NELEMS(UNK_020EED54); i++)
+ for (i = 0; i < NELEMS(sPokemonCenterSecondFloorMaps); i++)
{
- if (a0 == UNK_020EED54[i])
+ if (mapno == sPokemonCenterSecondFloorMaps[i])
return TRUE;
}
return FALSE;
}
-u16 FUN_02034A04(u16 a0)
+u16 MapHeader_GetMapEvolutionMethod(u32 mapno)
{
int i;
- for (i = 0; i < NELEMS(UNK_020EED78); i += 2)
+ for (i = 0; i < NELEMS(sMapEvolutionMethods); i += 2)
{
- if (a0 == UNK_020EED78[i + 0])
- return UNK_020EED78[i + 1];
+ if (mapno == sMapEvolutionMethods[i + 0])
+ return sMapEvolutionMethods[i + 1];
}
- return 0;
+ return EVO_NONE;
}
diff --git a/arm9/src/map_matrix.c b/arm9/src/map_matrix.c
new file mode 100644
index 00000000..1808d82c
--- /dev/null
+++ b/arm9/src/map_matrix.c
@@ -0,0 +1,231 @@
+#include "global.h"
+#include "map_matrix.h"
+#include "MI_memory.h"
+#include "filesystem.h"
+#include "heap.h"
+#include "map_header.h"
+
+THUMB_FUNC static void MapMatrix_MapMatrixData_Load(
+ struct MapMatrixData *map_matrix, u16 file_id, u32 map_id)
+{
+ map_matrix->width = 0;
+ map_matrix->height = 0;
+
+ s32 i;
+ for (i = 0; i < MAP_MATRIX_MAX_SIZE; i++)
+ {
+ map_matrix->headers[i] = 0;
+ map_matrix->altitudes[i] = 0;
+ map_matrix->maps.data[i] = 0;
+ }
+
+ for (i = 0; i < MAP_MATRIX_MAX_NAME_LENGTH; i++)
+ {
+ map_matrix->name[i] = 0;
+ }
+
+ void *buffer =
+ AllocAtEndAndReadWholeNarcMemberByIdPair(NARC_FIELDDATA_MAPMATRIX_MAP_MATRIX, file_id, 11);
+ u8 *cursor = (u8 *)buffer;
+
+ map_matrix->width = *(cursor++);
+ map_matrix->height = *(cursor++);
+ u8 has_headers_section = *(cursor++);
+ u8 has_altitudes_section = *(cursor++);
+ u8 name_length = *(cursor++);
+
+ GF_ASSERT(name_length <= MAP_MATRIX_MAX_NAME_LENGTH);
+
+ MI_CpuCopy8(cursor, &map_matrix->name, name_length);
+ cursor += name_length;
+
+ if (has_headers_section != 0)
+ {
+ MI_CpuCopy8(
+ cursor, &map_matrix->headers, map_matrix->width * map_matrix->height * sizeof(u16));
+ cursor += map_matrix->width * map_matrix->height * sizeof(u16);
+ }
+ else
+ {
+ MIi_CpuClear16((u16)map_id,
+ &map_matrix->headers,
+ map_matrix->width * map_matrix->height * sizeof(u16));
+ }
+
+ if (has_altitudes_section != 0)
+ {
+ MI_CpuCopy8(
+ cursor, &map_matrix->altitudes, map_matrix->width * map_matrix->height * sizeof(u8));
+ cursor += map_matrix->width * map_matrix->height * sizeof(u8);
+ }
+
+ MI_CpuCopy8(
+ cursor, map_matrix->maps.data, map_matrix->width * map_matrix->height * sizeof(u16));
+ FreeToHeap(buffer);
+}
+
+THUMB_FUNC struct MapMatrix *MapMatrix_New(void)
+{
+ struct MapMatrix *map_matrix = AllocFromHeap(11, sizeof(struct MapMatrix));
+
+ map_matrix->width = 0;
+ map_matrix->height = 0;
+ map_matrix->matrix_id = 0;
+
+ return map_matrix;
+}
+
+THUMB_FUNC void MapMatrix_Load(u16 map_id, struct MapMatrix *map_matrix)
+{
+ u16 matrix_id = MapHeader_GetMatrixId(map_id);
+
+ MapMatrix_MapMatrixData_Load(&map_matrix->data, matrix_id, map_id);
+
+ map_matrix->matrix_id = (u8)matrix_id;
+ map_matrix->height = map_matrix->data.height;
+ map_matrix->width = map_matrix->data.width;
+}
+
+THUMB_FUNC void MapMatrix_Free(struct MapMatrix *map_matrix)
+{
+ FreeToHeap(map_matrix);
+}
+
+THUMB_FUNC u16 MapMatrix_GetMapData(s32 map_id, struct MapMatrix *map_matrix)
+{
+ GF_ASSERT(map_id < map_matrix->width * map_matrix->height);
+
+ return map_matrix->data.maps.data[map_id];
+}
+
+THUMB_FUNC u8 MapMatrix_GetWidth(struct MapMatrix *map_matrix)
+{
+ GF_ASSERT(map_matrix != NULL);
+
+ return map_matrix->width;
+}
+
+THUMB_FUNC u8 MapMatrix_GetHeight(struct MapMatrix *map_matrix)
+{
+ GF_ASSERT(map_matrix != NULL);
+
+ return map_matrix->height;
+}
+
+THUMB_FUNC u16 MapMatrix_GetMapHeader(struct MapMatrix *map_matrix, s32 x, s32 y)
+{
+ s32 width = map_matrix->width;
+ s32 height = map_matrix->height;
+
+ GF_ASSERT(x >= 0 && x < width);
+ GF_ASSERT(y >= 0 && y < height);
+
+ return map_matrix->data.headers[y * width + x];
+}
+
+THUMB_FUNC u16 MapMatrix_GetMapHeaderFromID(struct MapMatrix *map_matrix, s32 map_id)
+{
+ s32 max_map_id = map_matrix->width * map_matrix->height;
+
+ GF_ASSERT(0 <= map_id && map_id < max_map_id);
+
+ return map_matrix->data.headers[map_id];
+}
+
+THUMB_FUNC u8 MapMatrix_GetMatrixID(struct MapMatrix *map_matrix)
+{
+ return map_matrix->matrix_id;
+}
+
+THUMB_FUNC u32 MapMatrix_GetMapAltitude(
+ struct MapMatrix *map_matrix, u8 param1, s16 x, s16 y, int matrix_width)
+{
+#pragma unused(param1)
+ GF_ASSERT(x < matrix_width);
+ GF_ASSERT(y * matrix_width + x < MAP_MATRIX_MAX_SIZE);
+
+ return map_matrix->data.altitudes[y * matrix_width + x];
+}
+
+THUMB_FUNC struct MapData *MapMatrix_MapData_New(u32 heap_id)
+{
+ struct MapData *map_data = AllocFromHeap(heap_id, sizeof(struct MapData));
+ void *buffer =
+ AllocAtEndAndReadWholeNarcMemberByIdPair(NARC_FIELDDATA_MAPMATRIX_MAP_MATRIX, 0, heap_id);
+ u8 *cursor = (u8 *)buffer;
+
+ cursor += 4;
+ u8 name_length = *cursor;
+ cursor++;
+ cursor += name_length;
+
+ MI_CpuCopy8(cursor, map_data, sizeof(struct MapData));
+ FreeToHeap(buffer);
+
+ return map_data;
+}
+
+THUMB_FUNC void MapMatrix_MapData_Free(struct MapData *map_data)
+{
+ GF_ASSERT(map_data != NULL);
+ FreeToHeap(map_data);
+}
+
+THUMB_FUNC u16 MapMatrix_MapData_GetData(struct MapData *map_data, s32 x, s32 y)
+{
+ return map_data->data[MAP_MATRIX_MAX_WIDTH * y + x];
+}
+
+THUMB_FUNC u16 GetMapHeader(u32 file_id, u16 x, u16 y)
+{
+ struct MapMatrixData map_matrix;
+
+ MapMatrix_MapMatrixData_Load(&map_matrix, (u16)file_id, 0);
+ GF_ASSERT(x < map_matrix.width);
+ GF_ASSERT(y < map_matrix.height);
+
+ return map_matrix.headers[y * map_matrix.width + x];
+}
+
+THUMB_FUNC u16 GetMapData(s32 map_id, struct MapMatrix *map_matrix)
+{
+ GF_ASSERT(map_matrix != NULL);
+ return MapMatrix_GetMapData(map_id, map_matrix);
+}
+
+THUMB_FUNC void FUN_02034678(struct MapMatrix *map_matrix)
+{
+ u16 *maps = map_matrix->data.maps.data;
+ u8 *altitudes = map_matrix->data.altitudes;
+ u8 width = map_matrix->width;
+
+ if (map_matrix->matrix_id != 0)
+ {
+ return;
+ }
+
+ maps[width * 0x15 + 0x17] = 0xB0;
+ maps[width * 0x15 + 0x18] = 0xB0;
+ maps[width * 0x16 + 0x17] = 0xB0;
+ maps[width * 0x16 + 0x18] = 0xB0;
+ altitudes[width * 0x15 + 0x17] = 2;
+ altitudes[width * 0x15 + 0x18] = 2;
+ altitudes[width * 0x16 + 0x17] = 2;
+ altitudes[width * 0x16 + 0x18] = 2;
+}
+
+THUMB_FUNC void FUN_020346CC(struct MapMatrix *map_matrix)
+{
+ u16 *maps = map_matrix->data.maps.data;
+ u8 width = map_matrix->width;
+
+ if (map_matrix->matrix_id != 0)
+ {
+ return;
+ }
+
+ maps[width * 0x0F + 0x1C] = 0x77;
+ maps[width * 0x10 + 0x1B] = 0x78;
+ maps[width * 0x10 + 0x1C] = 0x79;
+ maps[width * 0x11 + 0x1B] = 0x7A;
+}
diff --git a/arm9/src/palette.c b/arm9/src/palette.c
new file mode 100644
index 00000000..902bb386
--- /dev/null
+++ b/arm9/src/palette.c
@@ -0,0 +1,692 @@
+#include "global.h"
+#include "MSL.h"
+#include "palette.h"
+#include "MI_memory.h"
+#include "gf_gfx_loader.h"
+#include "unk_0200CA44.h"
+#include "unk_020222E8.h"
+
+THUMB_FUNC struct PaletteData *FUN_02002FD0(u32 heap_id)
+{
+ struct PaletteData *ptr = AllocFromHeap(heap_id, sizeof(struct PaletteData));
+ MI_CpuFill8(ptr, 0, sizeof(struct PaletteData));
+
+ return ptr;
+}
+
+THUMB_FUNC void FUN_02002FEC(struct PaletteData *ptr)
+{
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void PaletteData_SetBuffers(
+ struct PaletteData *paletteData, u32 index, void *unfadedBuf, void *fadedBuf, u32 size)
+{
+ paletteData->pltt[index].unfadedBuf = unfadedBuf;
+ paletteData->pltt[index].fadedBuf = fadedBuf;
+ paletteData->pltt[index].bufSize = size;
+}
+
+THUMB_FUNC void PaletteData_AllocBuffers(
+ struct PaletteData *paletteData, u32 index, u32 size, u32 heap_id)
+{
+ void *ptr = AllocFromHeap(heap_id, size);
+ void *ptr2 = AllocFromHeap(heap_id, size);
+
+ PaletteData_SetBuffers(paletteData, index, ptr, ptr2, size);
+}
+
+THUMB_FUNC void PaletteData_FreeBuffers(struct PaletteData *paletteData, u32 index)
+{
+ FreeToHeap(paletteData->pltt[index].unfadedBuf);
+ FreeToHeap(paletteData->pltt[index].fadedBuf);
+}
+
+THUMB_FUNC void PaletteData_LoadPalette(
+ struct PaletteData *paletteData, const void *src, u32 index, u32 offset, u16 size)
+{
+ MIi_CpuCopy16(src, paletteData->pltt[index].unfadedBuf + offset, size);
+ MIi_CpuCopy16(src, paletteData->pltt[index].fadedBuf + offset, size);
+}
+
+THUMB_FUNC void PaletteData_LoadFromNarc(struct PaletteData *paletteData,
+ NarcId narcId,
+ s32 memberId,
+ u32 heap_id,
+ u32 index,
+ u32 size,
+ u16 offset,
+ u16 param7)
+{
+ NNSG2dPaletteData *pltData;
+ void *ptr = GfGfxLoader_GetPlttData(narcId, memberId, &pltData, heap_id);
+
+ GF_ASSERT(ptr != NULL);
+
+ if (size == 0)
+ {
+ size = pltData->szByte;
+ }
+
+ GF_ASSERT(size + offset * 2 <= paletteData->pltt[index].bufSize);
+
+ PaletteData_LoadPalette(paletteData, pltData->pRawData + param7 * 2, index, offset, (u16)size);
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void PaletteData_LoadNarc(struct PaletteData *paletteData,
+ NarcId narcId,
+ s32 memberId,
+ u32 heap_id,
+ u32 index,
+ u32 size,
+ u16 offset)
+{
+ PaletteData_LoadFromNarc(paletteData, narcId, memberId, heap_id, index, size, offset, 0);
+}
+
+THUMB_FUNC void FUN_02003108(struct PaletteData *paletteData, u32 index, u16 offset, u32 size)
+{
+ GF_ASSERT(offset * 2 + size <= paletteData->pltt[index].bufSize);
+
+ u16 *ptr;
+ switch (index)
+ {
+ case 0:
+ ptr = FUN_020222E8();
+ break;
+ case 1:
+ ptr = FUN_020222F8();
+ break;
+ case 2:
+ ptr = FUN_02022308();
+ break;
+ case 3:
+ ptr = FUN_02022310();
+ break;
+ default:
+ GF_ASSERT(FALSE);
+ return;
+ }
+
+ PaletteData_LoadPalette(paletteData, ptr + offset, index, offset, (u16)size);
+}
+
+THUMB_FUNC void CopyPaletteFromNarc(
+ NarcId narcId, s32 memberId, u32 heap_id, u32 size, u16 offset, void *dest)
+{
+ NNSG2dPaletteData *pltData;
+
+ void *ptr = GfGfxLoader_GetPlttData(narcId, memberId, &pltData, heap_id);
+ GF_ASSERT(ptr != NULL);
+
+ if (size == 0)
+ {
+ size = pltData->szByte;
+ }
+
+ MI_CpuCopy16(pltData->pRawData + offset * 2, dest, size);
+
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void PaletteData_CopyPalette(struct PaletteData *paletteData,
+ u32 srcIdx,
+ u16 srcOffset,
+ u32 destIdx,
+ u16 destOffset,
+ u16 size)
+{
+
+ MI_CpuCopy16(paletteData->pltt[srcIdx].unfadedBuf + srcOffset,
+ paletteData->pltt[destIdx].unfadedBuf + destOffset,
+ size);
+ MI_CpuCopy16(paletteData->pltt[srcIdx].unfadedBuf + srcOffset,
+ paletteData->pltt[destIdx].fadedBuf + destOffset,
+ size);
+}
+
+THUMB_FUNC u16 *PaletteData_GetUnfadedBuf(struct PaletteData *paletteData, u32 index)
+{
+ return paletteData->pltt[index].unfadedBuf;
+}
+
+THUMB_FUNC u16 *PaletteData_GetFadedBuf(struct PaletteData *paletteData, u32 index)
+{
+ return paletteData->pltt[index].fadedBuf;
+}
+
+THUMB_FUNC u32 FUN_02003210(struct PaletteData *paletteData,
+ u16 param1,
+ u16 param2,
+ s16 delay,
+ u8 startY,
+ u8 targetY,
+ u16 color)
+{
+
+ u16 stc = param2;
+ u32 r6 = 0;
+
+ for (u8 i = 0; i < 14; i++)
+ {
+ if (IsPaletteSelected(param1, i) != 1)
+ {
+ continue;
+ }
+
+ if (IsPaletteSelected(paletteData->activeFadePalettes, i) != 0)
+ {
+ continue;
+ }
+
+ FUN_02003368(i, &paletteData->pltt[i], &param2);
+
+ FUN_020033A4(&paletteData->pltt[i].fadeCtrl, param2, delay, startY, targetY, color);
+
+ FUN_02003328(paletteData, i);
+
+ if (i >= 4)
+ {
+ FUN_0200359C(paletteData, i, 0x100);
+ }
+ else
+ {
+ FUN_0200359C(paletteData, i, 0x10);
+ }
+
+ param2 = stc;
+ r6 = 1;
+ }
+
+ if (r6 == 1)
+ {
+ paletteData->activeFadePalettes |= param1;
+ if (paletteData->unk11a_e == 0)
+ {
+ paletteData->unk11a_e = 1;
+
+ paletteData->unk118_0 = 1;
+ paletteData->unk11c = 0;
+
+ FUN_0200CA44((void (*)(u32, void *))FUN_02003464,
+ (void *)paletteData,
+ (u32)(-2));
+ }
+ }
+
+ return r6;
+}
+
+THUMB_FUNC u8 IsPaletteSelected(u16 selectedPalettes, u16 index)
+{
+ u32 r3 = 1;
+ if ((selectedPalettes & (1 << index)) == 0)
+ {
+ r3 = 0;
+ }
+
+ return (u8)r3;
+}
+
+THUMB_FUNC void FUN_02003328(struct PaletteData *param0, u16 param1)
+{
+ if (IsPaletteSelected(param0->unk11a_0, param1) != 1)
+ {
+ param0->unk11a_0 |= 1 << param1;
+ }
+}
+
+THUMB_FUNC void FUN_02003368(s32 param0, struct Palette *param1, u16 *param2)
+{
+ u8 r0;
+ if (param0 < 4)
+ {
+ r0 = (u8)(param1->bufSize >> 5);
+ }
+ else
+ {
+ r0 = (u8)(param1->bufSize >> 9);
+ }
+
+ u16 r4 = 0;
+ for (u8 i = 0; i < r0; i++)
+ {
+ r4 += 1 << i;
+ }
+
+ *param2 &= r4;
+}
+
+THUMB_FUNC void FUN_020033A4(struct PaletteFadeControl *paletteFade,
+ u16 selectedPalettes,
+ s16 delay,
+ u8 startY,
+ u8 targetY,
+ u16 color)
+{
+ if (delay < 0)
+ {
+ paletteFade->deltaY = abs(delay) + 2;
+ paletteFade->delay = 0;
+ }
+ else
+ {
+ paletteFade->deltaY = 2;
+ paletteFade->delay = delay;
+ }
+
+ paletteFade->selectedPalettes = selectedPalettes;
+ paletteFade->y = startY;
+ paletteFade->targetY = targetY;
+ paletteFade->blendColor = color;
+
+ paletteFade->delayCounter = paletteFade->delay;
+
+ if (startY < targetY)
+ {
+ paletteFade->yDec = 0;
+ return;
+ }
+ paletteFade->yDec = 1;
+}
+
+THUMB_FUNC void FUN_02003464(u32 param0, struct PaletteData *param1)
+{
+ if (param1->unk11c == 1)
+ {
+ param1->unk11c = 0;
+ param1->unk11a_0 = 0;
+ param1->activeFadePalettes = 0;
+ param1->unk11a_e = 0;
+ FUN_0200CAB4((s32)param0);
+ return;
+ }
+
+ if (param1->unk118_0 == 1)
+ {
+ param1->unk11a_0 = param1->activeFadePalettes;
+ FUN_02003500(param1);
+ FUN_02003520(param1);
+
+ if (param1->activeFadePalettes == 0)
+ {
+ param1->unk11a_e = 0;
+ FUN_0200CAB4((s32)param0);
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02003500(struct PaletteData *param0)
+{
+ for (u8 i = 0; i < 4; i++)
+ {
+ FUN_02003540(param0, i, 0x10);
+ }
+}
+
+THUMB_FUNC void FUN_02003520(struct PaletteData *param0)
+{
+ for (u8 i = 4; i < 14; i++)
+ {
+ FUN_02003540(param0, i, 0x100);
+ }
+}
+
+THUMB_FUNC void FUN_02003540(struct PaletteData *paletteData, u8 index, u32 param2)
+{
+ if (IsPaletteSelected(paletteData->activeFadePalettes, index) != 0)
+ {
+ if (paletteData->pltt[index].fadeCtrl.delayCounter <
+ paletteData->pltt[index].fadeCtrl.delay)
+ {
+ paletteData->pltt[index].fadeCtrl.delayCounter++;
+ return;
+ }
+
+ paletteData->pltt[index].fadeCtrl.delayCounter = 0;
+ FUN_0200359C(paletteData, index, param2);
+ }
+}
+
+THUMB_FUNC void FUN_0200359C(struct PaletteData *paletteData, u32 index, u32 param2)
+{
+
+ for (u32 i = 0; i < 0x10; i++)
+ {
+ if (IsPaletteSelected(paletteData->pltt[index].fadeCtrl.selectedPalettes, (u16)i) != 0)
+ {
+ FUN_020035F8(paletteData->pltt[index].unfadedBuf + param2 * i,
+ paletteData->pltt[index].fadedBuf + param2 * i,
+ &paletteData->pltt[index].fadeCtrl,
+ param2);
+ }
+ }
+
+ FUN_02003684(paletteData, (u8)index, &paletteData->pltt[index].fadeCtrl);
+}
+
+THUMB_FUNC void FUN_020035F8(
+ u16 *src, u16 *dest, struct PaletteFadeControl *fadeCtrl, u32 numEntries)
+{
+ for (u32 i = 0; i < numEntries; i++)
+ {
+ u8 lo = (u8)((src[i] & 0x1f) +
+ ((((fadeCtrl->blendColor & 0x1f) - (src[i] & 0x1f)) * fadeCtrl->y) >> 4));
+
+ u8 hi = (u8)(((src[i] >> 10) & 0x1f) +
+ (((((fadeCtrl->blendColor >> 10) & 0x1f) - ((src[i] >> 10) & 0x1f)) *
+ fadeCtrl->y) >>
+ 4));
+ u8 mid =
+ (u8)(((src[i] >> 5) & 0x1f) +
+ (((((fadeCtrl->blendColor >> 5) & 0x1f) - ((src[i] >> 5) & 0x1f)) * fadeCtrl->y) >>
+ 4));
+
+ dest[i] = (u16)((hi << 10) | (mid << 5) | lo);
+ }
+}
+
+THUMB_FUNC void FUN_02003684(
+ struct PaletteData *paletteData, u8 index, struct PaletteFadeControl *fadeCtrl)
+{
+ if (fadeCtrl->y == fadeCtrl->targetY)
+ {
+ if ((paletteData->activeFadePalettes & (1 << index)) == 0)
+ {
+ return;
+ }
+
+ paletteData->activeFadePalettes ^= (1 << index);
+
+ return;
+ }
+
+ s16 val;
+ if (fadeCtrl->yDec == 0)
+ {
+ val = (s16)fadeCtrl->y;
+ val += fadeCtrl->deltaY;
+ if (val > fadeCtrl->targetY)
+ {
+ val = (s16)fadeCtrl->targetY;
+ }
+
+ fadeCtrl->y = val;
+ return;
+ }
+
+ val = (s16)fadeCtrl->y;
+ val -= fadeCtrl->deltaY;
+ if (val < fadeCtrl->targetY)
+ {
+ val = (s16)fadeCtrl->targetY;
+ }
+
+ fadeCtrl->y = val;
+}
+
+THUMB_FUNC void FUN_0200372C(struct PaletteData *paletteData)
+{
+ if (paletteData->unk11a_f == 0 && paletteData->unk118_0 != 1)
+ {
+ return;
+ }
+
+ for (s32 i = 0; i < 14; i++)
+ {
+ if (paletteData->unk11a_f != 0 ||
+ (paletteData->pltt[i].fadedBuf != 0 &&
+ IsPaletteSelected(paletteData->unk11a_0, (u16)i) != 0))
+ {
+ DC_FlushRange(paletteData->pltt[i].fadedBuf, paletteData->pltt[i].bufSize);
+
+ switch (i)
+ {
+ case 0:
+ GX_LoadBGPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize);
+ break;
+ case 1:
+ GXS_LoadBGPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize);
+ break;
+ case 2:
+ GX_LoadOBJPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize);
+ break;
+ case 3:
+ GXS_LoadOBJPltt(paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize);
+ break;
+ case 4:
+ GX_BeginLoadBGExtPltt();
+ GX_LoadBGExtPltt(
+ paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize);
+ GX_EndLoadBGExtPltt();
+ break;
+ case 5:
+ GX_BeginLoadBGExtPltt();
+ GX_LoadBGExtPltt(
+ paletteData->pltt[i].fadedBuf, 0x2000, paletteData->pltt[i].bufSize);
+ GX_EndLoadBGExtPltt();
+ break;
+ case 6:
+ GX_BeginLoadBGExtPltt();
+ GX_LoadBGExtPltt(
+ paletteData->pltt[i].fadedBuf, 0x4000, paletteData->pltt[i].bufSize);
+ GX_EndLoadBGExtPltt();
+ break;
+ case 7:
+ GX_BeginLoadBGExtPltt();
+ GX_LoadBGExtPltt(
+ paletteData->pltt[i].fadedBuf, 0x6000, paletteData->pltt[i].bufSize);
+ GX_EndLoadBGExtPltt();
+ break;
+ case 8:
+ GXS_BeginLoadBGExtPltt();
+ GXS_LoadBGExtPltt(
+ paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize);
+ GXS_EndLoadBGExtPltt();
+ break;
+ case 9:
+ GXS_BeginLoadBGExtPltt();
+ GXS_LoadBGExtPltt(
+ paletteData->pltt[i].fadedBuf, 0x2000, paletteData->pltt[i].bufSize);
+ GXS_EndLoadBGExtPltt();
+ break;
+ case 10:
+ GXS_BeginLoadBGExtPltt();
+ GXS_LoadBGExtPltt(
+ paletteData->pltt[i].fadedBuf, 0x4000, paletteData->pltt[i].bufSize);
+ GXS_EndLoadBGExtPltt();
+ break;
+ case 11:
+ GXS_BeginLoadBGExtPltt();
+ GXS_LoadBGExtPltt(
+ paletteData->pltt[i].fadedBuf, 0x6000, paletteData->pltt[i].bufSize);
+ GXS_EndLoadBGExtPltt();
+ break;
+ case 12:
+ GX_BeginLoadOBJExtPltt();
+ GX_LoadOBJExtPltt(
+ paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize);
+ GX_EndLoadOBJExtPltt();
+ break;
+ case 13:
+ GXS_BeginLoadOBJExtPltt();
+ GXS_LoadOBJExtPltt(
+ paletteData->pltt[i].fadedBuf, 0, paletteData->pltt[i].bufSize);
+ GXS_EndLoadOBJExtPltt();
+ break;
+ }
+ }
+ }
+
+ paletteData->unk11a_0 = paletteData->activeFadePalettes;
+ if (paletteData->unk11a_0 == 0)
+ {
+ paletteData->unk118_0 = 0;
+ }
+}
+
+THUMB_FUNC u16 FUN_020038E4(struct PaletteData *paletteData)
+{
+ return paletteData->activeFadePalettes;
+}
+
+THUMB_FUNC void FUN_020038F0(struct PaletteData *paletteData, u32 param1)
+{
+ paletteData->unk11a_f = param1;
+}
+
+THUMB_FUNC void PaletteData_FillPalette(struct PaletteData *paletteData,
+ u32 index,
+ u32 selection,
+ u16 value,
+ u16 startOffset,
+ u16 endOffset)
+{
+ GF_ASSERT(endOffset * 2 <= paletteData->pltt[index].bufSize);
+ if (selection == 1 || selection == 2)
+ {
+ MI_CpuFill16(&paletteData->pltt[index].unfadedBuf[startOffset],
+ value,
+ (u32)((endOffset - startOffset) * 2));
+ }
+
+ if (selection == 0 || selection == 2)
+ {
+ MI_CpuFill16(&paletteData->pltt[index].fadedBuf[startOffset],
+ value,
+ (u32)((endOffset - startOffset) * 2));
+ }
+}
+
+THUMB_FUNC void BlendPalette(u16 *src, u16 *dest, u16 numEntries, u8 coeff, u16 blendColor)
+{
+ s32 r2 = ((struct PlttData *)&blendColor)->r;
+ s32 g2 = ((struct PlttData *)&blendColor)->g;
+ s32 b2 = ((struct PlttData *)&blendColor)->b;
+ for (u16 i = 0; i < numEntries; i++)
+ {
+ s32 r = ((struct PlttData *)&src[i])->r;
+ s32 g = ((struct PlttData *)&src[i])->g;
+ s32 b = ((struct PlttData *)&src[i])->b;
+
+ dest[i] =
+ (u16)(((r + (((r2 - r) * coeff) >> 4)) << 0) | ((g + (((g2 - g) * coeff) >> 4)) << 5) |
+ ((b + (((b2 - b) * coeff) >> 4)) << 10));
+ }
+}
+
+THUMB_FUNC void BlendPaletteUnfaded(struct PaletteData *paletteData,
+ u32 index,
+ u16 offset,
+ u16 numEntries,
+ u8 coeff,
+ u16 blendColor)
+{
+ BOOL r0 = FALSE;
+ if (paletteData->pltt[index].unfadedBuf != 0 && paletteData->pltt[index].fadedBuf != 0)
+ {
+ r0 = TRUE;
+ }
+
+ GF_ASSERT(r0);
+
+ BlendPalette(paletteData->pltt[index].unfadedBuf + offset,
+ paletteData->pltt[index].fadedBuf + offset,
+ numEntries,
+ coeff,
+ blendColor);
+}
+
+THUMB_FUNC void BlendPalettes(u16 *src, u16 *dest, u16 selectedPalettes, u8 coeff, u16 blendColor)
+{
+ while (selectedPalettes != 0)
+ {
+ if ((selectedPalettes & 1) != 0)
+ {
+ BlendPalette(src, dest, 0x10, coeff, blendColor);
+ }
+
+ selectedPalettes >>= 1;
+ dest += 0x10;
+ src += 0x10;
+ }
+}
+
+THUMB_FUNC void BlendPalettesUnfaded(
+ struct PaletteData *paletteData, u32 index, u16 selectedPalettes, u8 coeff, u16 blendColor)
+{
+ u32 r4 = 0;
+ BOOL r0 = FALSE;
+ if (paletteData->pltt[index].unfadedBuf != 0 && paletteData->pltt[index].fadedBuf != 0)
+ {
+ r0 = TRUE;
+ }
+
+ GF_ASSERT(r0);
+
+ while (selectedPalettes != 0)
+ {
+ if ((selectedPalettes & 1) != 0)
+ {
+ BlendPaletteUnfaded(paletteData, index, (u16)r4, 0x10, coeff, blendColor);
+ }
+
+ selectedPalettes >>= 1;
+ r4 += 0x10;
+ }
+}
+
+THUMB_FUNC void TintPalette_CustomTone(u16 *palette, s32 count, s32 rTone, s32 gTone, s32 bTone)
+{
+ s32 r, g, b, i;
+ u32 gray;
+
+ for (i = 0; i < count; i++)
+ {
+ r = (*palette >> 0) & 0x1F;
+ g = (*palette >> 5) & 0x1F;
+ b = (*palette >> 10) & 0x1F;
+
+ gray = (u32)((r * 76 + g * 151 + b * 29) >> 8);
+
+ r = (u16)((rTone * gray)) >> 8;
+ g = (u16)((gTone * gray)) >> 8;
+ b = (u16)((bTone * gray)) >> 8;
+
+ if (r > 31)
+ r = 31;
+ if (g > 31)
+ g = 31;
+ if (b > 31)
+ b = 31;
+
+ *palette++ = (u16)((b << 10) | (g << 5) | (r << 0));
+ }
+}
+
+THUMB_FUNC void FUN_02003B40(struct PaletteData *paletteData,
+ NarcId narcId,
+ s32 memberId,
+ u32 heap_id,
+ u32 index,
+ u32 size,
+ u16 offset,
+ s32 rTone,
+ s32 gTone,
+ s32 bTone)
+{
+ NNSG2dPaletteData *pltData;
+ void *ptr = GfGfxLoader_GetPlttData(narcId, memberId, &pltData, heap_id);
+ GF_ASSERT(ptr != NULL);
+
+ if (size == 0)
+ {
+ size = pltData->szByte;
+ }
+
+ TintPalette_CustomTone(pltData->pRawData, 0x10, rTone, gTone, bTone);
+ PaletteData_LoadPalette(paletteData, pltData->pRawData, index, offset, (u16)size);
+
+ FreeToHeap(ptr);
+}
diff --git a/arm9/src/save.c b/arm9/src/save.c
index 89bd8374..7eb523f6 100644
--- a/arm9/src/save.c
+++ b/arm9/src/save.c
@@ -3,6 +3,7 @@
#include "save_block_2.h"
#include "heap.h"
#include "CARD_backup.h"
+#include "OS_spinLock.h"
#pragma thumb on
diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c
index f4b18b86..1969e3f1 100644
--- a/arm9/src/save_arrays.c
+++ b/arm9/src/save_arrays.c
@@ -16,6 +16,7 @@
#include "unk_020139D8.h"
#include "unk_02024E64.h"
#include "sav_chatot.h"
+#include "unk_0202A1E0.h"
extern u32 FUN_0202AC20(void);
extern u32 FUN_02034D7C(void);
@@ -28,7 +29,6 @@ extern u32 FUN_02028980(void);
extern u32 FUN_02029A84(void);
extern u32 FUN_02029FB0(void);
extern u32 Sav2_Chatot_sizeof(void);
-extern u32 FUN_0202A89C(void);
extern u32 FUN_0202A8F4(void);
extern u32 FUN_0202A924(void);
extern u32 FUN_0202ABC8(void);
@@ -48,7 +48,6 @@ extern void FUN_0202805C(void *);
extern void FUN_02028994(void *);
extern void FUN_02029A8C(void *);
extern void FUN_02029FB8(void *);
-extern void FUN_0202A8A4(void *);
extern void FUN_0202A8F8(void *);
extern void FUN_0202A92C(void *);
extern void FUN_0202ABCC(void *);
@@ -88,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = {
{ 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 },
{ 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init },
{ 22, 0, (SAVSIZEFN)Sav2_Chatot_sizeof, (SAVINITFN)Sav2_Chatot_init },
- { 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 },
+ { 23, 0, (SAVSIZEFN)SaveStruct23_sizeof, (SAVINITFN)SaveStruct23_Init },
{ 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 },
{ 25, 0, (SAVSIZEFN)FUN_0202A924, (SAVINITFN)FUN_0202A92C },
{ 26, 0, (SAVSIZEFN)FUN_0202ABC8, (SAVINITFN)FUN_0202ABCC },
diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c
index 6287579c..c79684a0 100644
--- a/arm9/src/scrcmd.c
+++ b/arm9/src/scrcmd.c
@@ -53,10 +53,12 @@ extern void MOD05_021E1F60(u32 param0);
extern void MOD05_021E26CC(u32 param0, u8 param1);
extern void MOD05_021E2B80(u32 param0, u8 param1);
extern void MOD05_021E2B9C(u32 param0, u8 param1);
-
-extern u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1);
-extern u32 FUN_0205AEA4(u32 param0, const u8 *ptr);
-extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, u32 param2);
+extern u32 FUN_0205AEA4(u32 param0, const void *ptr);
+extern void FUN_0203B174(struct UnkSavStruct80 *arg, u32 param1, void *param2);
+extern u32 FUN_02058B2C(u32 param0);
+extern u32 FUN_02058B4C(u32 param0);
+extern u32 FUN_020580B4(u32 param0, u32 param1);
+extern u32 FUN_02058060(u32 param0, u32 param1);
extern u8 *UNK_020F34E0;
@@ -75,6 +77,8 @@ static BOOL FUN_0203AA0C(struct ScriptContext *ctx);
static BOOL FUN_0203AB00(struct ScriptContext *ctx);
static BOOL FUN_0203AD2C(struct ScriptContext *ctx);
static BOOL FUN_0203AD78(struct ScriptContext *ctx);
+static u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1);
+static BOOL FUN_0203B158(struct ScriptContext *ctx);
extern u8 sScriptConditionTable[6][3];
@@ -1314,6 +1318,90 @@ THUMB_FUNC BOOL ScrCmd_Unk005E(struct ScriptContext *ctx) //ApplyMovement?
u8 *unk5 = FUN_02039438(ctx->unk80, 4);
(*unk5)++;
- FUN_0203B174(ctx->unk80, unk4, 0);
+ FUN_0203B174(ctx->unk80, unk4, NULL);
return FALSE;
}
+
+THUMB_FUNC BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx)
+{
+ u32 unk3; //has to be defined first to match
+ u16 unk0 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+ u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
+
+ unk3 = FUN_0203B120(ctx->unk80, unk0);
+
+ GF_ASSERT(unk3 != 0);
+
+ u16 *unk4 = AllocFromHeap(4, 0x100);
+ u16 unk5 = (u16)FUN_02058B2C(unk3);
+ u16 unk6 = (u16)FUN_02058B4C(unk3);
+
+ u32 pos = 0;
+
+ if (unk5 < unk1)
+ {
+ unk4[0] = 15;
+ pos++;
+ unk4[1] = unk1 - unk5;
+ }
+ else if (unk5 > unk1)
+ {
+ unk4[0] = 14;
+ pos++;
+ unk4[1] = unk5 - unk1;
+ }
+
+ if (unk6 < unk2)
+ {
+ unk4[pos * 2] = 12;
+ unk4[pos * 2 + 1] = unk2 - unk6;
+ pos++;
+ }
+ else if (unk6 > unk2)
+ {
+ unk4[pos * 2] = 13;
+ unk4[pos * 2 + 1] = unk6 - unk2;
+ pos++;
+ }
+
+ unk4[pos * 2] = 254;
+ unk4[pos * 2 + 1] = 0;
+
+ u32 unk7 = FUN_0205AEA4(unk3, unk4);
+ u8 *unk8 = FUN_02039438(ctx->unk80, 4);
+
+ (*unk8)++;
+
+ FUN_0203B174(ctx->unk80, unk7, unk4);
+ return FALSE;
+}
+
+THUMB_FUNC static u32 FUN_0203B120(struct UnkSavStruct80 *arg, u16 param1)
+{
+ if (param1 == 242)
+ {
+ return FUN_020580B4(arg->unk34, 48);
+ }
+ else if (param1 == 241)
+ {
+ u32 *res = FUN_02039438(arg, 11);
+ return *res;
+ }
+ else
+ {
+ return FUN_02058060(arg->unk34, param1);
+ }
+}
+
+THUMB_FUNC BOOL ScrCmd_WaitForMovement(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, FUN_0203B158);
+ return TRUE;
+}
+
+THUMB_FUNC static BOOL FUN_0203B158(struct ScriptContext *ctx)
+{
+ u8 *unk = FUN_02039438(ctx->unk80, 4);
+ return *unk == 0 ? TRUE : FALSE;
+}
diff --git a/arm9/src/scrcmd_24.c b/arm9/src/scrcmd_24.c
index b38ed05a..bfa737be 100644
--- a/arm9/src/scrcmd_24.c
+++ b/arm9/src/scrcmd_24.c
@@ -10,10 +10,6 @@ extern struct UnkStruct_02037CF0* FUN_02037CF0(u32 heap_id, struct UnkSavStruct8
extern u8 FUN_02037D5C(struct UnkStruct_02037CF0*);
extern void FUN_02038864(struct UnkSavStruct80*, struct UnkStruct_02088DD8*);
extern BOOL FUN_0203BC04(struct ScriptContext* ctx);
-extern struct UnkStruct_02088DD8* FUN_02088DD8(u32 heap_id);
-extern void FUN_02088DF0(struct UnkStruct_02037CF0*);
-extern void* FUN_02088DF8(struct Pokemon* pokemon, u32 heap_id);
-extern BOOL FUN_02088EF8(void*);
THUMB_FUNC BOOL ScrCmd_Unk01C6(struct ScriptContext* ctx)
{
@@ -57,7 +53,7 @@ THUMB_FUNC BOOL ScrCmd_Unk021F(struct ScriptContext* ctx)
u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx);
- void* unk_ptr = FUN_02088DF8(pokemon, 32);
+ void* unk_ptr = GetEligibleLevelUpMoves(pokemon, 32);
*ret_ptr = (u16)FUN_02088EF8(unk_ptr);
FreeToHeap(unk_ptr);
@@ -96,7 +92,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0221(struct ScriptContext* ctx)
u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx));
struct PlayerParty* party = SavArray_PlayerParty_get(ctx->unk80->saveBlock2);
struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx);
- void* unk_ptr = FUN_02088DF8(pokemon, 32);
+ void* unk_ptr = GetEligibleLevelUpMoves(pokemon, 32);
FUN_02045E74(ctx, 1, pokemon, unk_ptr);
return TRUE;
diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c
index 1251c612..ae20b5a4 100644
--- a/arm9/src/scrcmd_sound.c
+++ b/arm9/src/scrcmd_sound.c
@@ -1,14 +1,13 @@
#include "scrcmd.h"
+#include "unk_020040F4.h"
extern void* Sav2_Chatot_get(struct SaveBlock2* sav2);
extern u32 FUN_02005D20(void *);
extern void FUN_02005E6C(void *);
-extern void FUN_0200433C(u32, u32, u32);
extern u32 FUN_02005E28(void);
extern void FUN_02005E64(void);
extern BOOL FUN_02005CBC(void);
extern void PlaySound(u16);
-extern u32 FUN_02004124(u16);
extern void FUN_0204AB20(struct UnkSavStruct80 *ctx, u16);
extern u16 FUN_0204ABA8(struct UnkSavStruct80 *ctx, u32);
extern void FUN_0200521C(u16);
@@ -20,13 +19,9 @@ extern BOOL FUN_02005404(void);
extern u16 FUN_02005410(u16);
extern void PlaySE(u16);
extern void FUN_020054F0(u16, u32);
-extern void FUN_020047C8(u8, u8);
-extern void FUN_020040F4(u8);
extern BOOL FUN_02005508(u16);
extern void FUN_02005578(u16);
extern BOOL FUN_02005670(void);
-extern void FUN_0200488C(u16, u16);
-
THUMB_FUNC BOOL ScrCmd_Unk02AE(struct ScriptContext *ctx)
{
diff --git a/arm9/src/sound.c b/arm9/src/sound.c
index a5228dab..ec65dd06 100644
--- a/arm9/src/sound.c
+++ b/arm9/src/sound.c
@@ -2,6 +2,7 @@
#include "sound.h"
#include "SPI_mic.h"
#include "SPI_pm.h"
+#include "unk_020040F4.h"
#pragma thumb on
@@ -15,12 +16,8 @@ void GF_InitMic(void);
void GF_SoundDataInit(struct SoundData *);
void FUN_02004088(struct SoundData *);
void FUN_020040A4(struct SoundData *);
-void FUN_02003CE8(int);
void FUN_020040DC(void);
-extern BOOL FUN_020048BC(int);
-extern void FUN_02004D60(u32);
-extern BOOL FUN_02004D94(void);
extern void FUN_0200521C(int);
extern void FUN_0200538C(int, int, int);
extern BOOL FUN_02005404(void);
@@ -39,7 +36,7 @@ void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options
FUN_020040A4(sdat);
UNK_02107074 = 0;
sdat->chatot = chatot;
- FUN_02004D60(options->soundMethod);
+ GF_SndSetMonoFlag(options->soundMethod);
}
void DoSoundUpdateFrame(void)
@@ -99,7 +96,7 @@ void FUN_02003CE8(int a0)
BOOL FUN_02003D04(void)
{
struct SoundData * sdat = GetSoundDataPointer();
- if (FUN_020048BC(2))
+ if (GF_SndPlayerCountPlayingSeqByPlayerNo(2))
return TRUE;
return sdat->unk_BCD12 != 0;
}
@@ -246,7 +243,7 @@ BOOL GF_Snd_LoadBank(int bankNo)
return NNS_SndArcLoadBank(bankNo, sdat->heap);
}
-u32 * FUN_02003FF4(int playerNo)
+u32 * GetSoundPlayer(int playerNo)
{
struct SoundData * sdat = GetSoundDataPointer();
if (playerNo >= (s32)NELEMS(sdat->players))
@@ -257,7 +254,7 @@ u32 * FUN_02003FF4(int playerNo)
return &sdat->players[playerNo];
}
-u32 FUN_02004018(u32 a0)
+int FUN_02004018(u32 a0)
{
switch (a0)
{
@@ -317,6 +314,5 @@ void GF_InitMic(void)
void FUN_020040DC(void)
{
NNS_SndPlayerStopSeqByPlayerNo(7, 0);
- FUN_02003FF4(7);
- NNS_SndHandleReleaseSeq();
+ NNS_SndHandleReleaseSeq(GetSoundPlayer(7));
}
diff --git a/arm9/src/text.c b/arm9/src/text.c
index 8ca16d55..e8c76722 100644
--- a/arm9/src/text.c
+++ b/arm9/src/text.c
@@ -29,7 +29,7 @@ THUMB_FUNC void SetFontsPointer(const struct FontInfo *fonts)
gFonts = fonts;
}
-THUMB_FUNC u8 FUN_0201BCC8(void (*func)(u32, struct TextPrinter *), struct TextPrinter *printer, u32 param2)
+THUMB_FUNC u8 FUN_0201BCC8(void (*func)(u32, void *), void *printer, u32 param2)
{
u32 *r4 = UNK_021C5714;
s32 i;
@@ -192,7 +192,7 @@ THUMB_FUNC u16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u32 s
{
printer->textSpeedBottom--;
printer->textSpeedTop = 1;
- printer->minLetterSpacing = FUN_0201BCC8(RunTextPrinter, printer, 1);
+ printer->minLetterSpacing = FUN_0201BCC8((void (*)(u32, void *))RunTextPrinter, printer, 1);
return printer->minLetterSpacing;
}
else
diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c
index d4e8f8a1..4e7b03c7 100644
--- a/arm9/src/timer3.c
+++ b/arm9/src/timer3.c
@@ -1,5 +1,11 @@
#include "timer3.h"
+#include "OS_interrupt.h"
+#include "OS_irqTable.h"
+#include "OS_timer.h"
+#include "OS_system.h"
+#include "registers.h"
+
static BOOL timer3_needReset;
static vu64 timer3_counter;
diff --git a/arm9/src/unk_02002F08.c b/arm9/src/unk_02002F08.c
deleted file mode 100644
index b81da622..00000000
--- a/arm9/src/unk_02002F08.c
+++ /dev/null
@@ -1,139 +0,0 @@
-#include "global.h"
-#include "unk_02002F08.h"
-#include "font.h"
-#include "gf_gfx_loader.h"
-#include "string16.h"
-#include "unk_0201B8B8.h"
-
-THUMB_FUNC s32 FUN_02002F08(u32 param0, struct String *str, u32 param2)
-{
- GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL);
-
- return StringGetWidth(UNK_02106FC8->unk94[param0], String_c_str(str), param2);
-}
-
-THUMB_FUNC u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3)
-{
- u32 r0 = FUN_02002E14(param0, str, param2);
- if (r0 < param3)
- {
- return (param3 - r0) / 2;
- }
-
- return 0;
-}
-
-THUMB_FUNC u32 FUN_02002F58(const u16 *str)
-{
- u32 r5 = 1;
- while (*str != EOS)
- {
- if (*str == 0xFFFE)
- {
- str = MsgArray_SkipControlCode(str);
- continue;
- }
-
- if (*str == 0xE000)
- {
- r5++;
- str++;
- continue;
- }
-
- str++;
- }
-
- return r5;
-}
-
-THUMB_FUNC u32 FUN_02002F90(struct String *str)
-{
- return FUN_02002F58(String_c_str(str));
-}
-
-THUMB_FUNC s32 FUN_02002F9C(u32 param0, struct String *str)
-{
- GF_ASSERT(UNK_02106FC8->unk94[param0] != NULL);
-
- return StringGetWidth_SingleLine_HandleClearToControlCode(
- UNK_02106FC8->unk94[param0], String_c_str(str));
-}
-
-THUMB_FUNC struct UnkStruct_02002F08 *FUN_02002FD0(u32 heap_id)
-{
- struct UnkStruct_02002F08 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02002F08));
- MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct_02002F08));
-
- return ptr;
-}
-
-THUMB_FUNC void FUN_02002FEC(struct UnkStruct_02002F08 *ptr)
-{
- FreeToHeap(ptr);
-}
-
-THUMB_FUNC void FUN_02002FF4(
- struct UnkStruct_02002F08 *param0, u32 param1, void *param2, void *param3, u32 size)
-{
- param0->unk000[param1].unk00 = param2;
- param0->unk000[param1].unk04 = param3;
- param0->unk000[param1].unk08 = size;
-}
-
-THUMB_FUNC void FUN_02003008(struct UnkStruct_02002F08 *param0, u32 param1, u32 size, u32 heap_id)
-{
- void *ptr = AllocFromHeap(heap_id, size);
- void *ptr2 = AllocFromHeap(heap_id, size);
-
- FUN_02002FF4(param0, param1, ptr, ptr2, size);
-}
-
-THUMB_FUNC void FUN_02003038(struct UnkStruct_02002F08 *param0, u32 param1)
-{
- FreeToHeap(param0->unk000[param1].unk00);
- FreeToHeap(param0->unk000[param1].unk04);
-}
-
-THUMB_FUNC void FUN_02003054(
- struct UnkStruct_02002F08 *param0, const void *param1, u32 param2, u32 offset, u16 size)
-{
- MIi_CpuCopy16(param1, param0->unk000[param2].unk00 + offset, size);
- MIi_CpuCopy16(param1, param0->unk000[param2].unk04 + offset, size);
-}
-
-THUMB_FUNC void FUN_02003084(struct UnkStruct_02002F08 *param0,
- NarcId narcId,
- s32 memberId,
- u32 heap_id,
- u32 param4,
- u32 size,
- u16 offset,
- u16 param7)
-{
- NNSG2dPaletteData *pltData;
- void *ptr = GfGfxLoader_GetPlttData(narcId, memberId, &pltData, heap_id);
-
- GF_ASSERT(ptr != NULL);
-
- if (size == 0)
- {
- size = pltData->szByte;
- }
-
- GF_ASSERT(size + offset * 2 <= param0->unk000[param4].unk08);
-
- FUN_02003054(param0, pltData->pRawData + param7 * 2, param4, offset, (u16)size);
- FreeToHeap(ptr);
-}
-
-THUMB_FUNC void FUN_020030E8(struct UnkStruct_02002F08 *param0,
- NarcId narcId,
- s32 memberId,
- u32 heap_id,
- u32 param4,
- u32 size,
- u16 offset)
-{
- FUN_02003084(param0, narcId, memberId, heap_id, param4, size, offset, 0);
-}
diff --git a/arm9/src/unk_020040F4.c b/arm9/src/unk_020040F4.c
new file mode 100644
index 00000000..5713ddf0
--- /dev/null
+++ b/arm9/src/unk_020040F4.c
@@ -0,0 +1,1365 @@
+#include "global.h"
+#include "unk_020040F4.h"
+#include "OS_cache.h"
+#include "sound.h"
+#include "unk_0202F150.h"
+
+u32 UNK_021C3DD8[2];
+
+u8 UNK_021C3DE0[0x7d0];
+
+const u8 UNK_020ECB8C[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+
+extern void FUN_02005454();
+extern void FUN_0200541C();
+extern void FUN_0200521C(int);
+extern void FUN_0200538C(u32, u16, u32);
+extern void NNS_SndPlayerPause(u32 *, u8);
+extern void NNS_SndPlayerMoveVolume(u32 *, s32, s32);
+extern void NNS_SndPlayerSetInitialVolume(u32 *, s32);
+extern void *NNS_SndArcGetSeqParam(u32);
+extern void NNS_SndArcPlayerStartSeqEx(u32 *, u32, s32, s32, u32);
+extern u16 NNS_SndPlayerCountPlayingSeqByPlayerNo(int);
+extern u32 NNS_SndPlayerGetSeqNo(u32 *);
+extern u32 NNS_SndArcGetBankInfo(u32);
+extern u32 MIC_StartAutoSampling(u32);
+extern u32 MIC_StopAutoSampling();
+extern u32 MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3);
+extern u32 NNS_SndWaveOutAllocChannel(u32);
+extern void NNS_SndWaveOutFreeChannel(u32);
+extern u32 NNS_SndWaveOutStart(u32, u32, void *, u32, u32, u32, u32, s32, u32, s32);
+extern void NNS_SndWaveOutStop(u32);
+extern BOOL NNS_SndWaveOutIsPlaying(u32);
+extern void NNS_SndWaveOutSetPan(u32, u32);
+extern void NNS_SndWaveOutSetSpeed(u32, u32);
+extern void NNS_SndWaveOutSetVolume(u32, s32);
+extern struct WaveArcInfo *NNS_SndArcGetWaveArcInfo(u32);
+extern u32 NNS_SndArcGetFileSize(u32);
+extern s32 NNS_SndArcReadFile(u32, void *, u32, u32);
+extern BOOL NNS_SndCaptureIsActive();
+extern u32 NNS_SndCaptureStartReverb(void *, u32, u32, u32, u32);
+extern void NNS_SndCaptureStopReverb(u32);
+extern void NNS_SndCaptureSetReverbVolume(u32, u32);
+extern u32 NNS_SndCaptureStartEffect(void *, u32, u32, u32, u32, void (*)(), void *);
+extern void NNS_SndCaptureStopEffect();
+extern void NNS_SndPlayerSetTrackPitch(u32 *, u32, s32);
+extern void NNS_SndPlayerSetTrackPan(u32 *, u32, s32);
+extern void NNS_SndSetMonoFlag(u32 param0);
+extern void FUN_020053CC(u32, u32);
+extern u32 NNS_SndArcGetFileAddress(u32);
+extern u32 SND_GetWaveDataAddress(u32, u32);
+extern u32 NNS_SndPlayerGetTick(u32 *);
+extern void NNS_SndPlayerSetAllocatableChannel(u32, u32);
+extern BOOL FUN_02005404(void);
+extern void NNS_SndPlayerSetPlayerVolume(u32, u8);
+
+THUMB_FUNC void FUN_020040F4(u8 param0)
+{
+ u8 *ptr = FUN_02003D38(5);
+ *ptr = param0;
+}
+
+THUMB_FUNC u8 FUN_02004104()
+{
+ u8 *ptr = FUN_02003D38(5);
+
+ return *ptr;
+}
+
+THUMB_FUNC void FUN_02004110(u16 param0)
+{
+ u16 *ptr = FUN_02003D38(9);
+ *ptr = param0;
+
+ FUN_02004130(0);
+}
+
+THUMB_FUNC u16 FUN_02004124()
+{
+ u16 *ptr = FUN_02003D38(9);
+
+ return *ptr;
+}
+
+THUMB_FUNC void FUN_02004130(u16 param0)
+{
+ u16 *ptr = FUN_02003D38(10);
+ *ptr = param0;
+}
+
+THUMB_FUNC u16 FUN_02004140()
+{
+ u16 *ptr = FUN_02003D38(10);
+
+ return *ptr;
+}
+
+THUMB_FUNC void FUN_0200414C(u16 param0)
+{
+ u16 *ptr = FUN_02003D38(31);
+ *ptr = param0;
+}
+
+THUMB_FUNC void FUN_0200415C(u8 param0)
+{
+ u8 *ptr = FUN_02003D38(20);
+ u8 *ptr2 = FUN_02003D38(21);
+
+ if (param0 < 51)
+ {
+ *ptr = param0;
+ *ptr2 = 0;
+ }
+ else
+ {
+ *ptr2 = param0;
+ }
+}
+
+THUMB_FUNC BOOL FUN_02004180(s32 param0)
+{
+ BOOL res;
+ switch (param0)
+ {
+ case 1:
+ case 9:
+ case 10:
+ case 14:
+ res = GF_Snd_LoadGroup(1);
+ break;
+ case 2:
+ case 13:
+ res = GF_Snd_LoadGroup(2);
+ break;
+ case 3:
+ res = GF_Snd_LoadGroup(13);
+ break;
+ case 4:
+ res = GF_Snd_LoadGroup(1);
+ break;
+ case 5:
+ res = GF_Snd_LoadGroup(2);
+ break;
+ case 11:
+ res = GF_Snd_LoadGroup(1);
+ break;
+ case 6:
+ res = GF_Snd_LoadGroup(11);
+ break;
+ case 8:
+ res = GF_Snd_LoadGroup(1);
+ break;
+ case 12:
+ res = GF_Snd_LoadGroup(14);
+ break;
+ case 51:
+ res = GF_Snd_LoadGroup(3);
+ break;
+ case 66:
+ res = GF_Snd_LoadGroup(6);
+ break;
+ case 52:
+ res = GF_Snd_LoadGroup(5);
+ break;
+ case 7:
+ case 53:
+ res = GF_Snd_LoadGroup(9);
+ break;
+ case 54:
+ res = GF_Snd_LoadGroup(10);
+ break;
+ case 55:
+ case 67:
+ res = GF_Snd_LoadBank(0x5e5);
+ res = GF_Snd_LoadWaveArc(0x5e5);
+ break;
+ case 56:
+ res = GF_Snd_LoadGroup(12);
+ break;
+ case 57:
+ res = GF_Snd_LoadGroup(7);
+ break;
+ case 58:
+ res = GF_Snd_LoadGroup(8);
+ break;
+ case 59:
+ res = GF_Snd_LoadGroup(15);
+ break;
+ case 60:
+ res = GF_Snd_LoadGroup(3);
+ break;
+ case 61:
+ res = GF_Snd_LoadGroup(5);
+ break;
+ case 62:
+ res = GF_Snd_LoadGroup(15);
+ break;
+ case 63:
+ res = GF_Snd_LoadGroup(4);
+ break;
+ case 64:
+ res = GF_Snd_LoadBank(0x5ed);
+ res = GF_Snd_LoadWaveArc(0x5ed);
+ break;
+ case 65:
+ res = GF_Snd_LoadBank(0x5ec);
+ res = GF_Snd_LoadWaveArc(0x5ec);
+ break;
+ }
+
+ return res;
+}
+
+THUMB_FUNC BOOL FUN_0200433C(u8 param0, int param1, u32 param2)
+{
+ u8 *st0 = FUN_02003D38(20);
+ u8 *st4 = FUN_02003D38(21);
+ u16 *r7 = FUN_02003D38(13);
+
+ if (param0 < 51)
+ {
+ if (*st0 == param0)
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (*st4 == param0)
+ {
+ return FALSE;
+ }
+ }
+
+ FUN_0200415C(param0);
+
+ switch (param0)
+ {
+ case 4:
+ FUN_0200516C(0);
+ FUN_020044D4(param1, param2);
+ *r7 = 0;
+ break;
+ case 5:
+ FUN_02004648(param1, param2);
+ break;
+ case 11:
+ FUN_02004680(param1, param2);
+ break;
+ case 6:
+ FUN_020046A0(param1, param2);
+ break;
+ case 7:
+ FUN_020046C4(param1, param2);
+ break;
+ case 57:
+ case 53:
+ case 51:
+ case 52:
+ case 54:
+ case 55:
+ case 56:
+ case 58:
+ case 59:
+ case 60:
+ case 61:
+ case 62:
+ case 63:
+ case 64:
+ case 65:
+ case 66:
+ case 67:
+ FUN_020046E8(param0);
+ break;
+ case 1:
+ FUN_0200516C(1);
+ FUN_02004704(param0, param1, param2);
+ break;
+ case 14:
+ FUN_0200516C(2);
+ FUN_02004704(param0, param1, param2);
+ break;
+ case 2:
+ FUN_0200516C(0);
+ FUN_02004704(param0, param1, param2);
+ break;
+ case 3:
+ case 8:
+ case 9:
+ case 10:
+ case 12:
+ case 13:
+ FUN_02004704(param0, param1, param2);
+ break;
+ }
+
+ return TRUE;
+}
+
+THUMB_FUNC void FUN_020044A8(s32 param0)
+{
+ int *ptr = FUN_02003D38(23);
+ GF_Snd_RestoreState(*ptr);
+
+ int *ptr2 = FUN_02003D38(24);
+ GF_Snd_SaveState(ptr2);
+
+ FUN_02004180(param0);
+
+ int *ptr3 = FUN_02003D38(25);
+ GF_Snd_SaveState(ptr3);
+}
+
+THUMB_FUNC void FUN_020044D4(int seqNo, u32 param1)
+{
+#pragma unused(param1)
+
+ u8 *ptr = FUN_02003D38(11);
+
+ FUN_02003D38(23);
+ FUN_02003D38(31);
+ u32 r4 = GF_SndPlayerGetSeqNo(GetSoundPlayer(0));
+
+ if (*ptr == 0 && r4 == seqNo && FUN_02004140() != 1152)
+ {
+ return;
+ }
+
+ FUN_02004DBC(1);
+ FUN_02005454();
+
+ if (r4 != seqNo)
+ {
+ FUN_020047C8(1, 0);
+ FUN_0200541C();
+ }
+
+ if (*ptr == 1)
+ {
+ GF_Snd_RestoreState(FUN_02004748(2));
+ FUN_02004180(4);
+ GF_Snd_SaveState((int *)FUN_02003D38(25));
+
+ if (r4 != seqNo)
+ {
+ FUN_020047C8(1, 0);
+ }
+ FUN_02004568(seqNo, (u16)r4);
+ return;
+ }
+
+ FUN_0200521C(seqNo);
+}
+
+THUMB_FUNC void FUN_02004568(int seqNo, u16 param1)
+{
+#pragma unused(param1)
+
+ u16 *ptr = FUN_02003D38(31);
+
+ u32 r0 = FUN_02004900(*ptr);
+ if (r0 != 1001 && r0 != 1003)
+ {
+ GF_Snd_LoadSeqEx(seqNo, 4);
+ GF_ASSERT(FALSE);
+ }
+ else
+ {
+ GF_Snd_LoadSeqEx(*ptr, 6);
+ }
+
+ GF_Snd_SaveState((int *)FUN_02003D38(26));
+ FUN_020047C8(1, 0);
+ FUN_0200538C(0x7f, 0x28, 0);
+ FUN_02004DBC(0);
+}
+
+THUMB_FUNC void FUN_020045C4(int seqNo, u32 param1)
+{
+ u8 *ptr = FUN_02003D38(18);
+ u16 *ptr2 = FUN_02003D38(31);
+
+ if (*ptr != 1 && param1 != 0)
+ {
+ return;
+ }
+
+ GF_Snd_RestoreState(FUN_02004748(1));
+ GF_Snd_LoadSeqEx(*ptr2, 2);
+ GF_Snd_SaveState((int *)FUN_02003D38(24));
+
+ FUN_02004180(4);
+ GF_Snd_SaveState((int *)FUN_02003D38(25));
+
+ u32 r0 = FUN_02004900(*ptr2);
+ if (r0 != 1001 && r0 != 1003)
+ {
+ GF_Snd_LoadSeqEx(seqNo, 4);
+ GF_ASSERT(FALSE);
+ }
+ else
+ {
+ GF_Snd_LoadSeqEx(*ptr2, 4);
+ }
+
+ GF_Snd_SaveState((int *)FUN_02003D38(26));
+}
+
+THUMB_FUNC void FUN_02004648(int param0, u32 param1)
+{
+#pragma unused(param1)
+ FUN_02003D38(23);
+ FUN_020051AC();
+
+ GF_Snd_RestoreState(FUN_02004748(2));
+ FUN_02004180(5);
+ GF_Snd_SaveState((int *)FUN_02003D38(25));
+ FUN_02004DBC(1);
+ FUN_0200521C(param0);
+}
+
+THUMB_FUNC void FUN_02004680(int param0, u32 param1)
+{
+#pragma unused(param1)
+ FUN_02003D38(23);
+ FUN_0200541C();
+ FUN_02004810();
+ FUN_020044A8(4);
+ FUN_0200521C(param0);
+}
+
+THUMB_FUNC void FUN_020046A0(int param0, u32 param1)
+{
+#pragma unused(param1)
+ FUN_02003D38(23);
+ FUN_0200541C();
+ FUN_020044A8(6);
+ FUN_02004DBC(1);
+ FUN_0200521C(param0);
+}
+
+THUMB_FUNC void FUN_020046C4(int param0, u32 param1)
+{
+#pragma unused(param1)
+ FUN_02003D38(23);
+ FUN_0200541C();
+ FUN_020044A8(7);
+ FUN_02004DBC(1);
+ FUN_0200521C(param0);
+}
+
+THUMB_FUNC void FUN_020046E8(s32 param0)
+{
+ FUN_02004738();
+ FUN_02004180(param0);
+ GF_Snd_SaveState((int *)FUN_02003D38(27));
+}
+
+THUMB_FUNC void FUN_02004704(s32 param0, int param1, u32 param2)
+{
+#pragma unused(param2)
+ FUN_02003D38(23);
+ FUN_0200541C();
+ FUN_020044A8(param0);
+ FUN_0200521C(param1);
+}
+
+THUMB_FUNC void FUN_02004724(int param0)
+{
+ GetSoundDataPointer();
+ FUN_020051AC();
+ FUN_0200521C(param0);
+}
+
+THUMB_FUNC void FUN_02004738()
+{
+ GF_Snd_RestoreState(FUN_02004748(4));
+}
+
+THUMB_FUNC int FUN_02004748(s32 param0)
+{
+ GetSoundDataPointer();
+
+ if (param0 >= 7)
+ {
+ GF_AssertFail();
+ return *(int *)FUN_02003D38(26);
+ }
+
+ int *r5;
+ switch (param0)
+ {
+ case 0:
+ r5 = FUN_02003D38(22);
+ break;
+ case 1:
+ r5 = FUN_02003D38(23);
+ break;
+ case 2:
+ r5 = FUN_02003D38(24);
+ break;
+ case 3:
+ r5 = FUN_02003D38(25);
+ break;
+ case 4:
+ r5 = FUN_02003D38(26);
+ break;
+ case 5:
+ r5 = FUN_02003D38(27);
+ break;
+ case 6:
+ r5 = FUN_02003D38(28);
+ break;
+ }
+
+ return *r5;
+}
+
+THUMB_FUNC void FUN_020047C8(u8 param0, u8 param1)
+{
+ u8 *ptr;
+ int r4;
+ if (param0 == 1)
+ {
+ ptr = FUN_02003D38(11);
+ r4 = 0;
+ }
+ else
+ {
+ if (param0 != 7)
+ {
+ return;
+ }
+
+ ptr = FUN_02003D38(12);
+ r4 = 7;
+ }
+
+ if (param1 == 0)
+ {
+ FUN_02004110((u16)GF_SndPlayerGetSeqNo(GetSoundPlayer(r4)));
+ }
+
+ NNS_SndPlayerPause(GetSoundPlayer(r4), param1);
+ *ptr = param1;
+}
+
+THUMB_FUNC void FUN_02004810()
+{
+ u8 *ptr = FUN_02003D38(11);
+ u8 *ptr2 = FUN_02003D38(12);
+ *ptr = 0;
+ *ptr2 = 0;
+}
+
+THUMB_FUNC void GF_SndPlayerMoveVolume(int playerNo, s32 param1, s32 param2)
+{
+ NNS_SndPlayerMoveVolume(GetSoundPlayer(playerNo), param1, param2);
+}
+
+THUMB_FUNC void GF_SndPlayerSetInitialVolume(int playerNo, s32 param1)
+{
+ if (param1 < 0)
+ {
+ param1 = 0;
+ }
+
+ if (param1 > 127)
+ {
+ param1 = 127;
+ }
+
+ NNS_SndPlayerSetInitialVolume(GetSoundPlayer(playerNo), param1);
+}
+
+THUMB_FUNC void FUN_02004858(u32 param0, int playerNo)
+{
+ u8 *ret = NNS_SndArcGetSeqParam(param0);
+ u8 r4;
+ if (playerNo == 1 || playerNo == 8)
+ {
+ r4 = 127;
+ }
+ else
+ {
+ if (ret == NULL)
+ {
+ return;
+ }
+
+ r4 = ret[2];
+ }
+
+ if (FUN_020313EC() == 1)
+ {
+ GF_SndPlayerSetInitialVolume(playerNo, r4 / 5);
+ }
+}
+
+THUMB_FUNC void FUN_0200488C(u16 param0, u16 param1)
+{
+ GF_SndPlayerSetInitialVolume(FUN_02004018(FUN_020048D0(param0)), param1);
+}
+
+THUMB_FUNC void GF_SndArcPlayerStartSeqEx(int playerNo, u32 param1, u32 param2)
+{
+ NNS_SndArcPlayerStartSeqEx(GetSoundPlayer(playerNo), param1, -1, -1, param2);
+}
+
+THUMB_FUNC u16 GF_SndPlayerCountPlayingSeqByPlayerNo(int playerNo)
+{
+ GF_ASSERT(playerNo >= 0);
+
+ return NNS_SndPlayerCountPlayingSeqByPlayerNo(playerNo);
+}
+
+THUMB_FUNC u8 FUN_020048D0(u16 param0)
+{
+ if (param0 == 0)
+ {
+ return 0xff;
+ }
+
+ u8 *ptr = NNS_SndArcGetSeqParam(param0);
+ if (ptr == NULL)
+ {
+ return 0xff;
+ }
+
+ return ptr[5];
+}
+
+THUMB_FUNC u32 GF_SndPlayerGetSeqNo(u32 *param0)
+{
+ return NNS_SndPlayerGetSeqNo(param0);
+}
+
+THUMB_FUNC u32 FUN_020048F4(u16 param0)
+{
+ return NNS_SndArcGetBankInfo(FUN_02004900(param0));
+}
+
+THUMB_FUNC u16 FUN_02004900(u32 param0)
+{
+ u16 *ptr = NNS_SndArcGetSeqParam(param0);
+ if (ptr == NULL)
+ {
+ return 0;
+ }
+
+ return *ptr;
+}
+
+THUMB_FUNC u32 GF_MIC_StartAutoSampling(u32 param0)
+{
+ return MIC_StartAutoSampling(param0);
+}
+
+THUMB_FUNC u32 GF_MIC_StopAutoSampling(u32 param0)
+{
+#pragma unused(param0)
+ GetSoundDataPointer();
+ return MIC_StopAutoSampling();
+}
+
+THUMB_FUNC u32 GF_MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3)
+{
+ return MIC_DoSamplingAsync(param0, param1, param2, param3);
+}
+
+THUMB_FUNC void *FUN_02004930(u32 param0)
+{
+ GetSoundDataPointer();
+ u8 *ptr = FUN_02003D38(15);
+ u8 *ptr2 = FUN_02003D38(16);
+ GF_ASSERT(param0 == 14 || param0 == 15);
+ GF_ASSERT(param0 != 14 || *ptr != 0);
+ GF_ASSERT(param0 != 15 || *ptr2 != 0);
+
+ if (param0 == 14)
+ {
+ return FUN_02003D38(0);
+ }
+
+ return FUN_02003D38(1);
+}
+
+THUMB_FUNC BOOL FUN_02004984(u32 param0)
+{
+ GetSoundDataPointer();
+ u8 *ptr = FUN_02003D38(15);
+ u8 *ptr2 = FUN_02003D38(16);
+ GF_ASSERT(param0 == 14 || param0 == 15);
+
+ if (param0 == 14)
+ {
+ if (*ptr == 0)
+ {
+ u32 *r4 = FUN_02003D38(0);
+ *r4 = NNS_SndWaveOutAllocChannel(param0);
+ if (*r4 == 0)
+ {
+ return FALSE;
+ }
+ *ptr = 1;
+ }
+ else
+ {
+ GF_AssertFail();
+ }
+ }
+ else
+ {
+ if (*ptr2 == 0)
+ {
+ u32 *r6 = FUN_02003D38(1);
+ *r6 = NNS_SndWaveOutAllocChannel(param0);
+ if (*r6 == 0)
+ {
+ return FALSE;
+ }
+
+ *ptr2 = 1;
+ }
+ else
+ {
+ GF_AssertFail();
+ }
+ }
+
+ return TRUE;
+}
+
+THUMB_FUNC void FUN_02004A04(u32 param0)
+{
+ GetSoundDataPointer();
+ u8 *ptr = FUN_02003D38(15);
+ u8 *ptr2 = FUN_02003D38(16);
+ if (param0 != 14 && param0 != 15)
+ {
+ GF_AssertFail();
+ return;
+ }
+
+ if (param0 == 14)
+ {
+ if (*ptr == 1)
+ {
+ NNS_SndWaveOutFreeChannel(*(u32 *)FUN_02004930(param0));
+ *ptr = 0;
+ return;
+ }
+ else
+ {
+ GF_AssertFail();
+ return;
+ }
+ }
+
+ if (*ptr2 == 1)
+ {
+ NNS_SndWaveOutFreeChannel(*(u32 *)FUN_02004930(param0));
+ *ptr2 = 0;
+ return;
+ }
+ else
+ {
+ GF_AssertFail();
+ }
+}
+
+THUMB_FUNC u32 FUN_02004A6C(struct UnkStruct_020040F4_1 *param0, u32 param1)
+{
+ u32 res = NNS_SndWaveOutStart(*(u32 *)param0->unk00,
+ param0->unk04,
+ param0->unk08,
+ param0->unk0c,
+ param0->unk10,
+ param0->unk14,
+ param0->unk18,
+ param0->unk1c,
+ param0->unk20,
+ param0->unk24);
+ if (res == 0)
+ {
+ FUN_02004A04(param1);
+ }
+
+ return res;
+}
+
+THUMB_FUNC void FUN_02004AAC(u32 param0)
+{
+ NNS_SndWaveOutStop(*(u32 *)FUN_02004930(param0));
+}
+
+THUMB_FUNC BOOL FUN_02004ABC(u32 param0)
+{
+ return NNS_SndWaveOutIsPlaying(*(u32 *)FUN_02004930(param0));
+}
+
+THUMB_FUNC void FUN_02004ACC(u32 param0, u32 param1)
+{
+ if (param1 > 127)
+ {
+ param1 = 127;
+ }
+
+ NNS_SndWaveOutSetPan(*(u32 *)FUN_02004930(param0), param1);
+}
+
+THUMB_FUNC void FUN_02004AE4(u32 param0, u32 param1)
+{
+ NNS_SndWaveOutSetSpeed(*(u32 *)FUN_02004930(param0), param1);
+}
+
+THUMB_FUNC void FUN_02004AF8(u32 param0, s32 param1)
+{
+ if (FUN_020313EC() == 1)
+ {
+ NNS_SndWaveOutSetVolume(*(u32 *)FUN_02004930(param0), param1 / 5);
+ return;
+ }
+
+ NNS_SndWaveOutSetVolume(*(u32 *)FUN_02004930(param0), param1);
+}
+
+THUMB_FUNC u32 FUN_02004B30(u32 param0, s32 param1, s32 param2, u32 param3, u32 param4)
+{
+ GetSoundDataPointer();
+
+ void **r4 = FUN_02003D38(33);
+ GF_ASSERT(param3 == 14 || param3 == 15);
+
+ struct WaveArcInfo *r7 = NNS_SndArcGetWaveArcInfo(param0);
+ if (r7 == 0)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ u32 r6 = NNS_SndArcGetFileSize(r7->unk00);
+ if (r6 == 0)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ if (param3 == 14)
+ {
+ void *ptr = AllocFromHeap(param4, r6);
+ *r4 = ptr;
+ if (ptr == NULL)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ memset(ptr, 0, r6);
+ if (NNS_SndArcReadFile(r7->unk00, *r4, r6, 0) == -1)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ FUN_02004C1C(*r4, r6);
+ }
+
+ void *res = FUN_02004930(param3);
+
+ struct UnkStruct_020040F4_1 st8;
+ st8.unk04 = 0;
+ st8.unk00 = res;
+ st8.unk08 = *r4;
+ st8.unk0c = 0;
+ st8.unk18 = 0x3443;
+ st8.unk10 = 0;
+ st8.unk1c = param1;
+ st8.unk20 = 0x6000;
+ st8.unk24 = param2;
+ st8.unk14 = r6;
+
+ u32 ret = FUN_02004A6C(&st8, param3);
+ FUN_02004AF8(param3, param1);
+ u8 *r0 = FUN_02003D38(14);
+ *r0 = 1;
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_02004C1C(u8 *param0, u32 param1)
+{
+ for (u32 r5 = 0; r5 < param1 / 2; r5++)
+ {
+ u8 r4 = param0[r5];
+ param0[r5] = param0[param1 - 1 - r5];
+ param0[param1 - 1 - r5] = r4;
+ }
+}
+
+THUMB_FUNC void FUN_02004C3C(u32 param0)
+{
+ GetSoundDataPointer();
+ u8 *ptr = FUN_02003D38(14);
+ void **ptr2 = FUN_02003D38(33);
+
+ GF_ASSERT(param0 == 14 || param0 == 15);
+
+ FUN_02004AAC(param0);
+
+ if (*ptr == 1)
+ {
+ *ptr = 0;
+ FreeToHeap(*ptr2);
+ }
+}
+
+THUMB_FUNC BOOL GF_SndCaptureIsActive()
+{
+ return NNS_SndCaptureIsActive();
+}
+
+THUMB_FUNC u32 GF_SndCaptureStartReverb(u32 param0)
+{
+ GetSoundDataPointer();
+
+ return NNS_SndCaptureStartReverb(FUN_02003D38(3), 0x1000, 0, 0x3E80, param0);
+}
+
+THUMB_FUNC void GF_SndCaptureStopReverb(u32 param0)
+{
+ NNS_SndCaptureStopReverb(param0);
+}
+
+THUMB_FUNC void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1)
+{
+ NNS_SndCaptureSetReverbVolume(param0, param1);
+}
+
+THUMB_FUNC void FUN_02004CB4()
+{
+ GetSoundDataPointer();
+
+ MI_CpuFill8(FUN_02003D38(4), 0, 0x1c);
+
+ void *r4 = FUN_02003D38(3);
+ void *st8 = FUN_02003D38(4);
+
+ NNS_SndCaptureStartEffect(r4, 0x1000, 0, 0x55F0, 2, FUN_02005068, st8);
+}
+
+THUMB_FUNC void GF_SndCaptureStopEffect()
+{
+ NNS_SndCaptureStopEffect();
+}
+
+THUMB_FUNC void FUN_02004D04(s32 param0)
+{
+ u8 *ptr = FUN_02003D38(19);
+
+ if (param0 > 8)
+ {
+ param0 = 8;
+ }
+ else if (param0 < 0)
+ {
+ param0 = 0;
+ }
+
+ *ptr = (u8)param0;
+}
+
+THUMB_FUNC void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, s32 param2)
+{
+ NNS_SndPlayerSetTrackPitch(GetSoundPlayer(playerNo), param1, param2);
+}
+
+THUMB_FUNC void FUN_02004D34(u16 param0, u32 param1, s32 param2)
+{
+ GF_SndPlayerSetTrackPitch(FUN_02004018(FUN_020048D0(param0)), param1, param2);
+}
+
+THUMB_FUNC void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, s32 param2)
+{
+ NNS_SndPlayerSetTrackPan(GetSoundPlayer(playerNo), param1, param2);
+}
+
+THUMB_FUNC void GF_SndSetMonoFlag(u32 param0)
+{
+ NNS_SndSetMonoFlag(param0);
+ UNK_021C3DD8[0] = param0;
+}
+
+THUMB_FUNC void FUN_02004D74(s32 param0)
+{
+ *(s32 *)FUN_02003D38(6) = param0;
+}
+
+THUMB_FUNC void FUN_02004D84(u32 param0)
+{
+ *(u32 *)FUN_02003D38(7) = param0;
+}
+
+THUMB_FUNC u16 FUN_02004D94()
+{
+ u16 *ptr = FUN_02003D38(7);
+
+ if (*ptr == 0)
+ {
+ *ptr = 0;
+ return 0;
+ }
+
+ return --(*ptr);
+}
+
+THUMB_FUNC u8 *FUN_02004DB4()
+{
+ return UNK_021C3DE0;
+}
+
+THUMB_FUNC void FUN_02004DBC(u8 param0)
+{
+ *(u8 *)FUN_02003D38(18) = param0;
+}
+
+THUMB_FUNC u32 FUN_02004DCC(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5)
+{
+ u8 *ptr = FUN_02003D38(21);
+
+ FUN_02004E44(param0, param1, param2, param3, param4, param5);
+
+ *ptr = 0;
+ FUN_02003CE8(5);
+ return 1;
+}
+
+THUMB_FUNC u32 FUN_02004E08(
+ u32 param0, u16 param1, u32 param2, u32 param3, u32 param35, u8 param4, u32 param5)
+{
+ u32 *ptr = FUN_02003D38(8);
+
+ FUN_02004E44(param0, param1, param2, param3, param4, param5);
+
+ *ptr = param35;
+ FUN_02003CE8(6);
+ return 1;
+}
+
+THUMB_FUNC void FUN_02004E44(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5)
+{
+#pragma unused(param0)
+#pragma unused(param5)
+ u32 *ptr = FUN_02003D38(2);
+
+ FUN_020053CC(0, param2);
+ FUN_02004110(0);
+ FUN_02004130(param1);
+ FUN_02004D84(param3);
+ *ptr = FUN_020048F4(param1);
+
+ FUN_02004DBC(param4);
+}
+
+THUMB_FUNC u32 FUN_02004E80(u32 param0)
+{
+ if (param0 == 0)
+ {
+ return 0;
+ }
+
+ return param0 + 12;
+}
+
+THUMB_FUNC u32 FUN_02004E8C(u32 *param0)
+{
+ if (param0 == NULL)
+ {
+ return 0;
+ }
+
+ return param0[2];
+}
+
+THUMB_FUNC u32 FUN_02004E98(s32 param0)
+{
+ GF_Snd_RestoreState(FUN_02004748(5));
+
+ u16 r4 = (u16)param0;
+
+ if (r4 != 0x1B9 && (param0 > 0x1ef || param0 == 0))
+ {
+ r4 = 1;
+ }
+
+ GF_Snd_LoadWaveArc(r4);
+ return FUN_02004ED0(r4);
+}
+
+THUMB_FUNC u32 FUN_02004ED0(s32 param0)
+{
+ u32 *ptr = FUN_02003D38(32);
+
+ u16 r4 = (u16)param0;
+
+ if (r4 != 0x1B9 && (param0 > 0x1ef || param0 == 0))
+ {
+ r4 = 1;
+ }
+
+ struct WaveArcInfo *info = NNS_SndArcGetWaveArcInfo(r4);
+ if (info == NULL)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ u32 address = NNS_SndArcGetFileAddress(info->unk00);
+ if (address == 0)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ *ptr = SND_GetWaveDataAddress(address, 0);
+ return *ptr;
+}
+
+THUMB_FUNC u32 FUN_02004F28(u32 param0, struct UnkStruct_020040F4_2 *param1, s32 param2)
+{
+#pragma unused(param0)
+ u32 r4 = GF_SndPlayerGetTick(1);
+ u32 r5 = param1->unk08;
+
+ s32 r1 = (param2 / (3 * 0x100)) << 1;
+ if (r1 < 0)
+ {
+ r1 = 32 / r1;
+ r1 = -r1;
+ }
+ else if (r1 == 0)
+ {
+ r1 = 32;
+ }
+ else
+ {
+ r1 = 32 * r1;
+ }
+
+ u32 r0 = r4 * r1;
+ if (r0 >= r5)
+ {
+ r0 = 0;
+ }
+
+ return r0;
+}
+
+THUMB_FUNC u32 GF_SndPlayerGetTick(int playerNo)
+{
+ return NNS_SndPlayerGetTick(GetSoundPlayer(playerNo));
+}
+
+THUMB_FUNC void FUN_02004F70(
+ struct UnkStruct_020040F4_2 *param0, u8 *param1, int param2, s32 param3)
+{
+ int r0;
+ s32 r1;
+ int i, j;
+ u32 r12 = FUN_02004F28(1, param0, param3);
+ r1 = (s32)r12 - 100;
+ if (r1 < 0)
+ {
+ r1 = 0;
+ }
+
+ int r3 = 0;
+ int r7 = 0;
+ s8 r5;
+ if (param0->unk0c[r1] < 0x80)
+ {
+ r5 = 1;
+ }
+ else
+ {
+ r5 = -1;
+ }
+ r5 = (s8)(s32)r5;
+
+ for (i = r1; i < r12; i += 2)
+ {
+ r0 = 0;
+ if (r5 > 0)
+ {
+ if (param0->unk0c[i] > 0x80)
+ {
+ r0 = 1;
+ }
+ else
+ {
+ r3++;
+ }
+ }
+ else
+ {
+ if (param0->unk0c[i] < 0x80)
+ {
+ r0 = 1;
+ }
+ else
+ {
+ r3++;
+ }
+ }
+
+ if (r0 == 1)
+ {
+ for (j = 0; j < 9; j++)
+ {
+ if (r3 < UNK_020ECB8C[j])
+ {
+ r7 = j;
+ break;
+ }
+ }
+
+ if (r7 >= param2)
+ {
+ r7 = param2 - 1;
+ }
+
+ if (r3 != 0)
+ {
+ param1[param2 - 1 - r7]++;
+ }
+
+ r3 = 0;
+ r0 = 0;
+ if (param0->unk0c[i] < 0x80)
+ {
+ r5 = 1;
+ }
+ else
+ {
+ r5 = -1;
+ }
+ r5 = (s8)(s32)r5;
+ }
+ }
+
+ for (i = 0; i < param2; i++)
+ {
+ if (param1[i] >= 10)
+ {
+ param1[i] = 9;
+ }
+ }
+
+ for (i = 0; i < param2 - 1; i++)
+ {
+ if (param1[i] == 0 && param1[i + 1] != 0)
+ {
+ param1[i] = (u8)(param1[i + 1] / 2);
+ return;
+ }
+ }
+}
+
+THUMB_FUNC void FUN_02005068(s16 *param0, s16 *param1, u32 param2, u32 param3, void *param4)
+{
+ s16 st10[8][2];
+ s16(*st0)[2] = param4;
+ u8 *r7 = FUN_02003D38(19);
+
+ int r0;
+ int i, j;
+
+ if (param3 != 1)
+ {
+ param2 /= 2;
+ }
+
+ if (*r7 == 0)
+ {
+ return;
+ }
+
+ for (i = 0; i < *r7; i++)
+ {
+ st10[i][0] = param0[param2 - (*r7) + i];
+ st10[i][1] = param1[param2 - (*r7) + i];
+ }
+
+ for (i = (int)param2 - 1; i >= *r7 - 1; i--)
+ {
+ r0 = 0;
+ for (j = 0; j < *r7; j++)
+ {
+ r0 += param0[i - j];
+ }
+
+ param0[i] = (s16)(r0 / (*r7));
+
+ r0 = 0;
+ for (j = 0; j < *r7; j++)
+ {
+ r0 += param1[i - j];
+ }
+
+ param1[i] = (s16)(r0 / (*r7));
+ }
+
+ for (i = 0; i < *r7; i++)
+ {
+ st0[i][0] = st10[i][0];
+ st0[i][1] = st10[i][1];
+ }
+
+ DC_FlushRange(param0, param2);
+ DC_FlushRange(param1, param2);
+}
+
+THUMB_FUNC void FUN_02005160(u32 param0)
+{
+ NNS_SndPlayerSetAllocatableChannel(7, param0);
+}
+
+THUMB_FUNC void FUN_0200516C(u32 param0)
+{
+ if (param0 == 0)
+ {
+ FUN_02005160(0x7ff);
+ GF_SndCaptureStopReverb(0);
+ }
+ else if (param0 == 1)
+ {
+ FUN_02005160(0x7fff);
+ GF_SndCaptureStartReverb(30);
+ }
+ else
+ {
+ FUN_02005160(0x7fff);
+ GF_SndCaptureStartReverb(15);
+ }
+
+ GF_SndCaptureIsActive();
+}
+
+THUMB_FUNC void FUN_020051AC()
+{
+ if (FUN_02005404() == FALSE && GF_SndPlayerGetSeqNo(GetSoundPlayer(0)) != -1 &&
+ FUN_02004124() != 0x47e)
+ {
+
+ FUN_02005454();
+ FUN_020047C8(1, 1);
+ return;
+ }
+
+ FUN_0200541C();
+}
+
+THUMB_FUNC void GF_SndPlayerSetPlayerVolume(u32 param0, u8 param1)
+{
+ NNS_SndPlayerSetPlayerVolume(param0, param1);
+}
diff --git a/arm9/src/unk_020051F4.c b/arm9/src/unk_020051F4.c
new file mode 100644
index 00000000..6da250d5
--- /dev/null
+++ b/arm9/src/unk_020051F4.c
@@ -0,0 +1,716 @@
+#include "global.h"
+#include "unk_020051F4.h"
+#include "NNS_SND_arc.h"
+#include "constants/species.h"
+#include "heap.h"
+#include "sound.h"
+#include "unk_020040F4.h"
+#include "unk_0200CA44.h"
+
+extern u32 NNS_SndArcPlayerStartSeq(u32 *, u32);
+extern u32 NNS_SndArcPlayerStartSeqEx(u32 *, s32, s32, s32, u32);
+extern void NNS_SndPlayerStopSeqBySeqNo(u32, u32);
+extern void NNS_SndPlayerStopSeqAll(u32);
+extern void NNS_SndPlayerStopSeq(u32 *, u32);
+extern void NNS_SndPlayerSetTrackPan(u32 *, u32, u32);
+extern u32 FUN_02005D48(u32, u32, u32, u32);
+extern void FUN_02005E80(u32);
+extern void FUN_02005DFC();
+extern void *FUN_0201B6C8(u32 *);
+
+THUMB_FUNC u32 FUN_020051F4(u16 param0)
+{
+ int playerNo = FUN_02004018(FUN_020048D0(param0));
+
+ u32 ret = NNS_SndArcPlayerStartSeq(GetSoundPlayer(playerNo), param0);
+
+ FUN_0200526C(param0, playerNo);
+
+ return ret;
+}
+
+THUMB_FUNC u32 FUN_0200521C(u16 param0)
+{
+ u8 r4 = FUN_020048D0(param0);
+ int playerNo = FUN_02004018(r4);
+
+ u32 ret;
+ if (r4 == 7)
+ {
+ ret = FUN_02005288(param0, r4, playerNo);
+ }
+ else if (r4 == 1)
+ {
+ ret = FUN_020052B8(param0, r4, playerNo);
+ }
+ else
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ FUN_02004DBC(0);
+ FUN_0200526C(param0, playerNo);
+
+ return ret;
+}
+
+THUMB_FUNC void FUN_0200526C(u16 param0, int playerNo)
+{
+ FUN_02004110(param0);
+ FUN_02004858(param0, playerNo);
+
+ FUN_02003CE8(1);
+}
+
+THUMB_FUNC u32 FUN_02005288(u16 param0, u32 param1, int playerNo)
+{
+#pragma unused(param1)
+ GF_Snd_RestoreState(FUN_02004748(3));
+ GF_Snd_LoadSeq(param0);
+ GF_Snd_SaveState(FUN_02003D38(26));
+ return NNS_SndArcPlayerStartSeq(GetSoundPlayer(playerNo), param0);
+}
+
+THUMB_FUNC u32 FUN_020052B8(u16 param0, u32 param1, int playerNo)
+{
+#pragma unused(param1)
+ FUN_02003D38(18);
+ u16 *r4 = FUN_02003D38(31);
+
+ FUN_020045C4(param0, FUN_02004900(GF_SndPlayerGetSeqNo(GetSoundPlayer(0))));
+
+ return NNS_SndArcPlayerStartSeqEx(GetSoundPlayer(playerNo), -1, FUN_02004900(*r4), -1, param0);
+}
+
+THUMB_FUNC u32 FUN_02005308(u32 param0, u16 param1)
+{
+ if (param0 != 4)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ if (FUN_020048D0(param1) != 7)
+ {
+ GF_AssertFail();
+ return 0;
+ }
+
+ GF_Snd_LoadSeqEx(param1, 1);
+
+ u32 r4 = NNS_SndArcPlayerStartSeq(GetSoundPlayer(7), param1);
+ FUN_02004110(param1);
+ FUN_02003CE8(1);
+
+ return r4;
+}
+
+THUMB_FUNC void FUN_02005350(u16 param0, u32 param1)
+{
+ NNS_SndPlayerStopSeqBySeqNo(param0, param1);
+
+ u8 r0 = FUN_020048D0(param0);
+ if (r0 != 0xff)
+ {
+ NNS_SndHandleReleaseSeq(GetSoundPlayer(FUN_02004018(r0)));
+ }
+
+ FUN_02005374();
+}
+
+THUMB_FUNC void FUN_02005374()
+{
+ FUN_02004110(0);
+ FUN_02004130(0);
+ FUN_02003CE8(0);
+}
+
+THUMB_FUNC void FUN_0200538C(s32 param0, u16 param1, u32 param2)
+{
+ u8 r0 = FUN_020048D0(FUN_02004124());
+ if (r0 == 0xff)
+ {
+ return;
+ }
+
+ int playerNo = FUN_02004018(r0);
+ if (param2 == 0)
+ {
+ GF_SndPlayerMoveVolume(playerNo, 0, 0);
+ }
+
+ GF_SndPlayerMoveVolume(playerNo, param0, param1);
+ FUN_02004D74(param1);
+ FUN_02003CE8(3);
+}
+
+THUMB_FUNC void FUN_020053CC(s32 param0, s32 param1)
+{
+ u8 r6 = FUN_020048D0(FUN_02004124());
+ if (r6 == 0xff)
+ {
+ return;
+ }
+
+ if (!FUN_02005404())
+ {
+ GF_SndPlayerMoveVolume(FUN_02004018(r6), param0, param1);
+ FUN_02004D74(param1);
+ }
+
+ FUN_02003CE8(4);
+}
+
+THUMB_FUNC u16 FUN_02005404()
+{
+ return *(u16 *)FUN_02003D38(6);
+}
+
+THUMB_FUNC u16 FUN_02005410(u16 param0)
+{
+ return GF_SndPlayerCountPlayingSeqByPlayerNo(FUN_020048D0(param0));
+}
+
+THUMB_FUNC void FUN_0200541C()
+{
+ u8 *r5 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+ NNS_SndPlayerStopSeqAll(0);
+
+ if (*r5 == 1)
+ {
+ FUN_02004AAC(14);
+ }
+
+ if (*r4 == 1)
+ {
+ FUN_02004AAC(15);
+ }
+
+ FUN_02003CE8(0);
+}
+
+THUMB_FUNC void FUN_02005454()
+{
+ u8 *r5 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+
+ NNS_SndPlayerStopSeq(GetSoundPlayer(7), 0);
+ FUN_02005374();
+
+ for (s32 i = 0; i < 4; i++)
+ {
+ FUN_020054F8(i + 3, 0);
+ }
+
+ FUN_02005614(0);
+
+ if (*r5 == 1)
+ {
+ FUN_02004AAC(14);
+ }
+
+ if (*r4 == 1)
+ {
+ FUN_02004AAC(15);
+ }
+}
+
+THUMB_FUNC u32 FUN_020054A8(u16 param0, u32 param1)
+{
+ u32 r6 = PlaySE(param0);
+ FUN_02005530(param0, 0xFFFF, param1);
+
+ return r6;
+}
+
+THUMB_FUNC u32 PlaySE(u16 param0)
+{
+ int playerNo = FUN_02004018(FUN_020048D0(param0));
+
+ u32 r6 = NNS_SndArcPlayerStartSeq(GetSoundPlayer(playerNo), param0);
+ FUN_02004858(param0, playerNo);
+
+ return r6;
+}
+
+THUMB_FUNC void FUN_020054F0(u32 param0, u32 param1)
+{
+ NNS_SndPlayerStopSeqBySeqNo(param0, param1);
+}
+
+THUMB_FUNC void FUN_020054F8(s32 param0, u32 param1)
+{
+ NNS_SndPlayerStopSeq(GetSoundPlayer(param0), param1);
+}
+
+THUMB_FUNC u16 FUN_02005508(u16 param0)
+{
+ return GF_SndPlayerCountPlayingSeqByPlayerNo(FUN_020048D0(param0));
+}
+
+THUMB_FUNC BOOL FUN_02005514()
+{
+ for (s32 i = 0; i < 4; i++)
+ {
+ if (GF_SndPlayerCountPlayingSeqByPlayerNo(i + 3) == 1)
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02005530(u16 param0, u32 param1, u32 param2)
+{
+ NNS_SndPlayerSetTrackPan(GetSoundPlayer(FUN_02004018(FUN_020048D0(param0))), param1, param2);
+}
+
+THUMB_FUNC void FUN_0200554C(u32 param0)
+{
+ int playerNo = FUN_02004018(3);
+
+ for (int i = 0; i < 4; i++)
+ {
+ NNS_SndPlayerSetTrackPan(GetSoundPlayer(playerNo + i), 0xFFFF, param0);
+ }
+}
+
+THUMB_FUNC u32 FUN_02005578(u16 species)
+{
+ u8 *r4 = FUN_02003D38(17);
+ u32 *r0 = FUN_02003D38(35);
+
+ if (species != SPECIES_CHATOT)
+ {
+ if (species > SPECIES_MANAPHY_EGG || species == SPECIES_NONE)
+ {
+ species = SPECIES_BULBASAUR;
+ }
+ }
+
+ if (species == SPECIES_CHATOT)
+ {
+ if (FUN_02005D48(*r0, 0, 127, 0) == 1)
+ {
+ FUN_02005E80(0);
+
+ return 1;
+ }
+ }
+
+ u32 res;
+ if (*r4 == 0)
+ {
+ FUN_02005614(0);
+ res = NNS_SndArcPlayerStartSeqEx(GetSoundPlayer(1), -1, species, -1, 2);
+ FUN_02004858(species, 1);
+ }
+ else
+ {
+ res = NNS_SndArcPlayerStartSeqEx(GetSoundPlayer(8), -1, species, -1, 2);
+ FUN_02004858(species, 8);
+ }
+
+ FUN_02005E80(0);
+
+ return res;
+}
+
+THUMB_FUNC void FUN_02005614(u32 param0)
+{
+ u8 *r6 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+ FUN_02003D38(14);
+
+ NNS_SndPlayerStopSeq(GetSoundPlayer(1), param0);
+ NNS_SndPlayerStopSeq(GetSoundPlayer(8), param0);
+
+ if (*r6 == 1)
+ {
+ FUN_02004C3C(14);
+ FUN_02004A04(14);
+ }
+
+ if (*r4 == 1)
+ {
+ FUN_02004C3C(15);
+ FUN_02004A04(15);
+ }
+
+ FUN_02005DFC();
+}
+
+THUMB_FUNC BOOL FUN_02005670()
+{
+ u8 *r5 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+ FUN_02003D38(14);
+
+ if (*r5 == 1)
+ {
+ return FUN_02004ABC(14);
+ }
+
+ if (*r4 == 1)
+ {
+ return FUN_02004ABC(15);
+ }
+
+ return GF_SndPlayerCountPlayingSeqByPlayerNo(0);
+}
+
+THUMB_FUNC u32 FUN_020056AC(u32 param0, u16 param1, s32 param2, s32 param3, u32 param4)
+{
+ s32 st1c, st18;
+ u8 *st14 = FUN_02003D38(15);
+ u8 *st10 = FUN_02003D38(16);
+ u8 *r4 = FUN_02003D38(17);
+ u8 *stc = FUN_02003D38(29);
+ FUN_02003D38(35);
+
+ st1c = 64 + (param2 / 2);
+ st18 = param3 - 30;
+
+ if (st18 <= 0)
+ {
+ st18 = 1;
+ }
+
+ *r4 = 0;
+ if (*st14 == 1)
+ {
+ FUN_02004C3C(14);
+ FUN_02004A04(14);
+ }
+
+ if (*st10 == 1)
+ {
+ FUN_02004C3C(15);
+ FUN_02004A04(15);
+ }
+
+ u16 species = param1;
+ if (species != SPECIES_CHATOT)
+ {
+ if (species > SPECIES_MANAPHY_EGG || species == SPECIES_NONE)
+ {
+ species = SPECIES_BULBASAUR;
+ }
+ }
+
+ if (param1 == SPECIES_CHATOT)
+ {
+ switch (param0)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 5:
+ case 11:
+ case 12:
+ FUN_02005578(SPECIES_CHATOT);
+ if (*stc == 0)
+ {
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ }
+ else
+ {
+ FUN_02004ACC(14, (u8)st1c);
+ FUN_02004AF8(14, param3);
+ }
+
+ return 1;
+
+ default:
+ FUN_02005E80(1);
+ }
+ }
+
+ switch (param0)
+ {
+ case 0:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ break;
+ case 1:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(20, param4);
+ break;
+ case 2:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, 64);
+ FUN_02005BC8(species, 20);
+ GF_SndPlayerSetTrackPan(8, 0xFFFF, param2);
+ FUN_02005AC8(species, 8, st18);
+ break;
+ case 3:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(30, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, 192);
+ FUN_02005BC8(species, 16);
+ GF_SndPlayerSetTrackPan(8, 0xFFFF, param2);
+ FUN_02005AC8(species, 8, st18);
+ break;
+ case 4:
+ FUN_02004984(14);
+ FUN_02004B30(species, param3, st1c, 14, param4);
+ FUN_02004ACC(14, (u8)st1c);
+ FUN_02005AE0(15, param4);
+ FUN_02004AE4(14, 34304);
+ FUN_02005BF8(species, -64, st18, st1c, param4);
+ FUN_02004AE4(15, 34304);
+ break;
+ case 5:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -224);
+ break;
+ case 6:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, 44);
+ FUN_02005BC8(species, -64);
+ GF_SndPlayerSetTrackPan(8, 0xFFFF, param2);
+ FUN_02005AC8(species, 8, st18);
+ break;
+ case 7:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(11, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -128);
+ break;
+ case 8:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(60, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, 60);
+ break;
+ case 9:
+ FUN_02004984(14);
+ FUN_02004B30(species, param3, st1c, 14, param4);
+ FUN_02004ACC(14, (u8)st1c);
+ FUN_02005AE0(13, param4);
+ FUN_02004AE4(14, 26624);
+ break;
+ case 10:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(100, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -44);
+ break;
+ case 11:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -96);
+ break;
+ case 12:
+ FUN_02005578(species);
+ GF_SndPlayerSetTrackPan(1, 0xFFFF, param2);
+ FUN_02005AC8(species, 1, param3);
+ FUN_02005AE0(20, param4);
+ GF_SndPlayerSetTrackPitch(1, 0xFFFF, -96);
+ break;
+ case 13:
+ FUN_02005578(species);
+ FUN_02005AC8(species, 1, 127);
+ FUN_02005BC8(species, 20);
+ GF_SndPlayerSetTrackPan(8, 0xFFFF, param2);
+ GF_SndPlayerMoveVolume(8, param3, 0);
+ break;
+ case 14:
+ FUN_02005578(species);
+ break;
+ }
+
+ return 1;
+}
+
+THUMB_FUNC void FUN_02005AC8(u32 param0, int playerNo, s32 param2)
+{
+ GF_SndPlayerSetInitialVolume(playerNo, param2);
+ FUN_02004858(param0, playerNo);
+}
+
+THUMB_FUNC void FUN_02005AE0(u32 param0, u32 param1)
+{
+ u32 *r6 = FUN_02003D38(34);
+ FUN_02005BA0();
+
+ u32 *ptr = AllocFromHeap(param1, 2 * sizeof(u32));
+ if (ptr == NULL)
+ {
+ GF_AssertFail();
+ return;
+ }
+
+ ((u8 *)ptr)[0] = 0;
+ ((u8 *)ptr)[1] = 0;
+ ((u8 *)ptr)[2] = 0;
+ ((u8 *)ptr)[3] = 0;
+ ((u8 *)ptr)[4] = 0;
+ ((u8 *)ptr)[5] = 0;
+ ((u8 *)ptr)[6] = 0;
+ ((u8 *)ptr)[7] = 0;
+
+ ptr[0] = param0;
+ u32 r0 = (u32)FUN_0200CA44((void (*)(u32, void *))FUN_02005B2C, (void *)ptr, 0);
+ ptr[1] = r0;
+ *r6 = r0;
+}
+
+THUMB_FUNC void FUN_02005B2C(u32 param0, s32 *param1)
+{
+#pragma unused(param0)
+ u8 *r6 = FUN_02003D38(15);
+ u8 *r4 = FUN_02003D38(16);
+
+ if (*param1 == 10)
+ {
+ GF_SndPlayerMoveVolume(1, 0, *param1);
+ GF_SndPlayerMoveVolume(8, 0, *param1);
+ }
+
+ (*param1)--;
+
+ if (!FUN_02005670())
+ {
+ *param1 = 0;
+ }
+
+ if (*param1 <= 0)
+ {
+ FUN_02005614(0);
+ if (*r6 == 1)
+ {
+ FUN_02004C3C(14);
+ FUN_02004A04(14);
+ }
+ if (*r4 == 1)
+ {
+ FUN_02004C3C(15);
+ FUN_02004A04(15);
+ }
+
+ FUN_02005BA0();
+ }
+}
+
+THUMB_FUNC void FUN_02005BA0()
+{
+ u32 **r4 = FUN_02003D38(34);
+ if (*r4 != NULL)
+ {
+ void *r5 = FUN_0201B6C8(*r4);
+ FUN_0200CAB4((s32)(*r4));
+ FreeToHeap(r5);
+ }
+
+ *r4 = 0;
+}
+
+THUMB_FUNC u32 FUN_02005BC8(u16 param0, s32 param1)
+{
+ *(u8 *)FUN_02003D38(17) = 1;
+
+ FUN_02005E80(1);
+ u32 res = FUN_02005578(param0);
+
+ GF_SndPlayerSetTrackPitch(8, 0xFFFF, param1);
+
+ return res;
+}
+
+THUMB_FUNC void FUN_02005BF8(u32 param0, s32 param1, s32 param2, s32 param3, u32 param4)
+{
+#pragma unused(param1)
+ *(u8 *)FUN_02003D38(17) = 1;
+
+ FUN_02004984(15);
+ FUN_02004B30(param0, param2, param3, 15, param4);
+}
+
+THUMB_FUNC u32 PlaySound(u16 param0)
+{
+ FUN_020048F4(param0);
+ FUN_02005CEC(param0);
+
+ u8 r0 = FUN_020048D0(FUN_02004124());
+ if (r0 != 0xff)
+ {
+ FUN_020047C8(r0, 1);
+ }
+
+ GF_Snd_SaveState((int *)FUN_02003D38(28));
+ GF_Snd_LoadSeqEx(param0, 3);
+ u32 res = NNS_SndArcPlayerStartSeq(GetSoundPlayer(2), param0);
+ FUN_02004858(param0, 2);
+
+ return res;
+}
+
+THUMB_FUNC BOOL FUN_02005C74()
+{
+ u16 *r4 = FUN_02003D38(13);
+
+ if (GF_SndPlayerCountPlayingSeqByPlayerNo(2) != 0)
+ {
+ return TRUE;
+ }
+
+ if (*r4 != 0)
+ {
+ (*r4)--;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02005CA0(u32 param0)
+{
+ NNS_SndPlayerStopSeq(GetSoundPlayer(2), param0);
+ GF_Snd_RestoreState(FUN_02004748(6));
+}
+
+THUMB_FUNC BOOL FUN_02005CBC()
+{
+ FUN_02003D38(13);
+
+ if (FUN_02005C74() == TRUE)
+ {
+ return TRUE;
+ }
+
+ FUN_02005CA0(0);
+ u8 r0 = FUN_020048D0(FUN_02004124());
+
+ if (r0 != 0xff)
+ {
+ FUN_020047C8(r0, 0);
+ }
+
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_02005CEC(u16 param0)
+{
+#pragma unused(param0)
+ *(u16 *)FUN_02003D38(13) = 15;
+}
diff --git a/arm9/src/unk_020061E8.c b/arm9/src/unk_020061E8.c
new file mode 100644
index 00000000..6b9f8ead
--- /dev/null
+++ b/arm9/src/unk_020061E8.c
@@ -0,0 +1,35 @@
+#include "global.h"
+#include "heap.h"
+#include "unk_0200CA44.h"
+#include "unk_020061E8.h"
+
+extern struct TextPrinter *FUN_0201B6C8(void);
+
+THUMB_FUNC BOOL FUN_020061E8(void (*r0)(u32, void *), u32 r1, u32 r2, u32 r3)
+{
+ void * r4;
+ if(r1 != 0)
+ {
+ r4 = AllocFromHeap(r3, r1);
+ if(r4 == 0)
+ {
+ return FALSE;
+ }
+ memset(r4, 0, r1);
+ }
+ else
+ {
+ r4 = NULL;
+ }
+ return FUN_0200CA44(r0, r4, r2);
+}
+
+THUMB_FUNC void FUN_0200621C(s32 r4)
+{
+ struct TextPrinter * r0 = FUN_0201B6C8();
+ if(r0 != NULL)
+ {
+ FreeToHeap(r0);
+ }
+ FUN_0200CAB4(r4);
+}
diff --git a/arm9/src/unk_0200CA44.c b/arm9/src/unk_0200CA44.c
index 6ffed8be..a9a9f7c6 100644
--- a/arm9/src/unk_0200CA44.c
+++ b/arm9/src/unk_0200CA44.c
@@ -2,25 +2,25 @@
#include "main.h"
#include "unk_0200CA44.h"
-extern BOOL FUN_0201B60C(void *, void (*)(u32, struct TextPrinter *), struct TextPrinter *, u32);
+extern BOOL FUN_0201B60C(void *, void (*)(u32, void *), void *, u32);
extern void FUN_0201B6A0(s32);
-THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2)
+THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, u32 r2)
{
return FUN_0201B60C(gMain.unk18, r0, r1, r2);
}
-THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2)
+THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, u32 r2)
{
return FUN_0201B60C(gMain.unk1C, r0, r1, r2);
}
-THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2)
+THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, u32 r2)
{
return FUN_0201B60C(gMain.unk24, r0, r1, r2);
}
-THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2)
+THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, u32 r2)
{
return FUN_0201B60C(gMain.unk20, r0, r1, r2);
}
diff --git a/arm9/src/unk_0201C6B4.c b/arm9/src/unk_0201C6B4.c
new file mode 100644
index 00000000..151a9cd6
--- /dev/null
+++ b/arm9/src/unk_0201C6B4.c
@@ -0,0 +1,80 @@
+#include "global.h"
+#include "unk_0201C6B4.h"
+
+THUMB_FUNC s32 FUN_0201C6B4(s8 * r0)
+{
+ s32 r2 = 0;
+ while(r0[r2] != 0)
+ {
+ r2++;
+ }
+ return r2;
+}
+
+THUMB_FUNC s8 * FUN_0201C6C8(s8 * r0, s8 * r1, s8 r2)
+{
+ for(int r3 = 0; r3 < 0x100; r3++)
+ {
+ r1[r3] = r0[r3];
+ if(r2 == r0[r3] || r0[r3] == 0)
+ {
+ r1[r3] = 0;
+ if(r2 == 0xd && r0[r3 + 1] == 0xa)
+ {
+ return &r0[r3 + 2];
+ }
+ return &r0[r3 + 1];
+ }
+ }
+ return NULL;
+}
+
+THUMB_FUNC s32 FUN_0201C70C(s8 * r4)
+{
+ s32 unk0 = FUN_0201C6B4(r4);
+ s32 r3;
+ s32 r5 = 1;
+ s32 r6 = 0;
+ for(r3 = unk0 - 1; r3 >= 0; r3--)
+ {
+ if(r4[r3] >= 0x30 && r4[r3] <= 0x39)
+ {
+ r6 += (r4[r3] - 0x30) * r5;
+ }
+ else
+ {
+ if(r3 == 0)
+ {
+ if(r4[r3] == 0x2d)
+ {
+ r6 *= -1;
+ }
+ }
+ else
+ {
+ return -1;
+ }
+ }
+ r5 *= 0xa;
+ }
+ return r6;
+}
+
+THUMB_FUNC void FUN_0201C750(s8 * r5, s8 * r4)
+{
+ for(u8 r2 = 0; r2 < 4; r2++)
+ {
+ s32 * unk5 = (s32 *)r5;
+ unk5[r2] = 0;
+ }
+ u8 r0 = (u8)(FUN_0201C6B4(r4));
+ for(u8 r2 = 0; r2 < r0; r2++)
+ {
+ r5[r2] = r4[r2];
+ }
+}
+
+THUMB_FUNC BOOL FUN_0201C78C(u32 r0)
+{
+ return r0 < 0x121;
+}
diff --git a/arm9/src/unk_0201E7D8.c b/arm9/src/unk_0201E7D8.c
index 9a4d8cab..2bfd6485 100644
--- a/arm9/src/unk_0201E7D8.c
+++ b/arm9/src/unk_0201E7D8.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "fx.h"
#include "heap.h"
-#include "NNS_g3d.h"
+#include "nitro/NNS_g3d.h"
#include "unk_0201E7D8.h"
#include "GX_g3.h"
diff --git a/arm9/src/unk_020222E8.c b/arm9/src/unk_020222E8.c
new file mode 100644
index 00000000..30a2a2c4
--- /dev/null
+++ b/arm9/src/unk_020222E8.c
@@ -0,0 +1,33 @@
+#include "global.h"
+#include "unk_020222E8.h"
+
+THUMB_FUNC void * FUN_020222E8()
+{
+ return 0x5 << 0x18;
+}
+
+THUMB_FUNC void * FUN_020222F0()
+{
+ return 0x2 << 0x8;
+}
+
+THUMB_FUNC void * FUN_020222F8()
+{
+ return 0x05000400;
+}
+
+THUMB_FUNC void * FUN_02022300()
+{
+ return 0x2 << 0x8;
+}
+
+THUMB_FUNC void * FUN_02022308()
+{
+ return 0x05000200;
+}
+
+THUMB_FUNC void * FUN_02022310()
+{
+ return 0x05000600;
+}
+
diff --git a/arm9/src/unk_02022450.c b/arm9/src/unk_02022450.c
new file mode 100644
index 00000000..7984fcc2
--- /dev/null
+++ b/arm9/src/unk_02022450.c
@@ -0,0 +1,45 @@
+#include "global.h"
+#include "FS_file.h"
+#include "OS_terminate_proc.h"
+#include "CARD_rom.h"
+#include "MI_memory.h"
+
+#include "unk_02022450.h"
+
+static const char string_saying_rom[] = "rom";
+
+/*Replacing (HW_MAIN_MEM_SHARED + 0xC) or (HW_MAIN_MEM_SHARED + 0x10) or defining ADAJ or 01 constants causes match failure*/
+THUMB_FUNC void FUN_02022450 () {
+ if (!FS_IsAvailable()) {
+ OS_Terminate();
+ }
+ else {
+ struct CARD_Header* card_header_buffer = (struct CARD_Header*)HW_MAIN_MEM_SHARED;
+
+ if (!*(u32*)(HW_MAIN_MEM_SHARED + 0xC)) {
+ CARD_Init();
+ MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)card_header_buffer, HW_CARD_ROM_HEADER_SIZE);
+ MI_CpuCopy8((u8*)HW_ROM_HEADER_BUF, (u8*)HW_CARD_ROM_HEADER, HW_CARD_ROM_HEADER_SIZE);
+ *(u32*)(HW_MAIN_MEM_SHARED + 0xC) = 0x4A414441 /*"ADAJ" LE*/;
+ }
+ FSArchive * const r0 = FS_FindArchive(string_saying_rom, 3);
+ r0->fat = card_header_buffer->header_48;
+ r0->fat_size = card_header_buffer->header_4C;
+ r0->fnt = card_header_buffer->header_40;
+ r0->fnt_size = card_header_buffer->header_44;
+ if (*(u32*)(HW_MAIN_MEM_SHARED + 0xC) != 0x4A414441 /*"ADAJ" LE*/ || *(u16*)(HW_MAIN_MEM_SHARED + 0x10) != 0x3130 /*"01" LE*/) {
+ OS_Terminate();
+ }
+ }
+ return;
+}
+
+THUMB_FUNC void Reset_To_File (const char* path) {
+ FSFile file;
+ FS_InitFile(&file);
+ if (FS_OpenFile(&file, path)) {
+ *(u32*)HW_ROM_BASE_OFFSET_BUF = file.prop.file.top;
+ OS_ResetSystem(0);
+ }
+ return;
+}
diff --git a/arm9/src/unk_0202A1E0.c b/arm9/src/unk_0202A1E0.c
new file mode 100644
index 00000000..4f32d430
--- /dev/null
+++ b/arm9/src/unk_0202A1E0.c
@@ -0,0 +1,536 @@
+#include "global.h"
+#include "MI_memory.h"
+#include "msgdata.h"
+#include "heap.h"
+#include "unk_0202A1E0.h"
+
+THUMB_FUNC s32 SaveStruct23_Substruct4_Substruct1_sizeof()
+{
+ return sizeof(struct SaveStruct23_Substruct4_Substruct1); // 228
+}
+
+THUMB_FUNC void SaveStruct23_Substruct1_Init(struct SaveStruct23_Substruct1 *substruct1)
+{
+ MI_CpuFill8(substruct1, 0, sizeof(struct SaveStruct23_Substruct1));
+}
+
+THUMB_FUNC void SaveStruct23_Substruct2_Init(struct SaveStruct23_Substruct2 *substruct2)
+{
+ MI_CpuFill8(substruct2, 0, sizeof(struct SaveStruct23_Substruct2));
+ substruct2->u_3 = 1;
+}
+
+THUMB_FUNC void SaveStruct23_Messages_Init(struct SaveStruct23_Messages *messages)
+{
+ MailMsg_init_fromTemplate(&messages->messages[0], 0);
+ MailMsg_init_fromTemplate(&messages->messages[1], 1);
+ MailMsg_init_fromTemplate(&messages->messages[2], 2);
+ MailMsg_init_fromTemplate(&messages->messages[3], 3);
+}
+
+THUMB_FUNC void SaveStruct23_Substruct4_Init(struct SaveStruct23_Substruct4 *substruct4)
+{
+ MI_CpuFill8(substruct4, 0, sizeof(struct SaveStruct23_Substruct4));
+}
+
+THUMB_FUNC u32 SaveStruct23_Substruct1_GetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *dst)
+{
+ switch (field)
+ {
+ case FIELD_0x0_2:
+ return substruct1->u_0_2;
+ case FIELD_0x2:
+ return substruct1->u_2;
+ case FIELD_0x3:
+ return substruct1->u_3;
+ case FIELD_0x4:
+ return substruct1->u_4;
+ case FIELD_0x6:
+ return substruct1->u_6;
+ case FIELD_0x8:
+ MI_CpuCopy8(&substruct1->u_8, dst, 4);
+ return 0;
+ case FIELD_0x2C:
+ MI_CpuCopy8(&substruct1->u_2C, dst, 16);
+ return 0;
+ case FIELD_flag0:
+ return substruct1->flag0;
+ case FIELD_0xC:
+ MI_CpuCopy8(&substruct1->u_C, dst, 28);
+ return 0;
+ case FIELD_0x0_5:
+ return substruct1->u_0_5;
+ case FIELD_0x28:
+ return substruct1->u_28;
+ default:
+ return 0;
+ };
+}
+
+THUMB_FUNC void SaveStruct23_Substruct1_SetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *value)
+{
+ switch (field)
+ {
+ case FIELD_0x0_2:
+ substruct1->u_0_2 = *(u8 *)value;
+ break;
+ case FIELD_0x2:
+ substruct1->u_2 = *(u8 *)value;
+ break;
+ case FIELD_0x3:
+ substruct1->u_3 = *(u8 *)value;
+ break;
+ case FIELD_0x4:
+ substruct1->u_4 = *(u16 *)value;
+ break;
+ case FIELD_0x6:
+ substruct1->u_6 = *(u16 *)value;
+ break;
+ case FIELD_0x8:
+ MI_CpuCopy8(value, &substruct1->u_8, 4);
+ break;
+ case FIELD_0x2C:
+ MI_CpuCopy8(value, &substruct1->u_2C, 16);
+ break;
+ case FIELD_flag0:
+ substruct1->flag0 = *(u8 *)value;
+ break;
+ case FIELD_0xC:
+ MI_CpuCopy8(value, &substruct1->u_C, 28);
+ break;
+ case FIELD_0x28:
+ substruct1->u_28 = *(u32 *)value;
+ break;
+ case FIELD_0x0_5:
+ substruct1->u_0_5 = *(u8 *)value;
+ break;
+ }
+}
+
+THUMB_FUNC void FUN_0202A36C(struct SaveStruct23_Substruct1 *substruct1, s32 arg1, s32 arg2, s32 arg3)
+{
+ if (substruct1->u_3 + arg1 < 0xff)
+ {
+ substruct1->u_3 += arg1;
+ }
+
+ if (substruct1->u_4 + arg2 < 0xffff)
+ {
+ substruct1->u_4 += arg2;
+ }
+
+ if (substruct1->u_6 + arg3 < 0xffff)
+ {
+ substruct1->u_6 += arg3;
+ }
+}
+
+THUMB_FUNC BOOL SaveStruct23_Substruct1_GetFlag1(struct SaveStruct23_Substruct1 *substruct1)
+{
+ return substruct1->flag1;
+}
+
+THUMB_FUNC void SaveStruct23_Substruct1_SetFlag1(struct SaveStruct23_Substruct1 *substruct1, BOOL flag)
+{
+ substruct1->flag1 = flag;
+}
+
+THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0x0(struct SaveStruct23_Substruct2 *substruct2, u16 value, DataSetMode mode)
+{
+ switch (mode)
+ {
+ case DATA_SET:
+ if (value > 9999)
+ {
+ substruct2->u_0 = 9999;
+ }
+ else
+ {
+ substruct2->u_0 = value;
+ }
+ break;
+ case DATA_ADD:
+ if (substruct2->u_0 + value > 9999)
+ {
+ substruct2->u_0 = 9999;
+ }
+ else
+ {
+ substruct2->u_0 += value;
+ }
+ break;
+ case DATA_SUBSTRACT:
+ if (substruct2->u_0 < value)
+ {
+ substruct2->u_0 = 0;
+ }
+ else
+ {
+ substruct2->u_0 -= value;
+ }
+ break;
+ case DATA_GET:
+ default:
+ break;
+ }
+ return substruct2->u_0;
+}
+
+THUMB_FUNC u8 SaveStruct23_Substruct2_SetField_0x2(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode)
+{
+ switch (mode)
+ {
+ case DATA_RESET:
+ substruct2->u_2 = 0;
+ substruct2->flag4 = 0;
+ break;
+ case DATA_INCREMENT:
+ if (substruct2->flag4)
+ {
+ substruct2->u_2++;
+ }
+ else
+ {
+ substruct2->u_2 = 1;
+ substruct2->flag4 = 1;
+ }
+ break;
+ }
+ return substruct2->u_2;
+}
+
+THUMB_FUNC u8 SaveStruct23_Substruct2_SetField_0x3(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode)
+{
+ switch (mode)
+ {
+ case DATA_RESET:
+ substruct2->u_3 = 1;
+ break;
+ case DATA_INCREMENT:
+ if (substruct2->u_3 < 10)
+ {
+ substruct2->u_3++;
+ }
+ break;
+ case DATA_DECREMENT:
+ if (substruct2->u_3 > 1)
+ {
+ substruct2->u_3--;
+ }
+ break;
+ }
+ return substruct2->u_3;
+}
+
+THUMB_FUNC void SaveStruct23_Substruct2_SetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *src)
+{
+ if (mode == 0)
+ {
+ MI_CpuCopy8(src, substruct2->u_C0, 168);
+ }
+ else
+ {
+ MI_CpuCopy8(src, substruct2->u_18, 168);
+ }
+}
+
+THUMB_FUNC void SaveStruct23_Substruct2_GetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *dst)
+{
+ if (mode == 0)
+ {
+ MI_CpuCopy8(substruct2->u_C0, dst, 168);
+ }
+ else
+ {
+ MI_CpuCopy8(substruct2->u_18, dst, 168);
+ }
+}
+
+THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0x16(struct SaveStruct23_Substruct2 *substruct2, struct Unk0202A4B8 *arg1)
+{
+ u16 var1, var2, var3, var4, var5, total;
+
+ var1 = (u16) ((arg1->u_2 - 1) * 1000);
+ var2 = (u16) (arg1->u_4 * 10);
+ var3 = (u16) (arg1->u_3 * 20);
+
+ if (var2 + var3 > 950)
+ {
+ var4 = 0;
+ }
+ else
+ {
+ var4 = (u16) (950 - (var2 + var3));
+ }
+
+ if (arg1->u_6 > 970)
+ {
+ var5 = 0;
+ }
+ else
+ {
+ var5 = (u16) ((1000 - arg1->u_6) / 30);
+ }
+
+ total = (u16) (var1 + var4 + var5);
+ substruct2->u_16 = total;
+ return total;
+}
+
+THUMB_FUNC u16 SaveStruct23_Substruct2_GetField_0x16(struct SaveStruct23_Substruct2 *substruct2)
+{
+ return substruct2->u_16;
+}
+
+THUMB_FUNC u8 FUN_0202A524(struct SaveStruct23_Substruct2 *substruct2)
+{
+ return (u8)(substruct2->u_16 / 1000);
+}
+
+THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0xC(struct SaveStruct23_Substruct2 *substruct2, u16 arg1, DataSetMode mode)
+{
+ if (arg1 == 5)
+ {
+ return 0;
+ }
+
+ switch(mode) {
+ case DATA_RESET:
+ substruct2->u_C[arg1] = 0;
+ break;
+ case DATA_INCREMENT:
+ if (substruct2->u_C[arg1] < 0xfffe) {
+ substruct2->u_C[arg1]++;
+ }
+ break;
+ }
+ return substruct2->u_C[arg1];
+}
+
+THUMB_FUNC BOOL SaveStruct23_Substruct2_SetFlag(struct SaveStruct23_Substruct2 *substruct2, u16 flagNumber, DataSetMode mode)
+{
+ u16 i;
+ u16 flag = 1;
+
+ for (i = 0; i < flagNumber ; i++)
+ {
+ flag <<= 1;
+ }
+
+ switch (mode)
+ {
+ case DATA_RESET:
+ flag = (u16) (flag ^ 0xffff);
+ substruct2->flags &= flag;
+ break;
+ case DATA_SET:
+ substruct2->flags |= flag;
+ break;
+ case DATA_GET:
+ return (BOOL) ((substruct2->flags >> flagNumber) & 1);
+ }
+
+ return FALSE;
+}
+
+
+THUMB_FUNC void SaveStruct23_Substruct2_SetField_0x4(struct SaveStruct23_Substruct2 *substruct2, u32 value)
+{
+ substruct2->u_4 = value;
+}
+
+THUMB_FUNC u32 SaveStruct23_Substruct2_GetField_0x4(struct SaveStruct23_Substruct2 *substruct2)
+{
+ return substruct2->u_4;
+}
+
+
+THUMB_FUNC void SaveStruct23_SetMessage(struct SaveBlock2 *sav2, u32 index, struct MailMessage *message)
+{
+ struct SaveStruct23 *data = SavArray_get(sav2, 23);
+ MailMsg_copy(&data->messages.messages[index], message);
+}
+
+THUMB_FUNC struct MailMessage *SaveStruct23_GetMessage(struct SaveBlock2 *sav2, u32 index)
+{
+ struct SaveStruct23 *data = SavArray_get(sav2, 23);
+ return &data->messages.messages[index];
+}
+
+THUMB_FUNC void SaveStruct23_Substruct4_SetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) {
+
+ u8 flag = 1;
+
+ if (arg2 == 0 || arg2 > 200)
+ {
+ return;
+ }
+
+ if (arg1 == 0 || arg1 > 10)
+ {
+ return;
+ }
+
+ u16 var1 = (u16) ((arg1 - 1) * 200 + (arg2 - 1));
+ u8 index = (u8) (var1 / 8);
+ u8 remainder = (u8) (var1 % 8);
+ flag <<= remainder;
+
+ substruct4->flags[index] |= flag;
+ substruct4->u_0 = (arg3->u_0 << 24) | ((arg3->u_4 & 0xff) << 16) | ((arg3->u_8 & 0xff) << 8) | arg3->u_C;
+}
+
+THUMB_FUNC void SaveStruct23_Substruct4_ClearArrayFlags(struct SaveStruct23_Substruct4 *substruct4)
+{
+
+ MI_CpuFill8(substruct4->flags, 0, 250);
+ MI_CpuFill8(&substruct4->u_0, 0, 4);
+}
+
+THUMB_FUNC BOOL StructUnk0202A68C_Compare(struct Unk0202A68C *struct1, struct Unk0202A68C *struct2)
+{
+ if (struct1->u_0 > struct2->u_0) {
+ return TRUE;
+ } else if (struct1->u_4 > struct2->u_4) {
+ return TRUE;
+ } else if (struct1->u_8 > struct2->u_8) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC BOOL SaveStruct23_Substruct4_GetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3)
+{
+ u8 flag = 1;
+
+ if (arg2 > 200 || arg1 > 10)
+ {
+ return FALSE;
+ }
+
+ u32 var0 = substruct4->u_0;
+
+ Unk0202A68C var1;
+ var1.u_0 = var0 >> 24 & 0xff;
+ var1.u_4 = var0 >> 16 & 0xff;
+ var1.u_8 = var0 >> 8 & 0xff;
+ var1.u_C = var0 & 0xff;
+
+ if (StructUnk0202A68C_Compare(arg3, &var1))
+ {
+ SaveStruct23_Substruct4_ClearArrayFlags(substruct4);
+ return FALSE;
+ }
+
+ u16 var2 = (u16) ((arg1 - 1) * 200 + (arg2 - 1));
+ u8 index = (u8) (var2 / 8);
+ u8 remainder = (u8) (var2 % 8);
+ flag <<= remainder;
+
+ if (substruct4->flags[index] & flag)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+THUMB_FUNC u8 SaveStruct23_Substruct4_GetField_0xFE(struct SaveStruct23_Substruct4 *substruct4)
+{
+ return substruct4->u_FE;
+}
+
+THUMB_FUNC u8 SaveStruct23_Substruct4_GetField_0xFF(struct SaveStruct23_Substruct4 *substruct4)
+{
+ return substruct4->u_FF;
+}
+
+THUMB_FUNC void SaveStruct23_Substruct4_SetSubstruct1(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct1 *substruct1, u8 arg2, u8 arg3)
+{
+ MI_CpuCopy8(substruct1, &substruct4->substruct1, sizeof(struct SaveStruct23_Substruct4_Substruct1)*7);
+ substruct4->u_101 = arg2;
+ substruct4->u_100 = arg3;
+ substruct4->u_FE = 1;
+}
+
+THUMB_FUNC void FUN_0202A784(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dst)
+{
+ dst->u_0 = substruct4->u_101;
+ dst->u_1 = substruct4->u_100;
+}
+
+THUMB_FUNC void FUN_0202A798(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A798 *arg1, u32 arg2)
+{
+ struct Unk0202A798_substruct *unk_substruct = &arg1->u_0;
+ u8 *var1 = arg1->u_30;
+ struct SaveStruct23_Substruct4_Substruct1 *substruct4_substruct1 = &substruct4->substruct1[arg2];
+ struct MsgData *message;
+
+ unk_substruct->u_0 = 10000;
+ unk_substruct->u_4 = substruct4_substruct1->u_C9;
+
+ if(substruct4_substruct1->u_C8_0)
+ {
+ message = NewMsgDataFromNarc(0, NARC_MSGDATA_MSG, 17, 11);
+ ReadMsgDataIntoU16Array(message, (u32) (22 + substruct4_substruct1->u_C8_1), unk_substruct->u_8);
+ DestroyMsgData(message);
+ }
+ else
+ {
+ MI_CpuCopy8(substruct4_substruct1->u_A8, unk_substruct->u_8, 16);
+ }
+
+ MI_CpuCopy8(substruct4_substruct1->u_CA, unk_substruct->u_18, 8);
+ MI_CpuCopy8(substruct4_substruct1->u_D2, unk_substruct->u_20, 8);
+ MI_CpuCopy8(substruct4_substruct1->u_DA, unk_substruct->u_28, 8);
+ MI_CpuCopy8(substruct4_substruct1->u_0, var1, 168);
+}
+
+THUMB_FUNC void FUN_0202A838(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct2 *substruct4_substruct2, u8 arg2, u8 arg3)
+{
+ MI_CpuCopy8(substruct4_substruct2, &substruct4->substruct2, sizeof(struct SaveStruct23_Substruct4_Substruct2));
+ substruct4->u_103 = arg2;
+ substruct4->u_102 = arg3;
+ substruct4->u_FF = 1;
+}
+
+THUMB_FUNC void FUN_0202A864(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dst)
+{
+ dst->u_0 = substruct4->u_103;
+ dst->u_1 = substruct4->u_102;
+}
+
+THUMB_FUNC struct SaveStruct23_Substruct4_Substruct2 *FUN_0202A878(struct SaveStruct23_Substruct4 *substruct4, u32 heap_id)
+{
+ struct SaveStruct23_Substruct4_Substruct2 *substruct4_substruct2 = AllocFromHeap(heap_id, sizeof(struct SaveStruct23_Substruct4_Substruct2) /* 1020 */);
+ MI_CpuCopy8(&substruct4->substruct2, substruct4_substruct2, sizeof(struct SaveStruct23_Substruct4_Substruct2));
+ return substruct4_substruct2;
+}
+
+THUMB_FUNC s32 SaveStruct23_sizeof()
+{
+ return sizeof(struct SaveStruct23); // 0xD00 (3328)
+}
+
+THUMB_FUNC void SaveStruct23_Init(struct SaveStruct23 *saveStruct23)
+{
+ SaveStruct23_Substruct1_Init(&saveStruct23->substruct1);
+ SaveStruct23_Substruct2_Init(&saveStruct23->substruct2);
+ SaveStruct23_Messages_Init(&saveStruct23->messages);
+ SaveStruct23_Substruct4_Init(&saveStruct23->substruct4);
+}
+
+THUMB_FUNC struct SaveStruct23_Substruct1 *SaveStruct23_GetSubstruct1(struct SaveBlock2* sav2)
+{
+ return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct1;
+}
+
+THUMB_FUNC struct SaveStruct23_Substruct2 *SaveStruct23_GetSubstruct2(struct SaveBlock2* sav2)
+{
+ return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct2;
+}
+
+THUMB_FUNC struct SaveStruct23_Substruct4 *SaveStruct23_GetSubstruct4(struct SaveBlock2* sav2)
+{
+ return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct4;
+} \ No newline at end of file
diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c
index 7d3b4c03..e6a1514b 100644
--- a/arm9/src/unk_02031734.c
+++ b/arm9/src/unk_02031734.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "unk_02031734.h"
#include "MI_memory.h"
+#include "communication_error.h"
#include "game_init.h"
#include "heap.h"
#include "player_data.h"
@@ -52,7 +53,6 @@ extern void MOD04_021DD6F0();
extern s32 MOD04_021D76AC();
extern MOD05_021D74E0(struct SaveBlock2 *sav2, u32 param1);
extern void MOD04_021D83A8(void (*param0)(s32));
-extern void FUN_02033F70(int, int, int);
extern void FUN_0200541C();
THUMB_FUNC void FUN_02031734(struct SaveBlock2 *sav2, u8 param1)
@@ -2090,7 +2090,7 @@ THUMB_FUNC u8 FUN_020335B8()
THUMB_FUNC void FUN_020335D0(s32 param0)
{
- FUN_02033F70(0, 1, param0);
+ ShowCommunicationError(0, 1, param0);
while (TRUE)
{
}
@@ -2098,7 +2098,7 @@ THUMB_FUNC void FUN_020335D0(s32 param0)
THUMB_FUNC void FUN_020335E0()
{
- FUN_02033F70(0, 4, 0);
+ ShowCommunicationError(0, 4, 0);
while (TRUE)
{
}
diff --git a/arm9/src/unk_0204AEA8.c b/arm9/src/unk_0204AEA8.c
index a2b2dd71..54deef4d 100644
--- a/arm9/src/unk_0204AEA8.c
+++ b/arm9/src/unk_0204AEA8.c
@@ -2,9 +2,9 @@
#include "heap.h"
#include "unk_0204639C.h"
#include "unk_0204AEA8.h"
+#include "unk_020040F4.h"
extern void MOD05_021E3444(u32, struct UnkSavStruct80 *, u32);
-extern void FUN_0200433C(u32, u16, u32);
THUMB_FUNC BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0)
{
diff --git a/arm9/src/unk_0204AF24.c b/arm9/src/unk_0204AF24.c
new file mode 100644
index 00000000..31b3ffb0
--- /dev/null
+++ b/arm9/src/unk_0204AF24.c
@@ -0,0 +1,135 @@
+#include "global.h"
+#include "unk_0204AF24.h"
+
+extern void FUN_02037394(struct UnkSavStruct80 *);
+extern u32 FUN_0200E308(void);
+extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 heap_id);
+extern void MOD05_021E331C(struct UnkSavStruct80 *);
+
+THUMB_FUNC BOOL FUN_0204AF24(struct UnkStruct_0204639C * arg0)
+{
+ if(!FUN_0203739C(FUN_02046528(arg0)))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204AF3C(struct UnkStruct_0204639C * r5)
+{
+ struct UnkSavStruct80 * r4 = FUN_02046528(r5);
+ if(!FUN_0203739C(r4))
+ {
+ GF_ASSERT(0);
+ return;
+ }
+ FUN_02037394(r4);
+ FUN_0204640C(r5, &FUN_0204AF24, NULL);
+}
+
+THUMB_FUNC BOOL FUN_0204AF6C(struct UnkStruct_0204639C * arg0)
+{
+ if(FUN_020464A4(FUN_02046528(arg0)))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204AF84(struct UnkStruct_0204639C * r5)
+{
+ struct UnkSavStruct80 * r4 = FUN_02046528(r5);
+ if(FUN_0203739C(r4))
+ {
+ GF_ASSERT(0);
+ return;
+ }
+ FUN_0204649C(r4);
+ FUN_0204640C(r5, &FUN_0204AF6C, NULL);
+}
+
+THUMB_FUNC BOOL FUN_0204AFB4(struct UnkStruct_0204639C * arg0)
+{
+#pragma unused(arg0)
+ if(FUN_0200E308())
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204AFC8(struct UnkStruct_0204639C * r4)
+{
+ if(!FUN_0203739C(FUN_02046528(r4)))
+ {
+ GF_ASSERT(0);
+ return;
+ }
+ FUN_0200E1D0(0, 0, 0, 0, 6, 1, 4);
+ FUN_0204640C(r4, &FUN_0204AFB4, 0);
+}
+
+THUMB_FUNC void FUN_0204B00C(struct UnkStruct_0204639C * r4)
+{
+ if(!FUN_0203739C(FUN_02046528(r4)))
+ {
+ GF_ASSERT(0);
+ return;
+ }
+ FUN_0200E1D0(0, 1, 1, 0, 6, 1, 4);
+ FUN_0204640C(r4, FUN_0204AFB4, 0);
+}
+
+THUMB_FUNC BOOL FUN_0204B050(struct UnkStruct_0204639C * r5)
+{
+ u32 * r4 = FUN_02046530(r5);
+ switch(r4[0])
+ {
+ case 0:
+ FUN_0204AFC8(r5);
+ r4[0]++;
+ break;
+ case 1:
+ FUN_0204AF3C(r5);
+ r4[0]++;
+ break;
+ case 2:
+ return TRUE;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204B090(struct UnkStruct_0204639C * r0)
+{
+ FUN_0204640C(r0, &FUN_0204B050, 0);
+}
+
+THUMB_FUNC BOOL FUN_0204B0A0(struct UnkStruct_0204639C * r5)
+{
+ u32 * r4 = FUN_02046530(r5);
+ struct UnkSavStruct80 * r0 = FUN_02046528(r5);
+ switch(r4[0])
+ {
+ case 0:
+ FUN_0204AF84(r5);
+ r4[0]++;
+ break;
+ case 1:
+ MOD05_021E331C(r0);
+ FUN_0204B00C(r5);
+ r4[0]++;
+ break;
+ case 2:
+ return TRUE;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+THUMB_FUNC void FUN_0204B0E8(struct UnkStruct_0204639C * r0)
+{
+ FUN_0204640C(r0, &FUN_0204B0A0, 0);
+}
diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c
index cabd756e..a023ad83 100644
--- a/arm9/src/unk_0205FA2C.c
+++ b/arm9/src/unk_0205FA2C.c
@@ -1,5 +1,6 @@
#include "unk_0205FA2C.h"
#include "unk_020337E8.h"
+#include "unk_0202A1E0.h"
extern void *UNK_020F96DC;
extern void *UNK_020FA6E8;
@@ -11,17 +12,9 @@ extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16);
extern u16 MOD06_02244660(struct UnkSavStruct80 *param0, u8 *param1);
extern u16 MOD06_022446BC(struct UnkSavStruct80 *param0, u8 *param1);
extern u16 MOD06_022446E0(struct UnkSavStruct80 *param0, u8 *param1);
-extern void FUN_0202A5CC(u32 param0, u32 param1);
-extern u32 FUN_0202A5D0(u32 param0);
extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1);
-extern u32 FUN_0202A8D8(struct SaveBlock2 *sav2);
-extern u32 FUN_0202A578(u32 param0, u32 param1, u32 param2);
extern u32 FUN_02026CC4(struct SaveBlock2 *sav2);
extern u32 FUN_02025D94(u32 param0, u32 param1);
-extern u32 FUN_0202A8CC(struct SaveBlock2 *sav2);
-extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2);
-extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2);
-extern int FUN_0202A538(u32 param0, u16 param1, u32 param2);
const u8 UNK_020F7454[] = {
0x00,
@@ -327,33 +320,33 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2)
return 0;
}
- u32 res2 = FUN_0202A8D8(sav2);
+ struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2);
- u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0);
- u8 res4 = (u8)FUN_0202A578(res2, 0, 0);
- u8 res5 = (u8)FUN_0202A578(res2, 1, 0);
+ BOOL flagD = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_GET);
+ BOOL flag0 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_GET);
+ BOOL flag1 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_GET);
- u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0);
- u8 res7 = (u8)FUN_0202A578(res2, 2, 0);
- u8 res8 = (u8)FUN_0202A578(res2, 3, 0);
+ BOOL flagE = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_GET);
+ BOOL flag2 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_GET);
+ BOOL flag3 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_GET);
- if (res3 != 0 && res4 != 0 && res5 != 0)
+ if (flagD && flag0 && flag1)
{
return 0;
}
u32 res9 = FUN_02026CC4(sav2);
- if (res3 == 0)
+ if (!flagD)
{
if (FUN_02025D94(res9, 0x55) != 0)
{
- FUN_0202A578(res2, 0xd, 1);
+ SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_SET);
return 1;
}
- if (res6 == 0)
+ if (!flagE)
{
- FUN_0202A578(res2, 0xe, 1);
+ SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_SET);
}
return 4;
@@ -364,36 +357,36 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2)
return 0;
}
- if (res4 == 0)
+ if (!flag0)
{
if (FUN_02025D94(res9, 0x56) != 0)
{
- FUN_0202A578(res2, 0, 1);
+ SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_SET);
return 2;
}
- if (res7 == 0)
+ if (!flag2)
{
- FUN_0202A578(res2, 2, 1);
+ SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_SET);
}
return 4;
}
- if (res < 100 || res5 != 0)
+ if (res < 100 || flag1)
{
return 0;
}
if (FUN_02025D94(res9, 0x57) != 0)
{
- FUN_0202A578(res2, 1, 1);
+ SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_SET);
return 3;
}
- if (res8 == 0)
+ if (!flag3)
{
- FUN_0202A578(res2, 3, 1);
+ SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_SET);
}
return 4;
@@ -407,24 +400,24 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2)
return 0;
}
- u32 res2 = FUN_0202A8D8(sav2);
+ struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2);
- u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0);
- u8 res4 = (u8)FUN_0202A578(res2, 0, 0);
- u8 res5 = (u8)FUN_0202A578(res2, 1, 0);
+ BOOL flagD = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_GET);
+ BOOL flag0 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_GET);
+ BOOL flag1 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_GET);
- u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0);
- u8 res7 = (u8)FUN_0202A578(res2, 2, 0);
- u8 res8 = (u8)FUN_0202A578(res2, 3, 0);
+ BOOL flagE = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_GET);
+ BOOL flag2 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_GET);
+ BOOL flag3 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_GET);
- if (res3 != 0 && res4 != 0 && res5 != 0)
+ if (flagD && flag0 && flag1)
{
return 0;
}
- if (res3 == 0)
+ if (!flagD)
{
- if (res6 != 0)
+ if (flagE)
{
return 4;
}
@@ -437,9 +430,9 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2)
return 0;
}
- if (res4 == 0)
+ if (!flag0)
{
- if (res7 != 0)
+ if (flag2)
{
return 5;
}
@@ -452,12 +445,12 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2)
return 0;
}
- if (res5 != 0)
+ if (flag1)
{
return 0;
}
- if (res8 != 0)
+ if (flag3)
{
return 6;
}
@@ -488,42 +481,42 @@ THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2)
{
u32 res = FUN_02060070(FUN_020287A4(FUN_0202881C(sav2)));
- FUN_0202A5CC(FUN_0202A8D8(sav2), res);
+ SaveStruct23_Substruct2_SetField_0x4(SaveStruct23_GetSubstruct2(sav2), res);
return res;
}
THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2)
{
- u32 res = FUN_0202A8D8(sav2);
+ struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2);
- u32 res2 = FUN_02060070(FUN_0202A5D0(res));
+ u32 res2 = FUN_02060070(SaveStruct23_Substruct2_GetField_0x4(saveStruct23_substruct2));
- FUN_0202A5CC(res, res2);
+ SaveStruct23_Substruct2_SetField_0x4(saveStruct23_substruct2, res2);
u32 res3 = FUN_02060064(res2);
- FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3);
+ SaveStruct23_Substruct1_SetField(SaveStruct23_GetSubstruct1(sav2), FIELD_0x28, &res3);
return res3;
}
THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2)
{
- u32 res = FUN_0202A8D8(sav2);
+ struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2);
- u32 res2 = FUN_0202A8CC(sav2);
+ struct SaveStruct23_Substruct1 *saveStruct23_substruct1 = SaveStruct23_GetSubstruct1(sav2);
- u32 res3 = FUN_02060064(FUN_0202A5D0(res));
+ u32 res3 = FUN_02060064(SaveStruct23_Substruct2_GetField_0x4(saveStruct23_substruct2));
int i = 0;
- int res4 = FUN_0202A538(res, (u16)FUN_0202A240(res2, 0, 0), 0) * 0x18;
+ int res4 = SaveStruct23_Substruct2_SetField_0xC(saveStruct23_substruct2, (u16)SaveStruct23_Substruct1_GetField(saveStruct23_substruct1, FIELD_0x0_2, 0), DATA_GET) * 0x18;
for (i = 0; i < res4; i++)
{
res3 = FUN_02060064(res3);
}
- FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3);
+ SaveStruct23_Substruct1_SetField(SaveStruct23_GetSubstruct1(sav2), FIELD_0x28, &res3);
return res3;
}
diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c
index 0bf3a15a..752a9970 100644
--- a/arm9/src/unk_0206015C.c
+++ b/arm9/src/unk_0206015C.c
@@ -3,38 +3,33 @@
#include "heap.h"
#include "event_data.h"
#include "main.h"
+#include "unk_0204AF24.h"
/* Note to future reader, there might be some errors
in the return type / parameters. They are right for this code
but they might not be for every code, please do not blindly
trust these prototypes if you are decompiling these functions. */
-extern THUMB_FUNC u32 MOD06_02244DB0(u32);
-extern THUMB_FUNC void MOD06_02244DBC(void*);
-extern THUMB_FUNC void MOD06_02244DC4(void*, void*);
-extern THUMB_FUNC void MOD06_02244EF8(void*);
-extern THUMB_FUNC void MOD06_02244F18(void*);
-extern THUMB_FUNC BOOL MOD06_02244F24(void*);
-extern THUMB_FUNC void MOD06_02244F2C(void*);
-extern THUMB_FUNC void* MOD06_02245088(struct UnkSavStruct80 * savStruct);
-extern THUMB_FUNC u32 MOD06_02245114(u32, struct UnkSavStruct80*);
-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 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 *);
-extern THUMB_FUNC void FUN_0204AFC8(struct UnkStruct_0204639C *);
-extern THUMB_FUNC void FUN_0204B00C(struct UnkStruct_0204639C *);
-extern THUMB_FUNC void FUN_0204C1B4(struct UnkStruct_0204639C*, u32,u32,u32,u32,u32,u32,u32);
-extern THUMB_FUNC u32 FUN_020553A0(u32);
-extern THUMB_FUNC void FUN_0205889C(u32, u32);
-extern THUMB_FUNC void FUN_0205F1C4(struct ScriptState *);
-extern THUMB_FUNC void FUN_0205F1D4(struct ScriptState *);
-extern THUMB_FUNC void FUN_0206367C(struct UnkSavStruct80 *, u32);
-
-
+extern u32 MOD06_02244DB0(u32);
+extern void MOD06_02244DBC(void*);
+extern void MOD06_02244DC4(void*, void*);
+extern void MOD06_02244EF8(void*);
+extern void MOD06_02244F18(void*);
+extern BOOL MOD06_02244F24(void*);
+extern void MOD06_02244F2C(void*);
+extern void * MOD06_02245088(struct UnkSavStruct80 * savStruct);
+extern u32 MOD06_02245114(u32, struct UnkSavStruct80*);
+extern void MOD06_02245190(u32);
+extern void MOD06_02245198(u8, u32);
+extern u32 MOD06_022451F0(u32);
+
+extern void PlaySE(u32);
+extern void FUN_02049160(struct UnkStruct_0204639C*, u32);
+extern void FUN_0204C1B4(struct UnkStruct_0204639C*, u32,u32,u32,u32,u32,u32,u32);
+extern u32 FUN_020553A0(u32);
+extern void FUN_0205889C(u32, u32);
+extern void FUN_0205F1C4(struct ScriptState *);
+extern void FUN_0205F1D4(struct ScriptState *);
+extern void FUN_0206367C(struct UnkSavStruct80 *, u32);
THUMB_FUNC void FUN_0206015C(struct UnkSavStruct80 *savStruct)
{
diff --git a/arm9/src/unk_02064E20.c b/arm9/src/unk_02064E20.c
new file mode 100644
index 00000000..8586981b
--- /dev/null
+++ b/arm9/src/unk_02064E20.c
@@ -0,0 +1,17 @@
+#include "global.h"
+#include "scrcmd.h"
+#include "unk_02025484.h"
+#include "unk_02024E64.h"
+#include "unk_02064E20.h"
+
+THUMB_FUNC void FUN_02064E20(struct UnkSavStruct80* unk0)
+{
+ struct unk_2025484 * r4 = (struct unk_2025484 *)FUN_02024ED8(ScriptEnvironment_GetSav2Ptr(unk0));
+ if((u32)FUN_020254B4(r4) == 6)
+ {
+ return;
+ }
+ FUN_02025490(r4, 6);
+ u16 * ptr0 = (u16 *)FUN_020254A0(r4 , 6);
+ ptr0[0] = 2;
+}
diff --git a/arm9/src/unk_02088DD8.c b/arm9/src/unk_02088DD8.c
new file mode 100644
index 00000000..b4633d25
--- /dev/null
+++ b/arm9/src/unk_02088DD8.c
@@ -0,0 +1,76 @@
+#include "global.h"
+#include "heap.h"
+#include "pokemon.h"
+#include "unk_02088DD8.h"
+
+extern void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl);
+
+THUMB_FUNC struct UnkStruct_02088DD8* FUN_02088DD8(u32 heap_id) {
+ struct UnkStruct_02088DD8 *returnPointer = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02088DD8));
+ __builtin__clear(returnPointer, sizeof(struct UnkStruct_02088DD8));
+ return returnPointer;
+}
+
+THUMB_FUNC void FUN_02088DF0(struct UnkStruct_02037CF0 *r0) {
+ FreeToHeap(r0);
+}
+
+#define WOTBL_END 0xFFFF
+#define WOTBL_MOVE_MASK 0x01FF
+#define WOTBL_MOVE_SHIFT 0
+#define WOTBL_LVL_MASK 0xFE00
+#define WOTBL_LVL_SHIFT 9
+#define WOTBL_MOVE(x) ((u16)(((x) & WOTBL_MOVE_MASK) >> WOTBL_MOVE_SHIFT))
+#define WOTBL_LVL(x) (/*(u8)*/(((x) & WOTBL_LVL_MASK) >> WOTBL_LVL_SHIFT))
+// i don't know why either.
+
+THUMB_FUNC u16* GetEligibleLevelUpMoves(struct Pokemon* pokemon, u32 heap_id) {
+ u16 species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, 0);
+ u8 forme = (u8)GetMonData(pokemon, MON_DATA_FORME, 0);
+ u8 level = (u8)GetMonData(pokemon, MON_DATA_LEVEL, 0);
+ u16 moves[4];
+
+ for (u8 i = 0; i < 4; ++i) {
+ moves[i] = (u16)GetMonData(pokemon, MON_DATA_MOVE1 + i, 0);
+ }
+
+ u16 *tableFromFile = AllocFromHeap(heap_id, 44);
+ u16 *returnTable = AllocFromHeap(heap_id, 44);
+
+ LoadWotbl_HandleAlternateForme(species, forme, tableFromFile);
+
+ for (u8 i = 0, j, k = 0; i < 22; i++) {
+ if (tableFromFile[i] == WOTBL_END) {
+ returnTable[k] = WOTBL_END;
+ break;
+ }
+ else {
+ if (WOTBL_LVL(tableFromFile[i]) > level) continue;
+
+ tableFromFile[i] = WOTBL_MOVE(tableFromFile[i]);
+
+ for (j = 0; j < 4; j++) {
+ if (tableFromFile[i] == moves[j]) break;
+ }
+ if (j != 4) continue;
+
+ if (k >= 0) {
+ // don't know when that would be false
+ for (j = 0; j < k; j++) {
+ if (returnTable[j] == tableFromFile[i]) break;
+ }
+ }
+ if (j != k) continue;
+
+ returnTable[k] = tableFromFile[i];
+ k++;
+ }
+ }
+
+ FreeToHeap(tableFromFile);
+ return returnTable;
+}
+
+THUMB_FUNC BOOL FUN_02088EF8(u16 *r0) {
+ return *r0 != 0xFFFF;
+}
diff --git a/arm9/src/wfc_user_info_warning.c b/arm9/src/wfc_user_info_warning.c
new file mode 100644
index 00000000..d9edd94c
--- /dev/null
+++ b/arm9/src/wfc_user_info_warning.c
@@ -0,0 +1,151 @@
+#include "global.h"
+#include "bg_window.h"
+#include "filesystem.h"
+#include "game_init.h"
+#include "GX_layers.h"
+#include "main.h"
+#include "msgdata.h"
+#include "msgdata/msg.naix"
+#include "PAD_pad.h"
+#include "string16.h"
+#include "text.h"
+#include "wfc_user_info_warning.h"
+
+extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id);
+extern void FUN_0200A274(fx32 brightness, fx32, u32);
+extern void FUN_0200CB00(struct BgConfig* bg_config, enum GFBgLayer layer, u32 num_tiles, u32, u8, u32 heap_id);
+extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_value, u32 palette_num);
+extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen);
+extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32);
+
+static const struct WindowTemplate sWFCWarningMsgWindowTemplate = {
+ .bgId = GF_BG_LYR_MAIN_0,
+ .tilemapLeft = 3,
+ .tilemapTop = 3,
+ .width = 26,
+ .height = 18,
+ .paletteNum = 0x01,
+ .baseTile = 0x23,
+};
+
+static const struct GraphicsModes sWFCWarningMsgGraphicsModes = {
+ .dispMode = GX_DISPMODE_GRAPHICS,
+ .bgMode = GX_BGMODE_0,
+ .subMode = GX_BGMODE_0,
+ ._2d3dMode = GX_BG0_AS_2D,
+};
+
+static const struct BgTemplate sWFCWarningMsgBgTemplate = {
+ .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 = GX_BG_AREAOVER_XLU,
+ .unk17 = 0,
+ .mosaic = FALSE,
+};
+
+static const struct GraphicsBanks sWFCWarningMsgGraphicsBanks = {
+ .bg = 3,
+ .bgextpltt = 0,
+ .subbg = 0,
+ .subbgextpltt = 0,
+ .obj = 0,
+ .objextpltt = 0,
+ .subobj = 0,
+ .subobjextpltt = 0,
+ .tex = 0,
+ .texpltt = 0,
+};
+
+THUMB_FUNC void ShowWFCUserInfoWarning(u32 heap_id, u32 a1)
+{
+#pragma unused(a1)
+ struct Window window;
+
+ FUN_0200E3A0(PM_LCD_TOP, 0);
+ FUN_0200E3A0(PM_LCD_BOTTOM, 0);
+
+ FUN_02015EF4();
+ Main_SetVBlankIntrCB(NULL, NULL);
+ FUN_02015F34(NULL, NULL);
+
+ GX_DisableEngineALayers();
+ GX_DisableEngineBLayers();
+ reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+ reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK;
+
+ SetKeyRepeatTimers(4, 8);
+
+ gMain.unk65 = 0;
+
+ GX_SwapDisplay();
+ reg_G2_BLDCNT = 0;
+ reg_G2S_DB_BLDCNT = 0;
+ reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK);
+ reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK);
+ GX_SetBanks(&sWFCWarningMsgGraphicsBanks);
+
+ struct BgConfig* bg_config = BgConfig_Alloc(heap_id);
+
+ SetBothScreensModesAndDisable(&sWFCWarningMsgGraphicsModes);
+
+ InitBgFromTemplate(bg_config, 0, &sWFCWarningMsgBgTemplate, 0);
+ BgClearTilemapBufferAndCommit(bg_config, 0);
+ FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id);
+ FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id);
+ BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id);
+ BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21);
+ BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21);
+
+ struct MsgData* warning_messages_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0613_bin, heap_id);
+ struct String* warning_message = String_ctor(384, heap_id);
+ FUN_0201BD5C();
+ AddWindow(bg_config, &window, &sWFCWarningMsgWindowTemplate);
+ FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144);
+ FUN_0200CCA4(&window, FALSE, 0x01F7, 2);
+
+ ReadMsgDataIntoString(warning_messages_data, 15, warning_message);
+ AddTextPrinterParameterized(&window, 0, warning_message, 0, 0, 0, 0);
+ String_dtor(warning_message);
+
+ GX_BothDispOn();
+ FUN_0200E394(0);
+ FUN_0200E394(1);
+ FUN_0200A274(0, 0x3F, 3);
+
+ while (TRUE)
+ {
+ u16 pressed_buttons = PAD_Read();
+
+ HandleDSLidAction();
+
+ if (pressed_buttons & PAD_BUTTON_A)
+ {
+ break;
+ }
+
+ OS_WaitIrq(TRUE, OS_IE_V_BLANK);
+ }
+
+ RemoveWindow(&window);
+ DestroyMsgData(warning_messages_data);
+
+ ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_OFF);
+ ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_OFF);
+ ToggleBgLayer(GF_BG_LYR_MAIN_2, GX_LAYER_TOGGLE_OFF);
+ ToggleBgLayer(GF_BG_LYR_MAIN_3, GX_LAYER_TOGGLE_OFF);
+ ToggleBgLayer(GF_BG_LYR_SUB_0, GX_LAYER_TOGGLE_OFF);
+ ToggleBgLayer(GF_BG_LYR_SUB_1, GX_LAYER_TOGGLE_OFF);
+ ToggleBgLayer(GF_BG_LYR_SUB_2, GX_LAYER_TOGGLE_OFF);
+ ToggleBgLayer(GF_BG_LYR_SUB_3, GX_LAYER_TOGGLE_OFF);
+
+ FreeBgTilemapBuffer(bg_config, 0);
+ FreeToHeap(bg_config);
+}
diff --git a/files/graphic/field_board/.gitignore b/files/graphic/field_board/.gitignore
new file mode 100644
index 00000000..026c4ab6
--- /dev/null
+++ b/files/graphic/field_board/.gitignore
@@ -0,0 +1,52 @@
+narc_0000.NCGR
+narc_0001.NCLR
+narc_0002.NCGR
+narc_0003.NCGR
+narc_0004.NCGR
+narc_0005.NCGR
+narc_0006.NCGR
+narc_0007.NCGR
+narc_0008.NCGR
+narc_0009.NCGR
+narc_0010.NCGR
+narc_0011.NCGR
+narc_0012.NCGR
+narc_0013.NCGR
+narc_0014.NCGR
+narc_0015.NCGR
+narc_0016.NCGR
+narc_0017.NCGR
+narc_0018.NCGR
+narc_0019.NCGR
+narc_0020.NCGR
+narc_0021.NCGR
+narc_0022.NCGR
+narc_0023.NCGR
+narc_0024.NCGR
+narc_0025.NCGR
+narc_0026.NCGR
+narc_0027.NCGR
+narc_0028.NCGR
+narc_0029.NCGR
+narc_0030.NCGR
+narc_0031.NCGR
+narc_0032.NCGR
+narc_0033.NCGR
+narc_0034.NCGR
+narc_0035.NCGR
+narc_0036.NCGR
+narc_0037.NCGR
+narc_0038.NCGR
+narc_0039.NCGR
+narc_0040.NCGR
+narc_0041.NCGR
+narc_0042.NCGR
+narc_0043.NCGR
+narc_0044.NCGR
+narc_0045.NCGR
+narc_0046.NCGR
+narc_0047.NCGR
+narc_0048.NCGR
+narc_0049.NCGR
+narc_0050.NCGR
+narc_0051.NCGR
diff --git a/files/graphic/field_board/narc_0000.NCGR b/files/graphic/field_board/narc_0000.NCGR
deleted file mode 100644
index 2214fa16..00000000
--- a/files/graphic/field_board/narc_0000.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0000.png b/files/graphic/field_board/narc_0000.png
new file mode 100644
index 00000000..048d9b4f
--- /dev/null
+++ b/files/graphic/field_board/narc_0000.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0001.NCLR b/files/graphic/field_board/narc_0001.NCLR
deleted file mode 100644
index 990624d5..00000000
--- a/files/graphic/field_board/narc_0001.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0001.pal b/files/graphic/field_board/narc_0001.pal
new file mode 100644
index 00000000..b1272fcc
--- /dev/null
+++ b/files/graphic/field_board/narc_0001.pal
@@ -0,0 +1,259 @@
+JASC-PAL
+0100
+256
+156 213 139
+255 255 255
+222 205 164
+180 189 197
+139 148 156
+255 0 0
+8 0 255
+255 172 16
+156 115 82
+222 205 164
+0 0 0
+98 74 41
+123 98 49
+139 115 49
+156 123 57
+180 148 65
+156 213 139
+255 255 255
+164 222 180
+180 189 197
+139 148 156
+255 0 0
+8 0 255
+255 172 16
+156 115 82
+164 222 180
+0 0 0
+41 106 65
+49 131 74
+57 139 82
+65 156 82
+74 180 98
+156 213 139
+255 255 255
+205 205 205
+180 189 197
+139 148 156
+255 0 0
+8 0 255
+255 172 16
+156 115 82
+205 205 205
+0 0 0
+82 90 90
+98 115 115
+115 123 123
+131 139 139
+148 156 156
+156 213 139
+255 255 255
+180 197 222
+180 189 197
+139 148 156
+255 0 0
+8 0 255
+255 172 16
+156 115 82
+180 197 222
+0 0 0
+57 65 115
+74 82 139
+82 98 148
+90 106 164
+106 131 189
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/files/graphic/field_board/narc_0002.NCGR b/files/graphic/field_board/narc_0002.NCGR
deleted file mode 100644
index 72eaa937..00000000
--- a/files/graphic/field_board/narc_0002.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0002.png b/files/graphic/field_board/narc_0002.png
new file mode 100644
index 00000000..b421947e
--- /dev/null
+++ b/files/graphic/field_board/narc_0002.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0003.NCGR b/files/graphic/field_board/narc_0003.NCGR
deleted file mode 100644
index b8146d82..00000000
--- a/files/graphic/field_board/narc_0003.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0003.png b/files/graphic/field_board/narc_0003.png
new file mode 100644
index 00000000..ae1cad13
--- /dev/null
+++ b/files/graphic/field_board/narc_0003.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0004.NCGR b/files/graphic/field_board/narc_0004.NCGR
deleted file mode 100644
index 718d36b2..00000000
--- a/files/graphic/field_board/narc_0004.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0004.png b/files/graphic/field_board/narc_0004.png
new file mode 100644
index 00000000..b504a95a
--- /dev/null
+++ b/files/graphic/field_board/narc_0004.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0005.NCGR b/files/graphic/field_board/narc_0005.NCGR
deleted file mode 100644
index 62a652fc..00000000
--- a/files/graphic/field_board/narc_0005.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0005.png b/files/graphic/field_board/narc_0005.png
new file mode 100644
index 00000000..9e66ffaf
--- /dev/null
+++ b/files/graphic/field_board/narc_0005.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0006.NCGR b/files/graphic/field_board/narc_0006.NCGR
deleted file mode 100644
index 32aaa40d..00000000
--- a/files/graphic/field_board/narc_0006.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0006.png b/files/graphic/field_board/narc_0006.png
new file mode 100644
index 00000000..9a3b8ee1
--- /dev/null
+++ b/files/graphic/field_board/narc_0006.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0007.NCGR b/files/graphic/field_board/narc_0007.NCGR
deleted file mode 100644
index ae134cc6..00000000
--- a/files/graphic/field_board/narc_0007.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0007.png b/files/graphic/field_board/narc_0007.png
new file mode 100644
index 00000000..d4902c20
--- /dev/null
+++ b/files/graphic/field_board/narc_0007.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0008.NCGR b/files/graphic/field_board/narc_0008.NCGR
deleted file mode 100644
index 8c301e2e..00000000
--- a/files/graphic/field_board/narc_0008.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0008.png b/files/graphic/field_board/narc_0008.png
new file mode 100644
index 00000000..4230dee6
--- /dev/null
+++ b/files/graphic/field_board/narc_0008.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0009.NCGR b/files/graphic/field_board/narc_0009.NCGR
deleted file mode 100644
index cc56dc59..00000000
--- a/files/graphic/field_board/narc_0009.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0009.png b/files/graphic/field_board/narc_0009.png
new file mode 100644
index 00000000..993d65dc
--- /dev/null
+++ b/files/graphic/field_board/narc_0009.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0010.NCGR b/files/graphic/field_board/narc_0010.NCGR
deleted file mode 100644
index 9e63cbc0..00000000
--- a/files/graphic/field_board/narc_0010.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0010.png b/files/graphic/field_board/narc_0010.png
new file mode 100644
index 00000000..8c30ed22
--- /dev/null
+++ b/files/graphic/field_board/narc_0010.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0011.NCGR b/files/graphic/field_board/narc_0011.NCGR
deleted file mode 100644
index dc9a146e..00000000
--- a/files/graphic/field_board/narc_0011.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0011.png b/files/graphic/field_board/narc_0011.png
new file mode 100644
index 00000000..13ad7ee1
--- /dev/null
+++ b/files/graphic/field_board/narc_0011.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0012.NCGR b/files/graphic/field_board/narc_0012.NCGR
deleted file mode 100644
index 7ece9935..00000000
--- a/files/graphic/field_board/narc_0012.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0012.png b/files/graphic/field_board/narc_0012.png
new file mode 100644
index 00000000..671d51b4
--- /dev/null
+++ b/files/graphic/field_board/narc_0012.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0013.NCGR b/files/graphic/field_board/narc_0013.NCGR
deleted file mode 100644
index d655fec6..00000000
--- a/files/graphic/field_board/narc_0013.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0013.png b/files/graphic/field_board/narc_0013.png
new file mode 100644
index 00000000..03582f80
--- /dev/null
+++ b/files/graphic/field_board/narc_0013.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0014.NCGR b/files/graphic/field_board/narc_0014.NCGR
deleted file mode 100644
index 9a3eaee2..00000000
--- a/files/graphic/field_board/narc_0014.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0014.png b/files/graphic/field_board/narc_0014.png
new file mode 100644
index 00000000..c2120f8f
--- /dev/null
+++ b/files/graphic/field_board/narc_0014.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0015.NCGR b/files/graphic/field_board/narc_0015.NCGR
deleted file mode 100644
index bcd4f3d6..00000000
--- a/files/graphic/field_board/narc_0015.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0015.png b/files/graphic/field_board/narc_0015.png
new file mode 100644
index 00000000..969bed28
--- /dev/null
+++ b/files/graphic/field_board/narc_0015.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0016.NCGR b/files/graphic/field_board/narc_0016.NCGR
deleted file mode 100644
index c3b2c6e6..00000000
--- a/files/graphic/field_board/narc_0016.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0016.png b/files/graphic/field_board/narc_0016.png
new file mode 100644
index 00000000..d20cbaf0
--- /dev/null
+++ b/files/graphic/field_board/narc_0016.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0017.NCGR b/files/graphic/field_board/narc_0017.NCGR
deleted file mode 100644
index e65bee7a..00000000
--- a/files/graphic/field_board/narc_0017.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0017.png b/files/graphic/field_board/narc_0017.png
new file mode 100644
index 00000000..2f5353f2
--- /dev/null
+++ b/files/graphic/field_board/narc_0017.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0018.NCGR b/files/graphic/field_board/narc_0018.NCGR
deleted file mode 100644
index c2ee2796..00000000
--- a/files/graphic/field_board/narc_0018.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0018.png b/files/graphic/field_board/narc_0018.png
new file mode 100644
index 00000000..26826ad2
--- /dev/null
+++ b/files/graphic/field_board/narc_0018.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0019.NCGR b/files/graphic/field_board/narc_0019.NCGR
deleted file mode 100644
index a719f813..00000000
--- a/files/graphic/field_board/narc_0019.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0019.png b/files/graphic/field_board/narc_0019.png
new file mode 100644
index 00000000..3ce891a2
--- /dev/null
+++ b/files/graphic/field_board/narc_0019.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0020.NCGR b/files/graphic/field_board/narc_0020.NCGR
deleted file mode 100644
index ea2c46cb..00000000
--- a/files/graphic/field_board/narc_0020.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0020.png b/files/graphic/field_board/narc_0020.png
new file mode 100644
index 00000000..8e2e75d0
--- /dev/null
+++ b/files/graphic/field_board/narc_0020.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0021.NCGR b/files/graphic/field_board/narc_0021.NCGR
deleted file mode 100644
index 05e41987..00000000
--- a/files/graphic/field_board/narc_0021.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0021.png b/files/graphic/field_board/narc_0021.png
new file mode 100644
index 00000000..98cea9ce
--- /dev/null
+++ b/files/graphic/field_board/narc_0021.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0022.NCGR b/files/graphic/field_board/narc_0022.NCGR
deleted file mode 100644
index 3041a705..00000000
--- a/files/graphic/field_board/narc_0022.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0022.png b/files/graphic/field_board/narc_0022.png
new file mode 100644
index 00000000..1fac00f6
--- /dev/null
+++ b/files/graphic/field_board/narc_0022.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0023.NCGR b/files/graphic/field_board/narc_0023.NCGR
deleted file mode 100644
index a63dae87..00000000
--- a/files/graphic/field_board/narc_0023.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0023.png b/files/graphic/field_board/narc_0023.png
new file mode 100644
index 00000000..ba66d1fe
--- /dev/null
+++ b/files/graphic/field_board/narc_0023.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0024.NCGR b/files/graphic/field_board/narc_0024.NCGR
deleted file mode 100644
index 727edd61..00000000
--- a/files/graphic/field_board/narc_0024.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0024.png b/files/graphic/field_board/narc_0024.png
new file mode 100644
index 00000000..3114b153
--- /dev/null
+++ b/files/graphic/field_board/narc_0024.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0025.NCGR b/files/graphic/field_board/narc_0025.NCGR
deleted file mode 100644
index 770b3435..00000000
--- a/files/graphic/field_board/narc_0025.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0025.png b/files/graphic/field_board/narc_0025.png
new file mode 100644
index 00000000..e257f724
--- /dev/null
+++ b/files/graphic/field_board/narc_0025.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0026.NCGR b/files/graphic/field_board/narc_0026.NCGR
deleted file mode 100644
index 671b76ca..00000000
--- a/files/graphic/field_board/narc_0026.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0026.png b/files/graphic/field_board/narc_0026.png
new file mode 100644
index 00000000..ab7fe549
--- /dev/null
+++ b/files/graphic/field_board/narc_0026.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0027.NCGR b/files/graphic/field_board/narc_0027.NCGR
deleted file mode 100644
index c6cf71ea..00000000
--- a/files/graphic/field_board/narc_0027.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0027.png b/files/graphic/field_board/narc_0027.png
new file mode 100644
index 00000000..2609b7c9
--- /dev/null
+++ b/files/graphic/field_board/narc_0027.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0028.NCGR b/files/graphic/field_board/narc_0028.NCGR
deleted file mode 100644
index f041e52a..00000000
--- a/files/graphic/field_board/narc_0028.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0028.png b/files/graphic/field_board/narc_0028.png
new file mode 100644
index 00000000..628e2ed0
--- /dev/null
+++ b/files/graphic/field_board/narc_0028.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0029.NCGR b/files/graphic/field_board/narc_0029.NCGR
deleted file mode 100644
index 00cc5f47..00000000
--- a/files/graphic/field_board/narc_0029.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0029.png b/files/graphic/field_board/narc_0029.png
new file mode 100644
index 00000000..2236f368
--- /dev/null
+++ b/files/graphic/field_board/narc_0029.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0030.NCGR b/files/graphic/field_board/narc_0030.NCGR
deleted file mode 100644
index 74326921..00000000
--- a/files/graphic/field_board/narc_0030.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0030.png b/files/graphic/field_board/narc_0030.png
new file mode 100644
index 00000000..945c2c85
--- /dev/null
+++ b/files/graphic/field_board/narc_0030.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0031.NCGR b/files/graphic/field_board/narc_0031.NCGR
deleted file mode 100644
index db1b2c11..00000000
--- a/files/graphic/field_board/narc_0031.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0031.png b/files/graphic/field_board/narc_0031.png
new file mode 100644
index 00000000..d7a6570d
--- /dev/null
+++ b/files/graphic/field_board/narc_0031.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0032.NCGR b/files/graphic/field_board/narc_0032.NCGR
deleted file mode 100644
index 913e641a..00000000
--- a/files/graphic/field_board/narc_0032.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0032.png b/files/graphic/field_board/narc_0032.png
new file mode 100644
index 00000000..7b5678db
--- /dev/null
+++ b/files/graphic/field_board/narc_0032.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0033.NCGR b/files/graphic/field_board/narc_0033.NCGR
deleted file mode 100644
index 72eaa937..00000000
--- a/files/graphic/field_board/narc_0033.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0033.png b/files/graphic/field_board/narc_0033.png
new file mode 100644
index 00000000..b673ab76
--- /dev/null
+++ b/files/graphic/field_board/narc_0033.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0034.NCGR b/files/graphic/field_board/narc_0034.NCGR
deleted file mode 100644
index 523bf808..00000000
--- a/files/graphic/field_board/narc_0034.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0034.png b/files/graphic/field_board/narc_0034.png
new file mode 100644
index 00000000..7257a197
--- /dev/null
+++ b/files/graphic/field_board/narc_0034.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0035.NCGR b/files/graphic/field_board/narc_0035.NCGR
deleted file mode 100644
index 693bb05a..00000000
--- a/files/graphic/field_board/narc_0035.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0035.png b/files/graphic/field_board/narc_0035.png
new file mode 100644
index 00000000..519a6d75
--- /dev/null
+++ b/files/graphic/field_board/narc_0035.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0036.NCGR b/files/graphic/field_board/narc_0036.NCGR
deleted file mode 100644
index 6f8ca866..00000000
--- a/files/graphic/field_board/narc_0036.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0036.png b/files/graphic/field_board/narc_0036.png
new file mode 100644
index 00000000..0f6972ea
--- /dev/null
+++ b/files/graphic/field_board/narc_0036.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0037.NCGR b/files/graphic/field_board/narc_0037.NCGR
deleted file mode 100644
index a884581d..00000000
--- a/files/graphic/field_board/narc_0037.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0037.png b/files/graphic/field_board/narc_0037.png
new file mode 100644
index 00000000..2ac3406c
--- /dev/null
+++ b/files/graphic/field_board/narc_0037.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0038.NCGR b/files/graphic/field_board/narc_0038.NCGR
deleted file mode 100644
index db4c74ef..00000000
--- a/files/graphic/field_board/narc_0038.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0038.png b/files/graphic/field_board/narc_0038.png
new file mode 100644
index 00000000..9e8c4f71
--- /dev/null
+++ b/files/graphic/field_board/narc_0038.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0039.NCGR b/files/graphic/field_board/narc_0039.NCGR
deleted file mode 100644
index 1044248c..00000000
--- a/files/graphic/field_board/narc_0039.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0039.png b/files/graphic/field_board/narc_0039.png
new file mode 100644
index 00000000..03e45d87
--- /dev/null
+++ b/files/graphic/field_board/narc_0039.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0040.NCGR b/files/graphic/field_board/narc_0040.NCGR
deleted file mode 100644
index 7d9273a8..00000000
--- a/files/graphic/field_board/narc_0040.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0040.png b/files/graphic/field_board/narc_0040.png
new file mode 100644
index 00000000..6711ddee
--- /dev/null
+++ b/files/graphic/field_board/narc_0040.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0041.NCGR b/files/graphic/field_board/narc_0041.NCGR
deleted file mode 100644
index 018da8e8..00000000
--- a/files/graphic/field_board/narc_0041.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0041.png b/files/graphic/field_board/narc_0041.png
new file mode 100644
index 00000000..048703e6
--- /dev/null
+++ b/files/graphic/field_board/narc_0041.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0042.NCGR b/files/graphic/field_board/narc_0042.NCGR
deleted file mode 100644
index f11c877b..00000000
--- a/files/graphic/field_board/narc_0042.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0042.png b/files/graphic/field_board/narc_0042.png
new file mode 100644
index 00000000..4277e483
--- /dev/null
+++ b/files/graphic/field_board/narc_0042.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0043.NCGR b/files/graphic/field_board/narc_0043.NCGR
deleted file mode 100644
index 315b57d6..00000000
--- a/files/graphic/field_board/narc_0043.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0043.png b/files/graphic/field_board/narc_0043.png
new file mode 100644
index 00000000..85a9539e
--- /dev/null
+++ b/files/graphic/field_board/narc_0043.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0044.NCGR b/files/graphic/field_board/narc_0044.NCGR
deleted file mode 100644
index 0d4073ce..00000000
--- a/files/graphic/field_board/narc_0044.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0044.png b/files/graphic/field_board/narc_0044.png
new file mode 100644
index 00000000..a30999c7
--- /dev/null
+++ b/files/graphic/field_board/narc_0044.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0045.NCGR b/files/graphic/field_board/narc_0045.NCGR
deleted file mode 100644
index 1db915f8..00000000
--- a/files/graphic/field_board/narc_0045.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0045.png b/files/graphic/field_board/narc_0045.png
new file mode 100644
index 00000000..031e9c2f
--- /dev/null
+++ b/files/graphic/field_board/narc_0045.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0046.NCGR b/files/graphic/field_board/narc_0046.NCGR
deleted file mode 100644
index 5eaa1a63..00000000
--- a/files/graphic/field_board/narc_0046.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0046.png b/files/graphic/field_board/narc_0046.png
new file mode 100644
index 00000000..e119ac73
--- /dev/null
+++ b/files/graphic/field_board/narc_0046.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0047.NCGR b/files/graphic/field_board/narc_0047.NCGR
deleted file mode 100644
index 9ba02c72..00000000
--- a/files/graphic/field_board/narc_0047.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0047.png b/files/graphic/field_board/narc_0047.png
new file mode 100644
index 00000000..99554fe8
--- /dev/null
+++ b/files/graphic/field_board/narc_0047.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0048.NCGR b/files/graphic/field_board/narc_0048.NCGR
deleted file mode 100644
index 91b4e253..00000000
--- a/files/graphic/field_board/narc_0048.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0048.png b/files/graphic/field_board/narc_0048.png
new file mode 100644
index 00000000..2f75369e
--- /dev/null
+++ b/files/graphic/field_board/narc_0048.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0049.NCGR b/files/graphic/field_board/narc_0049.NCGR
deleted file mode 100644
index 42ee64bd..00000000
--- a/files/graphic/field_board/narc_0049.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0049.png b/files/graphic/field_board/narc_0049.png
new file mode 100644
index 00000000..a6ab4d6d
--- /dev/null
+++ b/files/graphic/field_board/narc_0049.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0050.NCGR b/files/graphic/field_board/narc_0050.NCGR
deleted file mode 100644
index ed820ee1..00000000
--- a/files/graphic/field_board/narc_0050.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0050.png b/files/graphic/field_board/narc_0050.png
new file mode 100644
index 00000000..90cadf55
--- /dev/null
+++ b/files/graphic/field_board/narc_0050.png
Binary files differ
diff --git a/files/graphic/field_board/narc_0051.NCGR b/files/graphic/field_board/narc_0051.NCGR
deleted file mode 100644
index 2aa39b2b..00000000
--- a/files/graphic/field_board/narc_0051.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/graphic/field_board/narc_0051.png b/files/graphic/field_board/narc_0051.png
new file mode 100644
index 00000000..348bf037
--- /dev/null
+++ b/files/graphic/field_board/narc_0051.png
Binary files differ
diff --git a/files/graphic/poketch/.gitignore b/files/graphic/poketch/.gitignore
index ff1c9ef1..a57ebae4 100644
--- a/files/graphic/poketch/.gitignore
+++ b/files/graphic/poketch/.gitignore
@@ -1 +1 @@
-narc_0010.NCGR
+narc_0010.NCGR
diff --git a/files/resource/eng/trial/trial/.gitignore b/files/resource/eng/trial/trial/.gitignore
new file mode 100644
index 00000000..41816fbf
--- /dev/null
+++ b/files/resource/eng/trial/trial/.gitignore
@@ -0,0 +1,8 @@
+narc_0000.NCLR
+narc_0001.NCGR
+narc_0002.NSCR
+narc_0003.NCLR
+narc_0004.NCGR
+narc_0005.NSCR
+narc_0006.NCLR
+narc_0007.NCGR
diff --git a/files/resource/eng/trial/trial/.knarcignore b/files/resource/eng/trial/trial/.knarcignore
index 2856080a..ebdff6e6 100644
--- a/files/resource/eng/trial/trial/.knarcignore
+++ b/files/resource/eng/trial/trial/.knarcignore
@@ -1,2 +1,3 @@
*.png
*.pal
+*.json
diff --git a/files/resource/eng/trial/trial/narc_0000.NCLR b/files/resource/eng/trial/trial/narc_0000.NCLR
deleted file mode 100644
index 5f80ebcb..00000000
--- a/files/resource/eng/trial/trial/narc_0000.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0000.pal b/files/resource/eng/trial/trial/narc_0000.pal
new file mode 100644
index 00000000..12de63af
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0000.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+255 222 0
+255 255 255
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/files/resource/eng/trial/trial/narc_0001.NCGR b/files/resource/eng/trial/trial/narc_0001.NCGR
deleted file mode 100644
index 3bd9894e..00000000
--- a/files/resource/eng/trial/trial/narc_0001.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0001.png b/files/resource/eng/trial/trial/narc_0001.png
new file mode 100644
index 00000000..001fffe4
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0001.png
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0002.NSCR b/files/resource/eng/trial/trial/narc_0002.NSCR
deleted file mode 100644
index 73e2bb51..00000000
--- a/files/resource/eng/trial/trial/narc_0002.NSCR
+++ /dev/null
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0002_map.json b/files/resource/eng/trial/trial/narc_0002_map.json
new file mode 100644
index 00000000..f29ca09e
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0002_map.json
@@ -0,0 +1,32 @@
+{ "compressionlevel":-1,
+ "height":32,
+ "infinite":false,
+ "layers":[
+ {
+ "data":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
+ "height":32,
+ "id":1,
+ "name":"Tile Layer 1",
+ "opacity":1,
+ "type":"tilelayer",
+ "visible":true,
+ "width":32,
+ "x":0,
+ "y":0
+ }],
+ "nextlayerid":2,
+ "nextobjectid":1,
+ "orientation":"orthogonal",
+ "renderorder":"right-down",
+ "tiledversion":"1.7.0",
+ "tileheight":8,
+ "tilesets":[
+ {
+ "firstgid":1,
+ "source":"narc_0002_tileset.json"
+ }],
+ "tilewidth":8,
+ "type":"map",
+ "version":"1.6",
+ "width":32
+} \ No newline at end of file
diff --git a/files/resource/eng/trial/trial/narc_0002_tileset.json b/files/resource/eng/trial/trial/narc_0002_tileset.json
new file mode 100644
index 00000000..8017cfa2
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0002_tileset.json
@@ -0,0 +1,14 @@
+{ "columns":32,
+ "image":"narc_0001.png",
+ "imageheight":192,
+ "imagewidth":256,
+ "margin":0,
+ "name":"narc_0001",
+ "spacing":0,
+ "tilecount":768,
+ "tiledversion":"1.7.0",
+ "tileheight":8,
+ "tilewidth":8,
+ "type":"tileset",
+ "version":"1.6"
+} \ No newline at end of file
diff --git a/files/resource/eng/trial/trial/narc_0003.NCLR b/files/resource/eng/trial/trial/narc_0003.NCLR
deleted file mode 100644
index fd75cd98..00000000
--- a/files/resource/eng/trial/trial/narc_0003.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0003.pal b/files/resource/eng/trial/trial/narc_0003.pal
new file mode 100644
index 00000000..c88938c8
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0003.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+8 0 0
+222 222 222
+41 41 41
+123 123 123
+172 172 172
+74 74 74
+255 255 255
+189 189 189
+98 98 98
+139 139 139
+57 49 49
+205 205 205
+156 156 156
+82 82 82
+180 180 180
diff --git a/files/resource/eng/trial/trial/narc_0004.NCGR b/files/resource/eng/trial/trial/narc_0004.NCGR
deleted file mode 100644
index ba25ad50..00000000
--- a/files/resource/eng/trial/trial/narc_0004.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0004.png b/files/resource/eng/trial/trial/narc_0004.png
new file mode 100644
index 00000000..2a7b1c9a
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0004.png
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0005.NSCR b/files/resource/eng/trial/trial/narc_0005.NSCR
deleted file mode 100644
index 73e2bb51..00000000
--- a/files/resource/eng/trial/trial/narc_0005.NSCR
+++ /dev/null
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0005_map.json b/files/resource/eng/trial/trial/narc_0005_map.json
new file mode 100644
index 00000000..f008e1a3
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0005_map.json
@@ -0,0 +1,32 @@
+{ "compressionlevel":-1,
+ "height":32,
+ "infinite":false,
+ "layers":[
+ {
+ "data":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
+ "height":32,
+ "id":1,
+ "name":"Tile Layer 1",
+ "opacity":1,
+ "type":"tilelayer",
+ "visible":true,
+ "width":32,
+ "x":0,
+ "y":0
+ }],
+ "nextlayerid":2,
+ "nextobjectid":1,
+ "orientation":"orthogonal",
+ "renderorder":"right-down",
+ "tiledversion":"1.7.0",
+ "tileheight":8,
+ "tilesets":[
+ {
+ "firstgid":1,
+ "source":"narc_0005_tileset.json"
+ }],
+ "tilewidth":8,
+ "type":"map",
+ "version":"1.6",
+ "width":32
+} \ No newline at end of file
diff --git a/files/resource/eng/trial/trial/narc_0005_tileset.json b/files/resource/eng/trial/trial/narc_0005_tileset.json
new file mode 100644
index 00000000..8c815a25
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0005_tileset.json
@@ -0,0 +1,14 @@
+{ "columns":32,
+ "image":"narc_0004.png",
+ "imageheight":192,
+ "imagewidth":256,
+ "margin":0,
+ "name":"narc_0004",
+ "spacing":0,
+ "tilecount":768,
+ "tiledversion":"1.7.0",
+ "tileheight":8,
+ "tilewidth":8,
+ "type":"tileset",
+ "version":"1.6"
+} \ No newline at end of file
diff --git a/files/resource/eng/trial/trial/narc_0006.NCLR b/files/resource/eng/trial/trial/narc_0006.NCLR
deleted file mode 100644
index b022801d..00000000
--- a/files/resource/eng/trial/trial/narc_0006.NCLR
+++ /dev/null
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0006.pal b/files/resource/eng/trial/trial/narc_0006.pal
new file mode 100644
index 00000000..4974f67b
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0006.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+255 238 180
+255 213 115
+255 189 41
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/files/resource/eng/trial/trial/narc_0007.NCGR b/files/resource/eng/trial/trial/narc_0007.NCGR
deleted file mode 100644
index 170b6168..00000000
--- a/files/resource/eng/trial/trial/narc_0007.NCGR
+++ /dev/null
Binary files differ
diff --git a/files/resource/eng/trial/trial/narc_0007.png b/files/resource/eng/trial/trial/narc_0007.png
new file mode 100644
index 00000000..0274c915
--- /dev/null
+++ b/files/resource/eng/trial/trial/narc_0007.png
Binary files differ
diff --git a/filesystem.mk b/filesystem.mk
index ce072c9c..c0cd6ac5 100644
--- a/filesystem.mk
+++ b/filesystem.mk
@@ -3266,6 +3266,70 @@ files/graphic/poketch.narc: \
files/graphic/poketch/narc_0010.NCGR.lz \
files/graphic/poketch/narc_0011.NSCR.lz
+files/resource/eng/trial/trial.narc: \
+ files/resource/eng/trial/trial/narc_0000.NCLR \
+ files/resource/eng/trial/trial/narc_0001.NCGR \
+ files/resource/eng/trial/trial/narc_0002.NSCR \
+ files/resource/eng/trial/trial/narc_0003.NCLR \
+ files/resource/eng/trial/trial/narc_0004.NCGR \
+ files/resource/eng/trial/trial/narc_0005.NSCR \
+ files/resource/eng/trial/trial/narc_0006.NCLR \
+ files/resource/eng/trial/trial/narc_0007.NCGR
+
+files/graphic/field_board.narc: \
+ files/graphic/field_board/narc_0000.NCGR \
+ files/graphic/field_board/narc_0001.NCLR \
+ files/graphic/field_board/narc_0002.NCGR \
+ files/graphic/field_board/narc_0003.NCGR \
+ files/graphic/field_board/narc_0004.NCGR \
+ files/graphic/field_board/narc_0005.NCGR \
+ files/graphic/field_board/narc_0006.NCGR \
+ files/graphic/field_board/narc_0007.NCGR \
+ files/graphic/field_board/narc_0008.NCGR \
+ files/graphic/field_board/narc_0009.NCGR \
+ files/graphic/field_board/narc_0010.NCGR \
+ files/graphic/field_board/narc_0011.NCGR \
+ files/graphic/field_board/narc_0012.NCGR \
+ files/graphic/field_board/narc_0013.NCGR \
+ files/graphic/field_board/narc_0014.NCGR \
+ files/graphic/field_board/narc_0015.NCGR \
+ files/graphic/field_board/narc_0016.NCGR \
+ files/graphic/field_board/narc_0017.NCGR \
+ files/graphic/field_board/narc_0018.NCGR \
+ files/graphic/field_board/narc_0019.NCGR \
+ files/graphic/field_board/narc_0020.NCGR \
+ files/graphic/field_board/narc_0021.NCGR \
+ files/graphic/field_board/narc_0022.NCGR \
+ files/graphic/field_board/narc_0023.NCGR \
+ files/graphic/field_board/narc_0024.NCGR \
+ files/graphic/field_board/narc_0025.NCGR \
+ files/graphic/field_board/narc_0026.NCGR \
+ files/graphic/field_board/narc_0027.NCGR \
+ files/graphic/field_board/narc_0028.NCGR \
+ files/graphic/field_board/narc_0029.NCGR \
+ files/graphic/field_board/narc_0030.NCGR \
+ files/graphic/field_board/narc_0031.NCGR \
+ files/graphic/field_board/narc_0032.NCGR \
+ files/graphic/field_board/narc_0033.NCGR \
+ files/graphic/field_board/narc_0034.NCGR \
+ files/graphic/field_board/narc_0035.NCGR \
+ files/graphic/field_board/narc_0036.NCGR \
+ files/graphic/field_board/narc_0037.NCGR \
+ files/graphic/field_board/narc_0038.NCGR \
+ files/graphic/field_board/narc_0039.NCGR \
+ files/graphic/field_board/narc_0040.NCGR \
+ files/graphic/field_board/narc_0041.NCGR \
+ files/graphic/field_board/narc_0042.NCGR \
+ files/graphic/field_board/narc_0043.NCGR \
+ files/graphic/field_board/narc_0044.NCGR \
+ files/graphic/field_board/narc_0045.NCGR \
+ files/graphic/field_board/narc_0046.NCGR \
+ files/graphic/field_board/narc_0047.NCGR \
+ files/graphic/field_board/narc_0048.NCGR \
+ files/graphic/field_board/narc_0049.NCGR \
+ files/graphic/field_board/narc_0050.NCGR \
+ files/graphic/field_board/narc_0051.NCGR
+
## 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 d36fa0c3..80f178f0 100644
--- a/graphics_rules.mk
+++ b/graphics_rules.mk
@@ -111,11 +111,16 @@ CLOBBER_SIZE_VERSION101_NCGR_FILES := files/graphic/bag_gra/narc_0002.NCGR \
files/poketool/icongra/poke_icon/narc_0034.NCGR \
files/poketool/icongra/poke_icon/narc_0035.NCGR \
files/poketool/icongra/poke_icon/narc_0036.NCGR \
- files/poketool/icongra/poke_icon/narc_0402.NCGR
+ files/poketool/icongra/poke_icon/narc_0402.NCGR \
+ files/resource/eng/trial/trial/narc_0007.NCGR
4BPP_NCLR_FILES := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \
files/demo/title/titledemo/narc_0016.NCLR \
- files/poketool/icongra/poke_icon/narc_0000.NCLR
+ files/graphic/field_board/narc_0001.NCLR \
+ files/poketool/icongra/poke_icon/narc_0000.NCLR \
+ files/resource/eng/trial/trial/narc_0000.NCLR \
+ files/resource/eng/trial/trial/narc_0003.NCLR \
+ files/resource/eng/trial/trial/narc_0006.NCLR \
8BPP_NSCR_FILES := files/demo/title/titledemo/narc_0000.NSCR
@@ -157,7 +162,60 @@ VERSION101_SOPC_NCGR_FILES := files/application/wifi_earth/wifi_earth/narc_0005.
files/demo/title/titledemo/narc_0007.NCGR \
files/demo/title/titledemo/narc_0011.NCGR \
files/demo/title/titledemo/narc_0015.NCGR \
- files/graphic/poketch/narc_0010.NCGR
+ files/graphic/field_board/narc_0000.NCGR \
+ files/graphic/field_board/narc_0002.NCGR \
+ files/graphic/field_board/narc_0003.NCGR \
+ files/graphic/field_board/narc_0004.NCGR \
+ files/graphic/field_board/narc_0005.NCGR \
+ files/graphic/field_board/narc_0006.NCGR \
+ files/graphic/field_board/narc_0007.NCGR \
+ files/graphic/field_board/narc_0008.NCGR \
+ files/graphic/field_board/narc_0009.NCGR \
+ files/graphic/field_board/narc_0010.NCGR \
+ files/graphic/field_board/narc_0011.NCGR \
+ files/graphic/field_board/narc_0012.NCGR \
+ files/graphic/field_board/narc_0013.NCGR \
+ files/graphic/field_board/narc_0014.NCGR \
+ files/graphic/field_board/narc_0015.NCGR \
+ files/graphic/field_board/narc_0016.NCGR \
+ files/graphic/field_board/narc_0017.NCGR \
+ files/graphic/field_board/narc_0018.NCGR \
+ files/graphic/field_board/narc_0019.NCGR \
+ files/graphic/field_board/narc_0020.NCGR \
+ files/graphic/field_board/narc_0021.NCGR \
+ files/graphic/field_board/narc_0022.NCGR \
+ files/graphic/field_board/narc_0023.NCGR \
+ files/graphic/field_board/narc_0024.NCGR \
+ files/graphic/field_board/narc_0025.NCGR \
+ files/graphic/field_board/narc_0026.NCGR \
+ files/graphic/field_board/narc_0027.NCGR \
+ files/graphic/field_board/narc_0028.NCGR \
+ files/graphic/field_board/narc_0029.NCGR \
+ files/graphic/field_board/narc_0030.NCGR \
+ files/graphic/field_board/narc_0031.NCGR \
+ files/graphic/field_board/narc_0032.NCGR \
+ files/graphic/field_board/narc_0033.NCGR \
+ files/graphic/field_board/narc_0034.NCGR \
+ files/graphic/field_board/narc_0035.NCGR \
+ files/graphic/field_board/narc_0036.NCGR \
+ files/graphic/field_board/narc_0037.NCGR \
+ files/graphic/field_board/narc_0038.NCGR \
+ files/graphic/field_board/narc_0039.NCGR \
+ files/graphic/field_board/narc_0040.NCGR \
+ files/graphic/field_board/narc_0041.NCGR \
+ files/graphic/field_board/narc_0042.NCGR \
+ files/graphic/field_board/narc_0043.NCGR \
+ files/graphic/field_board/narc_0044.NCGR \
+ files/graphic/field_board/narc_0045.NCGR \
+ files/graphic/field_board/narc_0046.NCGR \
+ files/graphic/field_board/narc_0047.NCGR \
+ files/graphic/field_board/narc_0048.NCGR \
+ files/graphic/field_board/narc_0049.NCGR \
+ files/graphic/field_board/narc_0050.NCGR \
+ files/graphic/field_board/narc_0051.NCGR \
+ files/graphic/poketch/narc_0010.NCGR \
+ files/resource/eng/trial/trial/narc_0001.NCGR \
+ files/resource/eng/trial/trial/narc_0004.NCGR
8BPP_COMP10_NOPAD_NCLR_PNG_FILES := files/poketool/trgra/trbgra/narc_0000.NCLR \
files/poketool/trgra/trbgra/narc_0002.NCLR \
@@ -444,6 +502,57 @@ NCGR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0005.NCGR \
files/graphic/bag_gra/narc_0002.NCGR \
files/graphic/bag_gra/narc_0006.NCGR \
files/graphic/bag_gra/narc_0034.NCGR \
+ files/graphic/field_board/narc_0000.NCGR \
+ files/graphic/field_board/narc_0002.NCGR \
+ files/graphic/field_board/narc_0003.NCGR \
+ files/graphic/field_board/narc_0004.NCGR \
+ files/graphic/field_board/narc_0005.NCGR \
+ files/graphic/field_board/narc_0006.NCGR \
+ files/graphic/field_board/narc_0007.NCGR \
+ files/graphic/field_board/narc_0008.NCGR \
+ files/graphic/field_board/narc_0009.NCGR \
+ files/graphic/field_board/narc_0010.NCGR \
+ files/graphic/field_board/narc_0011.NCGR \
+ files/graphic/field_board/narc_0012.NCGR \
+ files/graphic/field_board/narc_0013.NCGR \
+ files/graphic/field_board/narc_0014.NCGR \
+ files/graphic/field_board/narc_0015.NCGR \
+ files/graphic/field_board/narc_0016.NCGR \
+ files/graphic/field_board/narc_0017.NCGR \
+ files/graphic/field_board/narc_0018.NCGR \
+ files/graphic/field_board/narc_0019.NCGR \
+ files/graphic/field_board/narc_0020.NCGR \
+ files/graphic/field_board/narc_0021.NCGR \
+ files/graphic/field_board/narc_0022.NCGR \
+ files/graphic/field_board/narc_0023.NCGR \
+ files/graphic/field_board/narc_0024.NCGR \
+ files/graphic/field_board/narc_0025.NCGR \
+ files/graphic/field_board/narc_0026.NCGR \
+ files/graphic/field_board/narc_0027.NCGR \
+ files/graphic/field_board/narc_0028.NCGR \
+ files/graphic/field_board/narc_0029.NCGR \
+ files/graphic/field_board/narc_0030.NCGR \
+ files/graphic/field_board/narc_0031.NCGR \
+ files/graphic/field_board/narc_0032.NCGR \
+ files/graphic/field_board/narc_0033.NCGR \
+ files/graphic/field_board/narc_0034.NCGR \
+ files/graphic/field_board/narc_0035.NCGR \
+ files/graphic/field_board/narc_0036.NCGR \
+ files/graphic/field_board/narc_0037.NCGR \
+ files/graphic/field_board/narc_0038.NCGR \
+ files/graphic/field_board/narc_0039.NCGR \
+ files/graphic/field_board/narc_0040.NCGR \
+ files/graphic/field_board/narc_0041.NCGR \
+ files/graphic/field_board/narc_0042.NCGR \
+ files/graphic/field_board/narc_0043.NCGR \
+ files/graphic/field_board/narc_0044.NCGR \
+ files/graphic/field_board/narc_0045.NCGR \
+ files/graphic/field_board/narc_0046.NCGR \
+ files/graphic/field_board/narc_0047.NCGR \
+ files/graphic/field_board/narc_0048.NCGR \
+ files/graphic/field_board/narc_0049.NCGR \
+ files/graphic/field_board/narc_0050.NCGR \
+ files/graphic/field_board/narc_0051.NCGR \
files/itemtool/itemdata/item_icon/narc_0002.NCGR \
files/itemtool/itemdata/item_icon/narc_0004.NCGR \
files/itemtool/itemdata/item_icon/narc_0006.NCGR \
@@ -696,7 +805,9 @@ NCGR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0005.NCGR \
files/poketool/trgra/trfgra/narc_0190.NCGR \
files/poketool/trgra/trfgra/narc_0192.NCGR \
files/poketool/trgra/trfgra/narc_0194.NCGR \
-
+ files/resource/eng/trial/trial/narc_0001.NCGR \
+ files/resource/eng/trial/trial/narc_0004.NCGR \
+ files/resource/eng/trial/trial/narc_0007.NCGR \
NCLR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \
files/data/cell0.NCLR \
@@ -709,6 +820,7 @@ NCLR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \
files/demo/title/titledemo/narc_0016.NCLR \
files/graphic/bag_gra/narc_0003.NCLR \
files/graphic/bag_gra/narc_0034.NCLR \
+ files/graphic/field_board/narc_0001.NCLR \
files/itemtool/itemdata/item_icon/narc_0002.NCLR \
files/itemtool/itemdata/item_icon/narc_0004.NCLR \
files/itemtool/itemdata/item_icon/narc_0006.NCLR \
@@ -935,6 +1047,9 @@ NCLR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \
files/poketool/trgra/trfgra/narc_0190.NCLR \
files/poketool/trgra/trfgra/narc_0192.NCLR \
files/poketool/trgra/trfgra/narc_0194.NCLR \
+ files/resource/eng/trial/trial/narc_0000.NCLR \
+ files/resource/eng/trial/trial/narc_0003.NCLR \
+ files/resource/eng/trial/trial/narc_0006.NCLR \
NCER_CLEAN_LIST := files/poketool/icongra/poke_icon/narc_0002.NCER \
files/poketool/icongra/poke_icon/narc_0004.NCER \
@@ -943,4 +1058,6 @@ NCER_CLEAN_LIST := files/poketool/icongra/poke_icon/narc_0002.NCER \
NSCR_CLEAN_LIST := files/demo/title/titledemo/narc_0000.NSCR \
files/demo/title/titledemo/narc_0008.NSCR \
files/demo/title/titledemo/narc_0012.NSCR \
- files/demo/title/titledemo/narc_0017.NSCR
+ files/demo/title/titledemo/narc_0017.NSCR \
+ files/resource/eng/trial/trial/narc_0002.NSCR \
+ files/resource/eng/trial/trial/narc_0005.NSCR
diff --git a/include/communication_error.h b/include/communication_error.h
new file mode 100644
index 00000000..2e8ad1c7
--- /dev/null
+++ b/include/communication_error.h
@@ -0,0 +1,7 @@
+#ifndef POKEDIAMOND_COMMUNICATION_ERROR_H
+#define POKEDIAMOND_COMMUNICATION_ERROR_H
+
+void FUN_02033F50(void);
+void ShowCommunicationError(u32 heap_id, u32 error, u32 error_code);
+
+#endif
diff --git a/include/font.h b/include/font.h
index 6617f8ef..963e36bc 100644
--- a/include/font.h
+++ b/include/font.h
@@ -27,5 +27,10 @@ u32 FUN_02002E14(u32 param0, struct String *str, u32 param2);
s32 GetFontAttribute(u8 fontId, s32 attr);
void FUN_02002ED0(u32 layer, u32 baseAddr, u32 heap_id);
void FUN_02002EEC(u32 layer, u32 baseAddr, u32 heap_id);
+s32 FUN_02002F08(u32 param0, struct String *str, u32 param2);
+u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3);
+u32 FUN_02002F58(const u16 *str);
+u32 FUN_02002F90(struct String *str);
+s32 FUN_02002F9C(u32 param0, struct String *str);
#endif // POKEDIAMOND_FONT_H
diff --git a/include/game_init.h b/include/game_init.h
index bf6569c4..0d2c9332 100644
--- a/include/game_init.h
+++ b/include/game_init.h
@@ -3,6 +3,18 @@
#include "main.h"
+typedef volatile struct
+{
+ u8 sys_and_irq_stack[0x3F80];
+ u8 svc_stack[0x40];
+ u8 reserved[0x38];
+ u32 intr_check;
+ void * intr_vector;
+}
+OS_DTCM;
+
+#define DTCM (*(OS_DTCM *)HW_DTCM)
+
void FUN_02015EA0(void);
void FUN_02015ED4(void);
void FUN_02015EF4(void);
diff --git a/include/global.h b/include/global.h
index 1853dbc3..8353ed2c 100644
--- a/include/global.h
+++ b/include/global.h
@@ -5,7 +5,7 @@
#include "MWC_string.h"
#include "function_target.h"
-#include "nitro.h"
+#include "nitro/types.h"
#include "constants/global.h"
#include "error_handling.h"
diff --git a/include/heap.h b/include/heap.h
index 36c747a7..57cd88e8 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -2,6 +2,7 @@
#define POKEDIAMOND_HEAP_H
#include "global.h"
+#include "nitro/OS_arena_shared.h"
#include "NNS_FND_expheap.h"
#include "NNS_FND_allocator.h"
diff --git a/include/map_header.h b/include/map_header.h
index 20677025..60c8baaf 100644
--- a/include/map_header.h
+++ b/include/map_header.h
@@ -17,10 +17,10 @@ struct MapHeader
u8 weather_type;
u8 camera_type;
u8 unk16;
- u8 unk17_0:4;
+ u8 battle_bg:4;
u8 is_bike_allowed:1;
- u8 unk17_5:1;
- u8 unk17_6:1;
+ u8 is_running_allowed:1; // unused
+ u8 is_escape_rope_allowed:1;
u8 is_fly_allowed:1;
};
@@ -38,24 +38,24 @@ u16 MapHeader_GetEventsBank(u32 mapno);
u16 MapHeader_GetMapSec(u32 mapno);
u8 MapHeader_GetWeatherType(u32 mapno);
u8 MapHeader_GetCameraType(u32 mapno);
-u8 MapHeader_GetField17_0(u32 mapno);
-u8 MapHeader_GetField17_6(u32 mapno);
+u8 MapHeader_GetBattleBg(u32 mapno);
+u8 MapHeader_IsEscapeRopeAllowed(u32 mapno);
u8 MapHeader_IsFlyAllowed(u32 mapno);
u8 MapHeader_IsBikeAllowed(u32 mapno);
u8 MapHeader_GetField16(u32 mapno);
BOOL FUN_020348E4(u32 mapno);
-BOOL MapHeader_MapIsOnOverworldMatrix(u32 mapno);
+BOOL MapHeader_MapIsOnMainMatrix(u32 mapno);
BOOL FUN_0203491C(u32 mapno);
BOOL FUN_02034930(u32 mapno);
BOOL FUN_02034944(u32 mapno);
BOOL FUN_02034964(u32 mapno);
BOOL FUN_02034984(u32 mapno);
-BOOL FUN_02034998(u32 mapno);
-BOOL FUN_020349AC(u32 mapno);
-BOOL FUN_020349B8(u32 mapno);
-BOOL FUN_020349CC(u32 mapno);
-BOOL FUN_020349D8(u32 mapno);
-BOOL FUN_020349E4(u16 a0);
-u16 FUN_02034A04(u16 a0);
+BOOL MapHeader_MapIsUnionRoom(u32 mapno);
+BOOL MapHeader_MapIsMtCoronetFeebasRoom(u32 mapno);
+BOOL MapHeader_MapIsTrophyGarden(u32 mapno);
+BOOL MapHeader_MapIsAmitySquare(u32 mapno);
+BOOL MapHeader_MapIsSpearPillar(u32 mapno);
+BOOL MapHeader_MapIsPokemonCenterSecondFloor(u32 mapno);
+u16 MapHeader_GetMapEvolutionMethod(u32 mapno);
#endif //POKEDIAMOND_MAP_HEADER_H
diff --git a/include/map_matrix.h b/include/map_matrix.h
new file mode 100644
index 00000000..87e732dc
--- /dev/null
+++ b/include/map_matrix.h
@@ -0,0 +1,54 @@
+#ifndef POKEDIAMOND_MAP_MATRIX_H
+#define POKEDIAMOND_MAP_MATRIX_H
+
+#define MAP_MATRIX_MAX_WIDTH 30
+#define MAP_MATRIX_MAX_HEIGHT 30
+#define MAP_MATRIX_MAX_SIZE (MAP_MATRIX_MAX_WIDTH * MAP_MATRIX_MAX_HEIGHT)
+
+#define MAP_MATRIX_MAX_NAME_LENGTH 16
+
+struct MapData
+{
+ u16 data[MAP_MATRIX_MAX_SIZE];
+};
+
+struct MapMatrixData
+{
+ u8 height;
+ u8 width;
+ u16 headers[MAP_MATRIX_MAX_SIZE];
+ u8 altitudes[MAP_MATRIX_MAX_SIZE];
+ struct MapData maps;
+ u8 name[MAP_MATRIX_MAX_NAME_LENGTH];
+};
+
+struct MapMatrix
+{
+ u8 width;
+ u8 height;
+ u8 matrix_id;
+ struct MapMatrixData data;
+};
+
+struct MapMatrix *MapMatrix_New(void);
+void MapMatrix_Load(u16 map_id, struct MapMatrix *map_matrix);
+void MapMatrix_Free(struct MapMatrix *map_matrix);
+u16 MapMatrix_GetMapData(s32 map_id, struct MapMatrix *map_matrix);
+u8 MapMatrix_GetWidth(struct MapMatrix *map_matrix);
+u8 MapMatrix_GetHeight(struct MapMatrix *map_matrix);
+u16 MapMatrix_GetMapHeader(struct MapMatrix *map_matrix, s32 x, s32 y);
+u16 MapMatrix_GetMapHeaderFromID(struct MapMatrix *map_matrix, s32 map_id);
+u8 MapMatrix_GetMatrixID(struct MapMatrix *map_matrix);
+u32 MapMatrix_GetMapAltitude(
+ struct MapMatrix *map_matrix, u8 param1, s16 x, s16 y, int matrix_width);
+
+struct MapData *MapMatrix_MapData_New(u32 heap_id);
+void MapMatrix_MapData_Free(struct MapData *map_data);
+u16 MapMatrix_MapData_GetData(struct MapData *map_data, s32 x, s32 y);
+
+u16 GetMapHeader(u32 file_id, u16 x, u16 y);
+u16 GetMapData(s32 map_id, struct MapMatrix *map_matrix);
+void FUN_02034678(struct MapMatrix *map_matrix);
+void FUN_020346CC(struct MapMatrix *map_matrix);
+
+#endif // POKEDIAMOND_MAP_MATRIX_H
diff --git a/arm9/lib/include/FX_types.h b/include/nitro/FX_types.h
index b5b56348..3c48b6c6 100644
--- a/arm9/lib/include/FX_types.h
+++ b/include/nitro/FX_types.h
@@ -1,6 +1,9 @@
#ifndef GUARD_FX_TYPES_H
#define GUARD_FX_TYPES_H
+#include "nitro/types.h"
+
+
typedef s16 fx16;
typedef s32 fx32;
typedef s64 fx64;
diff --git a/arm9/lib/include/NNS_g3d.h b/include/nitro/NNS_g3d.h
index f9a3a1b8..f9a3a1b8 100644
--- a/arm9/lib/include/NNS_g3d.h
+++ b/include/nitro/NNS_g3d.h
diff --git a/include/nitro/OS_alarm_shared.h b/include/nitro/OS_alarm_shared.h
index fe549351..1a24f139 100644
--- a/include/nitro/OS_alarm_shared.h
+++ b/include/nitro/OS_alarm_shared.h
@@ -15,6 +15,7 @@
#include "nitro/types.h"
#include "nitro/OS_tick_shared.h"
+#include "nitro/OS_thread_shared.h"
typedef void (*OSAlarmHandler) (void *);
diff --git a/include/nitro/OS_thread_shared.h b/include/nitro/OS_thread_shared.h
index a0cce54d..0c0e7f9a 100644
--- a/include/nitro/OS_thread_shared.h
+++ b/include/nitro/OS_thread_shared.h
@@ -15,6 +15,9 @@
#include "nitro/types.h"
+/* UGLY HACK: include proc specific header for OSContext */
+#include "OS_context.h"
+
typedef struct OSiAlarm OSAlarm;
typedef struct _OSThread OSThread;
diff --git a/include/nitro/SND_alarm_shared.h b/include/nitro/SND_alarm_shared.h
new file mode 100644
index 00000000..a1e8ed9d
--- /dev/null
+++ b/include/nitro/SND_alarm_shared.h
@@ -0,0 +1,30 @@
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
+
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include SND_alarm.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_SND_ALARM_SHARED_H
+#define POKEDIAMOND_SND_ALARM_SHARED_H
+
+#include "nitro/OS_tick_shared.h"
+#include "nitro/OS_alarm_shared.h"
+
+struct SNDAlarm {
+ u8 enable; // 0x00
+ u8 id; // 0x01
+ u16 unk_2; // 0x02
+ OSTick tick; // 0x04
+ OSTick period; // 0x0C
+ OSAlarm alarm; // 0x14
+}; // size = 0x40
+
+#define SND_ALARM_COUNT 8
+
+#endif //POKEDIAMOND_SND_ALARM_SHARED_H
diff --git a/arm9/lib/include/SND_main.h b/include/nitro/SND_main_shared.h
index e35f1ee1..d77273ed 100644
--- a/arm9/lib/include/SND_main.h
+++ b/include/nitro/SND_main_shared.h
@@ -1,25 +1,17 @@
-#ifndef GUARD_SND_MAIN_H
-#define GUARD_SND_MAIN_H
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
-#include "global.h"
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include SND_main.h from the specific proc's lib
+ */
-void SNDi_UnlockMutex(void);
-void SNDi_LockMutex(void);
-void SND_Init(void);
-
-struct SNDBinaryFileHeader {
- s8 signature[4]; // 0x0
- u16 byteOrder; // 0x4
- u16 version; // 0x6
- u32 fileSize; // 0x8
- u16 headerSize; // 0xC
- u16 dataBlocks; // 0xE
-}; // size = 0x10
-
-typedef struct SNDBinaryBlockHeader {
- u32 type; // 0x0
- u32 size; // 0x4
-} SNDBinaryBlockHeader; // size = 0x8
+#ifndef POKEDIAMOND_SND_MAIN_SHARED_H
+#define POKEDIAMOND_SND_MAIN_SHARED_H
struct SNDWaveParam {
u8 format; // 0x0
@@ -103,6 +95,8 @@ struct SNDExChannel {
#define SND_TRACK_COUNT_PER_PLAYER 16
#define SND_INVALID_TRACK_INDEX 0xFF
+struct SNDBankData;
+
struct SNDPlayer {
struct {
u8 active : 1;
@@ -129,8 +123,6 @@ struct SNDPlayer {
#define SND_TRACK_MAX_CALL 3
-struct SNDBankData;
-
struct SNDTrack {
struct {
u8 active : 1;
@@ -179,7 +171,6 @@ struct SNDTrack {
struct SNDExChannel *channelLLHead; // 0x3C
}; // size = 0x40
-
-
-
-#endif // GUARD_SND_MAIN_H
+
+ #endif //POKEDIAMOND_SND_MAIN_SHARED_H
+ \ No newline at end of file
diff --git a/include/nitro/SND_work_shared.h b/include/nitro/SND_work_shared.h
new file mode 100644
index 00000000..0de3981e
--- /dev/null
+++ b/include/nitro/SND_work_shared.h
@@ -0,0 +1,46 @@
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
+
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include SND_work.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_SND_WORK_SHARED_H
+#define POKEDIAMOND_SND_WORK_SHARED_H
+
+#include "nitro/SND_alarm_shared.h"
+#include "nitro/SND_main_shared.h"
+
+#define SND_PLAYER_COUNT 16
+#define SND_CHANNEL_COUNT 16
+#define SND_TRACK_COUNT 32
+
+struct SNDWork {
+ struct SNDExChannel channels[SND_CHANNEL_COUNT]; // 0x00
+ struct SNDPlayer players[SND_PLAYER_COUNT]; // 0x540
+ struct SNDTrack tracks[SND_TRACK_COUNT]; // 0x780
+ struct SNDAlarm alarms[SND_ALARM_COUNT]; // 0xF80
+}; // size = 0x1180
+
+struct SNDSharedWork {
+ u32 finishedCommandTag; // 0x0
+ u32 playerStatus; // 0x4
+ u16 channelStatus; // 0x8
+ u16 captureStatus; // 0xA
+ u8 unk_C[0x14]; // 0xC
+ struct {
+ s16 localVars[16]; // local 0x0
+ u32 tickCounter; // local 0x20
+ } players[SND_PLAYER_COUNT]; // 0x20
+ s16 globalVars[16]; // 0x260
+}; // size = 0x280
+
+extern struct SNDWork SNDi_Work;
+extern struct SNDSharedWork *SNDi_SharedWork;
+
+ #endif //POKEDIAMOND_SND_WORK_SHARED_H
diff --git a/include/palette.h b/include/palette.h
new file mode 100644
index 00000000..7f14ddb4
--- /dev/null
+++ b/include/palette.h
@@ -0,0 +1,141 @@
+#ifndef POKEDIAMOND_PALETTE_H
+#define POKEDIAMOND_PALETTE_H
+
+#include "global.h"
+#include "filesystem.h"
+
+struct PlttData
+{
+ u16 r : 5; // red
+ u16 g : 5; // green
+ u16 b : 5; // blue
+ u16 unused_15 : 1;
+};
+
+struct PaletteFadeControl
+{
+ u16 selectedPalettes;
+
+ u16 delay : 6;
+ u16 y : 5;
+ u16 targetY : 5;
+
+ u16 blendColor : 15;
+ u16 yDec : 1;
+
+ u16 deltaY : 4;
+ u16 delayCounter : 6;
+ u16 unk06_a : 6;
+};
+
+struct Palette
+{
+ u16 *unfadedBuf;
+ u16 *fadedBuf;
+ u32 bufSize;
+ struct PaletteFadeControl fadeCtrl;
+};
+
+struct PaletteData
+{
+ struct Palette pltt[14];
+
+ u16 unk118_0 : 2;
+ u16 activeFadePalettes : 14;
+ u16 unk11a_0 : 14;
+ u16 unk11a_e : 1;
+ u16 unk11a_f : 1;
+ u8 unk11c;
+ u8 unk11d;
+ u16 unk11e;
+};
+
+struct PaletteData *FUN_02002FD0(u32 heap_id);
+void FUN_02002FEC(struct PaletteData *ptr);
+void PaletteData_SetBuffers(
+ struct PaletteData *paletteData, u32 index, void *unfadedBuf, void *fadedBuf, u32 size);
+void PaletteData_AllocBuffers(struct PaletteData *paletteData, u32 index, u32 size, u32 heap_id);
+void PaletteData_FreeBuffers(struct PaletteData *paletteData, u32 index);
+void PaletteData_LoadPalette(
+ struct PaletteData *paletteData, const void *src, u32 index, u32 offset, u16 size);
+void PaletteData_LoadFromNarc(struct PaletteData *paletteData,
+ NarcId narcId,
+ s32 memberId,
+ u32 heap_id,
+ u32 index,
+ u32 size,
+ u16 offset,
+ u16 param7);
+void PaletteData_LoadNarc(struct PaletteData *paletteData,
+ NarcId narcId,
+ s32 memberId,
+ u32 heap_id,
+ u32 index,
+ u32 size,
+ u16 offset);
+void FUN_02003108(struct PaletteData *paletteData, u32 index, u16 offset, u32 size);
+void CopyPaletteFromNarc(
+ NarcId narcId, s32 memberId, u32 heap_id, u32 size, u16 offset, void *dest);
+void PaletteData_CopyPalette(struct PaletteData *paletteData,
+ u32 srcIdx,
+ u16 srcOffset,
+ u32 destIdx,
+ u16 destOffset,
+ u16 size);
+u16 *PaletteData_GetUnfadedBuf(struct PaletteData *paletteData, u32 index);
+u16 *PaletteData_GetFadedBuf(struct PaletteData *paletteData, u32 index);
+u32 FUN_02003210(struct PaletteData *paletteData,
+ u16 param1,
+ u16 param2,
+ s16 delay,
+ u8 startY,
+ u8 targetY,
+ u16 color);
+u8 IsPaletteSelected(u16 selectedPalettes, u16 index);
+void FUN_02003328(struct PaletteData *param0, u16 param1);
+void FUN_02003368(s32 param0, struct Palette *param1, u16 *param2);
+void FUN_020033A4(struct PaletteFadeControl *paletteFade,
+ u16 selectedPalettes,
+ s16 delay,
+ u8 startY,
+ u8 targetY,
+ u16 color);
+void FUN_02003464(u32 param0, struct PaletteData *param1);
+void FUN_02003500(struct PaletteData *param0);
+void FUN_02003520(struct PaletteData *param0);
+void FUN_02003540(struct PaletteData *paletteData, u8 index, u32 param2);
+void FUN_0200359C(struct PaletteData *paletteData, u32 index, u32 param2);
+void FUN_020035F8(u16 *src, u16 *dest, struct PaletteFadeControl *fadeCtrl, u32 numEntries);
+void FUN_02003684(struct PaletteData *paletteData, u8 index, struct PaletteFadeControl *fadeCtrl);
+void FUN_0200372C(struct PaletteData *paletteData);
+u16 FUN_020038E4(struct PaletteData *paletteData);
+void FUN_020038F0(struct PaletteData *paletteData, u32 param1);
+void PaletteData_FillPalette(struct PaletteData *paletteData,
+ u32 index,
+ u32 selection,
+ u16 value,
+ u16 startOffset,
+ u16 endOffset);
+void BlendPalette(u16 *src, u16 *dest, u16 numEntries, u8 coeff, u16 blendColor);
+void BlendPaletteUnfaded(struct PaletteData *paletteData,
+ u32 index,
+ u16 offset,
+ u16 numEntries,
+ u8 coeff,
+ u16 blendColor);
+void BlendPalettes(u16 *src, u16 *dest, u16 selectedPalettes, u8 coeff, u16 blendColor);
+void BlendPalettesUnfaded(
+ struct PaletteData *paletteData, u32 index, u16 selectedPalettes, u8 coeff, u16 blendColor);
+void TintPalette_CustomTone(u16 *palette, s32 count, s32 rTone, s32 gTone, s32 bTone);
+void FUN_02003B40(struct PaletteData *paletteData,
+ NarcId narcId,
+ s32 memberId,
+ u32 heap_id,
+ u32 index,
+ u32 size,
+ u16 offset,
+ s32 rTone,
+ s32 gTone,
+ s32 bTone);
+
+#endif // POKEDIAMOND_PALETTE_H
diff --git a/include/scrcmd.h b/include/scrcmd.h
index 826b74d3..5e28a4d0 100644
--- a/include/scrcmd.h
+++ b/include/scrcmd.h
@@ -106,6 +106,8 @@ BOOL ScrCmd_Unk0048(struct ScriptContext *ctx);
BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx);
BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx);
BOOL ScrCmd_Unk005E(struct ScriptContext *ctx);
+BOOL ScrCmd_Unk02A1(struct ScriptContext *ctx);
+BOOL ScrCmd_WaitForMovement(struct ScriptContext *ctx);
// scrcmd_mart.c
BOOL ScrCmd_NormalMart(struct ScriptContext * ctx);
diff --git a/include/script.h b/include/script.h
index 75b65f90..f6eec142 100644
--- a/include/script.h
+++ b/include/script.h
@@ -33,7 +33,8 @@ struct UnkSavStruct80
struct UnkStruct_0204639C *unk10;
u8 padding2[0x8];
u32 *mapId; //0x1C
- u8 padding3[0x18];
+ u8 padding3[0x14];
+ u32 unk34;
u32 unk38;
u8 padding4[0x24];
u32 unk60;
diff --git a/include/sound.h b/include/sound.h
index 781c6b5b..11053cd6 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -62,8 +62,9 @@ BOOL GF_Snd_LoadSeq(int seqNo);
BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag);
BOOL GF_Snd_LoadWaveArc(int waveArcNo);
BOOL GF_Snd_LoadBank(int bankNo);
-u32 * FUN_02003FF4(int playerNo);
-u32 FUN_02004018(u32 a0);
+u32 * GetSoundPlayer(int playerNo);
+int FUN_02004018(u32 a0);
void DoSoundUpdateFrame(void);
+void FUN_02003CE8(int);
#endif //POKEDIAMOND_SOUND_H
diff --git a/include/text.h b/include/text.h
index ad0698a0..6ecf1b08 100644
--- a/include/text.h
+++ b/include/text.h
@@ -76,7 +76,7 @@ struct FontInfo
};
void SetFontsPointer(const struct FontInfo *fonts);
-u8 FUN_0201BCC8(void (*func)(u32, struct TextPrinter *), struct TextPrinter *printer, u32 param2);
+u8 FUN_0201BCC8(void (*func)(u32, void *), void *printer, u32 param2);
void FUN_0201BCFC(u32 param0);
BOOL FUN_0201BD44(u32 param0);
void FUN_0201BD5C(void);
diff --git a/include/unk_02002F08.h b/include/unk_02002F08.h
deleted file mode 100644
index 773d9246..00000000
--- a/include/unk_02002F08.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef POKEDIAMOND_UNK_02002F08_H
-#define POKEDIAMOND_UNK_02002F08_H
-
-#include "global.h"
-#include "gf_gfx_loader.h"
-#include "string16.h"
-
-
-struct UnkStruct_02002F08
-{
- struct
- {
- u16 *unk00;
- u16 *unk04;
- u32 unk08;
- u32 unk0c;
- u32 unk10;
- } unk000[14];
-
- u32 unk118;
- u32 unk11c;
-};
-
-s32 FUN_02002F08(u32 param0, struct String *str, u32 param2);
-u32 FUN_02002F40(u32 param0, struct String *str, u32 param2, u32 param3);
-u32 FUN_02002F58(const u16 *str);
-u32 FUN_02002F90(struct String *str);
-s32 FUN_02002F9C(u32 param0, struct String *str);
-struct UnkStruct_02002F08 *FUN_02002FD0(u32 heap_id);
-void FUN_02002FEC(struct UnkStruct_02002F08 *ptr);
-void FUN_02002FF4(struct UnkStruct_02002F08 *param0, u32 param1, void *param2, void *param3, u32 size);
-void FUN_02003008(struct UnkStruct_02002F08 *param0, u32 param1, u32 size, u32 heap_id);
-void FUN_02003038(struct UnkStruct_02002F08 *param0, u32 param1);
-void FUN_02003054(struct UnkStruct_02002F08 *param0, const void *param1, u32 param2, u32 offset, u16 size);
-void FUN_02003084(struct UnkStruct_02002F08 *param0, NarcId narcId, s32 memberId, u32 heap_id, u32 param4, u32 size, u16 offset, u16 param7);
-void FUN_020030E8(struct UnkStruct_02002F08 *param0, NarcId narcId, s32 memberId, u32 heap_id, u32 param4, u32 size, u16 offset);
-
-#endif //POKEDIAMOND_UNK_02002F08_H
diff --git a/include/unk_020040F4.h b/include/unk_020040F4.h
new file mode 100644
index 00000000..413e853f
--- /dev/null
+++ b/include/unk_020040F4.h
@@ -0,0 +1,116 @@
+#ifndef POKEDIAMOND_UNK_020040F4_H
+#define POKEDIAMOND_UNK_020040F4_H
+
+#include "global.h"
+
+struct WaveArcInfo
+{
+ u32 unk00 : 24;
+};
+
+struct UnkStruct_020040F4_1
+{
+ void *unk00;
+ u32 unk04;
+ void *unk08;
+ u32 unk0c;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ s32 unk1c;
+ u32 unk20;
+ s32 unk24;
+};
+
+struct UnkStruct_020040F4_2
+{
+ u32 unk00;
+ u32 unk04;
+ u32 unk08;
+ u8 unk0c[9];
+};
+
+void FUN_020040F4(u8 param0);
+u8 FUN_02004104();
+void FUN_02004110(u16 param0);
+u16 FUN_02004124();
+void FUN_02004130(u16 param0);
+u16 FUN_02004140();
+void FUN_0200414C(u16 param0);
+void FUN_0200415C(u8 param0);
+BOOL FUN_02004180(s32 param0);
+BOOL FUN_0200433C(u8 param0, int param1, u32 param2);
+void FUN_020044A8(s32 param0);
+void FUN_020044D4(int seqNo, u32 param1);
+void FUN_02004568(int seqNo, u16 param1);
+void FUN_020045C4(int seqNo, u32 param1);
+void FUN_02004648(int param0, u32 param1);
+void FUN_02004680(int param0, u32 param1);
+void FUN_020046A0(int param0, u32 param1);
+void FUN_020046C4(int param0, u32 param1);
+void FUN_020046E8(s32 param0);
+void FUN_02004704(s32 param0, int param1, u32 param2);
+void FUN_02004724(int param0);
+void FUN_02004738();
+int FUN_02004748(s32 param0);
+void FUN_020047C8(u8 param0, u8 param1);
+void FUN_02004810();
+void GF_SndPlayerMoveVolume(int playerNo, s32 param1, s32 param2);
+void GF_SndPlayerSetInitialVolume(int playerNo, s32 param1);
+void FUN_02004858(u32 param0, int playerNo);
+void FUN_0200488C(u16 param0, u16 param1);
+void GF_SndArcPlayerStartSeqEx(int playerNo, u32 param1, u32 param2);
+u16 GF_SndPlayerCountPlayingSeqByPlayerNo(int playerNo);
+u8 FUN_020048D0(u16 param0);
+u32 GF_SndPlayerGetSeqNo(u32 *param0);
+u32 FUN_020048F4(u16 param0);
+u16 FUN_02004900(u32 param0);
+u32 GF_MIC_StartAutoSampling(u32 param0);
+u32 GF_MIC_StopAutoSampling(u32 param0);
+u32 GF_MIC_DoSamplingAsync(u32 param0, u32 param1, u32 param2, u32 param3);
+void *FUN_02004930(u32 param0);
+BOOL FUN_02004984(u32 param0);
+void FUN_02004A04(u32 param0);
+u32 FUN_02004A6C(struct UnkStruct_020040F4_1 *param0, u32 param1);
+void FUN_02004AAC(u32 param0);
+BOOL FUN_02004ABC(u32 param0);
+void FUN_02004ACC(u32 param0, u32 param1);
+void FUN_02004AE4(u32 param0, u32 param1);
+void FUN_02004AF8(u32 param0, s32 param1);
+u32 FUN_02004B30(u32 param0, s32 param1, s32 param2, u32 param3, u32 param4);
+void FUN_02004C1C(u8 *param0, u32 param1);
+void FUN_02004C3C(u32 param0);
+BOOL GF_SndCaptureIsActive();
+u32 GF_SndCaptureStartReverb(u32 param0);
+void GF_SndCaptureStopReverb(u32 param0);
+void GF_SndCaptureSetReverbVolume(u32 param0, u32 param1);
+void FUN_02004CB4();
+void GF_SndCaptureStopEffect();
+void FUN_02004D04(s32 param0);
+void GF_SndPlayerSetTrackPitch(int playerNo, u32 param1, s32 param2);
+void FUN_02004D34(u16 param0, u32 param1, s32 param2);
+void GF_SndPlayerSetTrackPan(int playerNo, u32 param1, s32 param2);
+void GF_SndSetMonoFlag(u32 param0);
+void FUN_02004D74(s32 param0);
+void FUN_02004D84(u32 param0);
+u16 FUN_02004D94();
+u8 *FUN_02004DB4();
+void FUN_02004DBC(u8 param0);
+u32 FUN_02004DCC(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5);
+u32 FUN_02004E08(
+ u32 param0, u16 param1, u32 param2, u32 param3, u32 param35, u8 param4, u32 param5);
+void FUN_02004E44(u32 param0, u16 param1, u32 param2, u32 param3, u8 param4, u32 param5);
+u32 FUN_02004E80(u32 param0);
+u32 FUN_02004E8C(u32 *param0);
+u32 FUN_02004E98(s32 param0);
+u32 FUN_02004ED0(s32 param0);
+u32 FUN_02004F28(u32 param0, struct UnkStruct_020040F4_2 *param1, s32 param2);
+u32 GF_SndPlayerGetTick(int playerNo);
+void FUN_02004F70(struct UnkStruct_020040F4_2 *param0, u8 *param1, int param2, s32 param3);
+void FUN_02005068(s16 *param0, s16 *param1, u32 param2, u32 param3, void *param4);
+void FUN_02005160(u32 param0);
+void FUN_0200516C(u32 param0);
+void FUN_020051AC();
+void GF_SndPlayerSetPlayerVolume(u32 param0, u8 param1);
+
+#endif // POKEDIAMOND_UNK_020040F4_H
diff --git a/include/unk_020051F4.h b/include/unk_020051F4.h
new file mode 100644
index 00000000..05be8db7
--- /dev/null
+++ b/include/unk_020051F4.h
@@ -0,0 +1,45 @@
+#ifndef POKEDIAMOND_UNK_020051F4_H
+#define POKEDIAMOND_UNK_020051F4_H
+
+#include "global.h"
+
+
+u32 FUN_020051F4(u16 param0);
+u32 FUN_0200521C(u16 param0);
+void FUN_0200526C(u16 param0, int playerNo);
+u32 FUN_02005288(u16 param0, u32 param1, int playerNo);
+u32 FUN_020052B8(u16 param0, u32 param1, int playerNo);
+u32 FUN_02005308(u32 param0, u16 param1);
+void FUN_02005350(u16 param0, u32 param1);
+void FUN_02005374();
+void FUN_0200538C(s32 param0, u16 param1, u32 param2);
+void FUN_020053CC(s32 param0, s32 param1);
+u16 FUN_02005404();
+u16 FUN_02005410(u16 param0);
+void FUN_0200541C();
+void FUN_02005454();
+u32 FUN_020054A8(u16 param0, u32 param1);
+u32 PlaySE(u16 param0);
+void FUN_020054F0(u32 param0, u32 param1);
+void FUN_020054F8(s32 param0, u32 param1);
+u16 FUN_02005508(u16 param0);
+BOOL FUN_02005514();
+void FUN_02005530(u16 param0, u32 param1, u32 param2);
+void FUN_0200554C(u32 param0);
+u32 FUN_02005578(u16 species);
+void FUN_02005614(u32 param0);
+BOOL FUN_02005670();
+u32 FUN_020056AC(u32 param0, u16 param1, s32 param2, s32 param3, u32 param4);
+void FUN_02005AC8(u32 param0, int playerNo, s32 param2);
+void FUN_02005AE0(u32 param0, u32 param1);
+void FUN_02005B2C(u32 param0, s32 *param1);
+void FUN_02005BA0();
+u32 FUN_02005BC8(u16 param0, s32 param1);
+void FUN_02005BF8(u32 param0, s32 param1, s32 param2, s32 param3, u32 param4);
+u32 PlaySound(u16 param0);
+BOOL FUN_02005C74();
+void FUN_02005CA0(u32 param0);
+BOOL FUN_02005CBC();
+void FUN_02005CEC(u16 param0);
+
+#endif //POKEDIAMOND_UNK_020051F4_H
diff --git a/include/unk_020061E8.h b/include/unk_020061E8.h
new file mode 100644
index 00000000..121900c3
--- /dev/null
+++ b/include/unk_020061E8.h
@@ -0,0 +1,10 @@
+#ifndef POKEDIAMOND_UNK_020061E8_H
+#define POKEDIAMOND_UNK_020061E8_H
+
+#include "nitro/types.h"
+#include "text.h"
+
+BOOL FUN_020061E8(void (*r0)(u32, void *), u32 r1, u32 r2, u32 r3);
+void FUN_0200621C(s32 r0);
+
+#endif // POKEDIAMOND_UNK_020061E8_H
diff --git a/include/unk_0200CA44.h b/include/unk_0200CA44.h
index 6dd208c3..065f3fc0 100644
--- a/include/unk_0200CA44.h
+++ b/include/unk_0200CA44.h
@@ -3,10 +3,10 @@
#include "text.h"
-BOOL FUN_0200CA44(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2);
-BOOL FUN_0200CA60(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2);
-BOOL FUN_0200CA7C(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2);
-BOOL FUN_0200CA98(void (*r0)(u32, struct TextPrinter *), struct TextPrinter * r1, u32 r2);
+BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, u32 r2);
+BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, u32 r2);
+BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, u32 r2);
+BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, u32 r2);
void FUN_0200CAB4(s32 unk1);
#endif //POKEDIAMOND_UNK_0200CA44_H
diff --git a/include/unk_0201C6B4.h b/include/unk_0201C6B4.h
new file mode 100644
index 00000000..0a501954
--- /dev/null
+++ b/include/unk_0201C6B4.h
@@ -0,0 +1,10 @@
+#ifndef POKEDIAMOND_UNK_0201C6B4_H
+#define POKEDIAMOND_UNK_0201C6B4_H
+
+s32 FUN_0201C6B4(s8 * r0);
+s8 * FUN_0201C6C8(s8 * r0, s8 * r1, s8 r2);
+s32 FUN_0201C70C(s8 * r4);
+void FUN_0201C750(s8 * r5, s8 * r4);
+BOOL FUN_0201C78C(u32 r0);
+
+#endif // POKEDIAMOND_UNK_0201C6B4_H
diff --git a/include/unk_020222E8.h b/include/unk_020222E8.h
new file mode 100644
index 00000000..ac6e1932
--- /dev/null
+++ b/include/unk_020222E8.h
@@ -0,0 +1,11 @@
+#ifndef POKEDIAMOND_UNK_020222E8_H
+#define POKEDIAMOND_UNK_020222E8_H
+
+void * FUN_020222E8();
+void * FUN_020222F0();
+void * FUN_020222F8();
+void * FUN_02022300();
+void * FUN_02022308();
+void * FUN_02022310();
+
+#endif // POKEDIAMOND_UNK_020222E8_H
diff --git a/include/unk_02022450.h b/include/unk_02022450.h
new file mode 100644
index 00000000..1224107a
--- /dev/null
+++ b/include/unk_02022450.h
@@ -0,0 +1,18 @@
+#ifndef POKEDIAMOND_UNK_02022450_H
+#define POKEDIAMOND_UNK_02022450_H
+
+struct CARD_Header {
+ u8 title[12];
+ u32 tid;
+ u16 maker_code;
+ u8 filler[44];
+ u32 header_40;
+ u32 header_44;
+ u32 header_48;
+ u32 header_4C;
+};
+
+void FUN_02022450();
+void Reset_To_File(const char* path);
+
+#endif //POKEDIAMOND_UNK_02022450_H
diff --git a/include/unk_0202A1E0.h b/include/unk_0202A1E0.h
new file mode 100644
index 00000000..8c1e5da9
--- /dev/null
+++ b/include/unk_0202A1E0.h
@@ -0,0 +1,209 @@
+#ifndef POKEDIAMOND_UNK_0202A1E0_H
+#define POKEDIAMOND_UNK_0202A1E0_H
+
+#include "mail_message.h"
+#include "save_block_2.h"
+
+typedef enum
+{
+ DATA_GET = 0,
+ DATA_SET,
+ DATA_RESET,
+ DATA_INCREMENT,
+ DATA_DECREMENT,
+ DATA_ADD,
+ DATA_SUBSTRACT
+}
+DataSetMode;
+
+typedef enum
+{
+ FIELD_0x0_2 = 0,
+ FIELD_0x2,
+ FIELD_0x3,
+ FIELD_0x4,
+ FIELD_0x6,
+ FIELD_0x8,
+ FIELD_0x2C,
+ FIELD_flag0,
+ FIELD_0xC,
+ FIELD_0x0_5,
+ FIELD_0x28,
+}
+SaveStruct23_Substruct1_Field;
+
+struct SaveStruct23_Substruct1
+{
+ /* 0x000 */ u8 flag0 : 1;
+ u8 flag1 : 1;
+ u8 u_0_2 : 3;
+ u8 u_0_5 : 3;
+ /* 0x001 */ u8 u_1;
+ /* 0x002 */ u8 u_2;
+ /* 0x003 */ u8 u_3;
+ /* 0x004 */ u16 u_4;
+ /* 0x006 */ u16 u_6;
+ /* 0x008 */ s32 u_8;
+ /* 0x00C */ s32 u_C[7];
+ /* 0x028 */ u32 u_28;
+ /* 0x02C */ s32 u_2C[4];
+}; // total size = 0x3C (60)
+
+struct SaveStruct23_Substruct2
+{
+ /* 0x000 */ u16 u_0;
+ /* 0x002 */ u8 u_2;
+ /* 0x003 */ u8 u_3;
+ /* 0x004 */ u32 u_4;
+
+ union
+ {
+ struct
+ {
+ /* 0x008 */ u16 flag0:1;
+ u16 flag1:1;
+ u16 flag2:1;
+ u16 flag3:1;
+ u16 flag4:1;
+ u16 filler_1:11;
+ };
+ /* 0x008 */ u16 flags;
+ };
+ /* 0x00A */ u8 filler_2[2];
+ /* 0x00C */ u16 u_C[5];
+ /* 0x016 */ u16 u_16;
+ /* 0x018 */ u8 u_18[168];
+ /* 0x0C0 */ u8 u_C0[168];
+}; // total size 0x168 (360)
+
+struct SaveStruct23_Messages
+{
+ /* 0x000 */ struct MailMessage messages[4];
+}; // total size 0x020 (32)
+
+struct SaveStruct23_Substruct4_Substruct1
+{
+ /* 0x000 */ u8 u_0[168];
+ /* 0x0A8 */ u8 u_A8[16];
+ /* 0x0B8 */ u8 filler_1[16];
+ /* 0x0C8 */ u8 u_C8_0:1;
+ u8 u_C8_1:1;
+ u8 filler_2:6;
+ /* 0x0C8 */ u8 u_C9;
+ /* 0x0CA */ u16 u_CA[4];
+ /* 0x0D2 */ u16 u_D2[4];
+ /* 0x0DA */ u16 u_DA[4];
+ /* 0x0E2 */ u8 filler_3[2];
+}; // total size 0xE4 (228)
+
+struct SaveStruct23_Substruct4_Substruct2
+{
+ /* 0x00 */ u8 u_0[1020];
+};
+
+struct SaveStruct23_Substruct4
+{
+ /* 0x000 */ u32 u_0;
+ /* 0x004 */ u8 flags[250];
+ /* 0x0FE */ u8 u_FE;
+ /* 0x0FF */ u8 u_FF;
+ /* 0x100 */ u8 u_100;
+ /* 0x101 */ u8 u_101;
+ /* 0x102 */ u8 u_102;
+ /* 0x103 */ u8 u_103;
+ /* 0x104 */ struct SaveStruct23_Substruct4_Substruct1 substruct1[7];
+ /* 0x740 */ struct SaveStruct23_Substruct4_Substruct2 substruct2;
+}; // total size 0xB3C (2876)
+
+struct SaveStruct23 // Struct fetched with SavArray_get(sav2, 23)
+{
+ /* 0x000 */ struct SaveStruct23_Substruct1 substruct1;
+ /* 0x03C */ struct SaveStruct23_Substruct2 substruct2;
+ /* 0x1A4 */ struct SaveStruct23_Messages messages;
+ /* 0x1C4 */ struct SaveStruct23_Substruct4 substruct4;
+}; // total size = 0xD00 (3328)
+
+struct Unk0202A4B8
+{
+ /* 0x000 */ u8 filler_1[2];
+ /* 0x002 */ u8 u_2;
+ /* 0x003 */ u8 u_3;
+ /* 0x004 */ u16 u_4;
+ /* 0x006 */ u16 u_6;
+};
+
+typedef struct Unk0202A68C
+{
+ /* 0x000 */ u32 u_0;
+ /* 0x004 */ u32 u_4;
+ /* 0x008 */ u32 u_8;
+ /* 0x00C */ u32 u_C;
+}
+Unk0202A68C; // total size 0x10 (16)
+
+struct Unk0202A784
+{
+ /* 0x000 */ u8 u_0;
+ /* 0x001 */ u8 u_1;
+};
+
+struct Unk0202A798_substruct
+{
+ /* 0x000 */ u32 u_0;
+ /* 0x004 */ u16 u_4;
+ /* 0x006 */ u8 filler_1[2];
+ /* 0x008 */ u16 u_8[8];
+ /* 0x018 */ u16 u_18[4];
+ /* 0x020 */ u16 u_20[4];
+ /* 0x028 */ u16 u_28[4];
+}; // total size 0x30 (48)
+
+struct Unk0202A798
+{
+ /* 0x000 */ struct Unk0202A798_substruct u_0;
+ /* 0x030 */ u8 u_30[168];
+};
+
+s32 SaveStruct23_Substruct4_Substruct1_sizeof();
+void SaveStruct23_Substruct1_Init(struct SaveStruct23_Substruct1 *substruct1);
+void SaveStruct23_Substruct2_Init(struct SaveStruct23_Substruct2 *substruct2);
+void SaveStruct23_Messages_Init(struct SaveStruct23_Messages *mailStruct);
+void SaveStruct23_Substruct4_Init(struct SaveStruct23_Substruct4 *substruct4);
+u32 SaveStruct23_Substruct1_GetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *dst);
+void SaveStruct23_Substruct1_SetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *value);
+void FUN_0202A36C(struct SaveStruct23_Substruct1 *substruct1, s32 arg1, s32 arg2, s32 arg3);
+BOOL SaveStruct23_Substruct1_GetFlag1(struct SaveStruct23_Substruct1 *substruct1);
+void SaveStruct23_Substruct1_SetFlag1(struct SaveStruct23_Substruct1 *substruct1, BOOL arg1);
+u16 SaveStruct23_Substruct2_SetField_0x0(struct SaveStruct23_Substruct2 *substruct2, u16 value, DataSetMode mode);
+u8 SaveStruct23_Substruct2_SetField_0x2(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode);
+u8 SaveStruct23_Substruct2_SetField_0x3(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode);
+void SaveStruct23_Substruct2_SetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *src);
+void SaveStruct23_Substruct2_GetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *dst);
+u16 SaveStruct23_Substruct2_SetField_0x16(struct SaveStruct23_Substruct2 *substruct2, struct Unk0202A4B8 *arg1);
+u16 SaveStruct23_Substruct2_GetField_0x16(struct SaveStruct23_Substruct2 *substruct2);
+u8 FUN_0202A524(struct SaveStruct23_Substruct2 *substruct2);
+u16 SaveStruct23_Substruct2_SetField_0xC(struct SaveStruct23_Substruct2 *substruct2, u16 arg1, DataSetMode mode);
+BOOL SaveStruct23_Substruct2_SetFlag(struct SaveStruct23_Substruct2 *substruct2, u16 flagNumber, DataSetMode mode);
+void SaveStruct23_Substruct2_SetField_0x4(struct SaveStruct23_Substruct2 *substruct2, u32 arg1);
+u32 SaveStruct23_Substruct2_GetField_0x4(struct SaveStruct23_Substruct2 *substruct2);
+void SaveStruct23_SetMessage(struct SaveBlock2 *sav2, u32 index, struct MailMessage *message);
+struct MailMessage *SaveStruct23_GetMessage(struct SaveBlock2 *sav2, u32 index);
+void SaveStruct23_Substruct4_SetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3);
+void SaveStruct23_Substruct4_ClearArrayFlags(struct SaveStruct23_Substruct4 *substruct4);
+BOOL StructUnk0202A68C_Compare(struct Unk0202A68C *struct1, struct Unk0202A68C *struct2);
+BOOL SaveStruct23_Substruct4_GetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3);
+u8 SaveStruct23_Substruct4_GetField_0xFE(struct SaveStruct23_Substruct4 *substruct4);
+u8 SaveStruct23_Substruct4_GetField_0xFF(struct SaveStruct23_Substruct4 *substruct4);
+void SaveStruct23_Substruct4_SetSubstruct1(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct1 *substruct4_substruct1, u8 arg2, u8 arg3);
+void FUN_0202A784(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dest);
+void FUN_0202A798(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A798 *arg1, u32 arg2);
+void FUN_0202A838(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct2 *substruct4_substruct2, u8 arg2, u8 arg3);
+void FUN_0202A864(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dest);
+struct SaveStruct23_Substruct4_Substruct2 *FUN_0202A878(struct SaveStruct23_Substruct4 *substruct4, u32 heap_id);
+s32 SaveStruct23_sizeof();
+void SaveStruct23_Init(struct SaveStruct23 *saveStruct23);
+struct SaveStruct23_Substruct1 *SaveStruct23_GetSubstruct1(struct SaveBlock2* sav2);
+struct SaveStruct23_Substruct2 *SaveStruct23_GetSubstruct2(struct SaveBlock2* sav2);
+struct SaveStruct23_Substruct4 *SaveStruct23_GetSubstruct4(struct SaveBlock2* sav2);
+
+#endif //POKEDIAMOND_UNK_0202A1E0_H \ No newline at end of file
diff --git a/include/unk_0204AF24.h b/include/unk_0204AF24.h
new file mode 100644
index 00000000..e77bcc35
--- /dev/null
+++ b/include/unk_0204AF24.h
@@ -0,0 +1,19 @@
+#ifndef POKEDIAMOND_UNK_0204AF24_H
+#define POKEDIAMOND_UNK_0204AF24_H
+
+#include "nitro/types.h"
+#include "unk_0204639C.h"
+
+BOOL FUN_0204AF24(struct UnkStruct_0204639C * arg0);
+void FUN_0204AF3C(struct UnkStruct_0204639C * r5);
+BOOL FUN_0204AF6C(struct UnkStruct_0204639C * arg0);
+void FUN_0204AF84(struct UnkStruct_0204639C * r5);
+BOOL FUN_0204AFB4(struct UnkStruct_0204639C * arg0);
+void FUN_0204AFC8(struct UnkStruct_0204639C * r4);
+void FUN_0204B00C(struct UnkStruct_0204639C * r4);
+BOOL FUN_0204B050(struct UnkStruct_0204639C * r5);
+void FUN_0204B090(struct UnkStruct_0204639C * r0);
+BOOL FUN_0204B0A0(struct UnkStruct_0204639C * r5);
+void FUN_0204B0E8(struct UnkStruct_0204639C * r0);
+
+#endif // POKEDIAMOND_UNK_0204AF24_H
diff --git a/include/unk_02064E20.h b/include/unk_02064E20.h
new file mode 100644
index 00000000..a9bcd0e0
--- /dev/null
+++ b/include/unk_02064E20.h
@@ -0,0 +1,8 @@
+#ifndef POKEDIAMOND_UNK_02064E20_H
+#define POKEDIAMOND_UNK_02064E20_H
+
+#include "script.h"
+
+void FUN_02064E20(struct UnkSavStruct80* unk0);
+
+#endif // POKEDIAMOND_UNK_02064E20_H
diff --git a/include/unk_02088DD8.h b/include/unk_02088DD8.h
index 318a98fb..7b023c56 100644
--- a/include/unk_02088DD8.h
+++ b/include/unk_02088DD8.h
@@ -1,6 +1,8 @@
#ifndef POKEDIAMOND_UNK_02088DD8_H
#define POKEDIAMOND_UNK_02088DD8_H
+#include "unk_020377F0.h"
+
struct Options;
struct PlayerData;
struct Pokemon;
@@ -16,4 +18,9 @@ struct UnkStruct_02088DD8
u8 padding2[0x2];
};
+struct UnkStruct_02088DD8* FUN_02088DD8(u32 heap_id);
+void FUN_02088DF0(struct UnkStruct_02037CF0 *r0);
+u16* GetEligibleLevelUpMoves(struct Pokemon* pokemon, u32 heap_id);
+BOOL FUN_02088EF8(u16 *r0);
+
#endif
diff --git a/include/wfc_user_info_warning.h b/include/wfc_user_info_warning.h
new file mode 100644
index 00000000..2ddb8890
--- /dev/null
+++ b/include/wfc_user_info_warning.h
@@ -0,0 +1,6 @@
+#ifndef POKEDIAMOND_WFC_USER_INFO_WARNING_H
+#define POKEDIAMOND_WFC_USER_INFO_WARNING_H
+
+void ShowWFCUserInfoWarning(u32 heap_id, u32 a1);
+
+#endif